diff --git a/.config/tsaoptions.json b/.config/tsaoptions.json new file mode 100644 index 0000000000..f4bedc3725 --- /dev/null +++ b/.config/tsaoptions.json @@ -0,0 +1,10 @@ +{ + "instanceUrl": "https://devdiv.visualstudio.com/", + "template": "TFSDEVDIV", + "projectName": "DEVDIV", + "areaPath": "DevDiv\\Testing Platforms\\VSTest", + "iterationPath": "DevDiv", + "notificationAliases": [ "dotnetdevexprague@microsoft.com" ], + "repositoryName":"vstest", + "codebaseName": "vstest" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..39f9dc14c9 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,597 @@ +# The default style generated by dotnet new editorconfig, with some minor changes. +# All changes are annotated with `# not default` + +root = true + +# All files +[*] +# indent_size intentionally not specified in this section. +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +# Shell scripts +[*.sh] +end_of_line = lf +[*.{cmd,bat}] +end_of_line = crlf + +# Xml files +[*.xml] +indent_size = 2 + +# Markdown files +[*.md] +indent_size = 2 +trim_trailing_whitespace = false + +# PowerShell scripts +[*.ps1] +indent_size = 4 + +# Visual Studio XML project files +[*.{csproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] +indent_size = 2 +charset = utf-8 + +# Visual Studio and .NET related XML config files +[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] +indent_size = 2 + +# YAML files +[*.{yml,yaml}] +indent_size = 2 + +# Translation files +[*.xlf] +indent_size = 2 + +# C# files +[*.cs] + +#### Core EditorConfig Options #### + +# Do not set 'end_of_line = crlf' otherwise the rule IDE0055: Fix formatting will trigger on Linux/MAC OS. + +# Indentation and spacing +indent_size = 4 +tab_width = 4 + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = true +dotnet_sort_system_directives_first = true + +# License header +file_header_template = Copyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the MIT license. See LICENSE file in the project root for full license information. + +# this. and Me. preferences +dotnet_style_qualification_for_event = false:warning # not default, default is false:silent, helped with removing this. prefixes +dotnet_style_qualification_for_field = false:warning # not default, same as above +dotnet_style_qualification_for_method = false:warning # not default, same as above +dotnet_style_qualification_for_property = false:warning # not default, same as above + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:silent +dotnet_style_predefined_type_for_member_access = true:silent + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent + +# Expression-level preferences +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = false:suggestion # not default, default is true, avoided because null references in object initializers are hard to diagnose from logs +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_return = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# IDE0074: Use compound assignment +dotnet_style_prefer_compound_assignment = true:warning # not default, default is true:suggestion, increased severity to ensure it is used +dotnet_diagnostic.IDE0074.severity = warning # not default, set in accordance to previous setting + +# IDE0032: Use auto property +dotnet_style_prefer_auto_properties = true:suggestion # not default, default is true:suggestion, increased severity to ensure it is used +dotnet_diagnostic.IDE0032.severity = suggestion # not default, set in accordance to previous setting + +# Field preferences +dotnet_style_readonly_field = true:warning + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:warning +# IDE0060: Remove unused parameter +dotnet_diagnostic.IDE0060.severity = warning + +# Suppression preferences +dotnet_remove_unnecessary_suppression_exclusions = none + +# IDE0090: Use 'new(...)' +dotnet_diagnostic.IDE0090.severity = warning # not default, increased severity to go with simpler declarations + +# IDE0005: Remove unnecessary import +dotnet_diagnostic.IDE0005.severity = warning # not default, increased severity to ensure it is used + +# 'using' directive preferences +# Keep this in sync with the related C# rule: csharp_using_directive_placement +dotnet_diagnostic.IDE0065.severity = warning + +# Use simple using statements +# Keep this in sync with th related C# rule: csharp_prefer_simple_using_statement +dotnet_diagnostic.IDE0063.severity = warning + +# CA2208: Instantiate argument exceptions correctly +dotnet_diagnostic.CA2208.severity = warning # not default, increased severity to ensure it is always applied + +# CA2241: Provide correct arguments to formatting methods +dotnet_diagnostic.CA2241.severity = warning # not default, increased severity to ensure it is always applied + +# IDE0053: Use expression body for lambda expressions +# Keep this in sync with csharp_style_expression_bodied_lambdas +dotnet_diagnostic.IDE0053.severity = warning # not default, increased severity to ensure it is applied + +# CA2016: Forward the 'CancellationToken' parameter to methods +dotnet_diagnostic.CA2016.severity = warning # not default, increased severity to ensure it is applied + +# IDE0059: Remove unnecessary value assignment +dotnet_diagnostic.IDE0059.severity=warning # not default, increased severity to ensure it is applied + +# CA2245: Do not assign a property to itself +dotnet_diagnostic.CA2245.severity=warning # not default, increased severity to ensure it is applied + +# IDE0077: Avoid legacy format target in global 'SuppressMessageAttribute' +dotnet_diagnostic.IDE0077.severity=warning # not default, increased severity to ensure it is applied + +# IDE0076: Remove invalid global 'SuppressMessageAttribute' +dotnet_diagnostic.IDE0076.severity=warning # not default, increased severity to ensure it is applied + +# IDE0043: Invalid string format +dotnet_diagnostic.IDE0043.severity=warning # not default, increased severity to ensure it is applied + +# CA1805: Do not initialize unnecessarily +dotnet_diagnostic.CA1805.severity=warning # not default, increased severity to ensure it is applied + +# CA1507: Use nameof in place of string +dotnet_diagnostic.CA1507.severity=warning # not default, increased severity to ensure it is applied + +# CA2215: Dispose methods should call base class dispose +dotnet_diagnostic.CA2215.severity=warning # not default, increased severity to ensure it is applied + +# IDE0019: Use pattern matching +# Keep this in sync with csharp_style_pattern_matching_over_as_with_null_check +dotnet_diagnostic.IDE0019.severity = warning # not default, increased severity to ensure it is applied + +# IDE0020: +# Keep this in sync with csharp_style_pattern_matching_over_is_with_cast_check +dotnet_diagnostic.IDE0020.severity = warning # not default, increased severity to ensure it is applied + +# IDE0078: Use pattern matching +# Keep this in sync with csharp_style_prefer_pattern_matching +dotnet_diagnostic.IDE0078.severity = warning # not default, increased severity to ensure it is applied + +# IDE0083: Use pattern matching (not operator) +# Keep this in sync with csharp_style_prefer_not_pattern +dotnet_diagnostic.IDE0083.severity = warning # not default, increased severity to ensure it is applied + +# CA1836: Prefer IsEmpty over Count +dotnet_diagnostic.CA1836.severity = warning # not default, increased severity to ensure it is applied + +# CA2211: Non-constant fields should not be visible +dotnet_diagnostic.CA2211.severity = warning # not default, increased severity to ensure it is applied + +# CA1806: Do not ignore method results +dotnet_diagnostic.CA1806.severity = warning # not default, increased severity to ensure it is applied + +# CA1834: Consider using 'StringBuilder.Append(char)' when applicable +dotnet_diagnostic.CA1834.severity = warning # not default, increased severity to ensure it is always applied + +# IDE0190: Null check can be simplified +# Keep this in sync with the related C# rule: csharp_style_prefer_parameter_null_checking +dotnet_diagnostic.IDE0190.severity = silent # not default, disabled as feature is no longer supported + +# CA1840: Use 'Environment.CurrentManagedThreadId' +dotnet_diagnostic.CA1840.severity = warning # not default, increased severity to ensure it is applied + +# CA1041: Provide ObsoleteAttribute message +dotnet_diagnostic.CA1041.severity = warning # not default, increased severity to ensure it is applied + +# CA1837: Use Environment.ProcessId instead of Process.GetCurrentProcess().Id +dotnet_diagnostic.CA1837.severity = warning # not default, increased severity to ensure it is applied + +# RS0041: Public members should not use oblivious types +# TODO: Move resx as internal OR use new resx generator (nullable aware) when available +dotnet_diagnostic.RS0041.severity = none # not default, decreased severity because of public resources (resx) not being nullable aware + +# CA1824: Mark assemblies with NeutralResourcesLanguageAttribute +dotnet_diagnostic.CA1824.severity = warning # not default, increased severity to ensure it is applied + +# CA1001: Types that own disposable fields should be disposable +dotnet_diagnostic.CA1001.severity = warning # not default, increased severity to ensure it is applied + +# CA1000: Do not declare static members on generic types +dotnet_diagnostic.CA1000.severity = warning # not default, increased severity to ensure it is applied + +# CA1051: Do not declare visible instance fields +dotnet_diagnostic.CA1051.severity = warning # not default, increased severity to ensure it is applied + +# CA1010: Collections should implement generic interface +dotnet_diagnostic.CA1010.severity = warning # not default, increased severity to ensure it is applied + +# CA1047: Do not declare protected members in sealed types +dotnet_diagnostic.CA1047.severity = warning # not default, increased severity to ensure it is applied + +# CA1050: Declare types in namespaces +dotnet_diagnostic.CA1050.severity = warning # not default, increased severity to ensure it is applied + +# CA1061: Do not hide base class methods +dotnet_diagnostic.CA1061.severity = warning # not default, increased severity to ensure it is applied + +# CA1069: Enums should not have duplicate values +dotnet_diagnostic.CA1069.severity = warning # not default, increased severity to ensure it is applied + +# CA1070: Do not declare event fields as virtual +dotnet_diagnostic.CA1070.severity = warning # not default, increased severity to ensure it is applied + +# IDE0064: Make struct fields writable +dotnet_diagnostic.IDE0064.severity = warning # not default, increased severity to ensure it is applied + +# CA1304: Specify CultureInfo +dotnet_diagnostic.CA1304.severity = warning # not default, increased severity to ensure it is applied + +# CA1305: Specify IFormatProvider +dotnet_diagnostic.CA1305.severity = warning # not default, increased severity to ensure it is applied + +# CA1822: Mark members as static +dotnet_diagnostic.CA1822.severity = warning # not default, increased severity to ensure it is applied + +# CA1816: Dispose methods should call SuppressFinalize +dotnet_diagnostic.CA1816.severity = warning # not default, increased severity to ensure it is applied + +# CA1018: Mark attributes with AttributeUsageAttribute +dotnet_diagnostic.CA1018.severity = warning # not default, increased severity to ensure it is applied + +# CA1051: Do not declare visible instance fields +dotnet_diagnostic.CA1051.severity = warning # not default, increased severity to ensure it is applied + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = false:silent # not default, turned off for now +csharp_style_var_for_built_in_types = false:silent # not default, turned off for now +csharp_style_var_when_type_is_apparent = false:silent # not default, turned off for now + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +# Keep this in sync with IDE0053 +csharp_style_expression_bodied_lambdas = true:warning # not default, increased severity to ensure it is applied +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# Pattern matching preferences +# Keep this in sync with IDE0019 +csharp_style_pattern_matching_over_as_with_null_check = true:warning +# Keep this in sync with IDE0020 and IDE0038 +csharp_style_pattern_matching_over_is_with_cast_check = true:warning +# Keep this in sync with IDE0083 +csharp_style_prefer_not_pattern = true:warning +# Keep this in sync with IDE0078 +csharp_style_prefer_pattern_matching = true:warning +csharp_style_prefer_switch_expression = true:warning + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Modifier preferences +csharp_prefer_static_local_function = true:warning +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# Code-block preferences +csharp_prefer_braces = true:silent +# Keep this in sync with the related .NET rule: IDE0063 +csharp_prefer_simple_using_statement = true:warning # not default, default is true:suggestion, increased severity to ensure it is used + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_prefer_local_over_anonymous_function = false:suggestion # not default, default is true, avoided because we use anonymous functions in multiple places and it does not make the code clearer +csharp_style_prefer_index_operator = false:warning # not default, default is true, disabled because Index operator is not supported in all the TFMs we support. (supported on .Net Core 3.0+) +csharp_style_prefer_range_operator = false:warning # not default, default is true, disabled because Range operator is not supported in all the TFMs we support. (supported on .Net Core 3.0+) +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# 'using' directive preferences +# Keep this in sync with the related .NET rule: IDE0065 +csharp_using_directive_placement = outside_namespace:warning + +# IDE0190: Null check can be simplified +# Keep this in sync with the related .NET rule: IDE0190 +csharp_style_prefer_parameter_null_checking = false # not default, disabled as no longer supported + +#### .NET Formatting Rules #### + +# IDE0055: Fix formatting - Set the severity of all .NET and C# formatting rules (https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules) +dotnet_diagnostic.IDE0055.severity = warning # ensure all formatting rules are enforced on build + +# IDE0057: Use range operator +dotnet_diagnostic.IDE0057.severity = none # Range operator is not supported in some TFMs. + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = true +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = true + +#### .NET Naming styles #### + +# not default, we have a lot of multiplatform code in compiler directives that defines methods, but keeps the bodies empty +# IDE0052: Remove unused private members +dotnet_diagnostic.IDE0051.severity = silent + +# not default, we have a lot of multiplatform code in compiler directives that defines methods, but keeps the bodies empty +# IDE0052: Remove unread private members +dotnet_diagnostic.IDE0052.severity = silent + +# IDE1006: Naming Styles +dotnet_diagnostic.IDE1006.severity = warning +dotnet_diagnostic.IDE0073.severity = warning + +# Naming rules + +dotnet_style_namespace_match_folder = true:suggestion + +dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.symbols = types_and_namespaces +dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.interfaces_should_be_ipascalcase.severity = suggestion +dotnet_naming_rule.interfaces_should_be_ipascalcase.symbols = interfaces +dotnet_naming_rule.interfaces_should_be_ipascalcase.style = ipascalcase + +dotnet_naming_rule.type_parameters_should_be_tpascalcase.severity = suggestion +dotnet_naming_rule.type_parameters_should_be_tpascalcase.symbols = type_parameters +dotnet_naming_rule.type_parameters_should_be_tpascalcase.style = tpascalcase + +dotnet_naming_rule.methods_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.methods_should_be_pascalcase.symbols = methods +dotnet_naming_rule.methods_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.properties_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.properties_should_be_pascalcase.symbols = properties +dotnet_naming_rule.properties_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.events_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.events_should_be_pascalcase.symbols = events +dotnet_naming_rule.events_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.local_variables_should_be_camelcase.severity = suggestion +dotnet_naming_rule.local_variables_should_be_camelcase.symbols = local_variables +dotnet_naming_rule.local_variables_should_be_camelcase.style = camelcase + +dotnet_naming_rule.local_constants_should_be_camelcase.severity = suggestion +dotnet_naming_rule.local_constants_should_be_camelcase.symbols = local_constants +dotnet_naming_rule.local_constants_should_be_camelcase.style = camelcase + +dotnet_naming_rule.parameters_should_be_camelcase.severity = suggestion +dotnet_naming_rule.parameters_should_be_camelcase.symbols = parameters +dotnet_naming_rule.parameters_should_be_camelcase.style = camelcase + +dotnet_naming_rule.public_fields_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.public_fields_should_be_pascalcase.symbols = public_fields +dotnet_naming_rule.public_fields_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.private_fields_should_be__camelcase.severity = suggestion +dotnet_naming_rule.private_fields_should_be__camelcase.symbols = private_fields +dotnet_naming_rule.private_fields_should_be__camelcase.style = _camelcase + +dotnet_naming_rule.private_static_fields_should_be_s_camelcase.severity = suggestion +dotnet_naming_rule.private_static_fields_should_be_s_camelcase.symbols = private_static_fields +dotnet_naming_rule.private_static_fields_should_be_s_camelcase.style = s_camelcase + +dotnet_naming_rule.public_constant_fields_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.public_constant_fields_should_be_pascalcase.symbols = public_constant_fields +dotnet_naming_rule.public_constant_fields_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.private_constant_fields_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.private_constant_fields_should_be_pascalcase.symbols = private_constant_fields +dotnet_naming_rule.private_constant_fields_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.symbols = public_static_readonly_fields +dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.symbols = private_static_readonly_fields +dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.enums_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.enums_should_be_pascalcase.symbols = enums +dotnet_naming_rule.enums_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.local_functions_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.local_functions_should_be_pascalcase.symbols = local_functions +dotnet_naming_rule.local_functions_should_be_pascalcase.style = pascalcase + +dotnet_naming_rule.non_field_members_should_be_pascalcase.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascalcase.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascalcase.style = pascalcase + +# Symbol specifications + +dotnet_naming_symbols.interfaces.applicable_kinds = interface +dotnet_naming_symbols.interfaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interfaces.required_modifiers = + +dotnet_naming_symbols.enums.applicable_kinds = enum +dotnet_naming_symbols.enums.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.enums.required_modifiers = + +dotnet_naming_symbols.events.applicable_kinds = event +dotnet_naming_symbols.events.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.events.required_modifiers = + +dotnet_naming_symbols.methods.applicable_kinds = method +dotnet_naming_symbols.methods.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.methods.required_modifiers = + +dotnet_naming_symbols.properties.applicable_kinds = property +dotnet_naming_symbols.properties.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.properties.required_modifiers = + +dotnet_naming_symbols.public_fields.applicable_kinds = field +dotnet_naming_symbols.public_fields.applicable_accessibilities = public, internal +dotnet_naming_symbols.public_fields.required_modifiers = + +dotnet_naming_symbols.private_fields.applicable_kinds = field +dotnet_naming_symbols.private_fields.applicable_accessibilities = private, protected, protected_internal, private_protected +dotnet_naming_symbols.private_fields.required_modifiers = + +dotnet_naming_symbols.private_static_fields.applicable_kinds = field +dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private, protected, protected_internal, private_protected +dotnet_naming_symbols.private_static_fields.required_modifiers = static + +dotnet_naming_symbols.types_and_namespaces.applicable_kinds = namespace, class, struct, interface, enum +dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types_and_namespaces.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +dotnet_naming_symbols.type_parameters.applicable_kinds = namespace +dotnet_naming_symbols.type_parameters.applicable_accessibilities = * +dotnet_naming_symbols.type_parameters.required_modifiers = + +dotnet_naming_symbols.private_constant_fields.applicable_kinds = field +dotnet_naming_symbols.private_constant_fields.applicable_accessibilities = private, protected, protected_internal, private_protected +dotnet_naming_symbols.private_constant_fields.required_modifiers = const + +dotnet_naming_symbols.local_variables.applicable_kinds = local +dotnet_naming_symbols.local_variables.applicable_accessibilities = local +dotnet_naming_symbols.local_variables.required_modifiers = + +dotnet_naming_symbols.local_constants.applicable_kinds = local +dotnet_naming_symbols.local_constants.applicable_accessibilities = local +dotnet_naming_symbols.local_constants.required_modifiers = const + +dotnet_naming_symbols.parameters.applicable_kinds = parameter +dotnet_naming_symbols.parameters.applicable_accessibilities = * +dotnet_naming_symbols.parameters.required_modifiers = + +dotnet_naming_symbols.public_constant_fields.applicable_kinds = field +dotnet_naming_symbols.public_constant_fields.applicable_accessibilities = public, internal +dotnet_naming_symbols.public_constant_fields.required_modifiers = const + +dotnet_naming_symbols.public_static_readonly_fields.applicable_kinds = field +dotnet_naming_symbols.public_static_readonly_fields.applicable_accessibilities = public, internal +dotnet_naming_symbols.public_static_readonly_fields.required_modifiers = readonly, static + +dotnet_naming_symbols.private_static_readonly_fields.applicable_kinds = field +dotnet_naming_symbols.private_static_readonly_fields.applicable_accessibilities = private, protected, protected_internal, private_protected +dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = readonly, static + +dotnet_naming_symbols.local_functions.applicable_kinds = local_function +dotnet_naming_symbols.local_functions.applicable_accessibilities = * +dotnet_naming_symbols.local_functions.required_modifiers = + +# Naming styles + +dotnet_naming_style.pascalcase.required_prefix = +dotnet_naming_style.pascalcase.required_suffix = +dotnet_naming_style.pascalcase.word_separator = +dotnet_naming_style.pascalcase.capitalization = pascal_case + +dotnet_naming_style.ipascalcase.required_prefix = I +dotnet_naming_style.ipascalcase.required_suffix = +dotnet_naming_style.ipascalcase.word_separator = +dotnet_naming_style.ipascalcase.capitalization = pascal_case + +dotnet_naming_style.tpascalcase.required_prefix = T +dotnet_naming_style.tpascalcase.required_suffix = +dotnet_naming_style.tpascalcase.word_separator = +dotnet_naming_style.tpascalcase.capitalization = pascal_case + +dotnet_naming_style._camelcase.required_prefix = _ +dotnet_naming_style._camelcase.required_suffix = +dotnet_naming_style._camelcase.word_separator = +dotnet_naming_style._camelcase.capitalization = camel_case + +dotnet_naming_style.camelcase.required_prefix = +dotnet_naming_style.camelcase.required_suffix = +dotnet_naming_style.camelcase.word_separator = +dotnet_naming_style.camelcase.capitalization = camel_case + +dotnet_naming_style.s_camelcase.required_prefix = s_ +dotnet_naming_style.s_camelcase.required_suffix = +dotnet_naming_style.s_camelcase.word_separator = +dotnet_naming_style.s_camelcase.capitalization = camel_case + +#### C# Naming styles #### + +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_null_check_over_type_check = true:suggestion +csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion +csharp_style_prefer_tuple_swap = true:suggestion + +# Naming rules + +csharp_style_namespace_declarations = file_scoped:warning # not default, default is block_scoped:silent, changed to follow modern preferences diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000000..3fc0cc7ab5 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,8 @@ +# Apply modern code styles (#3264) +065f4d042e2ac8f1bd28deeabca38adf2c14b52a + +# Reformat projects and script files (#3290) +5e425f80cb9b1de3be823b83c718c9a057df857a + +# Run dotnet format whitespace (#3307) +cf2bd925e3e11a76bcbd965f5d337b2c8f4dbab1 diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 219bd3bdee..7b7128ba70 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,23 +1,45 @@ +--- +name: Issue +about: Open a generic issue +labels: [need-triage] +--- + ## Description -> **IMPORTANT**: if the defect is reproduced only in a workflow from within the Visual Studio IDE then do not report the issue here - instead, please report it using Visual Studio's "Send Feedback" option that can be accessed from the Help menu OR using this link https://developercommunity.visualstudio.com. -> -> For a defect reproducable from the vstest command line, describe the issue you've observed. + + ## Steps to reproduce -> What steps can reproduce the defect? -> Please share the setup, commandline for vstest.console, sample project, target -> framework etc. + + ## Expected behavior -> Share the expected output + + ## Actual behavior -> What is the behavior observed? + + ## Diagnostic logs -> Please share test platform diagnostics logs. Instructions to collect logs are [here](https://github.com/Microsoft/vstest-docs/blob/main/docs/diagnose.md#test-platform-diagnostics). -> The logs may contain test assembly paths, kindly review and mask those before sharing. + + ## Environment -> Please share additional details about the test environment. -> Operating system, Build version of vstest.console + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 23ffcf0e67..79669f9c98 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,10 @@ ## Description + Please add a meaningful description for this change. Ensure the PR has required unit tests. ## Related issue + Kindly link any related issues. E.g. Fixes #xyz. + +- [ ] I have ensured that there is a previously discussed and approved issue. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000000..19be10e2fa --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,30 @@ +This is a .NET based repository that contains the VSTest test platform. Please follow these guidelines when contributing: + +## Code Standards + +You MUST follow all code-formatting and naming conventions defined in [`.editorconfig`](../.editorconfig). + +In addition to the rules enforced by `.editorconfig`, you SHOULD: + +- Favor style and conventions that are consistent with the existing codebase. +- Prefer file-scoped namespace declarations and single-line using directives. +- Ensure that the final return statement of a method is on its own line. +- Use pattern matching and switch expressions wherever possible. +- Use `nameof` instead of string literals when referring to member names. +- Always use `is null` or `is not null` instead of `== null` or `!= null`. +- Trust the C# null annotations and don't add null checks when the type system says a value cannot be null. +- Prefer `?.` if applicable (e.g. `scope?.Dispose()`). +- Use `ObjectDisposedException.ThrowIf` where applicable. +- Respect StyleCop.Analyzers rules, in particular: + - SA1028: Code must not contain trailing whitespace + - SA1316: Tuple element names should use correct casing + - SA1518: File is required to end with a single newline character + +You MUST minimize adding public API surface area but any newly added public API MUST be declared in the related `PublicAPI.Unshipped.txt` file. + +## Localization Guidelines + +Anytime you add a new localization resource, you MUST: +- Add a corresponding entry in the localization resource file. +- Add an entry in all `*.xlf` files related to the modified `.resx` file. +- Do not modify existing entries in '*.xlf' files unless you are also modifying the corresponding `.resx` file. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..a1ef8b6a84 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: "dotnet-sdk" + directory: "/" + schedule: + interval: "weekly" + day: "wednesday" + ignore: + - dependency-name: "*" + update-types: + - "version-update:semver-major" + - "version-update:semver-minor" diff --git a/.github/policies/BreakingChangeManagement.yml b/.github/policies/BreakingChangeManagement.yml new file mode 100644 index 0000000000..1b32be5c25 --- /dev/null +++ b/.github/policies/BreakingChangeManagement.yml @@ -0,0 +1,43 @@ +id: +name: GitOps.BreakingChangeManagement +description: GitOps.BreakingChangeManagement primitive +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - if: + - payloadType: Issues + - labelAdded: + label: breaking-change + then: + - addReply: + reply: >- + Refer to the [.NET SDK breaking change guidelines](https://github.com/dotnet/sdk/blob/main/documentation/project-docs/breaking-change-guidelines.md#required-process-for-all-net-sdk-breaking-changes) + description: Add breaking change doc instructions to issue + - if: + - payloadType: Pull_Request + - labelAdded: + label: breaking-change + then: + - addLabel: + label: needs-breaking-change-doc-created + - addReply: + reply: >- + Added `needs-breaking-change-doc-created` label because this PR has the `breaking-change` label. + + + When you commit this breaking change: + + + 1. [ ] Create and link to this PR and the issue a matching issue in the dotnet/docs repo using the [breaking change documentation template](https://aka.ms/dotnet/docs/new-breaking-change-issue), then remove this `needs-breaking-change-doc-created` label. + + 2. [ ] Ask a committer to mail the `.NET SDK Breaking Change Notification` email list. + + + You can refer to the [.NET SDK breaking change guidelines](https://github.com/dotnet/sdk/blob/main/documentation/project-docs/breaking-change-guidelines.md) + description: Add breaking change instructions to PR. +onFailure: +onSuccess: diff --git a/.github/policies/LabelManagement.IssueClosed.yml b/.github/policies/LabelManagement.IssueClosed.yml new file mode 100644 index 0000000000..e4865dc4f3 --- /dev/null +++ b/.github/policies/LabelManagement.IssueClosed.yml @@ -0,0 +1,36 @@ +id: +name: LabelManagement.IssueClosed +description: Handlers when an issue gets closed +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: Remove labels when an issue is closed + if: + - payloadType: Issues + - isAction: + action: Closed + then: + - removeLabel: + label: 'Needs: Triage :mag:' + - removeLabel: + label: 'Needs: Attention :wave:' + - removeLabel: + label: 'Needs: Author Feedback' + - removeLabel: + label: Help-Wanted + - description: Remove labels when a pull request is closed + if: + - payloadType: Pull_Request + - isAction: + action: Closed + then: + - removeLabel: + label: 'Needs: Attention :wave:' + - removeLabel: + label: 'Needs: Author Feedback' +onFailure: +onSuccess: diff --git a/.github/policies/LabelManagement.IssueOpened.yml b/.github/policies/LabelManagement.IssueOpened.yml new file mode 100644 index 0000000000..02b4d0bf22 --- /dev/null +++ b/.github/policies/LabelManagement.IssueOpened.yml @@ -0,0 +1,27 @@ +id: +name: LabelManagement.IssueOpened +description: Handlers when an issue is first opened +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: Add needs triage to new issues + if: + - payloadType: Issues + - isAction: + action: Opened + - and: + - not: + activitySenderHasPermission: + permission: Admin + - not: + activitySenderHasPermission: + permission: Write + then: + - addLabel: + label: 'Needs: Triage :mag:' +onFailure: +onSuccess: diff --git a/.github/policies/LabelManagement.IssueUpdated.yml b/.github/policies/LabelManagement.IssueUpdated.yml new file mode 100644 index 0000000000..fee7f3e06e --- /dev/null +++ b/.github/policies/LabelManagement.IssueUpdated.yml @@ -0,0 +1,144 @@ +id: +name: LabelManagement.IssueUpdated +description: Handlers when an issue is updated but not closed +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: >- + Remove "State: No Recent Activity" when a pull request or issue is updated + if: + - or: + - payloadType: Pull_Request + - payloadType: Pull_Request_Review + - payloadType: Pull_Request_Review_Comment + - payloadType: Issue_Comment + - payloadType: Issues + - not: + isAction: + action: Closed + - hasLabel: + label: "State: No Recent Activity" + then: + - removeLabel: + label: "State: No Recent Activity" + # The policy service should not trigger itself here, or else the label would be removed immediately after being added + triggerOnOwnActions: False + - description: Clean email replies on every comment + if: + - payloadType: Issue_Comment + then: + - cleanEmailReply + - description: Remove "Help-Wanted" label when an issue goes into PR + if: + - payloadType: Issues + - labelAdded: + label: In-PR + - hasLabel: + label: Help-Wanted + then: + - removeLabel: + label: Help-Wanted + - description: >- + If an author responds to an issue which needs author feedback + * Remove the "Needs: Author Feedback" Label + * Add the "Needs: Attention :wave:" Label + if: + - or: + - payloadType: Pull_Request_Review + - payloadType: Pull_Request_Review_Comment + - payloadType: Issue_Comment + - isActivitySender: + issueAuthor: True + - hasLabel: + label: "Needs: Author Feedback" + - not: + isAction: + action: Synchronize + then: + - removeLabel: + label: "Needs: Author Feedback" + - addLabel: + label: "Needs: Attention :wave:" + - description: >- + If team members respond to an issue which needs attention + * Remove the "Needs: Attention :wave:" Label + if: + - or: + - payloadType: Pull_Request_Review + - payloadType: Pull_Request_Review_Comment + - payloadType: Issue_Comment + - isActivitySender: + issueAuthor: True + - hasLabel: + label: "Needs: Attention :wave:" + - not: + isAction: + action: Synchronize + - or: + - activitySenderHasAssociation: + association: Member + - activitySenderHasAssociation: + association: Owner + - activitySenderHasAssociation: + association: Collaborator + then: + - removeLabel: + label: "Needs: Attention :wave:" + - description: >- + If team members respond to an issue which needs triage + * Remove the "Needs: Triage :mag:" Label + if: + - or: + - payloadType: Pull_Request_Review + - payloadType: Pull_Request_Review_Comment + - payloadType: Issue_Comment + - isActivitySender: + issueAuthor: True + - hasLabel: + label: "Needs: Triage :mag:" + - not: + isAction: + action: Synchronize + - or: + - activitySenderHasAssociation: + association: Member + - activitySenderHasAssociation: + association: Owner + - activitySenderHasAssociation: + association: Collaborator + then: + - removeLabel: + label: "Needs: Triage :mag:" + - description: >- + When changes are requested on a pull request + * Disable automerge + * Assign to the author + * Label with "Needs: Author Feedback" + if: + - payloadType: Pull_Request_Review + - isAction: + action: Submitted + - isReviewState: + reviewState: Changes_requested + then: + - disableAutoMerge + - assignTo: + author: True + - addLabel: + label: "Needs: Author Feedback" + - description: Sync labels from issues on all pull request events + if: + - payloadType: Pull_Request + then: + - labelSync: + pattern: "Area:" + - labelSync: + pattern: "Type:" + - inPrLabel: + label: In-PR +onFailure: +onSuccess: diff --git a/.github/policies/ScheduledSearch.AutoClose.yml b/.github/policies/ScheduledSearch.AutoClose.yml new file mode 100644 index 0000000000..df645b7c6e --- /dev/null +++ b/.github/policies/ScheduledSearch.AutoClose.yml @@ -0,0 +1,102 @@ +id: ScheduledSearch.AutoClose +name: GitOps.PullRequestIssueManagement +description: Housekeeping of issues that should be closed +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + scheduledSearches: + - description: >- + Search for PR where - + * Pull Request is Open + * Pull request has the label "State: No Recent Activity" + * Pull request has the label "Needs: Author Feedback" + * Has not had activity in the last 7 days + + Then - + * Close the PR + frequencies: + - hourly: + hour: 6 + filters: + - isPullRequest + - isOpen + - hasLabel: + label: "State: No Recent Activity" + - hasLabel: + label: "Needs: Author Feedback" + - noActivitySince: + days: 7 + actions: + - closeIssue + - description: >- + Search for Issues where - + * Issue is Open + * Issue has the label "State: No Recent Activity" + * Issue has the label "Needs: Author Feedback" + * Has not had activity in the last 7 days + + Then - + * Close the Issue + frequencies: + - hourly: + hour: 6 + filters: + - isIssue + - isOpen + - hasLabel: + label: "State: No Recent Activity" + - hasLabel: + label: "Needs: Author Feedback" + - noActivitySince: + days: 7 + actions: + - closeIssue + - description: >- + Search for Issues where - + * Issue is Open + * Issue has the label "State: Won't Fix" + * Has not had activity in the last 1 day + + Then - + * Close the Issue + frequencies: + - hourly: + hour: 6 + filters: + - isIssue + - isOpen + - hasLabel: + label: "State: Won't Fix" + - noActivitySince: + days: 1 + actions: + - addReply: + reply: This issue has been marked as won't fix and has not had any activity for **1 day**. It will be closed for housekeeping purposes. + - closeIssue + - description: >- + Search for Issues where - + * Issue is Open + * Issue has the label "Resolution: Duplicate" + * Has not had activity in the last 1 day + + Then - + * Close the Issue + frequencies: + - hourly: + hour: 6 + filters: + - isIssue + - isOpen + - hasLabel: + label: "Resolution: Duplicate" + - noActivitySince: + days: 1 + actions: + - addReply: + reply: This issue has been marked as duplicate and has not had any activity for **1 day**. It will be closed for housekeeping purposes. + - closeIssue +onFailure: +onSuccess: \ No newline at end of file diff --git a/.github/policies/ScheduledSearch.MarkNoRecentActivity.yml b/.github/policies/ScheduledSearch.MarkNoRecentActivity.yml new file mode 100644 index 0000000000..f4fd2da1a8 --- /dev/null +++ b/.github/policies/ScheduledSearch.MarkNoRecentActivity.yml @@ -0,0 +1,72 @@ +id: ScheduledSearch.MarkNoRecentActivity +name: GitOps.PullRequestIssueManagement +description: Mark issues and pull requests with no recent activity +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + scheduledSearches: + - description: >- + Search for PR where - + * Pull Request is Open + * Pull request does not have the label "State: No Recent Activity" + * Pull request has the label "Needs: Author Feedback" + * Has not had activity in the last 7 days + + Then - + * Add "State: No Recent Activity" label + * Warn user about pending closure + frequencies: + - hourly: + hour: 6 + filters: + - isPullRequest + - isOpen + - isNotLabeledWith: + label: "State: No Recent Activity" + - hasLabel: + label: "Needs: Author Feedback" + - noActivitySince: + days: 7 + actions: + - addLabel: + label: "State: No Recent Activity" + - addReply: + reply: >- + Hello @${issueAuthor}, + + This pull request has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **7 days**. It will be closed if no further activity occurs **within 7 days of this comment**. + - description: >- + Search for Issues where - + * Issue is Open + * Issue has the label "Needs: Author Feedback" + * Issue does not have the label "State: No Recent Activity" + * Has not had activity in the last 7 days + + Then - + * Add "State: No Recent Activity" label + * Warn user about pending closure + frequencies: + - hourly: + hour: 6 + filters: + - isIssue + - isOpen + - hasLabel: + label: "Needs: Author Feedback" + - isNotLabeledWith: + label: "State: No Recent Activity" + - noActivitySince: + days: 7 + actions: + - addLabel: + label: "State: No Recent Activity" + - addReply: + reply: >- + Hello @${issueAuthor}, + + This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **7 days**. It will be closed if no further activity occurs **within 7 days of this comment**. +onFailure: +onSuccess: \ No newline at end of file diff --git a/.github/workflows/AzureDevOps.yml b/.github/workflows/AzureDevOps.yml index 1cad1d4c1a..e89a936ff5 100644 --- a/.github/workflows/AzureDevOps.yml +++ b/.github/workflows/AzureDevOps.yml @@ -1,24 +1,61 @@ -name: Sync issue to Azure DevOps work item +name: Sync GitHub Issues to Azure DevOps Work Items on: issues: types: - [labeled] #, opened, edited, deleted, closed, reopened, labeled, unlabeled, assigned + - labeled + issue_comment: + types: + - created + - edited + +#concurrency: +# group: issue-${{ github.event.issue.number }} +# cancel-in-progress: false + +#permissions: +# id-token: write +# issues: write +# contents: read jobs: updateAzDO: if: github.event.label.name == 'sprint' runs-on: ubuntu-latest + environment: ado + steps: - - uses: pavelhorak/github-actions-issue-to-work-item@master + # Step 1: Login to Azure using federated identity + # - name: Login to Azure + # uses: azure/login@v2 + # with: + # client-id: ${{ secrets.ENTRA_APP_CLIENT_ID }} + # tenant-id: ${{ secrets.ENTRA_APP_TENANT_ID }} + # subscription-id: ${{ secrets.ADO_SUBSCRIPTION_ID }} + # environment: azurecloud + # allow-no-subscriptions: true + # enable-debug-logs: true + + # Step 2: Obtain Azure DevOps token + # - name: Get Azure DevOps token + # id: get_ado_token + # run: | + # Fetch Azure DevOps token using resource ID 499b84ac-1321-427f-aa17-267ca6975798 + # ado_token=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv) + # echo "ado_token=${ado_token}" >> $GITHUB_ENV + + # Step 3: Sync GitHub issue to Azure DevOps work item + - name: Sync issue to Azure DevOps + uses: pavelhorak/github-actions-issue-to-work-item@main env: + # ado_token: "${{ env.ado_token }}" ado_token: "${{ secrets.ADO_PERSONAL_ACCESS_TOKEN }}" github_token: "${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}" ado_organization: "${{ secrets.ADO_ORGANIZATION }}" ado_project: "${{ secrets.ADO_PROJECT }}" ado_area_path: "${{ secrets.ADO_AREA_PATH }}" - ado_iteration_path: "${{ secrets.ADO_ITERATION_PATH }}" # this doesn't work: "@CurrentIteration('[DevDiv]\\.NET DevExp Prague')" - ado_wit: "User Story" + ado_iteration_path: "${{ secrets.ADO_ITERATION_PATH }}" + ado_wit: "User Story" # Work Item Type ado_new_state: "Committed" ado_active_state: "In Progress" ado_close_state: "Completed" diff --git a/.github/workflows/enable-auto-merge.yml b/.github/workflows/enable-auto-merge.yml new file mode 100644 index 0000000000..37cdec677f --- /dev/null +++ b/.github/workflows/enable-auto-merge.yml @@ -0,0 +1,28 @@ +name: Enable auto merge +on: + pull_request_target: + types: [opened, ready_for_review] +permissions: + contents: write +jobs: + add_milestone: + runs-on: ubuntu-latest + if: ${{ github.repository == 'microsoft/vstest' && github.event.pull_request.user.login == 'dotnet-maestro' && (startsWith(github.event.pull_request.title, '[main] Source code updates from dotnet/') || startsWith(github.event.pull_request.title, '[main] Update dependencies from dotnet/') || startsWith(github.event.pull_request.title, '[main] Update dependencies from devdiv/')) }} + steps: + - name: Enable pull request auto-merge + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PULL_REQUEST_ID: ${{ github.event.pull_request.node_id }} + run: | + gh api graphql -f query=' + mutation($pull: ID!) { + enablePullRequestAutoMerge(input: {pullRequestId: $pull}) { + pullRequest { + id + number + autoMergeRequest { + mergeMethod + } + } + } + }' -f pull=$PULL_REQUEST_ID diff --git a/.gitignore b/.gitignore index c8318272fa..9be479bc6f 100644 --- a/.gitignore +++ b/.gitignore @@ -104,14 +104,16 @@ ehthumbs.db # =========================== # Custom ignores # =========================== -packages -artifacts -[tT]ools +/packages/ +/artifacts/ +/[tT]ools/ *.dmp *.nupkg *.zip -src/package/sign/sign.nuget.targets +/src/package/sign/sign.nuget.targets + +test/GeneratedTestAssets/ # =========================== # Localized resx files @@ -139,3 +141,9 @@ src/package/sign/sign.nuget.targets # diag log files # =========================== logs/ + +.fake/ +.ionide/ + +.idea/ +.tools/ diff --git a/CODEOWNERS b/CODEOWNERS index a8721a9027..bf0b2d225a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,14 @@ # https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-code-owners -PublicAPI.Shipped.txt @nohwnd -PublicAPI.Unshipped.txt @nohwnd \ No newline at end of file +PublicAPI.Shipped.txt @nohwnd @MarcoRossignoli +PublicAPI.Unshipped.txt @nohwnd @MarcoRossignoli + +# Adding/removing telemetry or doing any kind of changes to the telemetry data constants is +# something that should be treated with care and we should be transparent about it. It also +# requires making sure all telemetry collection systems in place will continue to function well. +TelemetryDataConstants.cs @cvpoienaru @nohwnd + +# Changes here might break our contracts with other adapters, and possibly +# Visual Studio. +/src/Microsoft.TestPlatform.AdapterUtilities/ @nohwnd @Evangelink +/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ @nohwnd @Evangelink diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 076378c7f4..0000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,14 +0,0 @@ -### Contributing -Welcome, and thank you for your interest in contributing. There are many ways to contribute: -- [Submit issues](https://github.com/Microsoft/vstest/issues) and help verify fixes as they are checked in. -- Review the [source code changes](https://github.com/Microsoft/vstest/pulls). -- [Contribute features and fixes](https://github.com/Microsoft/vstest-docs/blob/main/docs/contribute.md). -- Contribute to the [documentation](https://github.com/Microsoft/vstest-docs). - -### Building -If you want to understand how **vstest** works or want to debug an issue, you'll want to get the source, build it, and run the tool locally. **vstest** can be built from within Visual Studio or from the CLI. -- [Building with Visual Studio](https://github.com/Microsoft/vstest-docs/blob/main/docs/contribute.md#building-with-visual-studio) -- [Building with CLI, CI, Editors](https://github.com/Microsoft/vstest-docs/blob/main/docs/contribute.md#building-with-cli-ci-editors) - -### Thank You! -Your contributions to open source, large or small, make projects like this possible. Thank you for taking the time to contribute. diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000000..f8aef03798 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,143 @@ + + + + + + + + $([MSBuild]::NormalizeDirectory('$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'LICENSE'))')) + false + true + $(RepoRoot)src\package\ + enable + + false + + + + + 15.0.0 + + false + + true + + + + + + preview + + True + true + true + true + + preview + true + $(NoWarn);CA1416;RS0037 + + + + + + net462 + net8.0 + net9.0 + + $(NetMinimum) + + + net48 + + $(NetCoreAppStable) + + $(NetCoreAppMinimum) + $(NetSDKTargetFramework);$(NetPortableTargetFrameworks) + $(NetFrameworkRunnerTargetFramework);$(NetRunnerTargetFrameworks) + + + $(RunnerTargetFrameworks) + + netstandard2.0 + + + $(NetCoreAppMinimum);$(NetFrameworkMinimum) + + $(TestHostMinimumTargetFrameworks);net47;net471;net472;net48;net481 + + + $(NetFrameworkMinimum);netstandard2.0 + + + + + $(CopyrightMicrosoft) + MIT + https://github.com/microsoft/vstest + + false + $(DefineConstants);DOTNET_BUILD_FROM_SOURCE + + true + embedded + + true + + + + + Microsoft + + + + + MSTest + + $(TestRunnerAdditionalArguments) --filter "TestCategory!=Windows&TestCategory!=Windows-Review" + + false + + + diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000000..40981720ca --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,76 @@ + + + + + <_NetFrameworkHostedCompilersVersion Condition="'$(_NetFrameworkHostedCompilersVersion)' == ''">4.11.0-3.24280.3 + + + + + + + $(NetPrevious);$(NetCurrent) + + + + + $(NetCurrent) + + + + + + + + None + + + + + + + + + + + + true + + + true + + + true + + + true + + + true + + + + + + + + + + + + diff --git a/LICENSE b/LICENSE index a31c555819..d859446c69 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,8 @@ -Copyright (c) 2020 Microsoft Corporation +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Localize/LocProject.json b/Localize/LocProject.json deleted file mode 100644 index 4dfd1f87b0..0000000000 --- a/Localize/LocProject.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "Projects": [ - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\DataCollectors\\Microsoft.TestPlatform.Extensions.EventLogCollector\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\DataCollectors\\Microsoft.TestPlatform.Extensions.EventLogCollector\\Resources\\xlf", - "SourceFile": "src\\DataCollectors\\Microsoft.TestPlatform.Extensions.EventLogCollector\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.AdapterUtilities\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.AdapterUtilities\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.AdapterUtilities\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.Build\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.Build\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.Build\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.Client\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.Client\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.Client\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.Common\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.Common\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.Common\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.CommunicationUtilities\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.CommunicationUtilities\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.CommunicationUtilities\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.CoreUtilities\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.CoreUtilities\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.CoreUtilities\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.CrossPlatEngine\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.CrossPlatEngine\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.CrossPlatEngine\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.Extensions.BlameDataCollector\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.Extensions.BlameDataCollector\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.Extensions.BlameDataCollector\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.Extensions.HtmlLogger\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.Extensions.HtmlLogger\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.Extensions.HtmlLogger\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.ObjectModel\\Resources\\xlf\\CommonResources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.ObjectModel\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.ObjectModel\\Resources\\xlf\\CommonResources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.ObjectModel\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.ObjectModel\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.ObjectModel\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.TestHostProvider\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.TestHostProvider\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.TestHostProvider\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.Utilities\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.Utilities\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.Utilities\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\Microsoft.TestPlatform.VsTestConsole.TranslationLayer\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\Microsoft.TestPlatform.VsTestConsole.TranslationLayer\\Resources\\xlf", - "SourceFile": "src\\Microsoft.TestPlatform.VsTestConsole.TranslationLayer\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\SettingsMigrator\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\SettingsMigrator\\Resources\\xlf", - "SourceFile": "src\\SettingsMigrator\\Resources\\xlf\\Resources.xlf" - } - ] - }, - { - "LanguageSet": "VS_Main_Languages", - "LocItems": [ - { - "LclFile": "Localize\\lcl\\{Lang}\\src\\vstest.console\\Resources\\xlf\\Resources.xlf.lcl", - "CopyOption": "LangIDOnName", - "Languages": "", - "OutputPath": "src\\vstest.console\\Resources\\xlf", - "SourceFile": "src\\vstest.console\\Resources\\xlf\\Resources.xlf" - } - ] - } - ] -} \ No newline at end of file diff --git a/Localize/lcl/cs/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 7b56b47a55..0000000000 --- a/Localize/lcl/cs/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 8107d7ac88..0000000000 --- a/Localize/lcl/cs/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0c9fa61109..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b89490f2eb..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 8956e310d5..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3e59127c3c..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3ef3efbd4f..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 03f3f7dfd1..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c90b99780e..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f829f644c5..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f9ba2b070b..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 7669434f4c..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 89dba67fc2..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index d0529e7522..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 1e6ab2d326..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 7cd9936503..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3d3919c0ef..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d14ed323a1..0000000000 --- a/Localize/lcl/cs/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 509b39c830..0000000000 --- a/Localize/lcl/cs/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe <Úplná cesta k souboru testsettings nebo runsettings, který se má migrovat> <Úplná cesta k souboru runsettings, který se má vytvořit>]D;]A;Příklady:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/cs/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/cs/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f1ecb41ae2..0000000000 --- a/Localize/lcl/cs/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Adresář, který obsahuje dočasné výstupy]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Povolit kolekci dat pro testovací běh. Další informace: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Konfigurace, pro kterou se projekt sestaví, tj. Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Příklad: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Povolit protokoly pro testovací platformu]D;]A; Protokoly se zapisují do zadaného souboru.]D;]A;]D;]A; Změňte úroveň trasování pro protokoly tak, jak je uvedeno níže.]D;]A; Příklad: /Diag:;tracelevel=]D;]A; Povolené hodnoty pro tracelevel: off, error, warning, info a verbose]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Určuje protokolovací nástroj pro výsledky testu. Pokud chcete protokolovat výsledky třeba]D;]A; do souboru výsledků testu sady Visual Studio (TRX), použijte /logger:trx[;LogFileName=]5D;]D;]A; Vytvoří soubor v adresáři TestResults s daným LogFileName.]D;]A;]D;]A; Změní úroveň podrobností ve zprávách protokolu pro protokolovací nástroj konzoly tak, jak je uvedeno níže.]D;]A; Příklad: /logger:console;verbosity=]D;]A; Povolené hodnoty pro verbosity: quiet, minimal, normal a detailed]D;]A;]D;]A; Změní předponu úrovně diagnostiky pro protokolovací nástroj konzoly tak, jak je uvedeno níže.]D;]A; Příklad: /logger:console;prefix=]D;]A; Další informace o protokolovacím nástroji konzoly: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Určuje protokolovací nástroj pro výsledky testu. Pokud chcete protokolovat výsledky třeba]D;]A; do souboru výsledků testu sady Visual Studio (TRX), použijte /logger:trx[;LogFileName=]5D;]D;]A; Vytvoří soubor v adresáři TestResults s daným LogFileName.]D;]A;]D;]A; Změní úroveň podrobností ve zprávách protokolu pro protokolovací nástroj konzoly tak, jak je uvedeno níže.]D;]A; Příklad: /logger:console;verbosity=]D;]A; Povolené hodnoty pro verbosity: quiet, minimal, normal a detailed]D;]A;]D;]A; Změní předponu úrovně diagnostiky pro protokolovací nástroj konzoly tak, jak je uvedeno níže.]D;]A; Příklad: /logger:console;prefix=]D;]A; Další informace o protokolovacím nástroji konzoly: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Nastaví hodnotu proměnné prostředí. Pokud proměnná neexistuje, vytvoří ji, a pokud existuje, přepíše ji. Tato možnost bude znamenat, že se použije přepínač /InIsolation a vynutí se spuštění testů v izolovaném procesu.]D;]A; ]D;]A; Tento argument se dá zadat vícekrát, může se tak poskytnout více proměnných.]D;]A;]D;]A; Příklad: -e:PROMENNA1=HODNOTA1]D;]A; -e:JINA_PROMENNA="HODNOTA S MEZERAMI"]D;]A; -e:JINA_PROMENNA="HODNOTA;oddělená;středníky"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Pro spuštění testů s dalšími nastaveními, třeba kolekcemi dat:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Cílová verze rozhraní .NET Framework, která se použije ke spuštění testu. ]D;]A; Platné hodnoty jsou .NETFramework,Version=v4.5.1, .NETCoreApp,Version=v1.0 apod.]D;]A; Další podporované hodnoty jsou Framework40, Framework45, FrameworkCore10 a FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Vypíše všechny zjištěné testy z daného kontejneru testů.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Adresář, který obsahuje binární soubory, které se mají spustit]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; ID nadřazeného procesu, který je odpovědný za spuštění aktuálního procesu]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Cílová architektura platformy, která se použije ke spuštění testu. ]D;]A; Platné hodnoty jsou x86, x64 a ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Port pro připojení soketu a přijímání zpráv událostí]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Načte další možnosti ze souboru odpovědí.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Nastavení, která se použijí při testování.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Spustí testy s názvy odpovídajícími zadaným hodnotám. Chcete-li zadat více]D;]A; hodnot, oddělte je čárkami.]D;]A; Příklady: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Spustí testy, které odpovídají danému výrazu.]D;]A; musí být formátu operátor[|&]5D;,]D;]A; kde operátor je =, != nebo ~ (operátor ~ má sémantiku]D;]A; contains a je použitelný na vlastnosti řetězce, jako je DisplayName).]D;]A; Závorky () mohou být použity pro seskupení podvýrazů.]D;]A; Příklady: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =.]D;]A; Příklady: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 58b2cb6bd6..0000000000 --- a/Localize/lcl/de/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 89373d2073..0000000000 --- a/Localize/lcl/de/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 67a7b06859..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 53de52126c..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true hinzu.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 69690487d3..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c9f0bb4b30..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index fc7328e221..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 11438cb380..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 10a16e3b55..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c0809ec9c7..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c80a367e1d..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index da7fddbc3d..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 7292896d4e..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index 7a6691717a..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c09b3bdc3e..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a68aa48e6f..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 9da7cccf20..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 92a17f76a8..0000000000 --- a/Localize/lcl/de/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 2bb1c885f0..0000000000 --- a/Localize/lcl/de/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Beispiele:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/de/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/de/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 57dff98822..0000000000 --- a/Localize/lcl/de/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Das Verzeichnis mit den temporären Ausgaben.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Aktiviert den Datensammler für den Testlauf. Weitere Informationen finden Sie unter https://aka.ms/vstest-collect.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Die Konfiguration, für die das Projekt erstellt wird, d. h. Debug/Release.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Beispiel: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Aktivieren Sie die Protokolle für die Testplattform.]D;]A; Protokolle werden in die bereitgestellte Datei geschrieben.]D;]A;]D;]A; Ändern Sie die Ablaufverfolgungsebene für Protokolle wie folgt:]D;]A; Beispiel: /Diag:;tracelevel=]D;]A; Zulässige Werte für tracelevel: off, error, warning, info, verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Geben Sie eine Protokollierung für Testergebnisse an. Um Ergebnisse beispielsweise in einer]D;]A; Visual Studio-Testergebnisdatei (TRX) zu protokollieren, verwenden Sie /logger:trx[;LogFileName=]5D;]D;]A; Erstellt die Datei im TestResults-Verzeichnis mit dem angegebenen LogFileName.]D;]A;]D;]A; Ändern Sie den Ausführlichkeitsgrad in den Protokollmeldungen für die Konsolenprotokollierung wie folgt:]D;]A; Beispiel: /logger:console;verbosity=]D;]A; Zulässige Werte für den Ausführlichkeitsgrad: quiet, minimal, normal, detailed.]D;]A;]D;]A; Ändern Sie das Präfix für die Diagnoseebene für die Konsolenprotokollierung wie folgt:]D;]A; Beispiel: /logger:console;prefix=]D;]A; Weitere Informationen zur Konsolenprotokollierung finden Sie hier: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Geben Sie eine Protokollierung für Testergebnisse an. Um Ergebnisse beispielsweise in einer]D;]A; Visual Studio-Testergebnisdatei (TRX) zu protokollieren, verwenden Sie /logger:trx[;LogFileName=]5D;]D;]A; Erstellt die Datei im TestResults-Verzeichnis mit dem angegebenen LogFileName.]D;]A;]D;]A; Ändern Sie den Ausführlichkeitsgrad in den Protokollmeldungen für die Konsolenprotokollierung wie folgt:]D;]A; Beispiel: /logger:console;verbosity=]D;]A; Zulässige Werte für den Ausführlichkeitsgrad: quiet, minimal, normal, detailed.]D;]A;]D;]A; Ändern Sie das Präfix für die Diagnoseebene für die Konsolenprotokollierung wie folgt:]D;]A; Beispiel: /logger:console;prefix=]D;]A; Weitere Informationen zur Konsolenprotokollierung finden Sie hier: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Legt den Wert einer Umgebungsvariablen fest. Erstellt die Variable, wenn Sie nicht vorhanden ist, und setzt sie andernfalls außer Kraft. Dies impliziert die Option "/InIsolation" und erzwingt die Ausführung der Tests in einem isolierten Prozess.]D;]A; ]D;]A; Dieses Argument kann mehrmals angegeben werden, um mehrere Variablen bereitzustellen.]D;]A;]D;]A; Beispiel: -e:VARIABLE1=WERT1]D;]A; -e:WEITERE_VARIABLE="WERT MIT LEERZEICHEN"]D;]A; -e:WEITERE_VARIABLE="WERT;getrennt durch;Semikolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Zum Ausführen von Tests mit zusätzlichen Einstellungen wie Datensammlern:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Die .NET-Framework-Zielversion für die Testausführung. ]D;]A; Gültige Werte sind ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" usw.]D;]A; Weitere unterstützte Werte: Framework40, Framework45, FrameworkCore10, FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Listet alle gefundenen Tests aus dem angegebenen Testcontainer auf.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Das Verzeichnis mit den auszuführenden Binärdateien.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; Die Prozess-ID des übergeordneten Prozesses, der für das Starten des aktuellen Prozesses zuständig ist.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Zielplattformarchitektur für die Testausführung. ]D;]A; Gültige Werte sind x86, x64 und ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Der Port für die Socketverbindung und das Empfangen von Ereignismeldungen.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Antwortdatei mit weiteren Optionen lesen]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Einstellungen für die Ausführung der Tests.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Führt Tests aus, die mit den eingegebenen Werten übereinstimmen. Verwenden Sie zum]D;]A; Angeben mehrerer Werte Kommas als Trennzeichen.]D;]A; Beispiele: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Führt Tests aus, die mit dem angegebenen Ausdruck übereinstimmen.]D;]A; entspricht dem Format Operator[|&]5D;,]D;]A; wobei Operator entweder "=", "!=" oder "~" ist (Der Operator "~" verfügt über eine contains-]D;]A; Semantik und kann auf Zeichenfolgeneigenschaften, z. B. DisplayName, angewendet werden).]D;]A; Zum Gruppieren von Unterausdrücken können Klammern () verwendet werden.]D;]A; Beispiele: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =.]D;]A; Beispiele: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 6d897d6812..0000000000 --- a/Localize/lcl/es/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a51318fb24..0000000000 --- a/Localize/lcl/es/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 27e5d6bcdb..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 6567e87f70..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" al archivo del proyecto.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 49226cc502..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d554cbf2ce..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4405631ba9..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 8e2e47af28..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index de5530698a..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a19711bc1b..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 1f4523cad4..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 12f7f549cb..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 57c98eec7e..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index c00289315d..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3a92b1d568..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e04261dcbd..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ee0ddaa0eb..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 82ac52f636..0000000000 --- a/Localize/lcl/es/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c80ffc4bca..0000000000 --- a/Localize/lcl/es/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Ejemplos:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/es/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/es/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index fe1a1ace7b..0000000000 --- a/Localize/lcl/es/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Directorio que contiene las salidas temporales.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Habilita el recopilador de datos para la serie de pruebas. Más información aquí: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Configuración para la que se ha compilado el proyecto, es decir, Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Ejemplo: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Habilita los registros para la plataforma de pruebas.]D;]A; Los registros se escriben en el archivo proporcionado.]D;]A;]D;]A; Cambie el nivel de seguimiento de los registros tal y como se muestra a continuación]D;]A; Ejemplo: /Diag:;tracelevel=]D;]A; Valores permitidos para el nivel de seguimiento: off, error, warning, info y verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Especifica un registrador para los resultados de las pruebas. Por ejemplo, para registrar los resultados en ]D;]A; un archivo de resultados de pruebas de Visual Studio (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Crea un archivo en el directorio TestResults con el valor LogFileName dado.]D;]A;]D;]A; Cambie el nivel de detalle en los mensajes de registro para el registrador de consola tal y como se muestra a continuación]D;]A; Ejemplo: /logger:console;verbosity=]D;]A; Valores permitidos para el nivel de detalle: quiet, minimal, normal y detailed.]D;]A;]D;]A; Cambie el prefijo de nivel de diagnóstico para el registrador de consola tal y como se muestra a continuación]D;]A; Ejemplo: /logger:console;prefix=]D;]A; Aquí encontrará más información sobre el registrador de consola: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Especifica un registrador para los resultados de las pruebas. Por ejemplo, para registrar los resultados en ]D;]A; un archivo de resultados de pruebas de Visual Studio (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Crea un archivo en el directorio TestResults con el valor LogFileName dado.]D;]A;]D;]A; Cambie el nivel de detalle en los mensajes de registro para el registrador de consola tal y como se muestra a continuación]D;]A; Ejemplo: /logger:console;verbosity=]D;]A; Valores permitidos para el nivel de detalle: quiet, minimal, normal y detailed.]D;]A;]D;]A; Cambie el prefijo de nivel de diagnóstico para el registrador de consola tal y como se muestra a continuación]D;]A; Ejemplo: /logger:console;prefix=]D;]A; Aquí encontrará más información sobre el registrador de consola: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Establece el valor de una variable de entorno. Crea la variable si no existe o la reemplaza en caso de que exista. Esto implica el conmutador /InIsolation y fuerza la ejecución de las pruebas en un proceso aislado.]D;]A; ]D;]A; Este argumento se puede especificar varias veces para proporcionar múltiples variables.]D;]A;]D;]A; Ejemplo: -e:VARIABLE1=VALOR1]D;]A; -e:OTRA_VARIABLE="VALOR CON ESPACIOS"]D;]A; -e:OTRA_VARIABLE="VALOR;separado por;puntoycoma"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Para ejecutar pruebas con configuración adicional como recolectores de datos:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Versión de .NET Framework de destino que se usará para la ejecución de pruebas. ]D;]A; Los valores válidos son ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0", etc.]D;]A; Otros valores admitidos son Framework40, Framework45, FrameworkCore10 y FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Directorio que contiene los binarios que se van a ejecutar.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; Identificador del proceso primario responsable del inicio del proceso actual.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Arquitectura de la plataforma de destino que se usará para la ejecución de pruebas. ]D;]A; Los valores válidos son x86, x64 y ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Puerto para la conexión de socket y la recepción de mensajes de eventos.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Leer el archivo de respuesta para ver más opciones.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Configuración que se usará cuando se ejecuten pruebas.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Ejecuta las pruebas con nombres que coinciden con los valores proporcionados. Para proporcionar varios]D;]A; valores, sepárelos con comas]D;]A; Ejemplos: /Tests:MétodoPrueba1]D;]A; /Tests:MétodoPrueba1,MétodoPrueba2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Ejecuta pruebas que coinciden con la expresión dada.]D;]A; tiene el formato Operador[|&]5D;]D;]A; donde Operador es uno de =, != o ~ (el operador ~ tiene la semántica]D;]A; "contiene" y es aplicable a propiedades de cadena como DisplayName).]D;]A; Se pueden usar paréntesis () para agrupar subexpresiones.]D;]A; Ejemplos: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MiMétodoDePrueba)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =.]D;]A; Ejemplos: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 88cdc102ab..0000000000 --- a/Localize/lcl/fr/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f4568dd423..0000000000 --- a/Localize/lcl/fr/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3e85653a1f..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 8e52471d31..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" au fichier projet.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c2bde3d657..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e368ab90d5..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 533c45cf21..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4292787eb4..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index dc98f913af..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c6975f4eed..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 00d8d17909..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 667c71ddeb..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 1129ae5507..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index 0aa727db04..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 41ea770b30..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index eed3ab1bb5..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 32f34cc009..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 811ea9f2bd..0000000000 --- a/Localize/lcl/fr/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 6ee9a298c5..0000000000 --- a/Localize/lcl/fr/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Exemples :]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/fr/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/fr/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 54ea2d2c1f..0000000000 --- a/Localize/lcl/fr/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Répertoire contenant les sorties temporaires.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Active le collecteur de données pour la série de tests. Plus d'informations ici : https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Configuration pour laquelle le projet est généré. Exemple : Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Exemple : /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Permet d'activer les journaux pour la plateforme de test.]D;]A; Les journaux sont écrits dans le fichier fourni.]D;]A;]D;]A; Change le niveau de trace des journaux comme indiqué ci-dessous]D;]A; Exemple : /Diag:;tracelevel=<"verbose" par défaut>]D;]A; Valeurs autorisées pour tracelevel : off, error, warning, info et verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Spécifiez un journaliseur pour les résultats des tests. Par exemple, pour journaliser des résultats dans un ]D;]A; fichier de résultats des tests Visual Studio (TRX), utilisez /logger:trx[;LogFileName=]5D;]D;]A; Crée un fichier dans le répertoire TestResults avec le LogFileName indiqué.]D;]A;]D;]A; Change le niveau de verbosité des messages du journaliseur de la console, comme indiqué ci-dessous]D;]A; Exemple : /logger:console;verbosity=<"minimal" par défaut>]D;]A; Valeurs autorisées pour verbosity : quiet, minimal, normal et detailed.]D;]A;]D;]A; Change le préfixe du niveau de diagnostic pour le journaliseur de la console, comme indiqué ci-dessous]D;]A; Exemple : /logger:console;prefix=<"false" par défaut>]D;]A; En savoir plus sur le journaliseur de la console : https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Spécifiez un journaliseur pour les résultats des tests. Par exemple, pour journaliser des résultats dans un ]D;]A; fichier de résultats des tests Visual Studio (TRX), utilisez /logger:trx[;LogFileName=]5D;]D;]A; Crée un fichier dans le répertoire TestResults avec le LogFileName indiqué.]D;]A;]D;]A; Change le niveau de verbosité des messages du journaliseur de la console, comme indiqué ci-dessous]D;]A; Exemple : /logger:console;verbosity=<"normal" par défaut>]D;]A; Valeurs autorisées pour verbosity : quiet, minimal, normal et detailed.]D;]A;]D;]A; Change le préfixe du niveau de diagnostic pour le journaliseur de la console, comme indiqué ci-dessous]D;]A; Exemple : /logger:console;prefix=<"false" par défaut>]D;]A; En savoir plus sur le journaliseur de la console : https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Définit la valeur d'une variable d'environnement. Crée la variable si elle n'existe pas, et la remplace si elle existe. Cela implique l'utilisation du commutateur /InIsolation et l'exécution forcée des tests dans un processus isolé.]D;]A; ]D;]A; Vous pouvez spécifier cet argument plusieurs fois pour fournir plusieurs variables.]D;]A;]D;]A; Exemple : -e:VARIABLE1=VALEUR1]D;]A; -e:AUTRE_VARIABLE="VALEUR AVEC ESPACES"]D;]A; -e:AUTRE_VARIABLE="VALEUR;séparée;par;des;points-virgules"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Pour exécuter les tests avec des paramètres supplémentaires, par exemple des collecteurs de données :]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Version cible du .Net Framework à utiliser pour l'exécution des tests. ]D;]A; Les valeurs valides sont : ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0", etc.]D;]A; Les autres valeurs prises en charge sont Framework40, Framework45, FrameworkCore10 et FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Liste tous les tests découverts dans le conteneur de tests spécifié.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Répertoire contenant les fichiers binaires à exécuter.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; ID de processus du processus parent chargé de lancer le processus actuel.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Architecture de plateforme cible à utiliser pour l'exécution des tests. ]D;]A; Les valeurs valides sont x86, x64 et ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Port de connexion du socket et de réception des messages d'événement.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Consultez le fichier réponse pour plus d'options.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Paramètres à utiliser durant l'exécution des tests.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Permet d'exécuter les tests dont les noms correspondent aux valeurs fournies. Pour fournir plusieurs]D;]A; valeurs, séparez-les par des virgules.]D;]A; Exemples : /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Permet d'exécuter les tests qui correspondent à l'expression indiquée.]D;]A; est au format Operator[|&]5D;]D;]A; où Operator correspond à =, != ou ~ (Operator ~ utilise la sémantique 'contient']D;]A; et s'applique aux propriétés de chaîne telles que DisplayName).]D;]A; Vous pouvez utiliser des parenthèses () pour regrouper les sous-expressions.]D;]A; Exemples : /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =.]D;]A; Exemples : "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 31e345bbb0..0000000000 --- a/Localize/lcl/it/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index db8d9a5707..0000000000 --- a/Localize/lcl/it/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a91b7d4146..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4bf1f6083c..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" al file di progetto.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 28f9c881e2..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 76d357cd9c..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 55140759af..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 2717e7ab00..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b0daf1f7d5..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 20bc5a547a..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a1b4f84f19..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 6926eb57ad..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 37aa009696..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index e715a2abc0..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index bd20a30d15..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0274b4eb85..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 920ca05a7e..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b9d17d7d79..0000000000 --- a/Localize/lcl/it/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 182c6fc0dd..0000000000 --- a/Localize/lcl/it/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Esempi:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/it/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/it/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 47afeed586..0000000000 --- a/Localize/lcl/it/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Directory che contiene gli output temporanei.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Abilita l'agente di raccolta dati per l'esecuzione dei test. Per altre informazioni, vedere: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Configurazione per cui viene compilato il progetto, ad esempio Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Esempio: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Abilita i log per la piattaforma di test.]D;]A; I log vengono scritti nel file specificato.]D;]A;]D;]A; Modifica il livello di traccia per i log come illustrato di seguito:]D;]A; Esempio: /Diag:;tracelevel=]D;]A; Valori consentiti per tracelevel: off, error, warning, info e verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Specifica un logger per i risultati dei test. Ad esempio, per registrare risultati in un ]D;]A; file di risultati dei test di Visual Studio (TRX), usare /logger:trx[;LogFileName=]5D;]D;]A; Crea nella directory TestResults il file con il valore specificato per LogFileName.]D;]A;]D;]A; Consente di cambiare il livello di dettaglio nei messaggi del log per il logger di console come illustrato di seguito:]D;]A; Esempio: /logger:console;verbosity=]D;]A; Valori consentiti per verbosity: quiet, minimal, normal e detailed.]D;]A;]D;]A; Consente di cambiare il prefisso del livello di diagnostica per il logger di console come illustrato di seguito:]D;]A; Esempio: /logger:console;prefix=]D;]A; Per altre informazioni sul logger di console, vedere: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Specifica un logger per i risultati dei test. Ad esempio, per registrare risultati in un ]D;]A; file di risultati dei test di Visual Studio (TRX), usare /logger:trx[;LogFileName=]5D;]D;]A; Crea nella directory TestResults il file con il valore specificato per LogFileName.]D;]A;]D;]A; Consente di cambiare il livello di dettaglio nei messaggi del log per il logger di console come illustrato di seguito:]D;]A; Esempio: /logger:console;verbosity=]D;]A; Valori consentiti per verbosity: quiet, minimal, normal e detailed.]D;]A;]D;]A; Consente di cambiare il prefisso del livello di diagnostica per il logger di console come illustrato di seguito:]D;]A; Esempio: /logger:console;prefix=]D;]A; Per altre informazioni sul logger di console, vedere: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Imposta il valore di una variabile di ambiente. Crea la variabile se non esiste e la sostituisce se esiste. Implica l'opzione /InIsolation e forza l'esecuzione dei test in un processo isolato.]D;]A; ]D;]A; È possibile specificare più volte questo argomento per fornire più variabili.]D;]A;]D;]A; Esempio: -e:VARIABILE1=VALORE1]D;]A; -e:ALTRA_VARIABILE="VALORE CON SPAZI"]D;]A; -e:ALTRA_VARIABILE="VALORE;delimitato da;punti e virgola"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Per eseguire test con impostazioni aggiuntive, quali agenti di raccolta dati:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Versione di .NET Framework di destinazione da usare per l'esecuzione dei test. ]D;]A; Valori validi: ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" e così via.]D;]A; Altri valori supportati: Framework40, Framework45, FrameworkCore10 e FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Elenca tutti i test individuati dal contenitore di test specificato.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Directory contenente i file binari da eseguire.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; ID del processo padre responsabile dell'avvio del processo corrente.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Architettura della piattaforma di destinazione da usare per l'esecuzione dei test. ]D;]A; Valori validi: x86, x64 e ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Porta per la connessione socket e la ricezione dei messaggi dell'evento.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Legge il file di risposta per altre opzioni.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Impostazioni da usare per l'esecuzione dei test.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Esegue test con nomi corrispondenti ai valori specificati. Per specificare più]D;]A; valori, separarli con virgole.]D;]A; Esempi: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Esegue test corrispondenti all'espressione specificata.]D;]A; è nel formato Operatore[|&]5D;]D;]A; dopo l'operatore è =, != oppure ~ (l'operatore ~ implica semantica 'contains']D;]A; ed è applicabile solo per proprietà di stringhe quali DisplayName).]D;]A; È possibile usare le parentesi () per raggruppare sottoespressioni.]D;]A; Esempi: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =.]D;]A; Esempi: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e4f254bed5..0000000000 --- a/Localize/lcl/ja/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index edce083a50..0000000000 --- a/Localize/lcl/ja/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c019859a7e..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a1c6a5b9eb..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" プロパティをプロジェクト ファイルに追加します。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c3e554033c..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index fe8bf08178..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index db0bfbb9fb..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a5a47c0c62..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ab1eb8ed25..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 50f799d26c..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 2f816e80de..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index a8f6b93831..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index cc30534fbb..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index 80709a62d7..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 642bdb15d2..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - のようになります。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 85aa750a64..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 798a08649a..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f5957a9993..0000000000 --- a/Localize/lcl/ja/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ca686fe62b..0000000000 --- a/Localize/lcl/ja/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;例:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ja/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ja/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a581b1a72b..0000000000 --- a/Localize/lcl/ja/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; 一時的な出力を含むディレクトリです。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; テストの実行用のデータ コレクターを有効にします。詳細情報はこちら: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; プロジェクトをビルドする構成です。つまり、Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; 例: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; テスト プラットフォームに対してログを有効にします。]D;]A; ログは指定されたファイルに書き込まれます。]D;]A;]D;]A; 次のようにログのトレース レベルを変更します。]D;]A; 例: /Diag:;tracelevel=]D;]A; トレース レベルに使用できる値: off、error、warning、info、verbose。]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; テスト結果のロガーを指定します。たとえば、結果のログを]D;]A; Visual Studio のテスト結果ファイル (TRX) に記録するには、/logger:trx[;LogFileName=]5D; を使用します]D;]A; TestResults ディレクトリに、指定された LogFileName でファイルを作成します。]D;]A;]D;]A; コンソール ロガーのログ メッセージの詳細レベルを、次のように変更します]D;]A; 例: /logger:console;verbosity=]D;]A; 詳細レベルに使用できる値: quiet、minimal、normal、detailed。]D;]A;]D;]A; コンソール ロガーの診断レベルのプレフィックスを次のように変更します]D;]A; 例: /logger:console;prefix=]D;]A; コンソール ロガーの詳細についてはこちらをご覧ください: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; テスト結果のロガーを指定します。たとえば、結果のログを]D;]A; Visual Studio のテスト結果ファイル (TRX) に記録するには、/logger:trx[;LogFileName=]5D; を使用します]D;]A; TestResults ディレクトリに、指定された LogFileName でファイルを作成します。]D;]A;]D;]A; コンソール ロガーのログ メッセージの詳細レベルを、次のように変更します]D;]A; 例: /logger:console;verbosity=]D;]A; 詳細レベルに使用できる値: quiet、minimal、normal、detailed。]D;]A;]D;]A; コンソール ロガーの診断レベルのプレフィックスを次のように変更します]D;]A; 例: /logger:console;prefix=]D;]A; コンソール ロガーの詳細についてはこちらをご覧ください: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; 環境変数の値を設定します。変数が存在しない場合は作成され、存在する場合はオーバーライドされます。これにより、/InIsolation スイッチが暗黙に指定されるため、テストは強制的に分離プロセスで実行されます。]D;]A; ]D;]A; この引数は、複数の変数を指定するために複数回指定できます。]D;]A;]D;]A; 例: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; テストをデータ コレクターなどの追加設定を指定して実行する:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; テストの実行に使用する、.Net Framework のターゲット バージョン。]D;]A; 有効な値は ".NETFramework,Version=v4.5.1"、".NETCoreApp,Version=v1.0" などです。]D;]A; サポートされている他の値は、Framework40、Framework45、FrameworkCore10、FrameworkUap10 です。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; 指定されたテスト コンテナーから、すべての探索されたテストを一覧表示します。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; 実行するバイナリを含むディレクトリです。]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; 現在のプロセスを起動する親プロセスのプロセス ID です。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; テストの実行に使用するターゲット プラットフォームのアーキテクチャです。]D;]A; 有効な値は、x86、x64、ARM です。]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; ソケット接続およびイベント メッセージを受信するためのポートです。]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; その他のオプションについては、応答ファイルを参照してください。]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; テストを実行する際に使用する設定です。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; 指定された値に一致する名前のテストを実行します。複数の値を]D;]A; 指定する場合、コンマで区切ります。]D;]A; 例: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - 。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; 指定された式と一致するテストを実行します。]D;]A; の形式は 演算子[|&]5D;]D;]A; で、演算子は =、!=、~ のいずれかです (演算子 ~ には '含む']D;]A; セマンティクスがあり、DisplayName などの文字列プロパティに適用されます)。]D;]A; かっこ () は、サブ式のグループ化に使用できます。]D;]A; 例: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =<値> という型で指定できます。]D;]A; 例: "Priority=1"、"TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d0c0117d07..0000000000 --- a/Localize/lcl/ko/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e49faa32f3..0000000000 --- a/Localize/lcl/ko/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f43ae06d64..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 03321f3cab..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" 속성을 프로젝트 파일에 추가합니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b2ad001d77..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b4b5c4de7a..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 81f585a261..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 69aa943da7..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4ea1ba95ea..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 91c61eb350..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e44a4c92b9..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 21532cf816..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index f285a1f8a7..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index 1f99ba81b0..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 9a6cb69c70..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - 와 같습니다. ]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 453e942626..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 6492081309..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 9b1d309a7b..0000000000 --- a/Localize/lcl/ko/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3e9e52701d..0000000000 --- a/Localize/lcl/ko/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ko/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ko/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 424dc78792..0000000000 --- a/Localize/lcl/ko/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; 임시 출력을 포함하는 디렉터리입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; 테스트 실행을 위해 데이터 수집기를 사용하도록 설정합니다. 자세한 내용은 https://aka.ms/vstest-collect를 참조하세요.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; 디버그/릴리스를 위해 프로젝트가 빌드되는 구성입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; 예: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; 테스트 플랫폼의 로그를 사용하도록 설정합니다.]D;]A; 로그는 제공된 파일에 기록됩니다.]D;]A;]D;]A; 아래 표시된 대로 로그의 추적 수준을 변경합니다.]D;]A; 예: /Diag:;tracelevel=]D;]A; 허용되는 추적 수준 값: off, error, warning, info 및 verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; 테스트 결과의 로거를 지정합니다. 예를 들어 ]D;]A; Visual Studio TRX(테스트 결과 파일)에 결과를 기록하려면 /logger:trx[;LogFileName=]5D;를 사용합니다.]D;]A; 지정된 LogFileName으로 TestResults 디렉터리에서 파일을 만듭니다.]D;]A;]D;]A; 아래 표시된 대로 콘솔 로거에 대한 로그 메시지에서 세부 정보 표시 수준을 변경합니다.]D;]A; 예: /logger:console;verbosity=]D;]A; 허용된 세부 정보 표시 값: quiet, minimal, normal 및 detailed.]D;]A;]D;]A; 아래 표시된 대로 콘솔 로거에 대한 진단 수준 접두사를 변경합니다.]D;]A; 예: /logger:console;prefix=]D;]A; 콘솔 로거에 대한 자세한 내용은 https://aka.ms/console-logger를 참조하세요.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; 테스트 결과의 로거를 지정합니다. 예를 들어 ]D;]A; Visual Studio TRX(테스트 결과 파일)에 결과를 기록하려면 /logger:trx[;LogFileName=]5D;를 사용합니다.]D;]A; 지정된 LogFileName으로 TestResults 디렉터리에서 파일을 만듭니다.]D;]A;]D;]A; 아래 표시된 대로 콘솔 로거에 대한 로그 메시지에서 세부 정보 표시 수준을 변경합니다.]D;]A; 예: /logger:console;verbosity=]D;]A; 허용된 세부 정보 표시 값: quiet, minimal, normal 및 detailed.]D;]A;]D;]A; 아래 표시된 대로 콘솔 로거에 대한 진단 수준 접두사를 변경합니다.]D;]A; 예: /logger:console;prefix=]D;]A; 콘솔 로거에 대한 자세한 내용은 https://aka.ms/console-logger를 참조하세요.]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; 환경 변수의 값을 설정합니다. 변수가 없는 경우 변수를 만들고, 변수가 있으면 재정의합니다. 이는 /InIsolation 전환을 의미하며 격리된 프로세스에서 테스트를 강제로 실행합니다.]D;]A; ]D;]A; 이 인수를 여러 번 지정하여 여러 변수를 제공할 수 있습니다.]D;]A;]D;]A; 예: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; 데이터 수집기와 같은 추가 설정을 사용하여 테스트를 실행하려면:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; 테스트 실행에 사용할 대상 .NET Framework 버전입니다. ]D;]A; 유효한 값은 ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" 등입니다.]D;]A; 기타 지원되는 값은 Framework40, Framework45, FrameworkCore10 및 FrameworkUap10입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; 지정된 테스트 컨테이너에서 검색된 모든 테스트를 나열합니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; 실행할 이진 파일을 포함하는 디렉터리입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; 현재 프로세스를 시작해야 하는 부모 프로세스의 프로세스 ID입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; 테스트를 실행하는 데 사용할 대상 플랫폼 아키텍처입니다. ]D;]A; 유효한 값은 x86, x64 및 ARM입니다.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; 소켓 연결 및 이벤트 메시지 수신용 포트입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; 추가 옵션에 대한 지시 파일을 읽습니다.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; 테스트를 실행할 때 사용할 설정입니다.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; 제공된 값과 일치하는 이름으로 테스트를 실행합니다. 여러 값을 제공하려면 ]D;]A; 쉼표로 구분합니다.]D;]A; 예: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; 지정된 식과 일치하는 테스트를 실행합니다.]D;]A; 연산자[|&]5D;]D;]A; 형식이며, 여기서 연산자는 =, !=, ~ 중 하나입니다(~ 연산자는 '포함' 의미 체계를]D;]A; 사용하며 DisplayName 같은 문자열 속성에 적용됩니다).]D;]A; 괄호 ()를 사용하여 하위 식을 그룹화할 수 있습니다.]D;]A; 예: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - = 형식이 될 수 있습니다.]D;]A; 예: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0319a1a39a..0000000000 --- a/Localize/lcl/pl/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 79b22ec39c..0000000000 --- a/Localize/lcl/pl/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 92805ec3c4..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0e21e953b0..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true” do pliku projektu.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b7aa674c4f..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 5b9486b188..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index bee64a266d..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3a9bdb2332..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 679846ca4a..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 15ba083e99..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c5f656a862..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 744cf625e8..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index e6ab8553ef..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index f3e5a357b3..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 2320b0cddf..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 9336f8df1d..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0dc66293e4..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0ed175dd54..0000000000 --- a/Localize/lcl/pl/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a6e7127bf1..0000000000 --- a/Localize/lcl/pl/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Przykłady:]D;]A;SettingsMigrator.exe E:\MójTest\UstawieniaMojegoTestu.testsettings]D;]A;SettingsMigrator.exe E:\MójTest\UstawieniaMojegoStaregoPrzebiegu.runsettings]D;]A;SettingsMigrator.exe E:\MójTest\UstawieniaMojegoTestu.testsettings E:\MójTest\UstawieniaMojegoNowegoPrzebiegu.runsettings]D;]A;SettingsMigrator.exe E:\MójTest\UstawieniaMojegoStaregoPrzebiegu.runsettings E:\MójTest\UstawieniaMojegoNowegoPrzebiegu.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pl/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pl/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b3c976b5b3..0000000000 --- a/Localize/lcl/pl/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Katalog zawierający tymczasowe dane wyjściowe.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Włącza moduł zbierający dane dla przebiegu testu. Więcej informacji: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Konfiguracja, na potrzeby której kompilowany jest projekt, na przykład Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Przykład: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Włącz dzienniki dla platformy testowej.]D;]A; Dzienniki są zapisywanie w podanym pliku.]D;]A;]D;]A; Zmień poziom śledzenia dla dzienników, jak pokazano poniżej]D;]A; Przykład: /Diag:<ścieżka do pliku dziennika>;tracelevel=]D;]A; Dozwolone wartości dla elementu tracelevel: off, error, warning, info i verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Określa rejestrator dla wyników testu. Aby na przykład rejestrować wyniki testu ]D;]A; do pliku wyników testu (TRX) programu Visual Studio, użyj parametru /logger:trx [;LogFileName=]5D;]D;]A; Tworzy w katalogu TestResults plik z podaną nazwą LogFileName.]D;]A;]D;]A; Zmień poziom szczegółowości dla rejestratora konsoli, jak pokazano poniżej]D;]A; Przykład: /logger:console;verbosity= ]D;]A; Dozwolone wartości szczegółowości: quiet, minimal i normal.]D;]A;]D;]A; Zmień prefiks poziomu diagnostyki dla rejestratora konsoli, jak pokazano poniżej]D;]A; Przykład: /logger:console;prefix=]D;]A; Więcej informacji o rejestratorze konsoli: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Określa rejestrator dla wyników testu. Aby na przykład rejestrować wyniki testu ]D;]A; do pliku wyników testu (TRX) programu Visual Studio, użyj parametru /logger:trx [;LogFileName=]5D;]D;]A; Tworzy w katalogu TestResults plik z podaną nazwą LogFileName.]D;]A;]D;]A; Zmień poziom szczegółowości dla rejestratora konsoli, jak pokazano poniżej]D;]A; Przykład: /logger:console;verbosity= ]D;]A; Dozwolone wartości szczegółowości: quiet, minimal i normal.]D;]A;]D;]A; Zmień prefiks poziomu diagnostyki dla rejestratora konsoli, jak pokazano poniżej]D;]A; Przykład: /logger:console;prefix=]D;]A; Więcej informacji o rejestratorze konsoli: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Ustawia wartość zmiennej środowiskowej. Jeśli zmienna nie istnieje, tworzy ją, a w przeciwnym wypadku przesłania ją. Powoduje to określenie przełącznika /InIsolation i wymuszenie uruchomienia testów w procesie izolowanym.]D;]A; ]D;]A; Ten argument może być określany wielokrotnie w celu dostarczenia wielu zmiennych.]D;]A;]D;]A; Przykład: -e:ZMIENNA1=WARTOŚĆ1]D;]A; -e:INNA_ZMIENNA="WARTOŚĆ ZE SPACJAMI"]D;]A; -e:INNA_ZMIENNA="WARTOŚCI;oddzielone;średnikami"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Aby uruchomić testy z użyciem ustawień dodatkowych, takich jak moduły zbierające dane:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Docelowa wersja programu .NET Framework, która zostanie użyta na potrzeby wykonania testu. ]D;]A; Prawidłowe wartości to ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" itp.]D;]A; Inne obsługiwane wartości to Framework40, Framework45, FrameworkCore10 i FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Wyświetla listę wszystkich wykrytych testów z danego kontenera testów.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Katalog zawierający pliki binarne do uruchomienia.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; Identyfikator procesu nadrzędnego odpowiedzialnego za uruchomienie bieżącego procesu.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Docelowa architektura platformy, która zostanie użyta do wykonania testu. ]D;]A; Prawidłowe wartości to x86, x64 i ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Port służący do połączenia z gniazdem i odbierania komunikatów zdarzeń.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Przeczytaj zawartość pliku odpowiedzi w celu uzyskania dodatkowych opcji.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Ustawienia, które mają być używane podczas uruchamiania testów.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Uruchom testy z nazwami, które są zgodne z podanymi wartościami. Aby]D;]A; podać wiele wartości, oddziel je przecinkami.]D;]A; Przykłady: /Tests:MetodaTestowa1]D;]A; /Tests:MetodaTestowa1,MetodaTestowa2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Uruchamia testy, które są zgodne z danym wyrażeniem.]D;]A; Element jest w formacie Operator[|&]5D;]D;]A; gdzie Operator to =, != lub ~ (operator ~ ma semantykę „zawiera”]D;]A; i jest stosowany dla właściwości ciągów, takich jak nazwa wyświetlana).]D;]A; Nawiasy () mogą służyć do grupowania wyrażeń podrzędnych.]D;]A; Przykłady: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nocne]D;]A; |Name=MojaMetodaTestowa)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - = .]D;]A; Przykłady: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0f9f31c901..0000000000 --- a/Localize/lcl/pt-BR/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 9e6ad3c88f..0000000000 --- a/Localize/lcl/pt-BR/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 60f1051def..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c7e2f4d59a..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" ao arquivo de projeto.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 71f8f3833f..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 70d80c4ace..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a07e9affa7..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3ff6c71ef4..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 5344f176f8..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 1ad4bd65f9..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ac06f9a565..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index dd5fa46a3c..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 347f44680f..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index f85074c6d1..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 97e3113c4b..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f18333913f..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a3c11ce537..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index bda6ca33b8..0000000000 --- a/Localize/lcl/pt-BR/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index aae28066a1..0000000000 --- a/Localize/lcl/pt-BR/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/pt-BR/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/pt-BR/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 553f1c521a..0000000000 --- a/Localize/lcl/pt-BR/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; O diretório que contém as saídas temporárias.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Habilita o coletor de dados para a execução de teste. Mais informações aqui: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; A configuração para a qual o projeto foi compilado, ou seja, Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Exemplo: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Habilitar os logs para a plataforma de teste.]D;]A; Os logs são gravados no arquivo fornecido.]D;]A;]D;]A;Alterar o nível de rastreamento dos logs, como mostrado abaixo]D;]A; Exemplo: /Diag:; tracelevel=]D;]A; Valores permitidos para tracelevel: off, error, warning, info e verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Especifique um agente para os resultados de teste. Por exemplo, para registrar os resultados em um Arquivo de Resultados de Teste (TRX) do ]D;]A; Visual Studio use /logger:trx[;LogFileName=]5D;]D;]A; Cria um arquivo no diretório TestResults com o LogFileName determinado.]D;]A;]D;]A; Altere o nível de detalhamento nas mensagens de log do agente de console, como mostrado abaixo]D;]A; Exemplo: /logger:console;verbosity=]D;]A; Os valores permitidos para o nível de detalhamento são: quiet, minimal, normal e detailed.]D;]A;]D;]A;Altere o prefixo de nível de diagnóstico do agente de console, como mostrado abaixo]D;]A; Exemplo: /logger:console;prefix=]D;]A; Veja mais informações sobre o Agente de Console aqui: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Especifique um agente para os resultados de teste. Por exemplo, para registrar os resultados em um Arquivo de Resultados de Teste (TRX) do ]D;]A; Visual Studio use /logger:trx[;LogFileName=]5D;]D;]A; Cria um arquivo no diretório TestResults com o LogFileName determinado.]D;]A;]D;]A; Altere o nível de detalhamento nas mensagens de log do agente de console, como mostrado abaixo]D;]A; Exemplo: /logger:console;verbosity=]D;]A; Os valores permitidos para o nível de detalhamento são: quiet, minimal, normal e detailed.]D;]A;]D;]A;Altere o prefixo de nível de diagnóstico do agente de console, como mostrado abaixo]D;]A; Exemplo: /logger:console;prefix=]D;]A; Veja mais informações sobre o Agente de Console aqui: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Define o valor de uma variável de ambiente. Cria a variável caso ela não exista e substitui caso exista. Isso implicará a opção /InIsolation e forçará a execução dos testes em um processo isolado.]D;]A; ]D;]A; Esse argumento pode ser especificado várias vezes para fornecer várias variáveis.]D;]A;]D;]A; Exemplo: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperado com;ponto e vírgula"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Para executar testes com configurações adicionais, como coletores de dados:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Versão de destino do .NET Framework a ser usada para execução de teste. ]D;]A; Os valores válidos são ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Outros valores permitidos são Framework40, Framework45, FrameworkCore10 e FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Lista todos os testes detectados no contêiner de testes especificado.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; O diretório que contém os binários a serem executados.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; ID do Processo Pai responsável pela inicialização do processo atual.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Arquitetura da plataforma destino a ser usada na execução de teste. ]D;]A; Os valores válidos são x86, x64 e ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; A Porta para a conexão de soquete e o recebimento de mensagens de eventos.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Ler o arquivo de resposta para obter mais opções.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Configurações a serem usadas durante a execução de testes.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Execute testes com nomes que correspondam aos valores fornecidos. Para fornecer vários]D;]A; valores, separe-os por vírgulas.]D;]A; Exemplos: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Executa testes que correspondem à expressão fornecida.]D;]A; tem o formato Operator[|&]5D;]D;]A; em que Operator é =, != ou ~ (o Operator ~ tem a semântica 'contains']D;]A; e é aplicável a propriedades de cadeia de caracteres como DisplayName).]D;]A; É possível usar parênteses () para agrupar subexpressões.]D;]A; Exemplos: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - = .]D;]A; Exemplos: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4aeb1992a4..0000000000 --- a/Localize/lcl/ru/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a6cbdd423a..0000000000 --- a/Localize/lcl/ru/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 25e457ee7b..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d139226055..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" в файл проекта.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f54f768042..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d30fd9d61b..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c13d8f3a49..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ebd2001466..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 89f7997e69..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index fcae7d4c03..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f08df6f3c8..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index efbd829e2b..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 24b5878d6d..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index de0569314f..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 1e2754ace4..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 9001cf435e..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 578560ca31..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 64781337d8..0000000000 --- a/Localize/lcl/ru/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b0d2cd277d..0000000000 --- a/Localize/lcl/ru/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe <полный путь к переносимому файлу TestSettings или RunSettings> <полный путь к создаваемому файлу RunSettings>]D;]A;Примеры:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/ru/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/ru/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 52f7c75c78..0000000000 --- a/Localize/lcl/ru/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Каталог, содержащий временные выходные данные.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Включает сборщик данных для тестового запуска. Подробнее: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Конфигурация, для которой создан проект, например Debug/Release]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Пример: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Включение журналов для платформы тестирования.]D;]A; Журналы записываются в предоставленный файл.]D;]A;]D;]A; Уровень трассировки для журналов можно изменить описанным ниже способом]D;]A; Пример: /Diag:<путь к файлу журнала>;tracelevel=<по умолчанию "verbose">]D;]A; Разрешенные значения для tracelevel: off, error, warning, info и verbose.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Укажите средство ведения журнала результатов тестирования. Например, чтобы сохранять результаты в файле]D;]A; результатов тестов Visual Studio (TRX), укажите /logger:trx[;LogFileName=<по умолчанию уникальное имя файла>]5D;]D;]A; Создает файл в каталоге TestResults с заданным именем LogFileName.]D;]A;]D;]A; Изменить уровень детализации сообщений журнала для средства ведения журнала консоли можно описанным ниже способом]D;]A; Пример: /logger:console;verbosity=<по умолчанию "minimal">]D;]A; Допустимые значения для verbosity: quiet, minimal, normal и detailed.]D;]A;]D;]A; Изменить префикс уровня диагностики для средства ведения журнала консоли можно описанным ниже способом]D;]A; Пример: /logger:console;prefix=<по умолчанию "false">]D;]A; Подробнее о средстве ведения журнала консоли: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Укажите средство ведения журнала результатов тестирования. Например, чтобы сохранять результаты в файле]D;]A; результатов тестов Visual Studio (TRX), укажите /logger:trx[;LogFileName=<по умолчанию уникальное имя файла>]5D;]D;]A; Создает файл в каталоге TestResults с заданным именем LogFileName.]D;]A;]D;]A; Изменить уровень детализации сообщений журнала для средства ведения журнала консоли можно описанным ниже способом]D;]A; Пример: /logger:console;verbosity=<по умолчанию "normal">]D;]A; Допустимые значения для verbosity: quiet, minimal, normal и detailed.]D;]A;]D;]A; Изменить префикс уровня диагностики для средства ведения журнала консоли можно описанным ниже способом]D;]A; Пример: /logger:console;prefix=<по умолчанию "false">]D;]A; Подробнее о средстве ведения журнала консоли: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Устанавливает значение переменной среды. Если переменной среды не существует, она создается. Если переменная среды существует, она переопределяется. Этот параметр подразумевает использование параметра /InIsolation и принудительно выполняет тесты в изолированном процессе.]D;]A; ]D;]A; Этот аргумент может быть указан несколько раз для нескольких переменных среды.]D;]A;]D;]A; Пример: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Запуск тестов с дополнительными параметрами, например со сборщиками данных:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Целевая версия платформы .NET Framework, используемая для выполнения тестов. ]D;]A; Допустимые значения: ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" и т. п.]D;]A; Другие поддерживаемые значения: Framework40, Framework45, FrameworkCore10 и FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Перечисление всех обнаруженных тестов из указанного контейнера тестов.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Каталог, содержащий двоичные файлы для запуска.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; Идентификатор родительского процесса, отвечающего за запуск текущего процесса.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Архитектура целевой платформы, в которой будут выполняться тесты. ]D;]A; Допустимые значения: x86, x64 и ARM.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Порт для подключения через сокет и получения сообщений о событиях.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Считывание файла ответов с дополнительными параметрами.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Параметры, используемые при запуске тестов.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Запуск тестов с именами, соответствующими указанным значениям.]D;]A; Несколько значений разделяются запятыми.]D;]A; Примеры: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Запуск тестов, соответствующих заданному выражению.]D;]A; <выражение> имеет формат <свойство>оператор<значение>[|&<выражение>]5D;]D;]A; где в качестве оператора может использоваться =, != или ~ (оператор ~ имеет семантику]D;]A; "содержит" и применим к строковым свойствам, таким как DisplayName).]D;]A; Вложенные выражения можно группировать с помощью скобок ().]D;]A; Примеры: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =<значение>.]D;]A; Пример: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 2814f70c93..0000000000 --- a/Localize/lcl/tr/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 5708a05126..0000000000 --- a/Localize/lcl/tr/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index aa214545dd..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 13140653f9..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" özelliğini ekleyin.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f148de8725..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ee86c3ba86..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ba8d7c4dc1..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4c0121c405..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f0fdff65ab..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d2efd6eb44..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a805927024..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 8596d82685..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 91cdda7def..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index 9c8c6154d8..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index aa2fd3a1f7..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index fbeebd454a..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 616b9ecae9..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index d09e531d2f..0000000000 --- a/Localize/lcl/tr/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index acf7862eed..0000000000 --- a/Localize/lcl/tr/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Örnekler:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/tr/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/tr/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 374e2a3248..0000000000 --- a/Localize/lcl/tr/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; Geçici çıkışları içeren dizin.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; Test çalıştırması için veri toplayıcıyı etkinleştirir. Daha fazla bilgi: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; Projenin derleme nedeni olan yapılandırma (Debug/Release)]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; Örnek: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; Test platformu için günlükleri sağlayın.]D;]A; Günlükler sağlanan dosyaya yazılır.]D;]A;]D;]A;Günlükler için izleme düzeyini aşağıda gösterildiği gibi değiştirin]D;]A; Örnek: /Diag:; tracelevel=]D;]A; tracelevel için izin verilen değerler: kapalı, hata, uyarı, bilgiler ve ayrıntılı.]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Test sonuçları için bir günlükçü belirtin. Örneğin, sonuçları bir ]D;]A; Visual Studio Test Sonuçları Dosyası'na (TRX) kaydetmek için şunu kullanın: /logger:trx[;LogFileName=]5D;]D;]A; İlgili LogFileName ile TestResults dizininde dosya oluşturur.]D;]A;]D;]A; Konsol günlükçüsü için ayrıntı düzeyini günlük iletilerinde aşağıda gösterildiği gibi değiştirin]D;]A; Örnek: /logger:console;verbosity=]D;]A; Ayrıntı için izin verilen değerler: quiet, minimal, normal ve detailed.]D;]A;]D;]A; Konsol günlükçüsü için tanılama düzeyi ön ekini aşağıda gösterildiği gibi değiştirin]D;]A; Örnek: /logger:console;prefix=]D;]A; Konsol Günlükçüsü hakkında daha fazla bilgi: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; Test sonuçları için bir günlükçü belirtin. Örneğin, sonuçları bir ]D;]A; Visual Studio Test Sonuçları Dosyası'na (TRX) kaydetmek için şunu kullanın: /logger:trx[;LogFileName=]5D;]D;]A; İlgili LogFileName ile TestResults dizininde dosya oluşturur.]D;]A;]D;]A; Konsol günlükçüsü için ayrıntı düzeyini günlük iletilerinde aşağıda gösterildiği gibi değiştirin]D;]A; Örnek: /logger:console;verbosity=]D;]A; Ayrıntı için izin verilen değerler: quiet, minimal, normal ve detailed.]D;]A;]D;]A; Konsol günlükçüsü için tanılama düzeyi ön ekini aşağıda gösterildiği gibi değiştirin]D;]A; Örnek: /logger:console;prefix=]D;]A; Konsol Günlükçüsü hakkında daha fazla bilgi: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; Bir ortam değişkeninin değerini ayarlar. Değişken mevcut değilse oluşturur, varsa geçersiz kılar. Bu, /InIsolation anahtarını kapsar ve testleri yalıtılmış bir işlemde çalıştırılmaya zorlar.]D;]A; ]D;]A; Birden çok değişken sağlamak için bu bağımsız değişken birden çok kez belirtilebilir.]D;]A;]D;]A; Örnek: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; Testleri veri toplayıcılar gibi ek ayarlarla çalıştırmak için:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; Test yürütme için kullanılacak hedef .Net Framework sürümü. ]D;]A; Geçerli değerler: ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" vb.]D;]A; Diğer desteklenen değerler: Framework40, Framework45, FrameworkCore10 ve FrameworkUap10.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; Verilen test kapsayıcısında bulunan tüm testleri listeler.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; Çalıştırılacak ikili dosyaları içeren dizin.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; Geçerli işlemi başlatmadan sorumlu Üst İşlemin işlem kimliği.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; Test yürütmesi için kullanılacak hedef platform mimarisi. ]D;]A; Geçerli değerler x86, x64 ve ARM'dir.]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; Yuva bağlantısı ve olay iletilerini almaya yönelik Bağlantı Noktası.]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; Daha fazla seçenek için yanıt dosyasını okuyun.]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; Testleri çalıştırırken kullanılacak ayarlar.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; Sağlanan değerlerle eşleşen adlara sahip testleri çalıştırır. Birden çok]D;]A; değer sağlamak için, değerleri virgülle ayırın.]D;]A; Örnekler: /Tests:TestYöntemi1]D;]A; /Tests:TestYöntemi1,testYöntemi2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - .]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; Verilen ifadeyle eşleşen testleri çalıştırır.]D;]A; <İfade>, <özellik>İşleç[|&<İfade>]5D; biçimindedir;]D;]A; burada İşleç =, != veya ~ simgelerinden biridir (~ İşleci 'içerir']D;]A; anlamına gelir ve DisplayName gibi dize özelliklerine uygulanabilir).]D;]A; Alt ifadeleri gruplandırmak için ayraç () kullanılabilir.]D;]A; Örnekler: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(TamAd~Gece]D;]A; |Name=TestYöntemim)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - = türünde olabilir.]D;]A; Örnekler: "Priority=1", "TestCategory=Gece"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 5aca68b1b1..0000000000 --- a/Localize/lcl/zh-Hans/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index cf76b01fee..0000000000 --- a/Localize/lcl/zh-Hans/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 7feb9fab29..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 95d3258ad3..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" 属性。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 31afea6d7d..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 4ac31bd1ae..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e88a2dc32a..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 08667df9ec..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index e1e1bc40a1..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index db66f9a5f1..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 150c853549..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 4c5605c158..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 81d40cdc07..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index dd5343271e..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 88282d38dc..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - 。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index ea969cdf0b..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 88f2796e35..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3ecdf00473..0000000000 --- a/Localize/lcl/zh-Hans/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 32fbfe0a8a..0000000000 --- a/Localize/lcl/zh-Hans/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hans/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hans/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0a2810f968..0000000000 --- a/Localize/lcl/zh-Hans/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; 包含临时输出的目录。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; 启用数据收集器以运行测试。可在此处获取详细信息: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; 项目为调试/发布等生成的配置]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; 示例: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; 启用测试平台的日志。]D;]A; 日志将写入所提供的文件。]D;]A;]D;]A; 更改日志的跟踪级别,如下所示]D;]A; 示例: /Diag:;tracelevel=]D;]A; 允许的 tracelevel 的值: off、error、 warning、info 和 verbose。]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; 为测试结果指定一个记录器。例如,若要将结果记录到]D;]A; Visual Studio 测试结果文件(TRX)中,请使用 /logger:trx[;LogFileName=]5D;]D;]A; 使用给定的 LogFileName 在 TestResults 目录中创建文件。]D;]A;]D;]A; 更改控制台记录器的日志消息中的详细程度,如下所示]D;]A; 示例: /logger:console;verbosity=]D;]A; 允许的详细程度的值: quiet、minimal、normal 和 detailed。]D;]A;]D;]A; 更改控制台记录器的诊断级别前缀,如下所示]D;]A; 示例: /logger:console;prefix=]D;]A; 此处为控制台记录器的详细信息: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; 为测试结果指定一个记录器。例如,若要将结果记录到 ]D;]A; Visual Studio 测试结果文件(TRX)中,请使用/logger:trx[;LogFileName=]5D;]D;]A; 使用给定的 LogFileName 在 TestResults 目录中创建文件。]D;]A;]D;]A; 更改控制台记录器的日志消息中的详细程度,如下所示]D;]A; 示例: /logger:console;verbosity]D;]A; 允许的详细程度的值: quiet、minimal、normal 和 detailed。]D;]A;]D;]A; 更改控制台记录器的诊断级别前缀,如下所示]D;]A; 示例: /logger:console;prefix=]D;]A; 此处为控制台记录器的详细信息: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; 设置环境变量的值。如果该变量不存在,则创建它;如果它已存在,则替代它。这将表示 /InIsolation 开关并强制在隔离的进程中运行测试。]D;]A; ]D;]A; 可多次指定此参数来提供多个变量。]D;]A;]D;]A; 示例: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; 使用其他设置(如数据收集器)运行测试:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; 用于执行测试的目标 .Net Framework 版本。]D;]A; 有效值为 ".NETFramework,Version=v4.5.1".NETCoreApp,Version=v1.0" 等。]D;]A; 其他支持的值为 Framework40、Framework45、FrameworkCore10 和 FrameworkUap10。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; 从给定测试容器中列出所有已发现的测试。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; 包含要运行的二进制文件的目录。]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; 父进程的进程 ID 负责启动当前进程。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; 用于执行测试的目标平台体系结构。]D;]A; 有效值为 x86、x64 和 ARM。]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; 套接字连接和接收事件消息的端口。]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; 有关更多选项,请阅读响应文件。]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; 运行测试时要使用的设置。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; 运行其名称与所提供值相匹配的测试。若要提供多个]D;]A; 值,请用逗号将这些值分隔开。]D;]A; 示例: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - 。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; 运行与给定表达式匹配的测试。]D;]A; 的格式为 Operator[|&]5D;]D;]A; 其中,Operator 是 =、!= 或 ~ (Operator ~ 具有 "contains"]D;]A; 语义且适用于诸如 DisplayName 之类的字符串属性)。]D;]A; 括号()可用于对子表达式进行分组。]D;]A; 示例: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - =<值>”类型。]D;]A; 示例: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 508850eecf..0000000000 --- a/Localize/lcl/zh-Hant/src/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 014fde6e58..0000000000 --- a/Localize/lcl/zh-Hant/src/DataCollectors/TraceDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 30efcbc24d..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.AdapterUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 8cc963db48..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Build/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true" property to project file.]]> - - true" 屬性。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 66bb7b5c89..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Client/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index b79a79933c..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index c168551e14..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CommunicationUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index a4e2766352..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CoreUtilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index f2df266e11..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.CrossPlatEngine/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 0ae106a1ec..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 79b158a897..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl deleted file mode 100644 index 128ab9c210..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Extensions.TrxLogger/Resources/xlf/TrxResource.xlf.lcl +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl deleted file mode 100644 index 59787f7b46..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/CommonResources.xlf.lcl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl deleted file mode 100644 index 843015ad61..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/ManagedNameMessages.xlf.lcl +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index cf5e5992d9..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.ObjectModel/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - 。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 53b6b37a76..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.TestHostProvider/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index cc78db55f7..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.Utilities/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index aaddb56725..0000000000 --- a/Localize/lcl/zh-Hant/src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 3e60d5fb72..0000000000 --- a/Localize/lcl/zh-Hant/src/SettingsMigrator/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A;SettingsMigrator.exe ]D;]A;Examples:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - ]D;]A;SettingsMigrator.exe <要建立的 runsettings 檔案的完整路徑>]D;]A;範例:]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings]D;]A;SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings]]> - - - - - - - \ No newline at end of file diff --git a/Localize/lcl/zh-Hant/src/vstest.console/Resources/xlf/Resources.xlf.lcl b/Localize/lcl/zh-Hant/src/vstest.console/Resources/xlf/Resources.xlf.lcl deleted file mode 100644 index 004b119789..0000000000 --- a/Localize/lcl/zh-Hant/src/vstest.console/Resources/xlf/Resources.xlf.lcl +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the temporary outputs.]]> - - ]D;]A; 包含暫存輸出的目錄。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enables data collector for the test run. More info here : https://aka.ms/vstest-collect]]> - - ]D;]A; 為測試回合啟用資料收集器。此處有詳細資訊: https://aka.ms/vstest-collect]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The configuration the project is built for i.e. Debug/Release]]> - - ]D;]A; 建置專案標的組態,例如,偵錯/發行]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Example: /DisableAutoFakes:true]]> - - ]D;]A; 範例: /DisableAutoFakes:true]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Enable logs for test platform.]D;]A; Logs are written to the provided file.]D;]A;]D;]A; Change the trace level for logs as shown below]D;]A; Example: /Diag:;tracelevel=]D;]A; Allowed values for tracelevel: off, error, warning, info and verbose.]]> - - ]D;]A; 啟用測試平台的記錄檔。]D;]A; 記錄會寫入提供的檔案。]D;]A;]D;]A; 變更記錄檔的追蹤層級,如下所示]D;]A; 範例: /Diag:<日誌檔路徑>;tracelevel=<預設為 [詳細資訊]5D;>]D;]A; 允許的 tracelevel 值為: 關閉、錯誤、警告、資訊與詳細資訊。]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; 指定測試結果的記錄器。例如,使用 /logger:trx[;LogFileName=<預設為唯一的檔案名稱>]5D;,]D;]A; 將結果記錄至 Visual Studio 測試結果檔案 (TRX)]D;]A; 以指定的 LogFileName,在 TestResults 目錄中建立檔案。]D;]A;]D;]A; 變更主控台記錄器的記錄訊息詳細程度等級,如下所示]D;]A; 範例: /logger:console;verbosity=<預設為 "minimal">]D;]A; 詳細程度的允許值: quiet、minimal、normal 以及 detailed。]D;]A;]D;]A; 變更主控台記錄器的診斷等級前置詞,如下所示]D;]A; 範例: /logger:console;prefix=<預設為 "false">]D;]A; 主控台記錄器詳細資訊於此: https://aka.ms/console-logger]]> - - - - - - - ]D;]A; Specify a logger for test results. For example, to log results into a ]D;]A; Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]5D;]D;]A; Creates file in TestResults directory with given LogFileName.]D;]A;]D;]A; Change the verbosity level in log messages for console logger as shown below]D;]A; Example: /logger:console;verbosity=]D;]A; Allowed values for verbosity: quiet, minimal, normal and detailed.]D;]A;]D;]A; Change the diagnostic level prefix for console logger as shown below]D;]A; Example: /logger:console;prefix=]D;]A; More info on Console Logger here : https://aka.ms/console-logger]]> - - ]D;]A; 指定測試結果的記錄器。例如,使用 /logger:trx[;LogFileName=<預設為唯一的檔案名稱>]5D;,]D;]A; 將結果記錄至 Visual Studio 測試結果檔案 (TRX)]D;]A; 以指定的 LogFileName,在 TestResults 目錄中建立檔案。]D;]A;]D;]A; 變更主控台記錄器的記錄訊息詳細程度等級,如下所示]D;]A; 範例: /logger:console;verbosity=<預設為 "normal">]D;]A; 詳細程度的允許值: quiet、minimal、normal 以及 detailed。]D;]A;]D;]A; 變更主控台記錄器的診斷等級前置詞,如下所示]D;]A; 範例: /logger:console;prefix=<預設為 "false">]D;]A; 主控台記錄器詳細資訊於此: https://aka.ms/console-logger]]> - - - - - - - =]D;]A; Sets the value of an environment variable. Creates the variable if it does not exist, overrides if it does. This will imply /InIsolation switch and force the tests to be run in an isolated process.]D;]A; ]D;]A; This argument can be specified multiple times to provide multiple variables.]D;]A;]D;]A; Example: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - =]D;]A; 設定環境變數的值。若變數不存在,則加以建立;若有則予以覆寫。這表示 /InIsolation 會在隔離流程中將測試切換並強制執行。]D;]A; ]D;]A; 此引數可供多次指定,以提供多項變數。]D;]A;]D;]A; 範例: -e:VARIABLE1=VALUE1]D;]A; -e:ANOTHER_VARIABLE="VALUE WITH SPACES"]D;]A; -e:ANOTHER_VARIABLE="VALUE;seperated with;semicolons"]]> - - - - - - - - - - - - - - - - - - - - - - - - - vstest.console.exe tests.dll ]D;]A; To run tests with additional settings such as data collectors:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - vstest.console.exe tests.dll ]D;]A; 執行測試,同時附上像是資料收集器等其他設定:]D;]A; >vstest.console.exe tests.dll /Settings:Local.RunSettings]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target .Net Framework version to be used for test execution. ]D;]A; Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.]D;]A; Other supported values are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.]]> - - ]D;]A; 用於測試執行的目標.Net Framework 版本。 ]D;]A; 有效的值為 ".NETFramework,Version=v4.5.1"、".NETCoreApp,Version=v1.0" 等等。]D;]A; 其他支援的值為 Framework40、Framework45、FrameworkCore10 與 FrameworkUap10。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...]5D;]5D;]]> - - ...]5D;]5D;]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \", value=\"\")]]> - - \", value=\"\")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Lists all discovered tests from the given test container.]]> - - ]D;]A; 列出所有從指定測試容器探索到的測試。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; The directory containing the binaries to run.]]> - - ]D;]A; 包含要執行的二進位檔案的目錄。]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Process Id of the Parent Process responsible for launching current process.]]> - - ]D;]A; 負責啟動目前處理序的父處理序之處理序識別碼。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Target platform architecture to be used for test execution. ]D;]A; Valid values are x86, x64 and ARM.]]> - - ]D;]A; 用於測試執行的目標平台架構。]D;]A; 有效值為 x86、x64 和 ARM。]]> - - - - - - - - - - - - - - - - ]D;]A; The Port for socket connection and receiving the event messages.]]> - - ]D;]A; 通訊端連線以及接收事件訊息的連接埠。]]> - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Read response file for more options.]]> - - ]D;]A; 讀取回應檔以取得更多選項。]]> - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Settings to use when running tests.]]> - - ]D;]A; 執行測試時要使用的設定。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]D;]A; Run tests with names that match the provided values. To provide multiple]D;]A; values, separate them by commas.]D;]A; Examples: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - ]D;]A; 對名稱符合所提供值的項目執行測試。]D;]A; 若要提供多個值,請使用逗號將其分隔。]D;]A; 範例: /Tests:TestMethod1]D;]A; /Tests:TestMethod1,testMethod2]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .]]> - - 。]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - ]]> - - - - - - - - - - - - - - - - ]D;]A; Run tests that match the given expression.]D;]A; is of the format Operator[|&]5D;]D;]A; where Operator is one of =, != or ~ (Operator ~ has 'contains']D;]A; semantics and is applicable for string properties like DisplayName).]D;]A; Parenthesis () can be used to group sub-expressions.]D;]A; Examples: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - ]D;]A; 執行符合指定運算式的測試。]D;]A; 的格式為 Operator[|&]5D;]D;]A; 其中 Operator 是 =、!= 或 ~ 的其中之一 (運算子 ~ 具有 'contains']D;]A; 語意,且適用於 DisplayName 之類的字串屬性)。]D;]A; 您可以使用括號 () 來分組子運算式。]D;]A; 範例: /TestCaseFilter:"Priority=1"]D;]A; /TestCaseFilter:"(FullyQualifiedName~Nightly]D;]A; |Name=MyTestMethod)"]]> - - - - - - - = type.]D;]A; Examples: "Priority=1", "TestCategory=Nightly"]]> - - = 類型。]D;]A; 範例: "Priority=1", "TestCategory=Nightly"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/NuGet.config b/NuGet.config index 78723fa09a..3ae04ca9d3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,28 +5,29 @@ - - - - - + + + + - - - - + + - - + + + + - - + + + diff --git a/README.md b/README.md index 74b6ab2b98..4fe1745bd9 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,80 @@ -### VSTest -The Visual Studio Test Platform is an open and extensible test platform that enables running tests, collect diagnostics data and report results. The Test Platform supports running tests written in various test frameworks, and using a pluggable adapter model. Based on user-choice, the desired test framework and its corresponding adapter can be acquired as a vsix or as NuGet package as the case may be. Adapters can be written in terms of a public API exposed by the Test Platform. +# VSTest + +The Visual Studio Test Platform is an open and extensible test platform that runs tests, collects diagnostics data, and reports results. The Test Platform supports running tests written in various test frameworks, and using a pluggable adapter model. Based on user-choice, the desired test framework and its corresponding adapter can be acquired as a vsix or as NuGet package as the case may be. Adapters can be written in terms of a public API exposed by the Test Platform. The Test Platform currently ships as part Visual Studio 2019, and in the .NET Core Tools Preview 3. -### Build status +## Build status + [![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/Microsoft/vstest/microsoft.vstest.ci?branchName=main)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=935&branchName=main) -### Contributing +## Contributing + +**IMPORTANT: We only accept PRs for which exists a previously discussed and approved issue.** + There are many ways to contribute to VSTest + - [Submit issues](https://github.com/Microsoft/vstest/issues) and help verify fixes as they are checked in. -- Review the [source code changes](https://github.com/Microsoft/vstest/pulls). -- [Contribute features and fixes](https://github.com/Microsoft/vstest-docs/blob/main/docs/contribute.md). -- Contribute to the [documentation](https://github.com/Microsoft/vstest-docs). - -### Documentation -- [Test Platform Architecture](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0001-Test-Platform-Architecture.md) -- [Test Discovery Protocol](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0002-Test-Discovery-Protocol.md) -- [Test Execution Protocol](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0003-Test-Execution-Protocol.md) -- [Adapter Extensibility](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0004-Adapter-Extensibility.md) -- [Test Platform SDK](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0005-Test-Platform-SDK.md) -- [Editors API Specification](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0007-Editors-API-Specification.md) -- [Data collection Protocol](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0006-DataCollection-Protocol.md) -- [Translation Layer](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0008-TranslationLayer.md) -- [Editors API Revision Update](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0009-Editors-API-RevisionUpdate.md) -- [TranslationLayer](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0008-TranslationLayer.md) -- [Source Information For Discovered Tests](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0010-Source-Information-For-Discovered-Tests.md) -- [Test Session Timeout](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0011-Test-Session-Timeout.md) -- [Test Adapter Lookup](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0013-Test-Adapter-Lookup.md) -- [Packaging](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0014-Packaging.md) -- [Telemetry](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0015-Telemetry.md) -- [Loggers Information From RunSettings](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0016-Loggers-Information-From-RunSettings.md) -- [Properties for TestCases in Managed Code](https://github.com/microsoft/vstest-docs/blob/main/RFCs/0017-Managed-TestCase-Properties.md) -- [Skip Default Adapters](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0018-Skip-Default-Adapters.md) -- [Disable Appdomain While Running Tests](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0019-Disable-Appdomain-While-Running-Tests.md) -- [Improving Logic To Pass Sources To Adapters](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0020-Improving-Logic-To-Pass-Sources-To-Adapters.md) -- [Code Coverage for .Net Core](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0021-CodeCoverageForNetCore.md) -- [User Specified TestAdapter Lookup](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0022-User-Specified-TestAdapter-Lookup.md) -- [TestSettings Deprecation](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0023-TestSettings-Deprecation.md) -- [Blame Collector Options](https://github.com/Microsoft/vstest-docs/blob/main/RFCs/0024-Blame-Collector-Options.md) - -### Building +- Review the [open PRs](https://github.com/Microsoft/vstest/pulls). +- [Contribute features and fixes](./docs/contribute.md). +- Contribute to the documentation. + +NOTE: When adding a new public API, always add it directly to the `PublicAPI.Shipped.txt` file. This helps us ensure we are always considering potential breaking changes (even between successive commits of un-released version) and avoids the burden of the unshipped to shipped commit. + +## Documentation + +### Features + +- [Test Platform Architecture](./docs/RFCs/0001-Test-Platform-Architecture.md) +- [Test Discovery Protocol](./docs/RFCs/0002-Test-Discovery-Protocol.md) +- [Test Execution Protocol](./docs/RFCs/0003-Test-Execution-Protocol.md) +- [Adapter Extensibility](./docs/RFCs/0004-Adapter-Extensibility.md) +- [Test Platform SDK](./docs/RFCs/0005-Test-Platform-SDK.md) +- [Editors API Specification](./docs/RFCs/0007-Editors-API-Specification.md) +- [Data collection Protocol](./docs/RFCs/0006-DataCollection-Protocol.md) +- [Translation Layer](./docs/RFCs/0008-TranslationLayer.md) +- [Editors API Revision Update](./docs/RFCs/0009-Editors-API-RevisionUpdate.md) +- [TranslationLayer](./docs/RFCs/0008-TranslationLayer.md) +- [Source Information For Discovered Tests](./docs/RFCs/0010-Source-Information-For-Discovered-Tests.md) +- [Test Session Timeout](./docs/RFCs/0011-Test-Session-Timeout.md) +- [Test Adapter Lookup](./docs/RFCs/0013-Test-Adapter-Lookup.md) +- [Packaging](./docs/RFCs/0014-Packaging.md) +- [Telemetry](./docs/RFCs/0015-Telemetry.md) +- [Loggers Information From RunSettings](./docs/RFCs/0016-Loggers-Information-From-RunSettings.md) +- [Properties for TestCases in Managed Code](./docs/RFCs/0017-Managed-TestCase-Properties.md) +- [Skip Default Adapters](./docs/RFCs/0018-Skip-Default-Adapters.md) +- [Disable Appdomain While Running Tests](./docs/RFCs/0019-Disable-Appdomain-While-Running-Tests.md) +- [Improving Logic To Pass Sources To Adapters](./docs/RFCs/0020-Improving-Logic-To-Pass-Sources-To-Adapters.md) +- [Code Coverage for .Net Core](./docs/RFCs/0021-CodeCoverageForNetCore.md) +- [User Specified TestAdapter Lookup](./docs/RFCs/0022-User-Specified-TestAdapter-Lookup.md) +- [TestSettings Deprecation](./docs/RFCs/0023-TestSettings-Deprecation.md) +- [Blame Collector Options](./docs/RFCs/0024-Blame-Collector-Options.md) + +### Other + +- [Environment Variables](./docs/environment-variables.md) +- [Roadmap](./docs/releases.md) +- [Troubleshooting guide](./docs/troubleshooting.md) + +## Building + VSTest can be built from within Visual Studio or from the CLI. -- [Building with Visual Studio](https://github.com/Microsoft/vstest-docs/blob/main/docs/contribute.md#building-with-visual-studio) -- [Building with CLI, CI, Editors](https://github.com/Microsoft/vstest-docs/blob/main/docs/contribute.md#building-with-cli-ci-editors) -### Microsoft Open Source Code of Conduct +- [Building with Visual Studio](./docs/contribute.md#building-with-visual-studio) +- [Building with CLI, CI, Editors](./docs/contribute.md#building-with-cli-ci-editors) + +## Microsoft Open Source Code of Conduct + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. -### License -VSTest platform is licensed under the [MIT license](https://github.com/Microsoft/vstest/blob/main/LICENSE) +## License + +VSTest platform is licensed under the [MIT license](./LICENSE) + +## Issue Tracking -### Issue Tracking -Please see [issue tracking](https://github.com/Microsoft/vstest-docs/blob/main/issuetracking.md) for a description of the workflow we use to process issues. +Please see [issue tracking](./issuetracking.md) for a description of the workflow we use to process issues. -### Roadmap -For more information on shipped and upcoming features/enhancements please refer to our [Releases](https://github.com/Microsoft/vstest-docs/blob/main/docs/releases.md) and [Quarterly Checkin reports](https://github.com/Microsoft/vstest-docs/tree/main/Quarterly%20Checkins) +## Roadmap +For more information on shipped and upcoming features/enhancements please refer to our [Releases](./docs/releases.md). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..869fdfe2b2 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/THIRD-PARTY-NOTICES.txt b/THIRD-PARTY-NOTICES.txt new file mode 100644 index 0000000000..b7c3258db7 --- /dev/null +++ b/THIRD-PARTY-NOTICES.txt @@ -0,0 +1,51 @@ +VSTest uses third-party libraries or other resources that may be +distributed under licenses different than the VSTest software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention by posting an issue. + +The attached notices are provided for information only. + +License notice for SimpleJSON +------------------------------------- +https://github.com/Bunny83/SimpleJSON + +The MIT License (MIT) + +Copyright (c) 2012-2017 Markus Göbel (Bunny83) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for NuGet.Client (NuGet.Frameworks) +-------------------------------------------------- +Copyright (c) .NET Foundation and Contributors. + +All rights reserved. + + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +these files except in compliance with the License. You may obtain a copy of the +License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. \ No newline at end of file diff --git a/TestPlatform.sln b/TestPlatform.sln index fde613978a..6398540d95 100644 --- a/TestPlatform.sln +++ b/TestPlatform.sln @@ -8,6 +8,9 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CoreUtilities", "src\Microsoft.TestPlatform.CoreUtilities\Microsoft.TestPlatform.CoreUtilities.csproj", "{50C00046-0DA3-4B5C-9F6F-7BE1145E156A}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6}" + ProjectSection(SolutionItems) = preProject + test\.editorconfig = test\.editorconfig + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CoreUtilities.UnitTests", "test\Microsoft.TestPlatform.CoreUtilities.UnitTests\Microsoft.TestPlatform.CoreUtilities.UnitTests.csproj", "{01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}" EndProject @@ -43,8 +46,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Integration", "Integration" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{020E15EA-731F-4667-95AF-226671E0C3AE}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Performance", "Performance", "{595BE9C1-E10F-4E50-938A-E6C248D3F950}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Client.UnitTests", "test\Microsoft.TestPlatform.Client.UnitTests\Microsoft.TestPlatform.Client.UnitTests.csproj", "{0D59BA81-6279-4650-AEBB-4EA735C28A1A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Common.UnitTests", "test\Microsoft.TestPlatform.Common.UnitTests\Microsoft.TestPlatform.Common.UnitTests.csproj", "{DE730F17-7D5C-4D9D-B479-025024BF4F1D}" @@ -71,43 +72,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "perf", "perf", "{0D4DF78D-7 scripts\perf\perfconfig.csv = scripts\perf\perfconfig.csv EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{DED1590A-ED25-413B-8590-006A4DD5B2FD}" - ProjectSection(SolutionItems) = preProject - scripts\build\TestPlatform.Dependencies.props = scripts\build\TestPlatform.Dependencies.props - scripts\build\TestPlatform.Localization.targets = scripts\build\TestPlatform.Localization.targets - scripts\build\TestPlatform.Settings.targets = scripts\build\TestPlatform.Settings.targets - scripts\build\TestPlatform.targets = scripts\build\TestPlatform.targets - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330}" ProjectSection(SolutionItems) = preProject - scripts\build.ps1 = scripts\build.ps1 - scripts\build.sh = scripts\build.sh - scripts\PortableToFullPdb.ps1 = scripts\PortableToFullPdb.ps1 - scripts\stylecop.json = scripts\stylecop.json - scripts\stylecop.ruleset = scripts\stylecop.ruleset - scripts\stylecop.test.ruleset = scripts\stylecop.test.ruleset scripts\test.ps1 = scripts\test.ps1 scripts\test.sh = scripts\test.sh - scripts\verify-nupkgs.ps1 = scripts\verify-nupkgs.ps1 - scripts\verify-sign.ps1 = scripts\verify-sign.ps1 - scripts\vsts-prebuild.ps1 = scripts\vsts-prebuild.ps1 scripts\write-release-notes.ps1 = scripts\write-release-notes.ps1 EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E344E0A2-7715-4C7F-BAF7-D64EA94CB19B}" ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + azure-pipelines.yml = azure-pipelines.yml + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + global.json = global.json Nuget.config = Nuget.config + THIRD-PARTY-NOTICES.txt = THIRD-PARTY-NOTICES.txt EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.AcceptanceTests", "test\Microsoft.TestPlatform.AcceptanceTests\Microsoft.TestPlatform.AcceptanceTests.csproj", "{DD9382B5-5EC4-4B3D-BEB7-95423731AE29}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.SmokeTests", "test\Microsoft.TestPlatform.SmokeTests\Microsoft.TestPlatform.SmokeTests.csproj", "{156F8811-28BB-4EC7-87D9-434F10FB7DBE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.PerformanceTests", "test\Microsoft.TestPlatform.PerformanceTests\Microsoft.TestPlatform.PerformanceTests.csproj", "{A5B167ED-873A-4762-9326-5F43B8D3AFF6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.ObjectModel.PlatformTests", "test\Microsoft.TestPlatform.ObjectModel.PlatformTests\Microsoft.TestPlatform.ObjectModel.PlatformTests.csproj", "{107F28E1-6E91-4A06-8943-E5E5A7E4CA66}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Package", "Package", "{D27E1CB4-C641-4C6C-A140-EF5F6215AE29}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Build.UnitTests", "test\Microsoft.TestPlatform.Build.UnitTests\Microsoft.TestPlatform.Build.UnitTests.csproj", "{EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}" @@ -120,12 +102,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "datacollector.PlatformTests EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform", "Platform", "{7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "package", "src\package\package\package.csproj", "{E141A226-CC0A-4F26-BD17-4AE427D81C3B}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform", "Platform", "{376C19DE-31E2-4FF6-88FC-0D0D6233C999}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CommunicationUtilities.PlatformTests", "test\Microsoft.TestPlatform.CommunicationUtilities.PlatformTests\Microsoft.TestPlatform.CommunicationUtilities.PlatformTests.csproj", "{3E698655-0701-482E-9AA7-F956F6337FC7}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TranslationLayer.UnitTests", "test\TranslationLayer.UnitTests\TranslationLayer.UnitTests.csproj", "{7B48115A-B766-4B55-93A8-C08A42C37710}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.TestHostProvider.UnitTests", "test\Microsoft.TestPlatform.TestHostProvider.UnitTests\Microsoft.TestPlatform.TestHostProvider.UnitTests.csproj", "{FBF74C8F-695C-4967-84AC-358EEFB1376D}" @@ -144,10 +122,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataCollectors", "DataColle EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests", "test\DataCollectors\Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests\Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests.csproj", "{21DB138B-85B7-479E-91FE-01E0F972EC56}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vstest.console.PlatformTests", "test\vstest.console.PlatformTests\vstest.console.PlatformTests.csproj", "{8C068694-23A2-47A2-A0DD-DB82D0AF0142}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Common.PlatformTests", "test\Microsoft.TestPlatform.Common.PlatformTests\Microsoft.TestPlatform.Common.PlatformTests.csproj", "{24C7683D-2607-4901-B8EB-83A57E49E93D}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SettingsMigrator", "src\SettingsMigrator\SettingsMigrator.csproj", "{69F5FF81-5615-4F06-B83C-FCF979BB84CA}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SettingsMigrator.UnitTests", "test\SettingsMigrator.UnitTests\SettingsMigrator.UnitTests.csproj", "{E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}" @@ -170,671 +144,332 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DumpMinitool.x86", "src\Dat EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AttachVS", "src\AttachVS\AttachVS.csproj", "{8238A052-D626-49EB-A011-51DC6D0DBA30}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "playground", "playground", "{6CE2F530-582B-4695-A209-41065E103426}" + ProjectSection(SolutionItems) = preProject + playground\README.md = playground\README.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestPlatform.Playground", "playground\TestPlatform.Playground\TestPlatform.Playground.csproj", "{545A88D3-1AE2-4D39-9B7C-C691768AD17F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vstest.ProgrammerTests", "test\vstest.ProgrammerTests\vstest.ProgrammerTests.csproj", "{B1F84FD8-6150-4ECA-9AD7-C316E04E17D8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Intent", "test\Intent\Intent.csproj", "{BFBB35C9-6437-480A-8DCC-AE3700110E7D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Intent.Primitives", "test\Intent.Primitives\Intent.Primitives.csproj", "{29270853-90DC-4C39-9621-F47AE40A79B6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "testhost.arm64", "src\testhost.arm64\testhost.arm64.csproj", "{186069FE-E1E8-4DE1-BEA4-0FF1484D22D1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DumpMinitool.arm64", "src\DataCollectors\DumpMinitool.arm64\DumpMinitool.arm64.csproj", "{62E9D32B-B989-43CF-81A2-B38B3367FCA3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTest1", "playground\MSTest1\MSTest1.csproj", "{4DA57968-F547-4019-8381-03A218B6C385}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTest2", "playground\MSTest2\MSTest2.csproj", "{874841C0-DCB9-4678-A952-5E06286CA2B0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "datacollector.arm64", "src\datacollector.arm64\datacollector.arm64.csproj", "{D27C951E-1935-4D76-A0E5-A00D7829C654}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vstest.console.arm64", "src\vstest.console.arm64\vstest.console.arm64.csproj", "{AD0EB901-E227-42E0-B7AE-28C3150B9A8B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeCoverage", "src\package\Microsoft.CodeCoverage\Microsoft.CodeCoverage.csproj", "{AE13C83A-C01A-4C25-9A29-A440E014F998}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.NET.Test.Sdk", "src\package\Microsoft.NET.Test.Sdk\Microsoft.NET.Test.Sdk.csproj", "{B9340314-6A79-496C-8BF9-88F1F6E3F096}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CLI", "src\package\Microsoft.TestPlatform.CLI\Microsoft.TestPlatform.CLI.csproj", "{75054BFF-DC0F-4094-8F05-62776663DF0D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Internal.Uwp", "src\package\Microsoft.TestPlatform.Internal.Uwp\Microsoft.TestPlatform.Internal.Uwp.csproj", "{D7B948FC-C4E7-41A9-84A7-8F1A725458E3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Portable", "src\package\Microsoft.TestPlatform.Portable\Microsoft.TestPlatform.Portable.csproj", "{3162D387-7424-481A-9A1E-8193BF7FABE5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.TestHost", "src\package\Microsoft.TestPlatform.TestHost\Microsoft.TestPlatform.TestHost.csproj", "{9297D1FA-F9C0-42D2-84FA-06DA323357C9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "eng", "eng", "{DCCF71EC-14DB-4FB8-8F9E-2DFAB69D9F15}" + ProjectSection(SolutionItems) = preProject + eng\AfterSolutionBuild.targets = eng\AfterSolutionBuild.targets + eng\Analyzers.props = eng\Analyzers.props + eng\Publishing.props = eng\Publishing.props + eng\Signing.props = eng\Signing.props + eng\SourceBuild.props = eng\SourceBuild.props + eng\verify-nupkgs.ps1 = eng\verify-nupkgs.ps1 + eng\Versions.props = eng\Versions.props + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI", "src\package\Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI\Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI.csproj", "{A9470366-2CEB-4743-9B5D-1DD3C2C4D9EF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform", "src\package\Microsoft.TestPlatform\Microsoft.TestPlatform.csproj", "{4454139C-174A-4DD8-8E76-657D9F03BA09}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Acceptance.IntegrationTests", "test\Microsoft.TestPlatform.Acceptance.IntegrationTests\Microsoft.TestPlatform.Acceptance.IntegrationTests.csproj", "{450D5371-32A1-4667-987E-40D75F035233}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests", "test\Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests\Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests.csproj", "{E602AB2B-048F-4317-8A6B-A225C00173FA}" +EndProject Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{10b6ade1-f808-4612-801d-4452f5b52242}*SharedItemsImports = 5 - src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{27dfbd04-64b2-4f1b-82b2-006620cca6f8}*SharedItemsImports = 5 - src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{2c7ce1f8-e73e-4987-8023-b5a0ebac86e8}*SharedItemsImports = 5 - src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{71cb42ff-e750-4a3b-9c3a-ac938853cc89}*SharedItemsImports = 5 - src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{7f26eda3-c8c4-4b7f-a9b6-d278c2f40a13}*SharedItemsImports = 13 - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x64.ActiveCfg = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x64.Build.0 = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x86.ActiveCfg = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x86.Build.0 = Debug|Any CPU {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|Any CPU.ActiveCfg = Release|Any CPU {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|Any CPU.Build.0 = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x64.ActiveCfg = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x64.Build.0 = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x86.ActiveCfg = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x86.Build.0 = Release|Any CPU {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Debug|x64.Build.0 = Debug|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Debug|x86.Build.0 = Debug|Any CPU {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Release|Any CPU.ActiveCfg = Release|Any CPU {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Release|Any CPU.Build.0 = Release|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Release|x64.ActiveCfg = Release|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Release|x64.Build.0 = Release|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Release|x86.ActiveCfg = Release|Any CPU - {01409D95-A5F1-4EBE-94B1-909D5D2D0DC3}.Release|x86.Build.0 = Release|Any CPU {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x64.ActiveCfg = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x64.Build.0 = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x86.ActiveCfg = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x86.Build.0 = Debug|Any CPU {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|Any CPU.ActiveCfg = Release|Any CPU {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|Any CPU.Build.0 = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x64.ActiveCfg = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x64.Build.0 = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x86.ActiveCfg = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x86.Build.0 = Release|Any CPU {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x64.Build.0 = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x86.Build.0 = Debug|Any CPU {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|Any CPU.ActiveCfg = Release|Any CPU {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|Any CPU.Build.0 = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x64.ActiveCfg = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x64.Build.0 = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x86.ActiveCfg = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x86.Build.0 = Release|Any CPU {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x64.ActiveCfg = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x64.Build.0 = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x86.ActiveCfg = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x86.Build.0 = Debug|Any CPU {E19B5128-3469-492E-82E1-725631C4A68C}.Release|Any CPU.ActiveCfg = Release|Any CPU {E19B5128-3469-492E-82E1-725631C4A68C}.Release|Any CPU.Build.0 = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x64.ActiveCfg = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x64.Build.0 = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x86.ActiveCfg = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x86.Build.0 = Release|Any CPU {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x64.ActiveCfg = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x64.Build.0 = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x86.ActiveCfg = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x86.Build.0 = Debug|Any CPU {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|Any CPU.ActiveCfg = Release|Any CPU {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|Any CPU.Build.0 = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x64.ActiveCfg = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x64.Build.0 = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x86.ActiveCfg = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x86.Build.0 = Release|Any CPU {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x64.ActiveCfg = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x64.Build.0 = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x86.ActiveCfg = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x86.Build.0 = Debug|Any CPU {1621415E-7723-4F46-A589-4C4620C0751A}.Release|Any CPU.ActiveCfg = Release|Any CPU {1621415E-7723-4F46-A589-4C4620C0751A}.Release|Any CPU.Build.0 = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x64.ActiveCfg = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x64.Build.0 = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x86.ActiveCfg = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x86.Build.0 = Release|Any CPU {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x64.ActiveCfg = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x64.Build.0 = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x86.ActiveCfg = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x86.Build.0 = Debug|Any CPU {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|Any CPU.ActiveCfg = Release|Any CPU {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|Any CPU.Build.0 = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x64.ActiveCfg = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x64.Build.0 = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x86.ActiveCfg = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x86.Build.0 = Release|Any CPU {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x64.ActiveCfg = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x64.Build.0 = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x86.ActiveCfg = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x86.Build.0 = Debug|Any CPU {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|Any CPU.ActiveCfg = Release|Any CPU {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|Any CPU.Build.0 = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x64.ActiveCfg = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x64.Build.0 = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x86.ActiveCfg = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x86.Build.0 = Release|Any CPU {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|Any CPU.Build.0 = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x64.ActiveCfg = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x64.Build.0 = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x86.ActiveCfg = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x86.Build.0 = Debug|Any CPU {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|Any CPU.ActiveCfg = Release|Any CPU {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|Any CPU.Build.0 = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x64.ActiveCfg = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x64.Build.0 = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x86.ActiveCfg = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x86.Build.0 = Release|Any CPU {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x64.ActiveCfg = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x64.Build.0 = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x86.ActiveCfg = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x86.Build.0 = Debug|Any CPU {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|Any CPU.ActiveCfg = Release|Any CPU {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|Any CPU.Build.0 = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x64.ActiveCfg = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x64.Build.0 = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x86.ActiveCfg = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x86.Build.0 = Release|Any CPU {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x64.ActiveCfg = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x64.Build.0 = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x86.ActiveCfg = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x86.Build.0 = Debug|Any CPU {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|Any CPU.Build.0 = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x64.ActiveCfg = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x64.Build.0 = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x86.ActiveCfg = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x86.Build.0 = Release|Any CPU {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x64.ActiveCfg = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x64.Build.0 = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x86.ActiveCfg = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x86.Build.0 = Debug|Any CPU {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|Any CPU.ActiveCfg = Release|Any CPU {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|Any CPU.Build.0 = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x64.ActiveCfg = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x64.Build.0 = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x86.ActiveCfg = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x86.Build.0 = Release|Any CPU {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x64.ActiveCfg = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x64.Build.0 = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x86.ActiveCfg = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x86.Build.0 = Debug|Any CPU {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|Any CPU.ActiveCfg = Release|Any CPU {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|Any CPU.Build.0 = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x64.ActiveCfg = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x64.Build.0 = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x86.ActiveCfg = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x86.Build.0 = Release|Any CPU {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x64.ActiveCfg = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x64.Build.0 = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x86.ActiveCfg = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x86.Build.0 = Debug|Any CPU {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|Any CPU.ActiveCfg = Release|Any CPU {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|Any CPU.Build.0 = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x64.ActiveCfg = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x64.Build.0 = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x86.ActiveCfg = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x86.Build.0 = Release|Any CPU {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Debug|x64.ActiveCfg = Debug|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Debug|x64.Build.0 = Debug|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Debug|x86.ActiveCfg = Debug|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Debug|x86.Build.0 = Debug|Any CPU {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Release|Any CPU.ActiveCfg = Release|Any CPU {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Release|Any CPU.Build.0 = Release|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Release|x64.ActiveCfg = Release|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Release|x64.Build.0 = Release|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Release|x86.ActiveCfg = Release|Any CPU - {0D59BA81-6279-4650-AEBB-4EA735C28A1A}.Release|x86.Build.0 = Release|Any CPU {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Debug|x64.ActiveCfg = Debug|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Debug|x64.Build.0 = Debug|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Debug|x86.ActiveCfg = Debug|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Debug|x86.Build.0 = Debug|Any CPU {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Release|Any CPU.ActiveCfg = Release|Any CPU {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Release|Any CPU.Build.0 = Release|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Release|x64.ActiveCfg = Release|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Release|x64.Build.0 = Release|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Release|x86.ActiveCfg = Release|Any CPU - {DE730F17-7D5C-4D9D-B479-025024BF4F1D}.Release|x86.Build.0 = Release|Any CPU {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Debug|x64.ActiveCfg = Debug|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Debug|x64.Build.0 = Debug|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Debug|x86.ActiveCfg = Debug|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Debug|x86.Build.0 = Debug|Any CPU {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Release|Any CPU.ActiveCfg = Release|Any CPU {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Release|Any CPU.Build.0 = Release|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Release|x64.ActiveCfg = Release|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Release|x64.Build.0 = Release|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Release|x86.ActiveCfg = Release|Any CPU - {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545}.Release|x86.Build.0 = Release|Any CPU {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Debug|x64.ActiveCfg = Debug|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Debug|x64.Build.0 = Debug|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Debug|x86.ActiveCfg = Debug|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Debug|x86.Build.0 = Debug|Any CPU {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Release|Any CPU.ActiveCfg = Release|Any CPU {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Release|Any CPU.Build.0 = Release|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Release|x64.ActiveCfg = Release|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Release|x64.Build.0 = Release|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Release|x86.ActiveCfg = Release|Any CPU - {F582949D-8B92-47BD-9DD7-9F2BFCCC290C}.Release|x86.Build.0 = Release|Any CPU {376A7588-50DF-46CD-955B-0309F491D830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {376A7588-50DF-46CD-955B-0309F491D830}.Debug|Any CPU.Build.0 = Debug|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Debug|x64.ActiveCfg = Debug|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Debug|x64.Build.0 = Debug|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Debug|x86.ActiveCfg = Debug|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Debug|x86.Build.0 = Debug|Any CPU {376A7588-50DF-46CD-955B-0309F491D830}.Release|Any CPU.ActiveCfg = Release|Any CPU {376A7588-50DF-46CD-955B-0309F491D830}.Release|Any CPU.Build.0 = Release|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Release|x64.ActiveCfg = Release|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Release|x64.Build.0 = Release|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Release|x86.ActiveCfg = Release|Any CPU - {376A7588-50DF-46CD-955B-0309F491D830}.Release|x86.Build.0 = Release|Any CPU {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Debug|x64.ActiveCfg = Debug|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Debug|x64.Build.0 = Debug|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Debug|x86.ActiveCfg = Debug|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Debug|x86.Build.0 = Debug|Any CPU {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Release|Any CPU.ActiveCfg = Release|Any CPU {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Release|Any CPU.Build.0 = Release|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Release|x64.ActiveCfg = Release|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Release|x64.Build.0 = Release|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Release|x86.ActiveCfg = Release|Any CPU - {5DF3CF65-3E11-4639-964D-7BEB4109DCF9}.Release|x86.Build.0 = Release|Any CPU {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Debug|x64.ActiveCfg = Debug|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Debug|x64.Build.0 = Debug|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Debug|x86.ActiveCfg = Debug|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Debug|x86.Build.0 = Debug|Any CPU {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Release|Any CPU.ActiveCfg = Release|Any CPU {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Release|Any CPU.Build.0 = Release|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Release|x64.ActiveCfg = Release|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Release|x64.Build.0 = Release|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Release|x86.ActiveCfg = Release|Any CPU - {D3E8A13B-92EE-45A8-BB24-40EC3CC9DB34}.Release|x86.Build.0 = Release|Any CPU {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Debug|x64.ActiveCfg = Debug|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Debug|x64.Build.0 = Debug|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Debug|x86.ActiveCfg = Debug|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Debug|x86.Build.0 = Debug|Any CPU {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Release|Any CPU.Build.0 = Release|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Release|x64.ActiveCfg = Release|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Release|x64.Build.0 = Release|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Release|x86.ActiveCfg = Release|Any CPU - {9EFCEFB5-253E-4DE2-8A70-821D7B8189DF}.Release|x86.Build.0 = Release|Any CPU {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Debug|x64.Build.0 = Debug|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Debug|x86.Build.0 = Debug|Any CPU {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Release|Any CPU.ActiveCfg = Release|Any CPU {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Release|Any CPU.Build.0 = Release|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Release|x64.ActiveCfg = Release|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Release|x64.Build.0 = Release|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Release|x86.ActiveCfg = Release|Any CPU - {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0}.Release|x86.Build.0 = Release|Any CPU {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Debug|x64.ActiveCfg = Debug|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Debug|x64.Build.0 = Debug|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Debug|x86.ActiveCfg = Debug|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Debug|x86.Build.0 = Debug|Any CPU {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Release|Any CPU.ActiveCfg = Release|Any CPU {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Release|Any CPU.Build.0 = Release|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Release|x64.ActiveCfg = Release|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Release|x64.Build.0 = Release|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Release|x86.ActiveCfg = Release|Any CPU - {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03}.Release|x86.Build.0 = Release|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Debug|x64.Build.0 = Debug|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Debug|x86.ActiveCfg = Debug|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Debug|x86.Build.0 = Debug|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Release|Any CPU.Build.0 = Release|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Release|x64.ActiveCfg = Release|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Release|x64.Build.0 = Release|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Release|x86.ActiveCfg = Release|Any CPU - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29}.Release|x86.Build.0 = Release|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Debug|x64.ActiveCfg = Debug|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Debug|x64.Build.0 = Debug|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Debug|x86.ActiveCfg = Debug|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Debug|x86.Build.0 = Debug|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Release|Any CPU.Build.0 = Release|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Release|x64.ActiveCfg = Release|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Release|x64.Build.0 = Release|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Release|x86.ActiveCfg = Release|Any CPU - {156F8811-28BB-4EC7-87D9-434F10FB7DBE}.Release|x86.Build.0 = Release|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Debug|x64.ActiveCfg = Debug|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Debug|x64.Build.0 = Debug|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Debug|x86.ActiveCfg = Debug|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Debug|x86.Build.0 = Debug|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Release|Any CPU.Build.0 = Release|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Release|x64.ActiveCfg = Release|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Release|x64.Build.0 = Release|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Release|x86.ActiveCfg = Release|Any CPU - {A5B167ED-873A-4762-9326-5F43B8D3AFF6}.Release|x86.Build.0 = Release|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Debug|Any CPU.Build.0 = Debug|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Debug|x64.ActiveCfg = Debug|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Debug|x64.Build.0 = Debug|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Debug|x86.ActiveCfg = Debug|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Debug|x86.Build.0 = Debug|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Release|Any CPU.ActiveCfg = Release|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Release|Any CPU.Build.0 = Release|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Release|x64.ActiveCfg = Release|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Release|x64.Build.0 = Release|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Release|x86.ActiveCfg = Release|Any CPU - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66}.Release|x86.Build.0 = Release|Any CPU {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Debug|x64.ActiveCfg = Debug|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Debug|x64.Build.0 = Debug|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Debug|x86.ActiveCfg = Debug|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Debug|x86.Build.0 = Debug|Any CPU {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Release|Any CPU.ActiveCfg = Release|Any CPU {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Release|Any CPU.Build.0 = Release|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Release|x64.ActiveCfg = Release|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Release|x64.Build.0 = Release|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Release|x86.ActiveCfg = Release|Any CPU - {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E}.Release|x86.Build.0 = Release|Any CPU {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Debug|x64.ActiveCfg = Debug|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Debug|x64.Build.0 = Debug|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Debug|x86.ActiveCfg = Debug|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Debug|x86.Build.0 = Debug|Any CPU {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|Any CPU.ActiveCfg = Release|Any CPU {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|Any CPU.Build.0 = Release|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x64.ActiveCfg = Release|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x64.Build.0 = Release|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x86.ActiveCfg = Release|Any CPU - {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x86.Build.0 = Release|Any CPU {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x64.ActiveCfg = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x64.Build.0 = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x86.ActiveCfg = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x86.Build.0 = Debug|Any CPU {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|Any CPU.ActiveCfg = Release|Any CPU {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|Any CPU.Build.0 = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x64.ActiveCfg = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x64.Build.0 = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x86.ActiveCfg = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x86.Build.0 = Release|Any CPU {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x64.ActiveCfg = Debug|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x64.Build.0 = Debug|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x86.ActiveCfg = Debug|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x86.Build.0 = Debug|Any CPU {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|Any CPU.Build.0 = Release|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x64.ActiveCfg = Release|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x64.Build.0 = Release|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x86.ActiveCfg = Release|Any CPU - {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x86.Build.0 = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x64.ActiveCfg = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x64.Build.0 = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x86.ActiveCfg = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x86.Build.0 = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|Any CPU.Build.0 = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x64.ActiveCfg = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x64.Build.0 = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x86.ActiveCfg = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x86.Build.0 = Release|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Debug|x64.ActiveCfg = Debug|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Debug|x64.Build.0 = Debug|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Debug|x86.ActiveCfg = Debug|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Debug|x86.Build.0 = Debug|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Release|Any CPU.Build.0 = Release|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Release|x64.ActiveCfg = Release|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Release|x64.Build.0 = Release|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Release|x86.ActiveCfg = Release|Any CPU - {3E698655-0701-482E-9AA7-F956F6337FC7}.Release|x86.Build.0 = Release|Any CPU {7B48115A-B766-4B55-93A8-C08A42C37710}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B48115A-B766-4B55-93A8-C08A42C37710}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Debug|x64.ActiveCfg = Debug|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Debug|x64.Build.0 = Debug|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Debug|x86.ActiveCfg = Debug|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Debug|x86.Build.0 = Debug|Any CPU {7B48115A-B766-4B55-93A8-C08A42C37710}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B48115A-B766-4B55-93A8-C08A42C37710}.Release|Any CPU.Build.0 = Release|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Release|x64.ActiveCfg = Release|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Release|x64.Build.0 = Release|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Release|x86.ActiveCfg = Release|Any CPU - {7B48115A-B766-4B55-93A8-C08A42C37710}.Release|x86.Build.0 = Release|Any CPU {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Debug|x64.ActiveCfg = Debug|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Debug|x64.Build.0 = Debug|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Debug|x86.ActiveCfg = Debug|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Debug|x86.Build.0 = Debug|Any CPU {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Release|Any CPU.ActiveCfg = Release|Any CPU {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Release|Any CPU.Build.0 = Release|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Release|x64.ActiveCfg = Release|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Release|x64.Build.0 = Release|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Release|x86.ActiveCfg = Release|Any CPU - {FBF74C8F-695C-4967-84AC-358EEFB1376D}.Release|x86.Build.0 = Release|Any CPU {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x64.ActiveCfg = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x64.Build.0 = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x86.ActiveCfg = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x86.Build.0 = Debug|Any CPU {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|Any CPU.Build.0 = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x64.ActiveCfg = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x64.Build.0 = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x86.ActiveCfg = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x86.Build.0 = Release|Any CPU {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x64.ActiveCfg = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x64.Build.0 = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x86.ActiveCfg = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x86.Build.0 = Debug|Any CPU {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|Any CPU.ActiveCfg = Release|Any CPU {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|Any CPU.Build.0 = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x64.ActiveCfg = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x64.Build.0 = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x86.ActiveCfg = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x86.Build.0 = Release|Any CPU {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Debug|x64.ActiveCfg = Debug|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Debug|x64.Build.0 = Debug|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Debug|x86.ActiveCfg = Debug|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Debug|x86.Build.0 = Debug|Any CPU {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Release|Any CPU.ActiveCfg = Release|Any CPU {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Release|Any CPU.Build.0 = Release|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Release|x64.ActiveCfg = Release|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Release|x64.Build.0 = Release|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Release|x86.ActiveCfg = Release|Any CPU - {488675EC-C8BB-40E0-AD4F-91F623D548B3}.Release|x86.Build.0 = Release|Any CPU {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x64.ActiveCfg = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x64.Build.0 = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x86.ActiveCfg = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x86.Build.0 = Debug|Any CPU {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|Any CPU.ActiveCfg = Release|Any CPU {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|Any CPU.Build.0 = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x64.ActiveCfg = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x64.Build.0 = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x86.ActiveCfg = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x86.Build.0 = Release|Any CPU {21DB138B-85B7-479E-91FE-01E0F972EC56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21DB138B-85B7-479E-91FE-01E0F972EC56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Debug|x64.ActiveCfg = Debug|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Debug|x64.Build.0 = Debug|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Debug|x86.ActiveCfg = Debug|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Debug|x86.Build.0 = Debug|Any CPU {21DB138B-85B7-479E-91FE-01E0F972EC56}.Release|Any CPU.ActiveCfg = Release|Any CPU {21DB138B-85B7-479E-91FE-01E0F972EC56}.Release|Any CPU.Build.0 = Release|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Release|x64.ActiveCfg = Release|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Release|x64.Build.0 = Release|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Release|x86.ActiveCfg = Release|Any CPU - {21DB138B-85B7-479E-91FE-01E0F972EC56}.Release|x86.Build.0 = Release|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Debug|x64.ActiveCfg = Debug|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Debug|x64.Build.0 = Debug|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Debug|x86.ActiveCfg = Debug|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Debug|x86.Build.0 = Debug|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Release|Any CPU.Build.0 = Release|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Release|x64.ActiveCfg = Release|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Release|x64.Build.0 = Release|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Release|x86.ActiveCfg = Release|Any CPU - {8C068694-23A2-47A2-A0DD-DB82D0AF0142}.Release|x86.Build.0 = Release|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Debug|x64.ActiveCfg = Debug|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Debug|x64.Build.0 = Debug|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Debug|x86.ActiveCfg = Debug|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Debug|x86.Build.0 = Debug|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Release|Any CPU.Build.0 = Release|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Release|x64.ActiveCfg = Release|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Release|x64.Build.0 = Release|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Release|x86.ActiveCfg = Release|Any CPU - {24C7683D-2607-4901-B8EB-83A57E49E93D}.Release|x86.Build.0 = Release|Any CPU {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x64.ActiveCfg = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x64.Build.0 = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x86.ActiveCfg = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x86.Build.0 = Debug|Any CPU {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|Any CPU.ActiveCfg = Release|Any CPU {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|Any CPU.Build.0 = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x64.ActiveCfg = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x64.Build.0 = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x86.ActiveCfg = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x86.Build.0 = Release|Any CPU {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Debug|x64.ActiveCfg = Debug|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Debug|x64.Build.0 = Debug|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Debug|x86.Build.0 = Debug|Any CPU {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Release|Any CPU.ActiveCfg = Release|Any CPU {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Release|Any CPU.Build.0 = Release|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Release|x64.ActiveCfg = Release|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Release|x64.Build.0 = Release|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Release|x86.ActiveCfg = Release|Any CPU - {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E}.Release|x86.Build.0 = Release|Any CPU {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x64.ActiveCfg = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x64.Build.0 = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x86.ActiveCfg = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x86.Build.0 = Debug|Any CPU {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|Any CPU.ActiveCfg = Release|Any CPU {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|Any CPU.Build.0 = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x64.ActiveCfg = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x64.Build.0 = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x86.ActiveCfg = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x86.Build.0 = Release|Any CPU {41248B96-6E15-4E5E-A78F-859897676814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41248B96-6E15-4E5E-A78F-859897676814}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Debug|x64.ActiveCfg = Debug|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Debug|x64.Build.0 = Debug|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Debug|x86.ActiveCfg = Debug|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Debug|x86.Build.0 = Debug|Any CPU {41248B96-6E15-4E5E-A78F-859897676814}.Release|Any CPU.ActiveCfg = Release|Any CPU {41248B96-6E15-4E5E-A78F-859897676814}.Release|Any CPU.Build.0 = Release|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Release|x64.ActiveCfg = Release|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Release|x64.Build.0 = Release|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Release|x86.ActiveCfg = Release|Any CPU - {41248B96-6E15-4E5E-A78F-859897676814}.Release|x86.Build.0 = Release|Any CPU {074F5BD6-DC05-460B-B78F-044D125FD787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {074F5BD6-DC05-460B-B78F-044D125FD787}.Debug|Any CPU.Build.0 = Debug|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Debug|x64.ActiveCfg = Debug|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Debug|x64.Build.0 = Debug|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Debug|x86.ActiveCfg = Debug|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Debug|x86.Build.0 = Debug|Any CPU {074F5BD6-DC05-460B-B78F-044D125FD787}.Release|Any CPU.ActiveCfg = Release|Any CPU {074F5BD6-DC05-460B-B78F-044D125FD787}.Release|Any CPU.Build.0 = Release|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Release|x64.ActiveCfg = Release|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Release|x64.Build.0 = Release|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Release|x86.ActiveCfg = Release|Any CPU - {074F5BD6-DC05-460B-B78F-044D125FD787}.Release|x86.Build.0 = Release|Any CPU {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Debug|x64.ActiveCfg = Debug|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Debug|x64.Build.0 = Debug|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Debug|x86.ActiveCfg = Debug|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Debug|x86.Build.0 = Debug|Any CPU {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Release|Any CPU.ActiveCfg = Release|Any CPU {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Release|Any CPU.Build.0 = Release|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Release|x64.ActiveCfg = Release|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Release|x64.Build.0 = Release|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Release|x86.ActiveCfg = Release|Any CPU - {DCD0C39E-C78C-4A44-B0BD-7325254A2E97}.Release|x86.Build.0 = Release|Any CPU {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x64.ActiveCfg = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x64.Build.0 = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x86.ActiveCfg = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x86.Build.0 = Debug|Any CPU {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|Any CPU.ActiveCfg = Release|Any CPU {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|Any CPU.Build.0 = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x64.ActiveCfg = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x64.Build.0 = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x86.ActiveCfg = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x86.Build.0 = Release|Any CPU {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Debug|x64.ActiveCfg = Debug|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Debug|x64.Build.0 = Debug|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Debug|x86.ActiveCfg = Debug|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Debug|x86.Build.0 = Debug|Any CPU {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Release|Any CPU.ActiveCfg = Release|Any CPU {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Release|Any CPU.Build.0 = Release|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Release|x64.ActiveCfg = Release|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Release|x64.Build.0 = Release|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Release|x86.ActiveCfg = Release|Any CPU - {33A20B85-7024-4112-B1E7-00CD0E4A9F96}.Release|x86.Build.0 = Release|Any CPU {2C88C923-3D7A-4492-9241-7A489750CAB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2C88C923-3D7A-4492-9241-7A489750CAB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Debug|x64.ActiveCfg = Debug|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Debug|x64.Build.0 = Debug|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Debug|x86.ActiveCfg = Debug|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Debug|x86.Build.0 = Debug|Any CPU {2C88C923-3D7A-4492-9241-7A489750CAB7}.Release|Any CPU.ActiveCfg = Release|Any CPU {2C88C923-3D7A-4492-9241-7A489750CAB7}.Release|Any CPU.Build.0 = Release|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Release|x64.ActiveCfg = Release|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Release|x64.Build.0 = Release|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Release|x86.ActiveCfg = Release|Any CPU - {2C88C923-3D7A-4492-9241-7A489750CAB7}.Release|x86.Build.0 = Release|Any CPU {8238A052-D626-49EB-A011-51DC6D0DBA30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8238A052-D626-49EB-A011-51DC6D0DBA30}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Debug|x64.ActiveCfg = Debug|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Debug|x64.Build.0 = Debug|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Debug|x86.ActiveCfg = Debug|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Debug|x86.Build.0 = Debug|Any CPU {8238A052-D626-49EB-A011-51DC6D0DBA30}.Release|Any CPU.ActiveCfg = Release|Any CPU {8238A052-D626-49EB-A011-51DC6D0DBA30}.Release|Any CPU.Build.0 = Release|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Release|x64.ActiveCfg = Release|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Release|x64.Build.0 = Release|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Release|x86.ActiveCfg = Release|Any CPU - {8238A052-D626-49EB-A011-51DC6D0DBA30}.Release|x86.Build.0 = Release|Any CPU + {545A88D3-1AE2-4D39-9B7C-C691768AD17F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {545A88D3-1AE2-4D39-9B7C-C691768AD17F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {545A88D3-1AE2-4D39-9B7C-C691768AD17F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {545A88D3-1AE2-4D39-9B7C-C691768AD17F}.Release|Any CPU.Build.0 = Release|Any CPU + {B1F84FD8-6150-4ECA-9AD7-C316E04E17D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1F84FD8-6150-4ECA-9AD7-C316E04E17D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1F84FD8-6150-4ECA-9AD7-C316E04E17D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1F84FD8-6150-4ECA-9AD7-C316E04E17D8}.Release|Any CPU.Build.0 = Release|Any CPU + {BFBB35C9-6437-480A-8DCC-AE3700110E7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFBB35C9-6437-480A-8DCC-AE3700110E7D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFBB35C9-6437-480A-8DCC-AE3700110E7D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFBB35C9-6437-480A-8DCC-AE3700110E7D}.Release|Any CPU.Build.0 = Release|Any CPU + {29270853-90DC-4C39-9621-F47AE40A79B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29270853-90DC-4C39-9621-F47AE40A79B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29270853-90DC-4C39-9621-F47AE40A79B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29270853-90DC-4C39-9621-F47AE40A79B6}.Release|Any CPU.Build.0 = Release|Any CPU + {186069FE-E1E8-4DE1-BEA4-0FF1484D22D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {186069FE-E1E8-4DE1-BEA4-0FF1484D22D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {186069FE-E1E8-4DE1-BEA4-0FF1484D22D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {186069FE-E1E8-4DE1-BEA4-0FF1484D22D1}.Release|Any CPU.Build.0 = Release|Any CPU + {62E9D32B-B989-43CF-81A2-B38B3367FCA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62E9D32B-B989-43CF-81A2-B38B3367FCA3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62E9D32B-B989-43CF-81A2-B38B3367FCA3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62E9D32B-B989-43CF-81A2-B38B3367FCA3}.Release|Any CPU.Build.0 = Release|Any CPU + {4DA57968-F547-4019-8381-03A218B6C385}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4DA57968-F547-4019-8381-03A218B6C385}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4DA57968-F547-4019-8381-03A218B6C385}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4DA57968-F547-4019-8381-03A218B6C385}.Release|Any CPU.Build.0 = Release|Any CPU + {874841C0-DCB9-4678-A952-5E06286CA2B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {874841C0-DCB9-4678-A952-5E06286CA2B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {874841C0-DCB9-4678-A952-5E06286CA2B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {874841C0-DCB9-4678-A952-5E06286CA2B0}.Release|Any CPU.Build.0 = Release|Any CPU + {D27C951E-1935-4D76-A0E5-A00D7829C654}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D27C951E-1935-4D76-A0E5-A00D7829C654}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D27C951E-1935-4D76-A0E5-A00D7829C654}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D27C951E-1935-4D76-A0E5-A00D7829C654}.Release|Any CPU.Build.0 = Release|Any CPU + {AD0EB901-E227-42E0-B7AE-28C3150B9A8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD0EB901-E227-42E0-B7AE-28C3150B9A8B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD0EB901-E227-42E0-B7AE-28C3150B9A8B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD0EB901-E227-42E0-B7AE-28C3150B9A8B}.Release|Any CPU.Build.0 = Release|Any CPU + {AE13C83A-C01A-4C25-9A29-A440E014F998}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE13C83A-C01A-4C25-9A29-A440E014F998}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE13C83A-C01A-4C25-9A29-A440E014F998}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE13C83A-C01A-4C25-9A29-A440E014F998}.Release|Any CPU.Build.0 = Release|Any CPU + {B9340314-6A79-496C-8BF9-88F1F6E3F096}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9340314-6A79-496C-8BF9-88F1F6E3F096}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9340314-6A79-496C-8BF9-88F1F6E3F096}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9340314-6A79-496C-8BF9-88F1F6E3F096}.Release|Any CPU.Build.0 = Release|Any CPU + {75054BFF-DC0F-4094-8F05-62776663DF0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75054BFF-DC0F-4094-8F05-62776663DF0D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75054BFF-DC0F-4094-8F05-62776663DF0D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75054BFF-DC0F-4094-8F05-62776663DF0D}.Release|Any CPU.Build.0 = Release|Any CPU + {D7B948FC-C4E7-41A9-84A7-8F1A725458E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D7B948FC-C4E7-41A9-84A7-8F1A725458E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D7B948FC-C4E7-41A9-84A7-8F1A725458E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D7B948FC-C4E7-41A9-84A7-8F1A725458E3}.Release|Any CPU.Build.0 = Release|Any CPU + {3162D387-7424-481A-9A1E-8193BF7FABE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3162D387-7424-481A-9A1E-8193BF7FABE5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3162D387-7424-481A-9A1E-8193BF7FABE5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3162D387-7424-481A-9A1E-8193BF7FABE5}.Release|Any CPU.Build.0 = Release|Any CPU + {9297D1FA-F9C0-42D2-84FA-06DA323357C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9297D1FA-F9C0-42D2-84FA-06DA323357C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9297D1FA-F9C0-42D2-84FA-06DA323357C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9297D1FA-F9C0-42D2-84FA-06DA323357C9}.Release|Any CPU.Build.0 = Release|Any CPU + {A9470366-2CEB-4743-9B5D-1DD3C2C4D9EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9470366-2CEB-4743-9B5D-1DD3C2C4D9EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9470366-2CEB-4743-9B5D-1DD3C2C4D9EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9470366-2CEB-4743-9B5D-1DD3C2C4D9EF}.Release|Any CPU.Build.0 = Release|Any CPU + {4454139C-174A-4DD8-8E76-657D9F03BA09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4454139C-174A-4DD8-8E76-657D9F03BA09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4454139C-174A-4DD8-8E76-657D9F03BA09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4454139C-174A-4DD8-8E76-657D9F03BA09}.Release|Any CPU.Build.0 = Release|Any CPU + {450D5371-32A1-4667-987E-40D75F035233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {450D5371-32A1-4667-987E-40D75F035233}.Debug|Any CPU.Build.0 = Debug|Any CPU + {450D5371-32A1-4667-987E-40D75F035233}.Release|Any CPU.ActiveCfg = Release|Any CPU + {450D5371-32A1-4667-987E-40D75F035233}.Release|Any CPU.Build.0 = Release|Any CPU + {E602AB2B-048F-4317-8A6B-A225C00173FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E602AB2B-048F-4317-8A6B-A225C00173FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E602AB2B-048F-4317-8A6B-A225C00173FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E602AB2B-048F-4317-8A6B-A225C00173FA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -858,7 +493,6 @@ Global {10B6ADE1-F808-4612-801D-4452F5B52242} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} {46250E12-4CF1-4051-B4A7-80C8C06E0068} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {020E15EA-731F-4667-95AF-226671E0C3AE} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} - {595BE9C1-E10F-4E50-938A-E6C248D3F950} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {0D59BA81-6279-4650-AEBB-4EA735C28A1A} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {DE730F17-7D5C-4D9D-B479-025024BF4F1D} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} {E062FFD6-DEB1-4DB4-8B6E-ADBF04129545} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} @@ -870,21 +504,13 @@ Global {3A8080FB-9C93-45B9-8EB5-828DDC31FDF0} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {BFF7714C-E5A3-4EEB-B04B-5FA47F29AD03} = {020E15EA-731F-4667-95AF-226671E0C3AE} {0D4DF78D-7E5F-4516-B19F-E6AA71A1DBF4} = {EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330} - {DED1590A-ED25-413B-8590-006A4DD5B2FD} = {EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330} - {E344E0A2-7715-4C7F-BAF7-D64EA94CB19B} = {EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330} - {DD9382B5-5EC4-4B3D-BEB7-95423731AE29} = {46250E12-4CF1-4051-B4A7-80C8C06E0068} - {156F8811-28BB-4EC7-87D9-434F10FB7DBE} = {46250E12-4CF1-4051-B4A7-80C8C06E0068} - {A5B167ED-873A-4762-9326-5F43B8D3AFF6} = {595BE9C1-E10F-4E50-938A-E6C248D3F950} - {107F28E1-6E91-4A06-8943-E5E5A7E4CA66} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} {EFA38DEF-C2BB-42AE-8B68-B31D79F3107E} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {CAE652AF-6801-425E-AAF3-AB20DE7DF88E} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} {FF80D706-8309-4E02-BAC0-D28B4CBCF600} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {E141A226-CC0A-4F26-BD17-4AE427D81C3B} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} {376C19DE-31E2-4FF6-88FC-0D0D6233C999} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} - {3E698655-0701-482E-9AA7-F956F6337FC7} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} {7B48115A-B766-4B55-93A8-C08A42C37710} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {FBF74C8F-695C-4967-84AC-358EEFB1376D} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {11ECCB8B-6958-42A7-BD58-88C09CB149B2} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} @@ -894,8 +520,6 @@ Global {65A25D6E-C9CC-4F45-8925-04087AC82634} = {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} {D9A30E32-D466-4EC5-B4F2-62E17562279B} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {21DB138B-85B7-479E-91FE-01E0F972EC56} = {D9A30E32-D466-4EC5-B4F2-62E17562279B} - {8C068694-23A2-47A2-A0DD-DB82D0AF0142} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} - {24C7683D-2607-4901-B8EB-83A57E49E93D} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} {69F5FF81-5615-4F06-B83C-FCF979BB84CA} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} {E7D4921C-F12D-4E1C-85AC-8B7F91C59B0E} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} {236A71E3-01DA-4679-9DFF-16A8E079ACFF} = {5E7F18A8-F843-4C8A-AB02-4C7D9205C6CF} @@ -907,8 +531,40 @@ Global {33A20B85-7024-4112-B1E7-00CD0E4A9F96} = {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} {2C88C923-3D7A-4492-9241-7A489750CAB7} = {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} {8238A052-D626-49EB-A011-51DC6D0DBA30} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} + {545A88D3-1AE2-4D39-9B7C-C691768AD17F} = {6CE2F530-582B-4695-A209-41065E103426} + {B1F84FD8-6150-4ECA-9AD7-C316E04E17D8} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} + {BFBB35C9-6437-480A-8DCC-AE3700110E7D} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} + {29270853-90DC-4C39-9621-F47AE40A79B6} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6} + {186069FE-E1E8-4DE1-BEA4-0FF1484D22D1} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} + {62E9D32B-B989-43CF-81A2-B38B3367FCA3} = {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} + {4DA57968-F547-4019-8381-03A218B6C385} = {6CE2F530-582B-4695-A209-41065E103426} + {874841C0-DCB9-4678-A952-5E06286CA2B0} = {6CE2F530-582B-4695-A209-41065E103426} + {D27C951E-1935-4D76-A0E5-A00D7829C654} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} + {AD0EB901-E227-42E0-B7AE-28C3150B9A8B} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} + {AE13C83A-C01A-4C25-9A29-A440E014F998} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} + {B9340314-6A79-496C-8BF9-88F1F6E3F096} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {75054BFF-DC0F-4094-8F05-62776663DF0D} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {D7B948FC-C4E7-41A9-84A7-8F1A725458E3} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {3162D387-7424-481A-9A1E-8193BF7FABE5} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {9297D1FA-F9C0-42D2-84FA-06DA323357C9} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {DCCF71EC-14DB-4FB8-8F9E-2DFAB69D9F15} = {E344E0A2-7715-4C7F-BAF7-D64EA94CB19B} + {A9470366-2CEB-4743-9B5D-1DD3C2C4D9EF} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {4454139C-174A-4DD8-8E76-657D9F03BA09} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} + {450D5371-32A1-4667-987E-40D75F035233} = {46250E12-4CF1-4051-B4A7-80C8C06E0068} + {E602AB2B-048F-4317-8A6B-A225C00173FA} = {376C19DE-31E2-4FF6-88FC-0D0D6233C999} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0541B30C-FF51-4E28-B172-83F5F3934BCD} EndGlobalSection + GlobalSection(SharedMSBuildProjectFiles) = preSolution + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{10b6ade1-f808-4612-801d-4452f5b52242}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{186069fe-e1e8-4de1-bea4-0ff1484d22d1}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{27dfbd04-64b2-4f1b-82b2-006620cca6f8}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{2c7ce1f8-e73e-4987-8023-b5a0ebac86e8}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{71cb42ff-e750-4a3b-9c3a-ac938853cc89}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{76d4bb7e-d981-42d5-be96-6fad8def9a4a}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{7f26eda3-c8c4-4b7f-a9b6-d278c2f40a13}*SharedItemsImports = 13 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{ad0eb901-e227-42e0-b7ae-28c3150b9a8b}*SharedItemsImports = 5 + src\Microsoft.TestPlatform.Execution.Shared\Microsoft.TestPlatform.Execution.Shared.projitems*{d27c951e-1935-4d76-a0e5-a00d7829c654}*SharedItemsImports = 5 + EndGlobalSection EndGlobal diff --git a/TestPlatform_BuildFromSource.sln b/TestPlatform_BuildFromSource.sln deleted file mode 100644 index 119f72a337..0000000000 --- a/TestPlatform_BuildFromSource.sln +++ /dev/null @@ -1,407 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31314.256 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED0C35EB-7F31-4841-A24F-8EB708FFA959}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CoreUtilities", "src\Microsoft.TestPlatform.CoreUtilities\Microsoft.TestPlatform.CoreUtilities.csproj", "{50C00046-0DA3-4B5C-9F6F-7BE1145E156A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "datacollector", "src\datacollector\datacollector.csproj", "{2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Build", "src\Microsoft.TestPlatform.Build\Microsoft.TestPlatform.Build.csproj", "{6F5EC38C-4A11-40D3-827C-F607B90BEFF0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{5E7F18A8-F843-4C8A-AB02-4C7D9205C6CF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Client", "src\Microsoft.TestPlatform.Client\Microsoft.TestPlatform.Client.csproj", "{E19B5128-3469-492E-82E1-725631C4A68C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Common", "src\Microsoft.TestPlatform.Common\Microsoft.TestPlatform.Common.csproj", "{68ADC720-316E-4895-9F8E-C3CCADD262BE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CommunicationUtilities", "src\Microsoft.TestPlatform.CommunicationUtilities\Microsoft.TestPlatform.CommunicationUtilities.csproj", "{1621415E-7723-4F46-A589-4C4620C0751A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.CrossPlatEngine", "src\Microsoft.TestPlatform.CrossPlatEngine\Microsoft.TestPlatform.CrossPlatEngine.csproj", "{987898D9-724E-4324-BF91-77B1A6DBE8F1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.ObjectModel", "src\Microsoft.TestPlatform.ObjectModel\Microsoft.TestPlatform.ObjectModel.csproj", "{FD63F778-3938-45D2-900B-51EC770F70E5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Utilities", "src\Microsoft.TestPlatform.Utilities\Microsoft.TestPlatform.Utilities.csproj", "{61F7F446-9EF3-4768-B33A-4D75F60E1059}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Extensions.TrxLogger", "src\Microsoft.TestPlatform.Extensions.TrxLogger\Microsoft.TestPlatform.Extensions.TrxLogger.csproj", "{D5296435-3A3F-4B1A-81D1-434EC9E97DEF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.VsTestConsole.TranslationLayer", "src\Microsoft.TestPlatform.VsTestConsole.TranslationLayer\Microsoft.TestPlatform.VsTestConsole.TranslationLayer.csproj", "{790B8030-00C2-4121-B125-EDC4CE329BA3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "testhost", "src\testhost\testhost.csproj", "{27DFBD04-64B2-4F1B-82B2-006620CCA6F8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "testhost.x86", "src\testhost.x86\testhost.x86.csproj", "{71CB42FF-E750-4A3B-9C3A-AC938853CC89}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vstest.console", "src\vstest.console\vstest.console.csproj", "{10B6ADE1-F808-4612-801D-4452F5B52242}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "perf", "perf", "{0D4DF78D-7E5F-4516-B19F-E6AA71A1DBF4}" - ProjectSection(SolutionItems) = preProject - scripts\perf\perf.ps1 = scripts\perf\perf.ps1 - scripts\perf\perfconfig.csv = scripts\perf\perfconfig.csv - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{DED1590A-ED25-413B-8590-006A4DD5B2FD}" - ProjectSection(SolutionItems) = preProject - scripts\build\TestPlatform.Dependencies.props = scripts\build\TestPlatform.Dependencies.props - scripts\build\TestPlatform.Localization.targets = scripts\build\TestPlatform.Localization.targets - scripts\build\TestPlatform.Settings.targets = scripts\build\TestPlatform.Settings.targets - scripts\build\TestPlatform.targets = scripts\build\TestPlatform.targets - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330}" - ProjectSection(SolutionItems) = preProject - scripts\build.ps1 = scripts\build.ps1 - scripts\build.sh = scripts\build.sh - scripts\PortableToFullPdb.ps1 = scripts\PortableToFullPdb.ps1 - scripts\stylecop.json = scripts\stylecop.json - scripts\stylecop.ruleset = scripts\stylecop.ruleset - scripts\stylecop.test.ruleset = scripts\stylecop.test.ruleset - scripts\test.ps1 = scripts\test.ps1 - scripts\test.sh = scripts\test.sh - scripts\verify-nupkgs.ps1 = scripts\verify-nupkgs.ps1 - scripts\verify-sign.ps1 = scripts\verify-sign.ps1 - scripts\vsts-prebuild.ps1 = scripts\vsts-prebuild.ps1 - scripts\write-release-notes.ps1 = scripts\write-release-notes.ps1 - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E344E0A2-7715-4C7F-BAF7-D64EA94CB19B}" - ProjectSection(SolutionItems) = preProject - Nuget.config = Nuget.config - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Package", "Package", "{D27E1CB4-C641-4C6C-A140-EF5F6215AE29}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.PlatformAbstractions", "src\Microsoft.TestPlatform.PlatformAbstractions\Microsoft.TestPlatform.PlatformAbstractions.csproj", "{CAE652AF-6801-425E-AAF3-AB20DE7DF88E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform", "Platform", "{7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "package", "src\package\package\package.csproj", "{E141A226-CC0A-4F26-BD17-4AE427D81C3B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.TestHostProvider", "src\Microsoft.TestPlatform.TestHostProvider\Microsoft.TestPlatform.TestHostProvider.csproj", "{11ECCB8B-6958-42A7-BD58-88C09CB149B2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Extensions.BlameDataCollector", "src\Microsoft.TestPlatform.Extensions.BlameDataCollector\Microsoft.TestPlatform.Extensions.BlameDataCollector.csproj", "{76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataCollectors", "DataCollectors", "{B705537C-B82C-4A30-AFA5-6244D9A7DAEB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Extensions.EventLogCollector", "src\DataCollectors\Microsoft.TestPlatform.Extensions.EventLogCollector\Microsoft.TestPlatform.Extensions.EventLogCollector.csproj", "{65A25D6E-C9CC-4F45-8925-04087AC82634}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SettingsMigrator", "src\SettingsMigrator\SettingsMigrator.csproj", "{69F5FF81-5615-4F06-B83C-FCF979BB84CA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Extensions.HtmlLogger", "src\Microsoft.TestPlatform.Extensions.HtmlLogger\Microsoft.TestPlatform.Extensions.HtmlLogger.csproj", "{236A71E3-01DA-4679-9DFF-16A8E079ACFF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.AdapterUtilities", "src\Microsoft.TestPlatform.AdapterUtilities\Microsoft.TestPlatform.AdapterUtilities.csproj", "{2DE99835-A3A3-4922-82AD-6D10D284816D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x64.ActiveCfg = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x64.Build.0 = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x86.ActiveCfg = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Debug|x86.Build.0 = Debug|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|Any CPU.Build.0 = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x64.ActiveCfg = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x64.Build.0 = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x86.ActiveCfg = Release|Any CPU - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A}.Release|x86.Build.0 = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x64.ActiveCfg = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x64.Build.0 = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x86.ActiveCfg = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Debug|x86.Build.0 = Debug|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|Any CPU.Build.0 = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x64.ActiveCfg = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x64.Build.0 = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x86.ActiveCfg = Release|Any CPU - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8}.Release|x86.Build.0 = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x64.Build.0 = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Debug|x86.Build.0 = Debug|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|Any CPU.Build.0 = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x64.ActiveCfg = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x64.Build.0 = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x86.ActiveCfg = Release|Any CPU - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0}.Release|x86.Build.0 = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x64.ActiveCfg = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x64.Build.0 = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x86.ActiveCfg = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Debug|x86.Build.0 = Debug|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|Any CPU.Build.0 = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x64.ActiveCfg = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x64.Build.0 = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x86.ActiveCfg = Release|Any CPU - {E19B5128-3469-492E-82E1-725631C4A68C}.Release|x86.Build.0 = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x64.ActiveCfg = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x64.Build.0 = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x86.ActiveCfg = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Debug|x86.Build.0 = Debug|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|Any CPU.Build.0 = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x64.ActiveCfg = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x64.Build.0 = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x86.ActiveCfg = Release|Any CPU - {68ADC720-316E-4895-9F8E-C3CCADD262BE}.Release|x86.Build.0 = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x64.ActiveCfg = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x64.Build.0 = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x86.ActiveCfg = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Debug|x86.Build.0 = Debug|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|Any CPU.Build.0 = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x64.ActiveCfg = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x64.Build.0 = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x86.ActiveCfg = Release|Any CPU - {1621415E-7723-4F46-A589-4C4620C0751A}.Release|x86.Build.0 = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x64.ActiveCfg = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x64.Build.0 = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x86.ActiveCfg = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Debug|x86.Build.0 = Debug|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|Any CPU.Build.0 = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x64.ActiveCfg = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x64.Build.0 = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x86.ActiveCfg = Release|Any CPU - {987898D9-724E-4324-BF91-77B1A6DBE8F1}.Release|x86.Build.0 = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x64.ActiveCfg = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x64.Build.0 = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x86.ActiveCfg = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Debug|x86.Build.0 = Debug|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|Any CPU.Build.0 = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x64.ActiveCfg = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x64.Build.0 = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x86.ActiveCfg = Release|Any CPU - {FD63F778-3938-45D2-900B-51EC770F70E5}.Release|x86.Build.0 = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|Any CPU.Build.0 = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x64.ActiveCfg = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x64.Build.0 = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x86.ActiveCfg = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Debug|x86.Build.0 = Debug|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|Any CPU.ActiveCfg = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|Any CPU.Build.0 = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x64.ActiveCfg = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x64.Build.0 = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x86.ActiveCfg = Release|Any CPU - {61F7F446-9EF3-4768-B33A-4D75F60E1059}.Release|x86.Build.0 = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x64.ActiveCfg = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x64.Build.0 = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x86.ActiveCfg = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Debug|x86.Build.0 = Debug|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|Any CPU.Build.0 = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x64.ActiveCfg = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x64.Build.0 = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x86.ActiveCfg = Release|Any CPU - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF}.Release|x86.Build.0 = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x64.ActiveCfg = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x64.Build.0 = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x86.ActiveCfg = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Debug|x86.Build.0 = Debug|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|Any CPU.Build.0 = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x64.ActiveCfg = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x64.Build.0 = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x86.ActiveCfg = Release|Any CPU - {790B8030-00C2-4121-B125-EDC4CE329BA3}.Release|x86.Build.0 = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x64.ActiveCfg = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x64.Build.0 = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x86.ActiveCfg = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Debug|x86.Build.0 = Debug|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|Any CPU.Build.0 = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x64.ActiveCfg = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x64.Build.0 = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x86.ActiveCfg = Release|Any CPU - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8}.Release|x86.Build.0 = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x64.ActiveCfg = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x64.Build.0 = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x86.ActiveCfg = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Debug|x86.Build.0 = Debug|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|Any CPU.Build.0 = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x64.ActiveCfg = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x64.Build.0 = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x86.ActiveCfg = Release|Any CPU - {71CB42FF-E750-4A3B-9C3A-AC938853CC89}.Release|x86.Build.0 = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x64.ActiveCfg = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x64.Build.0 = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x86.ActiveCfg = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Debug|x86.Build.0 = Debug|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|Any CPU.Build.0 = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x64.ActiveCfg = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x64.Build.0 = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x86.ActiveCfg = Release|Any CPU - {10B6ADE1-F808-4612-801D-4452F5B52242}.Release|x86.Build.0 = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x64.ActiveCfg = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x64.Build.0 = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x86.ActiveCfg = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Debug|x86.Build.0 = Debug|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|Any CPU.Build.0 = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x64.ActiveCfg = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x64.Build.0 = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x86.ActiveCfg = Release|Any CPU - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E}.Release|x86.Build.0 = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x64.ActiveCfg = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x64.Build.0 = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x86.ActiveCfg = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Debug|x86.Build.0 = Debug|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|Any CPU.Build.0 = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x64.ActiveCfg = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x64.Build.0 = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x86.ActiveCfg = Release|Any CPU - {E141A226-CC0A-4F26-BD17-4AE427D81C3B}.Release|x86.Build.0 = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x64.ActiveCfg = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x64.Build.0 = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x86.ActiveCfg = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Debug|x86.Build.0 = Debug|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|Any CPU.Build.0 = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x64.ActiveCfg = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x64.Build.0 = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x86.ActiveCfg = Release|Any CPU - {11ECCB8B-6958-42A7-BD58-88C09CB149B2}.Release|x86.Build.0 = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x64.ActiveCfg = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x64.Build.0 = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x86.ActiveCfg = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Debug|x86.Build.0 = Debug|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|Any CPU.Build.0 = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x64.ActiveCfg = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x64.Build.0 = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x86.ActiveCfg = Release|Any CPU - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A}.Release|x86.Build.0 = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x64.ActiveCfg = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x64.Build.0 = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x86.ActiveCfg = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Debug|x86.Build.0 = Debug|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|Any CPU.Build.0 = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x64.ActiveCfg = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x64.Build.0 = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x86.ActiveCfg = Release|Any CPU - {65A25D6E-C9CC-4F45-8925-04087AC82634}.Release|x86.Build.0 = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x64.ActiveCfg = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x64.Build.0 = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x86.ActiveCfg = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Debug|x86.Build.0 = Debug|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|Any CPU.Build.0 = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x64.ActiveCfg = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x64.Build.0 = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x86.ActiveCfg = Release|Any CPU - {69F5FF81-5615-4F06-B83C-FCF979BB84CA}.Release|x86.Build.0 = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x64.ActiveCfg = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x64.Build.0 = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x86.ActiveCfg = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Debug|x86.Build.0 = Debug|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|Any CPU.Build.0 = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x64.ActiveCfg = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x64.Build.0 = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x86.ActiveCfg = Release|Any CPU - {236A71E3-01DA-4679-9DFF-16A8E079ACFF}.Release|x86.Build.0 = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x64.ActiveCfg = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x64.Build.0 = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x86.ActiveCfg = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Debug|x86.Build.0 = Debug|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|Any CPU.Build.0 = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x64.ActiveCfg = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x64.Build.0 = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x86.ActiveCfg = Release|Any CPU - {2DE99835-A3A3-4922-82AD-6D10D284816D}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {50C00046-0DA3-4B5C-9F6F-7BE1145E156A} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {2C7CE1F8-E73E-4987-8023-B5A0EBAC86E8} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {6F5EC38C-4A11-40D3-827C-F607B90BEFF0} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {5E7F18A8-F843-4C8A-AB02-4C7D9205C6CF} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {E19B5128-3469-492E-82E1-725631C4A68C} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {68ADC720-316E-4895-9F8E-C3CCADD262BE} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {1621415E-7723-4F46-A589-4C4620C0751A} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {987898D9-724E-4324-BF91-77B1A6DBE8F1} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {FD63F778-3938-45D2-900B-51EC770F70E5} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {61F7F446-9EF3-4768-B33A-4D75F60E1059} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {D5296435-3A3F-4B1A-81D1-434EC9E97DEF} = {5E7F18A8-F843-4C8A-AB02-4C7D9205C6CF} - {790B8030-00C2-4121-B125-EDC4CE329BA3} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {27DFBD04-64B2-4F1B-82B2-006620CCA6F8} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {71CB42FF-E750-4A3B-9C3A-AC938853CC89} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {10B6ADE1-F808-4612-801D-4452F5B52242} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {0D4DF78D-7E5F-4516-B19F-E6AA71A1DBF4} = {EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330} - {DED1590A-ED25-413B-8590-006A4DD5B2FD} = {EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330} - {E344E0A2-7715-4C7F-BAF7-D64EA94CB19B} = {EE49F5DC-5835-4AE3-B3BA-8BDE0AD56330} - {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {CAE652AF-6801-425E-AAF3-AB20DE7DF88E} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {E141A226-CC0A-4F26-BD17-4AE427D81C3B} = {D27E1CB4-C641-4C6C-A140-EF5F6215AE29} - {11ECCB8B-6958-42A7-BD58-88C09CB149B2} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {76D4BB7E-D981-42D5-BE96-6FAD8DEF9A4A} = {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} - {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {65A25D6E-C9CC-4F45-8925-04087AC82634} = {B705537C-B82C-4A30-AFA5-6244D9A7DAEB} - {69F5FF81-5615-4F06-B83C-FCF979BB84CA} = {ED0C35EB-7F31-4841-A24F-8EB708FFA959} - {236A71E3-01DA-4679-9DFF-16A8E079ACFF} = {5E7F18A8-F843-4C8A-AB02-4C7D9205C6CF} - {2DE99835-A3A3-4922-82AD-6D10D284816D} = {7D4082EA-7AC9-4DFB-98E8-C5E08BDC0EC3} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0541B30C-FF51-4E28-B172-83F5F3934BCD} - EndGlobalSection -EndGlobal diff --git a/azure-pipelines-official.yml b/azure-pipelines-official.yml new file mode 100644 index 0000000000..442ad55ab2 --- /dev/null +++ b/azure-pipelines-official.yml @@ -0,0 +1,326 @@ +# Branches that trigger a build on commit +trigger: + branches: + include: + - main + - rel/* + exclude: + - rel/15.* + - rel/16.* + - rel/17.0 + - rel/17.1 + - rel/17.2 + - rel/17.3 + - rel/17.4 + - rel/17.5 + - rel/17.6 + +# Branch(es) that trigger(s) build(s) on PR +pr: + branches: + include: + - main + - rel/* + paths: + exclude: + - .github/* + - .devcontainer/* + - docs/* + - .markdownlint.json + - .markdownlintignore + - CODE_OF_CONDUCT.md + - CONTRIBUTING.md + - README.md + - SECURITY.md + +parameters: +- name: isRTM + displayName: "Produce RTM version?" + type: boolean + default: False +- name: SDLEnabled + displayName: "Run SDL validation" + type: boolean + default: False +# This option should be used with caution. This is useful for unblocking circular deps issue with testanywhere +- name: SkipTests + displayName: "Skip tests" + type: boolean + default: False + +- name: otherOsPools + type: object + default: + - name: $(DncEngInternalBuildPool) + image: 1es-ubuntu-2204 + os: linux + - name: Azure Pipelines + image: macos-14 + os: macOS + +variables: + - template: /eng/common/templates-official/variables/pool-providers.yml@self + # Cannot use key:value syntax in root defined variables + - name: _TeamName + value: TestPlatformTeam + - name: Codeql.Enabled + value: true + - name: _RunAsInternal + value: True + - name: _RunAsPublic + value: False + - name: _ReleaseVersionKind + value: '' + # Arcade is using global cache of nugets in non-windows build + # under some circumstances, but we don't respect that in our code and try to find them + # in .packages. Force the location of packages to that folder. + - name: NUGET_PACKAGES + value: '$(Build.SourcesDirectory)/.packages/' + # Publish Logs seems to depend on this name of variable, so we define it + # even when we don't use matrix. + - name: _BuildConfig + value: Release + + - ${{ if eq(parameters.isRTM, True) }}: + - name: _ReleaseVersionKind + value: release + + # Group gives access to $microsoft-symbol-server-pat and $symweb-symbol-server-pat + - group: DotNet-Symbol-Server-Pats + # Group gives access to $dn-bot-devdiv-drop-rw-code-rw and dn-bot-dnceng-build-rw-code-rw + - group: DotNet-VSTS-Infra-Access + - name: _DevDivDropAccessToken + value: $(dn-bot-devdiv-drop-rw-code-rw) + - name: _SignType + value: real + - name: _SignArgs + value: /p:DotNetSignType=$(_SignType) /p:TeamName=$(_TeamName) /p:Sign=$(_Sign) + - name: _Sign + value: True + - name: VisualStudioDropName + value: Products/$(System.TeamProject)/$(Build.DefinitionName)/$(Build.SourceBranchName)/$(Build.BuildNumber) + - name: _InternalBuildArgs + value: /p:DotNetSignType=$(_SignType) + /p:TeamName=$(_TeamName) + /p:DotNetFinalVersionKind=$(_ReleaseVersionKind) + /p:DotNetPublishUsingPipelines=true + /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) + /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) + /p:OfficialBuildId=$(BUILD.BUILDNUMBER) + /p:VisualStudioDropName=$(VisualStudioDropName) + /p:GenerateSbom=true + +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + sdl: + policheck: + enabled: true + tsa: + enabled: true + pool: + name: $(DncEngInternalBuildPool) + image: windows.vs2022preview.amd64 + os: windows + customBuildTags: + - ES365AIMigrationTooling + stages: + - stage: build + displayName: Build + jobs: + + - template: /eng/common/templates-official/jobs/jobs.yml@self + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishBuildAssets: true + enablePublishUsingPipelines: true + enablePublishTestResults: true + testResultsFormat: 'vstest' + enableTelemetry: true + enableSourceBuild: true + jobs: + - job: Windows + timeoutInMinutes: 120 + pool: + name: $(DncEngInternalBuildPool) + image: windows.vs2022preview.amd64 + os: windows + steps: + # This steps help to understand versions of .NET runtime installed on the machine, + # which is useful to diagnose some governance issues. + - task: DotNetCoreCLI@2 + displayName: 'dotnet --info' + inputs: + command: custom + custom: '--info' + + # Restore internal tools required for SBOM generation + - template: /eng/restore-internal-tools.yml + + - powershell: eng\common\CIBuild.cmd + -configuration Release + -prepareMachine + $(_InternalBuildArgs) + /p:Test=false + /p:SourceBranchName=$(Build.SourceBranchName) + name: Build + displayName: Build + + - ${{ if eq(parameters.SkipTests, False) }}: + # -ci is allowing to import some environment variables and some required configurations + # -nobl avoid overwriting binlog of the main Build + - script: Test.cmd + -configuration Release + -ci + -nobl + -integrationTest + -performanceTest + name: Test + displayName: Test + + # This step is only helpful for diagnosing some issues with vstest/test host that would not appear + # through the console or trx + - task: 1ES.PublishBuildArtifacts@1 + displayName: 'Publish Test Results folders' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/Release' + ArtifactName: TestResults + condition: failed() + + - task: 1ES.PublishBuildArtifacts@1 + displayName: 'Publish VSSetup' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/VSSetup/Release' + ArtifactName: VSSetupArtifacts + + - ${{ each pool in parameters.otherOsPools }}: + - job: ${{ pool.os }} + dependsOn: Windows + workspace: + clean: all + pool: + name: ${{ pool.name }} + demands: ImageOverride -equals ${{ pool.image }} + os: ${{ pool.os }} + image: ${{ pool.image }} + steps: + - checkout: self + fetchDepth: 1 + clean: true + + # Build but don't pack, packing does not work on non-windows and we want to test what we built on Windows + # anyway. Because that is what we will publish. + - script: ./build.sh + --configuration Release + --ci + name: Build + displayName: Build + + # Download the built packages into local package source, as if we built them on this machine. + - task: DownloadPipelineArtifact@2 + displayName: Download Package Artifacts + inputs: + artifactName: PackageArtifacts + targetPath: '$(Build.SourcesDirectory)/artifacts/packages/Release/Shipping' + + - ${{ if eq(parameters.SkipTests, False) }}: + - script: ./test.sh + --configuration Release + --ci + --integrationTest + --performanceTest + name: Test + displayName: Test + + # This step is only helpful for diagnosing some issues with vstest/test host that would not appear + # through the console or trx + - task: 1ES.PublishBuildArtifacts@1 + displayName: 'Publish Test Results folders' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/Release' + ArtifactName: TestResults + condition: failed() + + - job: Publish + dependsOn: + - ${{ each pool in parameters.otherOsPools }}: + - ${{ pool.os }} + pool: + name: $(DncEngInternalBuildPool) + image: windows.vs2022preview.amd64 + os: windows + steps: + # The template job needs a log, otherwise it writes a warning. We can disable log uploading only for + # the whole stage, which is not what we want to do. So we write an empty file instead. + - pwsh: 'New-Item -Type file -Force "$(Build.SourcesDirectory)/artifacts/log/Release/empty.log"' + name: 'Add_empty_logfile' + # Download the built packages into local package source, as if we built them on this machine. + - task: DownloadPipelineArtifact@2 + displayName: Download Package Artifacts + inputs: + artifactName: PackageArtifacts + targetPath: '$(Build.SourcesDirectory)/artifacts/packages/Release/Shipping' + + - task: DownloadPipelineArtifact@2 + displayName: Download VSSetup Artifacts + inputs: + artifactName: VSSetupArtifacts + targetPath: '$(Build.SourcesDirectory)/artifacts/VSSetup/Release' + + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate to dotnet-tools and test-tools feeds' + + - task: 1ES.PublishNuget@1 + displayName: 'Publish NuGet packages to dotnet-tools feed' + inputs: + packageParentPath: '$(Build.SourcesDirectory)/artifacts/packages/Release' + packagesToPush: '$(Build.SourcesDirectory)/artifacts/packages/Release/**/*.nupkg;!$(Build.SourcesDirectory)/artifacts/packages/Release/**/*.symbols.nupkg' + publishVstsFeed: 'public/dotnet-tools' + + - task: 1ES.PublishNuget@1 + displayName: 'Publish NuGet packages to test-tools feed' + inputs: + packageParentPath: '$(Build.SourcesDirectory)/artifacts/packages/Release' + packagesToPush: '$(Build.SourcesDirectory)/artifacts/packages/Release/**/*.nupkg;!$(Build.SourcesDirectory)/artifacts/packages/Release/**/*.symbols.nupkg' + publishVstsFeed: 'public/test-tools' + + # Publishes setup VSIXes to a drop. + # Note: The insertion tool looks for the display name of this task in the logs. + - task: 1ES.MicroBuildVstsDrop@1 + displayName: Upload VSTS Drop + inputs: + dropName: $(VisualStudioDropName) + dropFolder: 'artifacts\VSSetup\Release\Insertion' + accessToken: $(_DevDivDropAccessToken) + condition: succeeded() + + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish Artifact VSSetup + inputs: + PathtoPublish: 'artifacts\VSSetup\Release' + ArtifactName: 'VSSetup' + condition: succeeded() + + - ${{ if eq(variables['Build.SourceBranchName'], 'main') }}: + - template: /eng/common/templates-official/job/onelocbuild.yml@self + parameters: + GitHubOrg: microsoft + MirrorRepo: vstest + LclSource: lclFilesfromPackage + LclPackageId: 'LCL-JUNO-PROD-VSTEST' + + - template: eng\common\templates-official\post-build\post-build.yml@self + parameters: + publishingInfraVersion: 3 + SDLValidationParameters: + enable: false + continueOnError: false + params: ' -SourceToolsList @("policheck","credscan")' diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 20c1387af2..541b35ce34 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,181 +1,201 @@ -# Pipeline YAML for PR - -jobs: -- job: Windows - timeoutInMinutes: 120 - pool: - vmImage: 'windows-latest' - variables: - buildConfiguration: 'Release' - steps: - - task: BatchScript@1 - displayName: 'Run script build.cmd' - inputs: - filename: build.cmd - arguments: '-verbose -configuration $(buildConfiguration) -steps "InstallDotnet, Restore, UpdateLocalization, Build, Publish"' - modifyEnvironment: false - failOnStandardError: true - - - task: CmdLine@1 - displayName: 'Delete stale pdb files' - inputs: - filename: del - arguments: '/S /F *.pdb' - workingFolder: '$(SystemRoot)' - continueOnError: true - condition: always() - - - task: BatchScript@1 - displayName: 'Run Unit Tests' - inputs: - filename: test.cmd - arguments: '-verbose -configuration $(buildConfiguration)' - modifyEnvironment: false - failOnStandardError: true - - - task: PublishTestResults@2 - displayName: 'Publish Test Results **\*.trx' - inputs: - testResultsFormat: VSTest - testResultsFiles: '**\*.trx' - condition: succeededOrFailed() - - - task: PublishPipelineArtifact@1 - inputs: - targetPath: '$(Build.SourcesDirectory)\artifacts' - artifact: 'testArtifacts' - publishLocation: 'pipeline' - -- job: WindowsAcceptance - dependsOn: Windows - timeoutInMinutes: 120 - pool: - vmImage: 'windows-latest' - variables: - buildConfiguration: 'Release' - steps: - - task: DownloadPipelineArtifact@2 - inputs: - buildType: 'current' - artifactName: 'testArtifacts' - targetPath: '$(Build.SourcesDirectory)\artifacts' - - - task: PowerShell@2 - inputs: - targetType: 'inline' - script: 'ls "$(Build.SourcesDirectory)\artifacts\" -Recurse -Dir' - - - task: BatchScript@1 - displayName: 'Run script build.cmd' - inputs: - filename: build.cmd - # build should not be needed in the end, we are copying the build task from the build folder, but we should get - # it either from artifacts, if present, or from extracted package file - # Adding it at the moment to avoid this error: #[error]Copy-Item : Cannot find path 'D:\a\1\s\src\Microsoft.TestPlatform.Build\bin\Release\netstandard2.0' because it does not exist. - arguments: '-verbose -configuration $(buildConfiguration) -steps "InstallDotnet, Restore, Build, PrepareAcceptanceTests"' - modifyEnvironment: false - failOnStandardError: true - - - task: PowerShell@2 - inputs: - targetType: 'inline' - script: 'ls "$(Build.SourcesDirectory)\artifacts\Release\packages"' - - - task: PowerShell@2 - displayName: 'Disable Strong Name Validation' - inputs: - targetType: 'inline' - script: | - Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework" -Name "AllowStrongNameBypass" -Value 1 -Force - Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework" -Name "AllowStrongNameBypass" -Value 1 -Force - reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f - reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f - reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f - reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f - - - task: BatchScript@1 - displayName: 'Run Acceptance Tests' - inputs: - filename: test.cmd - arguments: '-verbose -configuration $(buildConfiguration) -p AcceptanceTests -f net451' - modifyEnvironment: false - failOnStandardError: true - - - task: BatchScript@1 - displayName: 'Run Platform Tests' - inputs: - filename: test.cmd - arguments: '-verbose -configuration $(buildConfiguration) -p platformtests' - modifyEnvironment: false - failOnStandardError: true - - - task: BatchScript@1 - displayName: 'Run Smoke Tests' - inputs: - filename: test.cmd - arguments: '-verbose -configuration $(buildConfiguration) -p smoke' - modifyEnvironment: false - failOnStandardError: true - - - task: PublishTestResults@2 - displayName: 'Publish Test Results **\*.trx' - inputs: - testResultsFormat: VSTest - testResultsFiles: '**\*.trx' - condition: succeededOrFailed() - -- job: OtherOSes - dependsOn: Windows - workspace: - clean: all - strategy: - matrix: - Ubuntu_18_04: - vmImage: ubuntu-18.04 - pwsh: true - macOS_10_15_Catalina: - vmImage: macOS-10.15 - pwsh: true - pool: - vmImage: $[ variables['vmImage'] ] - variables: - buildConfiguration: 'Release' - VSTestRTMBuild: 'false' - steps: - - script: chmod +x ./scripts/vsts-prebuild.sh - displayName: 'Preparing for set version' - - - script: ./scripts/vsts-prebuild.sh -build "preview-$(Build.BuildNumber)" -rtm "$(VSTestRTMBuild)" -branch "$(Build.SourceBranch)" - displayName: 'Set Version' - - - script: ./build.sh -c $(buildConfiguration) -v "$(BuildVersionPrefix)" -vs "$(BuildVersionSuffix)" -ci true -verbose - displayName: 'Build' - - - script: ./test.sh -c $(buildConfiguration) -p Unit - displayName: 'Unit tests' - - - task: DownloadPipelineArtifact@2 - inputs: - buildType: 'current' - artifactName: 'testArtifacts' - targetPath: '$(Build.SourcesDirectory)/artifacts' - - - script: ./tools/dotnet-linux/dotnet build -c $(buildConfiguration) ./test/TestAssets/TestAssets.sln - displayName: 'Build test assets' - - - script: ./test.sh -c $(buildConfiguration) -p Acceptance - displayName: 'Acceptance tests' - - - task: PublishTestResults@2 - displayName: 'Publish Test Results **/*.trx' - inputs: - testResultsFormat: VSTest - testResultsFiles: '**/*.trx' - condition: succeededOrFailed() - -- template: /eng/common/templates/job/source-build.yml - parameters: - platform: - name: Managed - container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-3e800f1-20190501005343 - buildScript: eng/common/build.sh +# Branches that trigger a build on commit +trigger: + branches: + include: + - main + - rel/* + exclude: + - rel/15.* + - rel/16.* + - rel/17.0 + - rel/17.1 + - rel/17.2 + - rel/17.3 + - rel/17.4 + - rel/17.5 + - rel/17.6 + +# Branch(es) that trigger(s) build(s) on PR +pr: + branches: + include: + - main + - rel/* + paths: + exclude: + - .github/* + - .devcontainer/* + - docs/* + - .markdownlint.json + - .markdownlintignore + - CODE_OF_CONDUCT.md + - CONTRIBUTING.md + - README.md + - SECURITY.md + +variables: + # Cannot use key:value syntax in root defined variables + - name: _TeamName + value: TestPlatformTeam + - name: Codeql.Enabled + value: true + - name: _RunAsInternal + value: False + - name: _RunAsPublic + value: True + # Set default value for variables of PR and Public builds + - name: _SignType + value: test + - name: _SignArgs + value: '' + - name: _Sign + value: False + - name: _InternalBuildArgs + value: ' ' + - name: _ReleaseVersionKind + value: '' + # Arcade is using global cache of nugets in non-windows build + # under some circumstances, but we don't respect that in our code and try to find them + # in .packages. Force the location of packages to that folder. + - name: NUGET_PACKAGES + value: '$(Build.SourcesDirectory)/.packages/' + +stages: + +- stage: build + displayName: Build + jobs: + + - template: /eng/common/templates/jobs/jobs.yml + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishBuildAssets: true + enablePublishUsingPipelines: true + enablePublishTestResults: true + testResultsFormat: 'vstest' + enableTelemetry: true + enableSourceBuild: true + jobs: + - job: Windows + timeoutInMinutes: 120 + pool: + name: NetCore-Public + demands: ImageOverride -equals windows.vs2022preview.amd64.open + strategy: + matrix: + Release: + _BuildConfig: Release + steps: + # This steps help to understand versions of .NET runtime installed on the machine, + # which is useful to diagnose some governance issues. + - task: DotNetCoreCLI@2 + displayName: 'dotnet --info' + inputs: + command: custom + custom: '--info' + + - powershell: eng\common\CIBuild.cmd + -configuration $(_BuildConfig) + -prepareMachine + $(_InternalBuildArgs) + /p:Test=false + /p:SourceBranchName=$(Build.SourceBranchName) + name: Build + displayName: Build + + # -ci is allowing to import some environment variables and some required configurations + # -nobl avoid overwriting binlog of the main Build + - script: Test.cmd + -configuration $(_BuildConfig) + -ci + -nobl + -integrationTest + -performanceTest + /bl:$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Test.binlog + name: Test + displayName: Test + + # This step is only helpful for diagnosing some issues with vstest/test host that would not appear + # through the console or trx + - task: PublishBuildArtifacts@1 + displayName: 'Publish Test Results folders' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: TestResults + condition: failed() + + - task: PublishBuildArtifacts@1 + displayName: 'Publish Shipping Packages' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping' + ArtifactName: PackageArtifacts + + - task: PublishBuildArtifacts@1 + displayName: 'Publish NonShippping Packages' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/NonShipping' + ArtifactName: PackageArtifacts + + - task: PublishBuildArtifacts@1 + displayName: 'Publish VSSetup' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/VSSetup/$(_BuildConfig)' + ArtifactName: VSSetupArtifacts + + - job: OtherOSes + dependsOn: Windows + workspace: + clean: all + variables: + # Publish Logs seems to depend on this name of variable, so we define it + # even when we don't use matrix. + - name: _BuildConfig + value: Release + strategy: + matrix: + Ubuntu_22_04: + vmImage: ubuntu-22.04 + pwsh: true + macOS_12: + vmImage: macos-14 + pwsh: true + pool: + vmImage: $[ variables['vmImage'] ] + steps: + - checkout: self + fetchDepth: 1 + clean: true + + # Build but don't pack, packing does not work on non-windows and we want to test what we built on Windows + # anyway. Because that is what we will publish. + - script: ./build.sh + --configuration $(_BuildConfig) + --ci + name: Build + displayName: Build + + # Download the built packages into local package source, as if we built them on this machine. + - task: DownloadPipelineArtifact@2 + displayName: Download Package Artifacts + inputs: + artifactName: PackageArtifacts + targetPath: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping' + + - script: ./test.sh + --configuration $(_BuildConfig) + --ci + --integrationTest + --performanceTest + name: Test + displayName: Test + + # This step is only helpful for diagnosing some issues with vstest/test host that would not appear + # through the console or trx + - task: PublishBuildArtifacts@1 + displayName: 'Publish Test Results folders' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: TestResults + condition: failed() + diff --git a/build.cmd b/build.cmd index f2a9a38318..4afad04714 100644 --- a/build.cmd +++ b/build.cmd @@ -1,6 +1,3 @@ @echo off - -REM Copyright (c) Microsoft. All rights reserved. - -powershell -ExecutionPolicy Bypass -NoProfile -NoLogo -Command "%~dp0scripts\build.ps1 %*; exit $LastExitCode;" -if %errorlevel% neq 0 exit /b %errorlevel% +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*" +exit /b %ErrorLevel% diff --git a/build.sh b/build.sh index a118d5c3ff..8477d5af88 100755 --- a/build.sh +++ b/build.sh @@ -1,11 +1,16 @@ #!/usr/bin/env bash -# Copyright (c) Microsoft. All rights reserved. -# Build script for test platform. -set -e +source="${BASH_SOURCE[0]}" -source "scripts/build.sh" "$@" +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" -if [[ $? -ne 0 ]]; then - exit 1 -fi + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done + +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +"$scriptroot/eng/common/build.sh" --build --restore $@ diff --git a/docs/Overview.md b/docs/Overview.md new file mode 100644 index 0000000000..411f0bb4b4 --- /dev/null +++ b/docs/Overview.md @@ -0,0 +1,1726 @@ +# Test Platform messaging + +- [Test Platform messaging](#test-platform-messaging) + - [What is TestPlatform?](#what-is-testplatform) + - [How it works?](#how-it-works) + - [Workflows](#workflows) + - [Specification](#specification) + - [Base Protocol](#base-protocol) + - [Header Part](#header-part) + - [Content Part](#content-part) + - [Base Types](#base-types) + - [Request Message](#request-message) + - [Response Message](#response-message) + - [Notification Message](#notification-message) + - [Cancellation Support](#cancellation-support) + - [Progress Support](#progress-support) + - [Test Platform Protocol](#test-platform-protocol) + - [Capabilities](#capabilities) + - [Request, Notification and Response Ordering](#request-notification-and-response-ordering) + - [Message documentation](#message-documentation) + - [Basic structures](#basic-structures) + - [URI](#uri) + - [String type aliases](#string-type-aliases) + - [Regular expressions](#regular-expressions) + - [Enumerations](#enumerations) + - [TestCase](#testcase) + - [TestResult](#testresult) + - [Message](#message) + - [Lifecycle Messages](#lifecycle-messages) + - [ProtocolVersion request](#protocolversion-request) + - [TestSession.Message notification (Runner) (Testhost)](#testsessionmessage-notification-runner-testhost) + - [Session](#session) + - [Start Runner process request (Runner)](#start-runner-process-request-runner) + - [TestSession.Terminate request (Runner)](#testsessionterminate-request-runner) + - [Start Testhost process request (Runner)](#start-testhost-process-request-runner) + - [Terminate testhost request (Testhost)](#terminate-testhost-request-testhost) + - [Discovery](#discovery) + - [Extensions.Initialize request (Runner)](#extensionsinitialize-request-runner) + - [TestDiscovery.Start request (Runner)](#testdiscoverystart-request-runner) + - [TestDiscovery.Initialize request (Testhost)](#testdiscoveryinitialize-request-testhost) + - [TestDiscovery.Start request (Testhost)](#testdiscoverystart-request-testhost) + - [TestDiscovery.TestFound notification (Testhost)](#testdiscoverytestfound-notification-testhost) + - [TestDiscovery.TestFound notification (Runner)](#testdiscoverytestfound-notification-runner) + - [Run](#run) + - [TestExecution.GetTestRunnerProcessStartInfoForRunSelected request (Client)](#testexecutiongettestrunnerprocessstartinfoforrunselected-request-client) + - [TestExecution.Initialize request (Runner)](#testexecutioninitialize-request-runner) + - [TestExecution.StartWithTests (Runner)](#testexecutionstartwithtests-runner) + - [TestExecution.StartWithSources](#testexecutionstartwithsources) + - [TestExecution.StatsChange notification (Runner)](#testexecutionstatschange-notification-runner) + - [TestExecution.StatsChange notification (Client)](#testexecutionstatschange-notification-client) + - [Datacollection](#datacollection) + - [.NET Implementation](#net-implementation) + - [Architecture](#architecture) + - [Extension points](#extension-points) + +## What is TestPlatform? + +TestPlatform is a collection of libraries and tools that provide test running for Visual Studio Test Explorer, `dotnet test`, Azure DevOps, Omnisharp, Stryker and other tools. + +TestPlatform is mainly focused on running C# tests, but it is an extensible platform, that allows additional providers and extensions to be used. + +TestPlatform is also known as vstest, or by the names of the tools that use it: Test Explorer, and `dotnet test`. + +## How it works? + +TestPlatform consists of multiple processes that communicate over sockets, by sending JSON serialized messages. There are 4 processes that usually work together run tests: + +- Client +- Runner +- Testhost +- Datacollector + +The client is your IDE, or your command line. It determines what test needs to run, e.g. the one that the user clicked on in TestExplorer. + +The runner receives the request from the client, and starts an appropriate testhost for the test. + +Testhost receives the request to run tests, and runs them via an appropriate test framework. The most often used .NET test frameworks are XUnit, MSTest and NUnit. + +Datacollector observes the testhost to collect additional information about the run. + +While the tests execute, the results are reported back to the runner, aggregated, and forwarded to the client. + +The client processes the results and shows them in their UI, for example as TestExplorer does it here: + + + +A simplified flow describing the whole process is as follows: + +```mermaid +sequenceDiagram +%% autonumber +participant c as Client
(Visual Studio) +participant r as Runner
(vstest.console.exe) +participant t as Testhost
(testhost.exe) +participant d as Datacollector
(datacollector.exe) +c->>+r: Run test A +r->>d: Process start +r->>t: Process start +r->>+t: Run test A +t-->>+d: Test A started +t->>t: TestFramework
run test A +t-->>+d: Test A finished +t-->>r: Test A finished +r-->>c: Test A finished +t->>-r: Test run completed +t-->>r: Process exit +d-->>r: Process exit +r->>-c: Test run completed +``` + +This example represents the basic workflow of a test run. With each component having its own set of responsibilities: + +- *Client* such as Visual Studio, is responsible for interfacing with the user, and presenting the results in user friendly way. A graphical Client is not part of TestPlatform. + +- *Runner* is responsible for orchestrating one or more testhost processes to execute the given set of tests. The tests are not required to come from a single library, or to be targeting a single language. + +- *Testhost* testhost is responsible for running tests from a single library (or source), and reporting the results. Testhost for .NET and .NET Framework comes with TestPlatform, but additional testhosts for other languages can be provided externally. + +- *Datacollector* runs in additional process, and can host user extensions that observe testhost and manage its lifetime. + +## Workflows + +The Run workflow described above is very common in command line tools, and probably the first thing everyone thinks about when it comes to tests. There are additional workflows that TestPlatform provides: + +- *Discovery* - discovers tests in given test sources, most commonly .NET dlls. +- *Run* - runs tests from given libraries (test sources) or from a given list of pre-discovered tests. +- *Session* - starts the runner and waits for requests. +- *TestSession* - starts a set of testhosts for given test sources, to make the ready to run. +- *AttachmentProcessing* - processes a given set of attachments that were produced during a previous test run, e.g. merges code coverage files. + +## Specification + +### Base Protocol + +TODO: fill in more details. + +Data are passed as JSON serialized strings over TCP. The messages are serialized using binary format that delimits messages by a length prefix. The size prefix is written as 7 bit encoded int. (The basics of encoding that number are summarized here: ). + +In .NET the data are written using BinaryWriter and BinaryReader which do all the needed conversions automatically when writing and reading the string ()). + +The message on the wire is prefixed by the header, and read until the size of the message is reached. The 10 first bytes of a 1024 letter message looks like this: + +```bash +128 +08 +72 - H +101 - e +108 - l +108 - l +111 - o +32 +102 - f +114 - r +``` + +You can play with it using this code: + +```cs +namespace ConsoleApp45 +{ + internal class Program + { + static void Main(string[] args) + { + var mem = new MemoryStream(); + var w = new BinaryWriter(mem); + var message = "Hello from TestPlatform!" + new string('*', 1000); + + Console.WriteLine($"Written length: {message.Length}"); + w.Write(message); + w.Flush(); + + var r = new BinaryReader(mem); + mem.Position = 0; + var length = r.Read7BitEncodedInt(); + Console.WriteLine($"Read length: {message.Length}"); + + mem.Position = 0; + var size = 10; + var bytes = r.ReadBytes(size); + Console.WriteLine($"Data (first {size} bytes):"); + Console.WriteLine(string.Join("\n", bytes.Select(ToText).ToArray())); + } + + public static string ToText(byte b) + { + if (char.IsLetterOrDigit((char)b)) + { + return $"{b:d2} - {(char)b}"; + } + + return $"{b:d2}"; + } + } +} +``` + +The messages are then transported over TCP. In .NET the standard TCP client and TCP server is used. A single *dynamic* port is used for a single pair of client and server. (Unlike in a more typical web scenario where server has a determined port, and a client connects to that port.) + +The role of client and server are not fully set, and based on parameters either the runner, or the testhost can serve the role of a server. Typically the runner is the server (setups a dynamic port, and starts testhost, passing the port to connect to). But in remote scenarios it is beneficial to make the remote side (testhost), the server, and open the port on the remote device which is more likely to be for-testing-only, and deprovisioned after the test run. In this case the server (testhost) needs to use a predetermined port which it sets up, and the client (runner) will connect to it. + +#### Header Part + +There is no header in the message itself. There is header only in the binary message. + +#### Content Part + +#### Base Types + +#### Request Message + +#### Response Message + +#### Notification Message + +#### Cancellation Support + +#### Progress Support + +### Test Platform Protocol + +TestPlatform protocol defines a set of JSON request, response and notification messages, that are exchanged using the above base protocol. This section starts by describing the basic JSON structures used in the protocol. The description uses C# classes, and types, with nullability enabled. Meaning that every type is non-nullable by default, and nullability is denoted by `?` following the type name. + + + +The protocol assumes that one server serves one tool. There is no support in the protocol to share one server between different tools. + +#### Capabilities + +The client, runner + datacollector, and testhost are shipped separately. Each of those components can have a different version and hence a different set of functionality they support. A single number (protocol version) is used to represent the whole set of capabilities that a given component supports. Each newer version includes complete functionality of the previous version. There are no granular capabilities. + +Components are expected to handshake a version of the protocol to use, and use the highest version that is common to both sides. + +> For example client announces that is supports version 7, runner supports 9, version 7 is used. + +Once a version is agreed upon, a higher version should not be used by the lower level components. + +> The above runner should announce 7 to testhost, rather than 9. If testhost announces 10, 7 is used. + +The version is negotiated between the components at the beginning of every workflow using [ProtocolVersion](#protocolversion-request) request. + +#### Request, Notification and Response Ordering + +The server supports processing only a single request at a time. Unless the request is [Cancel](#cancel) or [Abort](#abort) request. + +All notifications are sent before as response is sent. + +#### Message documentation + +TestPlatformProtocol is defined by a set of requests, responses and notifications. Each of those are described using the following format: + +- a header describing the request +- a request section describing the format of the + + + +### Basic structures + +#### URI + +#### String type aliases + +#### Regular expressions + +#### Enumerations + +#### TestCase + +#### TestResult + +#### Message + +### Lifecycle Messages + +The current protocol specification defines that the lifecycle of a server is managed by the client (e.g. VisualStudio). It is up to the client to decide when to start (process-wise) and when to shutdown a server. + +#### ProtocolVersion request + +Version request is sent as the first request from the client to runner, and from runner to testhost. This request is used to negotiate the version of protocol to be used. + +Each protocol version is allowed to only add new features and never remove old features. Each component is also required to support all versions of protocol from version 0 up to the latest version. + +The handshake is one sided. The left side sends the request, and the right side (client-**runner**, or runner-**testhost**) responds with the determined version. + +The version is determined by choosing the highest common supported version. When client sends 6, and runner supports maximum version 7, then 6 will be used. + +The receiving side should remember the agreed value, and use it as the highest supported version for any downstream component. In the case above runner should send 6 to testhost, even though the runner supports versions up to 7. + +The request was introduced in TestPlatform version `16.0.0`. Runners before this version are not allowed. Testhosts before this version are allowed, the version of testhost if figured out by scanning the assembly, and the request is not sent to them. Version 0 is used for communication. + +Versions: + +- 0: The original base protocol with no explicit versioning in the message. It is used during negotiation. +- 1: Added Version field to the base protocol. +- 2: Changed serialization from a generic bag that described each property and its type, to explicit properties that are serialized without additional type info. +- 3: Added AttachDebugger message. +- 4: Added because version 3 did not update the serialization to use, and it will use v1 serialization (bag) rather than explicit properties. Right side should avoid negotiating 3 and downgrade to 2. +- 5: Unknown. (TODO) +- 6: Added Abort and Cancel with handlers that report the status. +- 7: Added SkippedDiscoveredSources. + +*Request:* + +```csharp +// Version from 0 to 7. +int version +``` + +```json +{ + "MessageType":"ProtocolVersion", + "Payload":7 +} +``` + +*Response:* + +```csharp +// Version from 0 to 7. +int version +``` + +```json +{ + "MessageType":"ProtocolVersion", + "Payload":7 +} +``` + +#### TestSession.Message notification (Runner) (Testhost) + +Downstream components can send messages to upstream components, with a given severity. This is mostly used to send additional information from extensions. Upstream component can decide what to do with the information, if it will process it and forward it, or batch it and then send it as one unified message. + +The upstream component should not parse the message content, or use it for flow control. + +```csharp +// Message to send back to an upstream component to report +// a message with a given severity. +public class TestMessagePayload +{ + public TestMessageLevel MessageLevel { get; set; } + + public string? Message { get; set; } +} + +public enum TestMessageLevel +{ + // Information only, can be safely ignored, + // usually on the sender side to avoid overhead + // of sending it. + Informational = 0, + + Warning = 1, + + Error = 2 +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestSession.Message", + "Payload": { + "MessageLevel": 0, + "Message": "Logging TestHost Diagnostics in file: C:\\logs\\log.host.txt" + } +} +``` + +### Session + +Session starts the runner process, and connects to it. This is used in two ways. First as a way to pre-start Runner before there is any work for it, this is done for example by Visual Studio to have the runner ready to receive work. Or the flow is run just before other requests (e.g. Discovery). + +> ⚠️ Do not confuse this with TestSession workflow that pre-starts testhosts. + +#### Start Runner process request (Runner) + +Runner process starts and sends response to the port that it connected to. + +```mermaid +sequenceDiagram +participant c as Client
(Visual Studio) +participant r as Runner
(vstest.console.exe) +c->>r: Run vstest.console -port X +r->>r: Connect to port Y +r->>c: TestSession.Connected +``` + +*Request:* + +The runner process starts. + +*Response:* + +```csharp +null +``` + +```json +{ + "MessageType": "TestSession.Connected", + "Payload": null +} +``` + +#### TestSession.Terminate request (Runner) + +Runner process is asked to terminate. + +```mermaid +sequenceDiagram +participant c as Client
(Visual Studio) +participant r as Runner
(vstest.console.exe) +c->>r: TestSession.Terminate +r-->>c: Process exited +``` + +*Request:* + +```csharp +null +``` + +```json +{ + "MessageType": "TestSession.Terminate", + "Payload": null +} +``` + +*Response:* + +The runner process terminates. Termination is detected by observing the process. ([Exited](https://learn.microsoft.com/dotnet/api/system.diagnostics.process.exited) event in .NET.) + +#### Start Testhost process request (Runner) + +Testhost process starts, and runner detects that it connected. There is no additional request response exchange. + +Same applies to datacollector. + +#### Terminate testhost request (Testhost) + +Testhost process is asked to terminate. + +```mermaid +sequenceDiagram +participant r as Runner
(vstest.console.exe) +participant t as Testhost
(testhost.exe) +r->>t: TestSession.Terminate +t-->>r: Process exited +``` + +*Request:* + +```csharp +null +``` + +```json +{ + "MessageType": "TestSession.Terminate", + "Payload": null +} +``` + +*Response:* + +The testhost process terminates. Termination is detected by observing the process. ([Exited](https://learn.microsoft.com/dotnet/api/system.diagnostics.process.exited) event in .NET.) + +Same applies to datacollector. + +### Discovery + +Discovery workflow is used to find tests in the provided test sources. Discovery happens in testhost and can run in parallel. Datacollectors are not used during discovery. + +> ℹ️ The real work is often offloaded to a test framework such as NUnit, which runs inside of the testhost process. This is not shown in the workflow below. + +```mermaid +%% ./RFCs/0001-Test-Platform-Architecture.md#discovery +sequenceDiagram +participant c as Client
(Visual Studio) +participant r as Runner
(vstest.console.exe) +participant t as Testhost
(testhost.exe) +Note over c,r: Start session and negotiate version +c->>r: (optional) Extensions.Initialize +c->>+r: TestDiscovery.Start +r->>t: Run testhost -port Y +t->>t: Connect to port Y +t-->r: Runner detects connection +r->>t: ProtocolVersion +t->>r: ProtocolVersion +r->>t: (optional) TestDiscovery.Initialize +r->>+t: TestDiscovery.Start +t-->>r: TestDiscovery.TestFound +r-->>c: TestDiscovery.TestFound +t-->>r: TestDiscovery.TestFound +t->>-r: TestDiscovery.Completed +r->>t: TestSession.Terminate +t-->>r: Process exited +r->>-c: TestDiscovery.Completed +``` + +#### Extensions.Initialize request (Runner) + +List of extensions to initialize in runner. Runner should forward appropriate extensions to testhost or datacollector if they are appropriate. For example when then list contains test adapters. This request is optional. + +*Request:* + +```cs +// Full path to zero or more extensions to initialize. +// Most often those are .NET .dll files, but can also be VSIX extensions. +IEnumerable extensions +``` + +```json +{ + "Version": 7, + "MessageType": "Extensions.Initialize", + "Payload": [ + "C:\\PROGRAM FILES\\MICROSOFT VISUAL STUDIO\\2022\\INTPREVIEW\\COMMON7\\IDE\\COMMONEXTENSIONS\\MICROSOFT\\EBF\\TESTEXPLORER\\Microsoft.VisualStudio.Workspace.ExternalBuildFramework.TestProvider.dll", + "C:\\Users\\me\\.nuget\\packages\\mstest.testadapter\\2.2.8\\build\\_common\\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll" + ] +} +``` + +*Response:* + +None. + +#### TestDiscovery.Start request (Runner) + +Contains full paths to one or more test sources, and settings to use for the discovery. Runner can split the request into multiple additional pieces. For example when the sources are incompatible and each need a different type of testhost. Or when it is asked to discover the sources in parallel. + +*Request:* + +```csharp +public class DiscoveryRequestPayload +{ + // Full paths to sources to be discovered. + public IEnumerable? Sources { get; set; } + + // Settings used for this discovery request. + [DataMember] + public string? RunSettings { get; set; } + + // TestPlatformOptions to use for this request. + public TestPlatformOptions? TestPlatformOptions + { + get; + set; + } + + // A set of pre-started testhosts that this request should use. + public TestSessionInfo? TestSessionInfo { get; set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.Start", + "Payload": { + "Sources": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll" + ], + "RunSettings": "", + "TestPlatformOptions": { + "TestCaseFilter": null, + "FilterOptions": null, + "CollectMetrics": true, + "SkipDefaultAdapters": false + }, + "TestSessionInfo": null + } +} +``` + +*Response:* + +```cs +public class DiscoveryCompletePayload +{ + // Total number of tests discovered in this request. Set to -1 when aborted. + public long TotalTests { get; set; } + + // The last set of tests that were not reported yet by TestFound message. + public IEnumerable? LastDiscoveredTests { get; set; } + + // Specifies if discovery has been aborted (meaning that testhost crashed or was killed). + // If true TotalCount is also set to -1. + public bool IsAborted { get; set; } + + // Metrics. + public IDictionary? Metrics { get; set; } + + // Sources which were fully discovered. + public IList? FullyDiscoveredSources { get; set; } = new List(); + + // Sources which were partially discovered (e.g. started discovering tests, but then discovery aborted). + // Since protocol 6. + public IList? PartiallyDiscoveredSources { get; set; } = new List(); + + // Sources that were skipped during discovery. + // Since protocol 7. + public IList? SkippedDiscoverySources { get; set; } = new List(); + + // Sources which were not discovered at all. + // Since protocol 6. + public IList? NotDiscoveredSources { get; set; } = new List(); + + // Gets or sets the collection of discovered extensions. + // TODO: since? + public Dictionary>? DiscoveredExtensions { get; set; } = new(); +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.Completed", + "Payload": { + "TotalTests": 3, + "LastDiscoveredTests": null, + "IsAborted": false, + "Metrics": { + "VS.TestDiscovery.TimeTakenAdapter.executor://mstestadapter/v2": 0.38184969999999996, + "VS.TestDiscovery.TimeTakenInSecByAllAdapters": 0.38184969999999996, + "VS.TestDiscovery.TotalTestsDiscovered.executor://mstestadapter/v2": 3.0, + "VS.TestDiscovery.TotalTests": 3.0, + "VS.TestDiscovery.TimeTakenToLoadAdaptersInSec": 0.0030006, + "VS.TestDiscovery.AdaptersDiscoveredCount": 1, + "VS.TestDiscovery.AdaptersUsedCount": 1, + "VS.TestRun.TargetFramework": ".NETFramework,Version=v4.7.2", + "VS.TestRun.TargetPlatform": "X64", + "VS.TestRun.MaxCPUcount": 1, + "VS.TestRun.TargetDevice": "Local Machine", + "VS.TestRun.TestPlatformVersion": "17.5.0-dev", + "VS.TestRun.TargetOS": "Microsoft Windows NT 10.0.22623.0", + "VS.TestRun.DisableAppDomain": false, + "VS.TestRun.CommandLineSwitches": "", + "VS.TestRun.LoggersUsed": "", + "VS.TestDiscovery.ParallelEnabled": "False", + "VS.TestSession.Id": "", + "VS.TestDiscovery.NumberOfSources": 1, + "VS.TestDiscovery.DiscoveryState": "Completed", + "VS.TestDiscovery.TotalTimeTakenInSec": 4.4026146, + "VS.TestPlatform.DiscoveredExtensions": "{\"TestDiscoverers\":[\"Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.MSTestDiscoverer, Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"],\"TestHosts\":[\"HostProvider://DefaultTestHost\",\"HostProvider://DotnetTestHost\"]}" + }, + "FullyDiscoveredSources": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll" + ], + "PartiallyDiscoveredSources": [], + "NotDiscoveredSources": [], + "SkippedDiscoverySources": [], + "DiscoveredExtensions": { + "TestDiscoverers": [ + "Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.MSTestDiscoverer, Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + ], + "TestHosts": [ + "HostProvider://DefaultTestHost", + "HostProvider://DotnetTestHost" + ] + } + } +} +``` + +#### TestDiscovery.Initialize request (Testhost) + +List of extensions to initialize in the testhost. This request is optional. + +*Request:* + +```cs +// Full path to zero or more extensions to initialize. +// Most often those are .NET .dll files, but can also be VSIX extensions. +IEnumerable extensions +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.Initialize", + "Payload": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll" + ] +} +``` + +*Response:* + +None. + +#### TestDiscovery.Start request (Testhost) + +Contains full paths to one or more test sources, and settings to use for the discovery. Runner can split the request into multiple additional pieces. For example when the sources are incompatible and each need a different type of testhost. Or when it is asked to discover the sources in parallel. + +*Request:* + +```csharp +public class DiscoveryCriteria +{ + // Gets the test Containers (e.g. .appx, .appxrecipie) TODO what??? + public string? Package { get; set; } + + + // Test adapter mapped to the sources it should process. "_none_" is used when there + // is no adapter determined. + public Dictionary> AdapterSourceMap { get; private set; } + + + // Discovered test event will be raised after discovering at minimum this number of tests, + // or when DiscoveredTestEventTimeout is passed. + public long FrequencyOfDiscoveredTestsEvent { get; private set; } + + // Discovered test event will be raised after this much time since last test + // when FrequencyOfDiscoveredTestsEvent is passed. + public TimeSpan DiscoveredTestEventTimeout { get; private set; } + + // Run settings for the discovery. + public string? RunSettings { get; private set; } + + // Filters out tests that don't meet this filter. Filter is test framework + // dependent. + public string? TestCaseFilter { get; set; } + + // TestSession (pre-started testhosts) on which this discovery should happen. + public TestSessionInfo? TestSessionInfo { get; set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.Start", + "Payload": { + "Package": null, + "AdapterSourceMap": { + "_none_": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll" + ] + }, + "FrequencyOfDiscoveredTestsEvent": 10, + "DiscoveredTestEventTimeout": "00:00:01.5000000", + "RunSettings": "", + "TestCaseFilter": null, + "TestSessionInfo": null + } +} +``` + +*Response:* + +```cs +public class DiscoveryCompletePayload +{ + // Total number of tests discovered in this request. Set to -1 when aborted. + public long TotalTests { get; set; } + + // The last set of tests that were not reported yet by TestFound message. + public IEnumerable? LastDiscoveredTests { get; set; } + + // Specifies if discovery has been aborted (meaning that testhost crashed or was killed). + // If true TotalCount is also set to -1. + public bool IsAborted { get; set; } + + // Metrics. + public IDictionary? Metrics { get; set; } + + // Sources which were fully discovered. + public IList? FullyDiscoveredSources { get; set; } = new List(); + + // Sources which were partially discovered (e.g. started discovering tests, but then discovery aborted). + // Since protocol 6. + public IList? PartiallyDiscoveredSources { get; set; } = new List(); + + // Sources that were skipped during discovery. + // Since protocol 7. + public IList? SkippedDiscoverySources { get; set; } = new List(); + + // Sources which were not discovered at all. + // Since protocol 6. + public IList? NotDiscoveredSources { get; set; } = new List(); + + // Gets or sets the collection of discovered extensions. + // TODO: since? + public Dictionary>? DiscoveredExtensions { get; set; } = new(); +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.Completed", + "Payload": { + "TotalTests": 2, + "LastDiscoveredTests": [], + "IsAborted": false, + "Metrics": { + "VS.TestDiscovery.TimeTakenToLoadAdaptersInSec": 0.0045024999999999996, + "VS.TestDiscovery.AdaptersDiscoveredCount": 1, + "VS.TestDiscovery.TotalTestsDiscovered.executor://mstestadapter/v2": 2, + "VS.TestDiscovery.TimeTakenAdapter.executor://mstestadapter/v2": 0.2842144, + "VS.TestDiscovery.TimeTakenInSecByAllAdapters": 0.2842144, + "VS.TestDiscovery.AdaptersUsedCount": 1.0, + "VS.TestDiscovery.DiscoveryState": "Completed", + "VS.TestDiscovery.TotalTests": 2 + }, + "FullyDiscoveredSources": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll" + ], + "PartiallyDiscoveredSources": [], + "NotDiscoveredSources": [], + "SkippedDiscoverySources": [], + "DiscoveredExtensions": { + "TestDiscoverers": [ + "Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.MSTestDiscoverer, Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + ], + "TestSettingsProviders": [] + } + } +} +``` + +#### TestDiscovery.TestFound notification (Testhost) + +Contains a batch of tests that were found. Runner should aggregate the results, and hold onto them if it needs. The final response does not contain all the partial updates. + +```cs +IEnumerable testCases +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.TestFound", + "Payload": [ + { + "Id": "cfa76bee-59fb-2133-3c23-9693a1078027", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod1", + "DisplayName": "TestMethod1", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ] +} +``` + +#### TestDiscovery.TestFound notification (Runner) + +Contains a batch of tests that were found. Client should aggregate the results, and hold onto them if it needs. The final response does not contain all the partial updates. + +```cs +IEnumerable testCases +``` + +```json +{ + "Version": 7, + "MessageType": "TestDiscovery.TestFound", + "Payload": [ + { + "Id": "cfa76bee-59fb-2133-3c23-9693a1078027", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod1", + "DisplayName": "TestMethod1", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ] +} +``` + +### Run + +The Run workflow runs the provided tests. It has has four modes, determined by combination of two properties. Running with sources, or set of discovered tests. And running with a default testhost launcher, or with a custom testhost launcher. Running with custom testhost launcher is most commonly used when debugging, and it adds the debugger related messages into the workflow. + +There are four distinct messages, one for each mode, which all use the same payload: + +- TestExecution.RunAllWithDefaultHost (sources, default testhost) +- TestExecution.RunSelectedWithDefaultHost (tests, default testhost) +- TestExecution.GetTestRunnerProcessStartInfoForRunAll (sources, custom testhost) +- TestExecution.GetTestRunnerProcessStartInfoForRunSelected (tests, custom testhost) + +Below, only the most complex workflow is shown: + +```mermaid +%% ./RFCs/0001-Test-Platform-Architecture.md#discovery +sequenceDiagram +participant c as Client
(Visual Studio) +participant r as Runner
(vstest.console.exe) +participant t as Testhost
(testhost.exe) +Note over c,r: Start session and negotiate version +c->>r: (optional) Extensions.Initialize +c->>+r: TestExecution.GetTestRunnerProcessStartInfoForRunSelected +r->>t: Run testhost -port Y +t->>t: Connect to port Y +t-->r: Runner detects connection +r->>t: ProtocolVersion +t->>r: ProtocolVersion +r->>t: (optional) TestExecution.Initialize +r->>+t: TestExecution.StartWithTests +t->>r: TestExecution.AttachDebugger +r->>c: TestExecution.AttachDebugger +r->>c: TestExecution.EditorAttachDebugger2 +c->>r: TestExecution.EditorAttachDebuggerCallback +r->>t: TestExecution.AttachDebuggerCallback +t-->>r: TestExecution.StatsChange +r-->>c: TestExecution.StatsChange +t-->>r: TestExecution.StatsChange +t->>-r: TestExecution.Completed +r->>t: TestSession.Terminate +t-->>r: Process exited +r-->>c: TestExecution.StatsChange +r->>-c: TestExecution.Completed + +``` + +#### TestExecution.GetTestRunnerProcessStartInfoForRunSelected request (Client) + +This applies to all these four requests: + +- TestExecution.RunAllWithDefaultHost (sources, default testhost) +- TestExecution.RunSelectedWithDefaultHost (tests, default testhost) +- TestExecution.GetTestRunnerProcessStartInfoForRunAll (sources, custom testhost) +- TestExecution.GetTestRunnerProcessStartInfoForRunSelected (tests, custom testhost) + +*Request:* + +```cs +public class TestRunRequestPayload +{ + // Full paths of to the test sources containing the tests to run. + // It should not be used together with TestCases. + public List? Sources { get; set; } + + // List of TestCases that were previously discovered. + // It should not be used together with Sources. + public List? TestCases { get; set; } + + // RunSettings for the current run. + public string? RunSettings { get; set; } + + // True if the runner should stay alive after the run is completed. + public bool KeepAlive { get; set; } + + // True when requests to attach debugger to testhost should be send back to client. + public bool DebuggingEnabled { get; set; } + + // Test platform options. + public TestPlatformOptions? TestPlatformOptions { get; set; } + + // The set of pre-started testhosts on which this run should try to run. + public TestSessionInfo? TestSessionInfo { get; set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.GetTestRunnerProcessStartInfoForRunSelected", + "Payload": { + "Sources": null, + "TestCases": [ + { + "Id": "cfa76bee-59fb-2133-3c23-9693a1078027", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod1", + "DisplayName": "TestMethod1", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ], + "RunSettings": "", + "KeepAlive": false, + "DebuggingEnabled": true, + "TestPlatformOptions": { + "TestCaseFilter": null, + "FilterOptions": null, + "CollectMetrics": true, + "SkipDefaultAdapters": false + }, + "TestSessionInfo": null + } +} +``` + +*Response:* + +```cs +public class TestRunCompletePayload +{ + // The completion information defined below. + public TestRunCompleteEventArgs? TestRunCompleteArgs { get; set; } + + // The last batch of tests that were executed, empty when they were sent + // via stats update message. + public TestRunChangedEventArgs? LastRunTests { get; set; } + + // Gets or sets the run attachments, such as TRX reports or other files. + public ICollection? RunAttachments { get; set; } + + // Gets or sets the executor uris that were used to run the tests. + public ICollection? ExecutorUris { get; set; } +} + +public class TestRunCompleteEventArgs +{ + // Gets the statistics on the state of the test run. Including how many tests + // were there for each outcome. + public ITestRunStatistics? TestRunStatistics { get; private set; } + + // True when the run was cancelled. E.g. by user clicking cancel in a client + // or starting a new RunTests operation. + public bool IsCanceled { get; private set; } + + // Gets a value indicating whether the test run is aborted. Meaning that the testhost + // crashed and runner sends this result on its behalf. + public bool IsAborted { get; private set; } + + // Error encountered in the run that is not linked to any test. + public Exception? Error { get; private set; } + + // Gets the attachment sets associated with the test run. + // TODO: HOW is this different from RunAttachments above? + public Collection AttachmentSets { get; private set; } + + // Gets the invoked data collectors for the test session. + public Collection InvokedDataCollectors { get; private set; } + + // Gets the time elapsed in just running the tests. + // Value is set to TimeSpan.Zero in case of any error. + public TimeSpan ElapsedTimeInRunningTests { get; private set; } + + // Metrics. + public IDictionary? Metrics { get; set; } + + // Extensions that were discovered in this run. + public Dictionary>? DiscoveredExtensions { get; set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.Completed", + "Payload": { + "TestRunCompleteArgs": { + "TestRunStatistics": { + "ExecutedTests": 3, + "Stats": { + "Passed": 3 + } + }, + "IsCanceled": false, + "IsAborted": false, + "Error": null, + "AttachmentSets": [], + "InvokedDataCollectors": [], + "ElapsedTimeInRunningTests": "00:00:00.5860000", + "Metrics": { + "VS.TestRun.TotalTestsRun.executor://mstestadapter/v2": 3.0, + "VS.TestRun.AdaptersUsedCount": 1, + "VS.TestRun.TimeTakenByAllAdapters": 0.5498061, + "VS.TestRun.AdaptersDiscoveredCount": 1, + "VS.TestRun.TotalTests": 3.0, + "VS.TestRun.TimeTakenToRun.executor://mstestadapter/v2": 0.5498061, + "VS.TestRun.TargetFramework": ".NETFramework,Version=v4.7.2", + "VS.TestRun.TargetPlatform": "X64", + "VS.TestRun.MaxCPUcount": 1, + "VS.TestRun.TargetDevice": "Local Machine", + "VS.TestRun.TestPlatformVersion": "17.5.0-dev", + "VS.TestRun.TargetOS": "Microsoft Windows NT 10.0.22623.0", + "VS.TestRun.DisableAppDomain": false, + "VS.TestRun.CommandLineSwitches": "", + "VS.TestRun.IsTestSettingsUsed": false, + "VS.TestRun.LoggersUsed": "", + "VS.TestRun.ParallelEnabled": "False", + "VS.TestSession.Id": "", + "VS.TestRun.NumberOfSources": 0, + "VS.TestRun.RunState": "Completed", + "VS.TestRun.TimeTakenInSec": 2.8273251, + "VS.TestPlatform.DiscoveredExtensions": "{\"TestExecutors\":[\"executor://MSTestAdapter/v2\"],\"TestHosts\":[\"HostProvider://DefaultTestHost\",\"HostProvider://DotnetTestHost\"]}" + }, + "DiscoveredExtensions": { + "TestExecutors": [ + "executor://MSTestAdapter/v2" + ], + "TestHosts": [ + "HostProvider://DefaultTestHost", + "HostProvider://DotnetTestHost" + ] + } + }, + "LastRunTests": null, + "RunAttachments": [], + "ExecutorUris": [ + "executor://mstestadapter/v2" + ] + } +} +``` + +#### TestExecution.Initialize request (Runner) + +Optional list of additional extensions to initialize in the testhost. + +*Request:* + +```cs +IEnumerable extensions +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.Initialize", + "Payload": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll" + ] +} +``` + +*Response:* + +None. + +#### TestExecution.StartWithTests (Runner) + +The runner starts the testhost and sends it a request to run tests. It comes in two flavors, depending on whether we run with sources, or with given set of testcases (see below). + +*Request:* + +```cs +public class TestRunCriteriaWithTests +{ + // The tests that were previously discovered and that should run. + public IEnumerable Tests { get; private set; } + + // Settings for the current run. + public string? RunSettings { get; private set; } + + /// + /// Gets or sets the test execution context. + /// + public TestExecutionContext TestExecutionContext { get; set; } + + /// + /// Gets the test Containers (e.g. .appx, .appxrecipie) + /// + public string? Package { get; private set; } +} + +public class TestExecutionContext +{ + // Gets or sets the frequency of run stats event. + public long FrequencyOfRunStatsChangeEvent { get; set; } + + // Gets or sets the timeout that triggers sending results regardless of cache size. + public TimeSpan RunStatsChangeEventTimeout { get; set; } + + // Gets or sets a value indicating whether execution is out of process. + public bool InIsolation { get; set; } + + // Gets or sets a value indicating whether testhost process should be kept running after test run completion. + public bool KeepAlive { get; set; } + + // Gets or sets a value indicating whether test case level events need to be sent or not. + public bool AreTestCaseLevelEventsRequired { get; set; } + + // Gets or sets a value indicating whether execution is in debug mode. + public bool IsDebug { get; set; } + + // Gets or sets the filter criteria for run with sources to filter test cases. + public string? TestCaseFilter { get; set; } + + // Gets or sets additional options for filtering. + public FilterOptions? FilterOptions { get; set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.StartWithTests", + "Payload": { + "Tests": [ + { + "Id": "cfa76bee-59fb-2133-3c23-9693a1078027", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod1", + "DisplayName": "TestMethod1", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ], + "RunSettings": "", + "TestExecutionContext": { + "FrequencyOfRunStatsChangeEvent": 2, + "RunStatsChangeEventTimeout": "00:00:01.5000000", + "InIsolation": false, + "KeepAlive": false, + "AreTestCaseLevelEventsRequired": false, + "IsDebug": true, + "TestCaseFilter": null, + "FilterOptions": null + }, + "Package": null + } +} +``` + +*Response:* + +```cs +public class TestRunCompletePayload +{ + // The completion information defined below. + public TestRunCompleteEventArgs? TestRunCompleteArgs { get; set; } + + // The last batch of tests that were executed, empty when they were sent + // via stats update message. + public TestRunChangedEventArgs? LastRunTests { get; set; } + + // Gets or sets the run attachments, such as TRX reports or other files. + public ICollection? RunAttachments { get; set; } + + // Gets or sets the executor uris that were used to run the tests. + public ICollection? ExecutorUris { get; set; } +} + +public class TestRunCompleteEventArgs +{ + // Gets the statistics on the state of the test run. Including how many tests + // were there for each outcome. + public ITestRunStatistics? TestRunStatistics { get; private set; } + + // True when the run was cancelled. E.g. by user clicking cancel in a client + // or starting a new RunTests operation. + public bool IsCanceled { get; private set; } + + // Gets a value indicating whether the test run is aborted. Meaning that the testhost + // crashed and runner sends this result on its behalf. + public bool IsAborted { get; private set; } + + // Error encountered in the run that is not linked to any test. + public Exception? Error { get; private set; } + + // Gets the attachment sets associated with the test run. + // TODO: HOW is this different from RunAttachments above? + public Collection AttachmentSets { get; private set; } + + // Gets the invoked data collectors for the test session. + public Collection InvokedDataCollectors { get; private set; } + + // Gets the time elapsed in just running the tests. + // Value is set to TimeSpan.Zero in case of any error. + public TimeSpan ElapsedTimeInRunningTests { get; private set; } + + // Metrics. + public IDictionary? Metrics { get; set; } + + // Extensions that were discovered in this run. + public Dictionary>? DiscoveredExtensions { get; set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.Completed", + "Payload": { + "TestRunCompleteArgs": { + "TestRunStatistics": { + "ExecutedTests": 3, + "Stats": { + "Passed": 3 + } + }, + "IsCanceled": false, + "IsAborted": false, + "Error": null, + "AttachmentSets": [], + "InvokedDataCollectors": [], + "ElapsedTimeInRunningTests": "00:00:00.6764685", + "Metrics": { + "VS.TestRun.AdaptersDiscoveredCount": 1, + "VS.TestRun.TotalTestsRun.executor://mstestadapter/v2": 3, + "VS.TestRun.TimeTakenToRun.executor://mstestadapter/v2": 0.6460834, + "VS.TestRun.TimeTakenByAllAdapters": 0.6460834, + "VS.TestRun.TotalTests": 3, + "VS.TestRun.RunState": "Completed", + "VS.TestRun.AdaptersUsedCount": 1 + }, + "DiscoveredExtensions": { + "TestDiscoverers": [ + "Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.MSTestDiscoverer, Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + ], + "TestExecutors": [ + "executor://MSTestAdapter/v2" + ], + "TestExecutors2": [], + "TestSettingsProviders": [] + } + }, + "LastRunTests": { + "NewTestResults": [ + { + "TestCase": { + "Id": "ef7f4646-afa1-4482-25a2-1aabbbdbb9bc", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod3", + "DisplayName": "TestMethod3", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + }, + "Attachments": [], + "Outcome": 1, + "ErrorMessage": null, + "ErrorStackTrace": null, + "DisplayName": null, + "Messages": [], + "ComputerName": null, + "Duration": "00:00:00.0101784", + "StartTime": "2022-10-20T07:22:58.0889799+02:00", + "EndTime": "2022-10-20T07:22:58.099497+02:00", + "Properties": [ + { + "Key": { + "Id": "ExecutionId", + "Label": "ExecutionId", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Guid" + }, + "Value": "00000000-0000-0000-0000-000000000000" + }, + { + "Key": { + "Id": "ParentExecId", + "Label": "ParentExecId", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Guid" + }, + "Value": "00000000-0000-0000-0000-000000000000" + }, + { + "Key": { + "Id": "InnerResultsCount", + "Label": "InnerResultsCount", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Int32" + }, + "Value": 0 + } + ] + } + ], + "TestRunStatistics": { + "ExecutedTests": 3, + "Stats": { + "Passed": 3 + } + }, + "ActiveTests": [] + }, + "RunAttachments": [], + "ExecutorUris": [ + "executor://mstestadapter/v2" + ] + } +} +``` + +#### TestExecution.StartWithSources + +The runner starts the testhost and sends it a request to run tests. It comes in two flavors, depending on whether we run with sources (see above), or with given set of testcases. + +```cs +public class TestRunCriteriaWithSources +{ + /// + /// Gets the adapter source map. + /// + public Dictionary> AdapterSourceMap { get; private set; } + + /// + /// Gets the run settings. + /// + public string? RunSettings { get; private set; } + + /// + /// Gets or sets the test execution context. + /// + public TestExecutionContext TestExecutionContext { get; set; } + + /// + /// Gets the test Containers (e.g. .appx, .appxrecipie) + /// + public string? Package { get; private set; } +} +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.StartWithSources", + "Payload": { + "AdapterSourceMap": { + "_none_": [ + "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll" + ] + }, + "RunSettings": "\r\n \r\n 2\r\n False\r\n True\r\n .NETFramework,Version=v4.7.2\r\n \r\n \r\n 999999\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n", + "TestExecutionContext": { + "FrequencyOfRunStatsChangeEvent": 2, + "RunStatsChangeEventTimeout": "00:00:01.5000000", + "InIsolation": false, + "KeepAlive": false, + "AreTestCaseLevelEventsRequired": false, + "IsDebug": true, + "TestCaseFilter": null, + "FilterOptions": null + }, + "Package": null + } +} +``` + +*Response:* + +See [TestExecution.StartWithTests (Runner)](#testexecutionstartwithtests-runner). + +#### TestExecution.StatsChange notification (Runner) + +```cs +public class TestRunChangedEventArgs : EventArgs +{ + // New test results. + public IEnumerable? NewTestResults { get; private set; } + + // Test run statistics, e.g. how many tests passed or failed so far. + public ITestRunStatistics? TestRunStatistics { get; private set; } + + // Currently running tests. + public IEnumerable? ActiveTests { get; private set; } +} + +``` + +```json +{ + "Version": 7, + "MessageType": "TestExecution.StatsChange", + "Payload": { + "NewTestResults": [ + { + "TestCase": { + "Id": "66367201-6976-c7c2-37ef-ac9e96858025", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod2", + "DisplayName": "TestMethod2", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + }, + "Attachments": [], + "Outcome": 1, + "ErrorMessage": null, + "ErrorStackTrace": null, + "DisplayName": null, + "Messages": [], + "ComputerName": null, + "Duration": "00:00:00.0000401", + "StartTime": "2022-10-20T07:22:58.0857669+02:00", + "EndTime": "2022-10-20T07:22:58.0857669+02:00", + "Properties": [ + { + "Key": { + "Id": "ExecutionId", + "Label": "ExecutionId", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Guid" + }, + "Value": "00000000-0000-0000-0000-000000000000" + }, + { + "Key": { + "Id": "ParentExecId", + "Label": "ParentExecId", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Guid" + }, + "Value": "00000000-0000-0000-0000-000000000000" + }, + { + "Key": { + "Id": "InnerResultsCount", + "Label": "InnerResultsCount", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Int32" + }, + "Value": 0 + } + ] + } + ], + "TestRunStatistics": { + "ExecutedTests": 2, + "Stats": { + "Passed": 2 + } + }, + "ActiveTests": [ + { + "Id": "ef7f4646-afa1-4482-25a2-1aabbbdbb9bc", + "FullyQualifiedName": "MSTest1.UnitTest1.TestMethod3", + "DisplayName": "TestMethod3", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "S:\\p\\vstest\\playground\\MSTest1\\bin\\Debug\\net472\\MSTest1.dll", + "CodeFilePath": null, + "LineNumber": -1, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscoverer.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "MSTest1.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ] + } +} +``` + +#### TestExecution.StatsChange notification (Client) + +Same as above [TestExecution.StatsChange notification (Runner)](#testexecutionstatschange-notification-runner). + +### Datacollection + +TODO + +### .NET Implementation + +#### Architecture + +#### Extension points diff --git a/docs/Problems.md b/docs/Problems.md new file mode 100644 index 0000000000..877d78c1a7 --- /dev/null +++ b/docs/Problems.md @@ -0,0 +1,11 @@ +# Problems and inconsistencies + +Client connection to runner, does not detect that we are connected in the same way as runner to testhost. + +Client to runner needs a message sent back (testsession.connected), while testhost does not need any message because the underlying tcp client will detect that testhost connected and will send it work right away. What is the unified way to do this? + +There are some requests that need no response, like extensions initialize. + +Translation layer uses 4 different messages for run, but sends the same payload in all of them with mixed info that is not necessary for some of the messages (testcases / sources, isDebug). When running with sources and default testhost launcher, we send (from translation layer) incorrectly the same message as when running with testcases. + +The messages between runner and testhost have the same names, and sometimes different payloads. diff --git a/docs/RFCs/0001-Test-Platform-Architecture.md b/docs/RFCs/0001-Test-Platform-Architecture.md new file mode 100644 index 0000000000..8f6f6179f8 --- /dev/null +++ b/docs/RFCs/0001-Test-Platform-Architecture.md @@ -0,0 +1,270 @@ +# 0001 Test Platform Architecture + +## Summary +This document outlines the architecture of the Visual Studio Test Platform. It +covers the core components and the runner. + +## Motivation +The test platform should help the developer through out [testing life +cycle][testplatform-concept-blog]. In terms of **acquisition**, the test +platform may provide a test runner which is available in key operating systems +and devices. + +Based on test strategy of a product, tests are grouped into various categories +as per semantics (the product area they validate), or the phase they run +(Developer Machine, Continuous Integration or Continuous Deployment). Test +platform should allow **selection** of tests. Various aspects of test execution +may need to be **configurable** and shared across a team. During test execution, +diagnostics from the product should be available as **reporting**. The reporting +and collection of diagnostics data may be extensible to support coverage, +loggers, analytics and so on. + +The platform should provide an extensibility model for test frameworks (and +language runtimes). A developer acquainted with the aspects of test platform can +use the same set of operations (test filtering, test execution, reporting) +irrespective of the test framework (or language runtime) of the test. + +[testplatform-concept-blog]: https://blogs.msdn.microsoft.com/visualstudioalm/2016/07/25/evolving-the-visual-studio-test-platform-part-1 + +## Detailed Design + +The overall architecture of the test platform is detailed in the block diagram +below with all the extensibility points colored in green. + +[![vstest.console overall architecture](Images/vstest.console-overall-architecture.png)](Images/vstest.console-overall-architecture.png) + +This architecture has four major components: + +1. **Test Runner** is the command line entrypoint to test platform + (`vstest.console`). +2. **Test Execution Host** is an architecture and framework specific process + that actually loads the test container and executes tests. +3. **Data Collector Host** process hosts various test execution data + listeners. +4. **IDE/Editor** process is used by developer for Edit/Build the application + and trigger test runs. + +We will describe each component in the following sections. + +### Test Runner +Test runner is the primary entry point to the test platform. It takes a test +container with a set of configuration settings as input. The language runtime, +architecture, framework for test execution are inferred from the settings. Based +on these parameters, it spawns a **Test Execution Host** process. + +Test platform separates the test execution from the test runner for the +following reasons: + +* Tests can target any language runtime. E.g. .NET, Javascript, Python etc. +* Tests can target a specific version of the runtime. E.g. .NET 4.6 or .NET + Standard 1.4 +* Tests can target a specific platform architecture. E.g. x64 or x86 +* Tests can target a different device +* Test runner (or the loggers) need to capture details even in case test + execution host terminates abnormally +* Test execution can be ported to newer devices/platforms/runtimes without any + impact on test runner + +An example: `vstest.console` can be `net46` but run tests targeting +`netcoreapp1.0`. The tests are loaded in a different process (`dotnet.exe`) +which hosts the `netcoreapp1.0` CLR runtime. If user upgrades their test project +to `netcoreapp2.0`, the tests will continue to run. + +**Host extensibility** allows developers to author custom test execution hosts. +One of the primary use case for this is running tests on a device. E.g. in case +of running tests against a Universal Windows device, the test host is launched +on a Windows Phone device. The test case and run settings are passed on to the +test host using a JSON over Sockets protocol. + +Using the **Logger extensibility** feature, an extension can listen to the *Test +Result* for each test case. It can also recieve a set of *Test Attachments* +generated during the test execution. E.g. Trx logger generates an xml report of +test results, elapsed time for the run etc. using this mechanism. + +If data collectors are specified in the run settings, the **Data Collector +Host** is spawned. We will cover it in more details in another section below. + +The test runner component loads host extensions and logger extensions in it's +process. Data collectors are not loaded in this process. The tests are also not +loaded here, it is completely agnostic to test runtime/platform. + +### Test Execution Host +The test host connects to the test runner, and waits for commands to discover +and execute tests. Details of the protocol are available in [test discovery +protocol][] and [test execution protocol][] documents. + +A test host is specific to the language runtime, version and platform architecture +of the test containers. E.g. `testhost.x86.exe` is the test host for a test +container (assembly) targeting .NET Framework 4.6, x86 architecture; where as +`testhost.exe` is spawned for .NET Framework 4.6, x64 architecture. The test +host for .NET Core is platform agnostic and is launched on the required +`dotnet.exe` (x86 or x64). + +However the test host is agnostic of test framework. It has no knowledge of +*what* a Test Case or Test Suite is. It delegates the responsibility of +discovering and executing the tests to **Test Adapters**. An adapter understands +the intricacies of test framework. E.g. the NUnit adapter understands tests +authored in NUnit framework, it can discover and execute them. + +**Adapter Extensibility** provides an extensible way for developers to plug in +an adapter for the test framework of their choice. An adapter needs to implement +a specific interface that is understood by the test host. [Test Adapter +Extensibility][test adapter extensibility] document covers this in more detail. + +A Data Collector monitors the test execution and collects diagnostic, +performance, and other data for the code under test. If a data collector needs +to collect intrusive data, it may use the **In-Proc Data Collection +Extensibility** API for this. In-proc data collectors, as the name suggests, are +loaded within the test execution host. They can subscribe the test run and test +case level events. + +We will discuss out of process data collectors in the next section. + +[test discovery protocol]: 0002-Test-Discovery-Protocol.md +[test execution protocol]: 0003-Test-Execution-Protocol.md +[test adapter extensibility]: 0004-Adapter-Extensibility.md + +### Data Collector Host +Out of process data collectors are hosted in the data collector host process. +Similar to in-proc data collector, these data collectors also receive test run +and test case level start/stop events. Usually the data collector starts/stops +monitoring in these event handlers. Further a data collector can generate +attachments which are available in the test results. E.g. a video data +collector can record a browser session while the test case is executing, it may +attach the recorded video to the test result (if the test case failed) for +further analysis by the user. + +Data collectors are hosted in a separate process for several reasons: + +1. Data collector may not be intrusive, it should not impact the test execution + itself. E.g. a performance data collector may not be accurate if it runs + within the execution process +2. The test host process can be of a totally different architecture, framework. + However data collectors are usually generic. E.g. the video data collector + should record videos for JS or .NET tests alike. + +Data collector host process is spawned only if data collection is configured in +the test run settings. + +Detailed design of a data collector is available in the [Data Collector +Protocol][data collector protocol] document. + +[data collector protocol]: 0006-DataCollection-Protocol.md + +### IDE/Editor +An IDE/Editor can connect to `vstest.console` over a JSON protocol. It invokes +the runner with a specific port to connect. Once connected, the runner can +receive commands to discover or execute tests. The Editor needs to specify a +test container for the run, and any `runsettings` as specified by user. The +runner returns list of discovered `TestCase` for discovery command. For test +execution it returns a list of `TestResult` objects. + +The separation of `vstest.console` as a different process allows non .NET based +Editors to use test platform capabilities. Secondly, the runner process loads +several extensions (loggers, host extensions) at runtime; process isolation +allows flexibility for Editor to not load these extensions in-proc. + +This protocol is documented in [Editor API Specification][editor protocol] +document. + +[editor protocol]: 0007-Editors-API-Specification.md + +### Flow: Test Runner - Test Host + +1. A user would spawn an instance of the runner with a set of test containers + and settings for the test session. +2. The runner would then process those settings to figure out key decision + parameters for the run some of which are: + * The architecture the tests should run on.(x86/x64) + * The framework that the tests are on.(Desktop Fx/Core Fx) + * Data collectors if enabled. + * Path to user specified extension assemblies. +3. It uses the architecture and framework specified to spawn an instance of a + test host process that satisfies these settings. +4. The runner also starts an instance of a TCP server to communicate with the + test host process. +5. After the test host launches it sets up a client connection with the runner. +6. The runner would then send through the test containers with the user + specified settings to the test host process. +7. The test host process performs the requested operation - either + discovery/execution - and returns back the results in batches to the runner. +8. The test host signals an operation end to the runner which then notifies the + loggers and bails out. + +The protocol between the runner and the test host for discovery and execution is +detailed below. The interaction between the runner, test host and data collector +is detailed in a different document. + +#### Discovery: + +![Discovery Protocol](Images/vstest.console-discovery.png) + +1. After launching the test host process as detailed above, the runner sends a + TestDiscovery.Initialize message with the full path to extension assemblies + as an `IEnumerable`. The test host then uses this to load the + extensions before hand. This is an optional step and will not be sent if + there are no additional extensions but the default. +2. The runner then sends a TestDiscovery.Start message with a + [DiscoveryPayload][] which contains the test containers and the session level + settings. +3. The TestPlatform.Engine component in test host process invokes the loaded + adapters with these containers to discover tests. +4. When the adapter finds a test it notifies the TestPlatform.Engine which + caches these test cases. +5. When the maximum cache size is hit or on a cache timeout the engine passes on + a list of test cases in a `TestDiscovery.TestsFound` message as a + `List` +6. The adapter can also notify the TestPlatform.Engine of any errors/warnings + during discovery via a message. This messages are then sent to the runner as + a TestSession.Message with a [TestMessagePayload][] This is an optional + message. +7. On discovery completion the adapter notifies the TestPlatform.Engine which + then sends a TestDiscovery.Completed message to the runner with a + [DiscoveryCompletePayload][] +8. On receiving a discovery complete from the test host the runner then ends the + communication with a TestSession.Terminate. +9. On receiving a terminate message the test host process cleanly exits. + +[DiscoveryPayload]: ./src/Microsoft.TestPlatform.ObjectModel/Client/DiscoveryCriteria.cs +[TestMessagePayload]: ./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestMessagePayload.cs +[DiscoveryCompletePayload]: ./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/DiscoveryCompletePayload.cs + +#### Execution: + +![Execution Protocol](Images/vstest.console-execution.png) + +1. After launching the test host process as detailed above the runner sends a + TestExecution.Initialize message with the full path to extension assemblies + as an `IEnumerable`. The test host then uses this to load the + extensions needed for execution before hand. This is an optional step and + will not be sent if there are no additional extensions but the default. +2. The runner then sends a TestExecution.StartWithSources message with a + [TestRunCriteriaWithSources][] which contains the test containers and the + session level settings. +3. The TestPlatform.Engine component in test host process invokes the loaded + adapters with these containers to execute tests. +4. The adapter notifies the TestPlatform.Engine of a test case start, test + result and a test case end. It maintains the test results received in a + cache. +5. When the maximum cache size is hit or on a cache timeout the + TestPlatform.Engine passes on a list of test results in a + TestExecution.TestResults message as a [TestRunStatsPayload][] +6. The adapter can also notify the TestPlatform.Engine of any errors/warnings + during execution via a message. This messages are then sent to the runner as + a TestSession.Message with a [TestMessagePayload][]. This is an optional + message. +7. On execution completion the adapter notifies the engine which then sends a + TestExecution.Completed message to the runner with a [TestRunCompletePayload][]. +8. On receiving a execution complete from the test host the runner then ends the + communication with a TestSession.Terminate. +9. On receiving a terminate message the test host process cleanly exits. + +[TestRunCriteriaWithSources]: ./src/Microsoft.TestPlatform.CommunicationUtilities/ObjectModel/TestRunCriteriaWithSources.cs +[TestRunStatsPayload]: ./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestRunStatsPayload.cs +[TestMessagePayload]: ./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestMessagePayload.cs +[TestRunCompletePayload]: ./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestRunCompletePayload.cs + + + +#### Note: +All IPC within the test platform is via sockets and json. diff --git a/docs/RFCs/0002-Test-Discovery-Protocol.md b/docs/RFCs/0002-Test-Discovery-Protocol.md new file mode 100644 index 0000000000..f3a045af52 --- /dev/null +++ b/docs/RFCs/0002-Test-Discovery-Protocol.md @@ -0,0 +1,51 @@ +# 0002 Test Discovery Protocol + +## Summary +This note details the protocol improvements in the new dotnet-test integration with IDE's. The focus will be more on the delta with the older protocol and the breaking changes. + +## Motivation +These protocol changes provide the following improvements to dotnet-test: +* Ability to accept multiple containers +* Consistent experience with the capabilities that vstest.console provides - Rocksteady adapter and Logger extensibility. + +## Detailed Design + +### Terminology +* **IDE adapter (existing dotnet-test)** : Component that listens to messages from dotnet-test and populates the IDE with tests discovered or test results. For VS IDE this is the projectK Adapter. +* **TestRunner**: The test framework specific runner that discovers/executes tests in a container for that framework. This is dotnet-test-mstest / dotnet-test-xunit / dotnet-test-nunit. +* **Dotnet-test/vstest.console(Runner)**: Orchestrator of discovery or execution operations with one or more test host processes which then communicates back to the adapter the test cases or test results received from the test host process. This component also hosts the logger functionality which logs the test results in a file or posts them to a server. +* **Test host process**: The host process that loads the rocksteady engine which then calls into the Rocksteady adapters to discover/execute tests. This component communicates back to the client (dotnet-test or vstest.console.exe) with the set of tests discovered or test results. +* **Rocksteady adapter**: The framework specific adapter that discovers or executes tests of that framework. These adapters are invoked in-proc by the rocksteady engine via the ITestDiscoverer and ITestExecutor interfaces. +* **TPV2**: The new cross-plat test platform which encompasses the Runner, test host and the adapters. This is the framework that enables users to run tests. + +### Protocol +This is the existing dotnet-test integration with IDEs: +![dotnet-test v1 protocol](https://github.com/dotnet/cli/raw/rel/1.0.0/Documentation/images/DotnetTestDiscoverTests.png) + +Reference: https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/dotnet-test-protocol.md + +Here is what the changed wire protocol looks like after TPV2 integrates with dotnet-test: +![dotnet-test v2 protocol](Images/dotnet-test-protocol-v2-discovery.png) + +### Breaking changes for Adapter(IDE) +1. The object model used via the wire protocol will change from using [Microsoft.Extensions.Testing.Abstractions.Test](https://github.com/dotnet/cli/blob/rel/1.0.0/src/Microsoft.Extensions.Testing.Abstractions/Test.cs) to [Microsoft.VisualStudio.TestPlatform.ObjectModel.TestCase](./src/Microsoft.TestPlatform.ObjectModel/TestCase.cs). +2. The IDE adapter would now be sending the test Containers along with test platform settings to dotnet-test. +3. The IDE adapter would now receive test cases in a batch as opposed to a single test case earlier to improve performance. +4. The IDE adapter would now receive a [DiscoveryCompletePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/DiscoveryCompletePayload.cs) message with the TestDiscovery.Completed message. This would have the run stats and the last set of test cases found. + +### Breaking Changes for Frameworks +1. TestRunner would cease to exist. Framework writers would have to port their Rocksteady adapters to Core CLR to support all .NET Core scenarios. + +### New Flow +1. After the optional version check, the IDE adapter can choose to optionally send paths to extensions it wants to initialize the test platform with. +2. It then sends a TestDiscovery.Start message with a [DiscoveryRequestPayload](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Payloads/DiscoveryRequestPayload.cs) which contains the sources and settings. Dotnet-test will start the test host process and pass on the containers and settings to it. +3. The testhost then invokes the rocksteady adapter with the containers to discover tests. It uses the ITestDiscoverer.DiscoverTests as its entry point to the Rocksteady Adapter. +4. The Rocksteady adapter then sends each test case discovered to the test host which caches this information. +5. The test host passes on the cached test cases to dotnet-test in batches when a cache size is hit which then forwards it over to the IDE adapter. +6. Optionally the IDE adapter may also receive a TestSession.Message with a [TestMessagePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestMessagePayload.cs) notifying of any issues during discovery. +7. After all tests are discovered, the test host sends a TestDiscovery.Completed message with a [DiscoveryCompletePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/DiscoveryCompletePayload.cs), which has the stats and the last set of test cases found, to dotnet-test. +8. dotnet-test then sends a TestDiscovery.Completed with the [DiscoveryCompletePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/DiscoveryCompletePayload.cs) to the IDE adapter. +9. Once the IDE adapter is done, it sends dotnet-test a TestSession.Terminate which will cause dotnet test to shutdown. + +### Notes +1. Since TPV2 supports discovery on multiple containers with a bunch of settings, the IDE adapter can now pass in the containers as a List to dotnet-test. Dotnet-test would then orchestrate among (multiple) test host processes and update the Adapter with the tests found. diff --git a/docs/RFCs/0003-Test-Execution-Protocol.md b/docs/RFCs/0003-Test-Execution-Protocol.md new file mode 100644 index 0000000000..add7b7bcb9 --- /dev/null +++ b/docs/RFCs/0003-Test-Execution-Protocol.md @@ -0,0 +1,68 @@ +# 0003 Test Execution Protocol + +## Summary +This note details the protocol improvements in the new dotnet-test integration with IDE's. The focus will be more on the delta with the older protocol and the breaking changes. + +## Motivation +These protocol changes provides the following improvements to dotnet-test: +* Ability to accept multiple containers +* Container level parallelization +* Consistent experience with the capabilities that vstest.console provides - Rocksteady adapter and Logger extensibility. + +## Detailed Design + +### Terminology +* **IDE adapter (existing dotnet-test)** : Component that listens to messages from dotnet-test and populates the IDE with tests discovered or test results. For VS IDE this is the projectK Adapter. +* **TestRunner**: The test framework specific runner that discovers/executes tests in a container for that framework. This is dotnet-test-mstest / dotnet-test-xunit / dotnet-test-nunit. +* **Dotnet-test/vstest.console(Runner)**: Orchestrator of discovery or execution operations with one or more test host processes which then communicates back to the adapter the test cases or test results received from the test host process. This component also hosts the logger functionality which logs the test results in a file or posts them to a server. +* **Test host process**: The host process that loads the rocksteady engine which then calls into the Rocksteady adapters to discover/execute tests. This component communicates back to the client (dotnet-test or vstest.console.exe) with the set of tests discovered or test results. +* **Rocksteady adapter**: The framework specific adapter that discovers or executes tests of that framework. These adapters are invoked in-proc by the rocksteady engine via the ITestDiscoverer and ITestExecutor interfaces. +* **TPV2**: The new cross-plat test platform which encompasses the Runner, test host and the adapters. This is the framework that enables users to run tests. + +### Protocol +This is the existing dotnet-test integration with IDEs: +![dotnet-test v1 protocol](https://github.com/dotnet/cli/raw/rel/1.0.0/Documentation/images/DotnetTestExecuteTests.png) + +Reference: https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/dotnet-test-protocol.md#test-execution + +Here is what the changed wire protocol looks like after TPV2 integrates with dotnet-test: +![dotnet-test v2 protocol](Images/dotnet-test-protocol-v2-execution.png) + +And this protocol helps one launch a custom host or perform debugging: +![dotnet-test v2 protocol for custom host](Images/dotnet-test-protocol-v2-execution-customhost.png) + +### Breaking changes for Adapter(IDE) +1. The object model used via the wire protocol will change from using [Microsoft.Extensions.Testing.Abstractions.Test](https://github.com/dotnet/cli/blob/rel/1.0.0/src/Microsoft.Extensions.Testing.Abstractions/Test.cs) and [Microsoft.Extensions.Testing.Abstractions.TestResult](https://github.com/dotnet/cli/blob/rel/1.0.0/src/Microsoft.Extensions.Testing.Abstractions/TestResult.cs) to [Microsoft.VisualStudio.TestPlatform.ObjectModel.TestCase](./src/Microsoft.TestPlatform.ObjectModel/TestCase.cs) and [Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult](./src/Microsoft.TestPlatform.ObjectModel/TestCase.cs) appropriately. +2. The IDE adapter would now be sending the test Containers along with test platform settings to dotnet-test. +3. The IDE adapter would now receive test results in a batch in the [TestRunStatsPayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestRunStatsPayload.cs) as opposed to a test start, test result and a test end earlier. The TestRunStatsPayload will also have the statistics of passed/failed/skipped tests so far along with list of tests currently being run. +4. The IDE Adapter would now receive a [TestRunCompletePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestRunCompletePayload.cs) with TestExecution.Completed which would have the run statistics along with the results for last set of tests run. + +### Breaking Changes for Frameworks +1. TestRunner would cease to exist. Framework writers would have to port their Rocksteady adapters to Core CLR to support all .NET Core scenarios. + +### New Flow for Run Tests: +1. After the optional version check, the IDE adapter can choose to optionally send paths to extensions it wants to initialize the test platform with. +2. The IDE adapter then sends either a TestExecution.RunTestsWithContainersOnDefaultHost (or) TestExecution.RunTestsWithTestsOnDefaultHost with a [TestRunRequestPayload](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Payloads/TestRunRequestPayload.cs) that contains containers (or) tests respectively. +3. dotnet-test would then spawn an instance of the default test host process for the configuration specified. +4. dotnet-test then sends across the extensions if the IDE adapter has specified any, followed by the containers/test cases to run tests on. +5. The test host then invokes the Rocksteady adapter with the containers/tests to run via the ITestExeuctor.RunTests entry point. +6. The Rocksteady adapter runs each test and calls back to the test host when a test starts, when a test result is received and when a test ends. +7. The test host process maintains a cache of the test results received above. +8. When the cache size is met the test host process sends a TestExecution.TestResults with a [TestRunStatsPayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestRunStatsPayload.cs), which contains the cached results in a batch, to dotnet-test which then forwards it to the IDE adapater. +9. Optionally the IDE adapter may also receive a TestSession.Message with a [TestMessagePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestMessagePayload.cs) notifying of any issues during execution. +10. When execution is complete, the test host process sends a TestExecution.Completed message to dotnet-test with a [TestRunCompletePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/TestRunCompletePayload.cs) which contains the run statistics along with the results for the last set of tests run. +11. dotnet-test then forwards this message to the IDE adapter. +12. Once the IDE adapter is done, it sends dotnet-test a TestSession.Terminate which will cause dotnet-test to shutdown. + +### New Flow for Debug Tests/Custom test host process: +This flow would have the same protocol to bootstrap the test platform which is essentially #1 in the default flow above. Here is the sequence of steps after the initialization phase: + +1. The IDE adapter sends a TestExecution.GetProcessStartInfo with a [TestRunRequestPayload](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Payloads/TestRunRequestPayload.cs) that contains the container/tests it wants to execute. +2. dotnet-test then reverts back to the IDE adapter with a TestExecution.CustomTestHostLaunch with a [ProcessStartInfo](./src/Microsoft.TestPlatform.ObjectModel/TestProcessStartInfo.cs) payload which has the process start info of the default test host. As part of the arguments, we send a port that the test host should connect to communicate with dotnet-test. +3. At this point, the adapter can launch the test host process (and attach to it for debugging if it chooses to). +4. Once the test host starts, it sends dotnet-test a handshake TestHost.Connected message that indicates it is ready to receive commands. + +After these set of actions the protocol is the same as the default flow above, which is essentially from Step #4 above. + +### Notes: +1. Since TPV2 supports execution on multiple containers with a bunch of settings the Adapter can now pass in the containers as a List to dotnet-test. Dotnet-test would then orchestrate among (multiple) test host processes and update the Adapter with the test results. diff --git a/docs/RFCs/0004-Adapter-Extensibility.md b/docs/RFCs/0004-Adapter-Extensibility.md new file mode 100644 index 0000000000..7ab9ef7c8c --- /dev/null +++ b/docs/RFCs/0004-Adapter-Extensibility.md @@ -0,0 +1,306 @@ +# 0004 Adapter Extensibility + +## Summary +Allow the test platform to discover/run tests based on a 3rd party test framework. This would be done via an adapter for the corresponding framework that understands how tests are defined in that framework and can run them providing back the test platform with results. + +## Motivation +Users are free to write tests based on a test framework of their choice (be it xunit/nunit/mstest etc.). The test platform should be able to run any kind of tests, provided there is a corresponding adapter that understands the framework and can discover/run tests. This provides the users a choice of test framework in unison with the other features of the test platform - Logging, data collection etc. + +## Detailed Design + +This design will be detailed through the following sections: + +1. Specifying an adapter +2. Test Platform - Adapter interaction +3. Writing an adapter +4. Adapter specific settings + +### Specifying an Adapter +Adapters can be provided to the test platform in one of the following ways: + +1. "/testadapterpath:" This is a switch to vstest.console.exe that feeds in the location of the adapter to the test platform. The PathToAdapter is either the full path to the adapter directory or the relative path to the current directory. For instance: + + ``` + /testadapterpath:"C:\Adapters\" + ``` + + This picks up files which have ***.TestAdapter.dll** in their name from C:\Adapters\ and loads them in as adapters to the test platform. This is done to optimize the number of assemblies the test platform considers as adapters. + + ``` + C:\Projects\UnitTestProject\bin\debug> vstest.console.exe /testadapterpath:"Adapters" + ``` + + This picks up all files which have ***.TestAdapter.dll** in their name from C:\Projects\UnitTestProject\bin\debug\Adapters and loads them in as adapters to the test platform. + +2. Runsettings via "TestAdaptersPaths" node in the RunConfiguration section. Here is a sample on how this can be specified: + + ```xml + + + + C:\Adapters;Adapters;%temp%\Adapters + + + ``` + + One can provide multiple paths that are ';' separated. Paths can be absolute like "C:\Adapters" or relative to the current directory like "Adapters" or can use environment variables like "%temp%\Adapters". Similar to /testadapterpath only files with ***.TestAdapter.dll** in their name from the above locations are fed in as adapters to the test platform. This specification will also work in non-commandline scenarios like VS IDE which can also take in a runsettings. + +3. VSIX based adapters. Any vsix extension that has an Asset in the vsixmanifest file with type "UnitTestExtension" is a candidate adapter. This is picked up automatically as an adapter in VS IDE. In vstest.console.exe these adapters are picked up when the '/usevsixextensions' switch is provided like below: + + ``` + vstest.console.exe unittestproject.dll /usevsixextensions:true + ``` + +4. Nuget based Adapters in VS IDE. For seamless integration with adapters shipping as nuget packages, in VS IDE we automatically pick up referenced nuget packages that have files which satisfy ***.TestAdapter.dll** in their name and provide these files as adapters to the test platform. + +5. Default Adapters in Extensions folder. All the default adapters required by the test platform are packaged along with it in a folder that always gets probed. This folder lies where vstest.console.exe lies and is called the "Extensions" folder. One can get to the location of vstest.console by putting in a "where vstest.console" in a developer command prompt for VS. Any assembly placed in this folder is a candidate adapter. This is however not always recommended since this is specific to a system and involves changing contents in a VS installation folder. + +### Test Platform - Adapter interaction +After the adapters are provided to the test platform via one or more of the entry points above, it then loads these adapters in the host process that runs the tests and calls into the adapter via one of the entry points defined in the interfaces detailed in the following sections. + +#### Discovery + +```csharp +Interface ITestDiscoverer +{ + /// + /// Discovers the tests available from the provided container. + /// + /// Collection of test containers. + /// Context in which discovery is being performed. + /// Logger used to log messages. + /// Used to send testcases and discovery related events back to Discoverer manager. + DiscoverTests(IEnumerable containers, IDiscoveryContext discoveryContext, + IMessageLogger logger, ITestCaseDiscoverySink discoverySink)} +} +``` +The test platform iterates through all the loaded adapters and probes each one with the set of containers to get all the test cases defined in them. To optimize this process each adapter can have: +1. FileExtension attribute that informs the test platform what file extension types each adapter is interested in. The following section details this with an example. +2. [Category attribute](0020-Improving-Logic-To-Pass-Sources-To-Adapters.md) that informs the test platform whether adapter supports native or managed assemblies (applicable only when adapters support assemblies i.e. .dll and .exe file extensions). + +For a single adapter the test platform calls ITestDiscoverer.DiscoverTests() during Discovery where the test platform provides the containers to discover tests from. The adapter uses the discoverySink instance to report back on test cases that it finds to the test platform. The adapter can also log any status/ warnings via the logger instance passed in and can use the discoveryContext to figure out the settings used for the current session. More on this follows in a later section. If the adapter finds a test case it understands in a container, it creates a TestCase object and stamps an executor URI on the object. The URI notifies the test platform of the ITestExecutor that can run that test case. This avoids another probing operation during execution. + +#### Execution +```csharp +Interface ITestExecutor +{ + /// + /// Runs only the tests specified by parameter 'tests'. + /// + /// Tests to be run. + /// Context to use when executing the tests. + /// Handle to the framework to record results and to do framework operations. + void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle); + + /// + /// Runs 'all' the tests present in the specified 'containers'. + /// + /// Path to test container files to look for tests in. + /// Context to use when executing the tests. + /// Handle to the framework to record results and to do framework operations. + void RunTests(IEnumerable containers, IRunContext runContext, IFrameworkHandle frameworkHandle); + + /// + /// Cancel the execution of the tests. + /// + void Cancel(); +} +``` +The test platform can call into the adapters with a set of + +1. Containers or +2. Test cases to execute tests. + +ITestExecutor.RunTests with a set of test cases gets called in mostly VS IDE scenarios("Run Selected tests" scenarios) where a discovery operation has already been performed. This would already have the information as to what ITestExecutor can run the test case via a URI property. The platform would then just call into that specific executor to run the test cases. + +ITestExecutor.RunTests with a set of containers gets called when the platform does not already have a set of test cases to work with. This is the case for CLI scenarios like vstest.console.exe where the containers are just specified via an argument. This would also be the case for "Run All" scenarios from VS IDE. The adapter would then usually perform a discovery of all the test cases it understands in the container and run them reporting back the results of the run to the platform via the frameworkHandle instance. Unlike in the ITestExecutor.RunTests with a list of test cases, here the test platform is not aware of the exact executor that would run all the tests in the containers provided. So, it probes through all the adapters to run tests similar to the discovery phase. + +The adapter can use the following API's exposed via the IFrameworkHandle interface to report back the status of the test run to the test platform: +```csharp +/// +/// Notify the platform about the test result. +/// +/// Test Result to be sent to the adapter. +void RecordResult(TestResult testResult); + +/// +/// Notify the platform about starting of the test case. +/// The platform sends this event to data collectors enabled in the run. +/// If no data collector is enabled, then the event is ignored. +/// +/// testcase which will be started. +void RecordStart(TestCase testCase); + +/// +/// Notify the platform about completion of the test case. +/// The platform sends this event to data collectors enabled in the run. +/// If no data collector is enabled, then the event is ignored. +/// +/// testcase which has completed. +/// outcome of the test case. +void RecordEnd(TestCase testCase, TestOutcome outcome); + +/// +/// Notify the platform about run level attachments. +/// +/// attachments produced in this run. +void RecordAttachments(IList attachmentSets); +``` + +An attachment here, could be any file that the adapter generates during the run / a file that the test writer would want attached to a run. This is surfaced to VS IDE as part of the output for a test case. More details on this follows in the "Writing an Adapter" section below. + +#### Data Driven tests +Data driven test cases can have multiple test results, one against each data value. In that case adapters would post a RecordStart, RecordEnd and RecordResult for each data value. If the TestResult objects posted for all the data values are associated with the same TestCase object, then the VS IDE client would create a single entry in the Test Explorer with the aggregated outcome along with a summary for each test case in a separate view. If the TestResult objects posted for all the data values are associated with their own TestCase objects with different ID's, then each test result would be different entries in the VS IDE Test Explorer. + +#### Filtering +The user might optionally also pass in a test case filter to run a subset of tests. In such cases along with invoking the adapters with the container set, the test platform also provides a callback in the run context instance in the form of [GetTestCaseFilter](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/IRunContext.cs#L38) that enables adapters to filter a [TestCase](./src/Microsoft.TestPlatform.ObjectModel/TestCase.cs) object. The adapters can query this API with the set of properties it supports filtering on, along with a provider of TestProperty instances for each property. From the filter expression returned by this API, the adapter would then just have to perform a [ITestCaseFilterExpression.MatchTestCase](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/ITestCaseFilterExpression.cs#L20) on each test case which returns false if the test case has been filtered out. Below is sample code that demonstrates filtering: + +```csharp +static readonly TestProperty PriorityProperty = TestProperty.Register( + "CustomDiscoverer.Priority", "Priority", typeof(int), TestPropertyAttributes.Hidden, typeof(TestCase)); + +// Test properties supported for filtering +Dictionary supportedProperties = + new Dictionary(StringComparer.OrdinalIgnoreCase); + +// In the Adapter initialization phase +supportedProperties[PriorityProperty.Label] = PriorityProperty. + +// Inside the execute tests method. +var filterExpression = runContext.GetTestCaseFilter(supportedProperties, (propertyName) => +{ + TestProperty testProperty = null; + supportedProperties.TryGetValue(propertyName, out testProperty); + return testProperty; +}); + +// The adapter can then query if the test case has been filtered out using the following snippet. +if (filterExpression != null && + filterExpression.MatchTestCase(currentTest, (propertyName) => + { + var testProperty = supportedProperties.TryGetValue(propertyName, out testProperty); + return currentTest.GetPropertyValue(testProperty); + }) == false) +{ + // ... +} +``` + +#### TestCase Extensibility +Adapters can choose to fill in custom data into the [TestCase](./src/Microsoft.TestPlatform.ObjectModel/TestCase.cs) object through its [Property](./src/Microsoft.TestPlatform.ObjectModel/TestObject.cs#L112) bag. This data can be: + +1. If the test case is adorned by a "Do Not Run" attribute. +2. If the test case is data driven, the values of the data to drive it with. + +and so on. During test execution the ITestExecutor can re-use this data to run the test. For instance, it may choose not to run the test in the first example above or feed in the stored data to data drive the test in the second example. + +#### Alternate Solutions + +1. Adapter extensibility can also be at a process level as opposed to using reflection to load the adapters. As long as the adapter understands the protocol with the client this could be a viable option. However there are two issues with this approach: + * The adapter would need to maintain multiple processes one for each architecture and framework. + * The test platform has other extensibility points in the host process that cannot be exposed if the adapter controls the host process unless each adapter initializes these extensions on its own. + +### Writing an Adapter + +If one needs to write a new adapter, it just needs to implement the two interfaces defined above along with a shipping mechanism so that it can be plugged into one of the entry points to the platform specified earlier. The adapter would have the following: + +```csharp +[FileExtension(".xml")] +[DefaultExecutorUri("executor://XmlTestExecutor")] +class TestDiscoverer : ITestDiscoverer +{ + void DiscoverTests(IEnumerable containers, IDiscoveryContext discoveryContext, + IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + // Logic to get the tests from the containers passed in. + + //Notify the test platform of the list of test cases found. + foreach (TestCase test in testsFound) + { + discoverySink.SendTestCase(test); + } + } +} + +[ExtensionUri("executor://XmlTestExecutor")] +class TestExecutor : ITestExecutor +{ + void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) + { + // Logic to run xml based test cases and report back results. + } + + void RunTests(IEnumerable containers, IRunContext runContext, IFrameworkHandle frameworkHandle) + { + // Logic to discover and run xml based tests and report back results. + } + + void Cancel() + { + // Logic to cancel the current test run. + } +} +``` + +As detailed in the earlier section the TestDiscoverer.DiscoverTests gets called by the test platform during discovery which stamps an executor URI on each test case that it reports back, which in the above case is "executor://XmlTestExecutor". The test discoverer can also inform the engine what file types it is interested in via the FileExtension attribute. The platform would then call into the adapter only if the container's extension type falls in the list of supported extension types advertised by the adapter. In the above case the TestDiscoverer only gets called if the container is an xml file. This ensures that the right discoverer is picked up quickly. If a discoverer does not have a FileExtension attribute then it gets probed by the platform for all file extension types. + +The TestExecutor above is adorned by a ExtensionUri attribute which advertises the executor URI of this executor. The test platform uses this information to allocate test cases discovered and stamped by a URI in the discovery phase above to the right executor. Execution, being a long running operation can be cancelled by the test platform via ITestExecutor.Cancel(). The adapter is then expected to stop execution and clean up resources. Any test result that the adapter tries to send back to the test platform after a cancel has been notified would result in a TestCanceledException. + +The adapters are also provided with the runsettings xml used for the run via the IDiscoveryContext.RunSettings for discovery and IRunContext.RunSettings for execution. + +### Adapter Specific Settings +The adapters can also incorporate user provided settings via the runsettings XML by adding what is called as a Settings Provider. A settings provider would implement an ISettingsProvider interface and would be called before a discovery/ execution operation with the settings defined for that adapter in the runsettings XML(if any). + +```csharp +interface ISettingsProvider +{ + /// + /// Load the settings from the reader. + /// + /// Reader to load the settings from. + void Load(XmlReader reader); +} +``` +A sample settings provider would look like below: + +```csharp +[SettingsName("XmlAdapter") +public class XmlAdapterSettingsProvider : ISettingsProvider +{ + public void Load(XmlReader reader) + { + // Read the setting nodes from the XmlReader and save it for a succeeding discovery/execution operation. + } +} +``` + +The settings provider will first need to advertise to the test platform that it is interested in only "XmlAdapter" specific settings. It does that via the SettingsName attribute. So whenever the test platform finds a node labelled "XmlAdapter" in the runsettings it first finds a provider that understands that setting and calls into the `Load()` with that xml sub-section. So if the runsettings is of the following format: + +```xml + + + x86 + + + 4 + true + + +``` + +the Load function would be called with the following sub-tree which only contains the settings for XmlAdapter + +```xml + + 4 + true + +``` + +## Open questions + +1. Should the user need to specify a test adapter path for an adapter to be picked up. Can we automatically figure out adapters that are dropped along with the test assembly? + +2. Currently there is no way to specify to the test platform that it should pick only one specific adapter and ignore the rest. This would save the time taken to probe each adapter to figure out if it can run the tests and make this purely a user driven scenario. Do we want to have this ability? + +3. Currently there is a different host process that gets launched for discovery and execution. This does not allow adapters to easily re-use data created/read during discovery in the Run tests phase. The host process cannot be kept alive currently because Core Fx does not have a concept of app domains to load the test dll's in and unload them so that they are not locked. The only way adapters can re-use data across discovery and execution currently is by adding it in a property bag that the TestCase object exposes. Should this be the only way? Can we do something different here? diff --git a/docs/RFCs/0005-Test-Platform-SDK.md b/docs/RFCs/0005-Test-Platform-SDK.md new file mode 100644 index 0000000000..d947ecaf15 --- /dev/null +++ b/docs/RFCs/0005-Test-Platform-SDK.md @@ -0,0 +1,76 @@ +# 0005 Test Platform SDK +## Summary +This document outlines various components of test platform sdk and the usage scenarios for each of them. It will also cover versioning and compatibility. + +## Motivation +Test platform exposes various extensibility points in the architecture. These allow a developer to customize the test framework, test host, logger and so on. In addition, an editor can use test platform to list and execute test runs. + +It is necessary to establish clear contract in several aspects: +* Packages: which package a developer can use for each scenario. +* Versioning: how are the packages versioned? +* Compatibility: what is the compatibility provided by packages (in terms of previous versions of test platform)? + +The contract (in case of extensions), and protocol (in case of editors) are outlined in previous specification documents. This document will pivot around scenarios and will cover above aspects for each. + +## Scenarios +### Authoring an extension +Test platform allows a developer to author an extension to customize the behavior of test platform. At the time of writing, following extensibility points are available: + +| Extension type | Purpose | +|-------------------|------------------------------------------| +| Adapter | Customize test framework | +| Data collector | Monitor and collect data during test run | +| Logger | Customize test execution logging | +| Test host | Control process/runtime for a test run | + +#### SDK requirements +Extensions are `.NET` assemblies. They require to implement a set of APIs provided in the [Microsoft.TestPlatform.ObjectModel][ObjectModelNuget] package. + +Following is the `.NET` libraries supported by the ObjectModel package: + +| Version | .NET runtime | +|-----------|-----------------------------------| +| 11.0.0 | net35, netstandard1.0 | +| 15.0.0 | netstandard1.5 | + +[ObjectModelNuget]: http://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/ + +#### Compatibility + +| Version | Compatibility | +|-----------|------------------------------------| +| 11.0.0 | Supports VS 2012 - present | +| 15.0.0 | Supports VS 2017 - present | + +The `15.0.0` version of `Microsoft.TestPlatform.ObjectModel` introduces several additional capabilities: +* In process data collection +* Test host extensibility +* Better serialization (to support JSON wire protocol) + +Newer versions of test platform will be able to load extensions authored with `11.0.0` version of ObjectModel. However to use newer functionality, extension authors may consider providing multiple versions of the extension targeting VS 2015 or older and the newer VS respectively. + +### Editor integration +Test platform allows integration with an editor using a JSON wire protocol. The editor can launch the test platform to list, execute tests and report statistics for a run. + +#### SDK requirements +There is no strict requirement for a authoring an editor integration in a particular language since the communication can be driven with JSON over the wire. At the moment, a `.NET` implementation is available. It is used by Visual Studio to drive test execution from the Test Explorer. + +Developers can use `Microsoft.TestPlatform.TranslationLayer` nuget package. It is a *redistributable* package. It is available from vstest myget feed: [https://dotnet.myget.org/F/vstest/api/v3/index.json](https://dotnet.myget.org/F/vstest/api/v3/index.json). Sample application is [here](https://github.com/Microsoft/vstest/tree/main/samples/Microsoft.TestPlatform.TranslationLayer.E2ETest) + +| Version | .NET runtime | +|-----------|-----------------------------------| +| 15.0.0 | netstandard1.5 | + +Protocol specification is available [here](0007-Editors-API-Specification.md). + +> Both the protocol and the sdk are under active development. Your feedback is most welcome. Please create an issue on the vstest repository. + +#### Compatibility +Editor integration is available from Test Platform `15.0.0` onwards. + +| Version | Compatibility | +|-----------|-----------------------------------------| +| 15.0.0 | Supports Test Platform 15.0.0 - present | + +## Open questions +None. diff --git a/docs/RFCs/0006-DataCollection-Protocol.md b/docs/RFCs/0006-DataCollection-Protocol.md new file mode 100644 index 0000000000..b9421d0b6c --- /dev/null +++ b/docs/RFCs/0006-DataCollection-Protocol.md @@ -0,0 +1,51 @@ +# 006 DataCollection Protocol + +## Summary +This note details the protocol for out of process data collection. + +## Motivation +This note provides the following : +* Protocol details for interaction between data collector host process and test execution host process. +* Data collection extensibility. + +## Detailed Design + +### Terminology +* **IDE adapter**: Component that listens to messages from dotnet-test and populates the IDE with tests discovered or test results. +* **Dotnet-test/vstest.console(Runner)**: Orchestrator of discovery or execution operations with one or more test host processes which then communicates back to the adapter the test cases or test results received from the test host process. This component also hosts the logger functionality which logs the test results in a file or posts them to a server. +* **Test host process**: The host process that loads the rocksteady engine which then calls into the Rocksteady adapters to discover/execute tests. This component communicates back to the client (dotnet-test or vstest.console.exe) with set of tests discovered or test results. +* **Rocksteady adapter**: The framework specific adapter that discovers or executes tests of that framework. These adapters are invoked in-proc by the rocksteady engine via the ITestDiscoverer and ITestExecutor interfaces. +* **TP V2**: The new cross-plat test platform which encompasses the Runner, test host and the adapters. This is the framework that enables users to run tests. +* **DataCollector host proces**: The host process that loads the data collector(s), when specified in test run settings, coordinates with test execution host process to get the test execution events, sends the events to loaded data collectors and finally, send the results to dotnet-test after test execution is completed. + +### Protocol +Here is how the wire protocol for TP v2 looks like : +![dotnet-test data collector protocol](Images/datacollection.png) + +And this is how the wire protocol looks like with custom host: +![dotnet-test data collector protocol with custom host](Images/datacollection-custom.png) + +## Flow for datacollection for Run Tests: +1. After the Adapter initiates test execution, dotnet-test checks whether data collectors are configured in test run settings. If yes, it spawns of datacollector host process. +2. Datacollector host process then loads and initializes all the data collectors. +3. Datacollector host process also opens another port B to be used for communicating with test execution host process. +4. Datacollector host process then returns environment variables, if any, as specified by datacollectors and port B back to dotnet-test process. +5. dotnet-test spawns of test execution host process with environment variables and passes port B. +6. Test execution host process then connects to port B. +7. Test execution host process send events : TestCaseStart and TestCaseEnd, on receiving them from Rocksteady adapter for every testcase. +8. On receiving TestCaseStart, datacollector host process responds by sending acknowledgement for TestCaseStart event. +8. On receiving TestCaseEnd, datacollector host process responds by sending attachments, if any, as generated by datacollectors. +9. On completion of test execution, test-host sends DataCollection.AfterTestRunEnd. +10. Datacollector host process returns the attachments, if any, as generated by datacollectors. +11. dotnet-test sends DataCollection.Terminate message to datacollector host process. +12. Attachments returned by data collector host process is shared by loggers. + +## Flow for datacollection for Debug Tests/Custom test host process: +1. After the Adapter initiates TestExecution.GetProcessStartInfo, dotnet-test checks whether datacollectors are configured in test run settings. If yes, it spawns of datacollector host process. +2. Datacollector host process then loads and initializes all the data collectors. +3. Datacollector host process also opens another port B for communicating with test execution host process. +4. Datacolector host process then returns environment variables (if any, as requested by datacollectors) and port B (if testcase events are subscribed) back to dotnet-test process. +5. Envionment variables and port B info is passed back to Adapter along with ProcessStartInfo of custom test host process. +6. At this point, the adapter can launch the test host process (and attach to it for debugging if it chooses to). + +After the test host process is spawned, the protocol is the same as the default flow above, which is essentially from Step #6 above. diff --git a/docs/RFCs/0007-Editors-API-Specification.md b/docs/RFCs/0007-Editors-API-Specification.md new file mode 100644 index 0000000000..bdf5adf27d --- /dev/null +++ b/docs/RFCs/0007-Editors-API-Specification.md @@ -0,0 +1,1590 @@ +# 0007 Editors API Specification + +## Summary +This note outlines the JSON protcol between an Editor/IDE and the test platform. +It is an addendum to [Discovery Protocol][discovery] and [Execution +Protocol][execution] documents. + +## Terminology +* **Editor** is an application which wants to discover, run tests from a test + assembly. It has intimate knowledge of the test project. +* **Test Platform** is the runner and engine which knows how to discover/run + tests. +* **Request** is a message from the Editor to Test Platform. +* **Response** is a message from the Test Platform to Editor. + +## SDK Implementations +`Microsoft.TestPlatform.TranslationLayer` provides a .net implementation of this +API. TODO: Link to sdk doc. + +## Overview +### Bootstrap +Editor should launch the test platform with its process id and a port that test +platform can connect to. It will start console runner as follows: + +``` +> dotnet vstest --ParentProcessId --Port +``` + +The windows only console runner `vstest.console.exe` also supports the same +parameters. The test platform tries to connect to `` and sends a +`connection` message. + +### Message +All the communication messages between an Editor and Test Platform have +following structure: + +#### API Payload +| Key | Type | Description | +|-------------|--------|--------------------------------------------------------| +| MessageType | string | Type of message | +| Payload | object | Payload for an operation input or output. Can be null. | + +#### Example +```json +{ + "MessageType": "TestSession.Connected", + "Payload": null +} +``` + +The `Payload` provides data specific to an request or response. It may be null +for `connection` and `version` messsages. + +### Connection (Response) +The test platform sends a connection message after launch. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------| +| MessageType | string | TestSession.Connected | +| Payload | object | null | + +#### Example +```json +{ + "MessageType": "TestSession.Connected", + "Payload": null +} +``` + +### Version Operation +An Editor can use the version operation to check the protocol version supported +by the available test platform. It may modify the protocol for further +communication if needed. + +#### Version (Request) +A version request from Editor to Test Platform has following structure. + +##### API Payload +| Key | Type | Description | +|-------------|--------|-----------------| +| MessageType | string | ProtocolVersion | +| Payload | object | null | + +##### Example +```json +{ + "MessageType": "ProtocolVersion", + "Payload": null +} +``` + +#### Version (Response) +A version response from Test Platform has following structure. + +##### API Payload +| Key | Type | Description | +|-------------|--------|-----------------| +| MessageType | string | ProtocolVersion | +| Payload | object | 1 | + +##### Example +```json +{ + "MessageType": "ProtocolVersion", + "Payload": null +} +``` + +At this point the initial handshake between Editor and Test Platform is +complete. Above operation is required only once per launch of test platform. +Subsequent discovery, execution operation don't require an initialization. + +### Initialize Extensions (Request) +This request ensures that all the extensions that are required for discovery or execution +get loaded before the actual operation request. +While running test targeting .net4x framework, this is required for initializing the test adapters. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------------| +| MessageType | string | Extensions.Initialize | +| Payload | array | List of paths of extensions | + +#### Example +```json +{ + "MessageType": "Extensions.Initialize", + "Payload": [ + "E:\\UnitTest1\\UnitTest1\\bin\\Debug\\net452\\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll" + ] +} +``` + +## Discover Tests +A discovery operation requests the test platform to load the test container, use +the appropriate test adapter and list all tests available within the container. + +Various `Message` types supported during discovery operation are: +* TestDiscovery.Start +* TestDiscovery.TestFound +* TestDiscovery.Completed + +### Start Discovery (Request) +An Editor triggers the discovery operation with a `TestDiscovery.Start` message. + +#### API Payload +| Key | Type | Description | +|-------------|--------|---------------------| +| MessageType | string | TestDiscovery.Start | +| Payload | object | See below | + +##### Message Payload +| Key | Type | Description | +|-------------|--------|--------------------------------| +| Sources | array | Array of test container paths. | +| RunSettings | string | Run settings xml | + +#### Example +```json +{ + "MessageType": "TestDiscovery.Start", + "Payload": { + "Sources": [ + ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "RunSettings": null + } +} +``` + +Refer [msdn](https://msdn.microsoft.com/en-us/library/jj635153.aspx#Anchor_1) for run settings sample. + +### Tests Found (Response) +The test platform sends tests found messages for the tests discovered. There can +be one or many such messages. Editor is expected to listen to such messages +until a `TestDiscovery.Completed` message is received. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------------------| +| MessageType | string | TestDiscovery.TestFound | +| Payload | array | See below for details of Property | + +For `TestDiscovery.TestFound` message, the Payload is an array of `TestCase` +objects. See [appendix](#DataStructure.TestCase) for details. + +#### Example +```json +{ + "MessageType": "TestDiscovery.TestFound", + "Payload": [ + { + "Properties": [ + { + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.PassingTest" + }, + { + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" + }, + { + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + }, + { + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "PassingTest" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + }, + { + "Properties": [ + { + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.TestWithPriority" + }, + { + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" + }, + { + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + }, + { + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "TestWithPriority" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.Priority", + "Label": "Priority", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Int32" + }, + "Value": 0 + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [ + { + "Key": "Priority", + "Value": "0" + } + ] + } + ] + } + ] +} +``` + +### Discovery Complete (Response) +A discovery complete message from Test Platform marks the end of discovery process. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-------------------------| +| MessageType | string | TestDiscovery.Completed | +| Payload | object | See below for details | + +**Payload** for `TestDiscovery.Completed` has following structure. + +| Key | Type | Description | +|---------------------|---------|-------------------------------------------------| +| TotalTests | number | Number of tests discovered | +| LastDiscoveredTests | array | Set of `TestCase` objects in the final chunk | +| IsAborted | boolean | `true` indicates an aborted discovery operation | + +#### Example +```json +{ + "MessageType": "TestDiscovery.Completed", + "Payload": { + "TotalTests": 7, + "LastDiscoveredTests": null, + "IsAborted": false + } +} +``` + +## Run Tests +### Run Tests (Request) +A run tests request will trigger test execution for a given test container. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-------------------------------------| +| MessageType | string | TestExecution.RunAllWithDefaultHost | +| Payload | object | See below for details | + +**Payload** for `TestExecution.RunAllWithDefaultHost` has following structure. + +| Key | Type | Description | +|------------------|---------|--------------------------------------------| +| Sources | array | Set of test containers | +| TestCases | array | Set of `TestCase` objects | +| RunSettings | string | Run settings for the test run | +| KeepAlive | boolean | Reserved for future | +| DebuggingEnabled | boolean | `true` indicates a test run under debugger | + +#### Example +```json +{ + "MessageType": "TestExecution.RunAllWithDefaultHost", + "Payload": { + "Sources": [ + ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "TestCases": null, + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": false + } +} +``` + +TargetFramework for the tests can be set using the runsettings. +See [appendix](#RunSettings.TargetFramework) for details. + +### Test Run Statistics (Response) +Test results are provided by test platform in batches. An editor should continue +to listen to `TestExecution.StatsChange` messages until a +`TestExecution.Completed` message is received. + +#### API Payload +| Key | Type | Description | +|-------------|--------|---------------------------| +| MessageType | string | TestExecution.StatsChange | +| Payload | object | See details below | + +**Payload** object has following structure. + +| Key | Type | Description | +|-------------------|--------|--------------------------------------------------| +| NewTestResults | array | Set of `TestResult` objects | +| TestRunStatistics | object | See details below | +| ActiveTests | array | Set of active or inprogress `TestCase` objects | + +**TestRunStatistics** object has following structure + +| Key | Type | Description | +|-----------------|--------|-----------------------------------------| +| ExecutedTests | number | Total number test executed | +| Stats | object | Map for count of tests for each outcome | + +Details of a `TestResult` object is available in +[appendix](#4-testresult). + +Details of a `TestCase` object is available in +[appendix](#3-testcase). + +#### Example +```json +{ + "MessageType": "TestExecution.StatsChange", + "Payload": { + "NewTestResults": [ + { + "TestCase": { + "Properties": [ + { + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.FailingTest" + }, + { + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" + }, + { + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + }, + { + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "FailingTest" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + }, + { + "Key": { + "Id": "TestCase.LineNumber", + "Label": "Line Number", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Int32" + }, + "Value": 25 + }, + { + "Key": { + "Id": "TestCase.CodeFilePath", + "Label": "File Path", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "UnitTestProject\\UnitTest.cs" + } + ] + }, + "Attachments": [], + "Messages": [], + "Properties": [ + { + "Key": { + "Id": "TestResult.DisplayName", + "Label": "TestResult Display Name", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": null + }, + { + "Key": { + "Id": "TestResult.Duration", + "Label": "Duration", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.TimeSpan" + }, + "Value": "00:00:10.0941957" + }, + { + "Key": { + "Id": "TestResult.ErrorMessage", + "Label": "Error Message", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "Assert.AreEqual failed. Expected:<2>. Actual:<3>. " + }, + { + "Key": { + "Id": "TestResult.ErrorStackTrace", + "Label": "Error Stack Trace", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": " at UnitTestProject.UnitTest.FailingTest() in UnitTestProject\\UnitTest.cs:line 27\r\n" + }, + { + "Key": { + "Id": "TestResult.Outcome", + "Label": "Outcome", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + }, + "Value": 2 + }, + { + "Key": { + "Id": "TestResult.StartTime", + "Label": "Start Time", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.DateTimeOffset" + }, + "Value": "2017-01-25T16:22:42.0912112+05:30" + }, + { + "Key": { + "Id": "TestResult.EndTime", + "Label": "End Time", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.DateTimeOffset" + }, + "Value": "2017-01-25T16:22:52.1862902+05:30" + } + ] + } + ], + "TestRunStatistics": { + "ExecutedTests": 2, + "Stats": { + "Passed": 1, + "Failed": 1 + } + }, + "ActiveTests": [ + { + "Properties": [ + { + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.SkippingTest" + }, + { + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" + }, + { + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + }, + { + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "SkippingTest" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": false + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + }, + { + "Key": { + "Id": "TestCase.LineNumber", + "Label": "Line Number", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Int32" + }, + "Value": 36 + }, + { + "Key": { + "Id": "TestCase.CodeFilePath", + "Label": "File Path", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "UnitTestProject\\UnitTest.cs" + } + ] + } + ] + } +} +``` + +### Test Run Complete (Response) +A `TestExecution.Completed` message indicates completion of a test run. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-------------------------| +| MessageType | string | TestExecution.Completed | +| Payload | object | See details below | + +**Payload** object has following structure. + +| Key | Type | Description | +|---------------------|--------|---------------------------------------------------------------| +| TestRunCompleteArgs | object | Summary of test run. See below | +| LastRunTests | array | Set of `TestResult` for the last results batch | +| RunAttachments | array | Test attachments for the run | +| ExecutorUris | array | Set of executor uri for adapters that participated in the run | + +**TestRunCompleteArgs** object has following structure. + +| Key | Type | Description | +|---------------------------------------|---------|---------------------------------| +| TestRunStatistics["ExecutedTests"] | number | Total tests executed | +| TestRunStatistics["Stats"]["Passed"] | number | Passed tests count | +| TestRunStatistics["Stats"]["Failed"] | number | Failed tests count | +| TestRunStatistics["Stats"]["Skipped"] | number | Skipped tests count | +| IsCanceled | boolean | `true` indicates a canceled run | +| IsAborted | boolean | `true` indicates aborted run | +| Error | string | Error during the run | +| AttachmentSets | array | Array of run attachments | +| ElapsedTimeInRunningTests | string | Duration for test run | + +#### Example +```json +{ + "MessageType": "TestExecution.Completed", + "Payload": { + "TestRunCompleteArgs": { + "TestRunStatistics": { + "ExecutedTests": 7, + "Stats": { + "Passed": 4, + "Failed": 2, + "Skipped": 1 + } + }, + "IsCanceled": false, + "IsAborted": false, + "Error": null, + "AttachmentSets": [], + "ElapsedTimeInRunningTests": "00:00:00.1820000" + }, + "LastRunTests": null, + "RunAttachments": [], + "ExecutorUris": [ + "executor://mstestadapter/v2" + ] + } +} +``` + +## Run Selected Tests +Run selected tests operation differs from Run All tests in the request. The +responses from test platform are same as above. + +### Test Run With Filter (Request) +#### API Payload + +| Key | Type | Description | +|-------------|--------|-------------------------------------| +| MessageType | string | TestExecution.RunSelectedWithDefaultHost | +| Payload | object | See below for details | + +**Payload** for `TestExecution.RunSelectedWithDefaultHost` has following structure. + +| Key | Type | Description | +|------------------|---------|--------------------------------------------| +| Sources | array | Set of test containers. Null in this case | +| TestCases | array | Set of `TestCase` objects. *Required*. | +| RunSettings | string | Run settings for the test run | +| KeepAlive | boolean | Reserved for future | +| DebuggingEnabled | boolean | `true` indicates a test run under debugger | + +Note that **TestCases** must be a valid set of `TestCase` objects, these should +represent user's test selection. + +#### Example +```json +{ + "MessageType": "TestExecution.RunAllWithDefaultHost", + "Payload": { + "Sources": null, + "TestCases": [ + { + "Properties": [ + { + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.PassingTest" + }, + { + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" + }, + { + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + }, + { + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "PassingTest" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ], + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": false + } +} +``` +### Cancel Test Run (Request) +This request will cancel the current test run request. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------| +| MessageType | string | TestExecution.Cancel | +| Payload | object | null | + +#### Example +```json +{ + "MessageType": "TestExecution.Cancel", + "Payload": null +} +``` + +### Abort Test Run (Request) +This request will abort the current test run request. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------| +| MessageType | string | TestExecution.Abort | +| Payload | object | null | + +#### Example +```json +{ + "MessageType": "TestExecution.Abort", + "Payload": null +} +``` + +## Debug All/Selected Tests +Debug all or selected test operations follow this sequence: + +1. Request for the process to be launched under debugger (along with start parameters). `TestSession.GetTestRunnerProcessStartInfoForRunAll` and `TestSession.GetTestRunnerProcessStartInfoForRunSelected` messages need to be sent for DebugAll and DebugSelected operation respectively. +2. Runner responds with a `TestSession.CustomTestHostLaunch` message. It has the executable which needs to be launched with debugger attached. +3. After starting the host process, send `TestSession.CustomTestHostLaunchCallback` as an acknowledgment to the runner. + +After this, runner sends TestRunStatsChange and TestExecutionComplete events similar to a RunAll operation. + +### Get Process StartInfo For Debug All (Request) +The request to get the Process StartInfo for the Test host. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------------------------------------| +| MessageType | string | TestSession.GetTestRunnerProcessStartInfoForRunAll | +| Payload | object | See details below | + +**Payload** object is has following structure. + +| Key | Type | Description | +|------------------|---------|-----------------------------------------------| +| Sources | array | Set of test containers. *Required* | +| TestCases | array | Set of `TestCase` objects. Null in this case. | +| RunSettings | string | Run settings for the test run | +| KeepAlive | boolean | Reserved for future | +| DebuggingEnabled | boolean | `true` indicates a test run under debugger | + +#### Example +```json +{ + "MessageType": "TestExecution.GetTestRunnerProcessStartInfoForRunAll", + "Payload": { + "Sources": [ + "E:\\git\\singh\\vstest\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "TestCases": null, + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": true + } +} +``` + +### Get Process StartInfo For Debug Selected (Request) +The request to get the Process StartInfo for the Test host. + +#### API Payload +| Key | Type | Description | +|-------------|--------|----------------------------------------------------------| +| MessageType | string | TestSession.GetTestRunnerProcessStartInfoForRunSelected | +| Payload | object | See details below | + +**Payload** object is has following structure. + +| Key | Type | Description | +|------------------|---------|-----------------------------------------------| +| Sources | array | Set of test containers. Null in this case. | +| TestCases | array | Set of `TestCase` objects. *Required* | +| RunSettings | string | Run settings for the test run | +| KeepAlive | boolean | Reserved for future | +| DebuggingEnabled | boolean | `true` indicates a test run under debugger | + +#### Example +```json +{ + "MessageType": "TestExecution.GetTestRunnerProcessStartInfoForRunSelected", + "Payload": { + "Sources": null, + "TestCases": [ + { + "Properties": [ + { + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.PassingTest" + }, + { + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" + }, + { + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "E:\\git\\singh\\vstest\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + }, + { + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "PassingTest" + }, + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + }, + { + "Key": { + "Id": "TestCase.LineNumber", + "Label": "Line Number", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Int32" + }, + "Value": 16 + }, + { + "Key": { + "Id": "TestCase.CodeFilePath", + "Label": "File Path", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "E:\\git\\singh\\vstest\\samples\\UnitTestProject\\UnitTest.cs" + } + ] + } + ], + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": true + } +} +``` + +### Custom TestHost Launch (Response) +CustomTestHostLaunch is the response to GetTestRunnerProcessStartInfoRunAll/GetTestRunnerProcessStartInfoRunSelected request. This message contains the StartInfo for the testhost process. + +#### API Payload +| Key | Type | Description | +|-------------|--------|--------------------------------------| +| MessageType | string | TestSession.CustomTestHostLaunch | +| Payload | object | See details below | + +**Payload** object is has following structure. + +| Key | Type | Description | +|----------------------|---------|------------------------------------------------------------| +| FileName | string | Name of the host process | +| Arguments | string | Arguments to be passed to the host process | +| WorkingDirectory | string | Working directory for the host process | +| EnvironmentVariables | array | Environment variables associated with host process | +| CustomProperties | array | Any custom properties that need to set | + +#### Example +```json +{ + "MessageType": "TestExecution.CustomTestHostLaunch", + "Payload": { + "FileName": "C:\\Program Files\\dotnet\\dotnet.exe", + "Arguments": "exec --runtimeconfig \"UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.runtimeconfig.json\" --depsfile \"E:\\git\\singh\\vstest\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.deps.json\" \"E:\\git\\packages\\microsoft.testplatform.testhost/15.0.0-preview-20170106-08\\lib/netstandard1.5/testhost.dll\" --port 64531 --parentprocessid 12292", + "WorkingDirectory": "vstest\\samples\\Microsoft.TestPlatform.Protocol", + "EnvironmentVariables": {}, + "CustomProperties": null + } +} +``` + +### Custom TestHost LaunchCallback (Acknowledgement) +CustomTestHostLaunchCallback is the acknowledgement sent to the runner after starting the host process. + +#### API Payload +| Key | Type | Description | +|-------------|--------|----------------------------------------------| +| MessageType | string | TestSession.CustomTestHostLaunchCallback | +| Payload | object | See details below | + +**Payload** object is has following structure. + +| Key | Type | Description | +|---------------------|---------|------------------------------------------------------------| +| HostProcessId | number | Process Id of the host process | +| ErrorMessage | string | Error message in case host process does not start | + +#### Example +```json +{ + "MessageType": "TestExecution.CustomTestHostLaunchCallback", + "Payload": { + "HostProcessId": 53572, + "ErrorMessage": null + } +} +``` + +## Test Session Messages (Response) +The log messages are sent as `TestSession.Message`. Error messages are also reported via this message response. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-------------------------| +| MessageType | string | TestSession.Message | +| Payload | object | See details below | + +**Payload** object is has following structure. + +| Key | Type | Description | +|---------------------|---------|---------------------------------------------------------------| +| MessageLevel | number | Represent the TestMessageLevel. See details below | +| Message | string | The actual message reported by the runner. | + +**MessageLevel** provides an integer specifying the type of log message. +Possible values are: + * `0x0`: Informational + * `0x1`: Warning + * `0x2`: Error + +**Example** +```json +{ + "MessageType": "TestSession.Message", + "Payload": { + "MessageLevel" : 1, + "Message" : "The test run was aborted." + } +} +``` + +### Test Session End (Request) +This request is used to the end the current test session. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------| +| MessageType | string | TestSession.Terminate | +| Payload | object | null | + +#### Example +```json +{ + "MessageType": "TestSession.Terminate", + "Payload": null +} +``` + +## Appendix +### Key Data Structures +#### 1. Message +A `Message` is basic data unit for the Editor and Test Platform communication +protocol. + +**Structure** + +| Key | Type | Description | +|-------------|--------|--------------------------------------------------------| +| MessageType | string | Type of message | +| Payload | object | Payload for an operation input or output. Can be null. | + +**Example** +```json +{ + "MessageType": "TestSession.Connected", + "Payload": null +} +``` + +#### 2. Property +Each `Property` is a pair as shown below. + +| Key | Type | Description | +|-------|--------|--------------------------------------| +| Key | object | Definition of a Property. See below. | +| Value | string | Value of the Property | + +The `Key` identifies the property and `Value` is the data. Further a `Key` is +defined as follows: + +| Key | Type | Description | +|-------------|--------|-------------------------------------------------| +| Id | object | Definition of a Property | +| Label | string | Value of the Property | +| Category | string | Type of a Property. Reserved for future. | +| Description | string | Description of a Property. | +| Attributes | number | Various attributes of this Property. See below. | +| ValueType | string | A .net type that represents the Value | + +`Attributes` are a bitwise `OR` of following values: + * `0x0`: None (default) + * `0x1`: Hidden. Should be set for hidden properties. + * `0x2`: Immutable. Should be set of properties that are readonly. + * `0x4`: Trait (Deprecated). Should be set if a Property is a Trait. + +#### 3. TestCase +A `TestCase` is a set of `Property` elements. Every testcase object must have following properties: + +- **TestCase.FullyQualifiedName** represents the unique name for a test case. +```json +{ + "Key": { + "Id": "TestCase.FullyQualifiedName", + "Label": "FullyQualifiedName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "UnitTestProject.UnitTest.TestWithPriority" +} +``` + +- **TestCase.ExecutorUri** represents the Adapter which owns this test case. +```json +{ + "Key": { + "Id": "TestCase.ExecutorUri", + "Label": "Executor Uri", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Uri" + }, + "Value": "executor://MSTestAdapter/v2" +} +``` + +- **TestCase.Source** is the path to the test container which contains the + source of this test case. +```json +{ + "Key": { + "Id": "TestCase.Source", + "Label": "Source", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" +} +``` + +- **TestCase.DisplayName** represents a user friendly notation for the test + case. An editor or a runner can choose to show this to user. +```json +{ + "Key": { + "Id": "TestCase.DisplayName", + "Label": "Name", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "TestWithPriority" +} +``` + +- **TestCase.Traits** are a set of pair of additional data related + to a test case. User can use these values to filter tests. An editor or + runner may show this to user. +```json +{ + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [ + { + "Key": "Priority", + "Value": "0" + } + ] +} +``` + +Apart from these properties, a `TestCase` object may have adapter specific +properties. + +#### 4. TestResult +A `TestResult` object represents the result of a test case execution. It has the +following structure. + +| Key | Type | Description | +|-------------|--------|-------------------------------------------------| +| TestCase | object | `TestCase` that executed | +| Attachments | array | Paths to test attachments | +| Messages | array | Set of messages generated during test execution | +| Properties | array | Set of `Property` for this result | + +##### 4.1 Properties +These are the mandatory properties available in every `TestResult` object. + +- **TestResult.DisplayName** provides a friendly name for the test result. +```json +{ + "Key": { + "Id": "TestResult.DisplayName", + "Label": "TestResult Display Name", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "" +} +``` + +- **TestResult.Duration** provides the entire duration of this test case + execution. +```json +{ + "Key": { + "Id": "TestResult.Duration", + "Label": "Duration", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.TimeSpan" + }, + "Value": "00:00:00.0306600" +} +``` + +- **TestResult.ErrorMessage** provides an error message if the test failed. +```json +{ + "Key": { + "Id": "TestResult.ErrorMessage", + "Label": "Error Message", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": "Assert.AreEqual failed. Expected:<2>. Actual:<3>. " +} +``` + +- **TestResult.ErrorStackTrace** provides the stack trace for the error. +```json +{ + "Key": { + "Id": "TestResult.ErrorStackTrace", + "Label": "Error Stack Trace", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.String" + }, + "Value": " at UnitTestProject.UnitTest.FailingTest() in D:\\dd\\gh\\Microsoft\\vstest\\samples\\UnitTestProject\\UnitTest.cs:line 26\r\n" +} +``` + +- **TestResult.Outcome** provides an integer specifying the result of a test + case execution. +Possible outcomes are: + * `0x0`: None. Test case doesn't have an outcome. + * `0x1`: Passed + * `0x2`: Failed + * `0x3`: Skipped + * `0x4`: Not found. Test case was not found during execution. + +```json +{ + "Key": { + "Id": "TestResult.Outcome", + "Label": "Outcome", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + }, + "Value": 2 +} +``` + +- **TestResult.StartTime** provides the start time of the test case execution. +```json +{ + "Key": { + "Id": "TestResult.StartTime", + "Label": "Start Time", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.DateTimeOffset" + }, + "Value": "2017-01-06T10:15:39.9907073+05:30" +} +``` + +- **TestResult.EndTime** provides the end time of test case execution. +```json +{ + "Key": { + "Id": "TestResult.EndTime", + "Label": "End Time", + "Category": "", + "Description": "", + "Attributes": 0, + "ValueType": "System.DateTimeOffset" + }, + "Value": "2017-01-06T10:15:40.021772+05:30" +} +``` + +#### 5. TargetFramework +The test runner needs the target framework for running the tests using the appropriate +hosting environment. It can be set using TargetFrameworkVersion node in the RunSettings +passed as part of discovery/execution request. TargetFrameworkVersion value is the fullname +of the target framework. For example, ".NETFramework,Version=v4.5.2". Other supported +.Net Framework version shortcuts are Framework35, Framework40 and Framework45. + +##### Example +``` + + + + .NETFramework,Version=v4.5.2 + + +``` + +##### Example for Test Execution Request +``` +{ + "MessageType": "TestExecution.RunAllWithDefaultHost", + "Payload": { + "Sources": [ + "E:\\UnitTest1\\UnitTest1\\bin\\Debug\\net452\\UnitTest1.dll" + ], + "TestCases": null, + "RunSettings": "\r\n\r\n\r\nFramework45\r\n\r\n", + "KeepAlive": false, + "DebuggingEnabled": false + } +} +``` + +[discovery]: 0002-Test-Discovery-Protocol.md +[execution]: 0003-Test-Execution-Protocol.md +[sample]: https://github.com/Microsoft/vstest/tree/main/samples/Microsoft.TestPlatform.Protocol diff --git a/docs/RFCs/0008-TranslationLayer.md b/docs/RFCs/0008-TranslationLayer.md new file mode 100644 index 0000000000..2e0930d79b --- /dev/null +++ b/docs/RFCs/0008-TranslationLayer.md @@ -0,0 +1,138 @@ +# 0008 Translation Layer for TestPlatform Clients + +## Summary +This note gives the details of the APIs for the client library which is an abstraction over TestPlatformV2. +These APIs enable all the test related operations i.e. discovery, execution and debugging. +TranslationLayer takes care of launching the TestPlatform runner, maintaining the connection and communication, sending and bringing back the results. + +## Motivation +TranslationLayer is a wrapper over the new TestPlatform V2. TranslationLayer abstracts out all the internal details especially the communication protocol and serialization. +TranslationLayer provides simple APIs that can be invoked to get the desired result. + +* Makes it easier for TestPlatform client writers. +* Low maintainence for clients, minimal changes required during releases for TestPlatform. + +## Sample +There is a sample project available for reference. Please find the relevant links below. +* Sample project : [https://github.com/Microsoft/vstest/tree/main/samples/Microsoft.TestPlatform.TranslationLayer.E2ETest](https://github.com/Microsoft/vstest/tree/main/samples/Microsoft.TestPlatform.TranslationLayer.E2ETest) +* Nuget package : [https://www.nuget.org/packages/Microsoft.TestPlatform.TranslationLayer](https://www.nuget.org/packages/Microsoft.TestPlatform.TranslationLayer) + +## Details +TranslationLayer provides a IVsTestConsoleWrapper interface that contains main APIs for the required operations. +VsTestConsoleWrapper provides the implementation for this interface. Please find following the details on the APIs and usage. + +### Constructing VsTestConsoleWrapper +Client needs to create a new instance of the VsTestConsoleWrapper class. +The full path of the vstest.console.exe needs to passed as the parameter for the Constructor. + +``` +public VsTestConsoleWrapper(string vstestConsolePath) +``` + +### Prerequites +After creating the instance of VsTestConsoleWrapper, we need to call the following APIs as prerequites to the actual operations. + +#### Start Session +This call starts the test runner process, creates the communication channel and readies it for handling requests. + +``` +IVsTestConsoleWrapper :: StartSession() +``` + +#### Initialize extensions +This call initializes the TestPlatform with paths to extensions like adapters, loggers and any other extensions. + +``` +IVsTestConsoleWrapper :: void IntializeExtensions(IEnumerable pathtoAdditonalExtensions) +``` + +### Handlers +There are handlers that are passed via discovery/execution operation calls and are responsible for handling the discovery and execution events. +These handlers are defined under Microsoft.VisualStudio.TestPlatform.ObjectModel.Client namespace in Microsoft.VisualStudio.TestPlatform.ObjectModel assembly. + +#### ITestDiscoveryEventsHandler +Interface contract for handling discovery events during test discovery operation. + +#### Microsoft.VisualStudio.TestPlatform.ObjectModel.Client :: ITestRunEventHandler +Interface contract for handling run events during test run operation + +### Discover Tests + +#### IVsTestConsoleWrapper :: DiscoverTests +This api starts the discovery for the given sources and settings. + +#### API +``` +void DiscoverTests(IEnumerable sources, string discoverySettings, ITestDiscoveryEventsHandler discoveryEventsHandler); +``` + +#### Parameter Details + +| Parameters | Type | Description | +|-----------------------|-----------------------------|-----------------------------------------| +| sources | IEnumerable | Enumerable of paths to testcontainers | +| discoverySettings | string | Path to the settings file | +| discoveryEventHandler | ITestDiscoveryEventsHandler | Contract for handling discovery events | + +#### Cancel Discovery +TODO : Place holder for now, not supported yet. + +### Run All Tests + +#### IVsTestConsoleWrapper :: RunTests +This api starts the execution for the given sources and settings. + +#### API +``` +void RunTests(IEnumerable sources, string runSettings, ITestRunEventsHandler testRunEventsHandler) +``` + +#### Parameter Details +| Parameters | Type | Description | +|-----------------------|-----------------------------|-----------------------------------------| +| sources | IEnumerable | Enumerable of paths to testcontainers | +| runSettings | string | Path to the settings file | +| testRunEventsHandler | ITestRunEventsHandler | Contract for handling execution events | + +### Run Selected Tests + +#### IVsTestConsoleWrapper :: RunTests +This api starts the execution for the given sources and settings. + +#### API +``` +void RunTests(IEnumerable testCases, string runSettings, ITestRunEventsHandler testRunEventsHandler) +``` + +#### Parameter Details +| Parameters | Type | Description | +|-----------------------|-----------------------------|-----------------------------------------| +| testCases | IEnumerable | Enumerable of testcases | +| runSettings | string | Path to the settings file | +| testRunEventsHandler | ITestRunEventsHandler | Contract for handling execution events | + +**TestCase** is defined in Microsoft.VisualStudio.TestPlatform.ObjectModel. + +#### Cancel Run Test +This call will cancel the last test run request + +``` +IVsTestConsoleWrapper :: CancelTestRun() +``` + +#### Abort Run Test +This call will abort the last test run request + +``` +IVsTestConsoleWrapper :: AbortTestRun() +``` + +### Cleanup +After all the operations are done, these are the calls that should be made at the end as part of cleanup. + +#### EndSession +This call ends the test session and stops processing requests. + +``` +IVsTestConsoleWrapper :: EndSession() +``` diff --git a/docs/RFCs/0009-Editors-API-RevisionUpdate.md b/docs/RFCs/0009-Editors-API-RevisionUpdate.md new file mode 100644 index 0000000000..26720292de --- /dev/null +++ b/docs/RFCs/0009-Editors-API-RevisionUpdate.md @@ -0,0 +1,391 @@ +# 0009 Editors API Revision Update + +## Summary +This note outlines the proposed changes for the JSON protocol between an Editor/IDE +and the test platform. + + +Here is the link to v1 specs: [Editors-API-Specification](./RFCs/0007-Editors-API-Specification.md) + +## Motivation +Here are the key factors: +* Reducing size of the payload of message responses to improve performance. Refer to [https://github.com/Microsoft/vstest/issues/396](https://github.com/Microsoft/vstest/issues/396) +* Improvements to versioning and ability to handle future breaking changes. + +## Overview of changes +* New data structure for communication for v2 and above. +* Negotiation for protocol version: Editor and Test Runner, Test Runner and Test Host. +* Json optimization and changes to payloads. + +### Messages for communication +Protocol related communication messages between Editor and Test Platform can have either of the following structures. + +#### Message +This is existing Message structure used for communication in v1. + +##### API Payload +| Key | Type | Description | +|-------------|--------|--------------------------------------------------------| +| MessageType | string | Type of message | +| Payload | object | Payload for an operation. Can be null. | + +##### Example +```json +{ + "MessageType": "ProtocolVersion", + "Payload": 1 +} +``` + +#### Versioned Message +This is the new data structure for Message introduced in v2. +It has an additional version field. + +##### API Payload +| Key | Type | Description | +|-------------|--------|--------------------------------------------------------| +| MessageType | string | Type of message | +| Version | int | Version based on which message should be deserialized | +| Payload | object | Payload for an operation input or output. Can be null. | + +##### Example +```json +{ + "MessageType": "Extensions.Initialize", + "Version": 2, + "Payload": [ + "E:\\UnitTest1\\UnitTest1\\bin\\Debug\\net452\\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll" + ] +} +``` + +#### Need for Versioned Message +A solution can contain projects that depend on different versions of Test Host. The tests from these projects can +be run in parallel, which means Editor will be receiving test cases/results from both the Test Hosts. +Editor will be able to deserialize both the messages, based on the version stamped on the responses. + +#### Using Correct Message Structures +Message(v1) is used for protocol version negotiation in the beginning. +For rest of the communication, the structure for messages is decided based on negotiated version. + +* If negotiated version = 1, Message (v1) structure will be used. +* If negotiated version >= 2, Versioned Message (v2) will be used. + +Since now we have two kind of messages, implementation should be capable of deserializing both kind of messages. +For Versioned Messages, the embedded version will be used to choose the implementation for serializing and deserializing the payloads. + +### Version Negotiations +Editor uses the version operation to negotiate for the highest common version supported +by the available Test platform. +Similarly, Test Runner uses version operation to negotiate for the highest common version +supported by the available Test host. +All the components will have a range of versions they support. + +#### Negotiation Between IDE and Test Runner +Editor sends version request with highest version. +Test Runner then sends back the highest common version. + +For Example: +* Editor with range (1-3) sends Version(Request) with version = 3, and Test Runner with range (1-2) will send back version as 2. +* Editor with range (1-2) sends version(Request) with version = 2, and Test Runner with range (1-3) will send back version as 2. + +If Test Runner does not support the Editor, it will send ProtocolError message as discussed in the section below. + +At this point the initial handshake between Editor and Test Runner is +complete. Version operation is required only once per launch of test runner. +Editor stamps the highest common version on the subsequent requests. + +Note: For v1 though, since structure Message(v1) will be used, version is implicit. + +#### Negotiation Between Test Runner and Test Host +Similarly, when the Test Runner receives run/discovery request, it launches and negotiates version +with Test Host. + +Example: +Let us say, Editor supports range (1-3) and Test Platform Runner supports range (1-3), +so the version stamped on the run/discovery request will be 3. + +* Test Host which supports range (1-2), will send back version as 2. +* Test Host which supports range (1-3), will send back version as 3. + +If the TestHost does not support the version, it will send ProtocolError message to Editor via Runner. +Hence the version stamped on the response from Test Host will be the highest common +version for all the three components. + +#### Version (Request) +Editor will send this protocol version request with the highest version that it supports. + +##### API Payload +| Key | Type | Description | +|-------------|--------|----------------------------| +| MessageType | string | ProtocolVersion | +| Payload | int | Highest supported version | + +##### Example +```json +{ + "MessageType": "ProtocolVersion", + "Payload": 1 +} +``` + +#### Version (Response) +Test Runner sends back the highest common version as a response. + +##### API Payload +| Key | Type | Description | +|-------------|--------|---------------------------| +| MessageType | string | ProtocolVersion | +| Payload | int | Highest common version | + +##### Example +```json +{ + "MessageType": "ProtocolVersion", + "Payload": 2 +} +``` + +#### Version Error (Response) +If there is a mismatch, Test Runner or Test Host can send ProtocolError message. + +##### API Payload +| Key | Type | Description | +|-------------|--------|----------------------------------------------| +| MessageType | string | ProtocolError | +| Payload | object | String containing the supported range | + +##### Example +```json +{ + "MessageType": "ProtocolError", + "Payload": null +} +``` +Note : The Payload should contain the following information +* Component that reported the mismatch +* The version range supported by the component + +## Json optimization +There are two objects that largely contribute to the size of the payload in the responses. +* TestCase object +* TestResult object + +Both these objects contain properties that are well-known and few others that are added by the +adapters. For the well-known properties, we have reduced the verbosity and made them +self-describing. Please checkout the following requests and responses for details and examples. + +### Discover Tests +#### Start Discovery (Request) +For v2, TestDiscovery.Start request will have the negotiated version (i.e. 2 currently) as part of the message. + +##### API Payload +| Key | Type | Description | +|-------------|--------|------------------------| +| MessageType | string | TestDiscovery.Start | +| Version | int | Version of the message | +| Payload | object | See below | + +##### Message Payload +| Key | Type | Description | +|-------------|--------|--------------------------------| +| Sources | array | Array of test container paths. | +| RunSettings | string | Run settings xml | + +##### Example +```json +{ + "MessageType": "TestDiscovery.Start", + "Version" : 2, + "Payload": { + "Sources": [ + ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "RunSettings": null + } +} +``` + +#### Tests Found (Response) +TestFound response will also have the version based on which Editor will be able to deserialize the message. +Verbosity for the json of TestCase object inside the TestFound payload has been reduced significantly. + +##### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------------------| +| MessageType | string | TestDiscovery.TestFound | +| Version | string | Version of the message | +| Payload | array | List of TestCases | + +##### Example +```json +{ + "MessageType": "TestDiscovery.TestFound", + "Version": 2, + "Payload": [ + { + "Id": "850ad69f-0dc9-fb92-8500-8d2f8d8dfe2a", + "FullyQualifiedName": "_20TestProject.UnitTest1.Test1", + "DisplayName": "Test1", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll", + "CodeFilePath": null, + "LineNumber": 0, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "TestProject.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + } + ] +} +``` + +Similarly, DiscoveryComplete result will also have the version stamping. + +### Run Tests +Similar to discovery requests, run tests request will also have the version as part of the message. Here are the examples. + +#### Run Tests (Request) Example +```json +{ + "MessageType": "TestExecution.RunAllWithDefaultHost", + "Version": 2, + "Payload": { + "Sources": [ + ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "TestCases": null, + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": false + } +} +``` + +#### Test Run Statistics (Response) Example +```json +{ + "MessageType": "TestExecution.Completed", + "Version": 2, + "Payload": { + "TestRunCompleteArgs": { + "TestRunStatistics": { + "ExecutedTests": 1, + "Stats": { + "Passed": 1 + } + }, + "IsCanceled": false, + "IsAborted": false, + "Error": null, + "AttachmentSets": [], + "ElapsedTimeInRunningTests": "00:00:00.8677523" + }, + "LastRunTests": { + "NewTestResults": [ + { + "TestCase": { + "Id": "850ad69f-0dc9-fb92-8500-8d2f8d8dfe2a", + "FullyQualifiedName": "_20TestProject.UnitTest1.Test1", + "DisplayName": "Test1", + "ExecutorUri": "executor://MSTestAdapter/v2", + "Source": "C:\\\\Users\\\\sasin\\\\Documents\\\\Visual Studio 2017\\\\Projects\\\\20TestProject\\\\20TestProject\\\\bin\\\\Debug\\\\net452\\\\20TestProject.dll", + "CodeFilePath": null, + "LineNumber": 0, + "Properties": [ + { + "Key": { + "Id": "MSTestDiscovererv2.IsEnabled", + "Label": "IsEnabled", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.Boolean" + }, + "Value": true + }, + { + "Key": { + "Id": "MSTestDiscovererv2.TestClassName", + "Label": "ClassName", + "Category": "", + "Description": "", + "Attributes": 1, + "ValueType": "System.String" + }, + "Value": "_20TestProject.UnitTest1" + }, + { + "Key": { + "Id": "TestObject.Traits", + "Label": "Traits", + "Category": "", + "Description": "", + "Attributes": 5, + "ValueType": "System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]" + }, + "Value": [] + } + ] + }, + "Attachments": [], + "Outcome": 1, + "ErrorMessage": null, + "ErrorStackTrace": null, + "DisplayName": null, + "Messages": [], + "ComputerName": null, + "Duration": "00:00:00.0072901", + "StartTime": "2017-03-20T19:57:18.2262042+05:30", + "EndTime": "2017-03-20T19:57:18.2921987+05:30", + "Properties": [] + } + ], + "TestRunStatistics": { + "ExecutedTests": 1, + "Stats": { + "Passed": 1 + } + }, + "ActiveTests": [] + }, + "RunAttachments": [], + "ExecutorUris": [ + "executor://mstestadapter/v2" + ] + } +} +``` + +All the other messages like Cancel, Abort or debugging related messages will follow the same pattern. diff --git a/docs/RFCs/0010-Source-Information-For-Discovered-Tests.md b/docs/RFCs/0010-Source-Information-For-Discovered-Tests.md new file mode 100644 index 0000000000..56d47801e2 --- /dev/null +++ b/docs/RFCs/0010-Source-Information-For-Discovered-Tests.md @@ -0,0 +1,69 @@ +# 0010 Source Information for discovered tests + +## Summary +This note outlines the proposed change in behavior of source information collection for test methods discovered by test adapters. +This change is applicable for test discovery from: +1. Visual Studio Test Explorer (IDE) for managed test projects which are supported by .NET Compiler Platform (Roslyn) +2. Vstest.console.exe runner (CLI) + +## Motivation +a. Performance improvement in IDE scenario because of two factors: +* Use of better performant Roslyn APIs instead of reflection based approach on PDBs +* Reduced test method payload transfer from adapter to Test Explorer + +b. Performance improvement in CLI scenario: +* Source information is not required in CLI scenario and can be skipped entirely + +## Overview of changes +Visual Studio Test Explorer needs source information for discovered tests to power following 3 scenarios: +1. Navigation to test method +2. Test method execution from code editor context menu +3. Code lens markers + +At present, for managed (C# and VB) test projects, this information is obtained from PDBs using reflection based APIs. While this approach works, it has perf impact. +Performance can be improved by using Roslyn APIs which gather this information during compile time. + +During discovery, Visual Studio Test Explorer groups the test containers on basis of their target framework (E.g.: NET46, NetCore etc.). +For each group a separate discovery request is sent to the adapters. +If all test containers in a group are supported by Roslyn, then for that discovery request, Visual Studio Test Explorer sets **'CollectSourceInformation'** flag in +runsettings with value 'false' and passes it to the test adapters, else it is set to 'true'. +Test adapters can rely on this flag and skip source information collection for discovered tests, if the flag is set to 'false'. In such cases, Visual Studio Test Explorer +will determine source information for the discovered tests. + +In case of CLI, source information is not required. Hence this flag is set to 'false' in the runsettings. + +### A sample runsettings file with this flag: +```xml + + + False + + +``` + +Following are the perf numbers obtained for this flag in IDE scenario for MSTest and XUnit test adapters on TPv2 for a test project having 25K tests: + +| Adapter | Without Changes = A (Sec) | With Changes = B (Sec) | Improvement, C = A - B (Sec) | Improvement (%) = C * 100 / A | +|-----------------|---------------------------|------------------------|------------------------------|-------------------------------| +| MSTest V2 | 27.28 | 26.09 | 1.19 | 4.36 | +| XUnit | 129.97 | 79.32 | 50.65 | 38.97 | + + +## How to test this change +While the changes for CLI will be available in a future release, changes for IDE are already available in Visual Studio 2017 Update 3 Preview 3 and newer builds but is hidden behind a feature flag. +Steps to turn ON the feature flag: +1. Close all instances of Visual Studio +2. Locate Microsoft.VisualStudio.FeatureFlags.pkgdef file in Visual Studio installation folder. This file generally gets installed at: +C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\CommonExtensions\Platform\Shell +3. Take a backup of this file +4. Open the file in a text editor and location following key: +[$RootKey$\FeatureFlags\TestingTools\UnitTesting\UseSipToFetchSourceInformation] +5. Update its dword value from 00000000 to 00000001 +6. Save the file and update it in the Visual Studio location mentioned in (2) +7. Open Developer Command prompt in administrator mode and run following command: + devenv /UpdateConfiguration +8. Launch Visual Studio and do test discovery for a managed (C# or VB) test project + +To disable the feature, restore backup file in the Visual Studio location mentioned in (2) and run step (7) + +Note that for perf improvement to show up, the test adapter needs to be updated to honor 'CollectSourceInformation' flag. In MSTest adapter this functionality has been added in v1.2.0-beta. \ No newline at end of file diff --git a/docs/RFCs/0011-Test-Session-Timeout.md b/docs/RFCs/0011-Test-Session-Timeout.md new file mode 100644 index 0000000000..70f2cad111 --- /dev/null +++ b/docs/RFCs/0011-Test-Session-Timeout.md @@ -0,0 +1,51 @@ +# 0011 Test Session Timeout + +## Summary +Allow user to specify timeout which will terminate a test session when it exceeds a given timeout. + +## Motivation +The test platform should have the ability for users to specify a test run level timeout which allows users to terminate a test session when it exceeds a given timeout. This ensures that resources are well consumed and test sessions are constrained to a set time. + +## Detailed Design + +User would specify timeout using runsetting or through commandline. + +### User can specify timeout using runsettings as follows: +```xml + + + + 10000 + + +``` + +### User can specify timeout using commandline as follows: +``` +vstest.console -- RunConfiguration.TestSessionTimeout=10000 +``` + +### Overview of changes +Testplatform will cancel the current test run if it has exceeded given `TestSessionTimeout`. It will also make sure that testhost is getting test cancel request. Finally it will conclude the run with whatever test run till that point. + +### Exit Code of vstest.console +It will be a failed test and exit code will be 1 + +### Console output +``` +Starting test execution, please wait... +Passed TestNameSpace.UnitTestClass.TestMethod1 +Passed TestNameSpace.UnitTestClass.TestMethod2 +Passed TestNameSpace.UnitTestClass.TestMethod3 +Passed TestNameSpace.UnitTestClass.TestMethod4 +Passed TestNameSpace.UnitTestClass.TestMethod5 +Canceling test run: test run timeout of 10000 milliseconds exceeded. +Passed TestNameSpace.UnitTestClass.TestMethod6 +Passed TestNameSpace.UnitTestClass.TestMethod6 + +Total tests: 7. Passed: 7. Failed: 0. Skipped: 0. +Test Run Canceled. +Test execution time: 18.2893 Seconds +``` + + diff --git a/docs/RFCs/0012-Editors-API-RevisionUpdate-15.4.md b/docs/RFCs/0012-Editors-API-RevisionUpdate-15.4.md new file mode 100644 index 0000000000..75164ba8e0 --- /dev/null +++ b/docs/RFCs/0012-Editors-API-RevisionUpdate-15.4.md @@ -0,0 +1,97 @@ +# 0012 Editors API Revision Update - 15.4 + +## Summary +This details the change in the JSON protocol between an Editor/IDE +and the test platform to support test case filtering. + +## Motivation +The console runner has an ability to run a specific set of tests via the `/testcasefilter` argument. Editors require this functionality as well to run a subset of tests which have not yet been discovered. This document builds on top of the v2 protocol between the Editor/IDE and the test platform. + +Here is the link to v1 specs: [Editors-API-Specification](./RFCs/0007-Editors-API-Specification.md) +and here is the link to the v2 specs: [Editors-API-Specification-V2](./RFCs/0009-Editors-API-RevisionUpdate.md) + +## Design +Filtering in the test platform is only supported when a test run request with sources is requested. This is unsupported when a run request with a set of TestCases is passed in. To that effect the following messages would change to accommodate filtering. + +### Run All Tests +The default run tests request will now have a TestCaseFilter passed in. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-------------------------------------| +| MessageType | string | TestExecution.RunAllWithDefaultHost | +| Payload | object | See below for details | + +**Payload** for `TestExecution.RunAllWithDefaultHost` has following structure. + +| Key | Type | Description | +|------------------|---------|--------------------------------------------| +| Sources | array | Set of test containers | +| TestCases | array | Set of `TestCase` objects | +| RunSettings | string | Run settings for the test run | +| KeepAlive | boolean | Reserved for future | +| DebuggingEnabled | boolean | `true` indicates a test run under debugger | +| **TestCaseFilter**| **string**| **the test case filter string** | + +#### Example +```json +{ + "MessageType": "TestExecution.RunAllWithDefaultHost", + "Version": 2, + "Payload": { + "Sources": [ + ".\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "TestCases": null, + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": false, + "TestCaseFilter": "FullyQualifiedName~UnitTestClass1&TestCategory=CategoryA" + } +} +``` +The responses to this request do not change. + +### Debug All Tests +The request to get the Process StartInfo for the Test host will now have a `TestCaseFilter`. + +#### API Payload +| Key | Type | Description | +|-------------|--------|-----------------------------------------------------| +| MessageType | string | TestSession.GetTestRunnerProcessStartInfoForRunAll | +| Payload | object | See details below | + +**Payload** object has following structure. + +| Key | Type | Description | +|------------------|---------|-----------------------------------------------| +| Sources | array | Set of test containers. *Required* | +| TestCases | array | Set of `TestCase` objects. Null in this case. | +| RunSettings | string | Run settings for the test run | +| KeepAlive | boolean | Reserved for future | +| DebuggingEnabled | boolean | `true` indicates a test run under debugger | +| **TestCaseFilter**| **string**| **the test case filter string** | + +#### Example +```json +{ + "MessageType": "TestExecution.GetTestRunnerProcessStartInfoForRunAll", + "Version": 2, + "Payload": { + "Sources": [ + "E:\\git\\singh\\vstest\\samples\\UnitTestProject\\bin\\Debug\\netcoreapp1.0\\UnitTestProject.dll" + ], + "TestCases": null, + "RunSettings": null, + "KeepAlive": false, + "DebuggingEnabled": true, + "TestCaseFilter": "FullyQualifiedName~UnitTestClass1&TestCategory=CategoryA" + } +} +``` + +The responses to this request do not change. + +## Note +1. This new parameter is purely optional and does not require any changes in editors based on earlier protocols. **This isn't a breaking change.** +2. This change is only available in the v2 version of the protocol. diff --git a/docs/RFCs/0013-Test-Adapter-Lookup.md b/docs/RFCs/0013-Test-Adapter-Lookup.md new file mode 100644 index 0000000000..d01e51df51 --- /dev/null +++ b/docs/RFCs/0013-Test-Adapter-Lookup.md @@ -0,0 +1,81 @@ +# 0013 Test Adapter Lookup + +## Summary +This note outlines the proposed changes for lookup and initialization of the test adapters. + +## Motivation +Following is a list of issues with current design +* Test discovery fails for a solution containing projects referring to multiple versions of the same adapter. +* Upgrade of test adapter is not honored as the adapters get cached in the host process. +* Diagnostic information related to which adapter was used for which source and what adapters are loaded in not available. + +## Principles +1. The adapter referenced in the project should be used for test execution +2. Performance should not degrade. +3. Adapter lookup logic is consistent across runs. +4. Adapter lookup logic should be clear and consistent for both IDE/Editor and CLI runs. + +## Proposed Changes +Here are the proposed changes based on the sources available for lookup of the adapters. + +### Adapter Sources +Here is the list of sources TestPlatform looks up for test adapters. + +| Source | Remarks | +|--------------------------|--------------------------------------------------------------------------------| +| TestAdapterPath | Adapter is specified by user in the runsettings file or via cli arguments | +| Nuget | Adapter ships as a nuget package, doesn't copy to output directory | +| Project output directory | Adapter ships as a nuget package, copies to output directory | +| Extensions directory | Adapters packaged with VS, available in the Extensions directory | +| VSIX | Adapter ships as a vsix. | + +### Mulitple verions of Adapter +In case there are multiple versions of the same adapter found during the lookup, TestPlatform will choose the one with the highest version. +TestPlatform will notify the user about the conflict and which version was selected for that run. + +### Details for lookup + +#### Nuget +This lookup is based on the nuget package references. This works only for IDE and not for CLI, as this information is only available in IDE. +IDE invokes all the test adapters with all the test projects in the solution. +If multiple versions of same adapter, or multiple adapters with same URI found, TestPlatform will throw a warning. + +* Recommendation : Use one version of the given adapter in the solution. + +* Best Practice : Define a constant for nuget package version of an adapter in one file and use it across all the projects. +This also helps make the upgrade experience to a newer version of adapter seamless. +For example, open source projects like +[Roslyn](https://github.com/dotnet/roslyn) and +[VSTest](https://github.com/microsoft/vstest) use *props file to define the version of the nuget packages. + +#### TestAdapterpath +TestAdapterPath can be given via runsettings or as an argument in case of cli. +All the test sources will be run against all the test adapters found in the test adapter path. +If multiple versions of same adapter, or multiple adapters with same URI found, TestPlatform will throw a warning. + +* Recommendation : Have one version of an adapter in the test adapter path. + +#### Project Output Directory +Some adapters packaged as nuget get copied to the output directory of the project. + +Since IDE picks up the adapters from the nuget package location, there is no need to look for adapters in the project output directory. +Hence, this project output directory will be probed only in case of cli. Further, cli will probe only when testAdapterPath is not specified. + +* Recommendation : Use /testadapterpath option with cli. + +#### Extensions directory +All the adapters in the extensions directory get loaded by default and all the test sources based on the file extensions are passed to these adapters. Test runner will provide the diagnostics information about adapters used for the test projects. + +#### VSIX +In case of IDE, all vsix based adapters get initialized by default. +In case of CLI, /UseVsixExtensions argument will be available. But user will start getting a recommendation to use /TestAdapterpath instead. + +* Recommendation for adapter authors : Move to nuget based acquisition for the test adapters. +* Note : TestPlatform needs to keep supporting this lookup until all adapters can be moved to nuget packages. + +### Additional diagnostics changes proposed +Here are a few changes for improving diagnosibilty of Test Platform + +1. Diagnostics information should include the information for all the loaded adapters along with their URIs. +2. Information regarding which source was given to which adapter gets surfaced. +3. TestPlatform will give a warning in case an attempt is made to load multiple versions of same adapter. diff --git a/docs/RFCs/0014-Packaging.md b/docs/RFCs/0014-Packaging.md new file mode 100644 index 0000000000..e44d73756e --- /dev/null +++ b/docs/RFCs/0014-Packaging.md @@ -0,0 +1,29 @@ +# 0014 - Packaging +## Motivation +As mentioned in the roadmap, vstest is looking to broaden its reach to all scenarios across Visual Studio and Visual Studio Team Services (VSTS) and Team Foundation Server (TFS) – i.e. extending it to .NET Framework, the VSTest task in VSTS and in TFS. We aspire to ship a standalone package that can be potentially used in other CI systems even. +Appropriate packaging is essential for such broad reach. +The following document describes how the Visual Studio Test Platform will be packaged. + +## Packaging +Conceptually, the capabilities fall into these two categories: +1. a subset of the capabilities that allows you to run tests and that is cross-plat, and that we have ported to Windows/Mac/Linux. +2. the full set of capabilities that have always shipped in-box with Visual Studio, and that are mostly Windows only (for e.g. some of the adapters are supported only on Windows, and shipped in-box with Visual Studio). + +Accordingly, we will create the following NuGet packages: +### Microsoft.TestPlatform.Portable +Contents: +- Runner: vstest.console.exe, vstest.console.dll) +- In-box adapters: None +- In-box data collectors: Blame datacollector (and any other data collectors which are supported crossplat) +- In-box loggers: trx +- Supports legacy test execution via TMI: No + +### Microsoft.TestPlatform +Contents: + - Microsoft.TestPlatform.Portable + + - In-box adapters: MSTest V1, Ordered Test, Generic Test, Web test adapters + - In-box data collectors: CodeCoverage, Fakes, TIA, video, SysInfo + - Supports legacy test execution via TMI: Yes + +## Versioning +The NuGet packages will continue to follow VS versioning. For e.g. 15.5.0-preview-2017MMDD-XY (XY are # of build of that day). diff --git a/docs/RFCs/0015-Telemetry.md b/docs/RFCs/0015-Telemetry.md new file mode 100644 index 0000000000..76b0ffd50e --- /dev/null +++ b/docs/RFCs/0015-Telemetry.md @@ -0,0 +1,144 @@ +# 0015 Telemetry + +## Summary +This document outlines the telemetry data points to be collected by vstest platform along with the expectations from any vstest consuming platform, wanting to use these telemetry data points for their own needs. + +## Overview +Going forward vstest platform will enable collection of rich telemetry data points to helps us and any vstest consuming platform in making the right choices to improve end user experience. The telemetry data points we plan to collect in vstest, doesn't contain any information that can be used to identify an individual e.g. name, email, username etc. More details on telemetry data points below. + +## Data Points +Following telemetry data points will be collected by vstest and also enabled for collection by any vstest consuming platform: +* Size of tests (e.g. numberOfTestsSources, numberOfTestsRun, duration etc.) +* Configuration of tests (e.g. parallelExecution, dataCollectorUsed, adapterVersion etc.) +* Composition of tests (e.g. targetOS, targetPlatform, targetFramework etc.) +* Features used (e.g. codeCoverage, settings etc.) +* Time (time of operation) +* Source of invocation (vstest consuming platform) +For more details please refer to the **Detailed List of Data Points** section at the end + +## Conceptual Flow +![alt text](./RFCs/Images/vstest.telemetry.png) + +## Scope +* vstest and vstest.console.exe will emit telemetry data points that any vstest consuming platform can listen to +* vstest consuming platform needs to provide the following information to the vstest + * indicator of user consent + * source of invocation +* Consuming platform needs to create a listener that can collect the data points and route it to their respective telemetry backend +* No PII or EUII data will be collected by vstest +* vstest will respect the user consent flowing in from the consuming platform + +## User Consent [Opt-In, Opt-Out] +Any vstest consuming platform can collect the telemetry events and redirect to the backend of their choice, however it is the responsibility of the consuming platform to +* Enable opt-in | opt-out experience for their users +* Ensure compliance (data, security, privacy etc.) + +## License +The Microsoft distribution of vstest is licensed with the [Link](https://www.visualstudio.com/microsoft-visual-studio-test-platform/). This license includes the "DATA" section to enable telemetry (shown below). +* **DATA COLLECTION.** The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft’s privacy statement. Our privacy statement is located at http://go.microsoft.com/fwlink/?LinkID=528096. You can learn more about data collection and use in the help documentation and the privacy statement. Your use of the software operates as your consent to these practices. + +* **Processing of Personal Data.** To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Online Services Terms to all customers effective May 25, 2018, at http://go.microsoft.com/?linkid=9840733. + +## Detailed List of Data Points +| Group | Attributes | +|----------------|-----------------| +| Size | numberOfTestsSources | +| | numberOfTestsRun | +| | duration | +| | discoveryState | +| | totalTests (Discovered) | +| | totalTimeTakenInSeconds (Discovered) | +| | duration | +| | totalTests (Executed) | +| | totalTimeTakenInSeconds (Executed) | +| Composition | adapterVersion | +| | targetFramework | +| | targetPlatform | +| | targetDevice (UWP or Not) | +| | testPlatformVersion | +| | targetOS | +| Configuration | loggerUsed | +| | dataCollectorUsed | +| | parallelExecution | +| | maxCpuCount | +| | adapterUsedCount (Discovered) | +| | adapterUsedCount (Executed) | +| | platform (commandLineSwitches) | +| | framework (commandLineSwitches) | +| Features | setting (commandLineSwitches) | +| | parallel (commandLineSwitches) | +| | enableCodeCoverage (commandLineSwitches) | +| | inIsolation (commandLineSwitches)| +| | useVSIXExtensions (commandLineSwitches) | +| | logger (commandLineSwitches) | +| Time | dateTime | +| Source | consumingPlatform | + +## Sending Consent for collecting Telemetry Metrics in Test Platform in Design Mode +**Collection in Test Platform will only happen if TestPlatform receives consent from the consumers.** + +The "CollectMetrics" field has been added in [TestPlatformOptions](./src/Microsoft.TestPlatform.ObjectModel/Client/TestPlatformOptions.cs) to send consent from Design Mode Scenarios(VS, VSCode etc) to TestPlatform. The users have to set "CollectMetrics" to "true" so that TestPlatform can collect Metrics and send it back to the client. + +The [IVsTestConsoleWrapper](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Interfaces/IVsTestConsoleWrapper.cs) and [IVsTestConsoleWrapperAsync](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Interfaces/IVsTestConsoleWrapperAsync.cs) contains API's that support TestPlatformOptions. Users must use these API's to send consent to the TestPlatform for collecting Metrics. + +**For Instance** +For Discovery : Users have to use this API to pass TestPlatform Options. + + /// + /// Start Discover Tests for the given sources and discovery settings. + /// + /// List of source assemblies, files to discover tests + /// Settings XML for test discovery + /// Options to be passed into the platform. + /// EventHandler to receive discovery events + void DiscoverTests(IEnumerable sources, string discoverySettings, TestPlatformOptions options, ITestDiscoveryEventsHandler2 discoveryEventsHandler); + +For Execution using sources: Users have to use this API to pass TestPlatform Options. + + /// + /// Starts a test run given a list of sources. + /// + /// Sources to Run tests on + /// RunSettings XML to run the tests + /// Options to be passed into the platform. + /// EventHandler to receive test run events + void RunTests(IEnumerable sources, string runSettings, TestPlatformOptions options, ITestRunEventsHandler testRunEventsHandler); + +Similarly, while running tests using TestCases, there are API's available to send TestPlatformOptions along with them. + +## Consuming Metrics in Design Mode Scenarios from Test Platform +The whole aggregated metrics will be appended in vstest.console process in the final Execution/Disocvery Complete message and it will be send back to the consumers. When users use API's that are available in [IVSTestConsoleWrapper](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Interfaces/IVsTestConsoleWrapper.cs), they have to pass the event handler which will contain metrics from TestPlatform. + +In Case of Execution, users will pass [ITestRunEventsHandler](./src/Microsoft.TestPlatform.ObjectModel/Client/Interfaces/ITestRunEventsHandler.cs), which contains [TestRunCompleteEventArgs](./src/Microsoft.TestPlatform.ObjectModel/Client/Events/TestRunCompleteEventArgs.cs) which will have Metrics in it which users can consume. + +In Case of Discovery, users have to pass new interface [ITestDiscoveryEventsHandler2](./src/Microsoft.TestPlatform.ObjectModel/Client/Interfaces/ITestDiscoveryEventsHandler2.cs) which contains [DiscoveryCompleteEventArgs](./src/Microsoft.TestPlatform.ObjectModel/Client/Events/DiscoveryCompleteEventArgs.cs) which will have metrics in it which users can consume. + +## Telemetry Design +### Collecting Data +* Collect Telemetry Data Points in various process(testhost,datacollector etc) and send it to vstest.console process where it will be uploaded or send back to users in design mode. + +**For eg:** +* In Test Host Process: +We have to collect how much time does each executor took to run test, Time taken to load adapters etc. + +* In Vstest.console: +We have to collect Total Discovery Time taken, Total Tests Run in case of parallel scenarios. + +#### Aggregating data points in Test Host process + +* It may happen that TestHost is on a newer version whereas vstest.console is on older version. So, TestHost process should not collect Metrics by default. So, it should only collect Metrics when users give consent to collect Metrics. +So, for sending consent from Vstest.console process to Test Host, Command line argument i.e. boolean **TelemetryOptedIn** is sent to TestHost Process from Vstest.console process. + +The interface [IRequestData](./src/Microsoft.TestPlatform.ObjectModel/Client/Interfaces/IRequestData.cs) has been has been exposed to TestHost process which contains [IMetricCollection](./src/Microsoft.TestPlatform.ObjectModel/Client/Interfaces/IMetricsCollection.cs) which will collect the Metrics in a dictionary. + +#### Sending Metrics from TestHost process to vstest.console process +Currently, At the end of Discovery Complete, we are sending **TestDiscovery.Complete** message event along with DiscoveryCompletePayload, so we will add our collected Metrics along with [DiscoveryCompletePayload](./src/Microsoft.TestPlatform.CommunicationUtilities/Messages/DiscoveryCompletePayload.cs). Similar will be done at end of **TestExecution.Complete** event where we will add the Metrics in [TestRunCompleteEventArgs](./src/Microsoft.TestPlatform.ObjectModel/Client/Events/TestRunCompleteEventArgs.cs). This helps us in sending whole metrics in one go and helps us to decrease performance overhead of sending messages from test host process to vstest.console process. + +In VsTestConsole process, the metrics which will be received from TestHost process will be aggregated with the VsTestConsole own metrics. + +### Publishing Data + +For Publishing data, there are two scenarios: +* Design Mode: We aggregate all the data in vstest.console and send to various IDE's(VS, VSCode etc) giving the IDE's options to add this telemetry data along with thier own Telemetry. + +* Non-Design Mode: We will be extending support for it soon. diff --git a/docs/RFCs/0016-Loggers-Information-From-RunSettings.md b/docs/RFCs/0016-Loggers-Information-From-RunSettings.md new file mode 100644 index 0000000000..f2fc97a27a --- /dev/null +++ b/docs/RFCs/0016-Loggers-Information-From-RunSettings.md @@ -0,0 +1,99 @@ +# 0016 Loggers information from RunSettings + +## Summary +This note outlines the proposed changes for: +1. Enabling logger support in test platform for protocol and C# library based clients. +2. Allowing users to provide loggers from the runsettings. + +## Motivation +1. Enabling logger support for protocol and C# library based clients will allow clients to use logger extensibility feature. + +2. Allowing users to provide loggers from the runsettings enables: + * Protocol and C# library based clients to provide loggers to the test platform. + * Configuring loggers as code. Users can commit a runsettings with required loggers and it doesn't need to be specified at each invocation. + +## Specifying a logger +Loggers can be provided to the test platform in one of the following ways: + +1. `/Logger:"UriOrFriendlyName";Key1=Value1;Key2=Value2` This is a switch to vstest.console.exe that feeds logger information to the test platform. For instance: + + ``` + /Logger:"logger://Microsoft/TestPlatform/TrxLogger/v1" + ``` + + This loads and initializes logger with "logger://Microsoft/TestPlatform/TrxLogger/v1" as uri. + + ``` + /Logger:sampleLogger;Key1=Value1;Key1=Value2 + ``` + + This loads and initializes logger with `sampleLogger` as friendly name. `Key1=Value1` and `Key2=Value2` are passed as dictionary parameters to the logger while initialization. + +2. Runsettings via `Logger` node in the `LoggerRunSettings` section. Here is a sample on how this can be specified: + + ```xml + + + + + + Value1 + Value2 + + + + + + + + ``` + + This loads and initializes: + * Logger with `friendlyName="sampleLoggerwithParameters"`. `Key1=Value1` and `Key2=Value2` are passed as dictionary parameters to the logger while initialization. i.e. `SampleLoggerWithParameters.Initialize(TestLoggerEvents events, Dictionary parameters)` is invoked with `parameters = {{"Key1", "Value1"}, {"Key2", "Value2"}}` + * Logger with `uri="logger://sample/sampleLoggerWithoutParameters1"`. FriendlyName is ignored in this case as uri takes more precedence. + * Logger with `assemblyQualifiedName="Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx"`. Uri and friendlyName are ignored in this case as assemblyQualifiedName takes more precedence. + +Test platform loads custom logger assemblies from test adapter paths and source directory. Check [adapter extensibility] (0004-Adapter-Extensibility.md) to know about how to provide test adapter paths to test platform. + +## Specification +1. If same logger is specified both in command line arguments and run settings, command line takes precedence. +2. User can override existing logger value in runsettings from command line. For example `vstest.console foo.dll -- LoggerRunSettings.Loggers=""`. +3. Multiple Loggers can be added in runsettings by adding `Logger` node in `LoggerRunSettings.Loggers` section. +4. Configuration is optional in `Logger` node. +5. Atleast one attribute among `uri`, `friendlyName`, `assemblyQualifiedName` should be present in `Logger` node. +6. If more than one attributes among `uri`, `friendlyName`, `assemblyQualifiedName` are present, then precedence order is `assemblyQualifiedName > uri > friendlyName`. Attributes other than precedent attribute are ignored. +7. Logger can be enabled or disabled using `enabled` attribute in `Logger` node. For example to disable a logger: ``. + +## Error and Warning scenarios: +Exception scenarios: +In case of exception, test run is aborted. Following are the exception scenarios: +1. `LoggerRunSettings` or `Loggers` node has attributes. +2. `LoggerRunSettings` has any node other than `Loggers`. +3. `Loggers` has any node other than `Logger`. +4. `Logger` has any node other than `Configuration`. +5. `Logger` node has any attribute other than `uri`, `assemblyQualifiedName`, `friendlyName`, or `enabled`. +6. Invalid format `uri` is given. +7. Unable to find logger using precedent attribute. +8. If none of the attributes `uri`, `assemblyQualifiedName`, `friendlyName` is given. + +Warning scenarios: +1. Key value pair has empty or whitespace value. Example: ``. + +Ignored scenarios: +1. Duplicate keys in `Configuration` node is ignored and verbose is added for it. + +## Design +Following are the proposed design changes for enabling logger support for protocol and C# library based clients: +1. TestLoggerManager will manage all the loggers. TestLoggerManager will be responsible for: + * Initializing loggers from the run settings. + * Enabling and triggering logger events. + * Disposing logger events. + +2. TestEngine API will have GetLoggerManager method which will return new TestLoggerManager instance on every call. +3. TestPlatform will get instance from TestEngine and initialize TestLoggerManager and will pass this TestLoggerManager instance to TestRunRequest and DiscoveryRequest. +4. TestRunRequest and DiscoveryRequest will hold the TestLoggerManager instance. On receiving any run/discovery events, respective methods of TestLoggerManager will be invoked. i.e. TestLoggerManager will no longer register logger events with run or discovery events. +5. On test run/discovery completion, TestLoggerManager will be disposed by TestRunRequest and DiscoveryRequest. +6. Limitation with this approach is that if TestRunRequest users like TestRequestManager tries to call `TestRunRequest.ExecuteAsync()` second time, then logger events will not be invoked as TestLoggerManager will already be disposed in first run. diff --git a/docs/RFCs/0017-Managed-TestCase-Properties.md b/docs/RFCs/0017-Managed-TestCase-Properties.md new file mode 100644 index 0000000000..e6953c038f --- /dev/null +++ b/docs/RFCs/0017-Managed-TestCase-Properties.md @@ -0,0 +1,166 @@ + + +# 0017 Properties for TestCases in Managed Code + +## Summary +This document standardizes additional properties on TestCase to support test cases written in managed languages. + +## Overview +There are a broad variety of choices that current test adapter implementers have made when setting the `FullyQualifiedName` on TestCase objects created during test discovery. `FullyQualifiedName` typically identifies the type and method that implements a test case in managed code, but because there has been no standardization, VS cannot rely on the format of the `FullyQualifiedName`. We've considered standardizing the format of `FullyQualifiedName`, but this presents migration & compatibility costs that outweigh the benefits. Instead, we are adding two new properties to TestCase that represent the type (`ManagedType`) and method (`ManagedMethod`) for each test case. These additional properties are only applicable to unit tests written in managed languages (e.g. C# & VB, et al.). + +## Specification + +TestCases for managed code must include a string-valued property named `ManagedType` property and a string-valued property named `ManagedMethod`. The specification below outlines the requirements for the contents of these two properties. + +### `ManagedType` Property + +The `ManagedType` test case property represents the fully specified type name in metadata format: + + NamespaceA.NamespaceB.ClassName`1+InnerClass`2 + +* The type name must be fully qualified (in the CLR sense), including its namespace. Any generic classes must also include an arity value using backtick notation (`# where # is the number of type arguments that the class requires). +* Nested classes are appended with a '+' and must also include an arity if generic. +* `ManagedType` name must be escaped if it doesn't conform to identifier naming rules. + +### `ManagedMethod` Property + +The `ManagedMethod` test case property is the fully specified method including the method name and a list of its parameter types inside parentheses separated by commas. + + MethodName`2(ParamTypeA,ParamTypeB,…) + +* If the method accepts no parameters, then the parentheses should be omitted. +* If the method is generic, then an arity must be specified (in the same way as the type property). +* The list of parameter types must be encoded using the type specification below. +* Return types are not encoded. +* `ManagedMethod` must be escaped if it doesn't conform to identifier naming rules. + +### Parameter Type Encoding + +Parameters are encoded as a comma-separated list of strings in parentheses at the end of the `ManagedMethod` property. Each parameter is encoded using the rules below. + +* Basic Types - Types should be written using their namespace and type name with no extra whitespace. For example (`NamespaceA.NamespaceB.Class`). Native types should be written using their CLR type names (`System.Int32`,`System.String`). +* Array Types - Arrays should be encoded as the element type followed by square brackets (`[]`). Multidimensional arrays are indicated with commas inside the square brackets. There should be one less comma than the number of dimensions (i.e. 2 dimensional array is encoded as `[,]`, 3 dimensional array as `[,,]` ). +* Generic Types - Generic types should be encoded as the type name, followed by comma-separated type arguments in angle brackets (`<>`). +* Generic Parameters - Parameters that are typed by a generic argument on the containing type are encoded with an exclamation point (`!`) followed by the ordinal index of the parameter in the generic argument list. +* Generic Method Parameters - Parameters that are typed by a generic argument on the method are encoded with a double exclamation point (`!!`) followed by the ordinal index of the parameter in the method's generic argument list. +* Pointer Types - Pointer types should be encoded as the type name, followed by an asterisk (`*`). +* Dynamic Types - Dynamic types should be represented as System.Object. + +#### Examples + +```csharp +// Custom Types +Method(NamespaceA.NamespaceB.Class) +'𝐌𝐲 𝗮𝘄𝗲𝘀𝗼𝗺𝗲 method w\\𝘢𝘯 𝒊𝒏𝒂𝒄𝒄𝒆𝒔𝒔𝒊𝒃𝒍𝒆 𝙣𝙖𝙢𝙚 🤦‍♂️'(NamespaceA.NamespaceB.Class) + +// Native Types +Method(System.String,System.Int32) + +// Array Types +Method(System.String[]) + +// Generic Types +Method(System.Collections.Generic.List`1) +'Method Name'(System.Collections.Generic.List`1) // Method name contains a space + +// Generic Type Parameters +Method(!0) + +// Generic Method Parameters +Method(!!0) + +// Generic Type with a Generic Type Parameter +Method(System.Collections.Generic.List`1) +``` + +### Special Methods + +The CLR has some features that are implemented by way of special methods. While these methods are unlikely to be used to represent tests, the list below indicates how they should be encoded, if necessary. + +* Explicit Interface Implementation - methods that explicitly implement an interface should be prefixed with the interface typename. For example the method name for the explicit implementation of IEnumerable.GetEnumerator would look like this; `System.Collections.Generic.IEnumerable.GetEnumerator`. Note that this is only the `ManagedMethod` property. The `ManagedType` property would still include the namespace of the class on which this method is declared. +* Constructors - constructors should be referenced using the method name `.ctor` +* Operators - operators are a language specific feature, and are translated into methods using compiler-specific rules. Use the underlying compiler-generated method name to reference the operator. For instance, in C#, `operator+` would be represented by a method named `op_Addition`. +* Finalizers - finalizers should be referenced using the name `Finalize` + +### Nested Generic Type Parameter Numbering + +If a generic type is nested in another generic type, then the generic arguments of the containing type are also reflected in the nested type, even if it's not reflected in the language syntax. This means that the numbering of generic parameters take into account the generic parameters of the containing type as if they are declared on the local type. + +```csharp +// type A has arity 1, and one generic argument T +// ManagedType = "A`1" +public class A +{ + // type B has arity 1, but two generic arguments T and X + // ManagedType = "A`1+B`1" + public class B { + + // ManagedMethod = "Method(!0, !1)" + public void Method(T t, X x) {} + + // ManagedMethod = "Method(!1)" + public void Method(X x) {} + + // ManagedMethod = "Method(!0, !1, !!0)" + public void Method(T t, X x, U u) {} + } +} +``` + +## Syntactic vs Semantic Test Location + +We are defining syntactic location as the location in the code/syntax where the method is defined that implements the test. On the other hand, semantic location is the location in the type hierarchy at which point the method becomes recognized as a valid test. + +There can be a situation where a test is declared on an abstract base type (syntactic), but the test is only discovered in a derived class (semantic). The question is which type should the `ManagedType` property point to? The base type, where the test code is located? Or the derived type, where the test is discovered? We will use the semantic location for the type because that is where the test adapter will find the test and it is where the test class would be instantiated. Also, there is a one to many relationship between the two. There can be many semantic test locations that each are implemented by the same base class method. If we were to standardize on using the syntactic location, we would risk having name collisions or fail to find the correct test case since there are multiple possible candidates. + +## Managed Tests that are Not Type/Method Based + +It is possible to create unit tests in managed code where tests are not necessarily based on types & methods. While this is somewhat uncommon, we need to be able to handle this situation gracefully. If a test adapter cannot provide a mapping between a testcase and a managed type and method, then it should not provide those properties. When `ManagedType` and `ManagedMethod` properties are not provided, the end-user may lose access to some features in the Test Explorer such as fast test execution by name, or source linking. + +## Tests Returning Multiple Results + +There are some situations where the number of test cases cannot be determined at discovery time. In these cases, when the tests are executed multiple results are returned for a single discovered test case. + +## Uniqueness + +The combination of `ManagedType` and `ManagedMethod` will be unique to a particular method within an assembly, but are not unique to a test case. This is due to the fact that when tests are data-driven, there can be many test cases that are executed by the same method. The test case ID is expected to be unique for every test case within an assembly. The test case ID should also be deterministic with respect to the method and its arguments. In other words, the test ID should not change given a particular method and a set of argument values (if any). + +## Identifier Naming Rules +1. The first character cannot be a number (A number is a `char` belong to Unicode category `Nd`). +2. It can contain letters or digits. (Unicode categories: `Lu`, `Ll`, `Lt`, `Lm`, `Lo`, `Nl` and `Nd`.) +3. It can contain formatting characters. (Unicode categories: `Mn`, `Mc`, `Pc`, and `Cf`.) + +## Escaping +If an identifier does not conform to identifier naming rules, it gets escaped. An escaped identifier always start and end with a `'`. +```console + Type: CleanNamespaceName.SecondLevel.𝐌𝐲 𝘤𝘭𝘢𝘴𝘴 with 𝘢𝘯 𝒊𝒏𝒂𝒄𝒄𝒆𝒔𝒔𝒊𝒃𝒍𝒆 𝙣𝙖𝙢𝙚 🤷‍♀️ + Method: int Sum(int x, int y) + Parsed Type: CleanNamespaceName.SecondLevel.'𝐌𝐲 𝘤𝘭𝘢𝘴𝘴 with 𝘢𝘯 𝒊𝒏𝒂𝒄𝒄𝒆𝒔𝒔𝒊𝒃𝒍𝒆 𝙣𝙖𝙢𝙚 🤷‍♀️' +Parsed Method: Sum(System.Int32,System.Int32) + + Type: CleanNamespaceName.SecondLevel.Deeply wrong .namespace name.NamespaceA.Class1 + Method: int Method with . in it(int x, int y) + Parsed Type: CleanNamespaceName.SecondLevel.'Deeply wrong '.'namespace name'.NamespaceA.Class1 +Parsed Method: 'Method with . in it'(System.Int32,System.Int32) +``` + +If a character is `'` or `\` it gets escaped to `\'` or `\\` consecutively. +```console + Type: CleanNamespaceName.ClassName\Continues + Method: void MethodName(int x, int y) + Parsed Type: CleanNamespaceName.'ClassName\\Continues' +Parsed Method: MethodName(System.Int32,System.Int32) +``` + +If an identifier is ending with arity, but that arity is not correct it will be escaped. +```console + Type: CleanNamespaceName.ClassName + Method: void MethodName`1(int x, int y) + Parsed Type: CleanNamespaceName.ClassName +Parsed Method: 'MethodName`1'(System.Int32,System.Int32) + + Type: CleanNamespaceName.ClassName + Method: void MethodName(int x, int y) + Parsed Type: CleanNamespaceName.ClassName +Parsed Method: MethodName`1(System.Int32,System.Int32) +``` diff --git a/docs/RFCs/0018-Skip-Default-Adapters.md b/docs/RFCs/0018-Skip-Default-Adapters.md new file mode 100644 index 0000000000..6e198eea15 --- /dev/null +++ b/docs/RFCs/0018-Skip-Default-Adapters.md @@ -0,0 +1,50 @@ +# 0018 Skip Default Adapters + +## Summary +This note outlines the proposed changes for skipping default adapters so that they don't take part in test discovery and execution. + +## Motivation +In addition to test adapters provided via TestAdaptersPaths, test platform loads default adapters present in Extensions folder. This folder is present alongside vstest.console.exe. Even for test sources which can't be discovered/executed by default adapters, we pass those test sources to default adapters. This causes following problems: +1. Adapters initialization cost increases. +2. Discovery/Execution time taken by adapters increases as test source is passed to default adapters as well for discovery/execution. + +Example: Default adapters can't run/discover XUnit tests, still testplatform initializes default adapters and pass XUnit test assemblies to them to discover/execute. + +Proposed changes are focused on improving performance of test discovery/execution by allowing option to skip initialization of default adapters. + +## Proposed Changes +1. Translation layer clients can skip default adapters by setting TestPlatformOptions.SkipDefaultAdapters as true. +2. TestRequestManager passes SkipDefaultAdapters flag to TestPlatform via CreateDiscoveryRequest/CreateTestRunRequest. +3. TestPlatform passes SkipDefaultAdapters flag to ProxyDiscoveryManager/ProxyExecutionManager via initialize method. +4. ProxyDiscoveryManager/ProxyExecutionManager stores this value and uses it to skip default adapters to be passed to test host whenever test host extensions are initialized. + +## API Changes +1. Adding of field SkipDefaultAdapters in TestPlatformOptions. +2. TestPlatform's CreateDiscoveryRequest/CreateTestRunRequest will accept TestPlatformOptions as additional argument. +3. **Making TestPlatform internal as it is not meant to be exposed. TestPlatform supports entry point only via command line and translation layer.** +4. IProxyDiscoveryManager and IProxyExecutionManager's Initialize method will accept SkipDefaultAdapters as additional argument. + +## Performance Improvement Analysis +Following are the performance improvements which are achieved when default adapters are skipped. + +**Sample**: XUnit test project + +| Discovery Request | Before Changes | After Changes | Improvement | +|------------------------|----------------|---------------|-------------| +| Adapter Initialization | 620 ms | 131 ms | 489 ms | +| Test Discovery | 892 ms | 678 ms | 214 ms | + +| Execution Request | Before Changes | After Changes | Improvement | +|------------------------|----------------|---------------|-------------| +| Adapter Initialization | 608 ms | 126 ms | 482 ms | + +Test Execution is not affected by these changes as while test execution, test source is passed to the matching adapter executor URI only. + +## Alternatives +**Alternative 1**: Passing SkipDefaultAdapters via runsettings +Issues: +SkipDefaultAdapters is something which is neither understood by test user nor by test adapter. So, it should not be part of runsettings. + +**Alternative 2**: Instead of passing TestPlatformOptions to CreateDiscoveryRequest/CreateTestRunRequest, pass only SkipDefaultAdapters as we don't need TestPlatformOptions in TestPlatform.cs for anything other than SkipDefaultAdapters. +Issue: +If in future similar field needs to be added, we need to change API of TestPlatform again to add the field. diff --git a/docs/RFCs/0019-Disable-Appdomain-While-Running-Tests.md b/docs/RFCs/0019-Disable-Appdomain-While-Running-Tests.md new file mode 100644 index 0000000000..a6d3dc862f --- /dev/null +++ b/docs/RFCs/0019-Disable-Appdomain-While-Running-Tests.md @@ -0,0 +1,41 @@ +# 0019 Disable Appdomain while Running Tests + +## Summary +The RFC outlines why + +1. Test adapters should honour disable app domain setting + +2. Running of tests with disable appdomain is important for resiliency + +## Motivation +In past we have seen customer hitting issue with AppDomain.Unload. There are two main issues with AppDomain.Unload call + +1. Hang in AppDomain.Unload (Tracking issue https://github.com/Microsoft/testfx/issues/225) + +2. AppDomain.Unload call can crash the process even if you have an exception handler in code (check next section for details) + + +## Details of one such crash during Appdomain.Unload + +Below is one of the analysis done for one of the crash dump while calling AppDomain.Unload + +1. An HWND (call it X) has a WndProc that is implemented in managed code. +2. The app domain that owns the WndProc code shuts down. +3. The OS delivers a message to window X. +4. The CLR tries to run the WndProc, but throws AppDomainUnloadedException when it sees that the WndProc is in a dead app domain. +5. The AppDomainUnloadedException propagates back into the OS window message dispatcher. +6. The OS window message dispatcher immediately reports the exception as unhandled (ignoring all exception handlers that might exist "further back" on the stack), which generally has the same effect as a failfast and tears down the process. + + +## Proposed changes + +Proposed guidelines are for customers and test adapters who wants to avoid these issues. + +**Adapters** +1. Test Adapter should honour `````` setting inside RunConfiguration node of runsettings. Check ./docs/configure.md for information on this setting. This will ensure that adapters dont create AppDomain at all to run tests + +**Test platform** + +1. Change in test platform to merge the app.config for a test assembly when `````` is set. This is to ensure test's app.config is honoured while running tests + +2. Make sure when `````` is set, each test source have isolation. This is done by spawning testhost process for each test source. diff --git a/docs/RFCs/0020-Improving-Logic-To-Pass-Sources-To-Adapters.md b/docs/RFCs/0020-Improving-Logic-To-Pass-Sources-To-Adapters.md new file mode 100644 index 0000000000..85fbeaf5f9 --- /dev/null +++ b/docs/RFCs/0020-Improving-Logic-To-Pass-Sources-To-Adapters.md @@ -0,0 +1,53 @@ +# 0020 Improving Logic To Pass Sources To Adapters + +## Summary +This note outlines the proposed solution for improving logic to pass test sources to adapter by adding assembly type filter (in addition to existing file extensions based filter). + +## Motivation +Every adapter specifies file extensions supported by it. Test sources are passed to adapters based on their supported file extensions. + +In case when extension is an assembly (.dll or .exe), we require additional filter based on which we can pass test source to an adapter. The reason is, an assembly can be either `native` or `managed`. Its possible that an adapter supports only native or only managed or both types of assemblies. + +Currently even though an adapter supports one type of assembly, there is no way for it to specify the same and thus we end up giving all type of assemblies to that adapter, which might cause overhead in test discovery time. + +Proposed solution allows adapters to specify which assembly type is supported, and thus in result: +1. Native assemblies will not be passed to adapters which don't support native assemblies. +2. Managed assemblies will not be passed to adapters which don't support managed assemblies. + +## Proposed Solution +1. System.ComponentModel.CategoryAttribute will be used for passing native and managed support. Adapter can specify native assemblies support by adding `[Category("native")]` in their discoverer. Similarly for managed support, `[Category("managed")]` can be specified. +2. `[Category("native")]` and `[Category("managed")]` will be ignored if adapter doesn't support assemblies i.e. none of `[FileExtension(".dll")]` or `[FileExtension(".exe")]` is present in adapter discoverer. +3. `Category` value other than `[Category("native")]` and `[Category("managed")]` will be ignored. + +## Changes required by adapters +Adapter can use `CategoryAttribute` to specify native or managed assemblies support. +1. For managed assemblies support, `[Category("managed")]` should be specified. +2. For native assemblies support, `[Category("native")]` should be specified. +3. For both native and managed assemblies support, `Category` attribute is not required. + +Proposed changes are optional for adapters. In case `Category` attribute is not added by adapter which supports assemblies, both native and managed assemblies are passed to it. + +**Example 1**: If adapter supports native .dll and .appx, then adapter discoverer has following attributes: +``` + [DefaultExecutorUri()] + [FileExtension(".dll")] + [FileExtension(".appx")] + [Category("native")] +``` + +**Example 2**: If adapter supports managed .dll, managed .exe and .xap, then adapter discoverer has following attributes: +``` + [DefaultExecutorUri()] + [FileExtension(".dll")] + [FileExtension(".exe")] + [FileExtension(".xap")] + [Category("managed")] +``` + +**Example 3**: If adapter supports native .dll, managed .dll, .js and .xap, then adapter has following attributes: +``` + [DefaultExecutorUri()] + [FileExtension(".dll")] + [FileExtension(".js")] + [FileExtension(".xap")] +``` diff --git a/docs/RFCs/0021-CodeCoverageForNetCore.md b/docs/RFCs/0021-CodeCoverageForNetCore.md new file mode 100644 index 0000000000..3d65de9715 --- /dev/null +++ b/docs/RFCs/0021-CodeCoverageForNetCore.md @@ -0,0 +1,92 @@ +# 0021 - Code Coverage for .NET Core +## Summary +This note provides an overview of the support for Code Coverage in .NET Core. + +## Motivation +The asks for Code Coverage support for .NET Core are the most commented issue on vstest repo: +- [https://github.com/Microsoft/vstest/issues/981](https://github.com/Microsoft/vstest/issues/981) +- [https://github.com/Microsoft/vstest/issues/1312](https://github.com/Microsoft/vstest/issues/1312) + +NOTE: +1. We are starting by enabling code coverage on .NET Core for Windows. +2. The functionality will enable support for .portable/embedded PDBs. +3. The coverage information will still be emitted as a .coverage file. Support for alternate forms of rendering will be considered separately in a subsequent effort. +4. Support for Linux and Mac will be considered separately in a subsequent effort. + +## Scenarios to support +Code coverage collection will continue to be enabled with a dedicated gesture. The following table summarizes the support that needs to be added: + +| Entry point | How will code coverage be enabled? | Syntax | +|-------------|------------------------------------|----------------------------------------------------------------------| +|dotnet test CLI | Through a switch to condition data collection | `dotnet test --collect:"Code Coverage"` | +|dotnet vstest CLI | Through a switch to condition data collection | `dotnet vstest --collect:"Code Coverage"` | +|VS IDE | Through menu commands | `"Analyze Code Coverage for Selected Test"` context menu in the VS Test Explorer, and via `"Test/Analyze Code Coverage"` menu item. | +|VSTS CI | through vstest.console (see below) | | +|vstest.console.exe CLI | Through a switch to condition data collection | `vstest.console.exe /Collect:"Code Coverage"` (if vstest is invoked programmatically then this conditioning will be via vstest's translation layer API). | + +NOTE: +These gestures explicitly do not need the user to specify the path of the code coverage data collector. There is spike planned to ascertain feasibility. If it turns out to be infeasible the user will need to provide a path to the code coverage datacollector using `/TestAdapterPath`. + +## Support Matrix +The support matrix is in terms of the following: +- __Core Runner__ aka `dotnet test`/`dotnet vstest`/`dotnet vstest.console.dll`, built for .NET Core +- __Desktop runner__ aka `vstest.console.exe`, and built for .NET Framework. + +Here is how these runners can be installed: +- dotnet SDK installation +- Visual Studio installation + +| Installation | Runner | Test target framework | Will code coverage be supported? | +|---------------|----------------|-----------------------|----------------------------------| +| dotnet SDK | Core runner | .NET Core | Yes | +| dotnet SDK | Core runner | .NET Framework | Yes | +| Visual Studio | Desktop runner | .NET Core | Yes | +| Visual Studio | Desktop runner | .NET Framework | Yes | + +## Acquisition +### Potential acquisition approaches +#### Option 1: bundle code coverage binaries into the dotnet SDK. +__Pros:__ Simple user experience. No additional installation required by the user. As long as the user has the latest .NET Core SDK, code coverage lights up. + +__Cons:__ dotnet SDK is cross-plat and, as mentioned, the current code coverage effort focuses on .NET Core (Windows) only. Thus code coverage binaries will get restored even on non-Windows machines, where it will not work (yet). + +#### Option 2: bundle code coverage binaries as a separate NuGet package, and make the test platform SDK depend on it. +- Ship the code coverage binaries as a separate NuGet package. Repurpose the [Microsoft.CodeCoverage package](https://www.nuget.org/packages/Microsoft.CodeCoverage/) that we already ship on NuGet. +- Make that a dependency for our [test platform SDK](https://www.nuget.org/packages/Microsoft.NET.Test.Sdk/). +- Now during a NuGet restore that happens in any context (CI, IDE, CLI), the required code coverage binaries will get automatically installed. + +__Pros:__ Simple user experience. No additional installation required by the user. As long as the user's project is using the latest test platform SDK, code coverage lights up. + +__Cons:__ The test platform SDK is cross-plat, and as mentioned the current code coverage effort will focus on .NET Core (Windows) only. Thus code coverage binaries will get restored even on non-Windows machines, where it will not work (yet). + +#### Option 3: ship code coverage binaries as a separate NuGet package, that the user has to explicitly reference. +- Ship the code coverage binaries as a separate NuGet package. Repurpose the [Microsoft.CodeCoverage package](https://www.nuget.org/packages/Microsoft.CodeCoverage/) that we already ship on NuGet, and version it at say 15.8. +- Rename the Shims package + - Ship the shim functionality that we currently ship in [Microsoft.CodeCoverage package](https://www.nuget.org/packages/Microsoft.CodeCoverage/) in a new Microsoft.CodeCoverage.Shim1.0 package. + - Make that new shim package a dependency for our test platform SDK ([Microsoft.NET.Test.SDK](https://www.nuget.org/packages/Microsoft.NET.Test.Sdk/)) for v15.8. + - Now during a NuGet restore that happens in any context (CI, IDE, CLI), the required shim package will get automatically installed. + +__Pros:__ The test platform SDK does not need to be carry the code coverage binaries. However, even if the test platform SDK did carry the code coverage binaries, the bloat will be fairly low: ~5 MB. + +__Cons:__ Poor user experience. User has to explicitly add the code coverage NuGet package reference to every test project for which for which they want to collect coverage. + +### Chosen option +To provide a good user experience, we will go with __Option 2__. + +## Work involved +- [x] CLI support to condition code coverage collection via a switch [this is already in place] +- [x] Spike to validate early drops of portable PDB support. +- [x] Publish as an RFC on GitHub. +- [x] Port the TraceDataCollector to .NET Standard. +- [x] Spike for automatic discovery of TraceDataCollector (for the case where dotnet test is used to run tests targeting .NET Framework) +- [x] The code coverage profiler (covrun32.dll/covrun64.dll) to support portable PDB [this will use MSDIA] +- [x] The code coverage profiler (covrun32.dll/covrun64.dll) to support embedded PDB [this will use MSDIA] +- [x] The code coverage Logger(CodeCoverage.exe) and code coverage profiler to be appropriately packaged so they are available to the .NET Core user +- [x] "preview" to NuGet +- [x] Beta to NuGet +- [x] Blog on DevOps blog +- [x] MSDN doc updated +- [x] RTW to NuGet + +## Ship date +Microsoft.NET.Test.Sdk v15.8 (Q3 2018). diff --git a/docs/RFCs/0022-User-Specified-TestAdapter-Lookup.md b/docs/RFCs/0022-User-Specified-TestAdapter-Lookup.md new file mode 100644 index 0000000000..6baba0972b --- /dev/null +++ b/docs/RFCs/0022-User-Specified-TestAdapter-Lookup.md @@ -0,0 +1,61 @@ +# 0022 User Specified Test Adapter Lookup + +## Summary +This note outlines the proposed changes for lookup and initialization of the test adapters, based on User input. + +### Current Adapter Lookup + +In the current model, when ever a Run/Discovery call is made from IDE to TestPlatform, the test adapter initialization happens in multiple phases, listed below + +* InitializeExtensions(): In this call, the IDE passes list of all adapters it finds in current session, these include adapters referenced via nuget in entire solution, & adpaters acquired via Vsix(e.g. GoogleTestAdapter, BoostAdapters, etc..) +* TestAdapterPath: After InitializeExtensions call, TestPlatform then looks into adapters present in TestAdapterPath mentioned in RunSettings, & adds adapters to existing list. +* TestPlatform then adds default Adapters from **Extensions** directory to current list. +* Finally platform looks in adapters present in test source directory, & adds them to adapter list. + +Once adapters are gathered from all the possible locations, this list is passed to testhost process, which then loads all these adapters, & passes test source(s) to all the adapters. + +Following the above adapter look up logic, we pass down test sources to adapters which have no business running them, for e.g. passing a managed test source to a native adapter(GoogleTestAdapter, BoostAdapters, etc.), & vice-versa. + +## Motivation + +Select the correct adapter for the run. Most managed adapters are available in the test source directory, hence can be picked up from later for the test run. + +In .NetCore scenario, we only pick adapters from test Source location, this helps +* Testplatform, as it doesn't need to probe various locations for adapters. +* Test Framework/Adapter writers, they know where to drop adapters so they are consumed by platform. +* Users as they don't have to specify any additional location for adapters, also they know exactly what adapter is used for the run. + +We want to move to the same model for FullCLR projects as well. + + +## Principles +1. The adapter referenced in the project should be used for test execution +2. Performance should not degrade. +3. Adapter lookup logic is consistent across runs. +4. Adapter lookup logic should be clear and consistent for both IDE/Editor and CLI runs. + + +## RoadMap + +1. Introduce an option(**UseSpecifedAdapterLocations**) to pick adapter from test source location & TestAdapterPath, this option would be present under Tool->Option->Test. +2. Deprecate **Extensions** directory: From VS 15.8 platform will show a warning message to users in both CLI/IDE, for whom adapters from Extensions directory were used to discovery/run tests. We will stop picking adapters from Extensions directory from next Major VS release. + +### Details for lookup + +* Option "UseSpecifedAdapterLocations" is checked: Adapters only from source, & TestAdapterPaths would be picked. +* Option "UseSpecifedAdapterLocations" is unchecked: Adapters will be picked from Vsix & Extensions directory as well. + +### Perf Improvements +Restricting adapters via above logic also results in perf improvements, as it filters out unnecessary adapters which should be not used for a given test source, primarily for a managed test source, it filters our native adapters, as they are acquired only via Vsix, or from default **Extensions** folder. + +The improvement is however seen when a few tests are run, for e.g. when running two tests via RunSelected options from IDE, we see the time reduced from **0:00:01.4782809** to **0:00:01.1312048** in IDE Test Output pane + +## Implementation Details: +Option "UseSpecifedAdapterLocations" is enabled: + +1. IDE would send “InitializeExtensions” call with empty list: This would allow platform to clear the existing cache it would have created if the option was not enabled. +2. While sending a discovery/run request, IDE should set [SkipDefaultAdapters](https://github.com/Microsoft/vstest/blob/e48fde2ccd5c029ffe346fcf20533a556d6f2583/src/Microsoft.TestPlatform.ObjectModel/Client/TestPlatformOptions.cs#L42) to true while sending this request, this specifies to platform to not use adapters from **Extensions** folder. + +Option "UseSpecifedAdapterLocations" is disabled: +1. IDE will send “InitializeExtensions” call with list of adapters acquired from Vsix locations. +2. IDE will send discovery/run request with [SkipDefaultAdapters](https://github.com/Microsoft/vstest/blob/e48fde2ccd5c029ffe346fcf20533a556d6f2583/src/Microsoft.TestPlatform.ObjectModel/Client/TestPlatformOptions.cs#L42) as false. diff --git a/docs/RFCs/0023-TestSettings-Deprecation.md b/docs/RFCs/0023-TestSettings-Deprecation.md new file mode 100644 index 0000000000..c96810d60b --- /dev/null +++ b/docs/RFCs/0023-TestSettings-Deprecation.md @@ -0,0 +1,48 @@ +# 0023 TestSettings deprecation for automated unit and functional testing scenarios. + +## Summary + +This note outlines the proposed changes to deprecate support for using .testsettings in automated unit and functional testing scenarios. + +## Motivation + +Today there are two types of files to configure test runs: *.testsettings and *.runsettings. To simplify the experience, we are planning to deprecate support for *.testsettings in automated unit and functional testing scenarios. +Please note that *.testsettings will continue to be supported for load test scenarios. + +## RoadMap + +The recommendation for those who are using testsettings in automated unit and functional testing scenarios, is to move to runsettings. [Here](http://aka.ms/runsettings) is a documentation of how to use runsettings to configure test runs. + +If you are not able to achieve all your existing configurations in testsettings via runsettings, you may try to achieve the same using the below legacy nodes that will be newly introduced in runsettings. +RunSettings will start supporting these features previously supported only via TestSettings. The following table specifies the new nodes and attributes, that will be introduced and how they are mapped from the existing nodes in testsettings. + +| TestSettings Node | RunSettings Node | +|---------------------------------------------------------------------|----------------------------------------------------------------------------| +|/TestSettings/Deployment |/RunSettings/LegacySettings/Deployment | +|/TestSettings/Scripts |/RunSettings/LegacySettings/Scripts | +|/TestSettings/Execution/TestTypeSpecific/UnitTestRunConfig |/RunSettings/LegacySettings/Execution/TestTypeSpecific/UnitTestRunConfig | +|/TestSettings/Execution/Timeouts: testTimeout |/RunSettings/LegacySettings/Execution/Timeouts: testTimeout | +|/TestSettings/Execution/Timeouts: runTimeout |/RunSettings/RunConfiguration/TestSessionTimeout | +|/TestSettings/Execution: parallelTestCount |/RunSettings/LegacySettings/Execution: parallelTestCount | +|/TestSettings/Execution: hostProcessPlatform |/RunSettings/LegacySettings/Execution: hostProcessPlatform | +|/TestSettings/Execution/Hosts |/RunSettings/LegacySettings/Execution/Hosts | +|/TestSettings/Execution/TestTypeSpecific/WebTestRunConfiguration |/RunSettings/WebTestRunConfiguration | + +## Migration + +A tool named SettingsMigrator will be introduced with test platform, which can be used to migrate your existing testsettings files to runsettings as follows: + +SettingsMigrator.exe {Full path to testsettings file or runsettings file to be migrated} +SettingsMigrator.exe {Full path to testsettings file or runsettings file to be migrated} {Full path to runsettings file to be created} + +Examples: +SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings +SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings +SettingsMigrator.exe E:\MyTest\MyTestSettings.testsettings E:\MyTest\MyNewRunSettings.runsettings +SettingsMigrator.exe E:\MyTest\MyOldRunSettings.runsettings E:\MyTest\MyNewRunSettings.runsettings + +The exe can usually be found in C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\SettingsMigrator.exe depending on your Visual Studio install location. + +## Expected Ship Date + +Support for the new legacy settings in runsettings is expected to come in the next release. The deprecation of testsettings for automated unit and functional testing scenarios is expected to be in effect from the next major VS release. diff --git a/docs/RFCs/0024-Blame-Collector-Options.md b/docs/RFCs/0024-Blame-Collector-Options.md new file mode 100644 index 0000000000..60f7ad67f4 --- /dev/null +++ b/docs/RFCs/0024-Blame-Collector-Options.md @@ -0,0 +1,68 @@ +# 0024 Blame collector options + +## Summary +This note outlines the proposed changes for enhancing test blame data collector options. + +## Motivation +To enable a first-class option to support troubleshooting scenarios, including unattended execution in the pipeline, we need some additional options to be added to the existing test blame data collector. + +## Proposed Changes +Here are the proposed changes for the test blame data collector. + +Test blame data collector has an optional parameter called "CollectDump" which will collect a mini dump of the test host on an unexpected exit of the process. +Optionally one may choose to specify key value pairs to override this: + +CollectAlways: If you choose to collect dump even when there is no process crash. It takes values false/true. By default, a dump will be created only on crash. +DumpType: If you choose to collect a full process dump. It takes values mini/full. By default, a mini dump will be created. + +### Help text + +Here is how the new command line help text will look like: + +--Blame|/Blame:[CollectDump];[CollectAlways]=[Value];[DumpType]=[Value] + Runs the test in blame mode. This option is helpful in isolating the problematic test causing test host crash. + It creates an output file in the current directory as "Sequence.xml", + that captures the order of execution of test before the crash. + You may optionally choose to collect process dump for the test host. + When you choose to collect dump, by default, a mini dump will be collected on a crash. + You may also choose to override this default behaviour by some optional parameters: + CollectAlways - To collect dump on exit even if there is no crash (true/false). + DumpType - To specify dump type (mini/full). + Example: /Blame + /Blame:CollectDump + /Blame:CollectDump;CollectAlways=true;DumpType=full + +These may also be specified in the runsettings as below: + +```xml + + + + + + + + + + + C:\TestResults + + + + + + +``` + +### Errors and warnings +If the format of the specified options is wrong, the run will stop and throw an error: +The options specified with /blame is incorrect, please correct it and retry. + +If an incorrect parameter is used with blame, it will be ignored with a warning such as: +The blame parameter specified, 'Parameter1' is not valid. Ignoring this parameter. + +If an incorrect key is used with blame, it will be ignored with a warning such as: +The blame parameter key specified 'Key1' is not valid. Ignoring this key. + +If an incorrect value is specified for a key, it will be ignored with a warning such as: +The blame parameter key 'Key1' can only support values Value1/Value2. Ignoring this key. diff --git a/docs/RFCs/0025-Test-Host-Runtime-Provider.md b/docs/RFCs/0025-Test-Host-Runtime-Provider.md new file mode 100644 index 0000000000..6ae96400d9 --- /dev/null +++ b/docs/RFCs/0025-Test-Host-Runtime-Provider.md @@ -0,0 +1,35 @@ +Test Host Runtime Extensibility + +## Summary +Allow the test platform to discover/launch test host provided by 3rd party. This would be done via a custom host provider, which understands the deployment and launching of test host for a specified runtime. + +## Motivation +As the platforms are evolving, the test platform cannot provide the ability to deploy test on every platform. The test platform should be able to run tests on any platform, provided there is a corresponding test host that understands the platform and can provide environment for the tests to discover/run. This provides an extensibility point where the test platform discovers available tests host and based on the test run criteria delegates the responsibility to execute test to appropriate Test Host provider. + +## Detailed Design + +This design will be detailed through the following sections: + + 1. RunTime Provider Contract + 2. Discovering available TestHost (Acquisition) + 3. Choosing appropriate TestHost + +### RunTime Provider Contract +A Test RunTime provider will implement [ITestRunTimeProvider](./src/Microsoft.TestPlatform.ObjectModel/Host/ITestRunTimeProvider.cs#L18) + +ITestRunTimeProvider provides set of API's needed for any Test RunTime provider to be able to deploy, & launch the Test RunTime. + +Interface [ITestHostLauncher](./src/Microsoft.TestPlatform.ObjectModel/Client/Interfaces/ITestHostLauncher.cs) provides an Extension point for IDE's to start TestHost process themselves. For example, in case of debugging/profiling test, the VS IDE would need to launch the TestHost itself. +The interfaces would be part of Object Model. + +### Discovering TestHost + +Default Test Host required by the test platform are packaged along with it in a directory that always gets probed. This directory called "Extensions" resides next to vstest.console.exe. An assembly with name ending with *RuntimeProvider.dll* placed in this directory is a candidate Test Runtime provider. + +### Choosing the right TestHost + +The test platform enumerates over the host providers, providing them with current RunConfiguration. The host providers then return if they are can Launch a TestHost based on RunConfiguration. This is achieved via following implementation + +``` + ITestRunTimeProvider.CanExecuteCurrentRunConfiguration(): +``` diff --git a/docs/RFCs/0026-Passing-TestPlatform-Properties-to-DataCollector.md b/docs/RFCs/0026-Passing-TestPlatform-Properties-to-DataCollector.md new file mode 100644 index 0000000000..e354009ab0 --- /dev/null +++ b/docs/RFCs/0026-Passing-TestPlatform-Properties-to-DataCollector.md @@ -0,0 +1,51 @@ +# 0026 DataCollector Extensibility - Passing TestPlatform properties to DataCollector extensions + +## Summary +Passing TestPlatform properties as part of property bag to datacollectors. These properties can be used by the datacollectors for processing before test run start. + +## Motivation +Data collector might need test platform properties. Example: Static code coverage data collector needs to instrument the test sources before test run start thus need list of test sources during initialization. + +## Design +`SessionStartEventArgs` will contain `Properties` which are passed to the data collector in `SessionStart` event. +Currently test platform passes following properties to the datacollector extensions : + +**"TestSources"** : `IEnumerable`
+TestSources is an enumerable of string of all test sources that is used by the test run. + +The public APIs exposed in `SessionStartEventArgs` would be as given below. +```csharp +/// +/// Gets session start properties enumerator +/// +public IEnumerator> GetProperties() + +/// +/// Gets property value +/// +/// Property name +public T GetPropertyValue(string property) + +/// +/// Gets property value +/// +/// Property name +public object GetPropertyValue(string property) + +``` + +## Usage +In the datacollector, the user can get test sources as given below. +```csharp +IEnumerable sources = args.GetPropertyValue("TestSources"); +``` + +Also, all properties can be accessed via the `GetProperties` API as given. +```csharp +var properties = args.GetProperties(); +while (Properties.MoveNext()) +{ + Console.WriteLine(properties.Current.Key); + Console.WriteLine(properties.Current.Value); +} +``` diff --git a/docs/RFCs/0027-Merge-Dotnet-Test-And-VsTest-Verbs.md b/docs/RFCs/0027-Merge-Dotnet-Test-And-VsTest-Verbs.md new file mode 100644 index 0000000000..ef1fa4a6b6 --- /dev/null +++ b/docs/RFCs/0027-Merge-Dotnet-Test-And-VsTest-Verbs.md @@ -0,0 +1,46 @@ +# 0027 Merge dotnet test and dotnet vstest verb + +## Motivation +Customer ask to merge the two dotnet verbs "test" and "vstest". +Associated github issue: https://github.com/Microsoft/vstest/issues/1453 + +## Goal +User should be able to run unit and integration tests with ability to pass in the filename of either a .csproj or a .dll without having to change any other syntax of the dotnet test command. + +## Success criteria (as per user ask) +1. The "dotnet test" command can be used in place of the "dotnet vstest" command. +2. The "dotnet test" command can accept a list of dlls +3. Using "dotnet test" and targeting a list of dlls, there is an argument for "--parallel" which will run the tests from the dlls in parallel. +4. Using "dotnet test" and targeting a dll, the inclusion or exclusion of the "--no-build" argument will have no impact on the behavior of execution. + +## Issues with merging the two verbs + +### Irrelevant Arguments +The arguments that are acceptable for the dotnet test for project/solution will not be applicable to the dotnet test when invoked for dlls. +Here are possible ways to handle this: + +1. Ignore the arguments that are not valid. +2. Throw a warning to the user, and continue with the execution. +3. Throw an error, giving user an actionable message and stop the execution. + +Note: +1. For option (1), ignoring the arguments seems incorrect. If the user gives certain arguments, the expectation is that the arguments get honored. Ignoring the arguments without notify the user would be incorrect. If an argument like "--no-build" is not relevant + +### Same arguments but different acceptable values +There are arguments that are accepted by both dotnet test and dotnet vstest today. We will have make sure there is parity with respect to these arguments before merge. +One such argument is "--framework". The values accepted by the dotnet test today are different from the ones accepted by dotnet vstest. Test platform today does not understand aliases. For example, ".NETCoreApp,Version=v1.0" is valid framework while netcoreapp1.0 is not valid framework for test platform. + +We will have to make sure all such arguments accept the super set of these values now. We might have to add another layer to convert the values into appropriate values that the platform understands. + +### Different arguments but similar relevance +There are arguments like "--runtime-identifier" which to some extent map to the "/platform" in the test platform world. + +Should there be added intelligence to convert this argument ? or should this fall in invalid arguments ? + +## Possible Solution +Parse the arguments given to "dotnet test" to detect dll/exe present in the arguments. If detected, call dotnet vstest.console.dll with the rest of the arguments. + +The above mentioned issues will need to be handled. + +Open questions: +- What is the expected behavior if user gives both dlls and csproj ? diff --git a/docs/RFCs/0028-BlameCollector-Hang-Detection.md b/docs/RFCs/0028-BlameCollector-Hang-Detection.md new file mode 100644 index 0000000000..28bd713d7c --- /dev/null +++ b/docs/RFCs/0028-BlameCollector-Hang-Detection.md @@ -0,0 +1,106 @@ +# 0028 Blame collector hang detection + +## Summary + +Blame data collector now supports a new mode meant to help detect and fix hangs in test code. This mode does not introduce any perf hit on the test run as the proc dump process is only started after the specified timeout interval has elapsed. + +## Motivation + +Whenever running tests in CI systems if a hang occurred it would generally lead to a timeout and abrupt cancelling of the CI pipeline without giving an oppurturnity for the test platform or other scripts to attach the necessary logs/dumps required to analyse the hang. + +## Pre-Requisites + +This was introduced in testplatform version 16.4.0-preview-20191007-01 (This or a higher version is required) + +## Working + +If the testhost does not send any messages to the datacollector for the specified duration then it is inferred as a hang and a dump is collected and the testhost process is killed to ensure any available attachments and logs are gracefully attached to the trx file and propagated up to the chain in case of a CI system for further analysis of the hang. + +## Steps to configure + +Set the `PROCDUMP_PATH` environment variable to the full path to the directory containing +the `procdump.exe` and `procdump64.exe` tools. +This path may be `%ProgramData%\chocolatey\bin\` if you use `choco install procdump` to acquire these tools. + +Add the required settings as shown below in the .runsettings file sample below: + +```xml + + + + + + + %AGENT_TEMPDIRECTORY% + + + + + +``` + +Note: This works along with (but can also be used independent of) the existing collect dump option introduced in [RFC 0024](0024-Blame-Collector-Options.md). + +## Supported options + +|Option|Description| +|--|--| +`DumpType`|If you choose to collect a full process dump. It takes values `mini`/`full`. By default, a mini dump will be created. +`TestTimeout`|Duration of inactivity in milliseconds (no test events from the test host) after which the data collector assumes a hang has occurred and proceeds to collect a dump and kill the test host process. +`ResultsDirectory`|The path must exist, but files will not be permanently stored there. Test results ultimately go to a `TestResults` folder under the test project directory by default, or where the `--results-directory` parameter specifies. + +## Invoking the tests + +Add the `--settings path-to\test.runsettings` parameter to `dotnet test` or `vstest.console.exe`. +Dump collection with Blame data collector is only supported on Windows for now. For non-Windows agents, omit the .runsettings file or use one that does not activate the Blame collector. + +Use the `--results-directory` to control where the `Sequence_.xml` and `.dmp` files are placed. + +## Outputs + +The `Sequence_guid.xml` and .dmp files will be placed under the test project source directory in a `TestResults\\` folder. + +Note that the test runner may report a failure to produce the dump file, such as the one shown below: + +``` +Data collector 'Blame' message: System.IO.FileNotFoundException: Collect dump was enabled but no dump file was generated. + at Microsoft.TestPlatform.Extensions.BlameDataCollector.ProcessDumpUtility.GetDumpFile() + at Microsoft.TestPlatform.Extensions.BlameDataCollector.BlameCollector.SessionEndedHandler(Object sender, SessionEndEventArgs args). +``` + +But when it is followed by an attachments list that includes the dmp file such as the one shown below, the error above is incorrect and can be disregarded: + +``` +Attachments: + D:\a\_temp\7d047b47-621b-493e-9a11-ccff70000ce8\testhost.x86_7100_6e0907f276fd4b2ba0d80f1fb5332e89_hangdump.dmp + D:\a\_temp\7d047b47-621b-493e-9a11-ccff70000ce8\Sequence_6e0907f276fd4b2ba0d80f1fb5332e89.xml +``` + +## Azure Pipeline considerations + +The test runner can be invoked from your pipeline directly by invoking the command line runner. When using one of the Microsoft-owned tasks however, special considerations apply, as described below. + +### `VsTest` task usage + +As of now this can be used in the vstest task by making the above changes to runsettings and also enabling "advanced diagnostics" with collect dump set to "never" in the task UI if you just want hang dumps. (If both crash and hang detection needs to be enabled then set collect dump to "on abort only"). + +### `DotNetCoreCLI` task usage + +The `DotNetCoreCLI` task will try to upload these files as attachments, but any dump file exceeding 75MB will fail (and full dumps are almost surely going to exceed this limit). + +To ensure that dmp files are collected so you can analyze them in the event of a hang/crash, you will need to author the script to capture these `TestResults` directories as artifacts. +This will allow you to collect dumps that exceed 75MB. + +The `DotNetCoreCli` task adds a `--results-directory $(Agent.TempDirectory)` switch to the `dotnet test` command, so your artifact uploading script will need to search that directory for your test outputs including .dmp files. +It actually drops *two copies* of the outputs under this directory, so upload just one copy by selecting the files directly under a `$(Agent.TempDirectory)\guid` pattern. Using Powershell this can be done like this: + +```ps1 +$guidRegex = '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$' +$filesToCapture = (Get-ChildItem $env:AGENT_TEMPDIRECTORY -Directory |? { $_.Name -match $guidRegex } |% { Get-ChildItem "$($_.FullName)\testhost*.dmp","$($_.FullName)\Sequence_*.xml" -Recurse }) +``` + +The `dotnet test` CLI will fail if two `--results-directory` switches are specified, so it is not possible to override the results directory specified by the `DotNetCoreCli` task. + +## Sample + +Review [a sample of a pull request](https://github.com/AArnott/Library.Template/pull/43) to a repo that activates crash and hang dump collection using the `DotNetCoreCLI` task. diff --git a/docs/RFCs/0029-Debugging-External-Test-Processes.md b/docs/RFCs/0029-Debugging-External-Test-Processes.md new file mode 100644 index 0000000000..b30f02b5d0 --- /dev/null +++ b/docs/RFCs/0029-Debugging-External-Test-Processes.md @@ -0,0 +1,113 @@ +# 0029 Debugging External Test Processes + +# Summary +Introduce APIs to improve debugging support in Visual Studio for tests that run in an external process other than `testhost*.exe`. + +# Motivation +Some test frameworks (examples include [TAEF](https://docs.microsoft.com/en-us/windows-hardware/drivers/taef/) and [Python](https://docs.microsoft.com/en-us/visualstudio/python/unit-testing-python-in-visual-studio)) need to execute tests in a external process other than `testhost*.exe`. When it comes to debugging such tests in Visual Studio today, there are a couple of problems. + +1. A test adapter can request to launch a child process with debugger attached by calling [`IFrameworkHandle.LaunchProcessWithDebuggerAttached()`](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/IFrameworkHandle.cs#L29) within adapter's implementation of [`ITestExecutor.RunTests()`](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/ITestExecutor.cs#L23) (after checking that [`IRunContext.IsBeingDebugged`](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/IRunContext.cs#L32) is `true`). However, there is no supported way for a test adapter to request that debugger should be attached to an **already running process**. + +2. Even though a test adapter can launch a child process with debugger attached as described above, today the debugger is always attached to the `testhost*.exe` process as well. This means that **Visual Studio ends up debugging two processes** instead of just the single process where tests are running. + +Debugging of Python tests is supported in VS today. However, the Python adapter works around the above limitations by talking to the Python extension inside VS whenever `ITestExecutor.RunTests()` is invoked (and `IRunContext.IsBeingDebugged` is `true`). The Python extension in VS then attaches VS debugger to the Python test process independently and also detaches the `testhost*.exe` process to achieve the desired behavior. + +While this works for Python, not all test frameworks that need to support debugging of tests running in external processes would want their users to also install a VS extension. For this reason, debugging of TAEF tests is currently not supported in VS. + +# Proposed Changes +1. Introduce a new `IFrameworkHandle2` interface that inherits [`IFrameworkHandle`](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/IFrameworkHandle.cs#L12) and adds the following `AttachDebuggerToProcess()` API that an adapter can invoke from within [`ITestExecutor.RunTests()`](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/ITestExecutor.cs#L23) to attach debugger to an already running process. + +``` +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter +{ + /// + /// Handle to the framework which is passed to the test executors. + /// + public interface IFrameworkHandle2 : IFrameworkHandle + { + /// + /// Attach debugger to an already running process. + /// + /// Process ID of the process to which the debugger should be attached. + /// if the debugger was successfully attached to the requested process, otherwise. + bool AttachDebuggerToProcess(int pid); + } +} +``` + +``` +// Adapter's implementation of ITestExecutor.RunTests() +void ITestExecutor.RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) +{ + ... + + if (runContext.IsBeingDebugged && frameworkHandle is IFrameworkHandle2 frameworkHandle2) + { + frameworkHandle2.AttachDebuggerToProcess(testProcessId); + } + + ... +} +``` + +2. Introduce a new `ITestExecutor2` interface that inherits [`ITestExecutor`](./src/Microsoft.TestPlatform.ObjectModel/Adapter/Interfaces/ITestExecutor.cs#L15) and adds the following `ShouldAttachToTestHost()` API. Newer adapters can choose to implement `ITestExecutor2` instead of `ITestExecutor`. If implemented, `ITestExecutor.ShouldAttachToTestHost()` will be invoked before `ITestExecutor.RunTests()` is invoked for any test execution. `ITestExecutor2.ShouldAttachToTestHost()` will also be supplied the same set of inputs as `ITestExecutor.RunTests()`. This would allow adapters to control whether or not the debugger should be attached to `testhost*.exe` for the subsequent invocation of `ITestExecutor.RunTests()`. + +``` +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter +{ + /// + /// Defines the test executor which provides capability to run tests. + /// + /// A class that implements this interface will be available for use if its containing + // assembly is either placed in the Extensions folder or is marked as a 'UnitTestExtension' type + // in the vsix package. + /// + public interface ITestExecutor2 : ITestExecutor + { + /// + /// Indicates whether or not the default test host process should be attached to. + /// + /// Path to test container files to look for tests in. + /// Context to use when executing the tests. + /// if the default test host process should be attached to, otherwise. + bool ShouldAttachToTestHost(IEnumerable sources, IRunContext runContext); + + /// + /// Indicates whether or not the default test host process should be attached to. + /// + /// Tests to be run. + /// Context to use when executing the tests. + /// if the default test host process should be attached to, otherwise. + bool ShouldAttachToTestHost(IEnumerable tests, IRunContext runContext); + } +} +``` + +3. Introduce a new `ITestHostLauncher2` interface that inherits [`ITestHostLauncher`](./src/Microsoft.TestPlatform.ObjectModel/Client/Interfaces/ITestHostLauncher.cs#L11) and adds the following `AttachToProcess()` API. Visual Studio's Test Explorer will supply an implementation of this interface via [`IVsTestConsoleWrapper.RunTestsWithCustomTestHost()`](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Interfaces/IVsTestConsoleWrapper.cs#L120) and `ITestHostLauncher2.AttachToProcess()` will be called when `IFrameworkHandle2.AttachDebuggerToProcess()` is called within an adapter. + +``` +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces +{ + /// + /// Interface defining contract for custom test host implementations. + /// + public interface ITestHostLauncher2 : ITestHostLauncher + { + /// + /// Attach to already running custom test host process. + /// + /// Process ID of the process to attach. + /// if the attach was successful, otherwise. + bool AttachToProcess(int pid); + + /// + /// Attach to already running custom test host process. + /// + /// Process ID of the process to attach. + /// The cancellation token. + /// if the attach was successful, otherwise. + bool AttachToProcess(int pid, CancellationToken cancellationToken); + } +} + +``` diff --git a/docs/RFCs/0029-Dotnet-Test-MultiTarget-Project-Trx-Logger.md b/docs/RFCs/0029-Dotnet-Test-MultiTarget-Project-Trx-Logger.md new file mode 100644 index 0000000000..96b159b173 --- /dev/null +++ b/docs/RFCs/0029-Dotnet-Test-MultiTarget-Project-Trx-Logger.md @@ -0,0 +1,84 @@ +# 0029 Dotnet test on multi target project logging on multiple targets + +## Summary +Dotnet test on a multi-target projects logs only the last target. In multi target project, the log file name provided is being overwritten and ending up in data loss. Issue: [https://github.com/microsoft/vstest/issues/1603](https://github.com/microsoft/vstest/issues/1603) + +Example: `dotnet test "--logger:trx;LogFileName=results.trx"` on a multi-target project (e.g. `netcoreapp2.0;net45` in the .csproj) causes the logger to only log on the last target. + +## Design + +### Option 1: Separate folders for separate targets + +There are 2 ways to specify the LogFileName. +    a. Relative filename: `dotnet test "--logger:trx;LogFileName=results.trx"` +    b. Absolute path: `dotnet test "--logger:trx;LogFileName=d:/results.trx"` + +In case of (a), the trx is generated in the test results directory of the multi target project. + +Solution: Generate different target trx files in separate folders inside the test results directory. +    UnitTestProject/TestResults/net45/results.trx +    UnitTestProject/TestResults/netcoreapp2.0/results.trx + +For case (b), the trx file will still be overwritten with a warning. + +### Option 2: Specify LogFilePrefix Parameter with timestamp appended + +Introduce a LogFilePrefix parameter in trx logger. Example : `dotnet test "--logger:trx;LogFilePrefix=results"` +With this, if we want all trx files in a multi target project, instead of specifying a logFileName, we provide a LogFilePrefix. +The trx file name prefix is appended with time stamp to generate multi target trx files. + +For example : `dotnet test "--logger:trx;LogFilePrefix=results"` will generate +    UnitTestProject/TestResults/results_2018-12-24_14-01-07-176.trx +    UnitTestProject/TestResults/results_2018-12-24_14-01-08-111.trx + +The behavior of `dotnet test "--logger:trx;LogFileName=results.trx"` will remain same with overwriting being done, and warning to switch to LogFilePrefix. + +### Option 3: Specify LogFilePrefix Parameter with target framework appended + +Introduce a LogFilePrefix parameter in trx logger. Example : `dotnet test "--logger:trx;LogFilePrefix=results"` +With this, if we want all trx files in a multi target project, instead of specifying a logFileName, we provide a LogFilePrefix. +The trx file name prefix is appended with target framework to generate multi target trx files. + +For example : `dotnet test "--logger:trx;LogFilePrefix=results"` will generate +    UnitTestProject/TestResults/results_net451.trx +    UnitTestProject/TestResults/results_netcoreapp20.trx + +The behavior of `dotnet test "--logger:trx;LogFileName=results.trx"` will remain same with overwriting being done, and warning to switch to LogFilePrefix. + +When ResultsDirectory is specified, and the solution contains multiple projects with same target, +For example, `dotnet test "--logger:trx;LogFilePrefix=results"` +ResultsDirectory: C:\temp, and the solution contains +     P1 (target net451) +     P2 (target net451) + +This case will overrride different project results as trx filename will be `C:\temp\results_net451.trx` in both cases. + +### Option 4: Specify LogFilePrefix Parameter with target framework and timestamp appended + +Introduce a LogFilePrefix parameter in trx logger. Example : `dotnet test "--logger:trx;LogFilePrefix=results"` +With this, if we want all trx files in a multi target project, instead of specifying a logFileName, we provide a LogFilePrefix. +The trx file name prefix is appended with target framework to generate multi target trx files. + +For example : `dotnet test "--logger:trx;LogFilePrefix=results"` will generate +    UnitTestProject/TestResults/results_net451_2018_12-24_14-01-07-176.trx +    UnitTestProject/TestResults/results_netcoreapp20_2018-12-24_14-01-08-111.trx + +When ResultsDirectory is specified, and the solution contains multiple projects with same target, +For example, `dotnet test "--logger:trx;LogFilePrefix=results"` +ResultsDirectory: C:\temp, and the solution contains +     P1 (target net451) +     P2 (target net451) + +This case will not override results as along with framework, we will append the timestamp. +     C:\temp\results_net451_2018_12-24_14-01-07-176.trx +     C:\temp\results_net451_2018-12-24_14-01-08-111.trx + +## Approach Taken + +Option 4 : This generates unique test results for different frameworks and different projects. +Introduced a LogFilePrefix parameter in trx logger. +Example : `dotnet test "--logger:trx;LogFilePrefix=results"`. + +For example : `dotnet test "--logger:trx;LogFilePrefix=results"` will generate +    UnitTestProject/TestResults/results_net451_2018_12-24_14-01-07-176.trx +    UnitTestProject/TestResults/results_netcoreapp20_2018-12-24_14-01-08-111.trx diff --git a/docs/RFCs/0029-Passing-TestRunParameters-via-CLI.md b/docs/RFCs/0029-Passing-TestRunParameters-via-CLI.md new file mode 100644 index 0000000000..c175d84c74 --- /dev/null +++ b/docs/RFCs/0029-Passing-TestRunParameters-via-CLI.md @@ -0,0 +1,47 @@ +# Passing test run parameters via cli + +## Summary +Test run parameters given via cli are passed to runsettings. + +## Motivation +Every time editing or creating one test run parameter in run settings at a time is a tedious task. So passing test run parameters via cli +removes burden of editing run settings every time. + +## Syntax + +`vstest.console.exe abc.dll -- TestRunParameters.Parameter(name=\"YourParameterName\",value=\"YourParameterValue\")` + +### Argument description +` -- TestRunParameters.Parameter(name=\"YourParamterName\",value=\"YourParameterValue\")`
+ +The above argument reflects the following change in runsettings. + +```xml + + + + + + + +``` + +
    +
  • TestRunParameters as Node
  • +
  • Parameter as child element of TestRunParamter node
  • +
  • YourParamterName as Attribute name
  • +
  • YourParameterValue as Attribute value
  • +
+ +## Design +The arguments are parsed and `attribute name` and `attribute value` are fetched from the `TestRunParameter` argument. Then, an xml element is overrode if exists with `attribute name` or created with `'Parameter'` as it's name and with attributes that are obtained by the above step. Finally, we get `TestRunParameter` node if exists or created and append the newly created xml element to list of child nodes. + +## Allowed Characters +| Attributes | Vaild Characters | +| -------------- | -------------------- | +| name |
  • Alphabets
  • Digits
  • _
  • | +| value |
    • Alphabets
    • Digits
    • Special Charcters
    | + +### Note +Some special characters like &,<,> are converted to their escaped form and stored in runsettings.
    +For more info on escaped strings refer [this](https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/rwlp_xml_escape.html). diff --git a/docs/RFCs/0030-Specify-Environment-Variables-In-Runsettings.md b/docs/RFCs/0030-Specify-Environment-Variables-In-Runsettings.md new file mode 100644 index 0000000000..d47604da83 --- /dev/null +++ b/docs/RFCs/0030-Specify-Environment-Variables-In-Runsettings.md @@ -0,0 +1,32 @@ +# 0030 Specifying Environment Variables In RunSettings File + +## Summary +Specifying environment variables in the runsettings file. The environment variables can be set which can directly interact with the test host. + +## Motivation +Specifying environment variables in the runsettings file is necessary to support non-trivial projects that require settings env vars like DOTNET_ROOT. These variables are set while spawning the test host process, thus will be available in the host. + +## Usage +The runsettings contains a "EnvironmentVariables" node in the RunConfiguration section. +The different environment variables can be specified as element name and it's value. +Below is a sample runsettings for passing environment variables. + +```csharp + + + + + + + + C:\ProgramFiles\dotnet + C:\Codebase\Sdk + + + + + +``` +Since these environment variables should always be set when the test host is started, the tests should always run in a separate process. +For this, the `/InIsolation` flag will be set when there are environment variables so that the test host is always invoked. + diff --git a/docs/RFCs/0031-Test-Run-Attachments-Processing.md b/docs/RFCs/0031-Test-Run-Attachments-Processing.md new file mode 100644 index 0000000000..e8ea9637c3 --- /dev/null +++ b/docs/RFCs/0031-Test-Run-Attachments-Processing.md @@ -0,0 +1,265 @@ +# 0031 Test Run Attachments Processing + +# Summary +This document details a data collector extensibility point to reprocess (combine/merge) attachments obtained across test executions in both design mode and commandline scenarios. + +# Motivation +Today when Test Platform executes tests in parallel only code coverage reports are merged (data collector attachments with uri: `datacollector://microsoft/CodeCoverage/2.0`). For other data collector attachments reprocessing is skipped and all of them are returned by Test Platform. + +The [dotnet test](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test) command is used to execute unit tests in a given solution. The `dotnet test` command builds the solution and runs a test host application for each test project in the solution. However, currently there is no way to reprocess(combine/merge) data collector attachments associated with each project execution. Code coverage reports are not merged. + +When `Run All Tests` is performed in VS, tests for projects can be executed separately based on target platform/target framework amongst other criteria. In this case also combining/merging of data collector attachments is not performed (e.g. code overage reports are not merged). `Analyze Code Coverage for All Tests` is showing coverage report for only some test projects in the run. + +# Proposed Changes + +Introduce a new `IDataCollectorAttachmentProcessor` interface which can be implemented by Test Platform extensions and provide custom logic to reprocess(combine/merge) data collector attachments. Test Platform will invoke `ProcessAttachmentSetsAsync` only if at least 1 data collector attachment related to processor (through `GetExtensionUris`) is created by test execution. + +```cs +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection +{ + /// + /// Interface for data collectors add-ins that choose to reprocess generated attachments + /// + public interface IDataCollectorAttachmentProcessor + { + /// + /// Gets the attachments Uris, which are handled by attachment processor + /// + IEnumerable GetExtensionUris(); + + /// + /// Indicates whether attachment processor is supporting incremental processing of attachments + /// + bool SupportsIncrementalProcessing { get; } + + /// + /// Reprocess attachments generated by independent test executions + /// + /// Configuration of the attachment processor. Will be the same as the data collector that registers it. + /// Attachments to be processed + /// Progress reporter. Accepts integers from 0 to 100 + /// Message logger + /// Cancellation token + /// Attachments after reprocessing + Task> ProcessAttachmentSetsAsync(XmlElement configurationElement, ICollection attachments, IProgress progressReporter, IMessageLogger logger, CancellationToken cancellationToken); + } +} +``` + +Method `GetExtensionUris` should provide all Uris for data collector attachments which are handled by current attachment processor. Test platform will provide to attachment processor only data collector attachments with such Uris. Result of method `ProcessAttachmentSetsAsync` should contain only data collector attachments with such Uris. + +`SupportsIncrementalProcessing` should indicate if attachment processor is supporting incremental processing of attachments. It means that `ProcessAttachmentSetsAsync` should be [associative](https://en.wikipedia.org/wiki/Associative_property). + +If `SupportsIncrementalProcessing` is `True` Test Platform may try to speed up whole process by reprocessing data collector attachments as soon as possible when any two test executions are done. For example let's assume we have 5 test executions which are generating 5 data collector attachments: `a1`, `a2`, `a3`, `a4` and `a5`. Test platform could perform invocations: +* `var result1 = await ProcessAttachmentSetsAsync([a1, a2, a3], ...);` when first 3 executions are done +* `var result2 = await ProcessAttachmentSetsAsync(result1.Concat([a4]), ...);` when 4th execution is done +* `var finalResult = await ProcessAttachmentSetsAsync(result2.Concat([a5]), ...);` when last test execution is done + +If `SupportsIncrementalProcessing` is `False` then Test Platform will wait for all test executions to finish and call `ProcessAttachmentSetsAsync` only once: +* `var finalResult = await ProcessAttachmentSetsAsync([a1, a2, a3, a4, a5], ...);` + +**Current implementation doesn't support non incremental processing so `SupportsIncrementalProcessing` should be `True`.** + + + +2. Introduce a new `ProcessTestRunAttachmentsAsync` method in [IVsTestConsoleWrapper](./src/Microsoft.TestPlatform.VsTestConsole.TranslationLayer/Interfaces/IVsTestConsoleWrapper.cs) interface: + +```cs +/// +/// Gets back all attachments to test platform for additional processing (for example merging). +/// +/// +/// Collection of attachments. +/// Collection of invoked data collectors. +/// XML processing settings. +/// +/// Indicates that all test executions are done and all data is provided. +/// +/// Enables metrics collection (used for telemetry). +/// Event handler to receive session complete event. +/// Cancellation token. +Task ProcessTestRunAttachmentsAsync( + IEnumerable attachments, + IEnumerable invokedDataCollectors, + string processingSettings, + bool isLastBatch, + bool collectMetrics, + ITestRunAttachmentsProcessingEventsHandler eventsHandler, + CancellationToken cancellationToken); +``` + +Method can be used to start a new test run attachments processing, which is reprocessing all data collector attachments passed as first argument using all available attachment processors. When `collectMetrics` is set to `true` Test Platform will provide information about initial number of attachments, final number of attachments, time taken in seconds to process all data collector attachments. + +3. Introduce a new `ITestRunAttachmentsProcessingEventsHandler` interface: +```cs +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Client +{ + /// + /// Interface contract for handling test run attachments processing events + /// + public interface ITestRunAttachmentsProcessingEventsHandler : ITestMessageEventHandler + { + /// + /// Dispatch TestRunAttachmentsProcessingComplete event to listeners. + /// + /// AttachmentsProcessing Complete event args. + /// Last set of processed attachment sets. + void HandleTestRunAttachmentsProcessingComplete(TestRunAttachmentsProcessingCompleteEventArgs attachmentsProcessingCompleteEventArgs, IEnumerable lastChunk); + + /// + /// Dispatch ProcessedAttachmentsChunk event to listeners. + /// + /// Processed attachment sets. + void HandleProcessedAttachmentsChunk(IEnumerable attachments); + + /// + /// Dispatch TestRunAttachmentsProcessingProgress event to listeners. + /// + /// AttachmentsProcessing Progress event args. + void HandleTestRunAttachmentsProcessingProgress(TestRunAttachmentsProcessingProgressEventArgs AttachmentsProcessingProgressEventArgs); + } +} +``` +Interface provides callbacks from test run attachments processing. For every such process `HandleTestRunAttachmentsProcessingComplete` will be called once and will provide last chunk or all data collector attachments. During attachments processing `HandleProcessedAttachmentsChunk` can be invoked several times providing data collector attachments that are already processed. Method `HandleTestRunAttachmentsProcessingProgress` will be invoked every time when `progressReporter` is used by attachment processor and will provide information about current attachment processor: progress, uris and index of it. Additionally event will contain also number of attachment processors. + + +4. Use above logic to reprocess data collector attachments for parallel test executions and VS scenarios (e.g. `Run All Tests`, `Analyze Code Coverage for All Tests`). In case of `Analyze Code Coverage for All Tests` VS will use `vstest.console` in a variation of design mode and merge all code coverage reports. VS will show full code coverage report for all test projects. + +5. When [dotnet test](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test) command is used to execute unit tests in a given solution, attachments will also be reprocessed. Details regarding this process will be provided in separate RFC. + +# Additional classes + +1. `TestRunAttachmentsProcessingCompleteEventArgs` used by ITestRunAttachmentsProcessingEventsHandler: + +```cs +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Client +{ + [DataContract] + public class TestRunAttachmentsProcessingCompleteEventArgs : EventArgs + { + /// + /// Default constructor. + /// + /// Specifies whether the attachments processing is canceled. + /// Specifies the error encountered during the execution of the attachments processing. + public TestRunAttachmentsProcessingCompleteEventArgs(bool isCanceled, Exception error) + { + this.IsCanceled = isCanceled; + this.Error = error; + } + + /// + /// Gets a value indicating whether the attachments processing is canceled or not. + /// + [DataMember] + public bool IsCanceled { get; private set; } + + /// + /// Gets the error encountered during the attachments processing of the test runs. Null if there is no error. + /// + [DataMember] + public Exception Error { get; private set; } + + /// + /// Get or Sets the Metrics (used for telemetry) + /// + [DataMember] + public IDictionary Metrics { get; set; } + } +} +``` + +2. `TestRunAttachmentsProcessingProgressEventArgs` used by ITestRunAttachmentsProcessingEventsHandler: + +```cs +namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Client +{ + [DataContract] + public class TestRunAttachmentsProcessingProgressEventArgs : EventArgs + { + /// + /// Default constructor. + /// + /// Specifies current attachment processor index. + /// Specifies current processor Uris. + /// Specifies current processor progress. + /// Specifies the overall number of processors. + public TestRunAttachmentsProcessingProgressEventArgs(long currentAttachmentProcessorIndex, ICollection currentAttachmentProcessorUris, long currentAttachmentProcessorProgress, long attachmentProcessorsCount) + { + CurrentAttachmentProcessorIndex = currentAttachmentProcessorIndex; + CurrentAttachmentProcessorUris = currentAttachmentProcessorUris; + CurrentAttachmentProcessorProgress = currentAttachmentProcessorProgress; + AttachmentProcessorsCount = attachmentProcessorsCount; + } + + /// + /// Gets a current attachment processor index. + /// + [DataMember] + public long CurrentAttachmentProcessorIndex { get; private set; } + + /// + /// Gets a current attachment processor URI. + /// + [DataMember] + public ICollection CurrentAttachmentProcessorUris { get; private set; } + + /// + /// Gets a current attachment processor progress. + /// + [DataMember] + public long CurrentAttachmentProcessorProgress { get; private set; } + + /// + /// Gets the overall number of attachment processors. + /// + [DataMember] + public long AttachmentProcessorsCount { get; private set; } + } +} +``` + +# How to register an `IDataCollectorAttachmentProcessor` +Test platform needs to know where to find the attachment processor for a specific data collector. +For this purpose a new attribute is provided: +```cs +/// +/// Registers an attachment processor for a data collector. +/// +public class DataCollectorAttachmentProcessorAttribute : Attribute +{ + /// + /// Initializes a new instance of the class. + /// + /// + /// The type of the attachement data processor. + /// + public DataCollectorAttachmentProcessorAttribute(Type type) + { + Type = type; + } + + /// + /// Gets the data collector type uri. + /// + public Type Type { get; private set; } +} +``` +The usage of this attribute is the same as the default attribute used to register a data collector to the platform: +```cs +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +... +[DataCollectorTypeUri("datacollector://Microsoft/MyDataCollector/1.0")] +[DataCollectorFriendlyName("MyDataCollector")] +[DataCollectorAttachmentProcessor(typeof(MyDataCollectorArtifactPostProcessor))] +public class MyDataCollector : DataCollector +{ + ... +} +public class MyDataCollectorArtifactPostProcessor : IDataCollectorAttachmentProcessor +{ + ... +} +``` +At runtime if the `Type` registered as attachment processor doesn't implement the `IDataCollectorAttachmentProcessor` will be silently ignored(check the logs to verify the reason). diff --git a/docs/RFCs/0032- Extensions versioning attribute.md b/docs/RFCs/0032- Extensions versioning attribute.md new file mode 100644 index 0000000000..7d4b15d867 --- /dev/null +++ b/docs/RFCs/0032- Extensions versioning attribute.md @@ -0,0 +1,101 @@ +# 0032 Extensions versioning attribute + +# Summary +This document explain how to use the `TestExtensionTypesAttribute` and `TestExtensionTypesV2Attribute` to handle the versioning for every platform extension. + +# Motivation +The test platform offers many extensions points like custom test adapters, test execution providers, data collectors, etc... +The main problem with the extensions is that the platform is in continuous evolution. Therefore, we need to keep the back-compatibility; we want to load new extensions in the old test platform implementation and vice versa. + +The logic used to load the extensions if inside the [TestPluginDiscoverer.cs](./src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginDiscoverer.cs) file. + +# How to use `TestExtensionTypesAttribute` and `TestExtensionTypesV2Attribute` + +By design, the `TestPluginDiscoverer` receives a list of all files to search for some specific extensions(for instance, search for a class that implements a particular interface). However, the list of files is out of the scope of this document and depends on the running context(VS, SDK, stand-alone, etc...) and some user-defined settings. + +The discovery algorithm is: +1) `TestPluginDiscoverer` loads the assemblies using the `Assembly.Load(new AssemblyName(assemblyName));` where the `assemblyName` is the file name without extension `Path.GetFileNameWithoutExtension(file);`. + +2) As the next step, the `TestPluginDiscoverer` loads every `Type` inside the assembly and tries to find out if it's compatible with the extension requested using the `Type.IsAssignableFrom(Type)` api. + +3) The final step of `TestPluginDiscoverer` is to check if the extension is already loaded. It checks if the plugin `IdentifierData` is already present in the already loaded extension list. + +Due to the design explained above, the `TestPluginDiscoverer` suffers from some defects: + +1) The order of files **matters**; use the file name and load with `Assembly.Load(new AssemblyName(assemblyName));` means that if we have more than one file with the exact implementation but different versions, only the first one will be loaded; all other loads will be silently skipped because, for the runtime, the "same" `Assembly` is already loaded. + +2) The order of types inside the assembly **matters** because we're using the `assembly.GetTypes().Where(type => type.GetTypeInfo().IsClass && !type.GetTypeInfo().IsAbstract)` api. So if we have 2 types that are implementing the same extension only the first one will be loaded. + +3) If we have a lot of types inside the loaded assembly, the perf is not so great because we're checking all types. + +4) If we ship new public types used by the extensions, we'll fail to load these in the old shipped test platform because that type doesn't exist, and the runtime will raise a `TypeLoadException.` + +An attempt was made to fix the 2nd and 3rd defects above, introducing an attribute that allows the user to "register" every extension shipped inside the assembly. +***To avoid compatibility issues, we don't ship the attribute type as a public type, but we search for a "specific" attribute type implementation signature/shape.*** + +The attribute signature/shape is: +```cs +[AttributeUsage(AttributeTargets.Assembly, Inherited = false, AllowMultiple = false)] +internal sealed class TestExtensionTypesAttribute : Attribute +{ + public TestExtensionTypesAttribute(params Type[] types) + { + this.Types = types; + } + + public Type[] Types { get; } +} +``` +Suppose to have an extension called `MyExtension` and you want to avoid the two issues above you can register your type in this way: +```cs +[assembly: TestExtensionTypes(typeof(MyExtension))] +``` + +Anyway, this first attempt doesn't solve the 1st and 4th issues. +To fix the ***versioning*** issue, we decided to ship another attribute that can be used with the first one compatible with old test platform versions. +The new attribute address some more issue: +1) **versioning**: we can specify the extension version. At runtime, the `TestPluginDiscoverer` will load the extensions using the version number(a simple int), **from the higher to the lower in desc order.** +2) **avoid the `TypeLoadException`**: `TestPluginDiscoverer` will try to load every registered extension using the `MetadataReader` type, once it find an extension it tries to load the type using `Assembly.GetType(string)` api. In case of an issue with the loading, it will skip the extension. +The attribute signature/shape is: +```cs +[AttributeUsage(AttributeTargets.Assembly, Inherited = false, AllowMultiple = true)] +internal sealed class TestExtensionTypesV2Attribute : Attribute +{ + public string ExtensionType { get; } + public string ExtensionIdentifier { get; } + public Type ExtensionImplementation { get; } + public int Version { get; } + + public TestExtensionTypesV2Attribute(string extensionType, string extensionIdentifier, Type extensionImplementation, int version) + { + ExtensionType = extensionType; + ExtensionIdentifier = extensionIdentifier; + ExtensionImplementation = extensionImplementation; + Version = version; + } +} +``` +Suppose to have a data collector extension called `MyDataCollectorV1` using some shipped extension. +After some time, you want to ship a newer version that will use a new type shipped only in the newer test platform object model. So you cannot use the current version of your extension because it won't work in the old test platform(it will silently fail with a `TypeLoadException`). +In this case, you can register your time specifying the new version of your extension: +```cs +[assembly: TestExtensionTypes(typeof(MyDataCollectorV1))] +[assembly: TestExtensionTypesV2("MyDataCollector", "datacollector://Microsoft/MyLocalTest/1.0", typeof(MyDataCollectorV1), 1)] +[assembly: TestExtensionTypesV2("MyDataCollector", "datacollector://Microsoft/MyLocalTest/1.0", typeof(MyDataCollectorV2), 2)] +``` +With the configuration above, the `TestPluginDiscoverer` will try to load using this order: +1) Search for every attribute with the expected shape of `TestExtensionTypesV2`. `TestExtensionTypesV2` will use **the binary of the extension file** and won't use the `Assembly.Load(new AssemblyName(assemblyName));` api. It means that we can search for same extension in different files. +2) Put them in order by `Version` (first `MyDataCollectorV2`, second `MyDataCollectorV1`) +3) Try to create the type(first `MyDataCollectorV2`, second `MyDataCollectorV1`) and put these in the candidate extension types list. +4) Search for every attribute with the expected shape of `TestExtensionTypes` using the default order `assembly.GetCustomAttributes` and put these in the candidate extension types list. + +If we suppose to be able to load all types at the end of the discovery, we'll have a candidate extension types list like: + +`MyDataCollectorV2` +`MyDataCollectorV1` +`MyDataCollectorV1` + +Now the `TestPluginDiscoverer` will go on with the usual `Type.IsAssignableFrom(Type)` check. It will load `MyDataCollectorV2`, skipping all the other extensions because we already loaded the plugin with the same `IdentifierData.` + +If we try to load the same extension in an old test platform, we will be able to load only using the `TestExtensionTypes` the `MyDataCollectorV1` version. + diff --git a/docs/RFCs/0033-Hierarchy-TestCase-Property.md b/docs/RFCs/0033-Hierarchy-TestCase-Property.md new file mode 100644 index 0000000000..6921a361ca --- /dev/null +++ b/docs/RFCs/0033-Hierarchy-TestCase-Property.md @@ -0,0 +1,33 @@ +# 0033 Hierarchy TestCase Property + +## Summary +This document standardizes an additional `Hierarchy` property on TestCase to support more flexible visual display of tests in the Visual Studio Test Explorer. + +## Overview +The `ManagedType` and `ManagedMethod` properties [have been defined](0017-Managed-TestCase-Properties.md) as a way of deterministically identifying the type and method to which a test case belongs (in managed code). However, the legacy `FullyQualifiedName` property is still required to deduce a `Namespace`, `Classname` and `TestGroup` for display in the Test Explorer hierarchy. When the Test Explorer added a hierarchy for easier grouping and navigation of tests, there was no specified way for a TestCase to provide those values so they were heuristically derived from `FullyQualifiedName`. + +This document specifies a way for the TestCase to provide these display values directly to the test explorer, granting flexibility and control back to the test adapter. + +## Helper Library + +[Microsoft.TestPlatform.AdapterUtilities](https://www.nuget.org/packages/Microsoft.TestPlatform.AdapterUtilities) is a helper library created to make it easy to create values for `ManagedType` and `ManagedMethod` that meet this spec. Use `ManagedNameHelper.GetManagedName()` to create a `ManagedType`/`ManagedMethod` pair from a reflected type. Also `ManagedNameParser.ParseManagedTypeName` and `ManagedNameParser.ParseManagedMethodName` can parse and validate an existing `ManagedType` or `ManagedMethod` + +## Specification + +TestCases for managed code may include a string array (string[]) valued property named `Hierarchy`. The specification below outlines the requirements for the contents of the property. + +### `Hierarchy` Property + +The `Hierarchy` test case property represents the text strings used to display the test in the Visual Studio Test Explorer window. + +* The property must be an array of strings with 4 elements. If the property is null, missing or doesn't have 4 elements then it is is ignored as invalid. +* The element values are arranged as `[Container, Namespace, Class, TestGroup]`, Each TestCase is coalesced into a tree using the following order from the root. `Container`, `Namespace`, `Class`, `TestGroup`, `DisplayName`. +* `Container` usually represents the project name or the assembly name. For C# tests, if this property is set as a `null` or empty string ("") then the project name will be used by VS. +* `Namespace` represents the namespace containing the test suite (or a suitable semantic equivalent). If there aren't any equivalent, or the class doesn't belong to a namespace this can be `null` or empty string (""). +* `Class` normally represents the display name of the test suite. For example, in C# this is typically the name of class containing the tests. +* `TestGroup` typically represents the method that implements a particular test or set of tests (if data-driven). If a test is not data-driven, then the TestGroup could be the same as the `DisplayName`. By data-driven, we mean tests that are run repeatedly with different sets of data (i.e. Theory tests in XUnit/NUnit). A test case should be generated for each test/data combination, where the `TestGroup` is set to the name of the test method (or similar) and the `DisplayName` includes a representation of the data used to execute the test in order to distinguish them in the test explorer UI. + * `TestGroup` can be `null`, or empty string (""). + * If `TestGroup` is the same for all tests under a particular `Class` or empty, then the `TestGroup` level is omitted from the hierarchy. +* `DisplayName` is the name of a particular single test case. For data-driven tests, the `DisplayName` should include a representation of the parameters in order to distinguish the unique test case to the end user. If the test case is not data-driven, then there is no need to include the parameters as the method name would likely be sufficient. + * If the display name for a test is not unique under a given hierarchy, tests will not be executed or discovered correctly, and depending on the test framework test discovery could fail. For the purposes of uniqueness `Namespace` and `TestGroup` elements with `null` and empty string ("") values are considered equal. +* In some cases `ClassName`, `TestGroup` and `Method` could represent generic methods or types (for instance, tests written in C# or C++). In that case, if possible, the text should reflect the "closed" or instantiated typename. For example when displaying the generic type `List<>`, the closed form (e.g. `List, List`) should be used. The generic type `List<>` is referenced in metadata as ``List`1`` and in the code as `List`; both of these are "open" forms of the type because they do not specify the type of `T` and could cause confusion. diff --git a/docs/RFCs/Images/TestPlatform.vsdx b/docs/RFCs/Images/TestPlatform.vsdx new file mode 100644 index 0000000000..5a9cc65b1f Binary files /dev/null and b/docs/RFCs/Images/TestPlatform.vsdx differ diff --git a/docs/RFCs/Images/datacollection-custom.png b/docs/RFCs/Images/datacollection-custom.png new file mode 100644 index 0000000000..2c423b2708 Binary files /dev/null and b/docs/RFCs/Images/datacollection-custom.png differ diff --git a/docs/RFCs/Images/datacollection-custom.vsdx b/docs/RFCs/Images/datacollection-custom.vsdx new file mode 100644 index 0000000000..78e4c9ad72 Binary files /dev/null and b/docs/RFCs/Images/datacollection-custom.vsdx differ diff --git a/docs/RFCs/Images/datacollection.png b/docs/RFCs/Images/datacollection.png new file mode 100644 index 0000000000..7fa1cfb1ac Binary files /dev/null and b/docs/RFCs/Images/datacollection.png differ diff --git a/docs/RFCs/Images/datacollection.vsdx b/docs/RFCs/Images/datacollection.vsdx new file mode 100644 index 0000000000..f85a8ab7d6 Binary files /dev/null and b/docs/RFCs/Images/datacollection.vsdx differ diff --git a/docs/RFCs/Images/dotnet-test-protocol-v2-discovery.png b/docs/RFCs/Images/dotnet-test-protocol-v2-discovery.png new file mode 100644 index 0000000000..33ce7ca04b Binary files /dev/null and b/docs/RFCs/Images/dotnet-test-protocol-v2-discovery.png differ diff --git a/docs/RFCs/Images/dotnet-test-protocol-v2-execution-customhost.png b/docs/RFCs/Images/dotnet-test-protocol-v2-execution-customhost.png new file mode 100644 index 0000000000..863e0f58e0 Binary files /dev/null and b/docs/RFCs/Images/dotnet-test-protocol-v2-execution-customhost.png differ diff --git a/docs/RFCs/Images/dotnet-test-protocol-v2-execution.png b/docs/RFCs/Images/dotnet-test-protocol-v2-execution.png new file mode 100644 index 0000000000..f9330663af Binary files /dev/null and b/docs/RFCs/Images/dotnet-test-protocol-v2-execution.png differ diff --git a/docs/RFCs/Images/vstest.console-discovery.png b/docs/RFCs/Images/vstest.console-discovery.png new file mode 100644 index 0000000000..c18eb20098 Binary files /dev/null and b/docs/RFCs/Images/vstest.console-discovery.png differ diff --git a/docs/RFCs/Images/vstest.console-execution.png b/docs/RFCs/Images/vstest.console-execution.png new file mode 100644 index 0000000000..30d4c1f1f0 Binary files /dev/null and b/docs/RFCs/Images/vstest.console-execution.png differ diff --git a/docs/RFCs/Images/vstest.console-overall-architecture.png b/docs/RFCs/Images/vstest.console-overall-architecture.png new file mode 100644 index 0000000000..4829312613 Binary files /dev/null and b/docs/RFCs/Images/vstest.console-overall-architecture.png differ diff --git a/docs/RFCs/Images/vstest.telemetry.png b/docs/RFCs/Images/vstest.telemetry.png new file mode 100644 index 0000000000..c46cce03e9 Binary files /dev/null and b/docs/RFCs/Images/vstest.telemetry.png differ diff --git a/docs/RFCs/toc.yml b/docs/RFCs/toc.yml new file mode 100644 index 0000000000..a0aed78f5b --- /dev/null +++ b/docs/RFCs/toc.yml @@ -0,0 +1,17 @@ +- name: 0001 - Test Platform Architecture + href: 0001-Test-Platform-Architecture.md +- name: 0002 - Test discovery protocol + href: 0002-Test-Discovery-Protocol.md +- name: 0003 - Test execution protocol + href: 0003-Test-Execution-Protocol.md +- name: 0004 - Adapter extensibility + href: 0004-Adapter-Extensibility.md +- name: 0005 - Test platform SDK + href: 0005-Test-Platform-SDK.md +- name: 0006 - Datacollection protocol + href: 0006-DataCollection-Protocol.md +- name: 0010 - Source Information For Discovered Tests + href: 0010-Source-Information-For-Discovered-Tests.md +- name: 0014-Guidelines for TestCase FullyQualifiedName + href: 0017-TestCase-FullyQualifiedName.md + diff --git a/docs/RunSettingsArguments.md b/docs/RunSettingsArguments.md new file mode 100644 index 0000000000..2ee4c09e73 --- /dev/null +++ b/docs/RunSettingsArguments.md @@ -0,0 +1,65 @@ +# Passing runsettings arguments through commandline + +You are here because you are looking for syntax and details to pass runsettings configurations to either `vstest.console.exe` or `dotnet test` through commandline. + +`RunSettings arguments` are used to add/update specific `runsettings configurations`. The updated `runsettings configurations` will be available to `TestPlatform` and `test extensions` (E.g. test adapter, etc.) through runsettings. + +## Syntax + +* `RunSettings arguments` are specified as name-value pair of the form `[name]=[value]` after `--`. Note the space after --. +* Use a space to separate multiple `[name]=[value]`. +* All the arguments after `--` will be treated as `RunSettings arguments`, means `RunSettings arguments` should be at the end of the command line. + +## Example + +Passing argument `-- MSTest.MapInconclusiveToFailed=True` in (1) below is equivalent to passing argument +`--settings additionalargs.runsettings` in (2) below. + +```shell +1) dotnet test -- MSTest.MapInconclusiveToFailed=True MSTest.DeploymentEnabled=False +``` + +```shell +2) dotnet test --settings additionalargs.runsettings +``` + +where `additionalargs.runsettings` is: + +```xml + + + + + True + False + + +``` + +The syntax in (1) is another way of passing runsettings configuration and you need not author a runsetting file while using `Runsettings arguments`. More details about runsettings can be found [here](https://msdn.microsoft.com/library/jj635153.aspx). + +`Runsettings arguments` takes precedence over `runsettings`. + +For example, in below command the final value for `MapInconclusiveToFailed` will be `False` and value for `DeploymentEnabled` will be unchanged, that is `False`. + +```shell +dotnet test --settings additionalargs.runsettings -- MSTest.MapInconclusiveToFailed=False +``` + +Starting from .NET SDK 5.0 you can also set `TestRunParameters` using command line option: + +```cmd +# cmd +dotnet test -- TestRunParameters.Parameter(name=\"myParam\", value=\"value\") + +# powershell (prior 7.3, or with $PSNativeCommandArgumentPassing = "legacy") +dotnet test --% -- TestRunParameters.Parameter(name=\"myParam\", value=\"value\") + +# powershell (7.3+) +dotnet test --% -- TestRunParameters.Parameter(name="myParam", value="value") + +# bash +dotnet test -- TestRunParameters.Parameter\(name=\"myParam\",\ value=\"value\"\) +``` + +In this example, `\"myParam\"` corresponds to the name of you parameter and `\"value\"` - the value of your parameter. Note, that `\` are escaping characters and they should stay as shown above, unless you are in PowerShell 7.3+. For more examples in PowerShell, such as using variables for the data, please [refer here](https://github.com/microsoft/vstest/issues/4637). diff --git a/docs/TODO.md b/docs/TODO.md new file mode 100644 index 0000000000..d172c42e8a --- /dev/null +++ b/docs/TODO.md @@ -0,0 +1,20 @@ +Structures: + + // Test adapter and array of sources map: + // { + // C:\temp\testAdapter1.dll : [ source1.dll, source2.dll ], + // C:\temp\testadapter2.dll : [ source3.dll, source2.dll ] + // } + public Dictionary> AdapterSourceMap + + + TimeSpan + + string? RunSettings + + + string? TestCaseFilter + + TestSessionInfo? TestSessionInfo + + TestPlatformOptions \ No newline at end of file diff --git a/docs/analyze.md b/docs/analyze.md new file mode 100644 index 0000000000..0536da424f --- /dev/null +++ b/docs/analyze.md @@ -0,0 +1,266 @@ +# Monitor and analyze test run + +This document will walk you through enabling data collection for a test run covering: + +1. A brief overview of DataCollectors. +1. Configuring DataCollectors in TPv2. +1. Key differences for using DataCollectors in TPv2 v/s TPv1. +1. Instructions for using [code coverage][coverage]. + +> **Version note:** +> +> DataCollection support is added in test platform `15.3.0` onwards. It is part of +> VS 2017 15.3 and dotnet-cli 2.0.0 builds. + +[coverage]: #coverage + +## DataCollector + +A DataCollector is a test platform extension to monitor test run. It can be extended to perform tasks on specific test execution events. Currently, four events are exposed to DataCollector: + +1. Session Start event. +2. Test Case Start event +3. Test Case End event. +4. Session End event. + +You can author a DataCollector to collect code coverage data for a test run, to collect logs when a test case or test run fails, etc. These additional files are called Attachments and they can be attached to test result report(trx). + +Please refer [here](./extensions/datacollector.md) for instructions on creating a DataCollector and [here](./RFCs/0006-DataCollection-Protocol.md) +if you're interested in the architecture of data collection. + +## Configure DataCollectors + +DataCollectors can be configured for monitoring test execution through runSettings, testSettings or vstest.console args. + +### Using RunSettings + +Below is the sample runsettings for a custom DataCollector + +```xml + + + + + PathToAdapters;PathToDataCollectors + + + + + + + + DataCollectorLogs.txt + + + + + +``` + +Below is the sample command for enabling DataCollectors using runsettings + +```shell +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /settings:datacollection.runsettings +``` + +### Using vstest.console args + +DataCollectors can be configured and used through first class command line arguments `/collect` and `/testadapterpath`. Hence, for common DataCollection scenarios, separate runsettings file may not be required. + +Below is the sample command to configure and use DataCollectors through vstest.console command line. + +```shell +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /collect:"Code Coverage" +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /collect:"MyDataCollector" /testadapterpath: +``` + +Please note that `testadapterpath` is not required for DataCollectors shipped along with TPv2. + +### Using TestSettings + +While the recommended way is to use [runsettings](#Using-RunSettings) or [vstest.console args](#Using-vstest.console-args), there are few DataCollectors which only worked with testsettings. +E.g.: `System Information` DataCollector. Below is the sample testsettings for using `System Information` DataCollector. + +```xml + + + These are default test settings for a local test run. + + + + + + + + + + + +``` + +Below is the sample command for enabling DataCollectors using testsettings + +```shell +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /settings:datacollection.testsettings +``` + +### Enable/Disable a DataCollector + +All DataCollectors configured in the .runsettings files are loaded automatically and are enabled to participate for run, unless explicitly disabled using boolean valued attribute named `enabled`. + +For example, only `MyDataCollector1` DataCollector will be enabled for a test run with +below runsettings: + +```xml + + + + + PathToAdapters;PathToDataCollectors + + + + + + + + + + + + + +``` + +A specific DataCollector can be explicitely enabled using the `/collect:` command line switch. + +For example, below command line will enable a DataCollector named `MyDataCollector1` +(and disable other DataCollectors mentioned in .runsettings): + +```shell +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /collect:MyDataCollector1 /settings: +``` + +More than one DataCollectors can also be enabled using `/collect` command line switch + +For example, below command will enable DataCollectors named `MyDataCollector1` and `MyDataCollector2`: + +```shell +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /collect:MyDataCollector1 /collect:MyDataCollector2 /settings: +``` + +## Key differences for using DataCollectors in TPv2 v/s TPv1 + +1. In TPv1, DataCollectors are loaded from `<>\Common7\IDE\PrivateAssemblies\DataCollectors`. +In TPv2, DataCollectors are loaded from `TestAdaptersPaths` specified in runSettings or `/testadapterpath` argument of `vstest.console.exe`. DataCollector assemblies must follow the naming convention *collector.dll. + +2. Previous DataCollector settings will continue to work, but additional `TestAdaptersPaths` must be specified in runsettings if DataCollector is not shipped along with TPv2. `TestAdapterPath` can also be specified through [vstest.console args](#Using-vstest.console-args) from command line. + +3. There are breaking changes in latest DataCollector interface. Hence, older DataCollectors need to be rebuilt against latest APIs to work with TPv2. For details, refer [here(todo)](); + +## Working with Code Coverage + +> **Requirements:** +> Code Coverage requires the machine to have Visual Studio 2017 Enterprise ([15.3.0](https://www.visualstudio.com/vs) or later installed and a Windows operating system. + +### Setup a project + +Here's a sample project file, please note the xml entity marked as `Required`. Previously, the `Microsoft.VisualStudio.CodeCoverage` was required, but is now shipped with the SDK. + +```xml + + + + netcoreapp1.1 + + + Full + + + + + + + + + +``` + + +### Analyze coverage with Visual Studio + +> **Version note:** +> +> Try this feature with [Visual Studio 2017 15.3.0](https://www.visualstudio.com/vs) or later. + +Use the `Analyze Code Coverage` context menu available in `Test Explorer` tool window to start a coverage run. + +After the coverage run is complete, a detailed report will be available in the `Code Coverage Results` tool window. + +Please refer the documentation for additional details: + +### Collect coverage with command line runner + +Use the following command line to collect coverage data for tests: + +```shell +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" --collect:"Code Coverage" --framework:".NETCoreApp,Version=v1.1" d:\testproject\bin\Debug\netcoreapp1.1\testproject.dll +``` + +This will generate a `*.coverage` file in the `\TestResults` directory. + +### Event Log Data Collector + +This document introduces Event Log DataCollector. We will start with a brief overview of Event Log DataCollector, use cases where it will be useful followed by steps to enable it. + +#### Introduction + +Event Log DataCollector is a Windows only DataCollector that is used to get event logs logged into Windows Event Viewer during test execution. Event logs are saved in a file `Event Log.xml` and this file is available as Attachment as part of test result report (trx). +When enabled, Event Log DataCollector generates one `Event Log.xml` file for entire test session. `Event Log.xml` files are also generated corresponding to all test cases as well, to provide a granular view of events logged while executing a test case. + +More info on Event Viewer [here](https://technet.microsoft.com/en-us/library/cc938674.aspx) + +#### Use cases for Event Log DataCollector + +Event Log DataCollector is used to get event logs as Attachment and is particularly useful for remote scenarios where logging into the machine and viewing the Event Viewer is not possible. + +#### Enabling Event Log DataCollector + +There are two ways of enabling Event Log DataCollector for a test run: + +##### 1. Using vstest.console argument + +Use the following command to enable Event Log DataCollector with default configuration: + +> "%vsinstalldir%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" test_project.dll /testadapterpath:<> /collect:"Event Log" + +##### 2. Using runsettings + +Below runsettings can be used to enable Event Log DataCollector. + +```xml + + + + + + + + + + + + + + + + +``` + +The above runsettings will collect event logs from `System` and `Application` event logs which are logged as `Error` or `Warning` and event source is specified as `CustomEventSource`. `MaxEventLogEntriesToCollect` specifies the upper limit on the events that are logged in `Event Log.xml` file corresponding to test cases. There is no upper limit on number of events logged in `Event Log.xml` file for test session. + +In default configuration (through vstest.console.exe args or when section is empty in runsettings), `System`, `Application` and `Security` logs with entry types `Error`, `Warning` or `FailureAudit` and with any event source are collected. Default value of `MaxEventLogEntriesToCollect` is 50000. There is no upper limit on number of events logged in `Event Log.xml` file for test session. + +> **A note on `Security` Event Log** +> +>Please note that `Security` event logs can only be collected if the account under with tests are run has admin privileges. diff --git a/docs/configure.md b/docs/configure.md new file mode 100644 index 0000000000..5af8f0696e --- /dev/null +++ b/docs/configure.md @@ -0,0 +1,504 @@ +# Configure a test run + +This document covers configuration of a test run in the test platform. + +## Overview + +There are three different ways to configure various aspects of a test run. + +1. **Using command line arguments** +Various configuration options can be provided to the `vstest.console` or `dotnet +test` command line. For example, `--framework` can specify the runtime framework +version, or `--platform` can specify the architecture of test run (`x86` or +`x64`). + +1. **Using a runsettings file** +User can specify a `runsettings` file to configure test run. For example: + +* `> vstest.console.exe --settings:test.runsettings test.dll` +* `> dotnet test -s test.runsettings` + +1. **Using command line runsettings parameters** +Various elements of a `runsettings` file can also specified as command line +parameters directly. For example, consider following `runsettings`: + +```xml + + + False + + +``` + +The `DisableAppDomain` settings can be changed in the following way: +`> vstest.console --settings:test.runsettings -- RunConfiguration.DisableAppDomain=true` + +Or, `> dotnet test -s test.runsettings -- RunConfiguration.DisableAppDomain=true` if +you're using dotnet test to execute tests. + +Order of priority (in case of conflicting settings) is as follows: + +1. If a command line switch is available, it takes priority. E.g. `/platform` + wins over `` specified in the `runsettings` file. +1. If a command line runsettings is available, it takes priority over the + content of `runsettings` file. E.g. in case of `dotnet test -s + test.runsettings -- RunConfiguration.TargetPlatform=x86`, platform is set to + `x86` even if `test.runsettings` specifies `x64` as platform. +1. If a `runsettings` file is provided, it is used for the test run. + +## Run settings + +A `*.runsettings` file is used to configure various aspects of a test discovery +and execution with `vstest.console.exe` or the `Test Explorer` in VS. An editor +using the test platform, can specify a `runsettings` as an `xml` in the `Test +Discovery` or `Test Run` requests (details are in Editor API Specification). + +The `runsettings` file is a xml file with following sections: + +1. Run Configuration +1. Data Collection +1. Runtime Parameters +1. Adapter Configuration +1. Legacy Settings + +We will cover these sections in detail later in the document. Let's discuss few +core principles for runsettings. + +### Principles + +1. Any runner (CLI, IDE, Editor) can use run settings to configure the test run +1. These runners need to take care of merging user provided runsettings with + their own configuration parameters. E.g. an IDE may provide `TargetPlatform` + as an UI configuration, at the same time an user can also provide the setting + in a `runsettings` file. It is the IDE's responsibility to disambiguate. +1. Run settings are always created at the start of a test run. They are + immutable for rest of the run. +1. Every test platform extension should get the _effective_ runsettings for a + test run via the test platform APIs. It may use it to read its own settings + or take decisions (e.g. an adapter needs to disable appdomains if + `DisableAppDomain` setting is provided via run settings). + +### Sample + +Given below is a complete `runsettings` file with all available options. Each +option is briefly annotated, details are available in a later section of this +document. + +```xml + + + + + + + x86 + + + Framework40 + + + %SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar + + + .\TestResults + .\TestResults + + + 2 + + + 10000 + + + STA + + + false + false + false + true + + + 10 + + + + + + + + + + + + .*CPPUnitTestFramework.* + + + + + True + True + True + False + + + + + + + + + + + + + 4312 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + +``` + +### Section 1: Run Configuration + +```xml + + + + + +``` + +This is the core part of a `runsettings` file. It must be present in every +runsettings. This section is filled in by the test runner (CLI, IDE or Editor) +with various parameters of the test projects and user provided settings. + +Available elements are: + +1. **Test settings** + +_Example_ + +```xml + + + + x86 + .NET Framework, Version=v4.6 + %SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar + .\TestResults + .\TestResults + 2 + 10000 + STA + + +``` + +_Description_ + +| Settings Element | Type | Function | +|-------------------|--------|-------------------------------------------------------------------------------------------------| +| TargetPlatform | string | Configures the architecture of test host. Possible values: (x86, x64) | +| TargetFrameworkVersion | string | Configures the target runtime for a test run. Possible values: any valid [FrameworkName][] | +| TestAdaptersPaths | string | Semi-colon separated directories which contain test adapters | +| ResultsDirectory | string | Directory for test run reports. E.g. trx, coverage etc. | +| SolutionDirectory | string | Working directory for test invocation. Results directory can be relative to this. Used by IDEs. | +| MaxCpuCount | int | Degree of parallelization, spawns `n` test hosts to run tests. Default: 1. Max: Number of cpu cores. | +| TestSessionTimeout | int | Testplatform will cancel the test run after it exceeded given TestSessionTimeout in milliseconds and will show the results of tests which ran till that point. **Required Version: 15.5+.** | +| ExecutionThreadApartmentState | string | Apartment state of thread which calls adapter's RunTests and Cancel APIs. Possible values: (MTA, STA). default is STA for .NET Full and MTA for .NET Core. STA supported only for .NET Full **Required Version: 15.5+.** [More details.](#execution-thread-apartment-state) | + +Examples of valid `TargetFrameworkVersion`: + +* .NETCoreApp, Version=v1.0 +* .NETCoreApp, Version=v1.1 +* .NETFramework, Version=v4.5 + +[FrameworkName]: https://msdn.microsoft.com/en-us/library/dd414023(v=vs.110).aspx + +2. **Adapter settings** +These settings are a hint to adapters to behave in a particular way. These are +determined by runners based on user configuration. It is also possible for an +user to provide these settings, if they want to tweak a run. + +_Example_ + +```xml + + + + false + false + false + true + + +``` + +_Description_ + +| Settings Element | Type | Function | +|--------------------------|------|------------------------------------------------------------------------------------| +| DesignMode | bool | True if test run is triggered in an IDE/Editor context. | +| DisableParallelization | bool | If true, an adapter should disable any test case parallelization | +| DisableAppDomain | bool | If true, an adapter shouldn't create appdomains to run tests | +| CollectSourceInformation | bool | If false, an adapter need not parse symbols to provide test case file, line number | + +3. **Runner settings** +An IDE/Editor can set these settings to change the behavior of test platform. +They are not actionable for an adapter. + +_Example_ + +```xml + + + + 10 + + +``` + +_Description_ + +| Settings Element | Type | Function | +|------------------|------|-------------------------------------------------------------------------------------------------------------| +| BatchSize | int | Configures the frequency of run statistics. Discovered/Test results are send once `n` tests are accumulated | + +### Section 2: Data Collection + +```xml + + + + + + + + + + + + + + + +``` + +This section lists all [data collectors][] configured for a test run. The test +runner creates this section based on arguments provided in the command line. +E.g. if `--collect:"Code Coverage"` is provided, a `Code Coverage` entry is +created out of process data collectors. + +[data collectors]: ./analyze.md + +In-process data collectors should be configured by the user. + +Data collector extension authors may use the content within the specific +`` node to provide configuration options +for their data collector. For example, the code coverage data collector uses +following section. + +_Example_ + +```xml + + + + + + + + + + + .*CPPUnitTestFramework.* + + + + + True + True + True + False + + + + + + + +``` + +_Description_ + +| Settings Element | Type | Function | +|------------------|--------|---------------------------------------------------------------------------| +| DataCollector | string | Provides a data collector information. See below for required attributes. | + +Required attributes: + +1. `friendlyName` provides a common name for the data collector. It is declared + by a data collector implementation. +2. `enabled` is used to enable/disable a data collector. If `true` the data + collector participates in test run. +3. `uri` is the identity of a data collector. It is declared by the data + collector implementation. + +Test platform uses above attributes to instantiate the appropriate datacollector for +a test run. + +> Note: it is possible for users to provide the runsettings with a +> `DataCollectionRunSettings` node with any configuration for the data +> collectors. + +### Other Sections + +#### Legacy Settings + +This section allows users to configure settings that were earlier required to be +set using *testsettings file. +These settings can be used for Ordered tests and MSTest v1 based tests when running in legacy mode. + +Users can now migrate testsettings to runsettings using [SettingsMigrator](./RFCs/0023-TestSettings-Deprecation.md#migration) + +Here is an example: + +```xml + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + +#### Run Parameters + +```xml + + + + + + +``` + +This section provides ability for user to specify a `key-value` pair dictionary +available to tests during runtime. + +> Note that it is the responsibility of an adapter to ensure this section is +> available to tests at runtime. +> E.g. the mstest framework makes these settings available as part of the +> `TestContext` API. + +#### Adapter Configuration + +An adapter may provide a section in runsettings for users. See [mstest config][] +and [nunit config][] for more details. + +[mstest config]: TODO +[nunit config]: TODO + +# Execution thread apartment state + +This section explains usage of ExecutionThreadApartmentState element in runsettings and testplatform behavior for same. + +### Usage + +#### using runsettings file + +```xml + + + + STA + + +``` + +#### using command line + +vstest.console.exe a.dll -- RunConfiguration.ExecutionThreadApartmentState=STA + +dotnet test -f net46 -- RunConfiguration.ExecutionThreadApartmentState=STA + +### History + +In Test Platform V1 ExecutionThreadApartmentState property can be set from vstest.executionengine*.exe.config file. Default value is `STA`. + +### Behavior + +In Test platform V2 ExecutionThreadApartmentState property default value is `MTA` for .NET Core and `STA` for .NET Full. `STA` value is only supported for .NET Framework. +Warning should be shown on trying to set value `STA` for .NET Core and UAP10.0 frameworks tests. + +* To support adapters which depends on thread test platform creates may need STA apartment state to run UI tests. `ExecutionThreadApartmentState` option can be used to set apartment state. Example: MSTest v1, MSTest v2 and MSCPPTest adapters. + +* The recommended way to make the tests run in STA thread is using custom attributes that adapter provides. + +| Adapter | Attribute| +|-----------|-----------| +| MSTest v2 | STATestMethod/STATestClass +| NUnit | Apartment | +| Xunit | STAFact diff --git a/docs/contribute.md b/docs/contribute.md new file mode 100644 index 0000000000..05ba93c560 --- /dev/null +++ b/docs/contribute.md @@ -0,0 +1,224 @@ +# Contribution Guide + +This article will help you build, test and try out local builds of the VS test +platform. + +## Prerequisites + +Please ensure you have a `.net 4.6.2` or higher installed on the machine. + +Clone the repository to a local directory. Rest of this article assumes +`/src/vstest` as the location of source enlistment. + +```shell +> git clone https://github.com/Microsoft/vstest.git +``` + +If you're planning to use **Visual Studio** as development environment, please +install `VS 2022` with .NET Desktop development workload, and install individual component `.NET Portable Library targeting pack`. + +If you're _not_ planning to use **Visual Studio** and only use CLI. You will need to install [.Net 46 targeting pack](https://www.microsoft.com/download/details.aspx?id=48136). The download link has two msis. Both needs to be installed. Otherwise build will fail asking to install net 46. + +### Unix requirements + +Install common tools + +```shell +sudo apt install libcurl4-openssl-dev +``` + +Follow the instructions on [Mono Installation][mono-linux] page to install latest bits. + +[mono-linux]: http://www.mono-project.com/download/#download-lin + +Rest of the article will provide steps for VS and CLI/Editors development. + +## Build + +### Building with Visual Studio + +Open `/src/vstest/TestPlatform.sln` in VS. + +Use `Build Solution` to build the source code. + +Binaries for each assembly are produced in the +`artifacts/src//bin/Debug` directory. + +### Building with CLI, CI, Editors + +To build the repository, run the following command: + +```shell +> cd /src/vstest +> build.cmd +``` + +This command will fetch the latest `dotnet-cli` into `/src/vstest/tools/dotnet` +directory. It will use the `dotnet` executable present there to build the source +code. All the nuget required for build will be downloaded to +`/src/vstest/.packages` directory. + +Build will produce following assets: + +* A portable `vstest.console` for desktop (net46 target) and xplat (netcoreapp) + target +* A visual studio extension `Microsoft.TestPlatform.vsix` with the test platform + components required in VS test explorer +* Test platform SDK packages for ObjectModel and TranslationLayer + +We will discuss more on each assets are in the [Deployment](#Deployment) section below. + +Binaries for each assembly is produced along side the source. E.g. ObjectModel +assemblies can be found at +`/src/vstest/src/Microsoft.TestPlatform.ObjectModel/bin/Debug/net46/*.dll`. + +To build a particular configuration, use the `-c` option. E.g. to trigger a +release build use + +```shell +> build.cmd -c Release +``` + +For other options, check `/src/vstest/scripts/build.ps1`. + +## Test + +There are following sets of tests: + +* Unit tests + * Very fast tests primarily validating individual units + * Named as `.UnitTests` where UnitUnderTest is any product + assembly +* Smoke tests + * Slower end to end tests. Typically these cover P0 scenarios (99% of users + will use these, if these are broken, PR will not be merged) + * Driven by a real `vstest.console` executable + * Named as `Microsoft.TestPlatform.SmokeTests` +* End to end tests + * Slower end to end tests for extensive coverage + * Driven by a real `vstest.console` executable + * Named as `Microsoft.TestPlatform.AcceptanceTests` + +As a principle, most of tests are unit tests (~70-80%), few smoke tests +(~20-15%), fewer acceptance tests (~10-5%). + +Unit tests and smoke/acceptance tests are run with the `vstest.console` built by +the `build` step above. + +### Running tests (Visual Studio) + +Currently tests are run in VS 2017 RC using the test platform bits. You need to +install the testplatform.vsix generated by build if you're using an older version +of VS (< RC.3). See [Deployment](#visual-studio) for installation steps. + +Run the tests in Test Explorer. Use a search filter like `project:"Unit"` to +run only unit tests. For running smoke tests, use the `project:"Smoke"` filter. + +### Running tests (CLI, CI, Editors) + +To execute tests, run the following command: + +```shell +> cd /src/vstest +> test.cmd +``` + +By default, only unit tests are run. To run the smoke tests, provide the `-p` +option to `test.cmd` to set test assembly pattern: + +```shell +> test.cmd -p smoke +``` + +The `-p` option can be used to run tests for any assembly as well. E.g. +following command will run tests for _datacollector_: + +```shell +> test.cmd -p datacollector +``` + +Tests for a particular configuration can be run with following command. By +default, `Debug` configuration is run. + +```shell +> test.cmd -c release +``` + +If you want to run a particular test. Eg: Test Name that contains Blame in Acceptance test + +```shell +> .\test.cmd -bl -c release /p:TestRunnerAdditionalArguments="'--filter Blame'" -Integration +``` + +## Deployment + +This section will discuss the steps to use the `vstest.console` we've built +using previous instructions. + +### Visual Studio + +Visual Studio 2017 RC ships with the test platform `vsix` generated by build.cmd. To use the locally +built version, use the following steps in a developer command prompt. + +```shell +> vsixinstaller /src/vstest/artifacts/Debug/TestPlatform.vsix +# (replace Debug with Release as appropriate) +``` + +### Command line (XPlat) + +A `netcoreapp` target of vstest.console is dropped at +`/src/vstest/artifacts//netcoreapp1.0/vstest.console.dll`. It can be +executed with any dotnet executable. You may choose to use the dotnet-cli we +have in `/src/vstest/tools/dotnet/dotnet` as well :) + +```shell +> /src/vstest/tools/dotnet/dotnet /src/vstest/artifacts/Debug/netcoreapp1.0/vstest.console.dll /? +``` + +### Command line (Windows desktop) + +A `net46` target of vstest.console is dropped at +`src/vstest/artifacts//net46/win7-x64`. It can be run directly as +follows: + +```shell +> /src/vstest/artifacts/Debug/net46/win7-x64/vstest.console.exe /? +``` + +## Diagnostics + +Try to isolate the failure scenario. In the best case it's just a command line +that can demonstrate a bug. For example, a bug in discovery of tests can show up +in following command line: + +```shell +> /src/vstest/artifacts/Debug/net46/win7-x64/vstest.console.exe mytest.dll /listTests /tests:*&&*#Ed +``` + +Next step is to enable [verbose logging](diagnose.md) to understand details. + +Another add a `Debugger.Launch` at the process launch points. E.g. +`testhost.exe` or `vstest.console.exe`. Select the appropriate debugger (choose +CoreCLR for netcoreapp scenario) and step through the code. + +## Running Tests with TPv2 using Test Explorer + +Test Platform (TPv2) is packaged as a `vsix` with VS 2017 RC releases and lights up the .NET core and Live Unit Testing scenarios. It currently does not support UWP & data collector scenarios (code coverage & fakes). It is placed @ `"%programfiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform"`. + +Desktop, UWP & Native unit testing continues to use the test platform (TPv1) located @ `"%programfiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow"`. + +To use TPv2 for desktop - place `testplatform.config` @ `"%programfiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform"` with the contents below. + +````xml + + + + + + + + +```` + +If `feature.net35` and `feature.net40` are set to `true`, VS Test Explorer will use TPv2 for desktop flow for tests targeting net35 and net40 frameworks respectively. If `feature.datacollector` is set to `true`, VS Test Explorer will use TPv2 when data collectors are enabled. diff --git a/docs/diagnose.md b/docs/diagnose.md new file mode 100644 index 0000000000..2ec2a57bc5 --- /dev/null +++ b/docs/diagnose.md @@ -0,0 +1,163 @@ +# Test platform diagnostics + +This document outlines troubleshooting and diagnosis instructions for test platform. + +## Collect traces using command line + +The console test runner (`vstest.console`) provides a `diag` switch to collect +traces to a log file. Invoke the runner using below command line: + +```shell +> vstest.console testApp.dll --diag:log.txt +``` + +Trace information will be available in the `log.txt` file. The testhost +execution logs will be in a `log.host.*.txt` file. Testhost logs will be most +interesting since that process actually loads the adapters and runs the tests. It +is also possible provide a path `/tmp/dir/log.txt`. `/tmp/dir` will be created if +it doesn't exist. + +Trace level can be changed using below command line: + +```shell +> vstest.console testApp.dll --diag:log.txt;tracelevel=verbose +``` + +Allowed values for tracelevel are: off, error, warning, info and verbose. The default value is verbose. + +### Collect traces using VSTEST_DIAG + +Since v17.2.0, environment variable `VSTEST_DIAG` can be used to specify the path to the log file. + +### Dotnet test + +The `--diag` and `VSTEST_DIAG` option is supported on the `dotnet test` command as well. This will also produce same +set of log files: `log.txt` and `log.*.txt`. + +```shell +> dotnet test --diag:log.txt +``` + +To get traces for VSTest build task, enable the following environment variable: + +```shell +> set VSTEST_BUILD_TRACE=1 +or +> $env:VSTEST_BUILD_TRACE=1 # powershell +> dotnet test +``` + +## Collect trace using config file + +Tracing can also be enabled via a configuration file. Create +a `vstest.console.exe.config` configuration file in the same directory as +`vstest.console`. Similar configuration is also possible for `testhost.exe` or `testhost.x86.exe`. + +This technique is useful to capture logs for IDE/Editor scenarios. + +```shell +> where vstest.console +d:\tmp\vstest.console.exe + +> notepad d:\tmp\vstest.console.exe.config +``` + +Add the following content to the config file (`vstest.console.exe.config` or `testhost.exe.config`). + +```shell + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## Collect trace in Azure DevOps CI (VSTest Task) + +Add a variable to the build definition named `System.Debug` with value `True`. This can +be done while a new build is queued. + +![image](https://github.com/user-attachments/assets/893eee2d-0e20-4b1f-999b-a1a4f8862d12) + +This variable will ensure: + +* Exact command line of `vstest.console.exe` is reported. It can be used to isolate if there +are errors in translating user inputs in the task to command line options of vstest.console.exe. +* The task invokes `vstest.console.exe` with `/diag` option. The log files can be uploaded +as artifacts for diagnosing errors. + +Logs can be downloaded by clicking the right hand `...` menu: + +![image](https://github.com/user-attachments/assets/e8369817-f06a-41c1-b4ae-b042cdc4eaf9) + +## Debug test platform components + +The runner and test host processes support waiting for debugger attach. You can +enable the following environment variable to keep `vstest.console.exe` waiting for +debugger attach: + +```shell +> set VSTEST_RUNNER_DEBUG=1 +> vstest.console testApp.dll +Waiting for debugger attach... +Process Id: 51928, Name: vstest.console +``` + +For test host process (`testhost.exe`, or `dotnet exec testhost.dll` depending on +target framework) use the following environment variable. +Execution will halt until debugger is attached. + +```shell +> set VSTEST_HOST_DEBUG=1 +> vstest.console testApp.dll +Microsoft (R) Test Execution Command Line Tool Version 15.0.0.0 +Copyright (c) Microsoft Corporation. All rights reserved. + +Starting test execution, please wait... +Host debugging is enabled. Please attach debugger to testhost process to continue. +``` + +## In Visual Studio + +Set test logging to trace: + +![image](https://github.com/user-attachments/assets/0ee53d10-4f95-469a-91bd-8577d79b99bc) + +Run your tests. + +Go to Output > Tests window: + +Please provide all files from the listed folder, and complete content of the Tests window. + +![image](https://github.com/user-attachments/assets/c942642d-e10a-4bf3-9920-8ddd22d99ba8) + + diff --git a/docs/dotnetcoretests.md b/docs/dotnetcoretests.md new file mode 100644 index 0000000000..8e938642ee --- /dev/null +++ b/docs/dotnetcoretests.md @@ -0,0 +1,17 @@ +For dotnet core test projects, the test platform is acquired as a nuget package (Microsoft.NET.Test.Sdk) and the runtime (testhost.dll similar to testhost.exe) is also part of the nuget package. + +When dotnet build runs, the above mentioned packages are restored to the users' global nuget cache in the absence of any overridden config. When vstest.console.exe runs .runtimeconfig.dev.json is looked into to determine the folders to look for the testhost.dll (something like the below) in addition to the folder where the test dll is present (https://github.com/Microsoft/vstest/blob/c7472a479966a218fb0ac508ed799418eb4bfc00/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DotnetTestHostManager.cs#L374) + +{ + "runtimeOptions": { + "additionalProbingPaths": [ + "C:\\Users\\shivash\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\shivash\\.nuget\\packages", + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + ] + } +} + +In the case of the customer, the nuget packages aren't being restored to the paths defined in the .runtimeconfig.dev.json resulting in the testhost.dll not being determined. The locations used for the nuget packages can be determined using the below : https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders#viewing-folder-locations + +To mitigate the issue and as a general recommendation for running dot net core tests with vstest task please ask the customer to publish the test project and point to the publish location for running tests. Publish ensures all needed dependencies are present for the tests to be executed alongside the test dll in case of dot net core tests. diff --git a/docs/environment-variables.md b/docs/environment-variables.md new file mode 100644 index 0000000000..6c066bb6d1 --- /dev/null +++ b/docs/environment-variables.md @@ -0,0 +1,309 @@ +# VSTest Environment Variables + +This document lists all environment variables that are understood and handled by the Visual Studio Test Platform (VSTest). These variables can be used to configure various aspects of test execution, debugging, diagnostics, and feature behavior. + +## Connection and Timeout Variables + +### VSTEST_CONNECTION_TIMEOUT +- **Description**: Sets the timeout in seconds for establishing connections between various test platform components (vstest.console, testhost, datacollector). +- **Default**: 90 seconds +- **Example**: `VSTEST_CONNECTION_TIMEOUT=120` +- **Usage**: Useful on slow machines or when network latency causes connection timeouts. + +### VSTEST_TESTHOST_SHUTDOWN_TIMEOUT +- **Description**: Sets the timeout in milliseconds to wait for testhost to safely shut down. +- **Default**: 100 milliseconds +- **Example**: `VSTEST_TESTHOST_SHUTDOWN_TIMEOUT=500` +- **Usage**: Allows testhost more time to clean up resources before forceful termination. + +## Diagnostics and Logging Variables + +### VSTEST_DIAG +- **Description**: Enables diagnostic logging and specifies the path to the log file. +- **Format**: Path to log directory and log file (e.g., "logs\log.txt") +- **Example**: `VSTEST_DIAG=C:\temp\logs\vstest.log` +- **Usage**: Equivalent to the `--diag` command line parameter. + +### VSTEST_DIAG_VERBOSITY +- **Description**: Sets the verbosity level for diagnostic logging when VSTEST_DIAG is enabled. +- **Valid Values**: `Verbose`, `Info`, `Warning`, `Error` +- **Default**: `Verbose` +- **Example**: `VSTEST_DIAG_VERBOSITY=Info` + +### VSTEST_LOGFOLDER +- **Description**: Specifies the folder where test logs should be written. +- **Example**: `VSTEST_LOGFOLDER=C:\TestLogs` + +## Debug Variables + +### VSTEST_HOST_DEBUG +- **Description**: Enables debugging of the testhost process. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_HOST_DEBUG=1` + +### VSTEST_HOST_DEBUG_ATTACHVS +- **Description**: Enables debugging of the testhost process and attempts to attach Visual Studio debugger. Requires AttachVS tool (that can be built in this repo) on PATH. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_HOST_DEBUG_ATTACHVS=1` + +### VSTEST_HOST_NATIVE_DEBUG +- **Description**: Enables native debugging of the testhost process. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_HOST_NATIVE_DEBUG=1` + +### VSTEST_RUNNER_DEBUG +- **Description**: Enables debugging of the test runner (vstest.console). +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_RUNNER_DEBUG=1` + +### VSTEST_RUNNER_DEBUG_ATTACHVS +- **Description**: Enables debugging of the test runner and attempts to attach Visual Studio debugger. Requires AttachVS tool (that can be built in this repo) on PATH. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_RUNNER_DEBUG_ATTACHVS=1` + +### VSTEST_RUNNER_NATIVE_DEBUG +- **Description**: Enables native debugging of the test runner. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_RUNNER_NATIVE_DEBUG=1` + +### VSTEST_DATACOLLECTOR_DEBUG +- **Description**: Enables debugging of data collector processes. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_DATACOLLECTOR_DEBUG=1` + +### VSTEST_DATACOLLECTOR_DEBUG_ATTACHVS +- **Description**: Enables debugging of data collector processes and attempts to attach Visual Studio debugger. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_DATACOLLECTOR_DEBUG_ATTACHVS=1` + +### VSTEST_BLAMEDATACOLLECTOR_DEBUG +- **Description**: Enables debugging of the blame data collector. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_BLAMEDATACOLLECTOR_DEBUG=1` + +### VSTEST_DUMPTOOL_DEBUG +- **Description**: Enables debugging of dump collection tools. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_DUMPTOOL_DEBUG=1` + +### VSTEST_DEBUG_ATTACHVS_PATH +- **Description**: Specifies the path for AttachVS tool, when not found on PATH. AttachVS tool can be built from this repo. +- **Example**: `VSTEST_DEBUG_ATTACHVS_PATH=C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe` + +### VSTEST_DEBUG_NOBP +- **Description**: Disables breakpoints on executable entry points, to for more seemless debugging when using AttachVS. +- **Values**: Set to "1" to disable breakpoints +- **Example**: `VSTEST_DEBUG_NOBP=1` + +## Crash Dump and Blame Collection Variables + +### VSTEST_DUMP_PATH +- **Description**: Overrides the default directory where crash dumps are stored. This disables automatic dump upload via attachments. +- **Example**: `VSTEST_DUMP_PATH=C:\CrashDumps` + +### VSTEST_DUMP_TEMP_PATH +- **Description**: Specifies the temporary directory for dump collection operations. +- **Fallback**: Falls back to AGENT_TEMPDIRECTORY, then system temp directory +- **Example**: `VSTEST_DUMP_TEMP_PATH=C:\temp\dumps` + +### VSTEST_DUMP_FORCEPROCDUMP +- **Description**: Forces the use of ProcDump for crash dump collection. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_DUMP_FORCEPROCDUMP=1` + +### VSTEST_DUMP_FORCENETDUMP +- **Description**: Forces the use of dotnet-dump for crash dump collection. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_DUMP_FORCENETDUMP=1` + +### VSTEST_DUMP_PROCDUMPARGUMENTS +- **Description**: Specifies custom arguments for ProcDump when collecting crash dumps. +- **Example**: `VSTEST_DUMP_PROCDUMPARGUMENTS=-e 1 -g -t -ma` + +### VSTEST_DUMP_PROCDUMPADDITIONALARGUMENTS +- **Description**: Specifies additional arguments to append to ProcDump command line. +- **Example**: `VSTEST_DUMP_PROCDUMPADDITIONALARGUMENTS=-r` + +## Feature Control Variables (Disable Features) + +### VSTEST_DISABLE_ARTIFACTS_POSTPROCESSING +- **Description**: Disables artifact post-processing functionality. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_ARTIFACTS_POSTPROCESSING=1` +- **Added**: Version 17.2-preview, 7.0-preview + +### VSTEST_DISABLE_ARTIFACTS_POSTPROCESSING_NEW_SDK_UX +- **Description**: Disables new SDK UX for artifact post-processing, showing old output format. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_ARTIFACTS_POSTPROCESSING_NEW_SDK_UX=1` +- **Usage**: Useful when parsing console output and need to maintain compatibility +- **Added**: Version 17.2-preview, 7.0-preview + +### VSTEST_DISABLE_FASTER_JSON_SERIALIZATION +- **Description**: Disables the faster JSON serialization mechanism and falls back to standard serialization. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_FASTER_JSON_SERIALIZATION=1` + +### VSTEST_DISABLE_MULTI_TFM_RUN +- **Description**: Forces vstest.console to run all sources using the same target framework (TFM) and architecture instead of allowing multiple different TFMs and architectures to run simultaneously. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_MULTI_TFM_RUN=1` + +### VSTEST_DISABLE_SERIALTESTRUN_DECORATOR +- **Description**: Disables the SerialTestRun decorator. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_SERIALTESTRUN_DECORATOR=1` + +### VSTEST_DISABLE_SHARING_NETFRAMEWORK_TESTHOST +- **Description**: Disables sharing of .NET Framework testhosts, returning to the behavior of sharing testhosts when they are running .NET Framework DLLs and are not disabling appdomains or running in parallel. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_SHARING_NETFRAMEWORK_TESTHOST=1` + +### VSTEST_DISABLE_STANDARD_OUTPUT_CAPTURING +- **Description**: Disables capturing standard output from testhost processes. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_STANDARD_OUTPUT_CAPTURING=1` + +### VSTEST_DISABLE_STANDARD_OUTPUT_FORWARDING +- **Description**: Disables forwarding standard output from testhost processes. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_STANDARD_OUTPUT_FORWARDING=1` + +### VSTEST_DISABLE_THREADPOOL_SIZE_INCREASE +- **Description**: Disables setting a higher value for ThreadPool.SetMinThreads. The higher value allows testhost to connect back faster by avoiding waits for ThreadPool to start more threads. +- **Values**: Set to any non-zero value to disable +- **Example**: `VSTEST_DISABLE_THREADPOOL_SIZE_INCREASE=1` + +### VSTEST_DISABLE_UTF8_CONSOLE_ENCODING +- **Description**: Disables setting UTF-8 encoding in console output. +- **Values**: Set to "1" to disable +- **Example**: `VSTEST_DISABLE_UTF8_CONSOLE_ENCODING=1` + +## Build and MSBuild Integration Variables + +### VSTEST_BUILD_DEBUG +- **Description**: Enables debug output for VSTest build tasks. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_BUILD_DEBUG=1` + +### VSTEST_BUILD_TRACE +- **Description**: Enables trace output for VSTest build tasks. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_BUILD_TRACE=1` + +### VSTEST_MSBUILD_NOLOGO +- **Description**: Suppresses the display of the copyright banner when running tests via MSBuild. +- **Values**: Set to "1" to suppress logo +- **Example**: `VSTEST_MSBUILD_NOLOGO=1` + +## Telemetry Variables + +### VSTEST_TELEMETRY_OPTEDIN +- **Description**: Controls whether telemetry data is collected and sent. +- **Values**: Set to "1" to opt in, any other value opts out +- **Example**: `VSTEST_TELEMETRY_OPTEDIN=1` + +### VSTEST_LOGTELEMETRY +- **Description**: Enables logging of telemetry data to files. +- **Values**: Set to any non-empty value to enable +- **Example**: `VSTEST_LOGTELEMETRY=1` + +### VSTEST_LOGTELEMETRY_PATH +- **Description**: Specifies the directory where telemetry log files should be written. +- **Example**: `VSTEST_LOGTELEMETRY_PATH=C:\TelemetryLogs` + +## Performance and Parallelization Variables + +### VSTEST_HOSTPRESTART_COUNT +- **Description**: Sets the number of testhosts to pre-start for improved performance in parallel test execution. +- **Format**: Integer value +- **Example**: `VSTEST_HOSTPRESTART_COUNT=4` + +## Configuration and Path Variables + +### VSTEST_CONSOLE_PATH +- **Description**: Specifies the path to the vstest.console executable. +- **Example**: `VSTEST_CONSOLE_PATH=C:\Tools\VSTest\vstest.console.exe` + +### VSTEST_IGNORE_DOTNET_ROOT +- **Description**: When set to a non-zero value, ignores the DOTNET_ROOT environment variable during testhost selection. +- **Values**: Set to any non-zero value to ignore DOTNET_ROOT +- **Default**: "0" (respects DOTNET_ROOT) +- **Example**: `VSTEST_IGNORE_DOTNET_ROOT=1` + +### VSTEST_SKIP_FAKES_CONFIGURATION +- **Description**: Skips Microsoft Fakes configuration during test execution. +- **Values**: Set to "1" to skip +- **Example**: `VSTEST_SKIP_FAKES_CONFIGURATION=1` + +## UWP (Universal Windows Platform) Variables + +### VSTEST_UWP_DEPLOY_LOCAL_PATH +- **Description**: Overrides the local path for UWP application deployment. +- **Example**: `VSTEST_UWP_DEPLOY_LOCAL_PATH=C:\UWPApps\LocalDeploy` + +### VSTEST_UWP_DEPLOY_REMOTE_PATH +- **Description**: Overrides the remote path for UWP application deployment. +- **Example**: `VSTEST_UWP_DEPLOY_REMOTE_PATH=\\RemoteDevice\Deploy` + +## Windows App Host Variables + +### VSTEST_WINAPPHOST_* +- **Description**: Various environment variables related to Windows App Host configuration. +- **Pattern**: Variables following the pattern `VSTEST_WINAPPHOST_{VARIABLE_NAME}` +- **Usage**: Used internally for Windows App Host test execution scenarios + +## Legacy/Experimental Variables + +### VSTEST_EXPERIMENTAL_FORWARD_OUTPUT_FEATURE +- **Description**: (Deprecated) Previously used to enable output forwarding feature. +- **Status**: Replaced by VSTEST_DISABLE_STANDARD_OUTPUT_CAPTURING and VSTEST_DISABLE_STANDARD_OUTPUT_FORWARDING +- **Note**: This variable is no longer used as the feature is now enabled by default + +### VSTEST_DISABLE_PROTOCOL_3_VERSION_DOWNGRADE +- **Description**: Disables automatic downgrade to protocol version 3 for compatibility. +- **Values**: Set to any non-empty value to disable downgrade +- **Example**: `VSTEST_DISABLE_PROTOCOL_3_VERSION_DOWNGRADE=1` + +## Usage Examples + +### Debugging a Test Run +```bash +# Enable testhost debugging and increase connection timeout +set VSTEST_HOST_DEBUG=1 +set VSTEST_CONNECTION_TIMEOUT=300 +dotnet test MyTests.dll +``` + +### Collecting Diagnostics +```bash +# Enable detailed diagnostic logging +set VSTEST_DIAG=C:\temp\vstest.log +set VSTEST_DIAG_VERBOSITY=Verbose +dotnet test MyTests.dll +``` + +### Performance Optimization +```bash +# Pre-start testhosts for better parallel performance +set VSTEST_HOSTPRESTART_COUNT=4 +dotnet test MyTests.dll --parallel +``` + +### Crash Dump Collection +```bash +# Configure crash dump collection +set VSTEST_DUMP_PATH=C:\CrashDumps +set VSTEST_DUMP_FORCEPROCDUMP=1 +dotnet test MyTests.dll --collect:"blame;collectdump=true" +``` + +## Notes + +- Most debug variables require only being set to any non-empty value to be enabled. +- Feature disable variables typically use "1" or any non-zero value to disable the feature. +- Connection timeout values are in seconds unless otherwise specified. +- Paths should use the appropriate path separator for your operating system. +- Some variables are only effective in specific scenarios (e.g., UWP variables only apply to UWP test projects). + +For more information about VSTest and its features, see the [VSTest documentation](https://github.com/Microsoft/vstest/tree/main/docs). \ No newline at end of file diff --git a/docs/extensions/JSTestAdapter.md b/docs/extensions/JSTestAdapter.md new file mode 100644 index 0000000000..96266174f3 --- /dev/null +++ b/docs/extensions/JSTestAdapter.md @@ -0,0 +1,143 @@ +## Seamlessly running JavaScript tests with VSTest +VSTest provides tremendous extensibility for running tests from many different frameworks. A single test runner to rule them all. To name just a few - NUnit, xUnit, MSTest. Be it running in Visual Studio, CLI or using VSTest task in Azure Pipelines, this extensibility allows you to run any test and get a consistent experience. + +With services becoming more common and UX evolving consistently for fluid and rich experiences, there is a need for JavaScript testing. JavaScript has a plethora of test frameworks, each with it's own runner. Not all of them plug-in seamlessly across the IDE, CLI and a CI pipeline, the way VSTest does. +VSTest does have a JavaScript test adapter called Chutzpah, which leverages the extensibility for a consistent experience. However, Chutzpah limits the available runtime to PhantomJS. PhantomJS is no longer being actively maintained and also limits you to using ECMAScript 5. + +#### JSTest to the rescue +JSTestAdapter is an open source test adapter extension for VSTest for running, well you guessed it, any kind of JavaScript tests. The adapter has been built with extensibility in mind to allow plugging in a variety of JavaScript test frameworks and environments. + +The adapter currently supports nodejs as its runtime environment and three most popular test runners - mocha, jasmine and jest. +The JSTestAdapter allows you to leverage the VSTest capabilities for a seamless test execution experience across the VS IDE, CLI and the VSTest task in Azure Pipelines. + +JSTest's deep integration with VSTest and Azure Pipelines enables us to leverage the distribution capability for all three of the runners. It also provides the *MSTest style* capability to upload attachments from tests with [jstestcontext](https://github.com/karanjitsingh/jstestcontext) extension. This is especially helpful for UI test failures, by simply uploading the screenshot of the UI we can figure out what went wrong in the Pipelines itself. + +#### Running JavaScript tests using the vstest.console.exe CLI + +Let's take an example of a basic calculator test. + +```javascript +// Calculator.js +function add(a, b) { + return a + b; +} + +module.exports = { + add +} +``` + +```javascript +// CalculatorTest.js +const assert = require("assert"); +const calculator = require("./calculator.js") + +describe("Calculator tests", () => { + + it("This test will fail", () => { + assert.equal(calculator.add(1, 2), 2); + }); + + it("This test will pass", () => { + assert.equal(calculator.add(1, 2), 3); + }); + +}); +``` + +And now to setup `jasmine` and `jstestadapter` npm packages. + +```powershell +> npm install jasmine +> npm install jstestadapter +``` + +Running this test is as simple as passing the path to the node module and the path to the test file as arguments. + +```powershell +> vstest.console.exe --TestAdapterPath:.\node_modules\jstestadapter .\calculatortest.js +``` + +![Imgur](https://i.imgur.com/bwrEbDJ.png) + +Since the default test framework for JSTest is Jasmine, let's try to run the tests with Mocha. + +```powershell +> vstest.console.exe --TestAdapterPath:.\node_modules\jstestadapter .\calculatortest.js -- JSTest.TestFramework=mocha +``` + +`... -- JSTest.TestFramework=mocha` is how run-settings are provided to VSTest. Run setting configurations can also be defined in an xml and passed as a CLI argument to vstest.console.exe, `--Settings:runsettings.xml`. Run settings can also contain configurations specific to the test framework/runner in question. Now let's try this with Jest, since Jest uses file patterns to check for test files, package.json is used as the test file container for running tests through Jest. + +```powershell +vstest.console.exe --Settings:RunSettings.xml --TestAdapterPath:.\node_modules\jstestadapter .\package.json +``` + +With RunSettings.xml: +```xml + + + jest + { + "collectCoverage": true, + "verbose": true + } + + +``` + +You can find more options for Jest at https://jestjs.io/docs/en/configuration.html + +#### Running JavaScript tests in Azure Pipelines with VSTest task + +We can use the VSTest task in Azure Pipelines to run JavaScript tests with VSTest and JSTest. + +1. First, let's go ahead and create a pipeline and add VSTest task to it. + + ![Imgur](https://i.imgur.com/wVinSKh.png) + +2. Now that we've added the task let's set it up to run JavaScript tests with `jstestadapter`, we fill in the test pattern for the test files and make sure to exclude js files from node_modules. + + ![Imgur](https://i.imgur.com/ONBBy1r.png) + +3. Finally, we configure the task with `RunSettings.xml` and a path to the `jstestadapter` node module as the path to the tests adapter path + + ![Imgur](https://i.imgur.com/cKoZIJl.png) + +Here's the yaml for the same: + +```yml +- task: VSTest@2 + displayName: 'VsTest - testAssemblies' + inputs: + testAssemblyVer2: | + **\*Tests.js + !**\node_modules\**\*.js + runSettingsFile: RunSettings.xml + pathtoCustomTestAdapters: '$(System.DefaultWorkingDirectory)\node_modules\jstestadapter' +``` + +#### Distributing JavaScript tests in Azure Pipelines with VSTest task + +To run these tests with distribution across multiple agents: + +1. First we need to configure the job for multi-agent parallelism. + + ![Imgur](https://i.imgur.com/B63yBoF.png) + +2. Next, we go ahead and configure distribution in the task. In this particular scenario, default values for distribution remains same. So as long as we've enabled multi-agent parallelism in the pipeline we do not need to change any property for Advanced Execution in VSTest. Hence the yaml for the task remains the same. + + ![Imgur](https://i.imgur.com/Uv1IBRC.png) + +*Since multi-configuration and multi-agent job options are not exported to YAML. They can be configured by following this guide, https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml.* + +#### Limitations + +While the adapter was designed to be cross-platform there are still a few issues with JSTest when trying to run it with .NET core build for VSTest. Along with not smoothly being able to run on Linux (there are a few workarounds to get it to work), even though the architecture is designed to be runtime and test framework abstracted but currently there is no public API to leverage that extensible design. + +#### Conclusion + +JSTest provides a fantastic way of running any kinds of tests through node in a pipeline setting like Azure Devops Pipeline. With support for the latest trend in JavaScript, Jest, testing and node runtime, it makes it possible to run about any kind of tests. + +The JavaScript tests for the adapter itself are run through the adapter, checkout the [_testception_](https://dev.azure.com/karanjitsingh/JSTestAdapter/_build?definitionId=4) in action for yourself. + +###### Source: [JSTestAdapter Repo](https://github.com/karanjitsingh/JSTestAdapter/) diff --git a/docs/extensions/blame-datacollector.md b/docs/extensions/blame-datacollector.md new file mode 100644 index 0000000000..91ad538ed1 --- /dev/null +++ b/docs/extensions/blame-datacollector.md @@ -0,0 +1,20 @@ +# Motivation +Certain execution sequences can crash the testhost process spawned by the vstest runner. However there is no easy way to diagnose such an aborted test run since there is no way to know what specific test case was running at the time. The "blame" mode in vstest tracks the tests as they are executing and, in the case of the testhost process crashing, emits the tests names in their sequence of execution up to and including the specific test that was running at the time of the crash. This makes it easier to isolate the offending test and diagnose further. + +# Syntax +```vstest.console.exe /blame``` or ```dotnet test --blame``` + +# Output +If the testhost process had crashed, then the fully qualified names of the tests in their sequence of execution up to and including the specific test that was running at the time of the crash, is emitted into a sequence.xml file created under the TestResults folder. + +## Example +Here is an example of the emitted xml file. + +```xml + + + + + +``` +In this case, the listed last is the test that was running at the time of the crash. diff --git a/docs/extensions/datacollector-migration.md b/docs/extensions/datacollector-migration.md new file mode 100644 index 0000000000..4ff2ab527b --- /dev/null +++ b/docs/extensions/datacollector-migration.md @@ -0,0 +1,46 @@ +# DataCollector Migration +TestPlatform has introduced differences and enhancements to the data collection infrastructure. If you already have written data collectors for previous versions of TestPlatform, then you will need to migrate them. +This document will walk you through the changes that are required to migrate your TMI/MSTest.exe based DataCollector to work with TestPlatform. + +## Referencing DataCollector Framework +Previously, `DataCollector` abstract class was present in `Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll` under namespace `Microsoft.VisualStudio.TestTools.Execution`. + +Now, `DataCollector`abstract class is present in Object Model. Add reference to [`Microsoft.TestPlatform.ObjectModel`](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20170810-02) (preview) nuget package. DataCollector APIs are present under namespace `Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection`. +It is recommended to target your DataCollector to netstandard, so that it can also run cross-platform, i.e. on non-Windows operating systems. +For more info, refer to this [guide](./docs/extensions/datacollector.md). + +## Deprecated Attributes +Currently `DataCollectorFriendlyNameAttribute` and `DataCollectorTypeUriAttribute` are the only attributes that are supported. +Following attributes have been deprecated and should be removed if already being used. +* `DataCollectorEnabledByDefaultAttribute` +* `DataCollectorDescriptionAttribute` +* `DataCollectorConfigurationEditorTypeUriAttribute` +* `DataCollectorSupportsTailoredApplicationsAttribute` +* `DataCollectorVersionObsoleteAttribute` +* `DataCollectorConfigurationEditorAttribute` + +These attributes don't serve any purpose in TestPlatform and therefore, have been removed. + +## Deprecated Events +Currently, four events are exposed to DataCollectors through `DataCollectionEvents`: +* Session Start. +* Test Case Start. +* Test Case End. +* Session End. + +Following ten events that were exposed to DataCollectors through `DataCollectionEvents` have been deprecated and should be removed if already being used: +* Session Pause. +* Session Resume. +* Test Case Pause. +* Test Case Resume. +* Test Case Reset. +* Test Case Failed. +* Test Step Start. +* Test Step End. +* Data Request. +* Custom Notification. + +These events are no longer supported in TestPlatform and hence, these have been removed from DataCollection infrastructure as well. + +## DataCollector RunSettings +DataCollector RunSettings are highly compatible in all the versions of TestPlatform and old settings should continue to work with TestPlatform. For more info on runsettings, refer to [Configure DataCollectors](./docs/analyze.md#configure-datacollectors). diff --git a/docs/extensions/datacollector.md b/docs/extensions/datacollector.md new file mode 100644 index 0000000000..67aeabfddf --- /dev/null +++ b/docs/extensions/datacollector.md @@ -0,0 +1,178 @@ +# Your first datacollector +DataCollectors are used to monitor test execution. Getting CPU or memory usage info, taking screenshot, recording screen activity, measuring code coverage, etc. while executing tests are a few common scenarios that can be realised through DataCollectors. You can write your own data collectors to meet your specific requirements and use it while executing tests. + +In this walkthrough, you will learn how to create your first `DataCollector` and how to plug it in while executing test cases. + +## Extend DataCollector +The very first thing you will need to create is a Class Library project and add reference to `Microsoft.TestPlatform.ObjectModel` nuget package. +Class Library project can target Desktop clr or dotnet core clr or both frameworks. + +> **DataCollector Assembly Naming Convention** +> +> When test platform is looking for a DataCollector it will likely need to examine many +> assemblies. As an optimization, test platform will only look at distinctly named +> assemblies, specifically, a DataCollector must follow the naming convention +> `*collector.dll`. By enforcing such a naming convention, test platform can speed up +> locating a DataCollector assembly. Once located, test platform will load the data +> collector for the entire run. + +A new data collector can be implemented by extending the abstract `DataCollector` class. + +```csharp +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; + +[DataCollectorFriendlyName("NewDataCollector")] +[DataCollectorTypeUri("my://new/datacollector")] +public class NewDataCollector : DataCollector +{ + private string logFileName; + private DataCollectionEnvironmentContext context; + + public override void Initialize( + System.Xml.XmlElement configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext environmentContext) + { + events.SessionStart += this.SessionStarted_Handler; + events.TestCaseStart += this.Events_TestCaseStart; + logFileName = configurationElement["LogFileName"]; + } + + private void SessionStarted_Handler(object sender, SessionStartEventArgs args) + { + var filename = Path.Combine(AppContext.BaseDirectory, logFileName); + File.WriteAllText(filename, "SessionStarted"); + this.dataCollectionSink.SendFileAsync(this.context.SessionDataCollectionContext, filename, true); + this.logger.LogWarning(this.context.SessionDataCollectionContext, "SessionStarted"); + } + + + private void Events_TestCaseStart(object sender, TestCaseStartEventArgs e) + { + this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestCaseStarted " + e.TestCaseName); + } +} +``` +TestPlatform uniquely identifies each of the DataCollector by `DataCollectorFriendlyName` and `DataCollectorTypeUri`. + +Here is a brief description of each of the argument that is passed in constructor. + +### Configuration Element +At times, there is a need to pass configuration settings for initializing data collectors that could vary between test runs. +E.g. module names to exclude from code coverage. +For supporting those scenarios, configuration xml can be passed to DataCollectors using runsettings. +```xml + + + + + + DataCollectorLogs.txt + + + + + +``` +```csharp +XmlElement logFileElement = configurationElement[LogFileName]; +string logFile = logFileElement != null ? logFileElement.InnerText : string.Empty; +if (!File.Exists(logFile)) +{ + // Create a file to write to. + string createText = "Hello and Welcome" + Environment.NewLine; + File.WriteAllText(path, createText); +} +``` + +### DataCollectionEvents +DataCollectors can choose to subscribe to the following events exposed by `DataCollectionEvents` +1. TestSessionStart : Raised when test execution session starts. +2. TestSessionEnd : Raised when test execution session ends. +3. TestCaseStart : Raised when test case execution starts. +4. TestCaseEnd : Raised when test case execution ends. +5. TestHostLaunched : Raised when test host process has been initialized. **Note: This will be available from 15.7** + +```csharp +events.SessionStart += this.SessionStarted_Handler; +events.SessionEnd += this.SessionEnded_Handler; +events.TestCaseStart += this.Events_TestCaseStart; +events.TestCaseEnd += this.Events_TestCaseEnd; +events.TestHostLaunched += this.TestHostLaunched_Handler +``` +```csharp +private void Events_TestCaseStart(object sender, TestCaseStartEventArgs e) +{ +} +``` +### DataCollectionSink +DataCollectors can create files while handling events and send these files to test runner using `DataCollectionSink`. + +```csharp +dataSink.SendFileAsync(context, filename, true); +``` + +Files sent using above api get associated with session level attachments or test case level attachments based on the context passed. + +### DataCollectionEnvironmentContext +DataCollector framework maintains a session level context for test exectuion session and test level contexts for each test that gets executed. +`DataCollectionEnvironmentContext` passed as argument in constructor has session level context that can be accessed through property `SessionDataCollectionContext`. +Test case level context can be accessed through `TestCaseStartEventArgs.Context` or `TestCaseEndEventArgs.Context`. + +```csharp +private void Events_TestCaseStart(object sender, TestCaseStartEventArgs e) +{ + // Session level attachment + this.dataCollectionSink.SendFileAsync(this.context.SessionDataCollectionContext, filename, true); + // TestCase level attachment + this.dataCollectionSink.SendFileAsync(e.Context, filename, true); +} +``` + +### DataCollectionLogger +DataCollectors can also log errors or warnings using `DataCollectionLogger`. +```csharp +logger.LogError(this.context.SessionDataCollectionContext, new Exception("my exception")); +logger.LogWarning(this.context.SessionDataCollectionContext, "my warning"); +``` + +### DataCollection Environment Variables +DataCollectors can choose to specify information about how the test execution environment should be set up by implementing `ITestExecutionEnvironmentSpecifier`. +E.g. setting up the Environment Variables required by profiler engine for code coverage. + +```csharp +[DataCollectorFriendlyName("NewDataCollector")] +[DataCollectorTypeUri("my://new/datacollector")] +class NewDataCollector : DataCollector, ITestExecutionEnvironmentSpecifier +{ + public IEnumerable> GetTestExecutionEnvironmentVariables() + { + } +} +``` +Environment variables returned by the above method are set in the test execution process while bootstraping. + +## Using DataCollector +Once the DataCollector is compiled, it can be used to monitor test execution. There are two ways by which datacollectors can be plugged in: +1. Using /collect switch : +`vstest.console.exe /collect: /testadapterpath: /testadapterpath:` + +2. Using runsettings : +`vstest.console.exe /settings: +```xml + + + + + + + +``` +## Results +Attachments sent by DataCollectors will be part of Test Results and can also be viewed in .trx report, if specified. +Logs sent by DataCollectors will be displayed in console logger and can also be viewed in .trx report, if specified. + +## Samples +1. We have implemented a sample data collector [here](https://github.com/Microsoft/vstest/tree/main/test/TestAssets/OutOfProcDataCollector). diff --git a/docs/filter.md b/docs/filter.md new file mode 100644 index 0000000000..9cd974f300 --- /dev/null +++ b/docs/filter.md @@ -0,0 +1,194 @@ +# TestCase filter + +This document will help you to selectively execute tests based on filtering conditions through `--filter` for `dotnet test` and `--testcasefilter` for `vstest.console.exe`. + +### Syntax + + `dotnet test --filter ` or + `vstest.console.exe --testcasefilter:` + +**Expression** is in the format __\\\[|&\]__. Expressions can be +enclosed in paranthesis. e.g. `(Name~MyClass) | (Name~MyClass2)`. + +> `vstest 15.1+`: An expression without any **operator** is automatically considered as a `contains` on `FullyQualifiedName` property. +E.g. `dotnet test --filter xyz` is same as `dotnet test --filter FullyQualifiedName~xyz`. + +**Property** is an attribute of the `Test Case`. For example, the following are the properties +supported by popular unit test frameworks. + +| Test Framework | Supported properties | +| -------------- | -------------------- | +| MSTest |
    • FullyQualifiedName
    • Name
    • ClassName
    • Priority
    • TestCategory
    | +| Xunit |
    • FullyQualifiedName
    • DisplayName
    • Traits
    | +| NUnit |
    • FullyQualifiedName
    • Name
    • Priority
    • TestCategory
    • Category
    • Property
    | + +Allowed **operators**: + +* `=` implies an exact match +* `!=` implies an exact not match +* `~` implies a contains lookup +* `!~` implies a not contains lookup + +**Value** is a string. All the lookups are case insensitive. + +**Escape Sequences** must be used to represent characters in the value that have special meanings in the filter, i.e. filter operators. + +| Escape Sequence | Represents | +| -------------- | -------------------- | +| \\\\ | \\ | +| \\( | ( | +| \\) | ) | +| \\& | & | +| \\\| | \| | +| \\= | = | +| \\! | ! | +| \\~ | ~ | + +A helper method `Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities.FilterHelper.Escape` +is also available by referencing the `Microsoft.VisualStudio.TestPlatform.ObjectModel` NuGet package, which can be used to escape strings programatically. + +Expressions can be joined with boolean operators. The following boolean operators are supported: + +* `|` implies a boolean `OR` +* `&` implies a boolean `AND` + +## Examples + +The following examples use `dotnet test`, if you're using `vstest.console.exe` replace `--filter` with `--testcasefilter:`. + +### MSTest + +```CSharp +namespace MSTestNamespace +{ + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public class UnitTestClass1 + { + [Priority(2)] + [TestMethod] + public void TestMethod1() + { + } + + [TestCategory("CategoryA")] + [Priority(3)] + [TestMethod] + public void TestMethod2() + { + } + } +} +``` + +| Expression | What it does? | +| ---------- | ------------- | +| `dotnet test --filter Method` | Runs tests whose `FullyQualifiedName` contains `Method`. Available in `vstest 15.1+`. | +| `dotnet test --filter Name~TestMethod1` | Runs tests whose name contains `TestMethod1`. | +| `dotnet test --filter ClassName=MSTestNamespace.UnitTestClass1` | Runs tests which are in the class `MSTestNamespace.UnitTestClass1`.
    **Note:** The ClassName value should have a namespace, ClassName=UnitTestClass1 won't work. | +| `dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTestClass1.TestMethod1` | Runs all tests except `MSTestNamespace.UnitTestClass1.TestMethod1`. | +| `dotnet test --filter TestCategory=CategoryA` | Runs tests which are annotated with `[TestCategory("CategoryA")]` | +| `dotnet test --filter Priority=3` | Runs tests which are annotated with `[Priority(3)]`.**Note:** `Priority~3` is invalid as Priority is an int not a string. | + +#### Using Logical operators `| and &` + +| Expression | What it does? | +| ---------- | ------------- | +| `dotnet test --filter "FullyQualifiedName~UnitTestClass1\|TestCategory=CategoryA"` | Runs tests which have `UnitTestClass1` in FullyQualifiedName **or** TestCategory is CategoryA. | +| `dotnet test --filter "FullyQualifiedName~UnitTestClass1&TestCategory=CategoryA"` | Runs tests which have `UnitTestClass1` in FullyQualifiedName **and** TestCategory is CategoryA. | +| `dotnet test --filter "(FullyQualifiedName~UnitTestClass1&TestCategory=CategoryA)\|Priority=1"` | Runs tests which have either FullyQualifiedName contains `UnitTestClass1` and TestCategory is CategoryA or Priority is 1. | + +### xUnit + +| Expression | What it does? | +| ---------- | ------------- | +| `dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1` | Runs only one test `XUnitNamespace.TestClass1.Test1`. | +| `dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1` | Runs all tests except `XUnitNamespace.TestClass1.Test1` | +| `dotnet test --filter DisplayName~TestClass1` | Runs tests whose display name contains `TestClass1`. | + +#### Using traits for filter + +```CSharp +namespace XUnitNamespace +{ + public class TestClass1 + { + [Trait("Category", "bvt")] + [Trait("Priority", "1")] + [Fact] + public void foo() + { + } + + [Trait("Category", "Nightly")] + [Trait("Priority", "2")] + [Fact] + public void bar() + { + } + } +} + +``` + +In above code we defined traits with keys `Category` and `Priority` which can be used for filtering. + +| Expression | What it does? | +| ---------- | ------------- | +| `dotnet test --filter XUnit` | Runs tests whose `FullyQualifiedName` contains `XUnit`. Available in `vstest 15.1+`. | +| `dotnet test --filter Category=bvt` | Runs tests which have `[Trait("Category", "bvt")]`. | + +#### Using Logical operators `| and &` + +| Expression | What it does? | +| ---------- | ------------- | +| `dotnet test --filter "FullyQualifiedName~TestClass1\|Category=Nightly"` | Runs tests which have `TestClass1` in FullyQualifiedName **or** Category is Nightly. | +| `dotnet test --filter "FullyQualifiedName~TestClass1&Category=Nightly"` | Runs tests which have `TestClass1` in FullyQualifiedName **and** Category is Nightly. | +| `dotnet test --filter "(FullyQualifiedName~TestClass1&Category=Nightly)\|Priority=1"` | Runs tests which have either FullyQualifiedName contains `TestClass1` and Category is CategoryA or Priority is 1. | + +### NUnit + +```csharp +namespace NUnitTestNamespace; + +public class TestClass +{ + [Property("Priority","1")] + [Test] + public void Test1() + { + Assert.Pass(); + } + + [Property("Whatever", "SomeValue")] + [Test] + public void Test2() + { + Assert.Pass(); + } + + [Category("SomeCategory")] + [Test] + public void Test3() + { + Assert.Pass(); + } +} +``` + +#### Usage of the filters + +| Expression | What it does? | +| ---------- | ------------- | +| `dotnet test --filter FullyQualifiedName=NUnitTestNamespace.TestClass.Test1` | Runs only the given test | +| `dotnet test --filter Name=Test1` | Runs all tests whose test name (method) equals `Test1`. | +| `dotnet test --filter Name=TestClass` | Runs tests within all classes named `TestClass`. | +| `dotnet test --filter Name=NUnitTestNamespace` | Runs all tests within the namespace `NUnitTestNamespace`. | +| `dotnet test --filter Priority=1` | Runs tests with property named Priority and value = 1`. | +| `dotnet test --filter Whatever=TestClass` | Runs tests with property named `Whatever` and value = `SomeValue`. | +| `dotnet test --filter Category=SomeCategory` | Runs tests with category set to `SomeCategory`. Note: You can also use TestCategory in the filter. | + +Logical operators works the same as for the other frameworks. + + diff --git a/docs/issuetracking.md b/docs/issuetracking.md new file mode 100644 index 0000000000..d82e97c55c --- /dev/null +++ b/docs/issuetracking.md @@ -0,0 +1,71 @@ +# Issue tracking + +The vstest project tracks issues and feature requests using the [issue template](../.github/ISSUE_TEMPLATE.md) for the vstest repository. + +## Submitting an Issue + +First, please do a search in [issues](https://github.com/Microsoft/vstest/issues) to see if the issue or feature request has already been filed. Use this [query](https://github.com/Microsoft/vstest/issues?q=is%3Aopen+is%3Aissue+sort%3Areactions-%2B1-desc) to search for the most popular feature requests. +If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment. + +- 👍 - upvote +- 👎 - downvote + +If you cannot find an existing issue that describes your issue, submit it using the [issue template](../.github/ISSUE_TEMPLATE.md). Remember to follow the instruction mentioned therein carefully. + +## Issue triage + +Please follow the guidelines in the issue template when filing an issue or a pull request. +New issues or pull requests submitted by the community are triaged by a team member using the inbox query below. + +## Inbox query + +The [inbox query](https://github.com/Microsoft/vstest/issues?utf8=%E2%9C%93&q=is%3Aopen%20no%3Aassignee%20-label%3Abacklog%20-label%3Aenhancement) will return the following: + +- Open issues or pull requests that are not enhancements and that have no owner assigned. + +## Initial triage - Issue tagging + +Issues will then be tagged as follows: + +- Is the issue ***invalid***? It will be closed, and the reason will be provided. +- Is the issue a ***general question***, like *are data collector events synchronous*? It will be tagged as a ***question***. +- Is the issue a feature request or an enhancement. It will be tagged as an ***enhancement***. +- Else, the issue will be tagged as a ***bug***. + +## Secondary triage – assignment and follow through + +As and when an issue get assigned to a team member, the following secondary triage will happen + +- When a team member picks up an issue, they will first assign it to themselves. +- Ensure that the issue has an appropriate tag (***question***, ***enhancement***, ***bug***). +- If an issue needs a repro, tag it with ***need-repro*** and ask for a repro in a comment. + +## Ongoing issue management + +- Issues tagged ***need-repro*** info will be closed if no additional information is provided for 7 days. + +Team members will strive to resolve every bug within a stipulated period of time – we would like that to be a period of 14 days from the date the issue was filed. + +# Community contributions - up-for-grabs + +We strongly encourage the community to contribute enhancements and bug-fixes. Therefore, team members will look to add as much information in the issues as required so that you can make an effective contribution. Such issues will be tagged ***up-for-grabs***. + +# Planning + +## Triage + +Bugs and enhancements will be assigned a milestone, and within a milestone they will be assigned a priority. The priority dictates the order in which issues should be addressed. A important bug (something that we think is critical for the milestone) is to be addressed before the other bugs. + +To find out when a bug fix will be available in an update, then please check the milestone that is assigned to the issue. +Please see Issue Tracking for a description of the different workflows we are using. + +## Milestone planning + +We typically plan for a quarter and establish a set of themes we want to work towards, and prioritize enhancements and bug-fixes accordingly. +During the planning process we prioritize items as follows: + +- Important ***bugs*** - crashes, regressions, and issues that do not have a reasonable workaround. +- ***Enhancements*** that have many reactions. + +Accordingly, we publish the backlog and update the roadmap. +We will work on the items in sprintly (3 week) iterations. At the end of each iteration, we want to have a version of vstest that can be used by the community. diff --git a/docs/quickstart.md b/docs/quickstart.md new file mode 100644 index 0000000000..47bf600165 --- /dev/null +++ b/docs/quickstart.md @@ -0,0 +1 @@ +# Quickstart Guide diff --git a/docs/releases.md b/docs/releases.md new file mode 100644 index 0000000000..4dff5241d5 --- /dev/null +++ b/docs/releases.md @@ -0,0 +1,2485 @@ +# Release Notes + +## 17.6.1 and newer + +Please see release notes directly in the release page: https://github.com/microsoft/vstest/releases + +## 17.6.0 + +### Issues Fixed + +* Add legacy feeds +* [rel/17.6] Fix Newtonsoft versions in testhost.deps.json [#4372](https://github.com/microsoft/vstest/pull/4372) +* Revert "Revert "Fix signature verification" (#4333" [#4345](https://github.com/microsoft/vstest/pull/4345) +* Revert "Fix signature verification" [#4333](https://github.com/microsoft/vstest/pull/4333) +* Fix signature verification [#4331](https://github.com/microsoft/vstest/pull/4331) +* Pre-start testhosts [#3666](https://github.com/microsoft/vstest/pull/3666) +* Add `dotnet vstest` deprecation message [#4297](https://github.com/microsoft/vstest/pull/4297) +* Catch unhandled exception and avoid crash on test host exit [#4291](https://github.com/microsoft/vstest/pull/4291) +* Remove chutzpah [#4249](https://github.com/microsoft/vstest/pull/4249) +* Fix string conversion of `Microsoft.TestPlatform.Extensions.TrxLogger.ObjectMode.TestOutcome` [#4243](https://github.com/microsoft/vstest/pull/4243) +* Fix potential trx logger NRE [#4240](https://github.com/microsoft/vstest/pull/4240) +* handle object disposed exception [#4221](https://github.com/microsoft/vstest/pull/4221) +* Added support for checking testhost compatibility with test sessions [#4199](https://github.com/microsoft/vstest/pull/4199) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.5.0...v17.6.0) + +### Artifacts + +* TestPlatform vsix: [17.6.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.6/20230515-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.6.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.6.0) + +## 17.3.3 + +### Issues Fixed +* [rel/17.3] Update Newtonsoft.Json to 13.0.1 [#4299](https://github.com/microsoft/vstest/pull/4299) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.2...v17.3.3) + +### Drops + +* TestPlatform vsix: [17.3.3](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.3/20230324-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.3](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.3) + +## 17.2.1 + +### Issues Fixed + +* [rel/17.2] Update Newtonsoft.Json to 13.0.1 [#4310](https://github.com/microsoft/vstest/pull/4310) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.2.0...v17.2.1) + +### Drops + +* TestPlatform vsix: [17.2.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.2/20230324-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.2.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.2.1) + +## 17.0.2 + +### Issues Fixed + +* [rel/17.0] Update Newtonsoft.Json to 13.0.1 [#4309](https://github.com/microsoft/vstest/pull/4309) +* [rel/17.0] Update dependencies from devdiv/DevDiv/vs-code-coverage [#3159](https://github.com/microsoft/vstest/pull/3159) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.0.0...v17.0.2) + +### Drops + +* TestPlatform vsix: [17.0.2](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.0/20230324-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.0.2](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.0.2) + +## 17.6.0-preview-20230223-05 + +### Issues Fixed + +* Pre-start testhosts [#3666](https://github.com/microsoft/vstest/pull/3666) +* Add `dotnet vstest` deprecation message [#4297](https://github.com/microsoft/vstest/pull/4297) +* Catch unhandled exception and avoid crash on test host exit [#4291](https://github.com/microsoft/vstest/pull/4291) +* Remove chutzpah [#4249](https://github.com/microsoft/vstest/pull/4249) +* Fix string conversion of `Microsoft.TestPlatform.Extensions.TrxLogger.ObjectMode.TestOutcome` [#4243](https://github.com/microsoft/vstest/pull/4243) +* Fix potential trx logger NRE [#4240](https://github.com/microsoft/vstest/pull/4240) +* handle object disposed exception [#4221](https://github.com/microsoft/vstest/pull/4221) +* Added support for checking testhost compatibility with test sessions [#4199](https://github.com/microsoft/vstest/pull/4199) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.5.0-preview-20221221-03...v17.6.0-preview-20230223-05) + +### Artifacts + +* TestPlatform vsix: [17.6.0-preview-20230223-05](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20230223-05;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.6.0-preview-20230223-05](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.6.0-preview-20230223-05) + +## 17.5.0 + +### Issues Fixed + +* Fix SDK issue [#4278](https://github.com/microsoft/vstest/pull/4278) +* Add test run serialization feature [#4126](https://github.com/microsoft/vstest/pull/4126) +* Ensure that the OnAbort message is sent if the testhost aborts early [#3993](https://github.com/microsoft/vstest/pull/3993) +* Add custom satellite assemblies resolution [#4133](https://github.com/microsoft/vstest/pull/4133) +* Fixed muxer resolution strategy enum [#4134](https://github.com/microsoft/vstest/pull/4134) +* Fixed dotnet resolution for in-process vstest.console scenarios [#4122](https://github.com/microsoft/vstest/pull/4122) +* Ensure to not produce and ship exe for netcore [#4124](https://github.com/microsoft/vstest/pull/4124) +* Fixed testhost crash for net7 [#4112](https://github.com/microsoft/vstest/pull/4112) +* Revert "Run tests with Server GC enabled & concurrent GC disabled. (#3661)" [#4108](https://github.com/microsoft/vstest/pull/4108) +* Revert making Microsoft.NET.Test.Sdk package transitive [#4104](https://github.com/microsoft/vstest/pull/4104) +* Fix recursive resource lookup [#4095](https://github.com/microsoft/vstest/pull/4095) +* Fixed CC for in-process console scenarios [#4084](https://github.com/microsoft/vstest/pull/4084) +* Fixed test session issues [#4075](https://github.com/microsoft/vstest/pull/4075) +* Fix Invalid target architecture 'S390x' error [#4066](https://github.com/microsoft/vstest/pull/4066) +* Add Mono.Cecil.Rocks [#4071](https://github.com/microsoft/vstest/pull/4071) +* Revert "Revert "Re-enable arm64 ngen (#3931)" (#3948)" [#3951](https://github.com/microsoft/vstest/pull/3951) +* Update docker to the latest tagging schema [#4041](https://github.com/microsoft/vstest/pull/4041) +* Update resources [#4063](https://github.com/microsoft/vstest/pull/4063) +* Use environment variables for AeDebugger mode [#4049](https://github.com/microsoft/vstest/pull/4049) +* Add postmortem blame mode [#4032](https://github.com/microsoft/vstest/pull/4032) +* Add VSTEST_DISABLE_THREADPOOL_SIZE_INCREASE feature flag [#4046](https://github.com/microsoft/vstest/pull/4046) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.4.1...v17.5.0) + +### Artifacts + +* TestPlatform vsix: [17.5.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.5/20230221-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [17.5.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.5.0) + +## 17.5.0-preview-20221221-03 + +### Issues Fixed + +* Add test run serialization feature [#4126](https://github.com/microsoft/vstest/pull/4126) +* Ensure that the OnAbort message is sent if the testhost aborts early [#3993](https://github.com/microsoft/vstest/pull/3993) +* Add custom satellite assemblies resolution [#4133](https://github.com/microsoft/vstest/pull/4133) +* Fixed muxer resolution strategy enum [#4134](https://github.com/microsoft/vstest/pull/4134) +* Fixed dotnet resolution for in-process vstest.console scenarios [#4122](https://github.com/microsoft/vstest/pull/4122) +* Ensure to not produce and ship exe for netcore [#4124](https://github.com/microsoft/vstest/pull/4124) +* Fixed testhost crash for net7 [#4112](https://github.com/microsoft/vstest/pull/4112) +* Revert "Run tests with Server GC enabled & concurrent GC disabled. (#3661)" [#4108](https://github.com/microsoft/vstest/pull/4108) +* Revert making Microsoft.NET.Test.Sdk package transitive [#4104](https://github.com/microsoft/vstest/pull/4104) +* Fix recursive resource lookup [#4095](https://github.com/microsoft/vstest/pull/4095) +* Fixed CC for in-process console scenarios [#4084](https://github.com/microsoft/vstest/pull/4084) +* Fixed test session issues [#4075](https://github.com/microsoft/vstest/pull/4075) +* Fix Invalid target architecture 'S390x' error [#4066](https://github.com/microsoft/vstest/pull/4066) +* Add Mono.Cecil.Rocks [#4071](https://github.com/microsoft/vstest/pull/4071) +* Revert "Revert "Re-enable arm64 ngen (#3931)" (#3948)" [#3951](https://github.com/microsoft/vstest/pull/3951) +* Update docker to the latest tagging schema [#4041](https://github.com/microsoft/vstest/pull/4041) +* Update resources [#4063](https://github.com/microsoft/vstest/pull/4063) +* Use environment variables for AeDebugger mode [#4049](https://github.com/microsoft/vstest/pull/4049) +* Add postmortem blame mode [#4032](https://github.com/microsoft/vstest/pull/4032) +* Add VSTEST_DISABLE_THREADPOOL_SIZE_INCREASE feature flag [#4046](https://github.com/microsoft/vstest/pull/4046) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.5.0-preview-20221003-04...v17.5.0-preview-20221221-03) + +### Artifacts + +* TestPlatform vsix: [17.5.0-preview-20221221-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.5/20221221-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.5.0-preview-20221221-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.5.0-preview-20221221-03) + +## 17.4.1 + +### Issues Fixed + +* Fix satellite resolution for Microsoft.TestPlatform.Common [#4147](https://github.com/microsoft/vstest/pull/4147) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.4.0...v17.4.1) + +### Drops + +* TestPlatform vsix: [17.4.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.4/20221215-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.4.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.4.1) + +## 17.4.0 + +### Issues Fixed + +* Revert "Run tests with Server GC enabled & concurrent GC disabled. (#3661)" (#4108) [#4109](https://github.com/microsoft/vstest/pull/4109) +* Revert making Microsoft.NET.Test.Sdk package transitive [#4105](https://github.com/microsoft/vstest/pull/4105) +* [rel/17.4] Fix Invalid target architecture 'S390x' error [#4079](https://github.com/microsoft/vstest/pull/4079) +* Fix release note and prebuild scripts +* [rel/17.4] Remove portable CPP adapter and dbghelp [#4020](https://github.com/microsoft/vstest/pull/4020) +* Mirror test commit. +* Fix ManagedNameHelper to support namespaceless methods. [#4003](https://github.com/microsoft/vstest/pull/4003) +* Remove netstandard telemetry dependencies [#4007](https://github.com/microsoft/vstest/pull/4007) +* Playground project file refactored. [#4002](https://github.com/microsoft/vstest/pull/4002) +* Fixed wording for Github issue template [#3998](https://github.com/microsoft/vstest/pull/3998) +* Add more // to the console mode comment in playground to make it easier to uncomment. [#3999](https://github.com/microsoft/vstest/pull/3999) +* Fixed Selenium test run hang after stopping the debugger [#3995](https://github.com/microsoft/vstest/pull/3995) +* Enable usage of datacollectors in playground. [#3981](https://github.com/microsoft/vstest/pull/3981) +* Update azure-pipelines.yml +* Fixed common.lib.ps1 use correct dotnet on ARM64 devices. [#3986](https://github.com/microsoft/vstest/pull/3986) +* Fix pipeline build triggers. [#3988](https://github.com/microsoft/vstest/pull/3988) +* Fix variable name in common.lib.ps1 [#3985](https://github.com/microsoft/vstest/pull/3985) +* Add some polyfill to simplify code across compilations [#3974](https://github.com/microsoft/vstest/pull/3974) +* Update versions of diagnostics dependencies [#3976](https://github.com/microsoft/vstest/pull/3976) +* Refactor supported TFMs names [#3973](https://github.com/microsoft/vstest/pull/3973) +* Updated deprecated build VMs. [#3972](https://github.com/microsoft/vstest/pull/3972) +* Signing fixed. [#3971](https://github.com/microsoft/vstest/pull/3971) +* Fix signing verification script +* Updated build scripts to always install the latest dotnet patch. [#3968](https://github.com/microsoft/vstest/pull/3968) +* Localized file check-in by OneLocBuild Task: Build definition ID 2923: Build ID 6606255 [#3970](https://github.com/microsoft/vstest/pull/3970) +* Remove TargetLatestRuntimePatch properties [#3969](https://github.com/microsoft/vstest/pull/3969) +* Updated dotnet runtime versions. +* Add missing signing [#3964](https://github.com/microsoft/vstest/pull/3964) +* Added net7 support. [#3944](https://github.com/microsoft/vstest/pull/3944) +* Declare Newtonsoft.Json dependency for netstandard2.0 in Microsoft.Te… [#3962](https://github.com/microsoft/vstest/pull/3962) +* Make TraitCollection serializable in all supported TFMs [#3963](https://github.com/microsoft/vstest/pull/3963) +* Replace netstandard1.0 and netstandard1.3 with netstandard2.0 [#3921](https://github.com/microsoft/vstest/pull/3921) +* Fix stack overflow in FilterExpression.ValidForProperties [#3946](https://github.com/microsoft/vstest/pull/3946) +* Add process id to VSTEST_DUMP_PROCDUMPARGUMENTS usage for for BlameDataCollector [#3957](https://github.com/microsoft/vstest/pull/3957) +* Console logger splits path using directory and alt directory separators [#3923](https://github.com/microsoft/vstest/pull/3923) +* Do not match .NET Standard to Dotnet testhost runner [#3949](https://github.com/microsoft/vstest/pull/3949) +* Remove AllowMultiple on DirectoryBasedTestDiscovererAttribute. [#3953](https://github.com/microsoft/vstest/pull/3953) +* Revert "Re-enable arm64 ngen (#3931)" [#3948](https://github.com/microsoft/vstest/pull/3948) +* Re-enable arm64 ngen [#3931](https://github.com/microsoft/vstest/pull/3931) +* Support test discovery in sources that are directories [#3932](https://github.com/microsoft/vstest/pull/3932) +* Allow DotNetHostPath to contain env vars [#3858](https://github.com/microsoft/vstest/pull/3858) +* update fakes package version to include fix that prevents testhost from crashing [#3928](https://github.com/microsoft/vstest/pull/3928) +* Run tests with Server GC enabled & concurrent GC disabled. [#3661](https://github.com/microsoft/vstest/pull/3661) +* VS: move Solution Items folder out of scripts [#3919](https://github.com/microsoft/vstest/pull/3919) +* Set discovery batch size to 1000 [#3896](https://github.com/microsoft/vstest/pull/3896) +* Update Fakes packages [#3912](https://github.com/microsoft/vstest/pull/3912) +* Fix warnings on main (IDE only) [#3914](https://github.com/microsoft/vstest/pull/3914) +* Fix name of testhost folder in playground [#3917](https://github.com/microsoft/vstest/pull/3917) +* fixed paths duplicates [#3907](https://github.com/microsoft/vstest/pull/3907) +* Add some tests for AssemblyHelper [#3911](https://github.com/microsoft/vstest/pull/3911) +* Fix broken behaviour for AssemblyHelper [#3909](https://github.com/microsoft/vstest/pull/3909) +* Fix verification of signing [#3904](https://github.com/microsoft/vstest/pull/3904) +* Migrate FabricBot Tasks to Config-as-Code [#3823](https://github.com/microsoft/vstest/pull/3823) +* Removed unnecessary signing instruction. [#3903](https://github.com/microsoft/vstest/pull/3903) +* Fix some vulnerability [#3897](https://github.com/microsoft/vstest/pull/3897) +* Signing: Fix path to TestHost folders [#3902](https://github.com/microsoft/vstest/pull/3902) +* Move codebase to netcoreapp3.1 [#3861](https://github.com/microsoft/vstest/pull/3861) +* Update dotnet runtimes [#3901](https://github.com/microsoft/vstest/pull/3901) +* CC package update [#3881](https://github.com/microsoft/vstest/pull/3881) +* Use runtime 3.1.27 [#3900](https://github.com/microsoft/vstest/pull/3900) +* Added inproc wrapper friend [#3898](https://github.com/microsoft/vstest/pull/3898) +* Remove un-needed entries from sln [#3887](https://github.com/microsoft/vstest/pull/3887) +* Move MSTest1 back to Playground folder [#3885](https://github.com/microsoft/vstest/pull/3885) +* Build compatibility matrix tests faster [#3884](https://github.com/microsoft/vstest/pull/3884) +* Fixed review comments for PR #3728 [#3882](https://github.com/microsoft/vstest/pull/3882) +* Make Microsoft.NET.Test.Sdk package transitive [#3879](https://github.com/microsoft/vstest/pull/3879) +* Enable some design rules that could be interesting [#3875](https://github.com/microsoft/vstest/pull/3875) +* In-process vstest.console [#3728](https://github.com/microsoft/vstest/pull/3728) +* Globally exclude IDE1006 for vstest.ProgrammerTests namespace [#3872](https://github.com/microsoft/vstest/pull/3872) +* Fix warnings on main [#3870](https://github.com/microsoft/vstest/pull/3870) +* CA1051: Do not declare visible instance fields [#3859](https://github.com/microsoft/vstest/pull/3859) +* Fixed bugs in ManagedMethod parsing, and updated hierarchies. [#3704](https://github.com/microsoft/vstest/pull/3704) +* CA1001: Types that own disposable fields should be disposable [#3860](https://github.com/microsoft/vstest/pull/3860) +* CA1018: Mark attributes with AttributeUsageAttribute [#3865](https://github.com/microsoft/vstest/pull/3865) +* Disable IDE1006 on vstest namespace [#3866](https://github.com/microsoft/vstest/pull/3866) +* Fix concurrency access causing flakyness in the test [#3867](https://github.com/microsoft/vstest/pull/3867) +* Don't parallelize default platform tests [#3849](https://github.com/microsoft/vstest/pull/3849) +* Remove default architecture env variable [#3863](https://github.com/microsoft/vstest/pull/3863) +* Fix signing [#3864](https://github.com/microsoft/vstest/pull/3864) +* Cleanups post move to net462 [#3856](https://github.com/microsoft/vstest/pull/3856) +* IDE0060: Remove unused parameter [#3854](https://github.com/microsoft/vstest/pull/3854) +* Enforce use of correct dispose pattern [#3852](https://github.com/microsoft/vstest/pull/3852) +* Follow .NET lifecycle: update codebase to net462 [#3646](https://github.com/microsoft/vstest/pull/3646) +* CA1822: Mark members as static [#3853](https://github.com/microsoft/vstest/pull/3853) +* Fixed some security vulnerabilities. [#3851](https://github.com/microsoft/vstest/pull/3851) +* Increase ThreadPool.MinThreads limit [#3845](https://github.com/microsoft/vstest/pull/3845) +* Enable culture analyzer and fix issues [#3678](https://github.com/microsoft/vstest/pull/3678) +* Revert #3715 [#3843](https://github.com/microsoft/vstest/pull/3843) +* Enable more rules on test projects [#3832](https://github.com/microsoft/vstest/pull/3832) +* Ignore CancelTestDiscovery test as it is flaky [#3839](https://github.com/microsoft/vstest/pull/3839) +* Fix Newtonsoft.Json.dll 13.0.1 signature verification [#3835](https://github.com/microsoft/vstest/pull/3835) +* Bump to 17.4.0 [#3831](https://github.com/microsoft/vstest/pull/3831) +* Upgrade to Newtonsoft.Json 13.0.1 [#3815](https://github.com/microsoft/vstest/pull/3815) +* Enable CA1824 - Mark assemblies with NeutralResourcesLanguageAttribute [#3833](https://github.com/microsoft/vstest/pull/3833) +* Make test functions static when possible [#3830](https://github.com/microsoft/vstest/pull/3830) +* Fix unused using warning [#3828](https://github.com/microsoft/vstest/pull/3828) +* Remove unused msdia140typelib_clr0200.dll [#3822](https://github.com/microsoft/vstest/pull/3822) +* Enable nullables on all public API files [#3808](https://github.com/microsoft/vstest/pull/3808) +* Fix missing signature [#3796](https://github.com/microsoft/vstest/pull/3796) +* Version bumped to 17.4 [#3818](https://github.com/microsoft/vstest/pull/3818) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.2...v17.4.0) + +### Drops + +* TestPlatform vsix: [17.4.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20221107-04;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.4.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.4.0) + +## 17.5.0-preview-20221003-04 + +### Issues Fixed + +* Fix release note and prebuild scripts [#4039](https://github.com/microsoft/vstest/pull/4039) +* Update Fakes binaries [#4033](https://github.com/microsoft/vstest/pull/4033) +* Add support for ppc64le processor architecture [#4028](https://github.com/microsoft/vstest/pull/4028) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.4.0-preview-20220726-02...v17.5.0-preview-20221003-04) + +### Drops + +* TestPlatform vsix: [17.5.0-preview-20221003-04](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20221003-04;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.5.0-preview-20221003-04](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.5.0-preview-20221003-04) + +## 17.4.0-preview-20221003-03 + +### Issues Fixed + +* Fix release note and prebuild scripts +* [rel/17.4] Remove portable CPP adapter and dbghelp [#4020](https://github.com/microsoft/vstest/pull/4020) +* Fix ManagedNameHelper to support namespaceless methods. [#4003](https://github.com/microsoft/vstest/pull/4003) +* Remove netstandard telemetry dependencies [#4007](https://github.com/microsoft/vstest/pull/4007) +* Playground project file refactored. [#4002](https://github.com/microsoft/vstest/pull/4002) +* Fixed wording for Github issue template [#3998](https://github.com/microsoft/vstest/pull/3998) +* Add more // to the console mode comment in playground to make it easier to uncomment. [#3999](https://github.com/microsoft/vstest/pull/3999) +* Fixed Selenium test run hang after stopping the debugger [#3995](https://github.com/microsoft/vstest/pull/3995) +* Enable usage of datacollectors in playground. [#3981](https://github.com/microsoft/vstest/pull/3981) +* Update azure-pipelines.yml +* Fixed common.lib.ps1 use correct dotnet on ARM64 devices. [#3986](https://github.com/microsoft/vstest/pull/3986) +* Fix pipeline build triggers. [#3988](https://github.com/microsoft/vstest/pull/3988) +* Fix variable name in common.lib.ps1 [#3985](https://github.com/microsoft/vstest/pull/3985) +* Add some polyfill to simplify code across compilations [#3974](https://github.com/microsoft/vstest/pull/3974) +* Update versions of diagnostics dependencies [#3976](https://github.com/microsoft/vstest/pull/3976) +* Refactor supported TFMs names [#3973](https://github.com/microsoft/vstest/pull/3973) +* Updated deprecated build VMs. [#3972](https://github.com/microsoft/vstest/pull/3972) +* Signing fixed. [#3971](https://github.com/microsoft/vstest/pull/3971) +* Fix signing verification script +* Updated build scripts to always install the latest dotnet patch. [#3968](https://github.com/microsoft/vstest/pull/3968) +* Remove TargetLatestRuntimePatch properties [#3969](https://github.com/microsoft/vstest/pull/3969) +* Updated dotnet runtime versions. +* Add missing signing [#3964](https://github.com/microsoft/vstest/pull/3964) +* Added net7 support. [#3944](https://github.com/microsoft/vstest/pull/3944) +* Declare Newtonsoft.Json dependency for netstandard2.0 in Microsoft.Te… [#3962](https://github.com/microsoft/vstest/pull/3962) +* Make TraitCollection serializable in all supported TFMs [#3963](https://github.com/microsoft/vstest/pull/3963) +* Replace netstandard1.0 and netstandard1.3 with netstandard2.0 [#3921](https://github.com/microsoft/vstest/pull/3921) +* Fix stack overflow in FilterExpression.ValidForProperties [#3946](https://github.com/microsoft/vstest/pull/3946) +* Add process id to VSTEST_DUMP_PROCDUMPARGUMENTS usage for for BlameDataCollector [#3957](https://github.com/microsoft/vstest/pull/3957) +* Console logger splits path using directory and alt directory separators [#3923](https://github.com/microsoft/vstest/pull/3923) +* Localized file check-in by OneLocBuild Task: Build definition ID 2923: Build ID 6589224 [#3954](https://github.com/microsoft/vstest/pull/3954) +* Do not match .NET Standard to Dotnet testhost runner [#3949](https://github.com/microsoft/vstest/pull/3949) +* Remove AllowMultiple on DirectoryBasedTestDiscovererAttribute. [#3953](https://github.com/microsoft/vstest/pull/3953) +* Revert "Re-enable arm64 ngen (#3931)" [#3948](https://github.com/microsoft/vstest/pull/3948) +* Re-enable arm64 ngen [#3931](https://github.com/microsoft/vstest/pull/3931) +* Support test discovery in sources that are directories [#3932](https://github.com/microsoft/vstest/pull/3932) +* Allow DotNetHostPath to contain env vars [#3858](https://github.com/microsoft/vstest/pull/3858) +* update fakes package version to include fix that prevents testhost from crashing [#3928](https://github.com/microsoft/vstest/pull/3928) +* Run tests with Server GC enabled & concurrent GC disabled. [#3661](https://github.com/microsoft/vstest/pull/3661) +* VS: move Solution Items folder out of scripts [#3919](https://github.com/microsoft/vstest/pull/3919) +* Set discovery batch size to 1000 [#3896](https://github.com/microsoft/vstest/pull/3896) +* Update Fakes packages [#3912](https://github.com/microsoft/vstest/pull/3912) +* Fix warnings on main (IDE only) [#3914](https://github.com/microsoft/vstest/pull/3914) +* Fix name of testhost folder in playground [#3917](https://github.com/microsoft/vstest/pull/3917) +* fixed paths duplicates [#3907](https://github.com/microsoft/vstest/pull/3907) +* Add some tests for AssemblyHelper [#3911](https://github.com/microsoft/vstest/pull/3911) +* Fix broken behaviour for AssemblyHelper [#3909](https://github.com/microsoft/vstest/pull/3909) +* Fix verification of signing [#3904](https://github.com/microsoft/vstest/pull/3904) +* Migrate FabricBot Tasks to Config-as-Code [#3823](https://github.com/microsoft/vstest/pull/3823) +* Removed unnecessary signing instruction. [#3903](https://github.com/microsoft/vstest/pull/3903) +* Fix some vulnerability [#3897](https://github.com/microsoft/vstest/pull/3897) +* Signing: Fix path to TestHost folders [#3902](https://github.com/microsoft/vstest/pull/3902) +* Move codebase to netcoreapp3.1 [#3861](https://github.com/microsoft/vstest/pull/3861) +* Update dotnet runtimes [#3901](https://github.com/microsoft/vstest/pull/3901) +* CC package update [#3881](https://github.com/microsoft/vstest/pull/3881) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.4.0-preview-20220726-02...v17.4.0-preview-20221003-03) + +### Drops + +* TestPlatform vsix: [17.4.0-preview-20221003-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.4/20221003-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.4.0-preview-20221003-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.4.0-preview-20221003-03) + +## 17.3.2 + +### Issue Fixed + +* Fixed Selenium test run hang after stopping the debugger [#4013](https://github.com/microsoft/vstest/pull/4013) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.1...v17.3.2) + +### Drops + +* TestPlatform vsix: [17.3.2](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.3/20220919-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.2](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.2) + +## 17.3.1 + +### Issues Fixed + +* Do not match .NET Standard to Dotnet testhost runner [#3958](https://github.com/microsoft/vstest/pull/3958) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.0...v17.3.1) + +### Drops + +* TestPlatform vsix: [17.3.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.3/20220829-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.1) + +## 17.3.0 + +### Issue Fixed + +* Reverts change that breaks DOTNET_ROOT [#3844](https://github.com/microsoft/vstest/pull/3844) +* Add runtime location to host log [#3806](https://github.com/microsoft/vstest/pull/3806) +* Fix reading/setting culture env variables [#3802](https://github.com/microsoft/vstest/pull/3802) +* Enable nullable on missed files [#3801](https://github.com/microsoft/vstest/pull/3801) +* Enable nullable on ObjectModel [#3793](https://github.com/microsoft/vstest/pull/3793) +* Add missing nullable [#3795](https://github.com/microsoft/vstest/pull/3795) +* Improve how to retrieve process ID [#3794](https://github.com/microsoft/vstest/pull/3794) +* Enable nullables on common [#3790](https://github.com/microsoft/vstest/pull/3790) +* Fix race condition issues on stream access on LengthPrefixCommunicatiΓǪ [#3789](https://github.com/microsoft/vstest/pull/3789) +* Enable nullables on CrossPlatEngine [#3779](https://github.com/microsoft/vstest/pull/3779) +* Enable nullable on VS Translation layer [#3781](https://github.com/microsoft/vstest/pull/3781) +* Enable missed nullables on already handled projects [#3773](https://github.com/microsoft/vstest/pull/3773) +* Add background option for testhosts [#3772](https://github.com/microsoft/vstest/pull/3772) +* Pass sources, to fix native debug [#3777](https://github.com/microsoft/vstest/pull/3777) +* Temporary disable ngen for arm64 binaries [#3765](https://github.com/microsoft/vstest/pull/3765) +* Add default platform option to runsettings [#3770](https://github.com/microsoft/vstest/pull/3770) +* Support arm64 native CppUnitTestFramework with `dotnet test` [#3768](https://github.com/microsoft/vstest/pull/3768) +* Reduce usage of bang + reduce usage of throw/catch [#3771](https://github.com/microsoft/vstest/pull/3771) +* Fix warnings and failed assertions [#3767](https://github.com/microsoft/vstest/pull/3767) +* Enable nullable on Communication utilities [#3758](https://github.com/microsoft/vstest/pull/3758) +* Add default VS settings to playground [#3756](https://github.com/microsoft/vstest/pull/3756) +* Skip sources when runtime provider is not found [#3760](https://github.com/microsoft/vstest/pull/3760) +* Fix loop on TPDebug.Assert [#3764](https://github.com/microsoft/vstest/pull/3764) +* Remove backup project that should not have been checked in [#3763](https://github.com/microsoft/vstest/pull/3763) +* Enable nullables on acceptance tests [#3757](https://github.com/microsoft/vstest/pull/3757) +* Enable nullables on TRX logger [#3754](https://github.com/microsoft/vstest/pull/3754) +* Enable nullables on CoreUtilities [#3751](https://github.com/microsoft/vstest/pull/3751) +* Fix failing assertions on tests [#3761](https://github.com/microsoft/vstest/pull/3761) +* Get PlatformAbstractions from ObjectModel [#3722](https://github.com/microsoft/vstest/pull/3722) +* Fix nullable conflict [#3753](https://github.com/microsoft/vstest/pull/3753) +* Remove missed #nullable disable [#3741](https://github.com/microsoft/vstest/pull/3741) +* Fix which value is used in platform warning [#3752](https://github.com/microsoft/vstest/pull/3752) +* Experimental feature: enable negative values of MaxCpuCount to match a percentage of number of cores [#3748](https://github.com/microsoft/vstest/pull/3748) +* Enable nullables on SettingsMigrator [#3744](https://github.com/microsoft/vstest/pull/3744) +* Enable nullables on TestHostProvider [#3738](https://github.com/microsoft/vstest/pull/3738) +* Update MSTest and VSTest versions [#3663](https://github.com/microsoft/vstest/pull/3663) +* Fix DOTNET_ROOT env var for .NET 6.0+ [#3715](https://github.com/microsoft/vstest/pull/3715) +* Enable nullables on TestPlatform.Client [#3745](https://github.com/microsoft/vstest/pull/3745) +* Add env var to control host priority [#3740](https://github.com/microsoft/vstest/pull/3740) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.0-preview-20220612-01...v17.3.0) + +### Drops + +* TestPlatform vsix: [17.3.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.3/20220809-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.0) + +## 17.4.0-preview-20220726-02 + +### Issue Fixed + +* Use runtime 3.1.27 [#3900](https://github.com/microsoft/vstest/pull/3900) +* Remove un-needed entries from sln [#3887](https://github.com/microsoft/vstest/pull/3887) +* Build compatibility matrix tests faster [#3884](https://github.com/microsoft/vstest/pull/3884) +* Make Microsoft.NET.Test.Sdk package transitive [#3879](https://github.com/microsoft/vstest/pull/3879) +* In-process vstest.console [#3728](https://github.com/microsoft/vstest/pull/3728) +* Fix warnings on main [#3870](https://github.com/microsoft/vstest/pull/3870) +* Fixed bugs in ManagedMethod parsing, and updated hierarchies. [#3704](https://github.com/microsoft/vstest/pull/3704) +* Remove default architecture env variable [#3863](https://github.com/microsoft/vstest/pull/3863) +* Enforce use of correct dispose pattern [#3852](https://github.com/microsoft/vstest/pull/3852) +* Follow .NET lifecycle: update codebase to net462 [#3646](https://github.com/microsoft/vstest/pull/3646) +* Fixed some security vulnerabilities. [#3851](https://github.com/microsoft/vstest/pull/3851) +* Increase ThreadPool.MinThreads limit [#3845](https://github.com/microsoft/vstest/pull/3845) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.4.0-preview-20220707-01...v17.4.0-preview-20220726-02) + +### Drops + +* TestPlatform vsix: [17.4.0-preview-20220726-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220726-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.4.0-preview-20220726-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.4.0-preview-20220726-02) + +## 17.4.0-preview-20220707-01 + +### Issue Fixed + +* Revert #3715 [#3843](https://github.com/microsoft/vstest/pull/3843) +* Enable more rules on test projects [#3832](https://github.com/microsoft/vstest/pull/3832) +* Ignore CancelTestDiscovery test as it is flaky [#3839](https://github.com/microsoft/vstest/pull/3839) +* Fix Newtonsoft.Json.dll 13.0.1 signature verification [#3835](https://github.com/microsoft/vstest/pull/3835) +* Bump to 17.4.0 [#3831](https://github.com/microsoft/vstest/pull/3831) +* Upgrade to Newtonsoft.Json 13.0.1 [#3815](https://github.com/microsoft/vstest/pull/3815) +* Enable CA1824 - Mark assemblies with NeutralResourcesLanguageAttribute [#3833](https://github.com/microsoft/vstest/pull/3833) +* Make test functions static when possible [#3830](https://github.com/microsoft/vstest/pull/3830) +* Fix unused using warning [#3828](https://github.com/microsoft/vstest/pull/3828) +* Remove unused msdia140typelib_clr0200.dll [#3822](https://github.com/microsoft/vstest/pull/3822) +* Enable nullables on all public API files [#3808](https://github.com/microsoft/vstest/pull/3808) +* Fix missing signature [#3796](https://github.com/microsoft/vstest/pull/3796) +* Version bumped to 17.4 [#3818](https://github.com/microsoft/vstest/pull/3818) +* Add runtime location to host log [#3806](https://github.com/microsoft/vstest/pull/3806) +* Fix reading/setting culture env variables [#3802](https://github.com/microsoft/vstest/pull/3802) +* Enable nullable on missed files [#3801](https://github.com/microsoft/vstest/pull/3801) +* Enable nullable on ObjectModel [#3793](https://github.com/microsoft/vstest/pull/3793) +* Add missing nullable [#3795](https://github.com/microsoft/vstest/pull/3795) +* Improve how to retrieve process ID [#3794](https://github.com/microsoft/vstest/pull/3794) +* Enable nullables on common [#3790](https://github.com/microsoft/vstest/pull/3790) +* Fix race condition issues on stream access on LengthPrefixCommunicati??? [#3789](https://github.com/microsoft/vstest/pull/3789) +* Enable nullables on CrossPlatEngine [#3779](https://github.com/microsoft/vstest/pull/3779) +* Enable nullable on VS Translation layer [#3781](https://github.com/microsoft/vstest/pull/3781) +* Enable missed nullables on already handled projects [#3773](https://github.com/microsoft/vstest/pull/3773) +* Add background option for testhosts [#3772](https://github.com/microsoft/vstest/pull/3772) +* Pass sources, to fix native debug [#3777](https://github.com/microsoft/vstest/pull/3777) +* Temporary disable ngen for arm64 binaries [#3765](https://github.com/microsoft/vstest/pull/3765) +* Add default platform option to runsettings [#3770](https://github.com/microsoft/vstest/pull/3770) +* Support arm64 native CppUnitTestFramework with `dotnet test` [#3768](https://github.com/microsoft/vstest/pull/3768) +* Reduce usage of bang + reduce usage of throw/catch [#3771](https://github.com/microsoft/vstest/pull/3771) +* Fix warnings and failed assertions [#3767](https://github.com/microsoft/vstest/pull/3767) +* Enable nullable on Communication utilities [#3758](https://github.com/microsoft/vstest/pull/3758) +* Add default VS settings to playground [#3756](https://github.com/microsoft/vstest/pull/3756) +* Skip sources when runtime provider is not found [#3760](https://github.com/microsoft/vstest/pull/3760) +* Fix loop on TPDebug.Assert [#3764](https://github.com/microsoft/vstest/pull/3764) +* Remove backup project that should not have been checked in [#3763](https://github.com/microsoft/vstest/pull/3763) +* Enable nullables on acceptance tests [#3757](https://github.com/microsoft/vstest/pull/3757) +* Enable nullables on TRX logger [#3754](https://github.com/microsoft/vstest/pull/3754) +* Enable nullables on CoreUtilities [#3751](https://github.com/microsoft/vstest/pull/3751) +* Fix failing assertions on tests [#3761](https://github.com/microsoft/vstest/pull/3761) +* Get PlatformAbstractions from ObjectModel [#3722](https://github.com/microsoft/vstest/pull/3722) +* Fix nullable conflict [#3753](https://github.com/microsoft/vstest/pull/3753) +* Remove missed #nullable disable [#3741](https://github.com/microsoft/vstest/pull/3741) +* Fix which value is used in platform warning [#3752](https://github.com/microsoft/vstest/pull/3752) +* Experimental feature: enable negative values of MaxCpuCount to match a percentage of number of cores [#3748](https://github.com/microsoft/vstest/pull/3748) +* Enable nullables on SettingsMigrator [#3744](https://github.com/microsoft/vstest/pull/3744) +* Enable nullables on TestHostProvider [#3738](https://github.com/microsoft/vstest/pull/3738) +* Update MSTest and VSTest versions [#3663](https://github.com/microsoft/vstest/pull/3663) +* Fix DOTNET_ROOT env var for .NET 6.0+ [#3715](https://github.com/microsoft/vstest/pull/3715) +* Enable nullables on TestPlatform.Client [#3745](https://github.com/microsoft/vstest/pull/3745) +* Add env var to control host priority [#3740](https://github.com/microsoft/vstest/pull/3740) + +See full log [here](https://github.com/microsoft/vstest/compare/f6b89cfcace13f8ac0e994af9dbe7f9a7438e958...v17.4.0-preview-20220707-01) + +### Drops + +* TestPlatform vsix: [17.4.0-preview-20220707-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220707-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.4.0-preview-20220707-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.4.0-preview-20220707-01) + +## 17.3.0-preview-20220612-01 + +### Issue Fixed + +* Fix logging setup when running in remote [#3643](https://github.com/microsoft/vstest/pull/3643) +* Fix get process architecture [#3726](https://github.com/microsoft/vstest/pull/3726) +* Enable nullables on Abstraction project [#3723](https://github.com/microsoft/vstest/pull/3723) +* Enable nullables on TP Build project [#3719](https://github.com/microsoft/vstest/pull/3719) +* Add target framework information to the AttachDebugger callback [#3701](https://github.com/microsoft/vstest/pull/3701) +* Enable nullable on BlameDataCollector [#3713](https://github.com/microsoft/vstest/pull/3713) +* Enable nullable on HtmlLogger [#3712](https://github.com/microsoft/vstest/pull/3712) +* Update framework detection logic to not rely on throwing/catching NRE [#3714](https://github.com/microsoft/vstest/pull/3714) +* Enable nullable on TP utilities [#3700](https://github.com/microsoft/vstest/pull/3700) +* Enable nullable on vstest.console [#3694](https://github.com/microsoft/vstest/pull/3694) +* Minor optimizations [#3687](https://github.com/microsoft/vstest/pull/3687) +* Using "\." instead of "." as it is not a valid regex [#3708](https://github.com/microsoft/vstest/pull/3708) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.0-preview-20220530-08...v17.3.0-preview-20220612-01) + +### Drops + +* TestPlatform vsix: [17.3.0-preview-20220612-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220612-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.0-preview-20220612-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.0-preview-20220612-01) + +## 17.3.0-preview-20220530-08 + +### Issue Fixed + +* Fix CppUnitTestFramework package layout [#3695](https://github.com/microsoft/vstest/pull/3695) +* Share files instead of duplicating them [#3692](https://github.com/microsoft/vstest/pull/3692) +* Enable nullable on adapter utilities [#3688](https://github.com/microsoft/vstest/pull/3688) +* Allow sharing testhosts for non-paralell runs on a Shared testhost [#3682](https://github.com/microsoft/vstest/pull/3682) +* Fix same file access exception in htmlLogger [#3373](https://github.com/microsoft/vstest/pull/3373) +* Perform file roll only occasionally when file is locked [#3684](https://github.com/microsoft/vstest/pull/3684) +* Enable nullable for EventLogCollector [#3674](https://github.com/microsoft/vstest/pull/3674) +* Fixed telemetry data sharing exception [#3676](https://github.com/microsoft/vstest/pull/3676) +* Enable nullable on AttachVS [#3671](https://github.com/microsoft/vstest/pull/3671) +* Enable nullable for datacollector [#3670](https://github.com/microsoft/vstest/pull/3670) +* Fix CUIT test [#3673](https://github.com/microsoft/vstest/pull/3673) +* Fix NRE when coverage merge tool is not found [#3665](https://github.com/microsoft/vstest/pull/3665) +* Run multiple target frameworks and architectures in single vstest.console [#3412](https://github.com/microsoft/vstest/pull/3412) +* Fix NgenArchitecture [#3651](https://github.com/microsoft/vstest/pull/3651) +* Fix missing attachement processor [#3644](https://github.com/microsoft/vstest/pull/3644) +* Added null checks for GetCachedExtensions call [#3639](https://github.com/microsoft/vstest/pull/3639) +* Fix more issues with parallel discovery and cancellation [#3605](https://github.com/microsoft/vstest/pull/3605) +* Better deserialization and serialization performance [#3608](https://github.com/microsoft/vstest/pull/3608) +* Refined runsettings matching criteria for test sessions [#3610](https://github.com/microsoft/vstest/pull/3610) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.3.0-preview-20220426-02...v17.3.0-preview-20220530-08) + +### Drops + +* TestPlatform vsix: [17.3.0-preview-20220530-08](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220530-08;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.0-preview-20220530-08](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.0-preview-20220530-08) + +## 17.3.0-preview-20220426-02 + +### Issue Fixed + +* Collect artifacts in case of test abort/cancelled [#3606](https://github.com/microsoft/vstest/pull/3606) +* Use most recent stable version of Microsoft.CodeCoverage for unit tests [#3601](https://github.com/microsoft/vstest/pull/3601) +* Patched CVE-2017-11770 and CVE-2019-0981 [#3578](https://github.com/microsoft/vstest/pull/3578) +* Fixed assembly loading in Explicit mode. [#3570](https://github.com/microsoft/vstest/pull/3570) +* Make vstest.console, and datacollector upgrade across major .NET version [#3561](https://github.com/microsoft/vstest/pull/3561) +* Fix parallel discovery [#3437](https://github.com/microsoft/vstest/pull/3437) +* Remove CC from vsix [#3546](https://github.com/microsoft/vstest/pull/3546) +* Bundle arm64 managed code coverage support [#3547](https://github.com/microsoft/vstest/pull/3547) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.2.0-preview-20220401-08...v17.3.0-preview-20220426-02) + +### Drops + +* TestPlatform vsix: [17.3.0-preview-20220426-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220426-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.3.0-preview-20220426-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.3.0-preview-20220426-02) + +## 17.2.0 + +See full log [here](https://github.com/microsoft/vstest/compare/v17.2.0-preview-20220401-07...v17.2.0) + +### Drops + +* TestPlatform vsix: [17.2.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.2/20220510-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.2.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.2.0) + +## 17.2.0-preview-20220401-08 + +### Issue Fixed + +* Add packing to PR build [#3540](https://github.com/microsoft/vstest/pull/3540) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.2.0-preview-20220401-08...v17.2.0-preview-20220401-07) + +### Drops + +* TestPlatform vsix: [17.2.0-preview-20220401-08](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220401-08;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.2.0-preview-20220401-08](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.2.0-preview-20220401-08) + +## v17.2.0-preview-20220401-07 + +### Issue Fixed + +* Added telemetry data point for extensions loaded during test discovery/run [#3511](https://github.com/microsoft/vstest/pull/3511) +* Catch all exceptions when exiting process [#3530](https://github.com/microsoft/vstest/pull/3530) +* Test matrix [#3459](https://github.com/microsoft/vstest/pull/3459) +* Make Cancel Discovery faster and more reliable [#3527](https://github.com/microsoft/vstest/pull/3527) +* Fix remote testhost [#3492](https://github.com/microsoft/vstest/pull/3492) +* Fix feature flag name [#3483](https://github.com/microsoft/vstest/pull/3483) +* Add parity for AnyCPU containers between .NET Core and .NET FX, add banner with architecture and warning if running emulated(all on win arm64) [#3481](https://github.com/microsoft/vstest/pull/3481) +* Update feature flag logic to disable only semantics [#3479](https://github.com/microsoft/vstest/pull/3479) +* Allows to override shutdown timeout [#3466](https://github.com/microsoft/vstest/pull/3466) +* Support reading embedded pdbs [#3454](https://github.com/microsoft/vstest/pull/3454) +* Update nuspec project target frameworks for source-build [#3285](https://github.com/microsoft/vstest/pull/3285) +* Run DataCollectorAttachmentsProcessors inside custom AppDomain [#3434](https://github.com/microsoft/vstest/pull/3434) +* Newer approach to reference assemblies on MacOS and Linux [#3448](https://github.com/microsoft/vstest/pull/3448) +* CA1840: Use 'Environment.CurrentManagedThreadId' [#3440](https://github.com/microsoft/vstest/pull/3440) +* Patched CVE-2019-0657. [#3436](https://github.com/microsoft/vstest/pull/3436) +* Made telemetry data constants true constants [#3416](https://github.com/microsoft/vstest/pull/3416) +* Add a zero-width space after test name in HTML results [#3423](https://github.com/microsoft/vstest/pull/3423) +* Temporary disable full post processing in design mode [#3429](https://github.com/microsoft/vstest/pull/3429) +* Build vstest.console.arm64.exe and fix process architecture retrieval [#3422](https://github.com/microsoft/vstest/pull/3422) +* Fix multi tfm project tests [#3425](https://github.com/microsoft/vstest/pull/3425) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.2.0-preview-20220401-07...v17.2.0-preview-20220301-01) + +### Drops + +* TestPlatform vsix: [17.2.0-preview-20220401-07](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220401-07;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.2.0-preview-20220401-07](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.2.0-preview-20220401-07) + +## 17.2.0-preview-20220301-01 + +### Issue Fixed + +* Handle correctly waiting for process exit on Unix systems [#3410](https://github.com/microsoft/vstest/pull/3410) +* Move usings outside namespace [#3398](https://github.com/microsoft/vstest/pull/3398) +* Prefer string alias over String type [#3408](https://github.com/microsoft/vstest/pull/3408) +* Use null-coalesce assignment [#3405](https://github.com/microsoft/vstest/pull/3405) +* Added telemetry codeowners [#3403](https://github.com/microsoft/vstest/pull/3403) +* Map incoming and outgoing requests [#3314](https://github.com/microsoft/vstest/pull/3314) +* Use fakes to surround vstest core and test it [#3347](https://github.com/microsoft/vstest/pull/3347) +* Fix more IDE warnings [#3388](https://github.com/microsoft/vstest/pull/3388) +* Remember to keep in sync SDK feature flags [#3393](https://github.com/microsoft/vstest/pull/3393) +* Fix FeatureFlag singleton implementation [#3389](https://github.com/microsoft/vstest/pull/3389) +* Localized file check-in by OneLocBuild Task: Build definition ID 2923: Build ID 5773266 [#3386](https://github.com/microsoft/vstest/pull/3386) +* Test adapter loading strategy [#3380](https://github.com/microsoft/vstest/pull/3380) +* Enable parallel discovery [#3349](https://github.com/microsoft/vstest/pull/3349) +* Enable post processing [#3384](https://github.com/microsoft/vstest/pull/3384) +* add post processing intergration test [#3377](https://github.com/microsoft/vstest/pull/3377) +* Add ARM64 .NET Framework testhost [#3370](https://github.com/microsoft/vstest/pull/3370) +* Remove architecture validation [#3371](https://github.com/microsoft/vstest/pull/3371) +* Add ci switch for Windows and Windows-Acceptance [#3372](https://github.com/microsoft/vstest/pull/3372) +* Revert part of "Remove regions (#3366)" [#3369](https://github.com/microsoft/vstest/pull/3369) +* Remove regions [#3366](https://github.com/microsoft/vstest/pull/3366) +* Add unit tests for the artifact post processing [#3352](https://github.com/microsoft/vstest/pull/3352) +* Update version of VS sdk build tools [#3344](https://github.com/microsoft/vstest/pull/3344) +* Use !! null check [#3341](https://github.com/microsoft/vstest/pull/3341) +* Enable nullable on new files for all projects [#3359](https://github.com/microsoft/vstest/pull/3359) +* Enable more rules [#3345](https://github.com/microsoft/vstest/pull/3345) +* Enable pattern code style [#3358](https://github.com/microsoft/vstest/pull/3358) +* Enable even more rules [#3356](https://github.com/microsoft/vstest/pull/3356) +* Fixed conditional expression [#3355](https://github.com/microsoft/vstest/pull/3355) +* Telemetry improvements [#3340](https://github.com/microsoft/vstest/pull/3340) +* Simplify calls to EqtTrace logger [#3351](https://github.com/microsoft/vstest/pull/3351) +* Implement the post processing extension feature [#3324](https://github.com/microsoft/vstest/pull/3324) +* Add ionide exclusions to gitignore [#3336](https://github.com/microsoft/vstest/pull/3336) +* Enable TreatWarningsAsErrors only on CI [#3335](https://github.com/microsoft/vstest/pull/3335) +* Fix failfast [#3327](https://github.com/microsoft/vstest/pull/3327) +* Fix red [#3325](https://github.com/microsoft/vstest/pull/3325) +* Update git blame [#3326](https://github.com/microsoft/vstest/pull/3326) +* Run dotnet format whitespace [#3307](https://github.com/microsoft/vstest/pull/3307) +* Suppress assembly architecture, assembly conflict and restore warnings [#3323](https://github.com/microsoft/vstest/pull/3323) +* Make property readonly when possible [#3320](https://github.com/microsoft/vstest/pull/3320) +* Log callbacks to delegates better [#3283](https://github.com/microsoft/vstest/pull/3283) +* Fix OperationCanceledException handling for the TestRunAttachmentsProcessingManager [#3319](https://github.com/microsoft/vstest/pull/3319) +* Fix serialization issue with TestRunSettings [#3317](https://github.com/microsoft/vstest/pull/3317) +* Fallback to loaded assembly if load file fails during the extension discovery v2 [#3315](https://github.com/microsoft/vstest/pull/3315) +* Stabilize unit test [#3311](https://github.com/microsoft/vstest/pull/3311) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.2.0-preview-20220301-01...v17.2.0-preview-20220131-20) + +### Drops + +* TestPlatform vsix: [17.2.0-preview-20220301-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220301-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.2.0-preview-20220301-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.2.0-preview-20220301-01) + +## 17.1.0 + +### Issues Fixed + +* Added support for TestAdapterLoadingStrategy. [#3374](https://github.com/microsoft/vstest/pull/3374) +* Fix architecture retrival [#3251](https://github.com/microsoft/vstest/pull/3251) +* External dependencies updated [#3204](https://github.com/microsoft/vstest/pull/3204) +* Fixing .net frmw parallel issue [#3192](https://github.com/microsoft/vstest/pull/3192) +* Testhost sharing between discovery & execution [#2687](https://github.com/microsoft/vstest/pull/2687) +* Cleanup tmp code for the --arch feature [#3174](https://github.com/microsoft/vstest/pull/3174) +* Make older uwp work [#3166](https://github.com/microsoft/vstest/pull/3166) +* Enable code coverage when "Code Coverage;arg1=val1;arg2=val2" is provided in cli [#3172](https://github.com/microsoft/vstest/pull/3172) +* Remove TargetPlatform before start test host [#3170](https://github.com/microsoft/vstest/pull/3170) +* Adding elements to code coverage config passed via commandline, [#3162](https://github.com/microsoft/vstest/pull/3162)* Aggregate api files [#3165](https://github.com/microsoft/vstest/pull/3165) +* Fix GenerateProgramFile [#3163](https://github.com/microsoft/vstest/pull/3163) +* Move new enum into public api [#3157](https://github.com/microsoft/vstest/pull/3157) +* Included UAP10.0 version of Microsoft.VisualStudio.TestPlatform.ObjectModel.dll for signing. [#3160](https://github.com/microsoft/vstest/pull/3160) +* Add package with UWP dependencies for UWP runner [#3133](https://github.com/microsoft/vstest/pull/3133) +* Honor `--arch` switch for arm64 on Windows and Mac [#3100](https://github.com/microsoft/vstest/pull/3100) +* Don't publish for win runtime identifier in source-build [#3096](https://github.com/microsoft/vstest/pull/3096) +* CPP runner under .NET (Core) [#3003](https://github.com/microsoft/vstest/pull/3003) +* Updating SDK versions [#3083](https://github.com/microsoft/vstest/pull/3083) +* Upgrade nuget packages to fix security issues [#3072](https://github.com/microsoft/vstest/pull/3072) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.0.0...v17.1.0) + +### Drops + +* TestPlatform vsix: [17.1.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.1/20220216-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.1.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.1.0) + +## 17.2.0-preview-20220131-20 + +### Issues Fixed + +* Removed system-wide PDB purge to make build faster [#3310](https://github.com/microsoft/vstest/pull/3310) +* Test stabilization, increase waiting time for report events [#3309](https://github.com/microsoft/vstest/pull/3309) +* Use longer timeout for playground project [#3301](https://github.com/microsoft/vstest/pull/3301) +* Remove stylecop files [#3308](https://github.com/microsoft/vstest/pull/3308) +* Enable some rules with no impact on public API [#3299](https://github.com/microsoft/vstest/pull/3299) +* Fix race condition inside DataCollectionAttachmentManager [#3296](https://github.com/microsoft/vstest/pull/3296) +* Remove unused properties and solution files [#3295](https://github.com/microsoft/vstest/pull/3295) +* Ignore project and build script re-format in blame [#3297](https://github.com/microsoft/vstest/pull/3297) +* Reformat projects and script files [#3290](https://github.com/microsoft/vstest/pull/3290) +* Recognize AnyCPU in case of fallback to PEReader [#3287](https://github.com/microsoft/vstest/pull/3287) +* Add Architecture.S390x [#3289](https://github.com/microsoft/vstest/pull/3289) +* Migrating to 1ES Hosted Pools [#3278](https://github.com/microsoft/vstest/pull/3278) +* Remove formatting changes from git blame [#3288](https://github.com/microsoft/vstest/pull/3288) +* Medium and low level vulnerabilities patched [#3286](https://github.com/microsoft/vstest/pull/3286) +* Apply modern code styles [#3264](https://github.com/microsoft/vstest/pull/3264) +* Add diag log env variable [#3275](https://github.com/microsoft/vstest/pull/3275) +* Fix encoding when writing updated dependencies in build [#3277](https://github.com/microsoft/vstest/pull/3277) +* Enable parallelization of acceptance tests [#3268](https://github.com/microsoft/vstest/pull/3268) +* Fix some typos in codebase [#3262](https://github.com/microsoft/vstest/pull/3262) +* Logs improvement [#3271](https://github.com/microsoft/vstest/pull/3271) +* Skip attachment processor if doesn't support incremental processing [#3270](https://github.com/microsoft/vstest/pull/3270) +* Fix change done in commit a223146b8c3d5dbbf7bae49149aed762560434c4 [#3258](https://github.com/microsoft/vstest/pull/3258) +* Improve logging for the architecture switch feature [#3265](https://github.com/microsoft/vstest/pull/3265) +* Improve the cache of the extension framework [#3261](https://github.com/microsoft/vstest/pull/3261) +* Improve error logging for VS output [#3260](https://github.com/microsoft/vstest/pull/3260) +* Ensure the Public API analyzer gets installed only for src projects [#3256](https://github.com/microsoft/vstest/pull/3256) +* Architecture test improvement [#3254](https://github.com/microsoft/vstest/pull/3254) +* Update system.net.http to 4.3.2 for uap10 [#3249](https://github.com/microsoft/vstest/pull/3249) +* Add tests for architecture switch feature [#3253](https://github.com/microsoft/vstest/pull/3253) +* Fixed manifest publishing [#3246](https://github.com/microsoft/vstest/pull/3246) +* Fix architecture retrival [#3250](https://github.com/microsoft/vstest/pull/3250) +* Complete the attachment processors extension [#3161](https://github.com/microsoft/vstest/pull/3161) +* Use the ToString format specifier rather than the Replace method [#3242](https://github.com/microsoft/vstest/pull/3242) +* Fixed manifest publishing +* Use stable channel for dotnet 6 installation [#3243](https://github.com/microsoft/vstest/pull/3243) +* Check exitcodes in build script [#3236](https://github.com/microsoft/vstest/pull/3236) +* improve attachvs output [#3230](https://github.com/microsoft/vstest/pull/3230) +* Add playground project [#3200](https://github.com/microsoft/vstest/pull/3200) +* Bump private dotnet version [#3228](https://github.com/microsoft/vstest/pull/3228) +* Bumped TP version to 17.2 [#3214](https://github.com/microsoft/vstest/pull/3214) +* Add marco as code owner for public api [#3217](https://github.com/microsoft/vstest/pull/3217) +* Add PublicAPI analyzer to all public projects [#3205](https://github.com/microsoft/vstest/pull/3205) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.1.0-preview-20211130-02...v17.2.0-preview-20220131-20) + +### Drops + +* TestPlatform vsix: [17.2.0-preview-20220131-20](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220131-20;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.2.0-preview-20220131-20](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.2.0-preview-20220131-20) + +## 17.1.0-release-20220113-05 + +### Issue Fixed + +* Fix architecture retrival [#3251](https://github.com/microsoft/vstest/pull/3251) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.1.0-preview-20211130-02...v17.1.0-release-20220113-05) + +### Drops + +* TestPlatform vsix: [17.1.0-release-20220113-05](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20220113-05;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.1.0-release-20220113-05](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.1.0-release-20220113-05) + +## 17.1.0-preview-20211130-02 + +### Issue Fixed + +* AttachVS PR comments fixed [#3201](https://github.com/microsoft/vstest/pull/3201) +* Attach to VS automatically [#3197](https://github.com/microsoft/vstest/pull/3197) +* Fixing .net frmw parallel issue [#3192](https://github.com/microsoft/vstest/pull/3192) +* Testhost sharing between discovery & execution [#2687](https://github.com/microsoft/vstest/pull/2687) +* Make older uwp work [#3166](https://github.com/microsoft/vstest/pull/3166) +* Enable code coverage when "Code Coverage;arg1=val1;arg2=val2" is provided in cli [#3172](https://github.com/microsoft/vstest/pull/3172) +* Remove TargetPlatform before start test host [#3170](https://github.com/microsoft/vstest/pull/3170) +* Adding elements to code coverage config passed via commandline, [#3162](https://github.com/microsoft/vstest/pull/3162) +* Aggregate api files [#3165](https://github.com/microsoft/vstest/pull/3165) +* Fix GenerateProgramFile [#3163](https://github.com/microsoft/vstest/pull/3163) +* Move new enum into public api [#3157](https://github.com/microsoft/vstest/pull/3157) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.1.0-preview-20211109-03...v17.1.0-preview-20211130-02) + +### Drops + +* TestPlatform vsix: [17.1.0-preview-20211130-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20211130-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.1.0-preview-20211130-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.1.0-preview-20211130-02) + +## 17.1.0-preview-20211109-03 + +### Issues Fixed + +* Honor `--arch` switch for arm64 on Windows and Mac [#3100](https://github.com/microsoft/vstest/pull/3100) +* CPP runner under .NET (Core) [#3003](https://github.com/microsoft/vstest/pull/3003) +* Log messages from RequestSender [#3057](https://github.com/microsoft/vstest/pull/3057) +* Fixed CVE-2018-8292 & CVE-2021-26701 [#3054](https://github.com/microsoft/vstest/pull/3054) +* --diag should take files with no extension [#3048](https://github.com/microsoft/vstest/pull/3048) +* Blame fix 32 bit hang dump [#3043](https://github.com/microsoft/vstest/pull/3043) +* Add public api analyzers for ObjectModel and dependencies [#3042](https://github.com/microsoft/vstest/pull/3042) + +See full log [here](https://github.com/microsoft/vstest/compare/v17.0.0...v17.1.0-preview-20211109-03) + +### Drops + +* TestPlatform vsix: [17.1.0-preview-20211109-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/main/20211109-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.1.0-preview-20211109-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.1.0-preview-20211109-03) + +## 17.0.0 + +See full log [here](https://github.com/microsoft/vstest/compare/v16.11.0...v17.0.0) + +### Drops + +* TestPlatform vsix: [17.0.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/17.0/20211022-05;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [17.0.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.0.0) + +## 16.11.0 + +### Issues Fixed + +* 16.11 External Packages Insertion [#2996](https://github.com/microsoft/vstest/pull/2996) +* Update externals to 16.11 [#2932](https://github.com/microsoft/vstest/pull/2932) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.10.0...v16.11.0) + +### Drops + +* TestPlatform vsix: [16.11.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.11/20210812-04;Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI.vsman) +* Microsoft.TestPlatform.ObjectModel : [16.11.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.11.0) + +## 16.10.0-release-20210429-01 + +### Issues Fixed + +* Adding mono.cecil libs to packages, (#2878) [#2878](https://github.com/microsoft/vstest/pull/2878) +* Upgrade CC components to 16.10.0-beta.21227.2 (#2877) [#2877](https://github.com/microsoft/vstest/pull/2877) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.10.0-release-20210330-02...v16.10.0-release-20210422-02) + +### Drops + +* TestPlatform vsix: [16.10.0-release-20210429-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.10/20210429-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [16.10.0-release-20210429-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.10.0-release-20210429-01) + +## 16.10.0-release-20210422-02 + +### Issues Fixed + +* Mark early testhost startup APIs as internal for TP 16.10 (#2768) [#2864](https://github.com/microsoft/vstest/pull/2864) +* Added some capabilities to package utilities (#2854) [#2862](https://github.com/microsoft/vstest/pull/2862) +* Fixed #2814 and #2853. +* Added support for WinUI3 appxrecipe. [#2849](https://github.com/microsoft/vstest/pull/2849) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.10.0-release-20210330-02...v16.10.0-release-20210422-02) + +### Drops + +* TestPlatform vsix: [16.10.0-release-20210422-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.10/20210422-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [16.10.0-release-20210422-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.10.0-release-20210422-02) + +## 16.9.4 + +### Issue Fixed + +* Loadind corelib.net dynamically () + +See full log [here](https://github.com/microsoft/vstest/compare/v16.9.1...v16.9.4) + +### Drops + +* TestPlatform vsix: [16.9.4](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.9/20210401-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [16.9.4](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.9.4) + +## 16.10.0-release-20210330-02 + +### Issue Fixed + +* Updating code coverage version [#2836](https://github.com/microsoft/vstest/pull/2836) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.10.0-release-20210329-03...v16.10.0-release-20210330-02) + +### Drops + +* TestPlatform vsix: [16.10.0-release-20210330-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.10/20210330-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel : [16.10.0-release-20210330-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.10.0-release-20210330-02) + +## 16.10.0-release-20210329-03 + +### Issues Fixed + +* Add basic mstestv1 telemetry [#2781](https://github.com/microsoft/vstest/pull/2781) +* Update TP externals [#2809](https://github.com/microsoft/vstest/pull/2809) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.10.0-preview-20210219-03...v16.10.0-release-20210329-03) + +### Drops + +* TestPlatform vsix: [16.10.0-release-20210329-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.10/20210329-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.10.0-release-20210329-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.10.0-release-20210329-03) + +## 16.10.0-preview-20210219-03 + +### Issues Fixed + +* Dynamic corelib.net loading [#2762](https://github.com/microsoft/vstest/pull/2762) +* Add failed logic for trx logger when TreatNoTestAsError is set to true [#2758](https://github.com/microsoft/vstest/pull/2758) +* Adding resources for corelib.net in portable package, [#2759](https://github.com/microsoft/vstest/pull/2759) +* Prefer agent temp directory if available. [#2752](https://github.com/microsoft/vstest/pull/2752) +* Generating cc attachments with correct uri [#2750](https://github.com/microsoft/vstest/pull/2750) +* Added support for spaces and other special characters in method names into the ManagedNameUtilities [#2738](https://github.com/microsoft/vstest/pull/2738) +* Don't swallow stacktrace from adapter exception when running in thread [#2746](https://github.com/microsoft/vstest/pull/2746) +* Fix duration in console logger for parallel tests [#2739](https://github.com/microsoft/vstest/pull/2739) +* Marked `InvalidManagedNameException` as serializable [#2732](https://github.com/microsoft/vstest/pull/2732) +* Print stack trace from executor [#2730](https://github.com/microsoft/vstest/pull/2730) +* Added constants for hierarchical naming. [#2724](https://github.com/microsoft/vstest/pull/2724) +* Fix divide by zero in HTML logger [#2723](https://github.com/microsoft/vstest/pull/2723) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.9.0-preview-20210127-04...v16.10.0-preview-20210219-03) + +### Drops + +* TestPlatform vsix: [16.10.0-preview-20210219-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.10/20210219-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.10.0-preview-20210219-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.10.0-preview-20210219-03) + +## 16.9.1 + +### Issues Fixed + +* Implemented Workitem support in TRX logger (#2666) +* Stopped merging code coverage logs (#2671) +* Early testhost startup performance improved (#2584) +* Removed TypesToLoadAttribute from ObjectModel, and moved the functionallity into adapters (#2674) +* Fixed assembly names of TestHost executables (#2682) +* Add metrics for datacollector.exe - provides information about profilers (#2705) +* Added `Microsoft.TestPlatform.AdapterUtilities`. (#2714) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.9.0-preview-20210127-04...v16.9.1) + +### Drops + +* TestPlatform vsix: [16.9.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/rel/16.9/20210223-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.9.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.9.1) + +## 16.9.0-preview-20210127-04 + +### Issue Fixed + +* Move FQN related code into a separate NuGet package [#2714](https://github.com/microsoft/vstest/pull/2714) +* vstest.console: CommandLineOptions: preserve stacktrace on re-throw (CA2200) [#2606](https://github.com/microsoft/vstest/pull/2606) +* Add metrics for datacollector.exe - provides information about profilers [#2705](https://github.com/microsoft/vstest/pull/2705) +* Loc Update [#2685](https://github.com/microsoft/vstest/pull/2685) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.9.0-preview-20210106-01...v16.9.0-preview-20210127-04) + +### Drops + +* TestPlatform vsix: [16.9.0-preview-20210127-04](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20210127-04;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.9.0-preview-20210127-04](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.9.0-preview-20210127-04) + +## 16.9.0-preview-20210106-01 + +### Issues Fixed + +* Upgrade CC to 16.9.0-beta.20630.1 [#2684](https://github.com/microsoft/vstest/pull/2684) +* Upgrade fakes version [#2683](https://github.com/microsoft/vstest/pull/2683) +* Fixed assembly names of TestHost executables [#2682](https://github.com/microsoft/vstest/pull/2682) +* Upgrade CC and CLR IE versions [#2681](https://github.com/microsoft/vstest/pull/2681) +* Update dependencies from build 20201221.2 [#2680](https://github.com/microsoft/vstest/pull/2680) +* Adding environment variable used during build process, [#2679](https://github.com/microsoft/vstest/pull/2679) +* Getting TraceDataCollector from nuget [#2678](https://github.com/microsoft/vstest/pull/2678) +* Attribute refactoring [#2676](https://github.com/microsoft/vstest/pull/2676) +* Removed TypesToLoadAttribute from ObjectModel. [#2674](https://github.com/microsoft/vstest/pull/2674) +* Early testhost startup performance work [#2584](https://github.com/microsoft/vstest/pull/2584) +* Do not merge logs from code coverage [#2671](https://github.com/microsoft/vstest/pull/2671) +* Implement Workitem support in TRX logger [#2666](https://github.com/microsoft/vstest/pull/2666) +* Bumping Fakes TestRunnerHarness version [#2661](https://github.com/microsoft/vstest/pull/2661) +* Fixed "issue" pluralization in write-release-notes.ps1 [#2665](https://github.com/microsoft/vstest/pull/2665) +* Updating Microsoft.VisualStudio.TraceDataCollector source [#2663](https://github.com/microsoft/vstest/pull/2663) +* Update dependencies from build 20201130.3 [#2659](https://github.com/microsoft/vstest/pull/2659) +* Cross platform acceptance tests [#2653](https://github.com/microsoft/vstest/pull/2653) +* Upgrade externals - remove interop [#2650](https://github.com/microsoft/vstest/pull/2650) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.9.0-preview-20201123-03...v16.9.0-preview-20210106-01) + +### Drops + +* TestPlatform vsix: [16.9.0-preview-20210106-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20210106-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.9.0-preview-20210106-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.9.0-preview-20210106-01) + +## 16.9.0-preview-20201123-03 + +### Issues Fixed + +* Added support for new CC merging library for netstandard2.0 [#2598](https://github.com/microsoft/vstest/pull/2598) +* [master] Fix collect dump always [#2645](https://github.com/microsoft/vstest/pull/2645) +* Managed TestCase Properties implemented [#2611](https://github.com/microsoft/vstest/pull/2611) +* Use jsonSerializer2 for protocol version 3 [#2630](https://github.com/microsoft/vstest/pull/2630) +* Fixed assembly loading issue for netcoreapp on linux [#2636](https://github.com/microsoft/vstest/pull/2636) +* Fixed assembly loading issue for netcoreapp. [#2631](https://github.com/microsoft/vstest/pull/2631) +* Generation of CodeCoverage.deps.json file [#2627](https://github.com/microsoft/vstest/pull/2627) +* TP trace data collector changes to support CLR IE [#2618](https://github.com/microsoft/vstest/pull/2618) +* Enable linux build [#2617](https://github.com/microsoft/vstest/pull/2617) +* Implemented functionality to return non-zero value when no tests available. [#2610](https://github.com/microsoft/vstest/pull/2610) +* Ensure that a supplied vstest.console path is escape sequenced [#2600](https://github.com/microsoft/vstest/pull/2600) +* Temporary code to enable correct Fakes and Code Coverage integration [#2604](https://github.com/microsoft/vstest/pull/2604) +* netstandard1.0 and uap10.0 support [#2596](https://github.com/microsoft/vstest/pull/2596) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.9.0-preview-20201020-06...v16.9.0-preview-20201123-03) + +### Drops + +* TestPlatform vsix: [16.9.0-preview-20201123-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20201123-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.9.0-preview-20201123-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.9.0-preview-20201123-03) + +## 16.8.3 + +### Issues Fixed + +* Fixed PackageReferences on ObjectModel nupkg [#2660](https://github.com/microsoft/vstest/pull/2660) +* [16.8] Fix collect dump always [#2641](https://github.com/microsoft/vstest/pull/2641) +* Assembly load fixes [#2644](https://github.com/microsoft/vstest/pull/2644) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.8.0...v16.8.3) + +### Drops + +* TestPlatform vsix: [16.8.3](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.8/20201202-04;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.8.3](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.8.3) + +## 16.8.0 + +### Issues Fixed + +* Cherry-picked signing fixes from `master` [#2619](https://github.com/microsoft/vstest/pull/2619) +* Signing instructions for Newtonsoft.Json.dll added (#2601) [#2603](https://github.com/microsoft/vstest/pull/2603) +* Fix the initial assets location of VSTest assets [#2589](https://github.com/microsoft/vstest/pull/2589) +* Generate release notes in pipeline +* Forward merge fixes from master to rc2 [#2581](https://github.com/microsoft/vstest/pull/2581) +* Fix blame parameter, warning, and add all testhosts to be ngend [#2579](https://github.com/microsoft/vstest/pull/2579) +* Merge branch 'master' of into rel/16.8 +* Blame upload on crash even if hang dump started [#2553](https://github.com/microsoft/vstest/pull/2553) +* Fix errors reported by StyleCop Analyzers [#2555](https://github.com/microsoft/vstest/pull/2555) +* Improve blame [#2552](https://github.com/microsoft/vstest/pull/2552) +* Remove sleeps and extra process dumps from blame +* Changes to allow special characters in parameter names [#2481](https://github.com/microsoft/vstest/pull/2481) +* Update dependencies from build 20200827.6 [#2547](https://github.com/microsoft/vstest/pull/2547) +* Update dependencies from build 20200827.2 [#2546](https://github.com/microsoft/vstest/pull/2546) +* Merge branch 'rel/16.8' of into rel/16.8 +* Remove env variables +* Add binaries to enable running Fakes in Net Core [#2529](https://github.com/microsoft/vstest/pull/2529) +* Trigger dumps asynchronously [#2542](https://github.com/microsoft/vstest/pull/2542) +* Revert "Trigger dumps asynchronously (#2533)" [#2541](https://github.com/microsoft/vstest/pull/2541) +* Trigger dumps asynchronously [#2533](https://github.com/microsoft/vstest/pull/2533) +* Print version of the product in log [#2535](https://github.com/microsoft/vstest/pull/2535) +* Merge rel16.7 into master [#2534](https://github.com/microsoft/vstest/pull/2534) +* Print version of the product in log [#2536](https://github.com/microsoft/vstest/pull/2536) +* Print only whole version on release branch. +* Optionally force procdump [#2531](https://github.com/microsoft/vstest/pull/2531) +* Forward merge master +* Crash dumps via net client [#2532](https://github.com/microsoft/vstest/pull/2532) +* Added a command-line argument to vstest.console.exe for setting environment variables [#2528](https://github.com/microsoft/vstest/pull/2528) +* Fixed code coverage compatibility issue [#2527](https://github.com/microsoft/vstest/pull/2527) +* Custom dump path for helix [#2525](https://github.com/microsoft/vstest/pull/2525) +* Take non-completed tests instead of last [#2526](https://github.com/microsoft/vstest/pull/2526) +* Forgot to regenerate resources before commit, as always [#2524](https://github.com/microsoft/vstest/pull/2524) +* Fixing the reminder of crash dumps [#2520](https://github.com/microsoft/vstest/pull/2520) +* Dumping child processes [#2518](https://github.com/microsoft/vstest/pull/2518) +* Replace NET451 compiler directives with NETFRAMEWORK [#2516](https://github.com/microsoft/vstest/pull/2516) +* [master] Update dependencies from dotnet/arcade [#2509](https://github.com/microsoft/vstest/pull/2509) +* Updated TP external dependencies [#2515](https://github.com/microsoft/vstest/pull/2515) +* Add environment variables to enable MacOS dump +* Fixed code coverage compatibility issue [#2514](https://github.com/microsoft/vstest/pull/2514) +* Fixed TRX file overwrite in certain circumstances [#2508](https://github.com/microsoft/vstest/pull/2508) +* Use OS bitness to figure out .NETCore runner architecture [#2507](https://github.com/microsoft/vstest/pull/2507) +* Updated TP external dependencies [#2503](https://github.com/microsoft/vstest/pull/2503) +* Add missing space before parens in message [#2504](https://github.com/microsoft/vstest/pull/2504) +* CI failure fix [#2500](https://github.com/microsoft/vstest/pull/2500) +* Fix signing [#2497](https://github.com/microsoft/vstest/pull/2497) +* Add the new MacOs env variable to allow dumps to be created. [#2496](https://github.com/microsoft/vstest/pull/2496) +* Macos dumps [#2495](https://github.com/microsoft/vstest/pull/2495) +* Multitarget testhost [#2493](https://github.com/microsoft/vstest/pull/2493) +* Revert detecting default architecture, to allow dotnet to default to 64-bit [#2492](https://github.com/microsoft/vstest/pull/2492) +* Nuget.Frameworks renamed netcoreapp5.0 to net5.0 [#2491](https://github.com/microsoft/vstest/pull/2491) +* Console output for minimal and quiet [#2191](https://github.com/microsoft/vstest/pull/2191) +* Update License +* Linux build [#2477](https://github.com/microsoft/vstest/pull/2477) +* Windows 32 bit issue [#2482](https://github.com/microsoft/vstest/pull/2482) +* Update dependencies from build 20200715.6 [#2485](https://github.com/microsoft/vstest/pull/2485) +* Create test results directory [#2483](https://github.com/microsoft/vstest/pull/2483) +* Use testhost.exe only on Windows x86 and x64, and enable hang dumps on ARM and ARM64 [#2479](https://github.com/microsoft/vstest/pull/2479) +* Localization HB. [#2478](https://github.com/microsoft/vstest/pull/2478) +* Introduced acceptance tests for default exclusion merging [#2454](https://github.com/microsoft/vstest/pull/2454) +* Change indicators to words [#2475](https://github.com/microsoft/vstest/pull/2475) +* Adding test run attachments processing [#2463](https://github.com/microsoft/vstest/pull/2463) +* Adding test run attachments processing [#2463](https://github.com/microsoft/vstest/pull/2463) +* Localization check-in 07-01-2020 [#2471](https://github.com/microsoft/vstest/pull/2471) +* Update dependencies from build 20200626.2 [#2470](https://github.com/microsoft/vstest/pull/2470) +* Added new exception handling [#2461](https://github.com/microsoft/vstest/pull/2461) +* Update branding to 16.8.0 [#2460](https://github.com/microsoft/vstest/pull/2460) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.7.0...v16.8.0) + +### Drops + +* TestPlatform vsix: [16.8.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/v16.8.0;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.8.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.8.0) + +## 16.9.0-preview-20201020-06 + +### Issues Fixed + +* Enable Fakes Datacollector settings to be added in design mode [#2586](https://github.com/microsoft/vstest/pull/2586) +* Fix blame parameter, warning, and add all testhosts to be ngend [#2579](https://github.com/microsoft/vstest/pull/2579) +* Add netcoreapp1.0 support to `Microsoft.TestPlatform.TestHost` NuGet [#2569](https://github.com/microsoft/vstest/pull/2569) +* Use bitness from process or OS [#2571](https://github.com/microsoft/vstest/pull/2571) +* Restore netcoreapp1.0 support for testhost [#2554](https://github.com/microsoft/vstest/pull/2554) +* Get symbols of DiaSymReader from externals [#2560](https://github.com/microsoft/vstest/pull/2560) +* Do not force .NET4.5 in case legacy test settings are provided [#2545](https://github.com/microsoft/vstest/pull/2545) +* Simplify package references [#2559](https://github.com/microsoft/vstest/pull/2559) +* Enable default compile items for Microsoft.TestPlatform.PlatformAbstractions [#2556](https://github.com/microsoft/vstest/pull/2556) +* Avoid logging >Task returned false but did not log an error.< [#2557](https://github.com/microsoft/vstest/pull/2557) +* Fixed code coverage compatibility issue [#2527](https://github.com/microsoft/vstest/pull/2527) +* Add environment variables to enable MacOS dump +* Adding test run attachments processing [#2463](https://github.com/microsoft/vstest/pull/2463) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.8.0-release-20200921-02...v16.9.0-preview-20201020-06) + +### Drops + +* TestPlatform vsix: [16.9.0-preview-20201020-06](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20201020-06;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.9.0-preview-20201020-06](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.9.0-preview-20201020-06) + +## 16.8.0-preview-20200921-01 + +### Issues Fixed + +* Fix blame parameter, warning, and add all testhosts to be ngend [#2579](https://github.com/microsoft/vstest/pull/2579) +* Trigger dumps asynchronously [#2533](https://github.com/microsoft/vstest/pull/2533) +* Print version of the product in log [#2535](https://github.com/microsoft/vstest/pull/2535) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.8.0-preview-20200812-03...v16.8.0-preview-20200921-01) + +### Drops + +* TestPlatform vsix: [16.8.0-preview-20200921-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200921-01;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.8.0-preview-20200921-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.8.0-preview-20200921-01) + +## 16.7.1 + +### Issues Fixed + +* Fixed code coverage compatibility issue [#2527](https://github.com/microsoft/vstest/pull/2527) +* Adding test run attachments processing [#2463](https://github.com/microsoft/vstest/pull/2463) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.7.0...v16.7.1) + +### Drops + +* TestPlatform vsix: [16.7.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.7/20200819-04;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.7.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.7.1) + +## 16.8.0-preview-20200812-03 + +### Issues Fixed + +* Replace NET451 compiler directives with NETFRAMEWORK [#2516](https://github.com/Microsoft/vstest/pull/2516) +* [master] Update dependencies from dotnet/arcade [#2509](https://github.com/Microsoft/vstest/pull/2509) +* Updated TP external dependencies [#2515](https://github.com/Microsoft/vstest/pull/2515) +* Fixed code coverage compatibility issue [#2514](https://github.com/Microsoft/vstest/pull/2514) +* Fixed TRX file overwrite in certain circumstances [#2508](https://github.com/Microsoft/vstest/pull/2508) + +See full log [here](https://github.com/Microsoft/vstest/compare/v16.8.0-preview-20200806-02...v16.8.0-preview-20200812-03) + +### Drops + +* TestPlatform vsix: [16.8.0-preview-20200812-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200812-03;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.8.0-preview-20200812-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.8.0-preview-20200812-03) + +## 16.8.0-preview-20200806-02 + +### Issues Fixed + +* Use OS bitness to figure out .NETCore runner architecture [#2507](https://github.com/microsoft/vstest/pull/2507) +* Updated TP external dependencies [#2503](https://github.com/microsoft/vstest/pull/2503) +* Add missing space before parens in message [#2504](https://github.com/microsoft/vstest/pull/2504) +* CI failure fix [#2500](https://github.com/microsoft/vstest/pull/2500) +* Fix signing [#2497](https://github.com/microsoft/vstest/pull/2497) +* Add the new MacOs env variable to allow dumps to be created. [#2496](https://github.com/microsoft/vstest/pull/2496) +* Macos dumps [#2495](https://github.com/microsoft/vstest/pull/2495) +* Multitarget testhost [#2493](https://github.com/microsoft/vstest/pull/2493) +* Revert detecting default architecture, to allow dotnet to default to 64-bit [#2492](https://github.com/microsoft/vstest/pull/2492) +* Nuget.Frameworks renamed netcoreapp5.0 to net5.0 [#2491](https://github.com/microsoft/vstest/pull/2491) +* Console output for minimal and quiet [#2191](https://github.com/microsoft/vstest/pull/2191) +* Update License +* Linux build [#2477](https://github.com/microsoft/vstest/pull/2477) +* Windows 32 bit issue [#2482](https://github.com/microsoft/vstest/pull/2482) +* Update dependencies from build 20200715.6 [#2485](https://github.com/microsoft/vstest/pull/2485) +* Create test results directory [#2483](https://github.com/microsoft/vstest/pull/2483) +* Use testhost.exe only on Windows x86 and x64, and enable hang dumps on ARM and ARM64 [#2479](https://github.com/microsoft/vstest/pull/2479) +* Localization HB. [#2478](https://github.com/microsoft/vstest/pull/2478) +* Introduced acceptance tests for default exclusion merging [#2454](https://github.com/microsoft/vstest/pull/2454) +* Change indicators to words [#2475](https://github.com/microsoft/vstest/pull/2475) +* Adding test run attachments processing [#2463](https://github.com/microsoft/vstest/pull/2463) +* Localization check-in 07-01-2020 [#2471](https://github.com/microsoft/vstest/pull/2471) +* Update dependencies from build 20200626.2 [#2470](https://github.com/microsoft/vstest/pull/2470) +* Added new exception handling [#2461](https://github.com/microsoft/vstest/pull/2461) +* Update branding to 16.8.0 [#2460](https://github.com/microsoft/vstest/pull/2460) +* Update dependencies from build 20200602.3 [#2455](https://github.com/microsoft/vstest/pull/2455) +* Added exception handling while creating "TestResults" folder [#2450](https://github.com/microsoft/vstest/pull/2450) +* Added support for default exclusion merging for code coverage [#2431](https://github.com/microsoft/vstest/pull/2431) +* LOC CHECKIN | microsoft/vstest master | 20200526 [#2445](https://github.com/microsoft/vstest/pull/2445) +* Generate xlf for blame [#2442](https://github.com/microsoft/vstest/pull/2442) + +See full log [here](https://github.com/microsoft/vstest/compare/v16.7.0-preview-20200519-01...v16.8.0-preview-20200806-02) + +### Drops + +* TestPlatform vsix: [16.8.0-preview-20200806-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200806-02;/TestPlatform.vsix) +* Microsoft.TestPlatform.ObjectModel: [16.8.0-preview-20200806-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.8.0-preview-20200806-02) + +## 16.7.0 + +### Issues Fixed + +* Added new exception handling [#2461](https://github.com/microsoft/vstest/pull/2461) +* Added exception handling while creating "TestResults" folder [#2450](https://github.com/microsoft/vstest/pull/2450) +* Added support for default exclusion merging for code coverage [#2431](https://github.com/microsoft/vstest/pull/2431) +* LOC CHECKIN | microsoft/vstest master | 20200526 [#2445](https://github.com/microsoft/vstest/pull/2445) +* Generate xlf for blame [#2442](https://github.com/microsoft/vstest/pull/2442) +* Upgrade TestPlatform external dependencies [#2440](https://github.com/microsoft/vstest/pull/2440) +* Added support for debugging external test processes [#2325](https://github.com/microsoft/vstest/pull/2325) +* Add the parameters to VSTestTask to allow dotnet test to work [#2438](https://github.com/microsoft/vstest/pull/2438) +* Add hangdump and crash dump capabilities and options [#2434](https://github.com/microsoft/vstest/pull/2434) +* Update arcade tooling to latest [#2436](https://github.com/microsoft/vstest/pull/2436) +* More verbose info in datacollector log [#2430](https://github.com/microsoft/vstest/pull/2430) +* Support /TestCaseFilter and /Tests arguments at the same time [#2371](https://github.com/microsoft/vstest/pull/2371) +* Wrap error message/stack trace content in `
    ` [#2419](https://github.com/microsoft/vstest/pull/2419)
    +* Update telemetry to latest [#2421](https://github.com/microsoft/vstest/pull/2421)
    +* Merge test run parameters that have spaces [#2409](https://github.com/microsoft/vstest/pull/2409)
    +* update externals [#2406](https://github.com/microsoft/vstest/pull/2406)
    +* VS Depencencies from 16.7.0 signed build [#2382](https://github.com/microsoft/vstest/pull/2382)
    +* Changed new configurator method name (#2397) [#2403](https://github.com/microsoft/vstest/pull/2403)
    +* Fix null reference [#2401](https://github.com/microsoft/vstest/pull/2401)
    +* Changed new configurator method name [#2398](https://github.com/microsoft/vstest/pull/2398)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.6.0...v16.7.0)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.7.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/v16.7.0;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.7.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.7.0)
    +
    +## 16.7.0-preview-20200519-01
    +
    +### Issues Fixed
    +
    +* Upgrade TestPlatform external dependencies [#2440](https://github.com/microsoft/vstest/pull/2440)
    +* Added support for debugging external test processes [#2325](https://github.com/microsoft/vstest/pull/2325)
    +* Add the parameters to VSTestTask to allow dotnet test to work [#2438](https://github.com/microsoft/vstest/pull/2438)
    +* Add hangdump and crash dump capabilities and options [#2434](https://github.com/microsoft/vstest/pull/2434)
    +* Update arcade tooling to latest [#2436](https://github.com/microsoft/vstest/pull/2436)
    +* More verbose info in datacollector log [#2430](https://github.com/microsoft/vstest/pull/2430)
    +* Support /TestCaseFilter and /Tests arguments at the same time [#2371](https://github.com/microsoft/vstest/pull/2371)
    +* Wrap error message/stack trace content in `
    ` [#2419](https://github.com/microsoft/vstest/pull/2419)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.7.0-preview-20200428-01...v16.7.0-preview-20200519-01)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.7.0-preview-20200519-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200519-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.7.0-preview-20200519-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.7.0-preview-20200519-01)
    +
    +## 16.7.0-preview-20200428-01
    +
    +### Issues Fixed
    +
    +* Update telemetry to latest [#2421](https://github.com/microsoft/vstest/pull/2421)
    +* Merge test run parameters that have spaces [#2409](https://github.com/microsoft/vstest/pull/2409)
    +* updated package version [#2412](https://github.com/microsoft/vstest/pull/2412)
    +* update externals [#2406](https://github.com/microsoft/vstest/pull/2406)
    +* VS Depencencies from 16.7.0 signed build [#2382](https://github.com/microsoft/vstest/pull/2382)
    +* Changed new configurator method name (#2397) [#2403](https://github.com/microsoft/vstest/pull/2403)
    +* Fix null reference [#2401](https://github.com/microsoft/vstest/pull/2401)
    +* Changed new configurator method name [#2398](https://github.com/microsoft/vstest/pull/2398)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.6.1...v16.7.0-preview-20200428-01)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.7.0-preview-20200428-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200428-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.7.0-preview-20200428-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.7.0-preview-20200428-01)
    +
    +## 16.6.1
    +
    +### Issues Fixed
    +
    +* Fix fakes version [#2412](https://github.com/microsoft/vstest/pull/2412)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.6.0...v16.6.1)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.6.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.6/20200423-06;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.6.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.6.1)
    +
    +## 16.6.0
    +
    +### Issues Fixed
    +
    +* Fix null reference in Fakes [#2400](https://github.com/microsoft/vstest/pull/2400)
    +* Changed new configurator method name [#2397](https://github.com/microsoft/vstest/pull/2397)
    +* Fixes Test Platform. [#2393](https://github.com/microsoft/vstest/pull/2393)
    +* Fixing a typo for the method arguments for the Fakes utility method. [#2385](https://github.com/microsoft/vstest/pull/2385)
    +* Ignore flaky test [#2386](https://github.com/microsoft/vstest/pull/2386)
    +* LOC CHECKIN | Microsoft/vstest master | 20200403 [#2383](https://github.com/microsoft/vstest/pull/2383)
    +* Upgrade CppUnitTestFramework to newest version [#2381](https://github.com/microsoft/vstest/pull/2381)
    +* Added method to look for new api in fakes datacollector [#2339](https://github.com/microsoft/vstest/pull/2339)
    +* Take TestCaseFilter from runsettings [#2356](https://github.com/microsoft/vstest/pull/2356)
    +* Pin dotnet [#2373](https://github.com/microsoft/vstest/pull/2373)
    +* Fix writing to trx when error has no message [#2364](https://github.com/microsoft/vstest/pull/2364)
    +* Fix symbols [#2363](https://github.com/microsoft/vstest/pull/2363)
    +* Report informational messages when platform logs are enabled [#2361](https://github.com/microsoft/vstest/pull/2361)
    +* Add option to specify custom test host [#2359](https://github.com/microsoft/vstest/pull/2359)
    +* Fix running self-contained apps on Windows [#2358](https://github.com/microsoft/vstest/pull/2358)
    +* Remove unused usings. [#2350](https://github.com/microsoft/vstest/pull/2350)
    +* Better error when discoverer defaultExecutorUri is not set. [#2354](https://github.com/microsoft/vstest/pull/2354)
    +* Add coverlet smoke test [#2348](https://github.com/microsoft/vstest/pull/2348)
    +* Fix splitting of test name from fully qualified name [#2355](https://github.com/microsoft/vstest/pull/2355)
    +* Spelling / conventions and grammar fixes [#2338](https://github.com/microsoft/vstest/pull/2338)
    +* Small build fixes [#2345](https://github.com/microsoft/vstest/pull/2345)
    +* Fix race condition on testhost exit before we connect [#2344](https://github.com/microsoft/vstest/pull/2344)
    +* Move test publish to the bottom [#2342](https://github.com/microsoft/vstest/pull/2342)
    +* Do not crash on Debug.Assert [#2335](https://github.com/microsoft/vstest/pull/2335)
    +* Switch arguments for expected and actual in Assert.AreEquals in multiple tests [#2329](https://github.com/microsoft/vstest/pull/2329)
    +* Run acceptance tests against the locally built sources [#2340](https://github.com/microsoft/vstest/pull/2340)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.5.0...v16.6.0)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.6.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/16.6/20200414-04;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.6.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.6.0)
    +
    +## 16.6.0-preview-20200318-01
    +
    +### Issues Fixed
    +
    +* Fix writing to trx when error has no message [#2364](https://github.com/microsoft/vstest/pull/2364)
    +* Fix symbols [#2363](https://github.com/microsoft/vstest/pull/2363)
    +* Report informational messages when platform logs are enabled [#2361](https://github.com/microsoft/vstest/pull/2361)
    +* Add option to specify custom test host [#2359](https://github.com/microsoft/vstest/pull/2359)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.6.0-preview-20200310-03...v16.6.0-preview-20200318-01)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.6.0-preview-20200318-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200318-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.6.0-preview-20200318-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.6.0-preview-20200318-01)
    +
    +## 16.6.0-preview-20200310-03
    +
    +### Issues Fixed
    +
    +* Fix running self-contained apps on Windows [#2358](https://github.com/microsoft/vstest/pull/2358)
    +* Remove unused usings. [#2350](https://github.com/microsoft/vstest/pull/2350)
    +* Better error when discoverer defaultExecutorUri is not set. [#2354](https://github.com/microsoft/vstest/pull/2354)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.6.0-preview-20200309-01...v16.6.0-preview-20200310-03)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.6.0-preview-20200310-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200310-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.6.0-preview-20200310-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.6.0-preview-20200310-03)
    +
    +## 16.6.0-preview-20200309-01
    +
    +### Issues Fixed
    +
    +* Add coverlet smoke test [#2348](https://github.com/microsoft/vstest/pull/2348)
    +* Fix splitting of test name from fully qualified name [#2355](https://github.com/microsoft/vstest/pull/2355)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.6.0-preview-20200226-03...v16.6.0-preview-20200309-01)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.6.0-preview-20200309-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200309-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.6.0-preview-20200309-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.6.0-preview-20200309-01)
    +
    +## 16.6.0-preview-20200226-03
    +
    +### Issues Fixed
    +
    +* Spelling / conventions and grammar fixes [#2338](https://github.com/microsoft/vstest/pull/2338)
    +* Small build fixes [#2345](https://github.com/microsoft/vstest/pull/2345)
    +* Fix race condition on testhost exit before we connect [#2344](https://github.com/microsoft/vstest/pull/2344)
    +* Move test publish to the bottom [#2342](https://github.com/microsoft/vstest/pull/2342)
    +* Do not crash on Debug.Assert [#2335](https://github.com/microsoft/vstest/pull/2335)
    +* Switch arguments for expected and actual in Assert.AreEquals in multiple tests [#2329](https://github.com/microsoft/vstest/pull/2329)
    +* Run acceptance tests against the locally built sources [#2340](https://github.com/microsoft/vstest/pull/2340)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.5.0-preview-20200203-01...v16.6.0-preview-20200226-03)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.6.0-preview-20200226-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200226-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.6.0-preview-20200226-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.6.0-preview-20200226-03)
    +
    +## 16.5.0
    +
    +### Issues fixed (since 16.4.0)
    +
    +* Use version of external package with fixes [#2315](https://github.com/microsoft/vstest/pull/2315)
    +* Use latest version of VS that is available [#2314](https://github.com/microsoft/vstest/pull/2314)
    +* Pass coverlet codebase in runsettings for inproc data collector initialization [#2288](https://github.com/microsoft/vstest/pull/2288)
    +* Make --verbosity case insensitive [#2300](https://github.com/microsoft/vstest/pull/2300)
    +* Revert "Use patched version of TestPlatform.Extensions (#2283)" [#2307](https://github.com/microsoft/vstest/pull/2307)
    +* Update arcade [#2302](https://github.com/microsoft/vstest/pull/2302)
    +* Fix SocketCommunicationManager [#2290](https://github.com/microsoft/vstest/pull/2290)
    +* Use patched version of TestPlatform.Extensions [#2283](https://github.com/microsoft/vstest/pull/2283)
    +* Cap version of VS to <16.0 [#2285](https://github.com/microsoft/vstest/pull/2285)
    +* Remove duplicate counting of test results in Consolelogger [#2267](https://github.com/microsoft/vstest/pull/2267)
    +* Test run parameter added as part of CLI runsettings args [#2251](https://github.com/microsoft/vstest/pull/2251)
    +* Initialize only coverlet data collector [#2274](https://github.com/microsoft/vstest/pull/2274)
    +* Use RunSettingsFilePath from when using dotnet test [#2272](https://github.com/microsoft/vstest/pull/2272)
    +* Eqt trace error was thrown if extension uri is not given [#2264](https://github.com/microsoft/vstest/pull/2264)
    +* Fix for discovery not working on Mac machines [#2266](https://github.com/microsoft/vstest/pull/2266)
    +* Disable reusing nodes when building localization [#2268](https://github.com/microsoft/vstest/pull/2268)
    +* Trx changes for fqdn mapping in test method name [#2259](https://github.com/microsoft/vstest/pull/2259)
    +* Expand environment variables in codeBase before loading extension [#1871](https://github.com/microsoft/vstest/pull/1871)
    +* Coverlet in-process collector is not loaded for version > 1.0.0 [#2221](https://github.com/microsoft/vstest/pull/2221)
    +* fix path in ngen [#2246](https://github.com/microsoft/vstest/pull/2246)
    +* LOC CHECKIN | Microsoft/vstest master | 20191104 [#2241](https://github.com/microsoft/vstest/pull/2241)
    +* Move Tp version to 16.5 [#2243](https://github.com/microsoft/vstest/pull/2243)
    +* Add support for an arg to enable progress indicator, disabled by default. [#2234](https://github.com/microsoft/vstest/pull/2234)
    +* Correct name and link for RFC 17 [#2232](https://github.com/microsoft/vstest/pull/2232)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.4.0...v16.5.0)
    +See changes since the last preview [here](https://github.com/microsoft/vstest/compare/16.5.0-preview-20200203-01...v16.5.0)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200205-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0)
    +
    +## 16.5.0-preview-20200203-01
    +
    +### Issues Fixed
    +
    +* Use version of external package with fixes [#2315](https://github.com/microsoft/vstest/pull/2315)
    +* Use latest version of VS that is available [#2314](https://github.com/microsoft/vstest/pull/2314)
    +* Pass coverlet codebase in runsettings for inproc data collector initialization [#2288](https://github.com/microsoft/vstest/pull/2288)
    +* Make --verbosity case insensitive [#2300](https://github.com/microsoft/vstest/pull/2300)
    +
    +See full log [here](https://github.com/microsoft/vstest/compare/v16.5.0-preview-20200116-01...v16.5.0-preview-20200203-01)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0-preview-20200203-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200203-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0-preview-20200203-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0-preview-20200203-01)  
    +
    +## 16.5.0-preview-20200116-01
    +
    +### Issues Fixed
    +
    +* Revert "Use patched version of TestPlatform.Extensions (#2283)" [#2307](https://github.com/microsoft/vstest/pull/2307)
    +* Update arcade [#2302](https://github.com/microsoft/vstest/pull/2302)
    +* Fix SocketCommunicationManager [#2290](https://github.com/microsoft/vstest/pull/2290)
    +
    +See full log [here](https://github.com/Microsoft/vstest/compare/v16.5.0-preview-20200110-02...v16.5.0-preview-20200116-01)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0-preview-20200116-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200116-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0-preview-20200116-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0-preview-20200116-01)
    +
    +## 16.5.0-preview-20200110-02
    +
    +### Issues Fixed
    +
    +* Remove duplicate counting of test results in Consolelogger [#2267](https://github.com/microsoft/vstest/pull/2267)
    +* Cap version of VS to <16.0 [#2285](https://github.com/microsoft/vstest/pull/2285)
    +* Use patched version of TestPlatform.Extensions [#2283](https://github.com/microsoft/vstest/pull/2283)
    +
    +See full log [here](https://github.com/Microsoft/vstest/compare/v16.5.0-preview-20200102-01...v16.5.0-preview-20200110-02)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0-preview-20200110-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200110-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0-preview-20200110-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0-preview-20200110-02)
    +
    +## 16.5.0-preview-20200102-01
    +
    +### Issues Fixed
    +
    +* Test run parameter added as part of CLI runsettings args [#2251](https://github.com/microsoft/vstest/pull/2251)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0-preview-20200102-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20200102-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0-preview-20200102-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0-preview-20200102-01)
    +
    +## 16.5.0-preview-20191216-02
    +
    +### Issues Fixed
    +
    +* Trx changes for fqdn mapping in test method name [#2259](https://github.com/microsoft/vstest/pull/2259)
    +* Fix for test discovery not working on mac machines [#2266](https://github.com/microsoft/vstest/pull/2266)
    +* Use RunSettingsFilePath from project file when using dotnet test [#2272](https://github.com/microsoft/vstest/pull/2272)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0-preview-20191216-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20191216-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0-preview-20191216-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0-preview-20191216-02)
    +
    +## 16.5.0-preview-20191115-01
    +
    +### Issues Fixed
    +
    +* Fixed Coverlet in-process collector not loaded for version > 1.0.0 [#2204](https://github.com/microsoft/vstest/pull/2221)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.5.0-preview-20191115-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20191115-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.5.0-preview-20191115-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.5.0-preview-20191115-01)
    +
    +## 16.4.0
    +
    +### Issues Fixed
    +
    +* Adding log prefixkey to html logger [#2204](https://github.com/microsoft/vstest/pull/2204)
    +* AnyCPU tests to choose default architecture based on process [#2206](https://github.com/microsoft/vstest/pull/2206)
    +* Only send Coverlet in proc datacollector dll to testhost [#2226](https://github.com/microsoft/vstest/pull/2226)
    +* Missing Cancel Implementation [#2227](https://github.com/microsoft/vstest/pull/2227)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.4.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20191025-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.4.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.4.0)
    +
    +## 16.4.0-preview-20191007-01
    +
    +### Issues Fixed / Features Added
    +
    +* Redirect procdump process output to diag files [#2181](https://github.com/microsoft/vstest/pull/2181)
    +* Implemented cancellation of individual source files discovery [#2134](https://github.com/microsoft/vstest/pull/2134)
    +* Enabling native code debugging of test host [#2190](https://github.com/microsoft/vstest/pull/2190)
    +* Logging Adapter Load issues to console [#2156](https://github.com/microsoft/vstest/pull/2156)
    +* Fixed DataCollector to load with only uri (and not friendly name) specified in Runsettings [#2177](https://github.com/microsoft/vstest/pull/2177)
    +* Added env var support to blame test results directory path and fixed blame aborting without killing the test host process on hang timeout when there is an error with dump collection/attachment [#2216](https://github.com/microsoft/vstest/pull/2216)
    +
    +## 16.3.0
    +
    +### Issues Fixed
    +
    +* Html logger [#2103](https://github.com/microsoft/vstest/pull/2103)
    +* Add LogFilePrefix Parameter for supporting trx for multi-targetted projects [#2140](https://github.com/microsoft/vstest/pull/2140)
    +* Support x86 platform targeting for .NET core tests [#2161](https://github.com/microsoft/vstest/pull/2161)
    +* Add logging for Translation layer [#2166](https://github.com/microsoft/vstest/pull/2166)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.3.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20190919-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.3.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.3.0)
    +
    +## 16.3.0-preview-20190828-03
    +
    +### Issues Fixed
    +
    +* Add noprogress parameter to disable progress indicator [#2117](https://github.com/microsoft/vstest/pull/2117)
    +* Accept short names for framewwork [#2116](https://github.com/microsoft/vstest/pull/2116)
    +* Specifying environment variables in RunSettings file [#2128](https://github.com/microsoft/vstest/pull/2128)
    +* VsTestConsoleWrapper endsession should shut down vstest console process [#2145](https://github.com/microsoft/vstest/pull/2145)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.3.0-preview-20190828-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20190828-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.3.0-preview-20190828-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.3.0-preview-20190828-03)
    +
    +## 16.3.0-preview-20190715-02
    +
    +### Issues Fixed
    +
    +* TestPlatform targeting netstandard2.0. [#2076](https://github.com/microsoft/vstest/pull/2076)
    +* Implemented the cancellation of discovery request [#2076](https://github.com/microsoft/vstest/pull/2076)
    +* Generating manifest for publishing to BAR. [#2069](https://github.com/microsoft/vstest/pull/2069)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.3.0-preview-20190715-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20190715-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.3.0-preview-20190715-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.3.0-preview-20190715-02)
    +
    +## 16.2.0
    +
    +### Issues Fixed
    +
    +* Updated TestPlatform.ObjectModel.nuspec. [#2055](https://github.com/microsoft/vstest/pull/2055)
    +* Fixed incorrect timeout message when test host crashes [#2056](https://github.com/microsoft/vstest/pull/2056)
    +* Incompatible framework message fix. [#2044](https://github.com/microsoft/vstest/pull/2044)
    +* Cleaned up remaining set of dependencies for source build. [#2058](https://github.com/microsoft/vstest/pull/2058)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.2.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/master/20190626-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.2.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.2.0)
    +
    +## 16.2.0-preview-20190606-02
    +
    +### Issues Fixed
    +
    +* Spurious vstest.console process spin up fixed. [#2035](https://github.com/microsoft/vstest/pull/2035)
    +* Test host locking pdb fixed [#2029](https://github.com/microsoft/vstest/pull/2029)
    +* Encoding change from UCS-2 to UTF-8. [#2044](https://github.com/microsoft/vstest/pull/2044)
    +* Unable to find Microsoft.VisualStudio.ArchitectureTools.PEReader fixed. [#2008](https://github.com/microsoft/vstest/pull/2008)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.2.0-preview-20190606-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190606-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.2.0-preview-20190606-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.2.0-preview-20190606-02)
    +
    +## 16.1.1
    +
    +### Issues Fixed
    +
    +* Prevent unnecessary progress indicator refresh to improve test run time. [#2024](https://github.com/microsoft/vstest/pull/2024)
    +* Changes to allow clients to provide environment variable while initializing VsTestConsoleWrapper [#2023](https://github.com/microsoft/vstest/pull/2023)
    +* Fix for the trx classname being wrongly stamped when testname and fullyqualifiedname are same. [#2014](https://github.com/microsoft/vstest/pull/2014)
    +* Search datacollectors in output directory as well. [#2015](https://github.com/microsoft/vstest/pull/2015)
    +* Changes to avoid restoring of packages that are not required for the BuildFromSource scenario. [#2017](https://github.com/microsoft/vstest/pull/2017)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.1.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190529-04;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.1.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.1.1)
    +
    +## 16.0.2-Preview-20190502-01
    +
    +### Issues Fixed
    +
    +* Improve the cli experience for dotnet test. [#1964](https://github.com/Microsoft/vstest/pull/1964)
    +* Improve readability of dotnet test [#1960](https://github.com/Microsoft/vstest/pull/1960)
    +* Make testhost.x86 large address aware [#1986](https://github.com/Microsoft/vstest/pull/1986)
    +* Vstest.console Should not message to Testhost process if it has exited [#1994](https://github.com/Microsoft/vstest/pull/1994)
    +* [Revert] Fix for dotnet test on a multi-target projects logs only the last target [#1996](https://github.com/Microsoft/vstest/pull/1996)
    +* [Trxlogger] Fixing the code to preserve newline for adapter logs to stdout [#1999](https://github.com/Microsoft/vstest/pull/1999)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.2-preview-20190502-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190502-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.2-preview-20190502-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.2-preview-20190502-01)
    +
    +## 16.0.1
    +
    +### Issues Fixed
    +
    +* Reverted aborting test run when source and target frameworks/architectures are incompatible. [#1935](https://github.com/Microsoft/vstest/pull/1935)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190304-05;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.1)
    +
    +## 16.0.0
    +
    +### Issues Fixed
    +
    +* Added missing Utilities dependency to netstandard1.5 [#1913](https://github.com/Microsoft/vstest/pull/1913)
    +* Add support for xplat vstest console in translationlayer [#1893](https://github.com/Microsoft/vstest/pull/1893)
    +* Aborting test run when source and target frameworks/architectures are incompatible. [#1789](https://github.com/Microsoft/vstest/pull/1789)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190228-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.0)
    +
    +## 16.0.0-preview-20190201-03
    +
    +### Issues Fixed
    +
    +* Running NETFramework 3.5 tests in compat mode [#1906](https://github.com/Microsoft/vstest/pull/1906)
    +* Make timeouts for translation layer timeout configurable. [#1909](https://github.com/Microsoft/vstest/pull/1909)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.0-preview-20190201-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190201-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.0-preview-20190201-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.0-preview-20190201-03)
    +
    +## 16.0.0-preview-20190124-02
    +
    +### Issues Fixed
    +
    +* Downgrade Test.Sdk to net40 [#1860](https://github.com/Microsoft/vstest/pull/1860)
    +* Fix xml exception when we are dealing with special chars [#1872](https://github.com/Microsoft/vstest/pull/1872)
    +* Fix - dotnet test on a multi-target projects logs only the last target [#1877](https://github.com/Microsoft/vstest/pull/1877)
    +* Avoid usage of JsonConvert in test host process [#1881](https://github.com/Microsoft/vstest/pull/1881)
    +* Fixing logging error in event sources [#1897](https://github.com/Microsoft/vstest/pull/1897)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.0-preview-20190124-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20190124-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.0-preview-20190124-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.0-preview-20190124-02)
    +
    +## 16.0.0-preview-20181205-02
    +
    +### Issues Fixed
    +
    +* Stop trying to connect if the test host exits unexpectedly [#1853](https://github.com/Microsoft/vstest/pull/1853)
    +* Move warning into a target to fix msbuild error [#1856](https://github.com/Microsoft/vstest/pull/1856)
    +* Adding the missing assemblyInfo files and updating the copyrights [#1859](https://github.com/Microsoft/vstest/pull/1859)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.0-preview-20181205-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20181205-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.0-preview-20181205-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.0-preview-20181205-02)
    +
    +## 16.0.0-preview-20181128-01
    +
    +### Issues Fixed
    +
    +* Allow external use of the TRX Logger [#1792](https://github.com/Microsoft/vstest/pull/1792)
    +* Add "!~" operator to test filter [#1803](https://github.com/Microsoft/vstest/pull/1803)
    +* Simplify SDK languages support [#1804](https://github.com/Microsoft/vstest/pull/1804)
    +* Make Translation Layer connection timeout configurable [#1843](https://github.com/Microsoft/vstest/pull/1843)
    +* Fixed issue where proc dump was not getting terminated on no crash [#1849](https://github.com/Microsoft/vstest/pull/1849)
    +
    +### Drops
    +
    +* TestPlatform vsix: [16.0.0-preview-20181128-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20181128-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [16.0.0-preview-20181128-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/16.0.0-preview-20181128-01)
    +
    +## 15.9.0
    +
    +### Issues Fixed
    +
    +* Unstable testId for nunit tests [#1785](https://github.com/Microsoft/vstest/pull/1785)
    +* Run tests only for test projects [#1745](https://github.com/Microsoft/vstest/pull/1745)
    +* Add info log if try to run tests with no IsTestProject prop [#1778](https://github.com/Microsoft/vstest/pull/1778)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.9.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.9/20181008-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.9.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.9.0)
    +
    +## 15.9.0-preview-20180924-03
    +
    +### Issues Fixed
    +
    +* Fix Video Datacollector errors [#1719](https://github.com/Microsoft/vstest/pull/1719)
    +* Show error message on Framework35 [#1723](https://github.com/Microsoft/vstest/pull/1723)
    +* Suggest publish for running on an isolated machine[#1726](https://github.com/Microsoft/vstest/pull/1726)
    +* Fix UWP tests app socket exception [#1728](https://github.com/Microsoft/vstest/pull/1728)
    +* Run tests only for test projects in "dotnet test my.sln" scenario [#1745](https://github.com/Microsoft/vstest/pull/1745)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.9.0-preview-20180924-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180924-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.9.0-preview-20180924-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.9.0-preview-20180924-03)
    +
    +## 15.9.0-preview-20180807-05
    + 
    +### Issues Fixed
    +
    +* Fix for VSTest to honor /nologo user input from dotnet cli [#1717](https://github.com/Microsoft/vstest/pull/1717)
    +* Fixed ISettingsProvider in TestAdapter assembly [#1704](https://github.com/Microsoft/vstest/pull/1704)
    +* Added `.NETCoreApp,Version=v2.0` example in error message [#1714](https://github.com/Microsoft/vstest/pull/1714)
    +* Print start of testhost standard error stacktrace [#1708](https://github.com/Microsoft/vstest/pull/1708)
    +* Use of culture specified by user in case it differs with that of OS [#1712](https://github.com/Microsoft/vstest/pull/1712)
    +* Added attributes for sequence file generated by blame [#1716](https://github.com/Microsoft/vstest/pull/1716)
    +* Trx Logger class name fix for Nunit Data Driven tests [#1677](https://github.com/Microsoft/vstest/pull/1677)
    +* Trx Logger Fixed to generate trx file when test run aborts [#1710](https://github.com/Microsoft/vstest/pull/1710)
    +* Added trace level for diag argument [#1681](https://github.com/Microsoft/vstest/pull/1681)
    + 
    +### New Features introduced
    +
    +* Enhancing Blame data collector options to include DumpType and AlwaysCollectDump [#1682](https://github.com/Microsoft/vstest/pull/1682)
    +* Procdump arguments enhanced to handle crash scenarios [#1700](https://github.com/Microsoft/vstest/pull/1700)
    + 
    +### Drops
    +
    +* TestPlatform vsix: [15.9.0-preview-20180807-05](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180807-05;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.9.0-preview-20180807-05](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.9.0-preview-20180807-05)
    +
    +## 15.8.0
    +
    +### Issues Fixed
    +
    +* Fix vstest.console.exe grabs exclusive read access to its test container [#1660](https://github.com/Microsoft/vstest/pull/1660)
    +* Registring correct property attributes during deserialization [#1644](https://github.com/Microsoft/vstest/pull/1644)
    +* Fixed test platform messages on cancellation request [#1667](https://github.com/Microsoft/vstest/pull/1667)
    +* Fixed warning messages for scenario when no tests are found matching TestCaseFilter [#1656](https://github.com/Microsoft/vstest/pull/1656)
    +* Fixed UWP VC++ unit tests not executing [#1649](https://github.com/Microsoft/vstest/pull/1649)
    +* Handling null value deserialization in TestCategory [#1640](https://github.com/Microsoft/vstest/pull/1640)
    +
    +### New Features introduced
    +
    +* Auto-generate F# program file. [#1664](https://github.com/Microsoft/vstest/pull/1664)
    +* Added support for dotnet test --collect:"Code Coverage" (windows only) [#981](https://github.com/Microsoft/vstest/issues/981)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.8.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180710-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.8.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.8.0)
    +
    +## 15.8.0-preview-20180610-02
    +
    +### New Features introduced
    +
    +* Collect Code coverage with dotnet core sdk on windows. [#981](https://github.com/Microsoft/vstest/issues/981)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.8.0-preview-20180610-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180610-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.8.0-preview-20180610-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.8.0-preview-20180610-02)
    +
    +## 15.8.0-preview-20180605-02
    +
    +### Issues Fixed
    +
    +* Fix Exception thrown while creating framework based on default enums. [#1598](https://github.com/Microsoft/vstest/pull/1598)
    +* Deprecate Testplatform\Extensions path for Adapters [#1602](https://github.com/Microsoft/vstest/pull/1602)
    +* Update Test Source with Package for Inprogress Tests [#1605](https://github.com/Microsoft/vstest/pull/1605)
    +* Use DateTime.UtcNow instead of DateTime.Now for consistency across test reporting data [#1612](https://github.com/Microsoft/vstest/pull/1612)
    +* Fixed RecordResult to SendTestCaseEnd if not already for datacollectors to end and get attachments correctly [#1615](https://github.com/Microsoft/vstest/pull/1615)
    +* Fix attachment uri in trx if same attachment filename is same [#1625](https://github.com/Microsoft/vstest/pull/1625)
    +* Add support to escape/unescape testcase filter strings [#1627](https://github.com/Microsoft/vstest/pull/1627)
    +
    +### New Features introduced
    +
    +* Add a tool to migrate testsettings to runsettings [#1600](https://github.com/Microsoft/vstest/pull/1600)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.8.0-preview-20180605-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180605-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.8.0-preview-20180605-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.8.0-preview-20180605-02)
    +
    +## 15.8.0-preview-20180510-03
    +
    +### Issues Fixed
    +
    +* Extend FastFilter to support multiple properties. [#1523](https://github.com/Microsoft/vstest/pull/1523)
    +* Make all communication timeouts configurable. [#1538](https://github.com/Microsoft/vstest/pull/1538)
    +* Honoring cancel and abort request in test platform. [#1543](https://github.com/Microsoft/vstest/pull/1543)
    +* FilterOptions serialization issue when running .NET core tests. [#1551](https://github.com/Microsoft/vstest/pull/1551)
    +* Telemetry points for legacy settings. [#1564](https://github.com/Microsoft/vstest/pull/1564)
    +* Flushing test results even if RecordEnd is not called. [#1573](https://github.com/Microsoft/vstest/pull/1573)
    +* Searching adapters in Test Source directory in all scenarios. [#1574](https://github.com/Microsoft/vstest/pull/1574)
    +* Filtering non existent adapter paths. [#1578](https://github.com/Microsoft/vstest/pull/1578)
    +
    +### New Features introduced
    +
    +* Introduced category attribtue for adapter to specify supported assembly type.[#1528](https://github.com/Microsoft/vstest/pull/1528), [#1529](https://github.com/Microsoft/vstest/pull/1529), [#1537](https://github.com/Microsoft/vstest/pull/1537)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.8.0-preview-20180510-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180510-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.8.0-preview-20180510-03](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.8.0-preview-20180510-03)
    +
    +## 15.7.2
    +
    +### Issues Fixed
    +
    +* Code coverage fix for async functions. [242314](https://developercommunity.visualstudio.com/content/problem/242314/code-coverage-doesnt-show-async-methods.html)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.7.2]( https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.7/20180514-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.7.2](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.7.2)
    +
    +## 15.7.0
    +
    +### Issues Fixed
    +
    +* Code coverage fix for runsettings. [#1510](https://github.com/Microsoft/vstest/pull/1510)
    +* Logging fix for UWP.[#1508](https://github.com/Microsoft/vstest/pull/1508)
    +* Perf improvements for LUT [#1517](https://github.com/Microsoft/vstest/pull/1517)
    +* Fix for preserving CR LF line endings in TRX file. [#1521](https://github.com/Microsoft/vstest/pull/1521)
    +* Fix socket exception on datacollection in parallel. [#1514](https://github.com/Microsoft/vstest/pull/1514)
    +
    +### New Features introduced
    +
    +* Introduced running UWP test using ".appx" file as input, for CLI.
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.7.0]( https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.7/20180403-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.7.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.7.0)
    +
    +## 15.7.0-preview-20180320-02
    +
    +### Issues Fixed
    +
    +* Fixing the tests for string comparison issue. [#1462](https://github.com/Microsoft/vstest/pull/1462)
    +* Sync for binarywriter writes.[#1470](https://github.com/Microsoft/vstest/pull/1470)
    +* Usability Fixes [#1478](https://github.com/Microsoft/vstest/pull/1478)
    +* Fix for Design mode clients hang for errors [1451](https://github.com/Microsoft/vstest/pull/1451)
    +* Fix datacollectors temporary files cleanup [1483](https://github.com/Microsoft/vstest/pull/1483)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.7.0-preview-20180320-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180320-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.7.0-preview-20180320-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.7.0-preview-20180320-02)
    +
    +## 15.7.0-preview-20180307-01
    +
    +### Issues Fixed
    +
    +* Fix CUIT tests fail to run on no VS installed machine.  [#1450](https://github.com/Microsoft/vstest/pull/1450)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.7.0-preview-20180307-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180307-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.7.0-preview-20180307-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.7.0-preview-20180307-01)
    +
    +## 15.7.0-preview-20180221-13
    +
    +### Issues Fixed
    +
    +* Adding Category to Test Category mapping for ListFullyQualifiedTests. [#1369](https://github.com/Microsoft/vstest/pull/1369)
    +* Support escaping "," in Test filter. [#1374](https://github.com/Microsoft/vstest/pull/1374)
    +* Generate proper default settings for EnableCodeCoverage. [#1390](https://github.com/Microsoft/vstest/pull/1390)
    +* Test run directory fix for loggers. [#1399](https://github.com/Microsoft/vstest/pull/1399)
    +* Fixed the normal verbosity level to not log the full information for non-failed tests. [#1396](https://github.com/Microsoft/vstest/pull/1396)
    +* Ignore case for targetframework input. [#1420](https://github.com/Microsoft/vstest/pull/1420)
    +* Fixed logger to have additonal lines after std output. [#1421](https://github.com/Microsoft/vstest/pull/1421)
    +* Fixed the error message. [#1422](https://github.com/Microsoft/vstest/pull/1422)
    +* Fix: Logger attachments not coming in vsts test run. [#1431](https://github.com/Microsoft/vstest/pull/1431)
    +* Fixed help test to mention default value of verbosity in console logger. [#1433](https://github.com/Microsoft/vstest/pull/1433)
    +* Exceptions flow to Translation layer [#1434](https://github.com/Microsoft/vstest/pull/1434)
    +
    +### New Features introduced
    +
    +* Logger support in run settings.[#1382](https://github.com/Microsoft/vstest/pull/1382)
    +* Added CUIT package in vstest xcopy package. [#1394](https://github.com/Microsoft/vstest/pull/1394)
    +* Making Trx Logger Hierarchical for ordered test and data driven tests. [#1330](https://github.com/Microsoft/vstest/pull/1330)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.7.0-preview-20180221-13](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180221-13;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.7.0-preview-20180221-13](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.7.0-preview-20180221-13)
    +
    +## 15.6.2
    +
    +### Issues Fixed
    +
    +* Fix socket exception on datacollection in parallel  [#1505](https://github.com/Microsoft/vstest/pull/1505)
    +* Fix datacollectors temporary files cleanup [#1506](https://github.com/Microsoft/vstest/pull/1506)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.6.2](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.6/20180326-08;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [v15.6.2](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.6.2)
    +
    +## 15.6.1
    +
    +### Issues Fixed
    +
    +* Synchronize concurrent writes to communication channel  [#1457](https://github.com/Microsoft/vstest/pull/1457)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.6.1](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.6/20180307-08;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [v15.6.1](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.6.1)
    +
    +## 15.6.0
    +
    +### Issues Fixed
    +
    +* Fix for Communication b/w testhost, & datacollector fails causing tests processes to hang. [#1406](https://github.com/Microsoft/vstest/pull/1406)
    +* Fix for Cancellation hanging TestExplorer with the unclickable cancelling. [#1398](https://github.com/Microsoft/vstest/pull/1398)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.6.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.6/20180215-04;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [v15.6.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.6.0)
    +
    +## 15.6.0-preview-20180207-05
    +
    +### Issues Fixed
    +
    +* Enabling diagnostics for UWP causes app to hang. [#1387](https://github.com/Microsoft/vstest/pull/1387)
    +
    +### Drops
    +
    +* Microsoft.TestPlatform.ObjectModel: [v15.6.0-preview-20180207-05](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.6.0-preview-20180207-05)
    +
    +## 15.6.0-preview-20180109-01
    +
    +### Issues Fixed
    +
    +* Make latest ObjectModel API compatible with ObjectModel 11.0.0. [#1251](https://github.com/Microsoft/vstest/pull/1251/)
    +* Fix no error message in case of invalid runsettings. [#1344](https://github.com/Microsoft/vstest/pull/1344)
    +* Fix CodedUI debug broken. [#1352](https://github.com/Microsoft/vstest/pull/1352)
    +* Fix debug stop causing 10s or indefinite wait in test explorer.  [#1358](https://github.com/Microsoft/vstest/pull/1358)
    +* Fix video datacollector assemblies first changes exception while running tests .  [#1362](https://github.com/Microsoft/vstest/pull/1362)
    +* Fix datacollector initialization failure on slow machines. [#1355](https://github.com/Microsoft/vstest/pull/1355)
    +* Fix running fakes and code coverage with embedded testsettings in runsettings. [#1364](https://github.com/Microsoft/vstest/pull/1364)
    +
    +### New Features introduced
    +
    +* Support reflection based discovery for UWP C++ Unit tests projects.[#1336](https://github.com/Microsoft/vstest/pull/1336)
    +* Add testhost external dependencies for UWP to Microsoft.NET.Test.Sdk. [#1351](https://github.com/Microsoft/vstest/pull/1351)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.6.0-preview-20180109-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20180109-01;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.6.0-preview-20180109-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.6.0-preview-20180109-01)
    +
    +## 15.6.0-preview-20171211-02
    +
    +### Issues Fixed
    +
    +* Removed warning for AnyCPU assemblies
    +* Fix updating runsettings in dotnet core.
    +* Fix exception in Event Log DataCollector. [#1288](https://github.com/Microsoft/vstest/pull/1288)
    +* Fix support for multiple paths is TestAdapterPath Argument. [#1320](https://github.com/Microsoft/vstest/pull/1320)
    +* Perf: Using Event based communication over sockets using LengthPrefix communication channel. [1294](https://github.com/Microsoft/vstest/pull/1294)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.6.0-preview-20171211-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20171211-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.6.0-preview-20171211-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.6.0-preview-20171211-02)
    +
    +## 15.5.0
    +
    +### Issues Fixed
    +
    +* Removed compile time dependency on castle.core.dll. [#1246](https://github.com/Microsoft/vstest/pull/1246)
    +* Fix test run for x64 c++ tests. [#1269](https://github.com/Microsoft/vstest/pull/1269)
    +* Localization fixes for error scenarios. [#1266](https://github.com/Microsoft/vstest/pull/1266)
    +* Fix for FastFilter issue with TestCaseFilter. [#1252](https://github.com/Microsoft/vstest/pull/1252)
    +* Updating codecoverage analysis dll's in external package. [#1282](https://github.com/Microsoft/vstest/pull/1282)
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.5/20171108-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0)
    +
    +## 15.5.0-preview-20171031-01
    +
    +### Issues Fixed
    +
    +* Add LocalExtensionData property to TestCase Class.
    +* Do not crash data collector if extension fails to initialize or set environment variables.
    +* Use TPv2 as default for .NET 3.5 test projects.
    +* Loading native dll's correctly for UWP release mode.
    +* Insertion PR: 
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0-preview-20171031-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.5/20171031-01;/TestPlatform.vsix)
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0-preview-20171031-01](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20171031-01)
    +
    +## 15.5.0-preview-20171012-09
    +
    +### Issues Fixed
    +
    +* Fixed Data Collector Attachment issues for legacy TMI test execution workflow.
    +* Added error message and help when vstest.console is invoked without arguments.
    +* Fixed failure in loading extensions without Identifier Data.
    +* Handled Test Host close.
    +* TestCase Display Name is displayed instead of FullyQualifiedName.
    +* Fixed issues with Static Cover Coverage, Ordered tests through TMI.
    +
    +### New Features introduced
    +
    +* Added Telemetry Infra for Design Mode.
    +* Supported running .Net Framework v35 in compat mode.
    +* Localization changes.
    +* Automatically find Platform and Framework if not specified explicitly.
    +* Adding object model changes and Telemetry optin status.
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.5.0-preview-20170923-02...v15.5.0-preview-20171012-09).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0-preview-20171012-09](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20171012-09;/TestPlatform.vsix)
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0-preview-20171012-09](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20171012-09)
    +
    +## 15.5.0-preview-20170923-02
    +
    +### Issues Fixed
    +
    +* Feature flag for executing net35 tests through TPv2 in compat mode.
    +* Removed unnecessary binding redirects from app.configs. [More info here](https://github.com/Microsoft/vstest/pull/1117)
    +* Put quotes around TestHost path so in case of spaces in name it starts correctly. [More info here](https://github.com/Microsoft/vstest/pull/1108)
    +* Performance Automation Infra.
    +
    +### New Features introduced
    +
    +* Added filter support on test case discovery.
    +* Added Telemetry Collection Infrastructure.
    +* Added support for listing fully qualified test cases.
    +* Exposed discovery events to loggers.
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/f8020e56e418f3a14637d401928fd154a061c9c4...v15.5.0-preview-20170923-02).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0-preview-20170923-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170923-02;/TestPlatform.vsix)
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0-preview-20170923-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20170923-02)
    +
    +## 15.5.0-preview-20170914-09
    +
    +### Issues Fixed
    +
    +* 
    +* 
    +* Made TestPlatform.ObjectModel CLS-compliant
    +* Made Microsoft.CodeCoverage as nuget package dependency for Microsoft.NET.Test.Sdk nuget package. [More info here](https://github.com/Microsoft/vstest/issues/852)
    +* Perf improvements. [More info here](https://github.com/Microsoft/vstest/pull/1041)
    +* Fixed issue related to /EnableCodeCoverage. [More info here](https://github.com/Microsoft/vstest/pull/1072)
    +* 
    +* Highest version filtering for extensions. [More info here](https://github.com/Microsoft/vstest/pull/1051)
    +* 
    +
    +### New Features introduced
    +
    +* InProc execution of tests inside vstest.console process. [More info here](https://github.com/Microsoft/vstest/pull/1009)
    +* Added Verbosity Level as prefix for loggers. [More info here](https://github.com/Microsoft/vstest/pull/967)
    +* Event Log Data Collector. [More info here](https://github.com/Microsoft/vstest/blob/master/docs/analyze.md#event-log-data-collector)
    +* Introduced /UseVsixExtensions argument in CLI.
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.5.0-preview-20170810-02...f8020e56e418f3a14637d401928fd154a061c9c4).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0-preview-20170914-09](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170914-09;/TestPlatform.vsix)
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0-preview-20170914-09](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20170914-09)
    +
    +## 15.5.0-preview-20170810-02
    +
    +### Issues Fixed
    +
    +* 
    +* 
    +* Made latest testhost compat with older vstest.console and vice versa.
    +* Some performance improvement
    +
    +### New Features introduced
    +
    +* Added blame data collector support in `dotnet test`.
    +* Add ExecutionThreadApartmentState property in runsettings. [More info here](https://github.com/Microsoft/vstest/blob/master/docs/configure.md#execution-thread-apartment-state)
    +* Added async APIs support in translationLayer.
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/73f4a07adfa802257e3ebe11c197016010f2e080...v15.5.0-preview-20170727-01).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0-preview-20170810-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170810-02;/TestPlatform.vsix)
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0-preview-20170810-02](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20170810-02)
    +
    +## 15.5.0-preview-20170727-01
    +
    +### Issues Fixed
    +
    +* Support for devices: build up the TestHostRuntime APIs
    +* Console test runs will not collect File/LineNumber information
    +* Several performance improvements
    +* Reliability improvements to parallel runs
    +* Engineering fixes to build/test
    +
    +### New Features introduced
    +
    +* Blame for vstest. Reports the test which crashes a run
    +* Response file support for vstest
    +* `TestSessionTimeout` cancels a test run if it exceeds a timeout
    +* Mono support for vstest
    +* VSTest now runs on .NET 4.5.1 runtime
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/73f4a07adfa802257e3ebe11c197016010f2e080...v15.5.0-preview-20170727-01).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.5.0-preview-20170727-01](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170727-01;/TestPlatform.vsix)
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.5.0-preview-20170727-01](http://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.5.0-preview-20170727-01)
    +
    +## 15.3.0
    +
    +### Issues Fixed
    +
    +* Clean testhost before sending discoveryComplete/ExecutionCompltete.
    +* Closing VS should also close vstest.console process.
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.3.0-preview-20170618-03...rel/15.3-rtm).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.3.0](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.3-rtm/20170807-05;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.3.0](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.3.0)
    +
    +## 15.3.0-preview-20170618-03
    +
    +### Issues Fixed
    +
    +* 
    +* 
    +* 
    +* 
    +* 
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.3.0-preview-20170601-03...v15.3.0-preview-20170618-03).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.3.0-preview-20170618-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/15.3-rtm/20170618-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.3.0-preview-20170618-03](http://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.3.0-preview-20170618-03)
    +
    +## 15.3.0-preview-20170601-03
    +
    +* Monitor data Collector Launch and Exit events, log error in case data collector crashes.
    +* Fixed for issue where using environment variables in test results directory path in run settings throws error.
    +* Added support to handle `CollectSourceInformation` flag in runsettings
    +* Fixed scenario where testhost crash info is not coming to Testwindow
    +* In case of parallel if test host is aborted, add a new one in place of that
    +
    +### Issues Fixed
    +
    +* 
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.3.0-preview-20170517-02...v15.3.0-preview-20170601-03).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.3.0-preview-20170601-03](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170601-03;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.3.0-preview-20170601-03](http://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.3.0-preview-20170601-03)
    +
    +## 15.3.0-preview-20170517-02
    +
    +* Fakes support.
    +* Wait for testhost stderr to be available if connection is broken between vstest.console and testhost.
    +* Data collector log message improvements.
    +* Extracedt socket implementation to allow experimentation with multiple data interchange formats and ipc. Added concept of framing for messages passed between various processes. TestRequestSender2 uses these concepts and is a replacement for the earlier TestRequestSender.
    +* Localized new added string.
    +* Code cleanup
    +
    +### Issues Fixed
    +
    +* 
    +* 
    +* 
    +* 
    +* 
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.3.0-preview-20170427-09...v15.3.0-preview-20170517-02).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.3.0-preview-20170517-02](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170517-02;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.3.0-preview-20170517-02](http://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.3.0-preview-20170517-02)
    +
    +## 15.3.0-preview-20170425-07
    +
    +* Data collector support enabled
    +* Test Host Extensibility enabled
    +* ResultsDirectory argument and Runsettings priority order [#322](https://github.com/Microsoft/vstest/pull/322)
    +* Supporting Multiple TestProperty with the same key value [#328](https://github.com/Microsoft/vstest/pull/328)
    +* Allow VSTestConsole path to be specified [#325](https://github.com/Microsoft/vstest/pull/325)
    +* Adding /InIsolation flag for backward compatibility [#414](https://github.com/Microsoft/vstest/pull/414)
    +* Fixed reading test adapter paths from runsettings [#455](https://github.com/Microsoft/vstest/pull/455)
    +* Honor cache timeout for discovery. [#470](https://github.com/Microsoft/vstest/pull/470)
    +* Read asynchronously from test host process [#529](https://github.com/Microsoft/vstest/pull/529)
    +* Fixing nunit inconclusive tests reported as failure [#533](https://github.com/Microsoft/vstest/pull/533)
    +* BatchSize Runsettings [#550](https://github.com/Microsoft/vstest/pull/550)
    +* Make default testcase filter property name FullyQualifiedName [#555](https://github.com/Microsoft/vstest/pull/555)
    +* Logger extensibility [#557](https://github.com/Microsoft/vstest/pull/557)
    +* Update Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI.vsmanproj [#581](https://github.com/Microsoft/vstest/pull/581)
    +* Add Microsoft.NET.Test.Sdk.props to buildMultiTargeting [#580](https://github.com/Microsoft/vstest/pull/580)
    +* Moving to Netcoreapp 2.0 [#603](https://github.com/Microsoft/vstest/pull/603)
    +* Create config file for test project targeting .NET Framework [#642](https://github.com/Microsoft/vstest/pull/642)
    +* Create new RuntimeProvider to be associated with each ProxyOperationManager [#653](https://github.com/Microsoft/vstest/pull/653)
    +* Inject entry point only for project targeting netcoreapp [#665](https://github.com/Microsoft/vstest/pull/665)
    +* Dotnet test output coloring [#641](https://github.com/Microsoft/vstest/pull/641)
    +* Remove binding redirect of Newtonsoft.Json from testhost config file [#663](https://github.com/Microsoft/vstest/pull/663)
    +* Resolve testhost from source directory if we couldnt resolve it via nuget cache [#690](https://github.com/Microsoft/vstest/pull/690)
    +* Improve testplatform message [#691](https://github.com/Microsoft/vstest/pull/691)
    +* Protocol v2 improvements [#672](https://github.com/Microsoft/vstest/pull/672), [#698](https://github.com/Microsoft/vstest/pull/698)
    +* Use "dotnet test --verbosity" arg for console verbosity [#735](https://github.com/Microsoft/vstest/pull/735)
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0...v15.3.0-preview-20170425-07).
    +
    +### Drops
    +
    +* TestPlatform vsix: [15.3.0-preview-20170425-07](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/Microsoft/vstest/master/20170425-07;/TestPlatform.vsix)
    +* Microsoft.TestPlatform.ObjectModel: [15.3.0-preview-20170425-07](http://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/15.3.0-preview-20170425-07)
    +
    +## 15.0.0-preview-20170125-04
    +
    +* Localization for following nuget packages:
    +
    + 1) Microsoft.TestPlatform.CLI
    + 2) Microsoft.TestPlatform
    + 3) Microsoft.TestPlatform.ObjectModel
    + 4) Microsoft.TestPlatform.TestHost
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0-preview-20170123-02...15.0.0-preview-20170125-04).
    +
    +### Drops
    +
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20170125-04](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20170125-04)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20170125-04](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20170125-04)
    +
    +## 15.0.0-preview-20170123.02
    +
    +* Allow multiple test properties with same key [#239](https://github.com/Microsoft/vstest/issues/239), [#358](https://github.com/Microsoft/vstest/issues/358)
    +* Localization for testplatform vsix package [#146](https://github.com/Microsoft/vstest/issues/146)
    +* Working directory should be set to test source parent directory [#311](https://github.com/Microsoft/vstest/issues/311)
    +* Allow relative source paths to vstest.console [#331](https://github.com/Microsoft/vstest/issues/331)
    +* Stacktrace and error message should be in context of failed test [#285](https://github.com/Microsoft/vstest/issues/285)
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/RC.3...15.0-rtm).
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20170123-02](https://devdiv.visualstudio.com/DevDiv/_build/index?buildId=533598&_a=summary)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20170123-02](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20170123-02)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20170123-02](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20170123-02)
    +
    +## 15.0.0-preview-20170106.08
    +
    +* First Draft for the Protocol tool. [#306](https://github.com/Microsoft/vstest/pull/306)
    +* Fixed DiaSession issue which showed async methods to be `external` [#307](https://github.com/Microsoft/vstest/pull/307)
    +* Localized vstest [#308](https://github.com/Microsoft/vstest/pull/308)
    +* Added OutputType to Microsoft.NET.Test.Sdk.target [#310](https://github.com/Microsoft/vstest/pull/310)
    +* Enclosed run settings arguments to handle whitespace [#312](https://github.com/Microsoft/vstest/pull/312)
    +* Converted TestPlatform.vsix from V2 to V3 format [#316](https://github.com/Microsoft/vstest/pull/316)
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0-preview-20161227-02...v15.0.0-preview-20170106-08).
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20170106-08](https://devdiv.visualstudio.com/DevDiv/VS.in%20Agile%20Testing%20IDE/_build/index?buildId=505945&_a=summary&tab=artifacts)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20170106-08](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20170106-08)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20170106-08](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20170106-08)
    +
    +## 15.0.0-preview-20161227.02
    +
    +* Add enhancement: trx logger can take logfile parameter [#282](https://github.com/Microsoft/vstest/pull/282).
    +* Allow TranslationLayer to specify Diag parameters [#296](https://github.com/Microsoft/vstest/pull/296).
    +* Passing runsettings as command line arguments [#297](https://github.com/Microsoft/vstest/pull/297).
    +* Localization work [#302](https://github.com/Microsoft/vstest/pull/302).
    +* Testhost Diag log file name format change [#303](https://github.com/Microsoft/vstest/pull/303).
    +* Fix for issue where xlftool.exe is not able to update neutral xlf file if we update any existing resource string [#305](https://github.com/Microsoft/vstest/pull/305).
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0-preview-20161216-01...v15.0.0-preview-20161227-02).
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20161227-02](https://devdiv.visualstudio.com/DevDiv/VS.in%20Agile%20Testing%20IDE/_build/index?buildId=490545&_a=summary&tab=artifacts)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20161227-02](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20161227-02)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20161227-02](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20161227-02)
    +
    +## 15.0.0-preview-20161216.01
    +
    +* Migrate to csproj from xproj [#217](https://github.com/Microsoft/vstest/pull/217).
    +* Translationlayer timeout for CustomHost Launch changed to indefinate [#265](https://github.com/Microsoft/vstest/pull/265)
    +* Added net46 folder in lib of Microsoft.TestPlatform Nuget Package [#247](https://github.com/Microsoft/vstest/pull/247).
    +* Added license link.
    +* Added third party notice to nuget packages [#249](https://github.com/Microsoft/vstest/pull/249).
    +* Change assembly signing to public [#256](https://github.com/Microsoft/vstest/pull/256).
    +* Make testhost a project dependency instead of content [#264](https://github.com/Microsoft/vstest/pull/264).
    +* Several changes to build infrastructure for csproj migration [#262](https://github.com/Microsoft/vstest/pull/262) [#268](https://github.com/Microsoft/vstest/pull/268/files).
    +* Include microbuild.core as a dependency for signing [#267](https://github.com/Microsoft/vstest/pull/267).
    +* Make External packages are restored with a separate csproj [#273](https://github.com/Microsoft/vstest/pull/273).
    +* Add Acceptance tests for netcore1.0 target [#259](https://github.com/Microsoft/vstest/pull/259).
    +* Add Acceptance tests for netcore1.1 target [#270](https://github.com/Microsoft/vstest/pull/270).
    +* Added E2E test for RunTestsWithCustomTestHostLauncher.
    +* Change testcase gereration id algorithm to SHA1 to be in compat with Associate-WorkItem scenarios [#279](https://github.com/Microsoft/vstest/pull/279).
    +* Bug fix: Default logger output path should be cmd-line friendly [#244](https://github.com/Microsoft/vstest/issues/244).
    +* Bug fix: TRX logger Started Time incorrect [#253](https://github.com/Microsoft/vstest/pull/253).
    +* Update README.md [#263](https://github.com/Microsoft/vstest/pull/263).
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0-preview-20161123-03...v15.0.0-preview-20161216-01).
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20161216-01](https://devdiv.visualstudio.com/DevDiv/VS.in%20Agile%20Testing%20IDE/_build/index?buildId=474910&_a=summary&tab=summary)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20161216-01](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20161216-01)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20161216-01](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20161216-01)
    +
    +## 15.0.0-preview-20161123.03
    +
    +* Support for debugging .net core project.
    +* Support for parallel discovery and execution.
    +* Support to discover and run test from a solution having .net core and desktop project.
    +* Support of arguments(output, configuration, framework and noBuild) in dotnet test.
    +* Support to run test from project targeting multiple TargetFrameworkMoniker using dotnet test.
    +* Support for trx logger in non-windows machine.
    +* Added diag argument to enable logging in vstest.console.
    +* Acceptance test for test platform.
    +* Bug fix: display a message on console when dotnet is not installed on the machine.
    +* Bug fix: dotnet test should return a non-0 exit code when any test fails [here](https://github.com/Microsoft/vstest/issues/241).
    +* Bug fix: dotnet test fails due to missing quotes in the path of vstest.console [here](https://github.com/Microsoft/vstest/issues/231).
    +* Bug fix: terminate vstest.console if no testhost found [here](https://github.com/Microsoft/vstest/issues/144).
    +* Bug fix: testCaseFilter argument doesn't filter tests in .net core [here](https://github.com/Microsoft/vstest/issues/201).
    +* Bug fix: cannot add Microsoft.Net.Test.Sdk as a dependency of net451 projects [here](https://github.com/Microsoft/vstest/issues/190).
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0-preview-20160923-03...v15.0.0-preview-20161123-03).
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20161123-03](https://devdiv.visualstudio.com/DevDiv/VS.in%20Agile%20Testing%20IDE/_build/index?buildId=442970&_a=summary)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20161123-03](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20161123-03)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20161123-03](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20161123-03)
    +
    +## 15.0.0-preview-20160923-03
    +
    +* New configuration `DisableParallelization` in runsettings. This setting may be used by adapters to disable parallel run in certain scenarios, e.g. test profiling or instrumented runs.
    +* Support for non-shared test hosts. A non shared test host is exclusive per test source. E.g. .net core tests use a non-shared host.
    +* New nuget package: Microsoft.TestPlaform.TestHost. All .net core test apps will refer to this package.
    +* Sample performance tests for test platform
    +* Bug fix: support for reg free COM in Dia
    +* Bug fix: display a message in VS on test host crash
    +* Bug fix: in .net core, user may provide relative path to run tests
    +
    +A list of all changes since last release are available [here](https://github.com/Microsoft/vstest/compare/v15.0.0-preview-20160914-02...v15.0.0-preview-20160923-03).
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20160923-03](https://devdiv.visualstudio.com/DevDiv/VS.in%20Agile%20Testing%20IDE/_build/index?buildId=343725&_a=summary)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20160923-03](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20160923-03)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20160923-03](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20160923-03)
    +
    +## 15.0.0-preview-20160914-02
    +
    +* Support for .net core framework
    +* New nuget package `Microsoft.Testplatform.CLI` for dotnet-cli
    +* Performance instrumentation of runner, discovery and execution
    +* Bug fix: Handle crash of test host
    +* Bug fix: Handle paths and arguments on Unix
    +* Bug fix: Sign core binaries
    +
    +### Drops
    +
    +* TestPlatform vsix: [TestPlatform.CI.Real-20160914-02](https://devdiv.visualstudio.com/DevDiv/VS.in%20Agile%20Testing%20IDE/_build/index?buildId=329464&_a=summary)
    +* Microsoft.TestPlatform.ObjectModel: [15.0.0-preview-20160914-02](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.ObjectModel/15.0.0-preview-20160914-02)
    +* Microsoft.TestPlatform.TranslationLayer: [15.0.0-preview-20160914-02](https://dotnet.myget.org/feed/vstest/package/nuget/Microsoft.TestPlatform.TranslationLayer/15.0.0-preview-20160914-02)
    diff --git a/docs/report.md b/docs/report.md
    new file mode 100644
    index 0000000000..0dee97d6bf
    --- /dev/null
    +++ b/docs/report.md
    @@ -0,0 +1,231 @@
    +# Reporting test results
    +
    +Test discovery, execution results in a test run can be controlled with test
    +loggers. This document will cover details on installation, usage and authoring
    +of test loggers.
    +
    +## Test loggers
    +
    +A test logger is a test platform extension to control reporting of test results.
    +It can perform tasks when a test run message, individual test
    +results or the test run completion events are reported by the test platform.
    +
    +You can author a test logger to print messages on the console, generate result
    +files of a specific reporting format, or even report results to various CI/CD
    +services. Default inputs to a test logger can be provided in the command line.
    +
    + Please refer to [this section](./report.md#create-a-test-logger) for instructions on creating a test logger and [todo]()
    +if you're interested in the architecture of a test logger.
    +
    +### Available test loggers
    +
    +| Scenario | NuGet Package | Source Repository |
    +| -------- | ------------- | ----------------- |
    +| Local, CI, CD | Inbuilt | [Trx Logger][] |
    +| Local, CI, CD | Inbuilt | [Console Logger][] |
    +| Local, CI, CD | Inbuilt | [Html Logger][] |
    +| Local, CI, CD | [XunitXml.TestLogger][xunit.nuget] | [Xunit Logger][] |
    +| Local, CI, CD | [NunitXml.TestLogger][nunit.nuget] | [Nunit Logger][] |
    +| Local, CI, CD | [JunitXml.TestLogger][junit.nuget] | [Junit Logger][] |
    +| AppVeyor | [AppVeyor.TestLogger][appveyor.nuget] | [AppVeyor Logger][] |
    +| Azure Pipelines | [AzurePipelines.TestLogger][azurepipelines.nuget] | [Azure Pipelines Logger][] |
    +| GitHub Actions | [GitHubActionsTestLogger][githubactions.nuget] | [GitHub Actions Test Logger][] |
    +| TeamCity | [TeamCity.VSTest.TestAdapter][teamcity.nuget] | [TeamCity Logger][] |
    +
    +[Trx Logger]: https://github.com/Microsoft/vstest/tree/main/src/Microsoft.TestPlatform.Extensions.TrxLogger
    +[Html Logger]: https://github.com/Microsoft/vstest/tree/main/src/Microsoft.TestPlatform.Extensions.HtmlLogger
    +[Console Logger]: ./src/vstest.console/Internal/ConsoleLogger.cs
    +[Xunit Logger]: https://github.com/spekt/xunit.testlogger
    +[Nunit Logger]: https://github.com/spekt/nunit.testlogger
    +[Junit Logger]: https://github.com/spekt/junit.testlogger
    +[AppVeyor Logger]: https://github.com/spekt/appveyor.testlogger
    +[Azure Pipelines Logger]: https://github.com/daveaglick/AzurePipelines.TestLogger
    +[GitHub Actions Test Logger]: https://github.com/Tyrrrz/GitHubActionsTestLogger
    +[TeamCity Logger]: https://github.com/JetBrains/TeamCity.VSTest.TestAdapter
    +
    +[xunit.nuget]: https://www.nuget.org/packages/XunitXml.TestLogger
    +[nunit.nuget]: https://www.nuget.org/packages/NUnitXml.TestLogger/
    +[junit.nuget]: https://www.nuget.org/packages/JUnitXml.TestLogger/
    +[appveyor.nuget]: https://www.nuget.org/packages/AppVeyor.TestLogger
    +[azurepipelines.nuget]: https://www.nuget.org/packages/AzurePipelines.TestLogger
    +[githubactions.nuget]: https://www.nuget.org/packages/GitHubActionsTestLogger
    +[teamcity.nuget]: https://www.nuget.org/packages/TeamCity.VSTest.TestAdapter
    +
    + Want to add your logger? Please send a PR with changes in this doc.
    +
    +## Acquisition
    +
    +A test logger should be made available as a NuGet package (preferred), or as
    +a zip file (for e.g. loggers for C++ etc.).
    +
    +If it's a NuGet package, the test logger assemblies should get copied to the
    +build output directory. When looking for a test logger, vstest will look for
    +them in the same directory as the test assemblies. In most cases this means that
    +test projects reference either the project (same codebase) or NuGet package 
    +with the logger.
    +
    +If the test logger is made available as a zip file, it should be extracted
    +to one of the following locations:
    +
    +1. the `Extensions` folder along side `vstest.console.exe`. E.g. in case of
    +dotnet-cli, the path could be `/sdk//Extensions` directory.
    +2. any well known location on the filesystem
    +
    +> [!NOTE]
    +> **New in 15.1**
    +>
    +> In case of #2, user can specify the full path to the location using `/TestAdapterPath:`
    +> command line switch. Test platform will locate extensions from the provided
    +> directory.
    +
    +## Naming
    +
    +Test platform will look for assemblies named `*.testlogger.dll` when it's trying
    +to load test loggers.
    +
    +> [!NOTE]
    +> For the 15.0 version, the test loggers are also discovered from `*.testadapter.dll`
    +
    +## Create a test logger
    +
    +Go through the following steps to create your own logger
    +
    +1) Add a nuget reference of package `Microsoft.TestPlatform.ObjectModel`.
    +2) Implement `ITestLoggerWithParameters` (or `ITestLogger`, if your logger is not expecting any parameters). [Logger Example](https://github.com/spekt/xunit.testlogger/blob/49d2416f24acb30225adc6e65753cc829010bec9/src/Xunit.Xml.TestLogger/XunitXmlTestLogger.cs#L19)
    +3) Name your logger assembly `*.testlogger.dll`. [Detailed](./report.md#naming)
    +
    +## Enable a test logger
    +
    +A test logger must be explicitly enabled using the command line. E.g.
    +
    +```shell
    + vstest.console test_project.dll /logger:mylogger
    +```
    +
    +Where `mylogger` is the `LoggerUri` or `FriendlyName` of the logger.
    +
    +## Configure reporting
    +
    +Additional arguments to a logger can also be passed in the command line. E.g.
    +
    +```shell
    + vstest.console test_project.dll /logger:mylogger;Setting=Value
    +```
    +
    +Where `mylogger` is the `LoggerUri` or `FriendlyName` of the logger.
    +`Setting` is the name of the additional argument and `Value` is its value.
    +
    +It is up to the logger implementation to support additional arguments.
    +
    +## Syntax of default loggers
    +
    +### 1) Console logger
    +
    +Console logger is the default logger and it is used to output the test results to a terminal.
    +
    +#### Syntax
    +
    +For dotnet test or dotnet vstest:
    +
    +```shell
    +--logger:console[;verbosity=]
    +```
    +
    +For vstest.console.exe:
    +
    +```shell
    +/logger:console[;verbosity=]
    +```
    + 
    +Argument `verbosity` defines the verbosity level of the console logger. Allowed values for verbosity are `quiet`, `minimal`, `normal` and `detailed`.
    +
    +#### Example
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:"console;verbosity=normal"
    +```
    +
    +If you are using `dotnet test`, then use the following command:
    +
    +```shell
    +dotnet test Tests.csproj --logger:"console;verbosity=normal"
    +```
    +
    +or you can also use argument `-v | --verbosity` of `dotnet test`:
    +
    +```shell
    +dotnet test Tests.csproj -v normal
    +```
    +
    +### 2) Trx logger
    +
    +Trx logger is used to log test results into a Visual Studio Test Results File (TRX).
    +
    +#### Syntax
    +
    +```shell
    +/logger:trx [;LogFileName=]
    +```
    +
    +Where `LogFileName` can be absolute or relative path. If the path is relative, it will be relative to the `TestResults` directory, created under current working directory.
    +
    +
    +#### Examples
    +
    +Suppose the current working directory is `c:\tempDirectory`.
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:trx
    +```
    +
    +trx file will get generated in location `c:\tempDirectory\TestResults`.
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:"trx;LogFileName=relativeDir\logFile.txt"
    +
    +trx file will be `c:\tempDirectory\TestResults\relativeDir\logFile.txt`.
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:"trx;LogFileName=c:\temp\logFile.txt"
    +```
    +
    +trx file will be `c:\temp\logFile.txt`.
    +
    +### 3) Html logger
    +
    +Html logger is used to log test results into a HTML file.
    +
    +#### Syntax
    +
    +```shell
    +/logger:html [;LogFileName=]
    +
    +Where "LogFileName" can be absolute or relative path. If path is relative, it will be relative to "TestResults" directory, created under current working directory.
    +
    +```
    +
    +#### Examples
    +
    +Suppose the current working directory is `c:\tempDirectory`.
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:html
    +```
    +
    +HTML file will get generated in location `c:\tempDirectory\TestResults`.
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:"html;LogFileName=relativeDir\logFile.html"
    +```
    +
    +HTML file will be `c:\tempDirectory\TestResults\relativeDir\logFile.html`.
    +
    +```shell
    +vstest.console.exe Tests.dll /logger:"html;LogFileName=c:\temp\logFile.html"
    +```
    +
    +HTML file will be `c:\temp\logFile.html`.
    +
    +## Related links
    +
    +TODO: link to author a test logger
    diff --git a/docs/roadmap.md b/docs/roadmap.md
    new file mode 100644
    index 0000000000..001a8cf70e
    --- /dev/null
    +++ b/docs/roadmap.md
    @@ -0,0 +1,31 @@
    +# Test Platform Roadmap
    +
    +This repo is the modern, OSS, cross-plat testing engine that has been powering testing on .NET Core via the "test" verb in dotnet test, and Live Unit Testing scenario (LUT) in Visual Studio. Internally we call this repo "TPV2" (Test Platform V2)
    +
    +We aim to continuously deliver improvements that will ship with Visual Studio and with the .NET Tools SDK. These improvements are directly informed by your feedback filed as [issues](https://github.com/Microsoft/vstest/issues). If you do not see your issue addressed already, we will get to it soon! If you would like to help out, let us know!
    +
    +Over the past several quarters, we have made many enhancements - from introducing support for Mono, to refactoring the platform to make it ready to support device testing, to performance improvements, to enabling robust C++ support, to improved documentation, and more. For a complete list see here: [Release Notes](./releases.md)
    +
    +## Roadmap
    +
    +We typically plan for a quarter, and establish a set of themes we want to work towards. Here are the themes we will work on this quarter.
    +
    +### Reach: Enable leveraging your vstest experience across all supported platforms
    +
    +Over the course of the next phase of execution we will make TPV2 the "default" for all scenarios across Visual Studio and Visual Studio Team Services (VSTS) – i.e. extending it to .NET Framework, UWP, and the VSTest task in VSTS. We will ship a standalone package that can be potentially used in other CI systems even. This is a big switch. We will strive to maintain backwards compat, and publish migration guides for the few features that require to be migrated, and help you in the migration.
    +
    +### Performance: At scale
    +
    +Performance has been an area where we have received feedback, and made strong progress as well. It will continue to remain a focus. We will look to make improvements across the pipeline from the Test Explorer to the framework adapters, to enhance the overall end to end performance.
    +
    +### UWP, Win10 IoT Core Support
    +
    +UWP is the application platform for Windows 10, to reach all Windows 10 devices – PC, tablet, phone, Xbox, HoloLens, Surface Hub and more. The vstest engine is architected so that it can be extended to support new application platforms. Such extensions will come from teams who understand their platforms the best, and integrated with vstest. To drive home this point, vstest will be extended to support testing UWP applications. In particular we will light up support for Win10 IoT Core.
    +
    +### Code Coverage for .NET Core
    +
    +This has been a clear ask from the community, and we are working towards enabling this support. The code coverage infrastructure consumes information from PDB files. Specifically with regard to .NET Core, it now needs to understand the new portable PDB format. We are working cross-team to introduce this support in order to light up code coverage support for .NET Core.
    +
    +## Summary
    +
    +These are examples of the work we will be focusing on this quarter. We will provide details through individual issues. Follow along, and let us know what you think. We look forward to working with you!
    diff --git a/docs/testplatform-migration-known-issues.md b/docs/testplatform-migration-known-issues.md
    new file mode 100644
    index 0000000000..ab794db1f5
    --- /dev/null
    +++ b/docs/testplatform-migration-known-issues.md
    @@ -0,0 +1,13 @@
    +# Test Platform Migration Known issues
    +
    +Here are the current known issues you may face when running tests, along with available workarounds.
    +
    +## Change in Thread.CurrentPrincipal value
    +
    +- **Issue:** Tests that depend on `Thread.CurrentPrincipal` may fail. This is due to change in inter process communication in Test Platform.
    +- **Workaround:** Use an alternative like `System.Security.Principal.WindowsIdentity.GetCurrent()`
    +
    +## Change in test execution processes name
    +
    +- **Issue:** Tests that depend on the name of the currnet running process may fail.
    +- **Workaround:** Tests run in one of following process ```vstest.console.exe```, ```testhost.exe```, ```testhost.x86.exe``` or ```dotnet.exe``` based on run configuration (```/Platform``` and ```/Framework```). If the tests depend on the process name, then update the tests accordingly.
    diff --git a/docs/toc.yml b/docs/toc.yml
    new file mode 100644
    index 0000000000..351e968fd3
    --- /dev/null
    +++ b/docs/toc.yml
    @@ -0,0 +1,12 @@
    +#- name: Getting Started
    +  #items:
    +  #- name: Quickstart
    +    #href: quickstart.md
    +  #- name: Concepts
    +    #href: concepts.md
    +- name: Environment Variables
    +  href: environment-variables.md
    +- name: Contribute
    +  href: contribute.md
    +- name: Release Notes
    +  href: releases.md
    diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
    new file mode 100644
    index 0000000000..7fa4bf56a9
    --- /dev/null
    +++ b/docs/troubleshooting.md
    @@ -0,0 +1,322 @@
    +# Troubleshooting guide
    +
    +The goal of this document is to help the test platform users to collect useful information for troubleshooting issues.
    +
    +## Dotnet CLI
    +
    +### Collect logs and crash dump
    +
    +```shell
    + dotnet test --diag:log.txt --blame-crash --blame-crash-dump-type full
    +```
    +
    +At the end of the execution you'll find the list of artifacts generated with the link to the file dump:
    +
    +```shell
    +Starting test execution, please wait...
    +Logging Vstest Diagnostics in file: C:\git\issue\bug\log.txt
    +A total of 1 test files matched the specified pattern.
    +...
    +   --- End of inner exception stack trace ---.
    +...
    +Attachments:
    +  C:\git\issues\bug\TestResults\620c075b-e035-41d2-b950-159f57abc604\Sequence_bfcc4d8558654413a3fb2f5164695bf6.xml
    +  C:\git\issues\bug\TestResults\620c075b-e035-41d2-b950-159f57abc604\dotnet.exe_11876_1660721586_crashdump.dmp
    +```
    +
    +You'll find 3 files for logs(runner, datacollector, host), datacollector one can be missing.
    +
    +```shell
    +-a----         8/17/2022   9:33 AM          30001 log.datacollector.22-08-17_09-32-54_50516_1.txt
    +-a----         8/17/2022   9:33 AM          37222 log.host.22-08-17_09-32-55_24965_7.txt
    +-a----         8/17/2022   9:33 AM         200345 log.txt
    +```
    +## vstest.console.exe  
    +
    +### Collect logs with `/Diag:`
    +
    +```shell
    +vstest.console.exe ...\TestProject1.dll /Collect:"Code Coverage" /Diag:log.txt
    +```
    +At the end of the execution you'll find the list of logs generated:
    +```shell
    +dir *.txt
    + Volume in drive C has no label.
    + Volume Serial Number is FA60-B142
    +
    + Directory of ...\net7.0
    +
    +12/08/2022  12:00 PM           173,002 log.datacollector.22-12-08_12-00-14_68705_1.txt
    +12/08/2022  12:01 PM           173,000 log.datacollector.22-12-08_12-01-12_19459_1.txt
    +12/08/2022  12:00 PM            56,017 log.host.22-12-08_12-00-15_88174_7.txt
    +12/08/2022  12:01 PM            55,986 log.host.22-12-08_12-01-12_94082_7.txt
    +12/08/2022  12:01 PM           292,548 log.txt
    +               5 File(s)        750,553 bytes
    +               0 Dir(s)  263,236,558,848 bytes free
    +```
    +
    +## Azure DevOps
    +
    +### @VSTest2 task
    +
    +#### Collect diagnostic logs
    +
    +##### Using `otherConsoleOptions: /Diag:vstestlog.txt`
    +
    +```yaml
    +  - task: VSTest@2
    +    inputs:
    +      displayName: "VsTest - testAssemblies"
    +      inputs:
    +      testAssemblyVer2: |
    +        ...
    +      otherConsoleOptions: '/Diag:vstestlog.diag'
    +
    +  - task: CopyFiles@2
    +    displayName: Copy vstestlog logs to staging
    +    inputs:
    +      contents: '**/*vstestlog*.diag'
    +      targetFolder: $(Build.ArtifactStagingDirectory)/vstestlog
    +    condition: always()
    +
    +  - task: PublishPipelineArtifact@1
    +    displayName: Publish vstestlog log
    +    inputs:
    +      targetPath: $(Build.ArtifactStagingDirectory)/vstestlog
    +      artifactName: vstestlog      
    +    condition: always()
    +```
    +
    +You can now zip/download all logs from the published artifacts view under the `vstestlog` folder.  
    +
    +##### Using `System.Debug` environment variable
    +
    +For some scenarios, it is not possible use the `otherConsoleOptions` (e.g., parallel execution).
    +
    +```yaml
    +jobs:
    +- job: ...
    +
    +  variables:
    +    - name: System.Debug
    +      value: true
    +
    +  steps:
    +  ...
    +  - task: VSTest@2
    +    inputs:
    +      displayName: "VsTest - testAssemblies"
    +      inputs:
    +      testAssemblyVer2: |
    +        ...
    +  
    +  - task: CopyFiles@2
    +    displayName: Copy vstestlog logs to staging
    +    inputs:
    +      sourceFolder: $(Agent.TempDirectory)
    +      contents: '**/*.diag'
    +      targetFolder: $(Build.ArtifactStagingDirectory)/vstestlog
    +    condition: always()
    +
    +  - task: PublishPipelineArtifact@1
    +    displayName: Publish vstestlog log
    +    inputs:
    +      targetPath: $(Build.ArtifactStagingDirectory)/vstestlog
    +      artifactName: vstestlog
    +    condition: always()
    +```
    +
    +You can now zip/download all logs from the published artifacts view under the `vstestlog` folder.  
    +
    +#### Collect logs and crash dump/hang
    +
    +##### Using `otherConsoleOptions: /Blame`  
    +
    +```yaml
    +jobs:
    +- job: ...
    +
    +  variables:
    +    - name: System.Debug
    +      value: true
    +
    +  steps:
    +  ...
    +  - task: VSTest@2
    +    inputs:
    +      displayName: "VsTest - testAssemblies"
    +      inputs:
    +      testAssemblyVer2: |
    +        ...
    +
    +      otherConsoleOptions: otherConsoleOptions: '/Blame:"CollectDump;DumpType=Full;CollectHangDump;TestTimeout=30min;HangDumpType=Full"'
    +    condition: always()
    +    continueOnError: true
    +
    +  - task: CopyFiles@2
    +    displayName: Copy test logs to staging
    +    inputs:
    +      sourceFolder: $(Agent.TempDirectory)
    +      contents: '**/*.diag'
    +      targetFolder: $(Build.ArtifactStagingDirectory)/vstestlog
    +    continueOnError: true
    +    condition: always()
    +
    +  - task: PublishPipelineArtifact@1
    +    displayName: Publish vstestlog log
    +    inputs:
    +      targetPath: $(Build.ArtifactStagingDirectory)/vstestlog
    +      artifactName: vstestlog
    +    condition: always()
    +    continueOnError: true
    +```
    +
    +You can now zip/download all logs from the published artifacts view under the `vstestlog` folder and you can find the dump using the `Attachments` tab under `Tests` selecting the parent (first) test node.  
    +
    +##### Using *.runsettings file
    +
    + For some scenarios, it is not possible use the `otherConsoleOptions` (e.g., parallel execution).
    +
    +```yaml
    +jobs:
    +- job: ...
    +
    +  variables:
    +    - name: System.Debug
    +      value: true
    +
    +  steps:
    +  ...
    +  - task: VSTest@2
    +    inputs:
    +      displayName: "VsTest - testAssemblies"
    +      inputs:
    +      testAssemblyVer2: |
    +        ...
    +      runSettingsFile: ./config.runsettings
    +    continueOnError: true
    +
    +  - task: CopyFiles@2
    +    displayName: Copy test logs to staging
    +    inputs:
    +      sourceFolder: $(Agent.TempDirectory)
    +      contents: '**/*.diag'
    +      targetFolder: $(Build.ArtifactStagingDirectory)/vstestlog
    +    condition: always()
    +    continueOnError: true
    +
    +  - task: PublishPipelineArtifact@1
    +    displayName: Publish vstestlog log
    +    inputs:
    +      targetPath: $(Build.ArtifactStagingDirectory)/vstestlog
    +      artifactName: vstestlog
    +    condition: always()
    +    continueOnError: true
    +```
    +
    +`config.runsettings` file
    +
    +```xml
    +
    +  
    +    
    +      
    +        
    +          
    +          
    +        
    +      
    +    
    +  
    +
    +```
    +
    +### DotNetCoreCLI@2 task  
    +
    +#### Collect process dump using Procdump on Windows (i.e. OutOfMemory)
    +
    +```yaml
    +  variables:
    +    - name: System.Debug
    +      value: true
    +    - name: PROCDUMP_PATH
    +      value: $(Agent.ToolsDirectory)\Procdump
    +    - name: VSTEST_DUMP_FORCEPROCDUMP
    +      value: 1
    +...
    +  - task: PowerShell@2
    +    displayName: 'Download ProcDump'
    +    inputs:
    +      targetType: inline
    +      script: |
    +        Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Procdump.zip" -OutFile $(Agent.TempDirectory)\Procdump.zip
    +        Expand-Archive -LiteralPath $(Agent.TempDirectory)\Procdump.zip -DestinationPath $(Agent.ToolsDirectory)\Procdump -Force
    +...
    +  - task: DotNetCoreCLI@2
    +    displayName: Test project
    +    inputs:
    +      command: test
    +      arguments: --blame-crash --blame-crash-collect-always true --diag:log.txt
    +```
    +
    +## Visual Studio
    +
    +### Enable Diagnostic logs
    +
    +* Go to Visual Studio options page (`Tools/Options`)
    +* Select `Test` and then `General`
    +* Under `Logging`, change `Logging level` to `Trace (Includes Platform logs)`
    +* Close the `Options` window
    +* Open the `Output` window and select `Tests` output
    +* Locate the entry similar to `C:\Users\\AppData\Local\Temp\TestPlatformLogs\` (e.g. `C:\Users\johndoe\AppData\Local\Temp\TestPlatformLogs\2022_07_14_15_24_06_19400`) and open the folder
    +* Run your tests
    +* Create a zip with all files available
    +
    +Note: these logs could contain sensitive information (paths, project name...). Make sure to clean them or use the Visual Studio `Send Feedback` button. Don't put anything you want to keep private in the title or content of the initial report, which is public. Instead, say that you'll send details privately in a separate comment. Once the problem report is created, it's now possible to specify who can see your replies and attachments.
    +
    +## Use procdump on Windows
    +
    +Sometimes it's not possible to take the dump using test platform tool because the crash happen before we're able to attach to the process to take the dump self. In that situation we need a way to register for dump at process startup level.  
    +To achieve it we can use [procdump](https://docs.microsoft.com/sysinternals/downloads/procdump) that will install machine wide Just-in-time (AeDebug) debugger.
    +
    +```shell
    +PS C:\tools\Procdump> .\procdump.exe -i C:\tools\Procdump\dumps
    +
    +ProcDump v10.11 - Sysinternals process dump utility
    +Copyright (C) 2009-2021 Mark Russinovich and Andrew Richards
    +Sysinternals - www.sysinternals.com
    +
    +Set to:
    +  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
    +    (REG_SZ) Auto     = 1
    +    (REG_SZ) Debugger = "C:\tools\Procdump\procdump.exe" -accepteula -j "C:\tools\Procdump\dumps" %ld %ld %p
    +
    +Set to:
    +  HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
    +    (REG_SZ) Auto     = 1
    +    (REG_SZ) Debugger = "C:\tools\Procdump\procdump.exe" -accepteula -j "C:\tools\Procdump\dumps" %ld %ld %p
    +
    +ProcDump is now set as the Just-in-time (AeDebug) debugger.
    +```
    +
    +After you can run your application and in case of crash a dump will be automatically taken inside the `C:\tools\Procdump\dumps` directory.
    +
    +```
    +PS C:\tools\Procdump> ls C:\tools\Procdump\dumps
    +
    +
    +    Directory: C:\tools\Procdump\dumps
    +
    +
    +Mode                 LastWriteTime         Length Name
    +----                 -------------         ------ ----
    +-a----         8/17/2022   9:42 AM        6161605 dotnet.exe_220817_094234.dmp
    +```
    +
    +You can unistall the automatic generation running at the end of the collection phase
    +
    +```shell
    +.\procdump.exe -u
    +```
    +
    +Keep in mind that this mode will collect machine wide crash so every process in the machine that will crash will collect a dump in the folder.
    diff --git a/dotnet.config b/dotnet.config
    new file mode 100644
    index 0000000000..da0410e32d
    --- /dev/null
    +++ b/dotnet.config
    @@ -0,0 +1,2 @@
    +[dotnet.test.runner]
    +name = "Microsoft.Testing.Platform"
    diff --git a/eng/AfterSolutionBuild.targets b/eng/AfterSolutionBuild.targets
    new file mode 100644
    index 0000000000..c7ca696b2a
    --- /dev/null
    +++ b/eng/AfterSolutionBuild.targets
    @@ -0,0 +1,20 @@
    +
    +
    +  
    +    dev
    +  
    +
    +  
    +    
    +  
    +
    +  
    +  
    +    
    +  
    +
    diff --git a/eng/Analyzers.props b/eng/Analyzers.props
    new file mode 100644
    index 0000000000..f86467ccd7
    --- /dev/null
    +++ b/eng/Analyzers.props
    @@ -0,0 +1,20 @@
    +
    +  
    +  
    +    
    +      all
    +      runtime; build; native; contentfiles; analyzers; buildtransitive
    +    
    +  
    +
    +  
    +  
    +    
    +      all
    +      runtime; build; native; contentfiles; analyzers; buildtransitive
    +    
    +  
    +
    diff --git a/eng/BuildTask.targets b/eng/BuildTask.targets
    deleted file mode 100644
    index 4be94f8fbe..0000000000
    --- a/eng/BuildTask.targets
    +++ /dev/null
    @@ -1,81 +0,0 @@
    -
    -  
    -    false
    -    true
    -    
    -    true
    -  
    -
    -  
    -  
    -    
    -      %(RecursiveDir)%(Filename)%(Extension)
    -    
    -  
    -
    -  
    -    
    -    
    -  
    -
    -  
    -    
    -    
    -      All
    -      true
    -      runtime
    -    
    -    
    -      All
    -      true
    -    
    -
    -    
    -    
    -      false
    -    
    -
    -    
    -    
    -    
    -    
    -    
    -    
    -    
    -    
    -    
    -  
    -
    -  
    -    $(TargetsForTfmSpecificContentInPackage);_AddBuildOutputToPackageCore;_AddBuildOutputToPackageDesktop
    -  
    -  
    -  
    -    
    -      
    -      
    -    
    -  
    -
    -  
    -    
    -      
    -      
    -    
    -  
    -
    diff --git a/eng/GoalTimePerDefinition.json b/eng/GoalTimePerDefinition.json
    deleted file mode 100644
    index ff5d6ad428..0000000000
    --- a/eng/GoalTimePerDefinition.json
    +++ /dev/null
    @@ -1,8 +0,0 @@
    -{ 
    -    "goal_times":[ 
    -       { 
    -          "definition_Id":6,
    -          "total_minutes":50
    -       }
    -    ]
    -}
    diff --git a/eng/Publishing.props b/eng/Publishing.props
    new file mode 100644
    index 0000000000..5f9650d32d
    --- /dev/null
    +++ b/eng/Publishing.props
    @@ -0,0 +1,9 @@
    +
    +
    +  
    +  
    +    
    +  
    +
    +
    diff --git a/eng/RestoreInternal.cmd b/eng/RestoreInternal.cmd
    new file mode 100644
    index 0000000000..7025eccf87
    --- /dev/null
    +++ b/eng/RestoreInternal.cmd
    @@ -0,0 +1,2 @@
    +@echo off
    +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0\common\build.ps1""" -build -restore %*"
    diff --git a/eng/Signing.props b/eng/Signing.props
    index 36b08f812f..da92da673b 100644
    --- a/eng/Signing.props
    +++ b/eng/Signing.props
    @@ -27,5 +27,7 @@
         
         
         
    +
    +    
       
     
    diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
    deleted file mode 100644
    index 68f8259274..0000000000
    --- a/eng/SourceBuild.props
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -
    -
    -  
    -    vstest
    -    true
    -  
    -
    -  
    -    ./build.sh
    -
    -    -DotNetBuildFromSource
    -    $(InnerBuildArgs) -v "$(BuildVersionPrefix)"
    -    $(InnerBuildArgs) -vs "$(BuildVersionSuffix)"
    -    $(InnerBuildArgs) -DotNetCoreSdkDir $(DotNetRoot)
    -    $(InnerBuildArgs) -c $(Configuration)
    -  
    -
    -  
    -  
    -    
    -      
    -    
    -
    -    
    -  
    -
    -
    diff --git a/eng/SourceBuildPrebuiltBaseline.xml b/eng/SourceBuildPrebuiltBaseline.xml
    deleted file mode 100644
    index c1b6dfbf05..0000000000
    --- a/eng/SourceBuildPrebuiltBaseline.xml
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -
    -  
    -    
    -  
    -
    diff --git a/eng/Version.Details.props b/eng/Version.Details.props
    new file mode 100644
    index 0000000000..ed42872e16
    --- /dev/null
    +++ b/eng/Version.Details.props
    @@ -0,0 +1,40 @@
    +
    +
    +  
    +    
    +    18.0.6
    +    
    +    0.2.0-preview.25476.104
    +    
    +    6.0.2
    +    4.5.0
    +    
    +    2.0.0
    +    
    +    10.0.0-beta.25408.3
    +    
    +    1.1.0-beta2-19575-01
    +    1.1.0-beta2-19575-01
    +  
    +  
    +  
    +    
    +    $(MicrosoftInternalCodeCoveragePackageVersion)
    +    
    +    $(MicrosoftDiagnosticsNETCoreClientPackageVersion)
    +    
    +    $(MicrosoftExtensionsDependencyModelPackageVersion)
    +    $(SystemComponentModelCompositionPackageVersion)
    +    
    +    $(MicrosoftExtensionsFileSystemGlobbingPackageVersion)
    +    
    +    $(MicrosoftDotNetArcadeSdkPackageVersion)
    +    
    +    $(MicrosoftDiaSymReaderConverterPackageVersion)
    +    $(MicrosoftDiaSymReaderPdb2PdbPackageVersion)
    +  
    +
    diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
    index 2073ba3a3e..356337cc87 100644
    --- a/eng/Version.Details.xml
    +++ b/eng/Version.Details.xml
    @@ -1,53 +1,35 @@
     
     
    +  
       
    -    
    +    
           https://dev.azure.com/devdiv/DevDiv/_git/vs-code-coverage
    -      251eb05b1b66a9b5c7c20f65722a10dad06cef27
    +      957aa737e42290c129a620df7129f03189743dd1
         
    -    
    -      https://github.com/dotnet/diagnostics
    -      d9290918615eff2f0711818558d8d4f653a28898
    +    
    +      https://github.com/dotnet/dotnet
    +      e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
         
    -    
    -      https://github.com/dotnet/diagnostics
    -      d9290918615eff2f0711818558d8d4f653a28898
    -      
    +    
    +    
    +      https://github.com/dotnet/runtime
    +      30ab651fcb4354552bd4891619a0bdd81e0ebdbf
         
    -  
    -  
    -    
    -      https://github.com/dotnet/arcade
    -      427c05909067bb2e484116ae2239456bb45adb85
    -      
    -    
    -    
    -      https://github.com/dotnet/arcade
    -      427c05909067bb2e484116ae2239456bb45adb85
    -    
    -    
    -      https://github.com/dotnet/arcade
    -      427c05909067bb2e484116ae2239456bb45adb85
    +    
    +    
    +      https://github.com/dotnet/runtime
    +      7d57652f33493fa022125b7f63aad0d70c52d810
         
    -    
    -      https://github.com/dotnet/arcade
    -      427c05909067bb2e484116ae2239456bb45adb85
    +    
    +    
    +      https://github.com/dotnet/core-setup
    +      7d57652f33493fa022125b7f63aad0d70c52d810
         
    -    
    +  
    +  
    +    
           https://github.com/dotnet/arcade
    -      427c05909067bb2e484116ae2239456bb45adb85
    -    
    -    
    -      https://github.com/dotnet/arcade-services
    -      cd705029f2675970b42f9273ae359d0926c5e815
    -    
    -    
    -      https://github.com/dotnet/roslyn
    -      4b309dc5400e39a2eea09d82077737c1df5f347a
    -    
    -    
    -      https://github.com/dotnet/sourcelink
    -      afa9aa7032f810ad91d84857b95ad1d071192afa
    +      d27184f7cb92b4abb4b20e91ecb5c43bc43de65b
         
         
           https://github.com/dotnet/symreader-converter
    @@ -57,9 +39,5 @@
           https://github.com/dotnet/symreader-converter
           c5ba7c88f92e2dde156c324a8c8edc04d9fa4fe0
         
    -    
    -      https://github.com/dotnet/xliff-tasks
    -      f5321d0c7b3f5e6103440fc017253bcdb50a0a26
    -    
       
     
    diff --git a/eng/Versions.props b/eng/Versions.props
    index da5aef1c13..ca2e4678cc 100644
    --- a/eng/Versions.props
    +++ b/eng/Versions.props
    @@ -1,87 +1,115 @@
     
     
    -  
    +  
    +  
         
    -    17.1.0
    -    preview
    -    
    -    false
    -    true
    -    
    -    2.2.1
    -    1.0.2
    -    4.0.0-rc3-24214-00
    -    1.9.5
    -    0.25.2
    -    2.0.8
    -    4.3.4
    -    10.0.2
    -    3.0.0
    -    1.3.1
    -    15.7.179
    -    15.7.179
    -    15.7.179
    -    15.7.179
    -    2.6.3
    -    2.9.0
    -    2.1.0
    -    2.1.0
    -    3.19.8
    -    2.3.13
    -    2.1.0
    -    2.0.0
    -    2.1.0
    -    4.1.0-1.21507.14
    -    15.7.2
    -    4.8.3
    -    5.3.0.1
    -    2.3.0
    -    9.0.1
    -    4.6.0-preview4.19202.2
    -    4.4.0
    -    5.3.0
    -    0.32.0
    -    2.2.143
    -    3.0.0
    -    4.5.0
    -    1.3.1
    -    4.0.0
    -    4.3.0
    -    4.5.0
    -    4.3.0
    -    4.5.1
    -    4.4.0
    -    1.4.2
    -    4.5.0
    -    4.5.1
    -    4.5.1
    -    4.4.0
    -    8.5.0
    -    2.4.1
    -    2.0.3
    -    2.4.1
    -    7.0.0-beta.21576.4
    -    7.0.0-beta.21576.4
    -    1.22.0
    -    1.1.2
    -    2.0.0
    -    1.5.0
    -    1.0.0
    -    2.0.4
    -    1.1.0-beta2-19575-01
    -    1.1.0-beta2-19575-01
    -    1.7.0
    -    1.1.0-beta.20074.1
    -    1.0.0-beta2-19554-01
    -    7.0.0-beta.21576.4
    -    1.0.0-beta.21272.1
    -    
    -    
    -    3.8.0-3.20427.2
    -    17.1.2-beta.21579.1
    -    0.2.0-preview.21508.1
    -    5.0.0-preview.21508.1
    +    
    +    true
    +    
    +    false
    +    18.0.1
    +    release
    +  
    +  
    +    
    +    true
    +    
    +    true
    +    
    +    true
    +  
    +  
    +    1.2.0
    +    
    +    
    +    17.8.43
    +    $(MicrosoftBuildFrameworkPackageVersion)
    +    $(MicrosoftBuildFrameworkPackageVersion)
    +    $(MicrosoftBuildFrameworkPackageVersion)
    +    $(MicrosoftBuildFrameworkPackageVersion)
    +    $(MicrosoftBuildFrameworkPackageVersion)
    +    4.11.0
    +    3.3.4
    +    3.3.4
    +    17.7.0
    +    18.0.0-beta.25430.1
    +    
    +    18.0.0-preview-1-10830-229
    +    $(MicrosoftVisualStudioDiagnosticsUtilitiesVersion)
    +    17.13.39960
    +    17.13.24
    +    16.3.90
    +    17.14.2119
    +    5.0.0
    +    13.0.3
    +    8.0.0
    +    4.5.5
    +    8.0.0
    +    18.0.0-preview-1-10911-061
    +    18.0.0-preview-1-10911-061
    +    18.0.11024.295
    +    5.0.0
    +    6.1.0
    +  
    +  
    +    
    +    8.1.0
    +    1.7.2
    +    4.16.1
    +    
    +    17.9.0
    +    
    +    3.9.3
    +    3.9.3
    +    2.4.2
    +    2.4.5
    +    2.4.2
    +    3.14.0
    +    3.17.0
    +    3.16.3
    +    
    +    
    +    [3.9.3]
    +    [3.9.3]
    +    [3.3.1]
    +    [2.2.10]
    +    [2.2.10]
    +    [1.4.0]
    +    
    +    
    +    [17.10.0]
    +    [17.10.0]
    +    [17.9.0]
    +    [17.6.2]
    +    [16.11.0]
    +    [15.9.2]
    +    5.0.0
       
     
    diff --git a/eng/common-variables.yml b/eng/common-variables.yml
    deleted file mode 100644
    index 3b95400578..0000000000
    --- a/eng/common-variables.yml
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -variables:
    -  # Cannot use key:value syntax in root defined variables
    -  - name: _TeamName
    -    value: DotNetCore
    -  - name: _DotNetArtifactsCategory
    -    value: .NETCore
    -  - name: _DotNetValidationArtifactsCategory
    -    value: .NETCoreValidation
    -  - name: HelixApiAccessToken
    -    value: ''
    -  - name: _RunAsPublic
    -    value: True
    -  - name: _RunAsInternal
    -    value: False
    -  - name: _InternalBuildArgs
    -    value: ''
    -
    -  - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    -    - name: _RunAsPublic
    -      value: False
    -    - name: _RunAsInternal
    -      value: True
    -    - name: _SignType
    -      value: real
    -    # DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1
    -    # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT
    -    # DotNet-HelixApi-Access provides: HelixApiAccessToken
    -    - group: DotNet-Blob-Feed
    -    - group: Publish-Build-Assets
    -    - group: DotNet-HelixApi-Access
    -    - group: SDL_Settings
    -    - name: _InternalBuildArgs
    -      value: /p:DotNetSignType=$(_SignType) /p:TeamName=$(_TeamName)
    -        /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1)
    -        /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
    -        /p:DotNetPublishToBlobFeed=true
    -        /p:DotNetPublishUsingPipelines=true
    -        /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory)
    -        /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
    diff --git a/eng/common/BuildConfiguration/build-configuration.json b/eng/common/BuildConfiguration/build-configuration.json
    new file mode 100644
    index 0000000000..3d1cc89894
    --- /dev/null
    +++ b/eng/common/BuildConfiguration/build-configuration.json
    @@ -0,0 +1,4 @@
    +{
    +  "RetryCountLimit": 1,
    +  "RetryByAnyError": false
    +}
    diff --git a/eng/common/CIBuild.cmd b/eng/common/CIBuild.cmd
    index 56c2f25ac2..ac1f72bf94 100644
    --- a/eng/common/CIBuild.cmd
    +++ b/eng/common/CIBuild.cmd
    @@ -1,2 +1,2 @@
     @echo off
    -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
    \ No newline at end of file
    +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
    diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
    index 18823840b1..5db4ad71ee 100644
    --- a/eng/common/SetupNugetSources.ps1
    +++ b/eng/common/SetupNugetSources.ps1
    @@ -1,17 +1,10 @@
    -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds.
    -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080
    +# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
    +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
    +# disabled internal Maestro (darc-int*) feeds.
     #
    -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry
    -# under  for each Maestro managed private feed. Two additional credential 
    -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport.
    +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
     #
    -# This script needs to be called in every job that will restore packages and which the base repo has
    -# private AzDO feeds in the NuGet.config.
    -#
    -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)`
    -# from the AzureDevOps-Artifact-Feeds-Pats variable group.
    -#
    -# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing
    +# See example call for this script below.
     #
     #  - task: PowerShell@2
     #    displayName: Setup Private Feeds Credentials
    @@ -21,11 +14,18 @@
     #      arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
     #    env:
     #      Token: $(dn-bot-dnceng-artifact-feeds-rw)
    +#
    +# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
    +# This ensures that:
    +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
    +# - The credential provider is installed.
    +#
    +# This logic is also abstracted into enable-internal-sources.yml.
     
     [CmdletBinding()]
     param (
         [Parameter(Mandatory = $true)][string]$ConfigFile,
    -    [Parameter(Mandatory = $true)][string]$Password
    +    $Password
     )
     
     $ErrorActionPreference = "Stop"
    @@ -35,7 +35,7 @@ Set-StrictMode -Version 2.0
     . $PSScriptRoot\tools.ps1
     
     # Add source entry to PackageSources
    -function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $Password) {
    +function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
         $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
         
         if ($packageSource -eq $null)
    @@ -48,12 +48,17 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern
         else {
             Write-Host "Package source $SourceName already present."
         }
    -    
    -    AddCredential -Creds $creds -Source $SourceName -Username $Username -Password $Password
    +
    +    AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
     }
     
     # Add a credential node for the specified source
    -function AddCredential($creds, $source, $username, $password) {
    +function AddCredential($creds, $source, $username, $pwd) {
    +    # If no cred supplied, don't do anything.
    +    if (!$pwd) {
    +        return;
    +    }
    +
         # Looks for credential configuration for the given SourceName. Create it if none is found.
         $sourceElement = $creds.SelectSingleNode($Source)
         if ($sourceElement -eq $null)
    @@ -82,17 +87,18 @@ function AddCredential($creds, $source, $username, $password) {
             $passwordElement.SetAttribute("key", "ClearTextPassword")
             $sourceElement.AppendChild($passwordElement) | Out-Null
         }
    -    $passwordElement.SetAttribute("value", $Password)
    +    
    +    $passwordElement.SetAttribute("value", $pwd)
     }
     
    -function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $Password) {
    +function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) {
         $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]")
     
         Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds."
         
         ForEach ($PackageSource in $maestroPrivateSources) {
             Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key
    -        AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -Password $Password
    +        AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd
         }
     }
     
    @@ -110,11 +116,6 @@ if (!(Test-Path $ConfigFile -PathType Leaf)) {
       ExitWithExitCode 1
     }
     
    -if (!$Password) {
    -    Write-PipelineTelemetryError -Category 'Build' -Message 'Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Please supply a valid PAT'
    -    ExitWithExitCode 1
    -}
    -
     # Load NuGet.config
     $doc = New-Object System.Xml.XmlDocument
     $filename = (Get-Item $ConfigFile).FullName
    @@ -127,11 +128,14 @@ if ($sources -eq $null) {
         $doc.DocumentElement.AppendChild($sources) | Out-Null
     }
     
    -# Looks for a  node. Create it if none is found.
    -$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
    -if ($creds -eq $null) {
    -    $creds = $doc.CreateElement("packageSourceCredentials")
    -    $doc.DocumentElement.AppendChild($creds) | Out-Null
    +$creds = $null
    +if ($Password) {
    +    # Looks for a  node. Create it if none is found.
    +    $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
    +    if ($creds -eq $null) {
    +        $creds = $doc.CreateElement("packageSourceCredentials")
    +        $doc.DocumentElement.AppendChild($creds) | Out-Null
    +    }
     }
     
     # Check for disabledPackageSources; we'll enable any darc-int ones we find there
    @@ -144,24 +148,24 @@ if ($disabledSources -ne $null) {
     $userName = "dn-bot"
     
     # Insert credential nodes for Maestro's private feeds
    -InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -Password $Password
    +InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password
     
    +# 3.1 uses a different feed url format so it's handled differently here
     $dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']")
     if ($dotnet31Source -ne $null) {
    -    AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password
    -    AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password
    +    AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
    +    AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
     }
     
    -$dotnet5Source = $sources.SelectSingleNode("add[@key='dotnet5']")
    -if ($dotnet5Source -ne $null) {
    -    AddPackageSource -Sources $sources -SourceName "dotnet5-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password
    -    AddPackageSource -Sources $sources -SourceName "dotnet5-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password
    -}
    +$dotnetVersions = @('5','6','7','8','9')
     
    -$dotnet6Source = $sources.SelectSingleNode("add[@key='dotnet6']")
    -if ($dotnet6Source -ne $null) {
    -    AddPackageSource -Sources $sources -SourceName "dotnet6-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet6-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password
    -    AddPackageSource -Sources $sources -SourceName "dotnet6-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet6-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password
    +foreach ($dotnetVersion in $dotnetVersions) {
    +    $feedPrefix = "dotnet" + $dotnetVersion;
    +    $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']")
    +    if ($dotnetSource -ne $null) {
    +        AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
    +        AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
    +    }
     }
     
     $doc.Save($filename)
    diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
    index ad3fb74fd2..4604b61b03 100644
    --- a/eng/common/SetupNugetSources.sh
    +++ b/eng/common/SetupNugetSources.sh
    @@ -1,28 +1,27 @@
     #!/usr/bin/env bash
     
    -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds.
    -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080
    +# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
    +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
    +# disabled internal Maestro (darc-int*) feeds.
    +# 
    +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
     #
    -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry
    -# under  for each Maestro's managed private feed. Two additional credential 
    -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport.
    -#
    -# This script needs to be called in every job that will restore packages and which the base repo has
    -# private AzDO feeds in the NuGet.config.
    -#
    -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)`
    -# from the AzureDevOps-Artifact-Feeds-Pats variable group.
    -#
    -# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing.
    +# See example call for this script below.
     #
     #  - task: Bash@3
    -#    displayName: Setup Private Feeds Credentials
    +#    displayName: Setup Internal Feeds
     #    inputs:
     #      filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
    -#      arguments: $(Build.SourcesDirectory)/NuGet.config $Token
    +#      arguments: $(Build.SourcesDirectory)/NuGet.config
     #    condition: ne(variables['Agent.OS'], 'Windows_NT')
    -#    env:
    -#      Token: $(dn-bot-dnceng-artifact-feeds-rw)
    +#  - task: NuGetAuthenticate@1
    +#
    +# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
    +# This ensures that:
    +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
    +# - The credential provider is installed.
    +#
    +# This logic is also abstracted into enable-internal-sources.yml.
     
     ConfigFile=$1
     CredToken=$2
    @@ -48,11 +47,6 @@ if [ ! -f "$ConfigFile" ]; then
         ExitWithExitCode 1
     fi
     
    -if [ -z "$CredToken" ]; then
    -    Write-PipelineTelemetryError -category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Please supply a valid PAT"
    -    ExitWithExitCode 1
    -fi
    -
     if [[ `uname -s` == "Darwin" ]]; then
         NL=$'\\\n'
         TB=''
    @@ -105,53 +99,33 @@ if [ "$?" == "0" ]; then
         PackageSources+=('dotnet3.1-internal-transport')
     fi
     
    -# Ensure dotnet5-internal and dotnet5-internal-transport are in the packageSources if the public dotnet5 feeds are present
    -grep -i ""
    -
    -        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
    -    fi
    -    PackageSources+=('dotnet5-internal')
    -
    -    grep -i "" $ConfigFile
    -    if [ "$?" != "0" ]; then
    -        echo "Adding dotnet5-internal-transport to the packageSources."
    -        PackageSourcesNodeFooter=""
    -        PackageSourceTemplate="${TB}"
    +DotNetVersions=('5' '6' '7' '8' '9')
     
    -        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
    -    fi
    -    PackageSources+=('dotnet5-internal-transport')
    -fi
    +for DotNetVersion in ${DotNetVersions[@]} ; do
    +    FeedPrefix="dotnet${DotNetVersion}";
    +    grep -i ""
     
    -# Ensure dotnet6-internal and dotnet6-internal-transport are in the packageSources if the public dotnet6 feeds are present
    -grep -i ""
    -
    -        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
    -    fi
    -    PackageSources+=('dotnet6-internal')
    +            sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
    +        fi
    +        PackageSources+=("$FeedPrefix-internal")
     
    -    grep -i "" $ConfigFile
    -    if [ "$?" != "0" ]; then
    -        echo "Adding dotnet6-internal-transport to the packageSources."
    -        PackageSourcesNodeFooter=""
    -        PackageSourceTemplate="${TB}"
    +        grep -i "" $ConfigFile
    +        if [ "$?" != "0" ]; then
    +            echo "Adding $FeedPrefix-internal-transport to the packageSources."
    +            PackageSourcesNodeFooter=""
    +            PackageSourceTemplate="${TB}"
     
    -        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
    +            sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
    +        fi
    +        PackageSources+=("$FeedPrefix-internal-transport")
         fi
    -    PackageSources+=('dotnet6-internal-transport')
    -fi
    +done
     
     # I want things split line by line
     PrevIFS=$IFS
    @@ -160,18 +134,20 @@ PackageSources+="$IFS"
     PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"')
     IFS=$PrevIFS
     
    -for FeedName in ${PackageSources[@]} ; do
    -    # Check if there is no existing credential for this FeedName
    -    grep -i "<$FeedName>" $ConfigFile 
    -    if [ "$?" != "0" ]; then
    -        echo "Adding credentials for $FeedName."
    +if [ "$CredToken" ]; then
    +    for FeedName in ${PackageSources[@]} ; do
    +        # Check if there is no existing credential for this FeedName
    +        grep -i "<$FeedName>" $ConfigFile 
    +        if [ "$?" != "0" ]; then
    +            echo "Adding credentials for $FeedName."
     
    -        PackageSourceCredentialsNodeFooter=""
    -        NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}"
    +            PackageSourceCredentialsNodeFooter=""
    +            NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}"
     
    -        sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
    -    fi
    -done
    +            sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
    +        fi
    +    done
    +fi
     
     # Re-enable any entries in disabledPackageSources where the feed name contains darc-int
     grep -i "" $ConfigFile
    diff --git a/eng/common/build.cmd b/eng/common/build.cmd
    new file mode 100644
    index 0000000000..99daf368ab
    --- /dev/null
    +++ b/eng/common/build.cmd
    @@ -0,0 +1,3 @@
    +@echo off
    +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*"
    +exit /b %ErrorLevel%
    diff --git a/eng/common/build.ps1 b/eng/common/build.ps1
    index 8943da242f..8cfee107e7 100644
    --- a/eng/common/build.ps1
    +++ b/eng/common/build.ps1
    @@ -7,6 +7,7 @@ Param(
       [string] $msbuildEngine = $null,
       [bool] $warnAsError = $true,
       [bool] $nodeReuse = $true,
    +  [switch] $buildCheck = $false,
       [switch][Alias('r')]$restore,
       [switch] $deployDeps,
       [switch][Alias('b')]$build,
    @@ -19,6 +20,8 @@ Param(
       [switch] $pack,
       [switch] $publish,
       [switch] $clean,
    +  [switch][Alias('pb')]$productBuild,
    +  [switch]$fromVMR,
       [switch][Alias('bl')]$binaryLog,
       [switch][Alias('nobl')]$excludeCIBinarylog,
       [switch] $ci,
    @@ -26,6 +29,7 @@ Param(
       [string] $runtimeSourceFeed = '',
       [string] $runtimeSourceFeedKey = '',
       [switch] $excludePrereleaseVS,
    +  [switch] $nativeToolsOnMachine,
       [switch] $help,
       [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
     )
    @@ -57,6 +61,7 @@ function Print-Usage() {
       Write-Host "  -sign                   Sign build outputs"
       Write-Host "  -publish                Publish artifacts (e.g. symbols)"
       Write-Host "  -clean                  Clean the solution"
    +  Write-Host "  -productBuild           Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
       Write-Host ""
     
       Write-Host "Advanced settings:"
    @@ -67,6 +72,10 @@ function Print-Usage() {
       Write-Host "  -warnAsError     Sets warnaserror msbuild parameter ('true' or 'false')"
       Write-Host "  -msbuildEngine   Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
       Write-Host "  -excludePrereleaseVS    Set to exclude build engines in prerelease versions of Visual Studio"
    +  Write-Host "  -nativeToolsOnMachine   Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
    +  Write-Host "  -nodeReuse       Sets nodereuse msbuild parameter ('true' or 'false')"
    +  Write-Host "  -buildCheck             Sets /check msbuild parameter"
    +  Write-Host "  -fromVMR                Set when building from within the VMR"
       Write-Host ""
     
       Write-Host "Command line arguments not listed above are passed thru to msbuild."
    @@ -93,6 +102,7 @@ function Build {
     
       $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' }
       $platformArg = if ($platform) { "/p:Platform=$platform" } else { '' }
    +  $check = if ($buildCheck) { '/check' } else { '' }
     
       if ($projects) {
         # Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons.
    @@ -109,6 +119,7 @@ function Build {
       MSBuild $toolsetBuildProj `
         $bl `
         $platformArg `
    +    $check `
         /p:Configuration=$configuration `
         /p:RepoRoot=$RepoRoot `
         /p:Restore=$restore `
    @@ -118,10 +129,13 @@ function Build {
         /p:Deploy=$deploy `
         /p:Test=$test `
         /p:Pack=$pack `
    +    /p:DotNetBuild=$productBuild `
    +    /p:DotNetBuildFromVMR=$fromVMR `
         /p:IntegrationTest=$integrationTest `
         /p:PerformanceTest=$performanceTest `
         /p:Sign=$sign `
         /p:Publish=$publish `
    +    /p:RestoreStaticGraphEnableBinaryLogger=$binaryLog `
         @properties
     }
     
    @@ -146,6 +160,9 @@ try {
         $nodeReuse = $false
       }
     
    +  if ($nativeToolsOnMachine) {
    +    $env:NativeToolsOnMachine = $true
    +  }
       if ($restore) {
         InitializeNativeTools
       }
    diff --git a/eng/common/build.sh b/eng/common/build.sh
    index 55b298f16c..9767bb411a 100755
    --- a/eng/common/build.sh
    +++ b/eng/common/build.sh
    @@ -19,6 +19,12 @@ usage()
       echo "Actions:"
       echo "  --restore                  Restore dependencies (short: -r)"
       echo "  --build                    Build solution (short: -b)"
    +  echo "  --sourceBuild              Source-build the solution (short: -sb)"
    +  echo "                             Will additionally trigger the following actions: --restore, --build, --pack"
    +  echo "                             If --configuration is not set explicitly, will also set it to 'Release'"
    +  echo "  --productBuild             Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
    +  echo "                             Will additionally trigger the following actions: --restore, --build, --pack"
    +  echo "                             If --configuration is not set explicitly, will also set it to 'Release'"
       echo "  --rebuild                  Rebuild solution"
       echo "  --test                     Run all unit tests in the solution (short: -t)"
       echo "  --integrationTest          Run all integration tests in the solution"
    @@ -36,6 +42,8 @@ usage()
       echo "  --prepareMachine         Prepare machine for CI run, clean up processes after build"
       echo "  --nodeReuse       Sets nodereuse msbuild parameter ('true' or 'false')"
       echo "  --warnAsError     Sets warnaserror msbuild parameter ('true' or 'false')"
    +  echo "  --buildCheck      Sets /check msbuild parameter"
    +  echo "  --fromVMR                Set when building from within the VMR"
       echo ""
       echo "Command line arguments not listed above are passed thru to msbuild."
       echo "Arguments can also be passed in with a single hyphen."
    @@ -55,6 +63,9 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
     
     restore=false
     build=false
    +source_build=false
    +product_build=false
    +from_vmr=false
     rebuild=false
     test=false
     integration_test=false
    @@ -68,18 +79,19 @@ clean=false
     
     warn_as_error=true
     node_reuse=true
    +build_check=false
     binary_log=false
     exclude_ci_binary_log=false
     pipelines_log=false
     
     projects=''
    -configuration='Debug'
    +configuration=''
     prepare_machine=false
     verbosity='minimal'
     runtime_source_feed=''
     runtime_source_feed_key=''
     
    -properties=''
    +properties=()
     while [[ $# > 0 ]]; do
       opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
       case "$opt" in
    @@ -101,7 +113,7 @@ while [[ $# > 0 ]]; do
         -binarylog|-bl)
           binary_log=true
           ;;
    -    -excludeCIBinarylog|-nobl)
    +    -excludecibinarylog|-nobl)
           exclude_ci_binary_log=true
           ;;
         -pipelineslog|-pl)
    @@ -119,6 +131,22 @@ while [[ $# > 0 ]]; do
         -pack)
           pack=true
           ;;
    +    -sourcebuild|-source-build|-sb)
    +      build=true
    +      source_build=true
    +      product_build=true
    +      restore=true
    +      pack=true
    +      ;;
    +    -productbuild|-product-build|-pb)
    +      build=true
    +      product_build=true
    +      restore=true
    +      pack=true
    +      ;;
    +    -fromvmr|-from-vmr)
    +      from_vmr=true
    +      ;;
         -test|-t)
           test=true
           ;;
    @@ -152,6 +180,9 @@ while [[ $# > 0 ]]; do
           node_reuse=$2
           shift
           ;;
    +    -buildcheck)
    +      build_check=true
    +      ;;
         -runtimesourcefeed)
           runtime_source_feed=$2
           shift
    @@ -161,13 +192,17 @@ while [[ $# > 0 ]]; do
           shift
           ;;
         *)
    -      properties="$properties $1"
    +      properties+=("$1")
           ;;
       esac
     
       shift
     done
     
    +if [[ -z "$configuration" ]]; then
    +  if [[ "$source_build" = true ]]; then configuration="Release"; else configuration="Debug"; fi
    +fi
    +
     if [[ "$ci" == true ]]; then
       pipelines_log=true
       node_reuse=false
    @@ -191,7 +226,7 @@ function Build {
       InitializeCustomToolset
     
       if [[ ! -z "$projects" ]]; then
    -    properties="$properties /p:Projects=$projects"
    +    properties+=("/p:Projects=$projects")
       fi
     
       local bl=""
    @@ -199,12 +234,21 @@ function Build {
         bl="/bl:\"$log_dir/Build.binlog\""
       fi
     
    +  local check=""
    +  if [[ "$build_check" == true ]]; then
    +    check="/check"
    +  fi
    +
       MSBuild $_InitializeToolset \
         $bl \
    +    $check \
         /p:Configuration=$configuration \
         /p:RepoRoot="$repo_root" \
         /p:Restore=$restore \
         /p:Build=$build \
    +    /p:DotNetBuild=$product_build \
    +    /p:DotNetBuildSourceOnly=$source_build \
    +    /p:DotNetBuildFromVMR=$from_vmr \
         /p:Rebuild=$rebuild \
         /p:Test=$test \
         /p:Pack=$pack \
    @@ -212,7 +256,8 @@ function Build {
         /p:PerformanceTest=$performance_test \
         /p:Sign=$sign \
         /p:Publish=$publish \
    -    $properties
    +    /p:RestoreStaticGraphEnableBinaryLogger=$binary_log \
    +    ${properties[@]+"${properties[@]}"}
     
       ExitWithExitCode 0
     }
    diff --git a/eng/common/cibuild.sh b/eng/common/cibuild.sh
    index 1a02c0dec8..66e3b0ac61 100644
    --- a/eng/common/cibuild.sh
    +++ b/eng/common/cibuild.sh
    @@ -13,4 +13,4 @@ while [[ -h $source ]]; do
     done
     scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
     
    -. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
    \ No newline at end of file
    +. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
    diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml
    new file mode 100644
    index 0000000000..d901325154
    --- /dev/null
    +++ b/eng/common/core-templates/job/job.yml
    @@ -0,0 +1,227 @@
    +parameters:
    +# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
    +  cancelTimeoutInMinutes: ''
    +  condition: ''
    +  container: ''
    +  continueOnError: false
    +  dependsOn: ''
    +  displayName: ''
    +  pool: ''
    +  steps: []
    +  strategy: ''
    +  timeoutInMinutes: ''
    +  variables: []
    +  workspace: ''
    +  templateContext: {}
    +
    +# Job base template specific parameters
    +  # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md
    +  # publishing defaults
    +  artifacts: ''
    +  enableMicrobuild: false
    +  enableMicrobuildForMacAndLinux: false
    +  microbuildUseESRP: true
    +  enablePublishBuildArtifacts: false
    +  enablePublishBuildAssets: false
    +  enablePublishTestResults: false
    +  enableBuildRetry: false
    +  mergeTestResults: false
    +  testRunTitle: ''
    +  testResultsFormat: ''
    +  name: ''
    +  componentGovernanceSteps: []
    +  preSteps: []
    +  artifactPublishSteps: []
    +  runAsPublic: false
    +
    +# 1es specific parameters
    +  is1ESPipeline: ''
    +
    +jobs:
    +- job: ${{ parameters.name }}
    +
    +  ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
    +    cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
    +
    +  ${{ if ne(parameters.condition, '') }}:
    +    condition: ${{ parameters.condition }}
    +
    +  ${{ if ne(parameters.container, '') }}:
    +    container: ${{ parameters.container }}
    +
    +  ${{ if ne(parameters.continueOnError, '') }}:
    +    continueOnError: ${{ parameters.continueOnError }}
    +
    +  ${{ if ne(parameters.dependsOn, '') }}:
    +    dependsOn: ${{ parameters.dependsOn }}
    +
    +  ${{ if ne(parameters.displayName, '') }}:
    +    displayName: ${{ parameters.displayName }}
    +
    +  ${{ if ne(parameters.pool, '') }}:
    +    pool: ${{ parameters.pool }}
    +
    +  ${{ if ne(parameters.strategy, '') }}:
    +    strategy: ${{ parameters.strategy }}
    +
    +  ${{ if ne(parameters.timeoutInMinutes, '') }}:
    +    timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
    +
    +  ${{ if ne(parameters.templateContext, '') }}:
    +    templateContext: ${{ parameters.templateContext }}
    +
    +  variables:
    +  - ${{ if ne(parameters.enableTelemetry, 'false') }}:
    +    - name: DOTNET_CLI_TELEMETRY_PROFILE
    +      value: '$(Build.Repository.Uri)'
    +  # Retry signature validation up to three times, waiting 2 seconds between attempts.
    +  # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures
    +  - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY
    +    value: 3,2000
    +  - ${{ each variable in parameters.variables }}:
    +    # handle name-value variable syntax
    +    # example:
    +    # - name: [key]
    +    #   value: [value]
    +    - ${{ if ne(variable.name, '') }}:
    +      - name: ${{ variable.name }}
    +        value: ${{ variable.value }}
    +
    +    # handle variable groups
    +    - ${{ if ne(variable.group, '') }}:
    +      - group: ${{ variable.group }}
    +
    +    # handle template variable syntax
    +    # example:
    +    # - template: path/to/template.yml
    +    #   parameters:
    +    #     [key]: [value]
    +    - ${{ if ne(variable.template, '') }}:
    +      - template: ${{ variable.template }}
    +        ${{ if ne(variable.parameters, '') }}:
    +          parameters: ${{ variable.parameters }}
    +
    +    # handle key-value variable syntax.
    +    # example:
    +    # - [key]: [value]
    +    - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}:
    +      - ${{ each pair in variable }}:
    +        - name: ${{ pair.key }}
    +          value: ${{ pair.value }}
    +
    +  # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds
    +  - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +    - group: DotNet-HelixApi-Access
    +
    +  ${{ if ne(parameters.workspace, '') }}:
    +    workspace: ${{ parameters.workspace }}
    +
    +  steps:
    +  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    +    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
    +
    +  - ${{ if ne(parameters.preSteps, '') }}:
    +    - ${{ each preStep in parameters.preSteps }}:
    +      - ${{ preStep }}
    +
    +  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +    - template: /eng/common/core-templates/steps/install-microbuild.yml
    +      parameters:
    +        enableMicrobuild: ${{ parameters.enableMicrobuild }}
    +        enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
    +        microbuildUseESRP: ${{ parameters.microbuildUseESRP }}
    +        continueOnError: ${{ parameters.continueOnError }}
    +
    +  - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}:
    +    - task: NuGetAuthenticate@1
    +
    +  - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}:
    +    - task: DownloadPipelineArtifact@2
    +      inputs:
    +        buildType: current
    +        artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }}
    +        targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }}
    +        itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }}
    +
    +  - ${{ each step in parameters.steps }}:
    +    - ${{ step }}
    +
    +  - ${{ each step in parameters.componentGovernanceSteps }}:
    +    - ${{ step }}
    +
    +  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +    - template: /eng/common/core-templates/steps/cleanup-microbuild.yml
    +      parameters:
    +        enableMicrobuild: ${{ parameters.enableMicrobuild }}
    +        enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
    +        continueOnError: ${{ parameters.continueOnError }}
    +
    +  # Publish test results
    +  - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}:
    +    - task: PublishTestResults@2
    +      displayName: Publish XUnit Test Results
    +      inputs:
    +        testResultsFormat: 'xUnit'
    +        testResultsFiles: '*.xml'
    +        searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
    +        testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
    +        mergeTestResults: ${{ parameters.mergeTestResults }}
    +      continueOnError: true
    +      condition: always()
    +  - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}:
    +    - task: PublishTestResults@2
    +      displayName: Publish TRX Test Results
    +      inputs:
    +        testResultsFormat: 'VSTest'
    +        testResultsFiles: '*.trx'
    +        searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
    +        testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
    +        mergeTestResults: ${{ parameters.mergeTestResults }}
    +      continueOnError: true
    +      condition: always()
    +
    +  # gather artifacts
    +  - ${{ if ne(parameters.artifacts.publish, '') }}:
    +    - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
    +      - task: CopyFiles@2
    +        displayName: Gather binaries for publish to artifacts
    +        inputs:
    +          SourceFolder: 'artifacts/bin'
    +          Contents: '**'
    +          TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin'
    +      - task: CopyFiles@2
    +        displayName: Gather packages for publish to artifacts
    +        inputs:
    +          SourceFolder: 'artifacts/packages'
    +          Contents: '**'
    +          TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
    +    - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
    +      - task: CopyFiles@2
    +        displayName: Gather logs for publish to artifacts
    +        inputs:
    +          SourceFolder: 'artifacts/log'
    +          Contents: '**'
    +          TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log'
    +        continueOnError: true
    +        condition: always()
    +      
    +  - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
    +    - task: CopyFiles@2
    +      displayName: Gather logs for publish to artifacts
    +      inputs:
    +        SourceFolder: 'artifacts/log/$(_BuildConfig)'
    +        Contents: '**'
    +        TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
    +      continueOnError: true
    +      condition: always()
    +  - ${{ if eq(parameters.enableBuildRetry, 'true') }}:
    +    - task: CopyFiles@2
    +      displayName: Gather buildconfiguration for build retry
    +      inputs:
    +        SourceFolder: '$(Build.SourcesDirectory)/eng/common/BuildConfiguration'
    +        Contents: '**'
    +        TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration'
    +      continueOnError: true
    +      condition: always()
    +  - ${{ each step in parameters.artifactPublishSteps }}:
    +    - ${{ step }}
    diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml
    new file mode 100644
    index 0000000000..8bf7d23355
    --- /dev/null
    +++ b/eng/common/core-templates/job/onelocbuild.yml
    @@ -0,0 +1,118 @@
    +parameters:
    +  # Optional: dependencies of the job
    +  dependsOn: ''
    +
    +  # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
    +  pool: ''
    +
    +  CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
    +  GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
    +
    +  SourcesDirectory: $(Build.SourcesDirectory)
    +  CreatePr: true
    +  AutoCompletePr: false
    +  ReusePr: true
    +  UseLfLineEndings: true
    +  UseCheckedInLocProjectJson: false
    +  SkipLocProjectJsonGeneration: false
    +  LanguageSet: VS_Main_Languages
    +  LclSource: lclFilesInRepo
    +  LclPackageId: ''
    +  RepoType: gitHub
    +  GitHubOrg: dotnet
    +  MirrorRepo: ''
    +  MirrorBranch: main
    +  condition: ''
    +  JobNameSuffix: ''
    +  is1ESPipeline: ''
    +jobs:
    +- job: OneLocBuild${{ parameters.JobNameSuffix }}
    +
    +  dependsOn: ${{ parameters.dependsOn }}
    +
    +  displayName: OneLocBuild${{ parameters.JobNameSuffix }}
    +
    +  variables:
    +    - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat
    +    - name: _GenerateLocProjectArguments
    +      value: -SourcesDirectory ${{ parameters.SourcesDirectory }}
    +        -LanguageSet "${{ parameters.LanguageSet }}"
    +        -CreateNeutralXlfs
    +    - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}:
    +      - name: _GenerateLocProjectArguments
    +        value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson
    +    - template: /eng/common/core-templates/variables/pool-providers.yml
    +      parameters:
    +        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +  ${{ if ne(parameters.pool, '') }}:
    +    pool: ${{ parameters.pool }}
    +  ${{ if eq(parameters.pool, '') }}:
    +    pool:
    +      # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    +      ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
    +        name: AzurePipelines-EO
    +        image: 1ESPT-Windows2022
    +        demands: Cmd
    +        os: windows
    +      # If it's not devdiv, it's dnceng
    +      ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
    +        name: $(DncEngInternalBuildPool)
    +        image: 1es-windows-2022
    +        os: windows
    +
    +  steps:
    +    - ${{ if eq(parameters.is1ESPipeline, '') }}:
    +      - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
    +
    +    - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}:
    +      - task: Powershell@2
    +        inputs:
    +          filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1
    +          arguments: $(_GenerateLocProjectArguments)
    +        displayName: Generate LocProject.json
    +        condition: ${{ parameters.condition }}
    +
    +    - task: OneLocBuild@2
    +      displayName: OneLocBuild
    +      env:
    +        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    +      inputs:
    +        locProj: eng/Localize/LocProject.json
    +        outDir: $(Build.ArtifactStagingDirectory)
    +        lclSource: ${{ parameters.LclSource }}
    +        lclPackageId: ${{ parameters.LclPackageId }}
    +        isCreatePrSelected: ${{ parameters.CreatePr }}
    +        isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }}
    +        ${{ if eq(parameters.CreatePr, true) }}:
    +          isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }}
    +          isShouldReusePrSelected: ${{ parameters.ReusePr }}
    +        packageSourceAuth: patAuth
    +        patVariable: ${{ parameters.CeapexPat }}
    +        ${{ if eq(parameters.RepoType, 'gitHub') }}:
    +          repoType: ${{ parameters.RepoType }}
    +          gitHubPatVariable: "${{ parameters.GithubPat }}"
    +        ${{ if ne(parameters.MirrorRepo, '') }}:
    +          isMirrorRepoSelected: true
    +          gitHubOrganization: ${{ parameters.GitHubOrg }}
    +          mirrorRepo: ${{ parameters.MirrorRepo }}
    +          mirrorBranch: ${{ parameters.MirrorBranch }}
    +      condition: ${{ parameters.condition }}
    +
    +    # Copy the locProject.json to the root of the Loc directory, then publish a pipeline artifact
    +    - task: CopyFiles@2
    +      displayName: Copy LocProject.json
    +      inputs:
    +        SourceFolder: '$(Build.SourcesDirectory)/eng/Localize/'
    +        Contents: 'LocProject.json'
    +        TargetFolder: '$(Build.ArtifactStagingDirectory)/loc'
    +      condition: ${{ parameters.condition }}
    +
    +    - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
    +      parameters:
    +        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +        args:
    +          targetPath: '$(Build.ArtifactStagingDirectory)/loc'
    +          artifactName: 'Loc'
    +          displayName: 'Publish Localization Files'
    +          condition: ${{ parameters.condition }}
    diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
    new file mode 100644
    index 0000000000..d5303229c9
    --- /dev/null
    +++ b/eng/common/core-templates/job/publish-build-assets.yml
    @@ -0,0 +1,194 @@
    +parameters:
    +  configuration: 'Debug'
    +
    +  # Optional: condition for the job to run
    +  condition: ''
    +
    +  # Optional: 'true' if future jobs should run even if this job fails
    +  continueOnError: false
    +
    +  # Optional: dependencies of the job
    +  dependsOn: ''
    +
    +  # Optional: Include PublishBuildArtifacts task
    +  enablePublishBuildArtifacts: false
    +
    +  # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
    +  pool: {}
    +
    +  # Optional: should run as a public build even in the internal project
    +  #           if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
    +  runAsPublic: false
    +
    +  # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing
    +  publishAssetsImmediately: false
    +
    +  artifactsPublishingAdditionalParameters: ''
    +
    +  signingValidationAdditionalParameters: ''
    +
    +  is1ESPipeline: ''
    +
    +  # Optional: 🌤️ or not the build has assets it wants to publish to BAR
    +  isAssetlessBuild: false
    +
    +  # Optional, publishing version
    +  publishingVersion: 3
    +
    +  # Optional: A minimatch pattern for the asset manifests to publish to BAR
    +  assetManifestsPattern: '*/manifests/**/*.xml'
    +
    +jobs:
    +- job: Asset_Registry_Publish
    +
    +  dependsOn: ${{ parameters.dependsOn }}
    +  timeoutInMinutes: 150
    +
    +  ${{ if eq(parameters.publishAssetsImmediately, 'true') }}:
    +    displayName: Publish Assets
    +  ${{ else }}:
    +    displayName: Publish to Build Asset Registry
    +
    +  variables:
    +  - template: /eng/common/core-templates/variables/pool-providers.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +    - group: Publish-Build-Assets
    +    - group: AzureDevOps-Artifact-Feeds-Pats
    +    - name: runCodesignValidationInjection
    +      value: false
    +    # unconditional - needed for logs publishing (redactor tool version)
    +    - template: /eng/common/core-templates/post-build/common-variables.yml
    +
    +  pool:
    +    # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    +    ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
    +      name: AzurePipelines-EO
    +      image: 1ESPT-Windows2022
    +      demands: Cmd
    +      os: windows
    +    # If it's not devdiv, it's dnceng
    +    ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
    +      name: NetCore1ESPool-Publishing-Internal
    +      image: windows.vs2019.amd64
    +      os: windows
    +  steps:
    +  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    +    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
    +
    +  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +    - checkout: self
    +      fetchDepth: 3
    +      clean: true
    +
    +    - ${{ if eq(parameters.isAssetlessBuild, 'false') }}: 
    +      - ${{ if eq(parameters.publishingVersion, 3) }}: 
    +        - task: DownloadPipelineArtifact@2
    +          displayName: Download Asset Manifests
    +          inputs:
    +            artifactName: AssetManifests
    +            targetPath: '$(Build.StagingDirectory)/AssetManifests'
    +          condition: ${{ parameters.condition }}
    +          continueOnError: ${{ parameters.continueOnError }}
    +      - ${{ if eq(parameters.publishingVersion, 4) }}:
    +        - task: DownloadPipelineArtifact@2
    +          displayName: Download V4 asset manifests
    +          inputs:
    +            itemPattern: '*/manifests/**/*.xml'
    +            targetPath: '$(Build.StagingDirectory)/AllAssetManifests'
    +          condition: ${{ parameters.condition }}
    +          continueOnError: ${{ parameters.continueOnError }}
    +        - task: CopyFiles@2
    +          displayName: Copy V4 asset manifests to AssetManifests
    +          inputs:
    +            SourceFolder: '$(Build.StagingDirectory)/AllAssetManifests'
    +            Contents: ${{ parameters.assetManifestsPattern }}
    +            TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
    +            flattenFolders: true
    +          condition: ${{ parameters.condition }}
    +          continueOnError: ${{ parameters.continueOnError }}
    +    
    +    - task: NuGetAuthenticate@1
    +
    +    - task: AzureCLI@2
    +      displayName: Publish Build Assets
    +      inputs:
    +        azureSubscription: "Darc: Maestro Production"
    +        scriptType: ps
    +        scriptLocation: scriptPath
    +        scriptPath: $(Build.SourcesDirectory)/eng/common/sdk-task.ps1
    +        arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
    +          /p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests'
    +          /p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
    +          /p:MaestroApiEndpoint=https://maestro.dot.net
    +          /p:OfficialBuildId=$(Build.BuildNumber)
    +      condition: ${{ parameters.condition }}
    +      continueOnError: ${{ parameters.continueOnError }}
    +    
    +    - task: powershell@2
    +      displayName: Create ReleaseConfigs Artifact
    +      inputs:
    +        targetType: inline
    +        script: |
    +          New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force
    +          $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt"
    +          Add-Content -Path $filePath -Value $(BARBuildId)
    +          Add-Content -Path $filePath -Value "$(DefaultChannels)"
    +          Add-Content -Path $filePath -Value $(IsStableBuild)
    +
    +          $symbolExclusionfile = "$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt"
    +          if (Test-Path -Path $symbolExclusionfile)
    +          {
    +            Write-Host "SymbolExclusionFile exists"
    +            Copy-Item -Path $symbolExclusionfile -Destination "$(Build.StagingDirectory)/ReleaseConfigs"
    +          }
    +
    +    - ${{ if eq(parameters.publishingVersion, 4) }}:
    +      - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
    +        parameters:
    +          is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +          args:
    +            targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml'
    +            artifactName: AssetManifests
    +            displayName: 'Publish Merged Manifest'
    +            retryCountOnTaskFailure: 10 # for any logs being locked
    +            sbomEnabled: false  # we don't need SBOM for logs
    +
    +    - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
    +      parameters:
    +        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +        args:
    +          displayName: Publish ReleaseConfigs Artifact
    +          pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs'
    +          publishLocation: Container
    +          artifactName: ReleaseConfigs
    +
    +    - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}:
    +      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
    +        parameters:
    +          BARBuildId: ${{ parameters.BARBuildId }}
    +          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
    +          is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +      - task: AzureCLI@2
    +        displayName: Publish Using Darc
    +        inputs:
    +          azureSubscription: "Darc: Maestro Production"
    +          scriptType: ps
    +          scriptLocation: scriptPath
    +          scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
    +          arguments: >
    +            -BuildId $(BARBuildId)
    +            -PublishingInfraVersion 3
    +            -AzdoToken '$(System.AccessToken)'
    +            -WaitPublishingFinish true
    +            -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
    +            -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
    +            -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
    +
    +    - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
    +      - template: /eng/common/core-templates/steps/publish-logs.yml
    +        parameters:
    +          is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +          JobLabel: 'Publish_Artifacts_Logs'     
    diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml
    new file mode 100644
    index 0000000000..d805d5faeb
    --- /dev/null
    +++ b/eng/common/core-templates/job/source-build.yml
    @@ -0,0 +1,96 @@
    +parameters:
    +  # This template adds arcade-powered source-build to CI. The template produces a server job with a
    +  # default ID 'Source_Build_Complete' to put in a dependency list if necessary.
    +
    +  # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed.
    +  jobNamePrefix: 'Source_Build'
    +
    +  # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for
    +  # managed-only repositories. This is an object with these properties:
    +  #
    +  # name: ''
    +  #   The name of the job. This is included in the job ID.
    +  # targetRID: ''
    +  #   The name of the target RID to use, instead of the one auto-detected by Arcade.
    +  # portableBuild: false
    +  #   Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than
    +  #   linux-x64), and compiling against distro-provided packages rather than portable ones. The
    +  #   default is portable mode.
    +  # skipPublishValidation: false
    +  #   Disables publishing validation.  By default, a check is performed to ensure no packages are
    +  #   published by source-build.
    +  # container: ''
    +  #   A container to use. Runs in docker.
    +  # pool: {}
    +  #   A pool to use. Runs directly on an agent.
    +  # buildScript: ''
    +  #   Specifies the build script to invoke to perform the build in the repo. The default
    +  #   './build.sh' should work for typical Arcade repositories, but this is customizable for
    +  #   difficult situations.
    +  # buildArguments: ''
    +  #   Specifies additional build arguments to pass to the build script.
    +  # jobProperties: {}
    +  #   A list of job properties to inject at the top level, for potential extensibility beyond
    +  #   container and pool.
    +  platform: {}
    +
    +  is1ESPipeline: ''
    +
    +  # If set to true and running on a non-public project,
    +  # Internal nuget and blob storage locations will be enabled.
    +  # This is not enabled by default because many repositories do not need internal sources
    +  # and do not need to have the required service connections approved in the pipeline.
    +  enableInternalSources: false
    +
    +jobs:
    +- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }}
    +  displayName: Source-Build (${{ parameters.platform.name }})
    +
    +  ${{ each property in parameters.platform.jobProperties }}:
    +    ${{ property.key }}: ${{ property.value }}
    +
    +  ${{ if ne(parameters.platform.container, '') }}:
    +    container: ${{ parameters.platform.container }}
    +
    +  ${{ if eq(parameters.platform.pool, '') }}:
    +    # The default VM host AzDO pool. This should be capable of running Docker containers: almost all
    +    # source-build builds run in Docker, including the default managed platform.
    +    # /eng/common/core-templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic
    +    ${{ if eq(parameters.is1ESPipeline, 'true') }}:
    +      pool:
    +        ${{ if eq(variables['System.TeamProject'], 'public') }}:
    +          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
    +          demands: ImageOverride -equals build.ubuntu.2004.amd64
    +        ${{ if eq(variables['System.TeamProject'], 'internal') }}:
    +          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
    +          image: 1es-mariner-2
    +          os: linux
    +    ${{ else }}:
    +      pool:
    +        ${{ if eq(variables['System.TeamProject'], 'public') }}:
    +          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
    +          demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open
    +        ${{ if eq(variables['System.TeamProject'], 'internal') }}:
    +          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
    +          demands: ImageOverride -equals Build.Ubuntu.2204.Amd64
    +  ${{ if ne(parameters.platform.pool, '') }}:
    +    pool: ${{ parameters.platform.pool }}
    +
    +  workspace:
    +    clean: all
    +
    +  steps:
    +  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    +    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
    +
    +  - ${{ if eq(parameters.enableInternalSources, true) }}:
    +    - template: /eng/common/core-templates/steps/enable-internal-sources.yml
    +      parameters:
    +        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +    - template: /eng/common/core-templates/steps/enable-internal-runtimes.yml
    +      parameters:
    +        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +  - template: /eng/common/core-templates/steps/source-build.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      platform: ${{ parameters.platform }}
    diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml
    new file mode 100644
    index 0000000000..30530359a5
    --- /dev/null
    +++ b/eng/common/core-templates/job/source-index-stage1.yml
    @@ -0,0 +1,44 @@
    +parameters:
    +  runAsPublic: false
    +  sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
    +  preSteps: []
    +  binlogPath: artifacts/log/Debug/Build.binlog
    +  condition: ''
    +  dependsOn: ''
    +  pool: ''
    +  is1ESPipeline: ''
    +
    +jobs:
    +- job: SourceIndexStage1
    +  dependsOn: ${{ parameters.dependsOn }}
    +  condition: ${{ parameters.condition }}
    +  variables:
    +  - name: BinlogPath
    +    value: ${{ parameters.binlogPath }}
    +  - template: /eng/common/core-templates/variables/pool-providers.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +  ${{ if ne(parameters.pool, '') }}:
    +    pool: ${{ parameters.pool }}
    +  ${{ if eq(parameters.pool, '') }}:
    +    pool:
    +      ${{ if eq(variables['System.TeamProject'], 'public') }}:
    +        name: $(DncEngPublicBuildPool)
    +        image: windows.vs2022.amd64.open
    +      ${{ if eq(variables['System.TeamProject'], 'internal') }}:
    +        name: $(DncEngInternalBuildPool)
    +        image: windows.vs2022.amd64
    +
    +  steps:
    +  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    +    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
    +
    +  - ${{ each preStep in parameters.preSteps }}:
    +    - ${{ preStep }}
    +  - script: ${{ parameters.sourceIndexBuildCommand }}
    +    displayName: Build Repository
    +
    +  - template: /eng/common/core-templates/steps/source-index-stage1-publish.yml
    +    parameters:
    +      binLogPath: ${{ parameters.binLogPath }}
    \ No newline at end of file
    diff --git a/eng/common/core-templates/jobs/codeql-build.yml b/eng/common/core-templates/jobs/codeql-build.yml
    new file mode 100644
    index 0000000000..693b00b370
    --- /dev/null
    +++ b/eng/common/core-templates/jobs/codeql-build.yml
    @@ -0,0 +1,32 @@
    +parameters:
    +  # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
    +  continueOnError: false
    +  # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
    +  jobs: []
    +  # Optional: if specified, restore and use this version of Guardian instead of the default.
    +  overrideGuardianVersion: ''
    +  is1ESPipeline: ''
    +
    +jobs:
    +- template: /eng/common/core-templates/jobs/jobs.yml
    +  parameters:
    +    is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +    enableMicrobuild: false
    +    enablePublishBuildArtifacts: false
    +    enablePublishTestResults: false
    +    enablePublishBuildAssets: false
    +    enableTelemetry: true
    +
    +    variables:
    +      - group: Publish-Build-Assets
    +      # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
    +      # sync with the packages.config file.
    +      - name: DefaultGuardianVersion
    +        value: 0.109.0
    +      - name: GuardianPackagesConfigFile
    +        value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
    +      - name: GuardianVersion
    +        value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }}
    +  
    +    jobs: ${{ parameters.jobs }}
    +        
    diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml
    new file mode 100644
    index 0000000000..2f992b2c6e
    --- /dev/null
    +++ b/eng/common/core-templates/jobs/jobs.yml
    @@ -0,0 +1,116 @@
    +parameters:
    +  # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
    +  continueOnError: false
    +
    +  # Optional: Include PublishBuildArtifacts task
    +  enablePublishBuildArtifacts: false
    +
    +  # Optional: Enable running the source-build jobs to build repo from source
    +  enableSourceBuild: false
    +
    +  # Optional: Parameters for source-build template.
    +  #           See /eng/common/core-templates/jobs/source-build.yml for options
    +  sourceBuildParameters: []
    +
    +  graphFileGeneration:
    +    # Optional: Enable generating the graph files at the end of the build
    +    enabled: false
    +    # Optional: Include toolset dependencies in the generated graph files
    +    includeToolset: false
    +    
    +  # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
    +  jobs: []
    +
    +  # Optional: Override automatically derived dependsOn value for "publish build assets" job
    +  publishBuildAssetsDependsOn: ''
    +
    +  # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage.
    +  publishAssetsImmediately: false
    +
    +  # Optional: 🌤️ or not the build has assets it wants to publish to BAR
    +  isAssetlessBuild: false
    +
    +  # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml)
    +  artifactsPublishingAdditionalParameters: ''
    +  signingValidationAdditionalParameters: ''
    +
    +  # Optional: should run as a public build even in the internal project
    +  #           if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
    +  runAsPublic: false
    +
    +  enableSourceIndex: false
    +  sourceIndexParams: {}
    +
    +  artifacts: {}
    +  is1ESPipeline: ''
    +
    +# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
    +# and some (Microbuild) should only be applied to non-PR cases for internal builds.
    +
    +jobs:
    +- ${{ each job in parameters.jobs }}:
    +  - ${{ if eq(parameters.is1ESPipeline, 'true') }}:
    +    - template: /eng/common/templates-official/job/job.yml
    +      parameters: 
    +        # pass along parameters
    +        ${{ each parameter in parameters }}:
    +          ${{ if ne(parameter.key, 'jobs') }}:
    +            ${{ parameter.key }}: ${{ parameter.value }}
    +
    +        # pass along job properties
    +        ${{ each property in job }}:
    +          ${{ if ne(property.key, 'job') }}:
    +            ${{ property.key }}: ${{ property.value }}
    +
    +        name: ${{ job.job }}
    +
    +  - ${{ else }}:
    +    - template: /eng/common/templates/job/job.yml
    +      parameters: 
    +        # pass along parameters
    +        ${{ each parameter in parameters }}:
    +          ${{ if ne(parameter.key, 'jobs') }}:
    +            ${{ parameter.key }}: ${{ parameter.value }}
    +
    +        # pass along job properties
    +        ${{ each property in job }}:
    +          ${{ if ne(property.key, 'job') }}:
    +            ${{ property.key }}: ${{ property.value }}
    +
    +        name: ${{ job.job }}
    +
    +- ${{ if eq(parameters.enableSourceBuild, true) }}:
    +  - template: /eng/common/core-templates/jobs/source-build.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      ${{ each parameter in parameters.sourceBuildParameters }}:
    +        ${{ parameter.key }}: ${{ parameter.value }}
    +
    +- ${{ if eq(parameters.enableSourceIndex, 'true') }}:
    +  - template: ../job/source-index-stage1.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      runAsPublic: ${{ parameters.runAsPublic }}
    +      ${{ each parameter in parameters.sourceIndexParams }}:
    +        ${{ parameter.key }}: ${{ parameter.value }}
    +
    +- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +  - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, ''), eq(parameters.isAssetlessBuild, true)) }}:
    +    - template: ../job/publish-build-assets.yml
    +      parameters:
    +        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +        continueOnError: ${{ parameters.continueOnError }}
    +        dependsOn:
    +        - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
    +          - ${{ each job in parameters.publishBuildAssetsDependsOn }}:
    +            - ${{ job.job }}
    +        - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
    +          - ${{ each job in parameters.jobs }}:
    +            - ${{ job.job }}
    +
    +        runAsPublic: ${{ parameters.runAsPublic }}
    +        publishAssetsImmediately: ${{ or(parameters.publishAssetsImmediately, parameters.isAssetlessBuild) }}
    +        isAssetlessBuild: ${{ parameters.isAssetlessBuild }}
    +        enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
    +        artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    +        signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }}
    diff --git a/eng/common/core-templates/jobs/source-build.yml b/eng/common/core-templates/jobs/source-build.yml
    new file mode 100644
    index 0000000000..d92860cba2
    --- /dev/null
    +++ b/eng/common/core-templates/jobs/source-build.yml
    @@ -0,0 +1,42 @@
    +parameters:
    +  # This template adds arcade-powered source-build to CI. A job is created for each platform, as
    +  # well as an optional server job that completes when all platform jobs complete.
    +
    +  # See /eng/common/core-templates/job/source-build.yml
    +  jobNamePrefix: 'Source_Build'
    +
    +  # This is the default platform provided by Arcade, intended for use by a managed-only repo.
    +  defaultManagedPlatform:
    +    name: 'Managed'
    +    container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-amd64'
    +
    +  # Defines the platforms on which to run build jobs. One job is created for each platform, and the
    +  # object in this array is sent to the job template as 'platform'. If no platforms are specified,
    +  # one job runs on 'defaultManagedPlatform'.
    +  platforms: []
    +
    +  is1ESPipeline: ''
    +
    +  # If set to true and running on a non-public project,
    +  # Internal nuget and blob storage locations will be enabled.
    +  # This is not enabled by default because many repositories do not need internal sources
    +  # and do not need to have the required service connections approved in the pipeline.
    +  enableInternalSources: false
    +
    +jobs:
    +
    +- ${{ each platform in parameters.platforms }}:
    +  - template: /eng/common/core-templates/job/source-build.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      jobNamePrefix: ${{ parameters.jobNamePrefix }}
    +      platform: ${{ platform }}
    +      enableInternalSources: ${{ parameters.enableInternalSources }}
    +
    +- ${{ if eq(length(parameters.platforms), 0) }}:
    +  - template: /eng/common/core-templates/job/source-build.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      jobNamePrefix: ${{ parameters.jobNamePrefix }}
    +      platform: ${{ parameters.defaultManagedPlatform }}
    +      enableInternalSources: ${{ parameters.enableInternalSources }}
    diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml
    new file mode 100644
    index 0000000000..d5627a994a
    --- /dev/null
    +++ b/eng/common/core-templates/post-build/common-variables.yml
    @@ -0,0 +1,22 @@
    +variables:
    +  - group: Publish-Build-Assets
    +
    +  # Whether the build is internal or not
    +  - name: IsInternalBuild
    +    value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }}
    +
    +  # Default Maestro++ API Endpoint and API Version
    +  - name: MaestroApiEndPoint
    +    value: "https://maestro.dot.net"
    +  - name: MaestroApiVersion
    +    value: "2020-02-20"
    +
    +  - name: SourceLinkCLIVersion
    +    value: 3.0.0
    +  - name: SymbolToolVersion
    +    value: 1.0.1
    +  - name: BinlogToolVersion
    +    value: 1.0.11
    +
    +  - name: runCodesignValidationInjection
    +    value: false
    diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
    new file mode 100644
    index 0000000000..a151fd811e
    --- /dev/null
    +++ b/eng/common/core-templates/post-build/post-build.yml
    @@ -0,0 +1,325 @@
    +parameters:
    +  # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
    +  # Publishing V1 is no longer supported
    +  # Publishing V2 is no longer supported
    +  # Publishing V3 is the default
    +  - name: publishingInfraVersion
    +    displayName: Which version of publishing should be used to promote the build definition?
    +    type: number
    +    default: 3
    +    values:
    +    - 3
    +
    +  - name: BARBuildId
    +    displayName: BAR Build Id
    +    type: number
    +    default: 0
    +
    +  - name: PromoteToChannelIds
    +    displayName: Channel to promote BARBuildId to
    +    type: string
    +    default: ''
    +
    +  - name: enableSourceLinkValidation
    +    displayName: Enable SourceLink validation
    +    type: boolean
    +    default: false
    +
    +  - name: enableSigningValidation
    +    displayName: Enable signing validation
    +    type: boolean
    +    default: true
    +
    +  - name: enableSymbolValidation
    +    displayName: Enable symbol validation
    +    type: boolean
    +    default: false
    +
    +  - name: enableNugetValidation
    +    displayName: Enable NuGet validation
    +    type: boolean
    +    default: true
    +    
    +  - name: publishInstallersAndChecksums
    +    displayName: Publish installers and checksums
    +    type: boolean
    +    default: true
    +    
    +  - name: requireDefaultChannels
    +    displayName: Fail the build if there are no default channel(s) registrations for the current build
    +    type: boolean
    +    default: false
    +
    +  - name: SDLValidationParameters
    +    type: object
    +    default:
    +      enable: false
    +      publishGdn: false
    +      continueOnError: false
    +      params: ''
    +      artifactNames: ''
    +      downloadArtifacts: true
    +
    +  - name: isAssetlessBuild
    +    type: boolean
    +    displayName: Is Assetless Build
    +    default: false
    +
    +  # These parameters let the user customize the call to sdk-task.ps1 for publishing
    +  # symbols & general artifacts as well as for signing validation
    +  - name: symbolPublishingAdditionalParameters
    +    displayName: Symbol publishing additional parameters
    +    type: string
    +    default: ''
    +
    +  - name: artifactsPublishingAdditionalParameters
    +    displayName: Artifact publishing additional parameters
    +    type: string
    +    default: ''
    +
    +  - name: signingValidationAdditionalParameters
    +    displayName: Signing validation additional parameters
    +    type: string
    +    default: ''
    +
    +  # Which stages should finish execution before post-build stages start
    +  - name: validateDependsOn
    +    type: object
    +    default:
    +    - build
    +
    +  - name: publishDependsOn
    +    type: object
    +    default:
    +    - Validate
    +
    +  # Optional: Call asset publishing rather than running in a separate stage
    +  - name: publishAssetsImmediately
    +    type: boolean
    +    default: false
    +
    +  - name: is1ESPipeline
    +    type: boolean
    +    default: false
    +
    +stages:
    +- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
    +  - stage: Validate
    +    dependsOn: ${{ parameters.validateDependsOn }}
    +    displayName: Validate Build Assets
    +    variables:
    +      - template: /eng/common/core-templates/post-build/common-variables.yml
    +      - template: /eng/common/core-templates/variables/pool-providers.yml
    +        parameters:
    +          is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +    jobs:
    +    - job:
    +      displayName: NuGet Validation
    +      condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true'))
    +      pool:
    +        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    +        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
    +          name: AzurePipelines-EO
    +          image: 1ESPT-Windows2022
    +          demands: Cmd
    +          os: windows
    +        # If it's not devdiv, it's dnceng
    +        ${{ else }}:
    +          ${{ if eq(parameters.is1ESPipeline, true) }}:
    +            name: $(DncEngInternalBuildPool)
    +            image: windows.vs2022.amd64
    +            os: windows
    +          ${{ else }}:
    +            name: $(DncEngInternalBuildPool)
    +            demands: ImageOverride -equals windows.vs2022.amd64
    +
    +      steps:
    +        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
    +          parameters:
    +            BARBuildId: ${{ parameters.BARBuildId }}
    +            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
    +            is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +        - task: DownloadBuildArtifacts@0
    +          displayName: Download Package Artifacts
    +          inputs:
    +            buildType: specific
    +            buildVersionToDownload: specific
    +            project: $(AzDOProjectName)
    +            pipeline: $(AzDOPipelineId)
    +            buildId: $(AzDOBuildId)
    +            artifactName: PackageArtifacts
    +            checkDownloadedFiles: true
    +
    +        - task: PowerShell@2
    +          displayName: Validate
    +          inputs:
    +            filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
    +            arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
    +
    +    - job:
    +      displayName: Signing Validation
    +      condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true'))
    +      pool:
    +        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    +        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
    +          name: AzurePipelines-EO
    +          image: 1ESPT-Windows2022
    +          demands: Cmd
    +          os: windows
    +        # If it's not devdiv, it's dnceng
    +        ${{ else }}:
    +          ${{ if eq(parameters.is1ESPipeline, true) }}:        
    +            name: $(DncEngInternalBuildPool)
    +            image: 1es-windows-2022
    +            os: windows
    +          ${{ else }}:
    +            name: $(DncEngInternalBuildPool)
    +            demands: ImageOverride -equals windows.vs2022.amd64          
    +      steps:
    +        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
    +          parameters:
    +            BARBuildId: ${{ parameters.BARBuildId }}
    +            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
    +            is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +        - task: DownloadBuildArtifacts@0
    +          displayName: Download Package Artifacts
    +          inputs:
    +            buildType: specific
    +            buildVersionToDownload: specific
    +            project: $(AzDOProjectName)
    +            pipeline: $(AzDOPipelineId)
    +            buildId: $(AzDOBuildId)
    +            artifactName: PackageArtifacts
    +            checkDownloadedFiles: true
    +
    +        # This is necessary whenever we want to publish/restore to an AzDO private feed
    +        # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
    +        # otherwise it'll complain about accessing a private feed.
    +        - task: NuGetAuthenticate@1
    +          displayName: 'Authenticate to AzDO Feeds'
    +
    +        # Signing validation will optionally work with the buildmanifest file which is downloaded from
    +        # Azure DevOps above.
    +        - task: PowerShell@2
    +          displayName: Validate
    +          inputs:
    +            filePath: eng\common\sdk-task.ps1
    +            arguments: -task SigningValidation -restore -msbuildEngine vs
    +              /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
    +              /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
    +              ${{ parameters.signingValidationAdditionalParameters }}
    +
    +        - template: /eng/common/core-templates/steps/publish-logs.yml
    +          parameters:
    +            is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +            StageLabel: 'Validation'
    +            JobLabel: 'Signing'
    +            BinlogToolVersion: $(BinlogToolVersion)
    +
    +    - job:
    +      displayName: SourceLink Validation
    +      condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
    +      pool:
    +        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    +        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
    +          name: AzurePipelines-EO
    +          image: 1ESPT-Windows2022
    +          demands: Cmd
    +          os: windows
    +        # If it's not devdiv, it's dnceng
    +        ${{ else }}:
    +          ${{ if eq(parameters.is1ESPipeline, true) }}:          
    +            name: $(DncEngInternalBuildPool)
    +            image: 1es-windows-2022
    +            os: windows
    +          ${{ else }}:
    +            name: $(DncEngInternalBuildPool)
    +            demands: ImageOverride -equals windows.vs2022.amd64          
    +      steps:
    +        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
    +          parameters:
    +            BARBuildId: ${{ parameters.BARBuildId }}
    +            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
    +            is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +        - task: DownloadBuildArtifacts@0
    +          displayName: Download Blob Artifacts
    +          inputs:
    +            buildType: specific
    +            buildVersionToDownload: specific
    +            project: $(AzDOProjectName)
    +            pipeline: $(AzDOPipelineId)
    +            buildId: $(AzDOBuildId)
    +            artifactName: BlobArtifacts
    +            checkDownloadedFiles: true
    +
    +        - task: PowerShell@2
    +          displayName: Validate
    +          inputs:
    +            filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
    +            arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ 
    +              -ExtractPath $(Agent.BuildDirectory)/Extract/ 
    +              -GHRepoName $(Build.Repository.Name) 
    +              -GHCommit $(Build.SourceVersion)
    +              -SourcelinkCliVersion $(SourceLinkCLIVersion)
    +          continueOnError: true
    +
    +- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}:
    +  - stage: publish_using_darc
    +    ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
    +      dependsOn: ${{ parameters.publishDependsOn }}
    +    ${{ else }}:
    +      dependsOn: ${{ parameters.validateDependsOn }}
    +    displayName: Publish using Darc
    +    variables:
    +      - template: /eng/common/core-templates/post-build/common-variables.yml
    +      - template: /eng/common/core-templates/variables/pool-providers.yml
    +        parameters:
    +          is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +    jobs:
    +    - job:
    +      displayName: Publish Using Darc
    +      timeoutInMinutes: 120
    +      pool:
    +        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    +        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
    +          name: AzurePipelines-EO
    +          image: 1ESPT-Windows2022
    +          demands: Cmd
    +          os: windows
    +        # If it's not devdiv, it's dnceng
    +        ${{ else }}:
    +          ${{ if eq(parameters.is1ESPipeline, true) }}:          
    +            name: NetCore1ESPool-Publishing-Internal
    +            image: windows.vs2019.amd64
    +            os: windows
    +          ${{ else }}:
    +            name: NetCore1ESPool-Publishing-Internal
    +            demands: ImageOverride -equals windows.vs2019.amd64          
    +      steps:
    +        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
    +          parameters:
    +            BARBuildId: ${{ parameters.BARBuildId }}
    +            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
    +            is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +
    +        - task: NuGetAuthenticate@1
    +
    +        - task: AzureCLI@2
    +          displayName: Publish Using Darc
    +          inputs:
    +            azureSubscription: "Darc: Maestro Production"
    +            scriptType: ps
    +            scriptLocation: scriptPath
    +            scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
    +            arguments: >
    +              -BuildId $(BARBuildId)
    +              -PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
    +              -AzdoToken '$(System.AccessToken)'
    +              -WaitPublishingFinish true
    +              -RequireDefaultChannels ${{ parameters.requireDefaultChannels }}
    +              -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
    +              -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
    +              -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
    diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml
    new file mode 100644
    index 0000000000..f7602980db
    --- /dev/null
    +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml
    @@ -0,0 +1,74 @@
    +parameters:
    +  BARBuildId: ''
    +  PromoteToChannelIds: ''
    +  is1ESPipeline: ''
    +
    +steps:
    +  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    +    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
    +
    +  - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
    +    - task: DownloadBuildArtifacts@0
    +      displayName: Download Release Configs
    +      inputs:
    +        buildType: current
    +        artifactName: ReleaseConfigs
    +        checkDownloadedFiles: true
    +
    +  - task: AzureCLI@2
    +    name: setReleaseVars
    +    displayName: Set Release Configs Vars
    +    inputs:
    +      azureSubscription: "Darc: Maestro Production"
    +      scriptType: pscore
    +      scriptLocation: inlineScript
    +      inlineScript: |
    +        try {
    +          if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
    +            $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt
    +
    +            $BarId = $Content | Select -Index 0
    +            $Channels = $Content | Select -Index 1
    +            $IsStableBuild = $Content | Select -Index 2
    +
    +            $AzureDevOpsProject = $Env:System_TeamProject
    +            $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
    +            $AzureDevOpsBuildId = $Env:Build_BuildId
    +          }
    +          else {
    +            . $(Build.SourcesDirectory)\eng\common\tools.ps1
    +            $darc = Get-Darc
    +            $buildInfo = & $darc get-build `
    +              --id ${{ parameters.BARBuildId }} `
    +              --extended `
    +              --output-format json `
    +              --ci `
    +              | convertFrom-Json
    +
    +            $BarId = ${{ parameters.BARBuildId }}
    +            $Channels = $Env:PromoteToMaestroChannels -split ","
    +            $Channels = $Channels -join "]["
    +            $Channels = "[$Channels]"
    +
    +            $IsStableBuild = $buildInfo.stable
    +            $AzureDevOpsProject = $buildInfo.azureDevOpsProject
    +            $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId
    +            $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId
    +          }
    +
    +          Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId"
    +          Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels"
    +          Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild"
    +
    +          Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject"
    +          Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId"
    +          Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId"
    +        }
    +        catch {
    +          Write-Host $_
    +          Write-Host $_.Exception
    +          Write-Host $_.ScriptStackTrace
    +          exit 1
    +        }
    +    env:
    +      PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}
    diff --git a/eng/common/core-templates/steps/cleanup-microbuild.yml b/eng/common/core-templates/steps/cleanup-microbuild.yml
    new file mode 100644
    index 0000000000..c0fdcd3379
    --- /dev/null
    +++ b/eng/common/core-templates/steps/cleanup-microbuild.yml
    @@ -0,0 +1,28 @@
    +parameters:
    +  # Enable cleanup tasks for MicroBuild
    +  enableMicrobuild: false
    +  # Enable cleanup tasks for MicroBuild on Mac and Linux
    +  # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
    +  enableMicrobuildForMacAndLinux: false
    +  continueOnError: false
    +
    +steps:
    +  - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
    +    - task: MicroBuildCleanup@1
    +      displayName: Execute Microbuild cleanup tasks
    +      condition: and(
    +        always(),
    +        or(
    +          and(
    +            eq(variables['Agent.Os'], 'Windows_NT'),
    +            in(variables['_SignType'], 'real', 'test')
    +          ),
    +          and(
    +            ${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }},
    +            ne(variables['Agent.Os'], 'Windows_NT'),
    +            eq(variables['_SignType'], 'real')
    +          )
    +        ))
    +      continueOnError: ${{ parameters.continueOnError }}
    +      env:
    +        TeamName: $(_TeamName)
    diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml
    new file mode 100644
    index 0000000000..cf0649aa95
    --- /dev/null
    +++ b/eng/common/core-templates/steps/component-governance.yml
    @@ -0,0 +1,16 @@
    +parameters:
    +  disableComponentGovernance: false
    +  componentGovernanceIgnoreDirectories: ''
    +  is1ESPipeline: false
    +  displayName: 'Component Detection'
    +
    +steps:
    +- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
    +  - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
    +    displayName: Set skipComponentGovernanceDetection variable
    +- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
    +  - task: ComponentGovernanceComponentDetection@0
    +    continueOnError: true
    +    displayName: ${{ parameters.displayName }}
    +    inputs:
    +      ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
    diff --git a/eng/common/core-templates/steps/enable-internal-runtimes.yml b/eng/common/core-templates/steps/enable-internal-runtimes.yml
    new file mode 100644
    index 0000000000..6bdbf62ac5
    --- /dev/null
    +++ b/eng/common/core-templates/steps/enable-internal-runtimes.yml
    @@ -0,0 +1,32 @@
    +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'
    +# variable with the base64-encoded SAS token, by default
    +
    +parameters:
    +- name: federatedServiceConnection
    +  type: string
    +  default: 'dotnetbuilds-internal-read'
    +- name: outputVariableName
    +  type: string
    +  default: 'dotnetbuilds-internal-container-read-token-base64'
    +- name: expiryInHours
    +  type: number
    +  default: 1
    +- name: base64Encode
    +  type: boolean
    +  default: true
    +- name: is1ESPipeline
    +  type: boolean
    +  default: false
    +
    +steps:
    +- ${{ if ne(variables['System.TeamProject'], 'public') }}:
    +  - template: /eng/common/core-templates/steps/get-delegation-sas.yml
    +    parameters:
    +      federatedServiceConnection: ${{ parameters.federatedServiceConnection }}
    +      outputVariableName: ${{ parameters.outputVariableName }}
    +      expiryInHours: ${{ parameters.expiryInHours }}
    +      base64Encode: ${{ parameters.base64Encode }}
    +      storageAccount: dotnetbuilds
    +      container: internal
    +      permissions: rl
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    \ No newline at end of file
    diff --git a/eng/common/core-templates/steps/enable-internal-sources.yml b/eng/common/core-templates/steps/enable-internal-sources.yml
    new file mode 100644
    index 0000000000..64f881bffc
    --- /dev/null
    +++ b/eng/common/core-templates/steps/enable-internal-sources.yml
    @@ -0,0 +1,47 @@
    +parameters:
    +# This is the Azure federated service connection that we log into to get an access token.
    +- name: nugetFederatedServiceConnection
    +  type: string
    +  default: 'dnceng-artifacts-feeds-read'
    +- name: is1ESPipeline
    +  type: boolean
    +  default: false
    +# Legacy parameters to allow for PAT usage
    +- name: legacyCredential
    +  type: string
    +  default: ''
    +
    +steps:
    +- ${{ if ne(variables['System.TeamProject'], 'public') }}:
    +  - ${{ if ne(parameters.legacyCredential, '') }}:
    +    - task: PowerShell@2
    +      displayName: Setup Internal Feeds
    +      inputs:
    +        filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
    +        arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
    +      env:
    +        Token: ${{ parameters.legacyCredential }}
    +  # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate.
    +  # If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that
    +  # may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token.
    +  - ${{ else }}:
    +    - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
    +      - task: PowerShell@2
    +        displayName: Setup Internal Feeds
    +        inputs:
    +          filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
    +          arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config
    +    - ${{ else }}:
    +      - template: /eng/common/templates/steps/get-federated-access-token.yml
    +        parameters:
    +          federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }}
    +          outputVariableName: 'dnceng-artifacts-feeds-read-access-token'
    +      - task: PowerShell@2
    +        displayName: Setup Internal Feeds
    +        inputs:
    +          filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
    +          arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
    +  # This is required in certain scenarios to install the ADO credential provider.
    +  # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others
    +  # (e.g. dotnet msbuild).
    +  - task: NuGetAuthenticate@1
    diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml
    new file mode 100644
    index 0000000000..44a9636cdf
    --- /dev/null
    +++ b/eng/common/core-templates/steps/generate-sbom.yml
    @@ -0,0 +1,54 @@
    +# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated.
    +# PackageName - The name of the package this SBOM represents.
    +# PackageVersion - The version of the package this SBOM represents. 
    +# ManifestDirPath - The path of the directory where the generated manifest files will be placed
    +# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector.
    +
    +parameters:
    +  PackageVersion: 10.0.0
    +  BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
    +  PackageName: '.NET'
    +  ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
    +  IgnoreDirectories: ''
    +  sbomContinueOnError: true
    +  is1ESPipeline: false
    +  # disable publishArtifacts if some other step is publishing the artifacts (like job.yml).
    +  publishArtifacts: true
    +
    +steps:
    +- task: PowerShell@2 
    +  displayName: Prep for SBOM generation in (Non-linux)
    +  condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin'))
    +  inputs: 
    +    filePath: ./eng/common/generate-sbom-prep.ps1
    +    arguments: ${{parameters.manifestDirPath}}
    +
    +# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461
    +- script: |
    +    chmod +x ./eng/common/generate-sbom-prep.sh
    +    ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}}
    +  displayName: Prep for SBOM generation in (Linux)
    +  condition: eq(variables['Agent.Os'], 'Linux')
    +  continueOnError: ${{ parameters.sbomContinueOnError }}
    +
    +- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
    +  displayName: 'Generate SBOM manifest'
    +  continueOnError: ${{ parameters.sbomContinueOnError }}
    +  inputs:
    +      PackageName: ${{ parameters.packageName }}
    +      BuildDropPath: ${{ parameters.buildDropPath }}
    +      PackageVersion: ${{ parameters.packageVersion }}
    +      ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME)
    +      ${{ if ne(parameters.IgnoreDirectories, '') }}:
    +        AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}'
    +
    +- ${{ if eq(parameters.publishArtifacts, 'true')}}:
    +  - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      args:
    +        displayName: Publish SBOM manifest
    +        continueOnError: ${{parameters.sbomContinueOnError}}
    +        targetPath: '${{ parameters.manifestDirPath }}'
    +        artifactName: $(ARTIFACT_NAME)
    +
    diff --git a/eng/common/core-templates/steps/get-delegation-sas.yml b/eng/common/core-templates/steps/get-delegation-sas.yml
    new file mode 100644
    index 0000000000..d2901470a7
    --- /dev/null
    +++ b/eng/common/core-templates/steps/get-delegation-sas.yml
    @@ -0,0 +1,46 @@
    +parameters:
    +- name: federatedServiceConnection
    +  type: string
    +- name: outputVariableName
    +  type: string
    +- name: expiryInHours
    +  type: number
    +  default: 1
    +- name: base64Encode
    +  type: boolean
    +  default: false
    +- name: storageAccount
    +  type: string
    +- name: container
    +  type: string
    +- name: permissions
    +  type: string
    +  default: 'rl'
    +- name: is1ESPipeline
    +  type: boolean
    +  default: false
    +
    +steps:
    +- task: AzureCLI@2
    +  displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}'
    +  inputs:
    +    azureSubscription: ${{ parameters.federatedServiceConnection }}
    +    scriptType: 'pscore'
    +    scriptLocation: 'inlineScript'
    +    inlineScript: |
    +      # Calculate the expiration of the SAS token and convert to UTC
    +      $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
    +
    +      $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv
    +
    +      if ($LASTEXITCODE -ne 0) {
    +        Write-Error "Failed to generate SAS token."
    +        exit 1
    +      }
    +
    +      if ('${{ parameters.base64Encode }}' -eq 'true') {
    +        $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas))
    +      }
    +
    +      Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
    +      Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas"
    diff --git a/eng/common/core-templates/steps/get-federated-access-token.yml b/eng/common/core-templates/steps/get-federated-access-token.yml
    new file mode 100644
    index 0000000000..3a4d4410c4
    --- /dev/null
    +++ b/eng/common/core-templates/steps/get-federated-access-token.yml
    @@ -0,0 +1,42 @@
    +parameters:
    +- name: federatedServiceConnection
    +  type: string
    +- name: outputVariableName
    +  type: string
    +- name: is1ESPipeline
    +  type: boolean
    +- name: stepName
    +  type: string
    +  default: 'getFederatedAccessToken'
    +- name: condition
    +  type: string
    +  default: ''
    +# Resource to get a token for. Common values include:
    +# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps
    +# - 'https://storage.azure.com/' for storage
    +# Defaults to Azure DevOps
    +- name: resource
    +  type: string
    +  default: '499b84ac-1321-427f-aa17-267ca6975798'
    +- name: isStepOutputVariable
    +  type: boolean
    +  default: false
    +
    +steps:
    +- task: AzureCLI@2
    +  displayName: 'Getting federated access token for feeds'
    +  name: ${{ parameters.stepName }}
    +  ${{ if ne(parameters.condition, '') }}:
    +    condition: ${{ parameters.condition }}
    +  inputs:
    +    azureSubscription: ${{ parameters.federatedServiceConnection }}
    +    scriptType: 'pscore'
    +    scriptLocation: 'inlineScript'
    +    inlineScript: |
    +      $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv
    +      if ($LASTEXITCODE -ne 0) {
    +        Write-Error "Failed to get access token for resource '${{ parameters.resource }}'"
    +        exit 1
    +      }
    +      Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
    +      Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken"
    \ No newline at end of file
    diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
    new file mode 100644
    index 0000000000..da30e67bc3
    --- /dev/null
    +++ b/eng/common/core-templates/steps/install-microbuild.yml
    @@ -0,0 +1,80 @@
    +parameters:
    +  # Enable install tasks for MicroBuild
    +  enableMicrobuild: false
    +  # Enable install tasks for MicroBuild on Mac and Linux
    +  # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
    +  enableMicrobuildForMacAndLinux: false
    +  # Determines whether the ESRP service connection information should be passed to the signing plugin.
    +  # This overlaps with _SignType to some degree. We only need the service connection for real signing.
    +  # It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place.
    +  # Doing so will cause the service connection to be authorized for the pipeline, which isn't allowed and won't work for non-prod.
    +  # Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The
    +  # variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
    +  microbuildUseESRP: true
    +  # Location of the MicroBuild output folder
    +  microBuildOutputFolder: '$(Build.SourcesDirectory)'
    +
    +  continueOnError: false
    +
    +steps:
    +  - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
    +    - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
    +      # Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable
    +      - task: UseDotNet@2
    +        displayName: Install .NET 8.0 SDK for MicroBuild Plugin
    +        inputs:
    +          packageType: sdk
    +          version: 8.0.x
    +          installationPath: ${{ parameters.microBuildOutputFolder }}/.dotnet
    +          workingDirectory: ${{ parameters.microBuildOutputFolder }}
    +        condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
    +
    +    - script: |
    +        REM Check if ESRP is disabled while SignType is real
    +        if /I "${{ parameters.microbuildUseESRP }}"=="false" if /I "$(_SignType)"=="real" (
    +          echo Error: ESRP must be enabled when SignType is real.
    +          exit /b 1
    +        )
    +      displayName: 'Validate ESRP usage (Windows)'
    +      condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
    +    - script: |
    +        # Check if ESRP is disabled while SignType is real
    +        if [ "${{ parameters.microbuildUseESRP }}" = "false" ] && [ "$(_SignType)" = "real" ]; then
    +          echo "Error: ESRP must be enabled when SignType is real."
    +          exit 1
    +        fi
    +      displayName: 'Validate ESRP usage (Non-Windows)'
    +      condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
    +
    +    - task: MicroBuildSigningPlugin@4
    +      displayName: Install MicroBuild plugin
    +      inputs:
    +        signType: $(_SignType)
    +        zipSources: false
    +        feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
    +        ${{ if eq(parameters.microbuildUseESRP, true) }}:
    +          ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
    +            azureSubscription: 'MicroBuild Signing Task (DevDiv)'
    +            useEsrpCli: true
    +          ${{ elseif eq(variables['System.TeamProject'], 'DevDiv') }}:
    +            ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
    +          ${{ else }}:
    +            ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
    +      env:
    +        TeamName: $(_TeamName)
    +        MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
    +        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    +      continueOnError: ${{ parameters.continueOnError }}
    +      condition: and(
    +        succeeded(),
    +        or(
    +          and(
    +            eq(variables['Agent.Os'], 'Windows_NT'),
    +            in(variables['_SignType'], 'real', 'test')
    +          ),
    +          and(
    +            ${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }},
    +            ne(variables['Agent.Os'], 'Windows_NT'),
    +            eq(variables['_SignType'], 'real')
    +          )
    +        ))
    diff --git a/eng/common/core-templates/steps/publish-build-artifacts.yml b/eng/common/core-templates/steps/publish-build-artifacts.yml
    new file mode 100644
    index 0000000000..f24ce34668
    --- /dev/null
    +++ b/eng/common/core-templates/steps/publish-build-artifacts.yml
    @@ -0,0 +1,20 @@
    +parameters:
    +- name: is1ESPipeline
    +  type: boolean
    +  default: false
    +- name: args
    +  type: object
    +  default: {}
    +steps:
    +- ${{ if ne(parameters.is1ESPipeline, true) }}:
    +  - template: /eng/common/templates/steps/publish-build-artifacts.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      ${{ each parameter in parameters.args }}:
    +        ${{ parameter.key }}: ${{ parameter.value }}
    +- ${{ else }}:
    +  - template: /eng/common/templates-official/steps/publish-build-artifacts.yml
    +    parameters:
    +      is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +      ${{ each parameter in parameters.args }}:
    +        ${{ parameter.key }}: ${{ parameter.value }}
    \ No newline at end of file
    diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
    new file mode 100644
    index 0000000000..de24d0087c
    --- /dev/null
    +++ b/eng/common/core-templates/steps/publish-logs.yml
    @@ -0,0 +1,61 @@
    +parameters:
    +  StageLabel: ''
    +  JobLabel: ''
    +  CustomSensitiveDataList: ''
    +  # A default - in case value from eng/common/core-templates/post-build/common-variables.yml is not passed
    +  BinlogToolVersion: '1.0.11'
    +  is1ESPipeline: false
    +
    +steps:
    +- task: Powershell@2
    +  displayName: Prepare Binlogs to Upload
    +  inputs:
    +    targetType: inline
    +    script: |
    +      New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
    +      Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
    +  continueOnError: true
    +  condition: always()
    +    
    +- task: PowerShell@2
    +  displayName: Redact Logs
    +  inputs:
    +    filePath: $(Build.SourcesDirectory)/eng/common/post-build/redact-logs.ps1
    +    # For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml
    +    # Sensitive data can as well be added to $(Build.SourcesDirectory)/eng/BinlogSecretsRedactionFile.txt'
    +    #  If the file exists - sensitive data for redaction will be sourced from it
    +    #  (single entry per line, lines starting with '# ' are considered comments and skipped)
    +    arguments: -InputPath '$(Build.SourcesDirectory)/PostBuildLogs' 
    +      -BinlogToolVersion ${{parameters.BinlogToolVersion}}
    +      -TokensFilePath '$(Build.SourcesDirectory)/eng/BinlogSecretsRedactionFile.txt'
    +      '$(publishing-dnceng-devdiv-code-r-build-re)'
    +      '$(MaestroAccessToken)'
    +      '$(dn-bot-all-orgs-artifact-feeds-rw)'
    +      '$(akams-client-id)'
    +      '$(microsoft-symbol-server-pat)'
    +      '$(symweb-symbol-server-pat)'
    +      '$(dnceng-symbol-server-pat)'
    +      '$(dn-bot-all-orgs-build-rw-code-rw)'
    +      '$(System.AccessToken)'
    +      ${{parameters.CustomSensitiveDataList}}
    +  continueOnError: true
    +  condition: always()
    +
    +- task: CopyFiles@2
    +  displayName: Gather post build logs
    +  inputs:
    +    SourceFolder: '$(Build.SourcesDirectory)/PostBuildLogs'
    +    Contents: '**'
    +    TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
    +  condition: always()
    +
    +- template: /eng/common/core-templates/steps/publish-build-artifacts.yml
    +  parameters:
    +    is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +    args:
    +      displayName: Publish Logs
    +      pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
    +      publishLocation: Container
    +      artifactName: PostBuildLogs
    +      continueOnError: true
    +      condition: always()
    diff --git a/eng/common/core-templates/steps/publish-pipeline-artifacts.yml b/eng/common/core-templates/steps/publish-pipeline-artifacts.yml
    new file mode 100644
    index 0000000000..2efec04dc2
    --- /dev/null
    +++ b/eng/common/core-templates/steps/publish-pipeline-artifacts.yml
    @@ -0,0 +1,20 @@
    +parameters:
    +- name: is1ESPipeline
    +  type: boolean
    +  default: false
    +
    +- name: args
    +  type: object
    +  default: {}  
    +
    +steps:
    +- ${{ if ne(parameters.is1ESPipeline, true) }}:
    +  - template: /eng/common/templates/steps/publish-pipeline-artifacts.yml
    +    parameters:
    +      ${{ each parameter in parameters }}:
    +        ${{ parameter.key }}: ${{ parameter.value }}
    +- ${{ else }}:
    +  - template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml
    +    parameters:
    +      ${{ each parameter in parameters }}:
    +        ${{ parameter.key }}: ${{ parameter.value }}
    diff --git a/eng/common/core-templates/steps/retain-build.yml b/eng/common/core-templates/steps/retain-build.yml
    new file mode 100644
    index 0000000000..83d97a26a0
    --- /dev/null
    +++ b/eng/common/core-templates/steps/retain-build.yml
    @@ -0,0 +1,28 @@
    +parameters:
    +  # Optional azure devops PAT with build execute permissions for the build's organization,
    +  # only needed if the build that should be retained ran on a different organization than 
    +  # the pipeline where this template is executing from
    +  Token: ''
    +  # Optional BuildId to retain, defaults to the current running build
    +  BuildId: ''
    +  # Azure devops Organization URI for the build in the https://dev.azure.com/ format.
    +  # Defaults to the organization the current pipeline is running on
    +  AzdoOrgUri: '$(System.CollectionUri)'
    +  # Azure devops project for the build. Defaults to the project the current pipeline is running on
    +  AzdoProject: '$(System.TeamProject)'
    +
    +steps:
    +  - task: powershell@2
    +    inputs:
    +      targetType: 'filePath'
    +      filePath: eng/common/retain-build.ps1
    +      pwsh: true
    +      arguments: >
    +        -AzdoOrgUri: ${{parameters.AzdoOrgUri}}
    +        -AzdoProject ${{parameters.AzdoProject}}
    +        -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }}
    +        -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}}
    +    displayName: Enable permanent build retention
    +    env:
    +      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    +      BUILD_ID: $(Build.BuildId)
    \ No newline at end of file
    diff --git a/eng/common/core-templates/steps/send-to-helix.yml b/eng/common/core-templates/steps/send-to-helix.yml
    new file mode 100644
    index 0000000000..68fa739c4a
    --- /dev/null
    +++ b/eng/common/core-templates/steps/send-to-helix.yml
    @@ -0,0 +1,93 @@
    +# Please remember to update the documentation if you make changes to these parameters!
    +parameters:
    +  HelixSource: 'pr/default'              # required -- sources must start with pr/, official/, prodcon/, or agent/
    +  HelixType: 'tests/default/'            # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/'
    +  HelixBuild: $(Build.BuildNumber)       # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number
    +  HelixTargetQueues: ''                  # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues
    +  HelixAccessToken: ''                   # required -- access token to make Helix API requests; should be provided by the appropriate variable group
    +  HelixProjectPath: 'eng/common/helixpublish.proj'  # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY
    +  HelixProjectArguments: ''              # optional -- arguments passed to the build command
    +  HelixConfiguration: ''                 # optional -- additional property attached to a job
    +  HelixPreCommands: ''                   # optional -- commands to run before Helix work item execution
    +  HelixPostCommands: ''                  # optional -- commands to run after Helix work item execution
    +  WorkItemDirectory: ''                  # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
    +  WorkItemCommand: ''                    # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
    +  WorkItemTimeout: ''                    # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects
    +  CorrelationPayloadDirectory: ''        # optional -- a directory to zip up and send to Helix as a correlation payload
    +  XUnitProjects: ''                      # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true
    +  XUnitWorkItemTimeout: ''               # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects
    +  XUnitPublishTargetFramework: ''        # optional -- framework to use to publish your xUnit projects
    +  XUnitRuntimeTargetFramework: ''        # optional -- framework to use for the xUnit console runner
    +  XUnitRunnerVersion: ''                 # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects
    +  IncludeDotNetCli: false                # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion
    +  DotNetCliPackageType: ''               # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
    +  DotNetCliVersion: ''                   # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
    +  WaitForWorkItemCompletion: true        # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget."
    +  IsExternal: false                      # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set
    +  HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net )
    +  Creator: ''                            # optional -- if the build is external, use this to specify who is sending the job
    +  DisplayNamePrefix: 'Run Tests'         # optional -- rename the beginning of the displayName of the steps in AzDO 
    +  condition: succeeded()                 # optional -- condition for step to execute; defaults to succeeded()
    +  continueOnError: false                 # optional -- determines whether to continue the build if the step errors; defaults to false
    +
    +steps:
    +  - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
    +    displayName: ${{ parameters.DisplayNamePrefix }} (Windows)
    +    env:
    +      BuildConfig: $(_BuildConfig)
    +      HelixSource: ${{ parameters.HelixSource }}
    +      HelixType: ${{ parameters.HelixType }}
    +      HelixBuild: ${{ parameters.HelixBuild }}
    +      HelixConfiguration:  ${{ parameters.HelixConfiguration }}
    +      HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
    +      HelixAccessToken: ${{ parameters.HelixAccessToken }}
    +      HelixPreCommands: ${{ parameters.HelixPreCommands }}
    +      HelixPostCommands: ${{ parameters.HelixPostCommands }}
    +      WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
    +      WorkItemCommand: ${{ parameters.WorkItemCommand }}
    +      WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
    +      CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
    +      XUnitProjects: ${{ parameters.XUnitProjects }}
    +      XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
    +      XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
    +      XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
    +      XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
    +      IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
    +      DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
    +      DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
    +      WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
    +      HelixBaseUri: ${{ parameters.HelixBaseUri }}
    +      Creator: ${{ parameters.Creator }}
    +      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    +    condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT'))
    +    continueOnError: ${{ parameters.continueOnError }}
    +  - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
    +    displayName: ${{ parameters.DisplayNamePrefix }} (Unix)
    +    env:
    +      BuildConfig: $(_BuildConfig)
    +      HelixSource: ${{ parameters.HelixSource }}
    +      HelixType: ${{ parameters.HelixType }}
    +      HelixBuild: ${{ parameters.HelixBuild }}
    +      HelixConfiguration:  ${{ parameters.HelixConfiguration }}
    +      HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
    +      HelixAccessToken: ${{ parameters.HelixAccessToken }}
    +      HelixPreCommands: ${{ parameters.HelixPreCommands }}
    +      HelixPostCommands: ${{ parameters.HelixPostCommands }}
    +      WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
    +      WorkItemCommand: ${{ parameters.WorkItemCommand }}
    +      WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
    +      CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
    +      XUnitProjects: ${{ parameters.XUnitProjects }}
    +      XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
    +      XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
    +      XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
    +      XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
    +      IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
    +      DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
    +      DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
    +      WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
    +      HelixBaseUri: ${{ parameters.HelixBaseUri }}
    +      Creator: ${{ parameters.Creator }}
    +      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    +    condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT'))
    +    continueOnError: ${{ parameters.continueOnError }}
    diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml
    new file mode 100644
    index 0000000000..acf16ed349
    --- /dev/null
    +++ b/eng/common/core-templates/steps/source-build.yml
    @@ -0,0 +1,65 @@
    +parameters:
    +  # This template adds arcade-powered source-build to CI.
    +
    +  # This is a 'steps' template, and is intended for advanced scenarios where the existing build
    +  # infra has a careful build methodology that must be followed. For example, a repo
    +  # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline
    +  # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to
    +  # GitHub. Using this steps template leaves room for that infra to be included.
    +
    +  # Defines the platform on which to run the steps. See 'eng/common/core-templates/job/source-build.yml'
    +  # for details. The entire object is described in the 'job' template for simplicity, even though
    +  # the usage of the properties on this object is split between the 'job' and 'steps' templates.
    +  platform: {}
    +  is1ESPipeline: false
    +
    +steps:
    +# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.)
    +- script: |
    +    set -x
    +    df -h
    +
    +    # If building on the internal project, the internal storage variable may be available (usually only if needed)
    +    # In that case, add variables to allow the download of internal runtimes if the specified versions are not found
    +    # in the default public locations.
    +    internalRuntimeDownloadArgs=
    +    if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
    +      internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
    +    fi
    +
    +    buildConfig=Release
    +    # Check if AzDO substitutes in a build config from a variable, and use it if so.
    +    if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then
    +      buildConfig='$(_BuildConfig)'
    +    fi
    +
    +    targetRidArgs=
    +    if [ '${{ parameters.platform.targetRID }}' != '' ]; then
    +      targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
    +    fi
    +
    +    portableBuildArgs=
    +    if [ '${{ parameters.platform.portableBuild }}' != '' ]; then
    +      portableBuildArgs='/p:PortableBuild=${{ parameters.platform.portableBuild }}'
    +    fi
    +
    +    ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \
    +      --configuration $buildConfig \
    +      --restore --build --pack -bl \
    +      --source-build \
    +      ${{ parameters.platform.buildArguments }} \
    +      $internalRuntimeDownloadArgs \
    +      $targetRidArgs \
    +      $portableBuildArgs \
    +  displayName: Build
    +
    +- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
    +  parameters:
    +    is1ESPipeline: ${{ parameters.is1ESPipeline }}
    +    args:
    +      displayName: Publish BuildLogs
    +      targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }}
    +      artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt)
    +      continueOnError: true
    +      condition: succeededOrFailed()
    +      sbomEnabled: false  # we don't need SBOM for logs
    diff --git a/eng/common/core-templates/steps/source-index-stage1-publish.yml b/eng/common/core-templates/steps/source-index-stage1-publish.yml
    new file mode 100644
    index 0000000000..c2917c1efc
    --- /dev/null
    +++ b/eng/common/core-templates/steps/source-index-stage1-publish.yml
    @@ -0,0 +1,35 @@
    +parameters:
    +  sourceIndexUploadPackageVersion: 2.0.0-20250425.2
    +  sourceIndexProcessBinlogPackageVersion: 1.0.1-20250515.1
    +  sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
    +  binlogPath: artifacts/log/Debug/Build.binlog
    +
    +steps:
    +- task: UseDotNet@2
    +  displayName: "Source Index: Use .NET 9 SDK"
    +  inputs:
    +    packageType: sdk
    +    version: 9.0.x
    +    installationPath: $(Agent.TempDirectory)/dotnet
    +    workingDirectory: $(Agent.TempDirectory)
    +
    +- script: |
    +    $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version ${{parameters.sourceIndexProcessBinlogPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools
    +    $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version ${{parameters.sourceIndexUploadPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools
    +  displayName: "Source Index: Download netsourceindex Tools"
    +  # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk.
    +  workingDirectory: $(Agent.TempDirectory)
    +
    +- script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i ${{parameters.BinlogPath}} -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
    +  displayName: "Source Index: Process Binlog into indexable sln"
    +
    +- ${{ if and(ne(parameters.runAsPublic, 'true'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    +  - task: AzureCLI@2
    +    displayName: "Source Index: Upload Source Index stage1 artifacts to Azure"
    +    inputs:
    +      azureSubscription: 'SourceDotNet Stage1 Publish'
    +      addSpnToEnvironment: true
    +      scriptType: 'ps'
    +      scriptLocation: 'inlineScript'
    +      inlineScript: |
    +        $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1
    diff --git a/eng/common/core-templates/variables/pool-providers.yml b/eng/common/core-templates/variables/pool-providers.yml
    new file mode 100644
    index 0000000000..41053d382a
    --- /dev/null
    +++ b/eng/common/core-templates/variables/pool-providers.yml
    @@ -0,0 +1,8 @@
    +parameters:
    +  is1ESPipeline: false
    +
    +variables:
    +  - ${{ if eq(parameters.is1ESPipeline, 'true') }}:
    +    - template: /eng/common/templates-official/variables/pool-providers.yml
    +  - ${{ else }}:
    +    - template: /eng/common/templates/variables/pool-providers.yml
    \ No newline at end of file
    diff --git a/eng/common/cross/arm/sources.list.bionic b/eng/common/cross/arm/sources.list.bionic
    deleted file mode 100644
    index 2109557409..0000000000
    --- a/eng/common/cross/arm/sources.list.bionic
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
    diff --git a/eng/common/cross/arm/sources.list.jessie b/eng/common/cross/arm/sources.list.jessie
    deleted file mode 100644
    index 4d142ac9b1..0000000000
    --- a/eng/common/cross/arm/sources.list.jessie
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -# Debian (sid)   # UNSTABLE
    -deb http://ftp.debian.org/debian/ sid main contrib non-free
    -deb-src http://ftp.debian.org/debian/ sid main contrib non-free
    diff --git a/eng/common/cross/arm/sources.list.xenial b/eng/common/cross/arm/sources.list.xenial
    deleted file mode 100644
    index eacd86b7df..0000000000
    --- a/eng/common/cross/arm/sources.list.xenial
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
    \ No newline at end of file
    diff --git a/eng/common/cross/arm/sources.list.zesty b/eng/common/cross/arm/sources.list.zesty
    deleted file mode 100644
    index ea2c14a787..0000000000
    --- a/eng/common/cross/arm/sources.list.zesty
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
    diff --git a/eng/common/cross/arm/tizen/tizen.patch b/eng/common/cross/arm/tizen/tizen.patch
    new file mode 100644
    index 0000000000..fb12ade725
    --- /dev/null
    +++ b/eng/common/cross/arm/tizen/tizen.patch
    @@ -0,0 +1,9 @@
    +diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
    +--- a/usr/lib/libc.so	2016-12-30 23:00:08.284951863 +0900
    ++++ b/usr/lib/libc.so	2016-12-30 23:00:32.140951815 +0900
    +@@ -2,4 +2,4 @@
    +    Use the shared library, but some functions are only in
    +    the static library, so try that secondarily.  */
    + OUTPUT_FORMAT(elf32-littlearm)
    +-GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux-armhf.so.3 ) )
    ++GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux-armhf.so.3 ) )
    diff --git a/eng/common/cross/arm64/sources.list.bionic b/eng/common/cross/arm64/sources.list.bionic
    deleted file mode 100644
    index 2109557409..0000000000
    --- a/eng/common/cross/arm64/sources.list.bionic
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
    diff --git a/eng/common/cross/arm64/sources.list.buster b/eng/common/cross/arm64/sources.list.buster
    deleted file mode 100644
    index 7194ac64a9..0000000000
    --- a/eng/common/cross/arm64/sources.list.buster
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://deb.debian.org/debian buster main
    -deb-src http://deb.debian.org/debian buster main
    -
    -deb http://deb.debian.org/debian-security/ buster/updates main
    -deb-src http://deb.debian.org/debian-security/ buster/updates main
    -
    -deb http://deb.debian.org/debian buster-updates main
    -deb-src http://deb.debian.org/debian buster-updates main
    -
    -deb http://deb.debian.org/debian buster-backports main contrib non-free
    -deb-src http://deb.debian.org/debian buster-backports main contrib non-free
    diff --git a/eng/common/cross/arm64/sources.list.stretch b/eng/common/cross/arm64/sources.list.stretch
    deleted file mode 100644
    index 0e12157743..0000000000
    --- a/eng/common/cross/arm64/sources.list.stretch
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -deb http://deb.debian.org/debian stretch main
    -deb-src http://deb.debian.org/debian stretch main
    -
    -deb http://deb.debian.org/debian-security/ stretch/updates main
    -deb-src http://deb.debian.org/debian-security/ stretch/updates main
    -
    -deb http://deb.debian.org/debian stretch-updates main
    -deb-src http://deb.debian.org/debian stretch-updates main
    -
    -deb http://deb.debian.org/debian stretch-backports main contrib non-free
    -deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
    -
    diff --git a/eng/common/cross/arm64/sources.list.xenial b/eng/common/cross/arm64/sources.list.xenial
    deleted file mode 100644
    index eacd86b7df..0000000000
    --- a/eng/common/cross/arm64/sources.list.xenial
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
    \ No newline at end of file
    diff --git a/eng/common/cross/arm64/sources.list.zesty b/eng/common/cross/arm64/sources.list.zesty
    deleted file mode 100644
    index ea2c14a787..0000000000
    --- a/eng/common/cross/arm64/sources.list.zesty
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
    diff --git a/eng/common/cross/arm64/tizen-build-rootfs.sh b/eng/common/cross/arm64/tizen-build-rootfs.sh
    deleted file mode 100644
    index 13bfddb5e2..0000000000
    --- a/eng/common/cross/arm64/tizen-build-rootfs.sh
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -#!/usr/bin/env bash
    -set -e
    -
    -__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
    -__TIZEN_CROSSDIR="$__CrossDir/tizen"
    -
    -if [[ -z "$ROOTFS_DIR" ]]; then
    -    echo "ROOTFS_DIR is not defined."
    -    exit 1;
    -fi
    -
    -TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
    -mkdir -p $TIZEN_TMP_DIR
    -
    -# Download files
    -echo ">>Start downloading files"
    -VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
    -echo "<>Start constructing Tizen rootfs"
    -TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
    -cd $ROOTFS_DIR
    -for f in $TIZEN_RPM_FILES; do
    -    rpm2cpio $f  | cpio -idm --quiet
    -done
    -echo "<>Start configuring Tizen rootfs"
    -ln -sfn asm-arm64 ./usr/include/asm
    -patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
    -echo "</dev/null; then
    -	VERBOSE=0
    -fi
    -
    -Log()
    -{
    -	if [ $VERBOSE -ge $1 ]; then
    -		echo ${@:2}
    -	fi
    -}
    -
    -Inform()
    -{
    -	Log 1 -e "\x1B[0;34m$@\x1B[m"
    -}
    -
    -Debug()
    -{
    -	Log 2 -e "\x1B[0;32m$@\x1B[m"
    -}
    -
    -Error()
    -{
    -	>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
    -}
    -
    -Fetch()
    -{
    -	URL=$1
    -	FILE=$2
    -	PROGRESS=$3
    -	if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
    -		CURL_OPT="--progress-bar"
    -	else
    -		CURL_OPT="--silent"
    -	fi
    -	curl $CURL_OPT $URL > $FILE
    -}
    -
    -hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
    -hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
    -hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
    -
    -TMPDIR=$1
    -if [ ! -d $TMPDIR ]; then
    -	TMPDIR=./tizen_tmp
    -	Debug "Create temporary directory : $TMPDIR"
    -	mkdir -p $TMPDIR
    -fi
    -
    -TIZEN_URL=http://download.tizen.org/snapshots/tizen/
    -BUILD_XML=build.xml
    -REPOMD_XML=repomd.xml
    -PRIMARY_XML=primary.xml
    -TARGET_URL="http://__not_initialized"
    -
    -Xpath_get()
    -{
    -	XPATH_RESULT=''
    -	XPATH=$1
    -	XML_FILE=$2
    -	RESULT=$(xmllint --xpath $XPATH $XML_FILE)
    -	if [[ -z ${RESULT// } ]]; then
    -		Error "Can not find target from $XML_FILE"
    -		Debug "Xpath = $XPATH"
    -		exit 1
    -	fi
    -	XPATH_RESULT=$RESULT
    -}
    -
    -fetch_tizen_pkgs_init()
    -{
    -	TARGET=$1
    -	PROFILE=$2
    -	Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
    -
    -	TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
    -	if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
    -	mkdir -p $TMP_PKG_DIR
    -
    -	PKG_URL=$TIZEN_URL/$PROFILE/latest
    -
    -	BUILD_XML_URL=$PKG_URL/$BUILD_XML
    -	TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
    -	TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
    -	TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
    -	TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
    -
    -	Fetch $BUILD_XML_URL $TMP_BUILD
    -
    -	Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
    -
    -	TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
    -	Xpath_get $TARGET_XPATH $TMP_BUILD
    -	TARGET_PATH=$XPATH_RESULT
    -	TARGET_URL=$PKG_URL/$TARGET_PATH
    -
    -	REPOMD_URL=$TARGET_URL/repodata/repomd.xml
    -	PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
    -
    -	Fetch $REPOMD_URL $TMP_REPOMD
    -
    -	Debug "fetch $REPOMD_URL to $TMP_REPOMD"
    -
    -	Xpath_get $PRIMARY_XPATH $TMP_REPOMD
    -	PRIMARY_XML_PATH=$XPATH_RESULT
    -	PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
    -
    -	Fetch $PRIMARY_URL $TMP_PRIMARYGZ
    -
    -	Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
    -
    -	gunzip $TMP_PRIMARYGZ
    -
    -	Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
    -}
    -
    -fetch_tizen_pkgs()
    -{
    -	ARCH=$1
    -	PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
    -
    -	PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
    -
    -	for pkg in ${@:2}
    -	do
    -		Inform "Fetching... $pkg"
    -		XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
    -		XPATH=${XPATH/_ARCH_/$ARCH}
    -		Xpath_get $XPATH $TMP_PRIMARY
    -		PKG_PATH=$XPATH_RESULT
    -
    -		XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
    -		XPATH=${XPATH/_ARCH_/$ARCH}
    -		Xpath_get $XPATH $TMP_PRIMARY
    -		CHECKSUM=$XPATH_RESULT
    -
    -		PKG_URL=$TARGET_URL/$PKG_PATH
    -		PKG_FILE=$(basename $PKG_PATH)
    -		PKG_PATH=$TMPDIR/$PKG_FILE
    -
    -		Debug "Download $PKG_URL to $PKG_PATH"
    -		Fetch $PKG_URL $PKG_PATH true
    -
    -		echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
    -		if [ $? -ne 0 ]; then
    -			Error "Fail to fetch $PKG_URL to $PKG_PATH"
    -			Debug "Checksum = $CHECKSUM"
    -			exit 1
    -		fi
    -	done
    -}
    -
    -Inform "Initialize arm base"
    -fetch_tizen_pkgs_init standard base
    -Inform "fetch common packages"
    -fetch_tizen_pkgs aarch64 gcc glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
    -Inform "fetch coreclr packages"
    -fetch_tizen_pkgs aarch64 lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
    -Inform "fetch corefx packages"
    -fetch_tizen_pkgs aarch64 libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
    -
    -Inform "Initialize standard unified"
    -fetch_tizen_pkgs_init standard unified
    -Inform "fetch corefx packages"
    -fetch_tizen_pkgs aarch64 gssdp gssdp-devel tizen-release
    -
    diff --git a/eng/common/cross/arm64/tizen/tizen.patch b/eng/common/cross/arm64/tizen/tizen.patch
    index af7c8be059..2cebc54738 100644
    --- a/eng/common/cross/arm64/tizen/tizen.patch
    +++ b/eng/common/cross/arm64/tizen/tizen.patch
    @@ -5,5 +5,5 @@ diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
         Use the shared library, but some functions are only in
         the static library, so try that secondarily.  */
      OUTPUT_FORMAT(elf64-littleaarch64)
    --GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux-aarch64.so.1 ) )
    +-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-aarch64.so.1 ) )
     +GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux-aarch64.so.1 ) )
    diff --git a/eng/common/cross/armel/armel.jessie.patch b/eng/common/cross/armel/armel.jessie.patch
    deleted file mode 100644
    index 2d26156193..0000000000
    --- a/eng/common/cross/armel/armel.jessie.patch
    +++ /dev/null
    @@ -1,43 +0,0 @@
    -diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h
    ---- a/usr/include/urcu/uatomic/generic.h	2014-10-22 15:00:58.000000000 -0700
    -+++ b/usr/include/urcu/uatomic/generic.h	2020-10-30 21:38:28.550000000 -0700
    -@@ -69,10 +69,10 @@
    - #endif
    - #ifdef UATOMIC_HAS_ATOMIC_SHORT
    - 	case 2:
    --		return __sync_val_compare_and_swap_2(addr, old, _new);
    -+		return __sync_val_compare_and_swap_2((uint16_t*) addr, old, _new);
    - #endif
    - 	case 4:
    --		return __sync_val_compare_and_swap_4(addr, old, _new);
    -+		return __sync_val_compare_and_swap_4((uint32_t*) addr, old, _new);
    - #if (CAA_BITS_PER_LONG == 64)
    - 	case 8:
    - 		return __sync_val_compare_and_swap_8(addr, old, _new);
    -@@ -109,7 +109,7 @@
    - 		return;
    - #endif
    - 	case 4:
    --		__sync_and_and_fetch_4(addr, val);
    -+		__sync_and_and_fetch_4((uint32_t*) addr, val);
    - 		return;
    - #if (CAA_BITS_PER_LONG == 64)
    - 	case 8:
    -@@ -148,7 +148,7 @@
    - 		return;
    - #endif
    - 	case 4:
    --		__sync_or_and_fetch_4(addr, val);
    -+		__sync_or_and_fetch_4((uint32_t*) addr, val);
    - 		return;
    - #if (CAA_BITS_PER_LONG == 64)
    - 	case 8:
    -@@ -187,7 +187,7 @@
    - 		return __sync_add_and_fetch_2(addr, val);
    - #endif
    - 	case 4:
    --		return __sync_add_and_fetch_4(addr, val);
    -+		return __sync_add_and_fetch_4((uint32_t*) addr, val);
    - #if (CAA_BITS_PER_LONG == 64)
    - 	case 8:
    - 		return __sync_add_and_fetch_8(addr, val);
    diff --git a/eng/common/cross/armel/sources.list.jessie b/eng/common/cross/armel/sources.list.jessie
    deleted file mode 100644
    index 3d9c3059d8..0000000000
    --- a/eng/common/cross/armel/sources.list.jessie
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -# Debian (jessie)   # Stable
    -deb http://ftp.debian.org/debian/ jessie main contrib non-free
    -deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
    diff --git a/eng/common/cross/armel/tizen-build-rootfs.sh b/eng/common/cross/armel/tizen-build-rootfs.sh
    deleted file mode 100644
    index 9a4438af61..0000000000
    --- a/eng/common/cross/armel/tizen-build-rootfs.sh
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -#!/usr/bin/env bash
    -set -e
    -
    -__ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
    -__TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen"
    -
    -if [[ -z "$ROOTFS_DIR" ]]; then
    -    echo "ROOTFS_DIR is not defined."
    -    exit 1;
    -fi
    -
    -TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
    -mkdir -p $TIZEN_TMP_DIR
    -
    -# Download files
    -echo ">>Start downloading files"
    -VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
    -echo "<>Start constructing Tizen rootfs"
    -TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
    -cd $ROOTFS_DIR
    -for f in $TIZEN_RPM_FILES; do
    -    rpm2cpio $f  | cpio -idm --quiet
    -done
    -echo "<>Start configuring Tizen rootfs"
    -ln -sfn asm-arm ./usr/include/asm
    -patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
    -echo "</dev/null; then
    -	VERBOSE=0
    -fi
    -
    -Log()
    -{
    -	if [ $VERBOSE -ge $1 ]; then
    -		echo ${@:2}
    -	fi
    -}
    -
    -Inform()
    -{
    -	Log 1 -e "\x1B[0;34m$@\x1B[m"
    -}
    -
    -Debug()
    -{
    -	Log 2 -e "\x1B[0;32m$@\x1B[m"
    -}
    -
    -Error()
    -{
    -	>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
    -}
    -
    -Fetch()
    -{
    -	URL=$1
    -	FILE=$2
    -	PROGRESS=$3
    -	if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
    -		CURL_OPT="--progress-bar"
    -	else
    -		CURL_OPT="--silent"
    -	fi
    -	curl $CURL_OPT $URL > $FILE
    -}
    -
    -hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
    -hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
    -hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
    -
    -TMPDIR=$1
    -if [ ! -d $TMPDIR ]; then
    -	TMPDIR=./tizen_tmp
    -	Debug "Create temporary directory : $TMPDIR"
    -	mkdir -p $TMPDIR 
    -fi
    -
    -TIZEN_URL=http://download.tizen.org/snapshots/tizen
    -BUILD_XML=build.xml
    -REPOMD_XML=repomd.xml
    -PRIMARY_XML=primary.xml
    -TARGET_URL="http://__not_initialized"
    -
    -Xpath_get()
    -{
    -	XPATH_RESULT=''
    -	XPATH=$1
    -	XML_FILE=$2
    -	RESULT=$(xmllint --xpath $XPATH $XML_FILE)
    -	if [[ -z ${RESULT// } ]]; then
    -		Error "Can not find target from $XML_FILE"
    -		Debug "Xpath = $XPATH"
    -		exit 1
    -	fi
    -	XPATH_RESULT=$RESULT
    -}
    -
    -fetch_tizen_pkgs_init()
    -{
    -	TARGET=$1
    -	PROFILE=$2
    -	Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
    -
    -	TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
    -	if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
    -	mkdir -p $TMP_PKG_DIR
    -
    -	PKG_URL=$TIZEN_URL/$PROFILE/latest
    -
    -	BUILD_XML_URL=$PKG_URL/$BUILD_XML
    -	TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
    -	TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
    -	TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
    -	TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
    -
    -	Fetch $BUILD_XML_URL $TMP_BUILD
    -
    -	Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
    -
    -	TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
    -	Xpath_get $TARGET_XPATH $TMP_BUILD
    -	TARGET_PATH=$XPATH_RESULT
    -	TARGET_URL=$PKG_URL/$TARGET_PATH
    -
    -	REPOMD_URL=$TARGET_URL/repodata/repomd.xml
    -	PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
    -
    -	Fetch $REPOMD_URL $TMP_REPOMD
    -
    -	Debug "fetch $REPOMD_URL to $TMP_REPOMD"
    -
    -	Xpath_get $PRIMARY_XPATH $TMP_REPOMD
    -	PRIMARY_XML_PATH=$XPATH_RESULT
    -	PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
    -
    -	Fetch $PRIMARY_URL $TMP_PRIMARYGZ
    -
    -	Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
    -
    -	gunzip $TMP_PRIMARYGZ 
    -
    -	Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY" 
    -}
    -
    -fetch_tizen_pkgs()
    -{
    -	ARCH=$1
    -	PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
    -
    -	PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
    -
    -	for pkg in ${@:2}
    -	do
    -		Inform "Fetching... $pkg"
    -		XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
    -		XPATH=${XPATH/_ARCH_/$ARCH}
    -		Xpath_get $XPATH $TMP_PRIMARY
    -		PKG_PATH=$XPATH_RESULT
    -
    -		XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
    -		XPATH=${XPATH/_ARCH_/$ARCH}
    -		Xpath_get $XPATH $TMP_PRIMARY
    -		CHECKSUM=$XPATH_RESULT
    -
    -		PKG_URL=$TARGET_URL/$PKG_PATH
    -		PKG_FILE=$(basename $PKG_PATH)
    -		PKG_PATH=$TMPDIR/$PKG_FILE
    -
    -		Debug "Download $PKG_URL to $PKG_PATH"
    -		Fetch $PKG_URL $PKG_PATH true
    -
    -		echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
    -		if [ $? -ne 0 ]; then
    -			Error "Fail to fetch $PKG_URL to $PKG_PATH"
    -			Debug "Checksum = $CHECKSUM"
    -			exit 1
    -		fi
    -	done
    -}
    -
    -Inform "Initialize arm base"
    -fetch_tizen_pkgs_init standard base
    -Inform "fetch common packages"
    -fetch_tizen_pkgs armv7l gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
    -Inform "fetch coreclr packages"
    -fetch_tizen_pkgs armv7l lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
    -Inform "fetch corefx packages"
    -fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
    -
    -Inform "Initialize standard unified"
    -fetch_tizen_pkgs_init standard unified
    -Inform "fetch corefx packages"
    -fetch_tizen_pkgs armv7l gssdp gssdp-devel tizen-release
    -
    diff --git a/eng/common/cross/armel/tizen/tizen-dotnet.ks b/eng/common/cross/armel/tizen/tizen-dotnet.ks
    deleted file mode 100644
    index 506d455bd4..0000000000
    --- a/eng/common/cross/armel/tizen/tizen-dotnet.ks
    +++ /dev/null
    @@ -1,50 +0,0 @@
    -lang en_US.UTF-8
    -keyboard us
    -timezone --utc Asia/Seoul
    -
    -part / --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label rootfs --fsoptions=defaults,noatime
    -
    -rootpw tizen
    -desktop --autologinuser=root
    -user --name root  --groups audio,video --password 'tizen'
    -
    -repo --name=standard  --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/latest/repos/standard/packages/ --ssl_verify=no
    -repo --name=base      --baseurl=http://download.tizen.org/releases/milestone/tizen/base/latest/repos/standard/packages/ --ssl_verify=no
    -
    -%packages
    -tar
    -gzip
    -
    -sed
    -grep
    -gawk
    -perl
    -
    -binutils
    -findutils
    -util-linux
    -lttng-ust
    -userspace-rcu
    -procps-ng
    -tzdata
    -ca-certificates
    -
    -
    -### Core FX
    -libicu
    -libunwind
    -iputils
    -zlib
    -krb5
    -libcurl
    -libopenssl
    -
    -%end
    -
    -%post
    -
    -### Update /tmp privilege
    -chmod 777 /tmp
    -####################################
    -
    -%end
    diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh
    index 42516bbeeb..fbd8d80848 100644
    --- a/eng/common/cross/build-android-rootfs.sh
    +++ b/eng/common/cross/build-android-rootfs.sh
    @@ -5,15 +5,16 @@ __NDK_Version=r21
     usage()
     {
         echo "Creates a toolchain and sysroot used for cross-compiling for Android."
    -    echo.
    -    echo "Usage: $0 [BuildArch] [ApiLevel]"
    -    echo.
    +    echo
    +    echo "Usage: $0 [BuildArch] [ApiLevel] [--ndk NDKVersion]"
    +    echo
         echo "BuildArch is the target architecture of Android. Currently only arm64 is supported."
         echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html"
    -    echo.
    +    echo "NDKVersion is the version of Android NDK. The default is r21. See https://developer.android.com/ndk/downloads/revision_history"
    +    echo
         echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior"
         echo "by setting the TOOLCHAIN_DIR environment variable"
    -    echo.
    +    echo
         echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation,"
         echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK."
         echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.28-arm64. This file is to replace '/etc/os-release', which is not available for Android."
    @@ -25,10 +26,15 @@ __BuildArch=arm64
     __AndroidArch=aarch64
     __AndroidToolchain=aarch64-linux-android
     
    -for i in "$@"
    -    do
    -        lowerI="$(echo $i | tr "[:upper:]" "[:lower:]")"
    -        case $lowerI in
    +while :; do
    +    if [[ "$#" -le 0 ]]; then
    +        break
    +    fi
    +
    +    i=$1
    +
    +    lowerI="$(echo $i | tr "[:upper:]" "[:lower:]")"
    +    case $lowerI in
             -?|-h|--help)
                 usage
                 exit 1
    @@ -43,6 +49,10 @@ for i in "$@"
                 __AndroidArch=arm
                 __AndroidToolchain=arm-linux-androideabi
                 ;;
    +        --ndk)
    +            shift
    +            __NDK_Version=$1
    +            ;;
             *[0-9])
                 __ApiLevel=$i
                 ;;
    @@ -50,8 +60,17 @@ for i in "$@"
                 __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
                 ;;
         esac
    +    shift
     done
     
    +if [[ "$__NDK_Version" == "r21" ]] || [[ "$__NDK_Version" == "r22" ]]; then
    +    __NDK_File_Arch_Spec=-x86_64
    +    __SysRoot=sysroot
    +else
    +    __NDK_File_Arch_Spec=
    +    __SysRoot=toolchains/llvm/prebuilt/linux-x86_64/sysroot
    +fi
    +
     # Obtain the location of the bash script to figure out where the root of the repo is.
     __ScriptBaseDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
     
    @@ -78,6 +97,7 @@ fi
     
     echo "Target API level: $__ApiLevel"
     echo "Target architecture: $__BuildArch"
    +echo "NDK version: $__NDK_Version"
     echo "NDK location: $__NDK_Dir"
     echo "Target Toolchain location: $__ToolchainDir"
     
    @@ -85,8 +105,8 @@ echo "Target Toolchain location: $__ToolchainDir"
     if [ ! -d $__NDK_Dir ]; then
         echo Downloading the NDK into $__NDK_Dir
         mkdir -p $__NDK_Dir
    -    wget -q --progress=bar:force:noscroll --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux-x86_64.zip -O $__CrossDir/android-ndk-$__NDK_Version-linux-x86_64.zip
    -    unzip -q $__CrossDir/android-ndk-$__NDK_Version-linux-x86_64.zip -d $__CrossDir
    +    wget -q --progress=bar:force:noscroll --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux$__NDK_File_Arch_Spec.zip -O $__CrossDir/android-ndk-$__NDK_Version-linux.zip
    +    unzip -q $__CrossDir/android-ndk-$__NDK_Version-linux.zip -d $__CrossDir
     fi
     
     if [ ! -d $__lldb_Dir ]; then
    @@ -107,25 +127,20 @@ __AndroidPackages+=" liblzma"
     __AndroidPackages+=" krb5"
     __AndroidPackages+=" openssl"
     
    -for path in $(wget -qO- http://termux.net/dists/stable/main/binary-$__AndroidArch/Packages |\
    +for path in $(wget -qO- https://packages.termux.dev/termux-main-21/dists/stable/main/binary-$__AndroidArch/Packages |\
         grep -A15 "Package: \(${__AndroidPackages// /\\|}\)" | grep -v "static\|tool" | grep Filename); do
     
         if [[ "$path" != "Filename:" ]]; then
             echo "Working on: $path"
    -        wget -qO- http://termux.net/$path | dpkg -x - "$__TmpDir"
    +        wget -qO- https://packages.termux.dev/termux-main-21/$path | dpkg -x - "$__TmpDir"
         fi
     done
     
    -cp -R "$__TmpDir/data/data/com.termux/files/usr/"* "$__ToolchainDir/sysroot/usr/"
    +cp -R "$__TmpDir/data/data/com.termux/files/usr/"* "$__ToolchainDir/$__SysRoot/usr/"
     
     # Generate platform file for build.sh script to assign to __DistroRid
     echo "Generating platform file..."
    -echo "RID=android.${__ApiLevel}-${__BuildArch}" > $__ToolchainDir/sysroot/android_platform
    -
    -echo "Now to build coreclr, libraries and installers; run:"
    -echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \
    -    --subsetCategory coreclr
    -echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \
    -    --subsetCategory libraries
    -echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \
    -    --subsetCategory installer
    +echo "RID=android.${__ApiLevel}-${__BuildArch}" > $__ToolchainDir/$__SysRoot/android_platform
    +
    +echo "Now to build coreclr, libraries and host; run:"
    +echo ROOTFS_DIR=$(realpath $__ToolchainDir/$__SysRoot) ./build.sh clr+libs+host --cross --arch $__BuildArch
    diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh
    index 6fa2c8aa55..8abfb71f72 100644
    --- a/eng/common/cross/build-rootfs.sh
    +++ b/eng/common/cross/build-rootfs.sh
    @@ -4,25 +4,35 @@ set -e
     
     usage()
     {
    -    echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [--skipunmount] --rootfsdir ]"
    -    echo "BuildArch can be: arm(default), armel, arm64, x86"
    -    echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine, alpine3.13 or alpine3.14. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
    -    echo "                              for FreeBSD can be: freebsd11, freebsd12, freebsd13"
    -    echo "                              for illumos can be: illumos."
    +    echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir ]"
    +    echo "BuildArch can be: arm(default), arm64, armel, armv6, loongarch64, ppc64le, riscv64, s390x, x64, x86"
    +    echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine"
    +    echo "                               for alpine can be specified with version: alpineX.YY or alpineedge"
    +    echo "                               for FreeBSD can be: freebsd13, freebsd14"
    +    echo "                               for illumos can be: illumos"
    +    echo "                               for Haiku can be: haiku."
         echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD"
    +    echo "llvmx[.y] - optional, LLVM version for LLVM related packages."
         echo "--skipunmount - optional, will skip the unmount of rootfs folder."
    +    echo "--skipsigcheck - optional, will skip package signature checks (allowing untrusted packages)."
    +    echo "--skipemulation - optional, will skip qemu and debootstrap requirement when building environment for debian based systems."
         echo "--use-mirror - optional, use mirror URL to fetch resources, when available."
    +    echo "--jobs N - optional, restrict to N jobs."
         exit 1
     }
     
     __CodeName=xenial
     __CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
    -__InitialDir=$PWD
     __BuildArch=arm
     __AlpineArch=armv7
    +__FreeBSDArch=arm
    +__FreeBSDMachineArch=armv7
    +__IllumosArch=arm7
    +__HaikuArch=arm
     __QEMUArch=arm
     __UbuntuArch=armhf
    -__UbuntuRepo="http://ports.ubuntu.com/"
    +__UbuntuRepo=
    +__UbuntuSuites="updates security backports"
     __LLDB_Package="liblldb-3.9-dev"
     __SkipUnmount=0
     
    @@ -39,7 +49,7 @@ __AlpinePackages+=" libedit"
     # symlinks fixer
     __UbuntuPackages+=" symlinks"
     
    -# CoreCLR and CoreFX dependencies
    +# runtime dependencies
     __UbuntuPackages+=" libicu-dev"
     __UbuntuPackages+=" liblttng-ust-dev"
     __UbuntuPackages+=" libunwind8-dev"
    @@ -48,50 +58,94 @@ __AlpinePackages+=" gettext-dev"
     __AlpinePackages+=" icu-dev"
     __AlpinePackages+=" libunwind-dev"
     __AlpinePackages+=" lttng-ust-dev"
    +__AlpinePackages+=" compiler-rt"
     
    -# CoreFX dependencies
    +# runtime libraries' dependencies
     __UbuntuPackages+=" libcurl4-openssl-dev"
     __UbuntuPackages+=" libkrb5-dev"
     __UbuntuPackages+=" libssl-dev"
     __UbuntuPackages+=" zlib1g-dev"
    +__UbuntuPackages+=" libbrotli-dev"
     
     __AlpinePackages+=" curl-dev"
     __AlpinePackages+=" krb5-dev"
     __AlpinePackages+=" openssl-dev"
     __AlpinePackages+=" zlib-dev"
     
    -__FreeBSDBase="12.2-RELEASE"
    -__FreeBSDPkg="1.12.0"
    -__FreeBSDABI="12"
    +__FreeBSDBase="13.4-RELEASE"
    +__FreeBSDPkg="1.21.3"
    +__FreeBSDABI="13"
     __FreeBSDPackages="libunwind"
     __FreeBSDPackages+=" icu"
     __FreeBSDPackages+=" libinotify"
    -__FreeBSDPackages+=" lttng-ust"
    +__FreeBSDPackages+=" openssl"
     __FreeBSDPackages+=" krb5"
     __FreeBSDPackages+=" terminfo-db"
     
    -__IllumosPackages="icu-64.2nb2"
    -__IllumosPackages+=" mit-krb5-1.16.2nb4"
    -__IllumosPackages+=" openssl-1.1.1e"
    -__IllumosPackages+=" zlib-1.2.11"
    +__IllumosPackages="icu"
    +__IllumosPackages+=" mit-krb5"
    +__IllumosPackages+=" openssl"
    +__IllumosPackages+=" zlib"
    +
    +__HaikuPackages="gcc_syslibs"
    +__HaikuPackages+=" gcc_syslibs_devel"
    +__HaikuPackages+=" gmp"
    +__HaikuPackages+=" gmp_devel"
    +__HaikuPackages+=" icu[0-9]+"
    +__HaikuPackages+=" icu[0-9]*_devel"
    +__HaikuPackages+=" krb5"
    +__HaikuPackages+=" krb5_devel"
    +__HaikuPackages+=" libiconv"
    +__HaikuPackages+=" libiconv_devel"
    +__HaikuPackages+=" llvm[0-9]*_libunwind"
    +__HaikuPackages+=" llvm[0-9]*_libunwind_devel"
    +__HaikuPackages+=" mpfr"
    +__HaikuPackages+=" mpfr_devel"
    +__HaikuPackages+=" openssl3"
    +__HaikuPackages+=" openssl3_devel"
    +__HaikuPackages+=" zlib"
    +__HaikuPackages+=" zlib_devel"
     
     # ML.NET dependencies
     __UbuntuPackages+=" libomp5"
     __UbuntuPackages+=" libomp-dev"
     
    +# Taken from https://github.com/alpinelinux/alpine-chroot-install/blob/6d08f12a8a70dd9b9dc7d997c88aa7789cc03c42/alpine-chroot-install#L85-L133
    +__AlpineKeys='
    +4a6a0840:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe\nqxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O\nQ0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA\njixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R\nL5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo\nGuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B\nywIDAQAB
    +5243ef4b:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+\nmTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy\nDO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K\naA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G\nmnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0\nsS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg\ncQIDAQAB
    +524d27bb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr8s1q88XpuJWLCZALdKj\nlN8wg2ePB2T9aIcaxryYE/Jkmtu+ZQ5zKq6BT3y/udt5jAsMrhHTwroOjIsF9DeG\ne8Y3vjz+Hh4L8a7hZDaw8jy3CPag47L7nsZFwQOIo2Cl1SnzUc6/owoyjRU7ab0p\niWG5HK8IfiybRbZxnEbNAfT4R53hyI6z5FhyXGS2Ld8zCoU/R4E1P0CUuXKEN4p0\n64dyeUoOLXEWHjgKiU1mElIQj3k/IF02W89gDj285YgwqA49deLUM7QOd53QLnx+\nxrIrPv3A+eyXMFgexNwCKQU9ZdmWa00MjjHlegSGK8Y2NPnRoXhzqSP9T9i2HiXL\nVQIDAQAB
    +5261cecb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0\ncGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX\nyHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j\ng01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB\nCa1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY\nsWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw\nwwIDAQAB
    +58199dcc:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3v8/ye/V/t5xf4JiXLXa\nhWFRozsnmn3hobON20GdmkrzKzO/eUqPOKTpg2GtvBhK30fu5oY5uN2ORiv2Y2ht\neLiZ9HVz3XP8Fm9frha60B7KNu66FO5P2o3i+E+DWTPqqPcCG6t4Znk2BypILcit\nwiPKTsgbBQR2qo/cO01eLLdt6oOzAaF94NH0656kvRewdo6HG4urbO46tCAizvCR\nCA7KGFMyad8WdKkTjxh8YLDLoOCtoZmXmQAiwfRe9pKXRH/XXGop8SYptLqyVVQ+\ntegOD9wRs2tOlgcLx4F/uMzHN7uoho6okBPiifRX+Pf38Vx+ozXh056tjmdZkCaV\naQIDAQAB
    +58cbb476:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoSPnuAGKtRIS5fEgYPXD\n8pSGvKAmIv3A08LBViDUe+YwhilSHbYXUEAcSH1KZvOo1WT1x2FNEPBEFEFU1Eyc\n+qGzbA03UFgBNvArurHQ5Z/GngGqE7IarSQFSoqewYRtFSfp+TL9CUNBvM0rT7vz\n2eMu3/wWG+CBmb92lkmyWwC1WSWFKO3x8w+Br2IFWvAZqHRt8oiG5QtYvcZL6jym\nY8T6sgdDlj+Y+wWaLHs9Fc+7vBuyK9C4O1ORdMPW15qVSl4Lc2Wu1QVwRiKnmA+c\nDsH/m7kDNRHM7TjWnuj+nrBOKAHzYquiu5iB3Qmx+0gwnrSVf27Arc3ozUmmJbLj\nzQIDAQAB
    +58e4f17d:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBxJN9ErBgdRcPr5g4hV\nqyUSGZEKuvQliq2Z9SRHLh2J43+EdB6A+yzVvLnzcHVpBJ+BZ9RV30EM9guck9sh\nr+bryZcRHyjG2wiIEoduxF2a8KeWeQH7QlpwGhuobo1+gA8L0AGImiA6UP3LOirl\nI0G2+iaKZowME8/tydww4jx5vG132JCOScMjTalRsYZYJcjFbebQQolpqRaGB4iG\nWqhytWQGWuKiB1A22wjmIYf3t96l1Mp+FmM2URPxD1gk/BIBnX7ew+2gWppXOK9j\n1BJpo0/HaX5XoZ/uMqISAAtgHZAqq+g3IUPouxTphgYQRTRYpz2COw3NF43VYQrR\nbQIDAQAB
    +60ac2099:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4uJVtJOnOFGchnMW5Y\nj5/waBdG1u5BTMlH+iQMcV5+VgWhmpZHJCBz3ocD+0IGk2I68S5TDOHec/GSC0lv\n6R9o6F7h429GmgPgVKQsc8mPTPtbjJMuLLs4xKc+viCplXc0Nc0ZoHmCH4da6fCV\ntdpHQjVe6F9zjdquZ4RjV6R6JTiN9v924dGMAkbW/xXmamtz51FzondKC52Gh8Mo\n/oA0/T0KsCMCi7tb4QNQUYrf+Xcha9uus4ww1kWNZyfXJB87a2kORLiWMfs2IBBJ\nTmZ2Fnk0JnHDb8Oknxd9PvJPT0mvyT8DA+KIAPqNvOjUXP4bnjEHJcoCP9S5HkGC\nIQIDAQAB
    +6165ee59:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAutQkua2CAig4VFSJ7v54\nALyu/J1WB3oni7qwCZD3veURw7HxpNAj9hR+S5N/pNeZgubQvJWyaPuQDm7PTs1+\ntFGiYNfAsiibX6Rv0wci3M+z2XEVAeR9Vzg6v4qoofDyoTbovn2LztaNEjTkB+oK\ntlvpNhg1zhou0jDVYFniEXvzjckxswHVb8cT0OMTKHALyLPrPOJzVtM9C1ew2Nnc\n3848xLiApMu3NBk0JqfcS3Bo5Y2b1FRVBvdt+2gFoKZix1MnZdAEZ8xQzL/a0YS5\nHd0wj5+EEKHfOd3A75uPa/WQmA+o0cBFfrzm69QDcSJSwGpzWrD1ScH3AK8nWvoj\nv7e9gukK/9yl1b4fQQ00vttwJPSgm9EnfPHLAtgXkRloI27H6/PuLoNvSAMQwuCD\nhQRlyGLPBETKkHeodfLoULjhDi1K2gKJTMhtbnUcAA7nEphkMhPWkBpgFdrH+5z4\nLxy+3ek0cqcI7K68EtrffU8jtUj9LFTUC8dERaIBs7NgQ/LfDbDfGh9g6qVj1hZl\nk9aaIPTm/xsi8v3u+0qaq7KzIBc9s59JOoA8TlpOaYdVgSQhHHLBaahOuAigH+VI\nisbC9vmqsThF2QdDtQt37keuqoda2E6sL7PUvIyVXDRfwX7uMDjlzTxHTymvq2Ck\nhtBqojBnThmjJQFgZXocHG8CAwEAAQ==
    +61666e3f:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlEyxkHggKCXC2Wf5Mzx4\nnZLFZvU2bgcA3exfNPO/g1YunKfQY+Jg4fr6tJUUTZ3XZUrhmLNWvpvSwDS19ZmC\nIXOu0+V94aNgnhMsk9rr59I8qcbsQGIBoHzuAl8NzZCgdbEXkiY90w1skUw8J57z\nqCsMBydAueMXuWqF5nGtYbi5vHwK42PffpiZ7G5Kjwn8nYMW5IZdL6ZnMEVJUWC9\nI4waeKg0yskczYDmZUEAtrn3laX9677ToCpiKrvmZYjlGl0BaGp3cxggP2xaDbUq\nqfFxWNgvUAb3pXD09JM6Mt6HSIJaFc9vQbrKB9KT515y763j5CC2KUsilszKi3mB\nHYe5PoebdjS7D1Oh+tRqfegU2IImzSwW3iwA7PJvefFuc/kNIijfS/gH/cAqAK6z\nbhdOtE/zc7TtqW2Wn5Y03jIZdtm12CxSxwgtCF1NPyEWyIxAQUX9ACb3M0FAZ61n\nfpPrvwTaIIxxZ01L3IzPLpbc44x/DhJIEU+iDt6IMTrHOphD9MCG4631eIdB0H1b\n6zbNX1CXTsafqHRFV9XmYYIeOMggmd90s3xIbEujA6HKNP/gwzO6CDJ+nHFDEqoF\nSkxRdTkEqjTjVKieURW7Swv7zpfu5PrsrrkyGnsRrBJJzXlm2FOOxnbI2iSL1B5F\nrO5kbUxFeZUIDq+7Yv4kLWcCAwEAAQ==
    +616a9724:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnC+bR4bHf/L6QdU4puhQ\ngl1MHePszRC38bzvVFDUJsmCaMCL2suCs2A2yxAgGb9pu9AJYLAmxQC4mM3jNqhg\n/E7yuaBbek3O02zN/ctvflJ250wZCy+z0ZGIp1ak6pu1j14IwHokl9j36zNfGtfv\nADVOcdpWITFFlPqwq1qt/H3UsKVmtiF3BNWWTeUEQwKvlU8ymxgS99yn0+4OPyNT\nL3EUeS+NQJtDS01unau0t7LnjUXn+XIneWny8bIYOQCuVR6s/gpIGuhBaUqwaJOw\n7jkJZYF2Ij7uPb4b5/R3vX2FfxxqEHqssFSg8FFUNTZz3qNZs0CRVyfA972g9WkJ\nhPfn31pQYil4QGRibCMIeU27YAEjXoqfJKEPh4UWMQsQLrEfdGfb8VgwrPbniGfU\nL3jKJR3VAafL9330iawzVQDlIlwGl6u77gEXMl9K0pfazunYhAp+BMP+9ot5ckK+\nosmrqj11qMESsAj083GeFdfV3pXEIwUytaB0AKEht9DbqUfiE/oeZ/LAXgySMtVC\nsbC4ESmgVeY2xSBIJdDyUap7FR49GGrw0W49NUv9gRgQtGGaNVQQO9oGL2PBC41P\niWF9GLoX30HIz1P8PF/cZvicSSPkQf2Z6TV+t0ebdGNS5DjapdnCrq8m9Z0pyKsQ\nuxAL2a7zX8l5i1CZh1ycUGsCAwEAAQ==
    +616abc23:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0MfCDrhODRCIxR9Dep1s\neXafh5CE5BrF4WbCgCsevyPIdvTeyIaW4vmO3bbG4VzhogDZju+R3IQYFuhoXP5v\nY+zYJGnwrgz3r5wYAvPnLEs1+dtDKYOgJXQj+wLJBW1mzRDL8FoRXOe5iRmn1EFS\nwZ1DoUvyu7/J5r0itKicZp3QKED6YoilXed+1vnS4Sk0mzN4smuMR9eO1mMCqNp9\n9KTfRDHTbakIHwasECCXCp50uXdoW6ig/xUAFanpm9LtK6jctNDbXDhQmgvAaLXZ\nLvFqoaYJ/CvWkyYCgL6qxvMvVmPoRv7OPcyni4xR/WgWa0MSaEWjgPx3+yj9fiMA\n1S02pFWFDOr5OUF/O4YhFJvUCOtVsUPPfA/Lj6faL0h5QI9mQhy5Zb9TTaS9jB6p\nLw7u0dJlrjFedk8KTJdFCcaGYHP6kNPnOxMylcB/5WcztXZVQD5WpCicGNBxCGMm\nW64SgrV7M07gQfL/32QLsdqPUf0i8hoVD8wfQ3EpbQzv6Fk1Cn90bZqZafg8XWGY\nwddhkXk7egrr23Djv37V2okjzdqoyLBYBxMz63qQzFoAVv5VoY2NDTbXYUYytOvG\nGJ1afYDRVWrExCech1mX5ZVUB1br6WM+psFLJFoBFl6mDmiYt0vMYBddKISsvwLl\nIJQkzDwtXzT2cSjoj3T5QekCAwEAAQ==
    +616ac3bc:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvaaoSLab+IluixwKV5Od\n0gib2YurjPatGIbn5Ov2DLUFYiebj2oJINXJSwUOO+4WcuHFEqiL/1rya+k5hLZt\nhnPL1tn6QD4rESznvGSasRCQNT2vS/oyZbTYJRyAtFkEYLlq0t3S3xBxxHWuvIf0\nqVxVNYpQWyM3N9RIeYBR/euXKJXileSHk/uq1I5wTC0XBIHWcthczGN0m9wBEiWS\n0m3cnPk4q0Ea8mUJ91Rqob19qETz6VbSPYYpZk3qOycjKosuwcuzoMpwU8KRiMFd\n5LHtX0Hx85ghGsWDVtS0c0+aJa4lOMGvJCAOvDfqvODv7gKlCXUpgumGpLdTmaZ8\n1RwqspAe3IqBcdKTqRD4m2mSg23nVx2FAY3cjFvZQtfooT7q1ItRV5RgH6FhQSl7\n+6YIMJ1Bf8AAlLdRLpg+doOUGcEn+pkDiHFgI8ylH1LKyFKw+eXaAml/7DaWZk1d\ndqggwhXOhc/UUZFQuQQ8A8zpA13PcbC05XxN2hyP93tCEtyynMLVPtrRwDnHxFKa\nqKzs3rMDXPSXRn3ZZTdKH3069ApkEjQdpcwUh+EmJ1Ve/5cdtzT6kKWCjKBFZP/s\n91MlRrX2BTRdHaU5QJkUheUtakwxuHrdah2F94lRmsnQlpPr2YseJu6sIE+Dnx4M\nCfhdVbQL2w54R645nlnohu8CAwEAAQ==
    +616adfeb:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0BFD1D4lIxQcsqEpQzU\npNCYM3aP1V/fxxVdT4DWvSI53JHTwHQamKdMWtEXetWVbP5zSROniYKFXd/xrD9X\n0jiGHey3lEtylXRIPxe5s+wXoCmNLcJVnvTcDtwx/ne2NLHxp76lyc25At+6RgE6\nADjLVuoD7M4IFDkAsd8UQ8zM0Dww9SylIk/wgV3ZkifecvgUQRagrNUdUjR56EBZ\nraQrev4hhzOgwelT0kXCu3snbUuNY/lU53CoTzfBJ5UfEJ5pMw1ij6X0r5S9IVsy\nKLWH1hiO0NzU2c8ViUYCly4Fe9xMTFc6u2dy/dxf6FwERfGzETQxqZvSfrRX+GLj\n/QZAXiPg5178hT/m0Y3z5IGenIC/80Z9NCi+byF1WuJlzKjDcF/TU72zk0+PNM/H\nKuppf3JT4DyjiVzNC5YoWJT2QRMS9KLP5iKCSThwVceEEg5HfhQBRT9M6KIcFLSs\nmFjx9kNEEmc1E8hl5IR3+3Ry8G5/bTIIruz14jgeY9u5jhL8Vyyvo41jgt9sLHR1\n/J1TxKfkgksYev7PoX6/ZzJ1ksWKZY5NFoDXTNYUgzFUTOoEaOg3BAQKadb3Qbbq\nXIrxmPBdgrn9QI7NCgfnAY3Tb4EEjs3ON/BNyEhUENcXOH6I1NbcuBQ7g9P73kE4\nVORdoc8MdJ5eoKBpO8Ww8HECAwEAAQ==
    +616ae350:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyduVzi1mWm+lYo2Tqt/0\nXkCIWrDNP1QBMVPrE0/ZlU2bCGSoo2Z9FHQKz/mTyMRlhNqTfhJ5qU3U9XlyGOPJ\npiM+b91g26pnpXJ2Q2kOypSgOMOPA4cQ42PkHBEqhuzssfj9t7x47ppS94bboh46\nxLSDRff/NAbtwTpvhStV3URYkxFG++cKGGa5MPXBrxIp+iZf9GnuxVdST5PGiVGP\nODL/b69sPJQNbJHVquqUTOh5Ry8uuD2WZuXfKf7/C0jC/ie9m2+0CttNu9tMciGM\nEyKG1/Xhk5iIWO43m4SrrT2WkFlcZ1z2JSf9Pjm4C2+HovYpihwwdM/OdP8Xmsnr\nDzVB4YvQiW+IHBjStHVuyiZWc+JsgEPJzisNY0Wyc/kNyNtqVKpX6dRhMLanLmy+\nf53cCSI05KPQAcGj6tdL+D60uKDkt+FsDa0BTAobZ31OsFVid0vCXtsbplNhW1IF\nHwsGXBTVcfXg44RLyL8Lk/2dQxDHNHzAUslJXzPxaHBLmt++2COa2EI1iWlvtznk\nOk9WP8SOAIj+xdqoiHcC4j72BOVVgiITIJNHrbppZCq6qPR+fgXmXa+sDcGh30m6\n9Wpbr28kLMSHiENCWTdsFij+NQTd5S47H7XTROHnalYDuF1RpS+DpQidT5tUimaT\nJZDr++FjKrnnijbyNF8b98UCAwEAAQ==
    +616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ==
    +66ba20fe:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtfB12w4ZgqsXWZDfUAV/\n6Y4aHUKIu3q4SXrNZ7CXF9nXoAVYrS7NAxJdAodsY3vPCN0g5O8DFXR+390LdOuQ\n+HsGKCc1k5tX5ZXld37EZNTNSbR0k+NKhd9h6X3u6wqPOx7SIKxwAQR8qeeFq4pP\nrt9GAGlxtuYgzIIcKJPwE0dZlcBCg+GnptCUZXp/38BP1eYC+xTXSL6Muq1etYfg\nodXdb7Yl+2h1IHuOwo5rjgY5kpY7GcAs8AjGk3lDD/av60OTYccknH0NCVSmPoXK\nvrxDBOn0LQRNBLcAfnTKgHrzy0Q5h4TNkkyTgxkoQw5ObDk9nnabTxql732yy9BY\ns+hM9+dSFO1HKeVXreYSA2n1ndF18YAvAumzgyqzB7I4pMHXq1kC/8bONMJxwSkS\nYm6CoXKyavp7RqGMyeVpRC7tV+blkrrUml0BwNkxE+XnwDRB3xDV6hqgWe0XrifD\nYTfvd9ScZQP83ip0r4IKlq4GMv/R5shcCRJSkSZ6QSGshH40JYSoiwJf5FHbj9ND\n7do0UAqebWo4yNx63j/wb2ULorW3AClv0BCFSdPsIrCStiGdpgJDBR2P2NZOCob3\nG9uMj+wJD6JJg2nWqNJxkANXX37Qf8plgzssrhrgOvB0fjjS7GYhfkfmZTJ0wPOw\nA8+KzFseBh4UFGgue78KwgkCAwEAAQ==
    +'
    +__Keyring=
    +__KeyringFile="/usr/share/keyrings/ubuntu-archive-keyring.gpg"
    +__SkipSigCheck=0
    +__SkipEmulation=0
     __UseMirror=0
     
     __UnprocessedBuildArgs=
     while :; do
    -    if [ $# -le 0 ]; then
    +    if [[ "$#" -le 0 ]]; then
             break
         fi
     
    -    lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")"
    +    lowerI="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
         case $lowerI in
    -        -?|-h|--help)
    +        -\?|-h|--help)
                 usage
    -            exit 1
                 ;;
             arm)
                 __BuildArch=arm
    @@ -104,130 +158,263 @@ while :; do
                 __UbuntuArch=arm64
                 __AlpineArch=aarch64
                 __QEMUArch=aarch64
    +            __FreeBSDArch=arm64
    +            __FreeBSDMachineArch=aarch64
                 ;;
             armel)
                 __BuildArch=armel
                 __UbuntuArch=armel
    -            __UbuntuRepo="http://ftp.debian.org/debian/"
    -            __CodeName=jessie
    +            __UbuntuRepo="http://archive.debian.org/debian/"
    +            __CodeName=buster
    +            __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg"
    +            __LLDB_Package="liblldb-6.0-dev"
    +            __UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
    +            __UbuntuPackages="${__UbuntuPackages// libomp5/}"
    +            __UbuntuSuites=
    +            ;;
    +        armv6)
    +            __BuildArch=armv6
    +            __UbuntuArch=armhf
    +            __QEMUArch=arm
    +            __UbuntuRepo="http://raspbian.raspberrypi.org/raspbian/"
    +            __CodeName=buster
    +            __KeyringFile="/usr/share/keyrings/raspbian-archive-keyring.gpg"
    +            __LLDB_Package="liblldb-6.0-dev"
    +            __UbuntuSuites=
    +
    +            if [[ -e "$__KeyringFile" ]]; then
    +                __Keyring="--keyring $__KeyringFile"
    +            fi
    +            ;;
    +        loongarch64)
    +            __BuildArch=loongarch64
    +            __AlpineArch=loongarch64
    +            __QEMUArch=loongarch64
    +            __UbuntuArch=loong64
    +            __UbuntuSuites=unreleased
    +            __LLDB_Package="liblldb-19-dev"
    +
    +            if [[ "$__CodeName" == "sid" ]]; then
    +                __UbuntuRepo="http://ftp.ports.debian.org/debian-ports/"
    +            fi
    +            ;;
    +        riscv64)
    +            __BuildArch=riscv64
    +            __AlpineArch=riscv64
    +            __AlpinePackages="${__AlpinePackages// lldb-dev/}"
    +            __QEMUArch=riscv64
    +            __UbuntuArch=riscv64
    +            __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
    +            unset __LLDB_Package
    +            ;;
    +        ppc64le)
    +            __BuildArch=ppc64le
    +            __AlpineArch=ppc64le
    +            __QEMUArch=ppc64le
    +            __UbuntuArch=ppc64el
    +            __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
    +            __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
    +            __UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
    +            __UbuntuPackages="${__UbuntuPackages// libomp5/}"
    +            unset __LLDB_Package
                 ;;
             s390x)
                 __BuildArch=s390x
    +            __AlpineArch=s390x
    +            __QEMUArch=s390x
                 __UbuntuArch=s390x
                 __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
    -            __UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//')
    -            __UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp-dev//')
    -            __UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//')
    +            __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
    +            __UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
    +            __UbuntuPackages="${__UbuntuPackages// libomp5/}"
                 unset __LLDB_Package
                 ;;
    +        x64)
    +            __BuildArch=x64
    +            __AlpineArch=x86_64
    +            __UbuntuArch=amd64
    +            __FreeBSDArch=amd64
    +            __FreeBSDMachineArch=amd64
    +            __illumosArch=x86_64
    +            __HaikuArch=x86_64
    +            __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
    +            ;;
             x86)
                 __BuildArch=x86
                 __UbuntuArch=i386
    +            __AlpineArch=x86
                 __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
                 ;;
    -        lldb3.6)
    -            __LLDB_Package="lldb-3.6-dev"
    -            ;;
    -        lldb3.8)
    -            __LLDB_Package="lldb-3.8-dev"
    -            ;;
    -        lldb3.9)
    -            __LLDB_Package="liblldb-3.9-dev"
    -            ;;
    -        lldb4.0)
    -            __LLDB_Package="liblldb-4.0-dev"
    -            ;;
    -        lldb5.0)
    -            __LLDB_Package="liblldb-5.0-dev"
    -            ;;
    -        lldb6.0)
    -            __LLDB_Package="liblldb-6.0-dev"
    +        lldb*)
    +            version="$(echo "$lowerI" | tr -d '[:alpha:]-=')"
    +            majorVersion="${version%%.*}"
    +
    +            [ -z "${version##*.*}" ] && minorVersion="${version#*.}"
    +            if [ -z "$minorVersion" ]; then
    +                minorVersion=0
    +            fi
    +
    +            # for versions > 6.0, lldb has dropped the minor version
    +            if [ "$majorVersion" -le 6 ]; then
    +                version="$majorVersion.$minorVersion"
    +            else
    +                version="$majorVersion"
    +            fi
    +
    +            __LLDB_Package="liblldb-${version}-dev"
                 ;;
             no-lldb)
                 unset __LLDB_Package
                 ;;
    -        xenial) # Ubuntu 16.04
    -            if [ "$__CodeName" != "jessie" ]; then
    -                __CodeName=xenial
    +        llvm*)
    +            version="$(echo "$lowerI" | tr -d '[:alpha:]-=')"
    +            __LLVM_MajorVersion="${version%%.*}"
    +
    +            [ -z "${version##*.*}" ] && __LLVM_MinorVersion="${version#*.}"
    +            if [ -z "$__LLVM_MinorVersion" ]; then
    +                __LLVM_MinorVersion=0
                 fi
    -            ;;
    -        zesty) # Ubuntu 17.04
    -            if [ "$__CodeName" != "jessie" ]; then
    -                __CodeName=zesty
    +
    +            # for versions > 6.0, lldb has dropped the minor version
    +            if [ "$__LLVM_MajorVersion" -gt 6 ]; then
    +                __LLVM_MinorVersion=
                 fi
    +
    +            ;;
    +        xenial) # Ubuntu 16.04
    +            __CodeName=xenial
                 ;;
             bionic) # Ubuntu 18.04
    -            if [ "$__CodeName" != "jessie" ]; then
    -                __CodeName=bionic
    -            fi
    +            __CodeName=bionic
    +            ;;
    +        focal) # Ubuntu 20.04
    +            __CodeName=focal
                 ;;
    -        jessie) # Debian 8
    -            __CodeName=jessie
    -            __UbuntuRepo="http://ftp.debian.org/debian/"
    +        jammy) # Ubuntu 22.04
    +            __CodeName=jammy
    +            ;;
    +        noble) # Ubuntu 24.04
    +            __CodeName=noble
    +            if [[ -z "$__LLDB_Package" ]]; then
    +                __LLDB_Package="liblldb-19-dev"
    +            fi
                 ;;
             stretch) # Debian 9
                 __CodeName=stretch
    -            __UbuntuRepo="http://ftp.debian.org/debian/"
                 __LLDB_Package="liblldb-6.0-dev"
    +            __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg"
    +
    +            if [[ -z "$__UbuntuRepo" ]]; then
    +                __UbuntuRepo="http://ftp.debian.org/debian/"
    +            fi
                 ;;
             buster) # Debian 10
                 __CodeName=buster
    -            __UbuntuRepo="http://ftp.debian.org/debian/"
                 __LLDB_Package="liblldb-6.0-dev"
    +            __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg"
    +
    +            if [[ -z "$__UbuntuRepo" ]]; then
    +                __UbuntuRepo="http://archive.debian.org/debian/"
    +            fi
                 ;;
    -        tizen)
    -            if [ "$__BuildArch" != "armel" ] && [ "$__BuildArch" != "arm64" ]; then
    -                echo "Tizen is available only for armel and arm64."
    -                usage;
    -                exit 1;
    +        bullseye) # Debian 11
    +            __CodeName=bullseye
    +            __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg"
    +
    +            if [[ -z "$__UbuntuRepo" ]]; then
    +                __UbuntuRepo="http://ftp.debian.org/debian/"
    +            fi
    +            ;;
    +        bookworm) # Debian 12
    +            __CodeName=bookworm
    +            __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg"
    +
    +            if [[ -z "$__UbuntuRepo" ]]; then
    +                __UbuntuRepo="http://ftp.debian.org/debian/"
    +            fi
    +            ;;
    +        sid) # Debian sid
    +            __CodeName=sid
    +            __UbuntuSuites=
    +
    +            # Debian-Ports architectures need different values
    +            case "$__UbuntuArch" in
    +            amd64|arm64|armel|armhf|i386|mips64el|ppc64el|riscv64|s390x)
    +                __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg"
    +
    +                if [[ -z "$__UbuntuRepo" ]]; then
    +                    __UbuntuRepo="http://ftp.debian.org/debian/"
    +                fi
    +                ;;
    +            *)
    +                __KeyringFile="/usr/share/keyrings/debian-ports-archive-keyring.gpg"
    +
    +                if [[ -z "$__UbuntuRepo" ]]; then
    +                    __UbuntuRepo="http://ftp.ports.debian.org/debian-ports/"
    +                fi
    +                ;;
    +            esac
    +
    +            if [[ -e "$__KeyringFile" ]]; then
    +                __Keyring="--keyring $__KeyringFile"
                 fi
    +            ;;
    +        tizen)
                 __CodeName=
                 __UbuntuRepo=
                 __Tizen=tizen
                 ;;
    -        alpine|alpine3.13)
    +        alpine*)
                 __CodeName=alpine
                 __UbuntuRepo=
    -            __AlpineVersion=3.13
    -            __AlpinePackages+=" llvm10-libs"
    +
    +            if [[ "$lowerI" == "alpineedge" ]]; then
    +                __AlpineVersion=edge
    +            else
    +                version="$(echo "$lowerI" | tr -d '[:alpha:]-=')"
    +                __AlpineMajorVersion="${version%%.*}"
    +                __AlpineMinorVersion="${version#*.}"
    +                __AlpineVersion="$__AlpineMajorVersion.$__AlpineMinorVersion"
    +            fi
                 ;;
    -        alpine3.14)
    -            __CodeName=alpine
    -            __UbuntuRepo=
    -            __AlpineVersion=3.14
    -            __AlpinePackages+=" llvm11-libs"
    -            ;;
    -        freebsd11)
    -            __FreeBSDBase="11.3-RELEASE"
    -            __FreeBSDABI="11"
    -            ;&
    -        freebsd12)
    +        freebsd13)
                 __CodeName=freebsd
    -            __BuildArch=x64
                 __SkipUnmount=1
                 ;;
    -        freebsd13)
    +        freebsd14)
                 __CodeName=freebsd
    -            __FreeBSDBase="13.0-RELEASE"
    -            __FreeBSDABI="13"
    -            __BuildArch=x64
    +            __FreeBSDBase="14.2-RELEASE"
    +            __FreeBSDABI="14"
                 __SkipUnmount=1
                 ;;
             illumos)
                 __CodeName=illumos
    -            __BuildArch=x64
    +            __SkipUnmount=1
    +            ;;
    +        haiku)
    +            __CodeName=haiku
                 __SkipUnmount=1
                 ;;
             --skipunmount)
                 __SkipUnmount=1
                 ;;
    +        --skipsigcheck)
    +            __SkipSigCheck=1
    +            ;;
    +        --skipemulation)
    +            __SkipEmulation=1
    +            ;;
             --rootfsdir|-rootfsdir)
                 shift
    -            __RootfsDir=$1
    +            __RootfsDir="$1"
                 ;;
             --use-mirror)
                 __UseMirror=1
                 ;;
    +        --use-jobs)
    +            shift
    +            MAXJOBS=$1
    +            ;;
             *)
                 __UnprocessedBuildArgs="$__UnprocessedBuildArgs $1"
                 ;;
    @@ -236,128 +423,413 @@ while :; do
         shift
     done
     
    -if [ "$__BuildArch" == "armel" ]; then
    -    __LLDB_Package="lldb-3.5-dev"
    +case "$__AlpineVersion" in
    +    3.14) __AlpinePackages+=" llvm11-libs" ;;
    +    3.15) __AlpinePackages+=" llvm12-libs" ;;
    +    3.16) __AlpinePackages+=" llvm13-libs" ;;
    +    3.17) __AlpinePackages+=" llvm15-libs" ;;
    +    edge) __AlpineLlvmLibsLookup=1 ;;
    +    *)
    +        if [[ "$__AlpineArch" =~ s390x|ppc64le ]]; then
    +            __AlpineVersion=3.15 # minimum version that supports lldb-dev
    +            __AlpinePackages+=" llvm12-libs"
    +        elif [[ "$__AlpineArch" == "x86" ]]; then
    +            __AlpineVersion=3.17 # minimum version that supports lldb-dev
    +            __AlpinePackages+=" llvm15-libs"
    +        elif [[ "$__AlpineArch" == "riscv64" || "$__AlpineArch" == "loongarch64" ]]; then
    +            __AlpineVersion=3.21 # minimum version that supports lldb-dev
    +            __AlpinePackages+=" llvm19-libs"
    +        elif [[ -n "$__AlpineMajorVersion" ]]; then
    +            # use whichever alpine version is provided and select the latest toolchain libs
    +            __AlpineLlvmLibsLookup=1
    +        else
    +            __AlpineVersion=3.13 # 3.13 to maximize compatibility
    +            __AlpinePackages+=" llvm10-libs"
    +        fi
    +esac
    +
    +if [[ "$__AlpineVersion" =~ 3\.1[345] ]]; then
    +    # compiler-rt--static was merged in compiler-rt package in alpine 3.16
    +    # for older versions, we need compiler-rt--static, so replace the name
    +    __AlpinePackages="${__AlpinePackages/compiler-rt/compiler-rt-static}"
     fi
    +
     __UbuntuPackages+=" ${__LLDB_Package:-}"
     
    -if [ -z "$__RootfsDir" ] && [ ! -z "$ROOTFS_DIR" ]; then
    -    __RootfsDir=$ROOTFS_DIR
    +if [[ -z "$__UbuntuRepo" ]]; then
    +    __UbuntuRepo="http://ports.ubuntu.com/"
    +fi
    +
    +if [[ -n "$__LLVM_MajorVersion" ]]; then
    +    __UbuntuPackages+=" libclang-common-${__LLVM_MajorVersion}${__LLVM_MinorVersion:+.$__LLVM_MinorVersion}-dev"
     fi
     
    -if [ -z "$__RootfsDir" ]; then
    +if [[ -z "$__RootfsDir" && -n "$ROOTFS_DIR" ]]; then
    +    __RootfsDir="$ROOTFS_DIR"
    +fi
    +
    +if [[ -z "$__RootfsDir" ]]; then
         __RootfsDir="$__CrossDir/../../../.tools/rootfs/$__BuildArch"
     fi
     
    -if [ -d "$__RootfsDir" ]; then
    -    if [ $__SkipUnmount == 0 ]; then
    -        umount $__RootfsDir/* || true
    +if [[ -d "$__RootfsDir" ]]; then
    +    if [[ "$__SkipUnmount" == "0" ]]; then
    +        umount "$__RootfsDir"/* || true
         fi
    -    rm -rf $__RootfsDir
    +    rm -rf "$__RootfsDir"
     fi
     
    -mkdir -p $__RootfsDir
    +mkdir -p "$__RootfsDir"
     __RootfsDir="$( cd "$__RootfsDir" && pwd )"
     
    +__hasWget=
    +ensureDownloadTool()
    +{
    +    if command -v wget &> /dev/null; then
    +        __hasWget=1
    +    elif command -v curl &> /dev/null; then
    +        __hasWget=0
    +    else
    +        >&2 echo "ERROR: either wget or curl is required by this script."
    +        exit 1
    +    fi
    +}
    +
     if [[ "$__CodeName" == "alpine" ]]; then
    -    __ApkToolsVersion=2.9.1
    -    __ApkToolsDir=$(mktemp -d)
    -    wget https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -P $__ApkToolsDir
    -    tar -xf $__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -C $__ApkToolsDir
    -    mkdir -p $__RootfsDir/usr/bin
    -    cp -v /usr/bin/qemu-$__QEMUArch-static $__RootfsDir/usr/bin
    -
    -    $__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \
    -      -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main \
    -      -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community \
    -      -U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \
    -      add $__AlpinePackages
    -
    -    rm -r $__ApkToolsDir
    +    __ApkToolsVersion=2.12.11
    +    __ApkToolsDir="$(mktemp -d)"
    +    __ApkKeysDir="$(mktemp -d)"
    +    arch="$(uname -m)"
    +
    +    ensureDownloadTool
    +
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -P "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static"
    +    else
    +        curl -SLO --create-dirs --output-dir "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static"
    +    fi
    +    if [[ "$arch" == "x86_64" ]]; then
    +      __ApkToolsSHA512SUM="53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33"
    +    elif [[ "$arch" == "aarch64" ]]; then
    +      __ApkToolsSHA512SUM="9e2b37ecb2b56c05dad23d379be84fd494c14bd730b620d0d576bda760588e1f2f59a7fcb2f2080577e0085f23a0ca8eadd993b4e61c2ab29549fdb71969afd0"
    +    else
    +      echo "WARNING: add missing hash for your host architecture. To find the value, use: 'find /tmp -name apk.static -exec sha512sum {} \;'"
    +    fi
    +    echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c
    +    chmod +x "$__ApkToolsDir/apk.static"
    +
    +    if [[ "$__AlpineVersion" == "edge" ]]; then
    +        version=edge
    +    else
    +        version="v$__AlpineVersion"
    +    fi
    +
    +    for line in $__AlpineKeys; do
    +        id="${line%%:*}"
    +        content="${line#*:}"
    +
    +        echo -e "-----BEGIN PUBLIC KEY-----\n$content\n-----END PUBLIC KEY-----" > "$__ApkKeysDir/alpine-devel@lists.alpinelinux.org-$id.rsa.pub"
    +    done
    +
    +    if [[ "$__SkipSigCheck" == "1" ]]; then
    +        __ApkSignatureArg="--allow-untrusted"
    +    else
    +        __ApkSignatureArg="--keys-dir $__ApkKeysDir"
    +    fi
    +
    +    if [[ "$__SkipEmulation" == "1" ]]; then
    +        __NoEmulationArg="--no-scripts"
    +    fi
    +
    +    # initialize DB
    +    # shellcheck disable=SC2086
    +    "$__ApkToolsDir/apk.static" \
    +        -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
    +        -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
    +        -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add
    +
    +    if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then
    +        # shellcheck disable=SC2086
    +        __AlpinePackages+=" $("$__ApkToolsDir/apk.static" \
    +            -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
    +            -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
    +            -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \
    +            search 'llvm*-libs' | grep -E '^llvm' | sort | tail -1 | sed 's/-[^-]*//2g')"
    +    fi
    +
    +    # install all packages in one go
    +    # shellcheck disable=SC2086
    +    "$__ApkToolsDir/apk.static" \
    +        -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
    +        -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
    +        -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" $__NoEmulationArg \
    +        add $__AlpinePackages
    +
    +    rm -r "$__ApkToolsDir"
     elif [[ "$__CodeName" == "freebsd" ]]; then
    -    mkdir -p $__RootfsDir/usr/local/etc
    -    JOBS="$(getconf _NPROCESSORS_ONLN)"
    -    wget -O - https://download.freebsd.org/ftp/releases/amd64/${__FreeBSDBase}/base.txz | tar -C $__RootfsDir -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version
    -    echo "ABI = \"FreeBSD:${__FreeBSDABI}:amd64\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > ${__RootfsDir}/usr/local/etc/pkg.conf
    -    echo "FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"${__RootfsDir}/usr/share/keys/pkg\", enabled: yes }" > ${__RootfsDir}/etc/pkg/FreeBSD.conf
    -    mkdir -p $__RootfsDir/tmp
    +    mkdir -p "$__RootfsDir"/usr/local/etc
    +    JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"}
    +
    +    ensureDownloadTool
    +
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O- "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version
    +    else
    +        curl -SL "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version
    +    fi
    +    echo "ABI = \"FreeBSD:${__FreeBSDABI}:${__FreeBSDMachineArch}\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > "${__RootfsDir}"/usr/local/etc/pkg.conf
    +    echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf
    +    mkdir -p "$__RootfsDir"/tmp
         # get and build package manager
    -    wget -O -  https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz  |  tar -C $__RootfsDir/tmp -zxf -
    -    cd $__RootfsDir/tmp/pkg-${__FreeBSDPkg}
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O- "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf -
    +    else
    +        curl -SL "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf -
    +    fi
    +    cd "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}"
         # needed for install to succeed
    -    mkdir -p $__RootfsDir/host/etc
    -    ./autogen.sh && ./configure --prefix=$__RootfsDir/host && make -j "$JOBS" && make install
    -    rm -rf $__RootfsDir/tmp/pkg-${__FreeBSDPkg}
    +    mkdir -p "$__RootfsDir"/host/etc
    +    ./autogen.sh && ./configure --prefix="$__RootfsDir"/host && make -j "$JOBS" && make install
    +    rm -rf "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}"
         # install packages we need.
    -    INSTALL_AS_USER=$(whoami) $__RootfsDir/host/sbin/pkg -r $__RootfsDir -C $__RootfsDir/usr/local/etc/pkg.conf update
    -    INSTALL_AS_USER=$(whoami) $__RootfsDir/host/sbin/pkg -r $__RootfsDir -C $__RootfsDir/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages
    +    INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update
    +    # shellcheck disable=SC2086
    +    INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages
     elif [[ "$__CodeName" == "illumos" ]]; then
         mkdir "$__RootfsDir/tmp"
         pushd "$__RootfsDir/tmp"
    -    JOBS="$(getconf _NPROCESSORS_ONLN)"
    +    JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"}
    +
    +    ensureDownloadTool
    +
         echo "Downloading sysroot."
    -    wget -O - https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf -
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O- https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf -
    +    else
    +        curl -SL https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf -
    +    fi
         echo "Building binutils. Please wait.."
    -    wget -O - https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf -
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O- https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf -
    +    else
    +        curl -SL https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf -
    +    fi
         mkdir build-binutils && cd build-binutils
    -    ../binutils-2.33.1/configure --prefix="$__RootfsDir" --target="x86_64-sun-solaris2.10" --program-prefix="x86_64-illumos-" --with-sysroot="$__RootfsDir"
    +    ../binutils-2.42/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir"
         make -j "$JOBS" && make install && cd ..
         echo "Building gcc. Please wait.."
    -    wget -O - https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf -
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O- https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf -
    +    else
    +        curl -SL https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf -
    +    fi
         CFLAGS="-fPIC"
         CXXFLAGS="-fPIC"
         CXXFLAGS_FOR_TARGET="-fPIC"
         CFLAGS_FOR_TARGET="-fPIC"
         export CFLAGS CXXFLAGS CXXFLAGS_FOR_TARGET CFLAGS_FOR_TARGET
         mkdir build-gcc && cd build-gcc
    -    ../gcc-8.4.0/configure --prefix="$__RootfsDir" --target="x86_64-sun-solaris2.10" --program-prefix="x86_64-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as       \
    +    ../gcc-13.3.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as       \
             --with-gnu-ld --disable-nls --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libada --disable-libsanitizer \
             --disable-libquadmath-support --disable-shared --enable-tls
         make -j "$JOBS" && make install && cd ..
    -    BaseUrl=https://pkgsrc.joyent.com
    +    BaseUrl=https://pkgsrc.smartos.org
         if [[ "$__UseMirror" == 1 ]]; then
    -        BaseUrl=http://pkgsrc.smartos.skylime.net
    +        BaseUrl=https://pkgsrc.smartos.skylime.net
    +    fi
    +    BaseUrl="$BaseUrl/packages/SmartOS/2019Q4/${__illumosArch}/All"
    +    echo "Downloading manifest"
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget "$BaseUrl"
    +    else
    +        curl -SLO "$BaseUrl"
         fi
    -    BaseUrl="$BaseUrl"/packages/SmartOS/2020Q1/x86_64/All
         echo "Downloading dependencies."
         read -ra array <<<"$__IllumosPackages"
         for package in "${array[@]}"; do
    -       echo "Installing $package..."
    -        wget "$BaseUrl"/"$package".tgz
    +        echo "Installing '$package'"
    +        # find last occurrence of package in listing and extract its name
    +        package="$(sed -En '/.*href="('"$package"'-[0-9].*).tgz".*/h;$!d;g;s//\1/p' All)"
    +        echo "Resolved name '$package'"
    +        if [[ "$__hasWget" == 1 ]]; then
    +            wget "$BaseUrl"/"$package".tgz
    +        else
    +            curl -SLO "$BaseUrl"/"$package".tgz
    +        fi
             ar -x "$package".tgz
    -        tar --skip-old-files -xzf "$package".tmp.tgz -C "$__RootfsDir" 2>/dev/null
    +        tar --skip-old-files -xzf "$package".tmp.tg* -C "$__RootfsDir" 2>/dev/null
         done
         echo "Cleaning up temporary files."
         popd
         rm -rf "$__RootfsDir"/{tmp,+*}
         mkdir -p "$__RootfsDir"/usr/include/net
         mkdir -p "$__RootfsDir"/usr/include/netpacket
    -    wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h
    -    wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h
    -    wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h
    -    wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h
    -elif [[ -n $__CodeName ]]; then
    -    qemu-debootstrap --arch $__UbuntuArch $__CodeName $__RootfsDir $__UbuntuRepo
    -    cp $__CrossDir/$__BuildArch/sources.list.$__CodeName $__RootfsDir/etc/apt/sources.list
    -    chroot $__RootfsDir apt-get update
    -    chroot $__RootfsDir apt-get -f -y install
    -    chroot $__RootfsDir apt-get -y install $__UbuntuPackages
    -    chroot $__RootfsDir symlinks -cr /usr
    -    chroot $__RootfsDir apt-get clean
    -
    -    if [ $__SkipUnmount == 0 ]; then
    -        umount $__RootfsDir/* || true
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h
    +        wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h
    +        wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h
    +        wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h
    +    else
    +        curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h
    +        curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h
    +        curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h
    +        curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h
    +    fi
    +elif [[ "$__CodeName" == "haiku" ]]; then
    +    JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"}
    +
    +    echo "Building Haiku sysroot for $__HaikuArch"
    +    mkdir -p "$__RootfsDir/tmp"
    +    pushd "$__RootfsDir/tmp"
    +
    +    mkdir "$__RootfsDir/tmp/download"
    +
    +    ensureDownloadTool
    +
    +    echo "Downloading Haiku package tools"
    +    git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 "$__RootfsDir/tmp/script"
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)"
    +    else
    +        curl -SLo "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)"
    +    fi
    +
    +    unzip -o "$__RootfsDir/tmp/download/hosttools.zip" -d "$__RootfsDir/tmp/bin"
    +
    +    HaikuBaseUrl="https://eu.hpkg.haiku-os.org/haiku/master/$__HaikuArch/current"
    +    HaikuPortsBaseUrl="https://eu.hpkg.haiku-os.org/haikuports/master/$__HaikuArch/current"
    +
    +    echo "Downloading HaikuPorts package repository index..."
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -P "$__RootfsDir/tmp/download" "$HaikuPortsBaseUrl/repo"
    +    else
    +        curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HaikuPortsBaseUrl/repo"
    +    fi
    +
    +    echo "Downloading Haiku packages"
    +    read -ra array <<<"$__HaikuPackages"
    +    for package in "${array[@]}"; do
    +        echo "Downloading $package..."
    +        hpkgFilename="$(LD_LIBRARY_PATH="$__RootfsDir/tmp/bin" "$__RootfsDir/tmp/bin/package_repo" list -f "$__RootfsDir/tmp/download/repo" |
    +            grep -E "${package}-" | sort -V | tail -n 1 | xargs)"
    +        if [ -z "$hpkgFilename" ]; then
    +            >&2 echo "ERROR: package $package missing."
    +            exit 1
    +        fi
    +        echo "Resolved filename: $hpkgFilename..."
    +        hpkgDownloadUrl="$HaikuPortsBaseUrl/packages/$hpkgFilename"
    +        if [[ "$__hasWget" == 1 ]]; then
    +            wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl"
    +        else
    +            curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$hpkgDownloadUrl"
    +        fi
    +    done
    +    for package in haiku haiku_devel; do
    +        echo "Downloading $package..."
    +        if [[ "$__hasWget" == 1 ]]; then
    +            hpkgVersion="$(wget -qO- "$HaikuBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')"
    +            wget -P "$__RootfsDir/tmp/download" "$HaikuBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg"
    +        else
    +            hpkgVersion="$(curl -sSL "$HaikuBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')"
    +            curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HaikuBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg"
    +        fi
    +    done
    +
    +    # Set up the sysroot
    +    echo "Setting up sysroot and extracting required packages"
    +    mkdir -p "$__RootfsDir/boot/system"
    +    for file in "$__RootfsDir/tmp/download/"*.hpkg; do
    +        echo "Extracting $file..."
    +        LD_LIBRARY_PATH="$__RootfsDir/tmp/bin" "$__RootfsDir/tmp/bin/package" extract -C "$__RootfsDir/boot/system" "$file"
    +    done
    +
    +    # Download buildtools
    +    echo "Downloading Haiku buildtools"
    +    if [[ "$__hasWget" == 1 ]]; then
    +        wget -O "$__RootfsDir/tmp/download/buildtools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch)"
    +    else
    +        curl -SLo "$__RootfsDir/tmp/download/buildtools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch)"
    +    fi
    +    unzip -o "$__RootfsDir/tmp/download/buildtools.zip" -d "$__RootfsDir"
    +
    +    # Cleaning up temporary files
    +    echo "Cleaning up temporary files"
    +    popd
    +    rm -rf "$__RootfsDir/tmp"
    +elif [[ -n "$__CodeName" ]]; then
    +    __Suites="$__CodeName $(for suite in $__UbuntuSuites; do echo -n "$__CodeName-$suite "; done)"
    +
    +    if [[ "$__SkipEmulation" == "1" ]]; then
    +        if [[ -z "$AR" ]]; then
    +            if command -v ar &>/dev/null; then
    +                AR="$(command -v ar)"
    +            elif command -v llvm-ar &>/dev/null; then
    +                AR="$(command -v llvm-ar)"
    +            else
    +                echo "Unable to find ar or llvm-ar on PATH, add them to PATH or set AR environment variable pointing to the available AR tool"
    +                exit 1
    +            fi
    +        fi
    +
    +        PYTHON=${PYTHON_EXECUTABLE:-python3}
    +
    +        # shellcheck disable=SC2086,SC2046
    +        echo running "$PYTHON" "$__CrossDir/install-debs.py" --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \
    +            $(for suite in $__Suites; do echo -n "--suite $suite "; done) \
    +            $__UbuntuPackages
    +
    +        # shellcheck disable=SC2086,SC2046
    +        "$PYTHON" "$__CrossDir/install-debs.py" --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \
    +            $(for suite in $__Suites; do echo -n "--suite $suite "; done) \
    +            $__UbuntuPackages
    +
    +        exit 0
         fi
     
    -    if [[ "$__BuildArch" == "armel" && "$__CodeName" == "jessie" ]]; then
    -        pushd $__RootfsDir
    -        patch -p1 < $__CrossDir/$__BuildArch/armel.jessie.patch
    -        popd
    +    __UpdateOptions=
    +    if [[ "$__SkipSigCheck" == "0" ]]; then
    +        __Keyring="$__Keyring --force-check-gpg"
    +    else
    +        __Keyring=
    +        __UpdateOptions="--allow-unauthenticated --allow-insecure-repositories"
    +    fi
    +
    +    # shellcheck disable=SC2086
    +    echo running debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"
    +
    +    # shellcheck disable=SC2086
    +    if ! debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"; then
    +        echo "debootstrap failed! dumping debootstrap.log"
    +        cat "$__RootfsDir/debootstrap/debootstrap.log"
    +        exit 1
    +    fi
    +
    +    rm -rf "$__RootfsDir"/etc/apt/*.{sources,list} "$__RootfsDir"/etc/apt/sources.list.d
    +    mkdir -p "$__RootfsDir/etc/apt/sources.list.d/"
    +
    +    # shellcheck disable=SC2086
    +    cat > "$__RootfsDir/etc/apt/sources.list.d/$__CodeName.sources" < token2) - (token1 < token2)
    +        else:
    +            return -1 if isinstance(token1, str) else 1
    +
    +    return len(tokens1) - len(tokens2)
    +
    +def compare_debian_versions(version1, version2):
    +    """Compare two Debian package versions."""
    +    epoch1, upstream1, revision1 = parse_debian_version(version1)
    +    epoch2, upstream2, revision2 = parse_debian_version(version2)
    +
    +    if epoch1 != epoch2:
    +        return epoch1 - epoch2
    +
    +    result = compare_upstream_version(upstream1, upstream2)
    +    if result != 0:
    +        return result
    +
    +    return compare_upstream_version(revision1, revision2)
    +
    +def resolve_dependencies(packages, aliases, desired_packages):
    +    """Recursively resolves dependencies for the desired packages."""
    +    resolved = []
    +    to_process = deque(desired_packages)
    +
    +    while to_process:
    +        current = to_process.popleft()
    +        resolved_package = current if current in packages else aliases.get(current, [None])[0]
    +
    +        if not resolved_package:
    +            print(f"Error: Package '{current}' was not found in the available packages.")
    +            sys.exit(1)
    +
    +        if resolved_package not in resolved:
    +            resolved.append(resolved_package)
    +
    +            deps = packages.get(resolved_package, {}).get("Depends", "")
    +            if deps:
    +                deps = [dep.split(' ')[0] for dep in deps.split(', ') if dep]
    +                for dep in deps:
    +                    if dep not in resolved and dep not in to_process and dep in packages:
    +                        to_process.append(dep)
    +
    +    return resolved
    +
    +def parse_package_index(content):
    +    """Parses the Packages.gz file and returns package information."""
    +    packages = {}
    +    aliases = {}
    +    entries = re.split(r'\n\n+', content)
    +
    +    for entry in entries:
    +        fields = dict(re.findall(r'^(\S+): (.+)$', entry, re.MULTILINE))
    +        if "Package" in fields:
    +            package_name = fields["Package"]
    +            version = fields.get("Version")
    +            filename = fields.get("Filename")
    +            depends = fields.get("Depends")
    +            provides = fields.get("Provides", None)
    +
    +            # Only update if package_name is not in packages or if the new version is higher
    +            if package_name not in packages or compare_debian_versions(version, packages[package_name]["Version"]) > 0:
    +                packages[package_name] = {
    +                    "Version": version,
    +                    "Filename": filename,
    +                    "Depends": depends
    +                }
    +
    +                # Update aliases if package provides any alternatives
    +                if provides:
    +                    provides_list = [x.strip() for x in provides.split(",")]
    +                    for alias in provides_list:
    +                        # Strip version specifiers
    +                        alias_name = re.sub(r'\s*\(=.*\)', '', alias)
    +                        if alias_name not in aliases:
    +                            aliases[alias_name] = []
    +                        if package_name not in aliases[alias_name]:
    +                            aliases[alias_name].append(package_name)
    +
    +    return packages, aliases
    +
    +def install_packages(mirror, packages_info, aliases, tmp_dir, extract_dir, ar_tool, desired_packages):
    +    """Downloads .deb files and extracts them."""
    +    resolved_packages = resolve_dependencies(packages_info, aliases, desired_packages)
    +    print(f"Resolved packages (including dependencies): {resolved_packages}")
    +
    +    packages_to_download = {}
    +
    +    for pkg in resolved_packages:
    +        if pkg in packages_info:
    +            packages_to_download[pkg] = packages_info[pkg]
    +
    +        if pkg in aliases:
    +            for alias in aliases[pkg]:
    +                if alias in packages_info:
    +                    packages_to_download[alias] = packages_info[alias]
    +
    +    asyncio.run(download_deb_files_parallel(mirror, packages_to_download, tmp_dir))
    +
    +    package_to_deb_file_map = {}
    +    for pkg in resolved_packages:
    +        pkg_info = packages_info.get(pkg)
    +        if pkg_info:
    +            deb_filename = pkg_info.get("Filename")
    +            if deb_filename:
    +                deb_file_path = os.path.join(tmp_dir, os.path.basename(deb_filename))
    +                package_to_deb_file_map[pkg] = deb_file_path
    +
    +    for pkg in reversed(resolved_packages):
    +        deb_file = package_to_deb_file_map.get(pkg)
    +        if deb_file and os.path.exists(deb_file):
    +            extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool)
    +
    +    print("All done!")
    +
    +def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool):
    +    """Extract .deb file contents"""
    +
    +    os.makedirs(extract_dir, exist_ok=True)
    +
    +    with tempfile.TemporaryDirectory(dir=tmp_dir) as tmp_subdir:
    +        result = subprocess.run(f"{ar_tool} t {os.path.abspath(deb_file)}", cwd=tmp_subdir, check=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    +
    +        tar_filename = None
    +        for line in result.stdout.decode().splitlines():
    +            if line.startswith("data.tar"):
    +                tar_filename = line.strip()
    +                break
    +
    +        if not tar_filename:
    +            raise FileNotFoundError(f"Could not find 'data.tar.*' in {deb_file}.")
    +
    +        tar_file_path = os.path.join(tmp_subdir, tar_filename)
    +        print(f"Extracting {tar_filename} from {deb_file}..")
    +
    +        subprocess.run(f"{ar_tool} p {os.path.abspath(deb_file)} {tar_filename} > {tar_file_path}", check=True, shell=True)
    +
    +        file_extension = os.path.splitext(tar_file_path)[1].lower()
    +
    +        if file_extension == ".xz":
    +            mode = "r:xz"
    +        elif file_extension == ".gz":
    +            mode = "r:gz"
    +        elif file_extension == ".zst":
    +            # zstd is not supported by standard library yet
    +            decompressed_tar_path = tar_file_path.replace(".zst", "")
    +            with open(tar_file_path, "rb") as zst_file, open(decompressed_tar_path, "wb") as decompressed_file:
    +                dctx = zstandard.ZstdDecompressor()
    +                dctx.copy_stream(zst_file, decompressed_file)
    +
    +            tar_file_path = decompressed_tar_path
    +            mode = "r"
    +        else:
    +            raise ValueError(f"Unsupported compression format: {file_extension}")
    +
    +        with tarfile.open(tar_file_path, mode) as tar:
    +            tar.extractall(path=extract_dir, filter='fully_trusted')
    +
    +def finalize_setup(rootfsdir):
    +    lib_dir = os.path.join(rootfsdir, 'lib')
    +    usr_lib_dir = os.path.join(rootfsdir, 'usr', 'lib')
    +
    +    if os.path.exists(lib_dir):
    +        if os.path.islink(lib_dir):
    +            os.remove(lib_dir)
    +        else:
    +            os.makedirs(usr_lib_dir, exist_ok=True)
    +
    +            for item in os.listdir(lib_dir):
    +                src = os.path.join(lib_dir, item)
    +                dest = os.path.join(usr_lib_dir, item)
    +
    +                if os.path.isdir(src):
    +                    shutil.copytree(src, dest, dirs_exist_ok=True)
    +                else:
    +                    shutil.copy2(src, dest)
    +
    +            shutil.rmtree(lib_dir)
    +
    +    os.symlink(usr_lib_dir, lib_dir)
    +
    +if __name__ == "__main__":
    +    parser = argparse.ArgumentParser(description="Generate rootfs for .NET runtime on Debian-like OS")
    +    parser.add_argument("--distro", required=False, help="Distro name (e.g., debian, ubuntu, etc.)")
    +    parser.add_argument("--arch", required=True, help="Architecture (e.g., amd64, loong64, etc.)")
    +    parser.add_argument("--rootfsdir", required=True, help="Destination directory.")
    +    parser.add_argument('--suite', required=True, action='append', help='Specify one or more repository suites to collect index data.')
    +    parser.add_argument("--mirror", required=False, help="Mirror (e.g., http://ftp.debian.org/debian-ports etc.)")
    +    parser.add_argument("--artool", required=False, default="ar", help="ar tool to extract debs (e.g., ar, llvm-ar etc.)")
    +    parser.add_argument("packages", nargs="+", help="List of package names to be installed.")
    +
    +    args = parser.parse_args()
    +
    +    if args.mirror is None:
    +        if args.distro == "ubuntu":
    +            args.mirror = "http://archive.ubuntu.com/ubuntu" if args.arch in ["amd64", "i386"] else "http://ports.ubuntu.com/ubuntu-ports"
    +        elif args.distro == "debian":
    +            args.mirror = "http://ftp.debian.org/debian-ports"
    +        else:
    +            raise Exception("Unsupported distro")
    +
    +    DESIRED_PACKAGES = args.packages + [ # base packages
    +        "dpkg",
    +        "busybox",
    +        "libc-bin",
    +        "base-files",
    +        "base-passwd",
    +        "debianutils"
    +    ]
    +
    +    print(f"Creating rootfs. rootfsdir: {args.rootfsdir}, distro: {args.distro}, arch: {args.arch}, suites: {args.suite}, mirror: {args.mirror}")
    +
    +    package_index_content = asyncio.run(download_package_index_parallel(args.mirror, args.arch, args.suite))
    +
    +    packages_info, aliases = parse_package_index(package_index_content)
    +
    +    with tempfile.TemporaryDirectory() as tmp_dir:
    +        install_packages(args.mirror, packages_info, aliases, tmp_dir, args.rootfsdir, args.artool, DESIRED_PACKAGES)
    +
    +    finalize_setup(args.rootfsdir)
    diff --git a/eng/common/cross/riscv64/tizen/tizen.patch b/eng/common/cross/riscv64/tizen/tizen.patch
    new file mode 100644
    index 0000000000..eb6d1c0747
    --- /dev/null
    +++ b/eng/common/cross/riscv64/tizen/tizen.patch
    @@ -0,0 +1,9 @@
    +diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
    +--- a/usr/lib64/libc.so	2016-12-30 23:00:08.284951863 +0900
    ++++ b/usr/lib64/libc.so	2016-12-30 23:00:32.140951815 +0900
    +@@ -2,4 +2,4 @@
    +    Use the shared library, but some functions are only in
    +    the static library, so try that secondarily.  */
    + OUTPUT_FORMAT(elf64-littleriscv)
    +-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-riscv64-lp64d.so.1 ) )
    ++GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux-riscv64-lp64d.so.1 ) )
    diff --git a/eng/common/cross/s390x/sources.list.bionic b/eng/common/cross/s390x/sources.list.bionic
    deleted file mode 100644
    index 2109557409..0000000000
    --- a/eng/common/cross/s390x/sources.list.bionic
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
    -
    -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
    -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
    diff --git a/eng/common/cross/tizen-build-rootfs.sh b/eng/common/cross/tizen-build-rootfs.sh
    new file mode 100644
    index 0000000000..ba31c93285
    --- /dev/null
    +++ b/eng/common/cross/tizen-build-rootfs.sh
    @@ -0,0 +1,82 @@
    +#!/usr/bin/env bash
    +set -e
    +
    +ARCH=$1
    +LINK_ARCH=$ARCH
    +
    +case "$ARCH" in
    +    arm)
    +        TIZEN_ARCH="armv7hl"
    +        ;;
    +    armel)
    +        TIZEN_ARCH="armv7l"
    +        LINK_ARCH="arm"
    +        ;;
    +    arm64)
    +        TIZEN_ARCH="aarch64"
    +        ;;
    +    x86)
    +        TIZEN_ARCH="i686"
    +        ;;
    +    x64)
    +        TIZEN_ARCH="x86_64"
    +        LINK_ARCH="x86"
    +        ;;
    +    riscv64)
    +        TIZEN_ARCH="riscv64"
    +        LINK_ARCH="riscv"
    +        ;;
    +    *)
    +        echo "Unsupported architecture for tizen: $ARCH"
    +        exit 1
    +esac
    +
    +__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
    +__TIZEN_CROSSDIR="$__CrossDir/${ARCH}/tizen"
    +
    +if [[ -z "$ROOTFS_DIR" ]]; then
    +    echo "ROOTFS_DIR is not defined."
    +    exit 1;
    +fi
    +
    +TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
    +mkdir -p $TIZEN_TMP_DIR
    +
    +# Download files
    +echo ">>Start downloading files"
    +VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR $TIZEN_ARCH
    +echo "<>Start constructing Tizen rootfs"
    +TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
    +cd $ROOTFS_DIR
    +for f in $TIZEN_RPM_FILES; do
    +    rpm2cpio $f  | cpio -idm --quiet
    +done
    +echo "<>Start configuring Tizen rootfs"
    +ln -sfn asm-${LINK_ARCH} ./usr/include/asm
    +patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
    +if [[ "$TIZEN_ARCH" == "riscv64" ]]; then
    +    echo "Fixing broken symlinks in $PWD"
    +    rm ./usr/lib64/libresolv.so
    +    ln -s ../../lib64/libresolv.so.2 ./usr/lib64/libresolv.so
    +    rm ./usr/lib64/libpthread.so
    +    ln -s ../../lib64/libpthread.so.0 ./usr/lib64/libpthread.so
    +    rm ./usr/lib64/libdl.so
    +    ln -s ../../lib64/libdl.so.2 ./usr/lib64/libdl.so
    +    rm ./usr/lib64/libutil.so
    +    ln -s ../../lib64/libutil.so.1 ./usr/lib64/libutil.so
    +    rm ./usr/lib64/libm.so
    +    ln -s ../../lib64/libm.so.6 ./usr/lib64/libm.so
    +    rm ./usr/lib64/librt.so
    +    ln -s ../../lib64/librt.so.1 ./usr/lib64/librt.so
    +    rm ./lib/ld-linux-riscv64-lp64d.so.1
    +    ln -s ../lib64/ld-linux-riscv64-lp64d.so.1 ./lib/ld-linux-riscv64-lp64d.so.1
    +fi
    +echo "</dev/null; then
    +    VERBOSE=0
    +fi
    +
    +Log()
    +{
    +    if [ $VERBOSE -ge 1 ]; then
    +        echo ${@:2}
    +    fi
    +}
    +
    +Inform()
    +{
    +    Log 1 -e "\x1B[0;34m$@\x1B[m"
    +}
    +
    +Debug()
    +{
    +    Log 2 -e "\x1B[0;32m$@\x1B[m"
    +}
    +
    +Error()
    +{
    +    >&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
    +}
    +
    +Fetch()
    +{
    +    URL=$1
    +    FILE=$2
    +    PROGRESS=$3
    +    if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
    +        CURL_OPT="--progress-bar"
    +    else
    +        CURL_OPT="--silent"
    +    fi
    +    curl $CURL_OPT $URL > $FILE
    +}
    +
    +hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
    +hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
    +hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
    +
    +TMPDIR=$1
    +if [ ! -d $TMPDIR ]; then
    +    TMPDIR=./tizen_tmp
    +    Debug "Create temporary directory : $TMPDIR"
    +    mkdir -p $TMPDIR
    +fi
    +
    +TIZEN_ARCH=$2
    +
    +TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
    +BUILD_XML=build.xml
    +REPOMD_XML=repomd.xml
    +PRIMARY_XML=primary.xml
    +TARGET_URL="http://__not_initialized"
    +
    +Xpath_get()
    +{
    +    XPATH_RESULT=''
    +    XPATH=$1
    +    XML_FILE=$2
    +    RESULT=$(xmllint --xpath $XPATH $XML_FILE)
    +    if [[ -z ${RESULT// } ]]; then
    +        Error "Can not find target from $XML_FILE"
    +        Debug "Xpath = $XPATH"
    +        exit 1
    +    fi
    +    XPATH_RESULT=$RESULT
    +}
    +
    +fetch_tizen_pkgs_init()
    +{
    +    TARGET=$1
    +    PROFILE=$2
    +    Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
    +
    +    TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
    +    if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
    +    mkdir -p $TMP_PKG_DIR
    +
    +    PKG_URL=$TIZEN_URL/$PROFILE/latest
    +
    +    BUILD_XML_URL=$PKG_URL/$BUILD_XML
    +    TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
    +    TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
    +    TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
    +    TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
    +
    +    Fetch $BUILD_XML_URL $TMP_BUILD
    +
    +    Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
    +
    +    TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
    +    Xpath_get $TARGET_XPATH $TMP_BUILD
    +    TARGET_PATH=$XPATH_RESULT
    +    TARGET_URL=$PKG_URL/$TARGET_PATH
    +
    +    REPOMD_URL=$TARGET_URL/repodata/repomd.xml
    +    PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
    +
    +    Fetch $REPOMD_URL $TMP_REPOMD
    +
    +    Debug "fetch $REPOMD_URL to $TMP_REPOMD"
    +
    +    Xpath_get $PRIMARY_XPATH $TMP_REPOMD
    +    PRIMARY_XML_PATH=$XPATH_RESULT
    +    PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
    +
    +    Fetch $PRIMARY_URL $TMP_PRIMARYGZ
    +
    +    Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
    +
    +    gunzip $TMP_PRIMARYGZ
    +
    +    Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
    +}
    +
    +fetch_tizen_pkgs()
    +{
    +    ARCH=$1
    +    PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
    +
    +    PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
    +
    +    for pkg in ${@:2}
    +    do
    +        Inform "Fetching... $pkg"
    +        XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
    +        XPATH=${XPATH/_ARCH_/$ARCH}
    +        Xpath_get $XPATH $TMP_PRIMARY
    +        PKG_PATH=$XPATH_RESULT
    +
    +        XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
    +        XPATH=${XPATH/_ARCH_/$ARCH}
    +        Xpath_get $XPATH $TMP_PRIMARY
    +        CHECKSUM=$XPATH_RESULT
    +
    +        PKG_URL=$TARGET_URL/$PKG_PATH
    +        PKG_FILE=$(basename $PKG_PATH)
    +        PKG_PATH=$TMPDIR/$PKG_FILE
    +
    +        Debug "Download $PKG_URL to $PKG_PATH"
    +        Fetch $PKG_URL $PKG_PATH true
    +
    +        echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
    +        if [ $? -ne 0 ]; then
    +            Error "Fail to fetch $PKG_URL to $PKG_PATH"
    +            Debug "Checksum = $CHECKSUM"
    +            exit 1
    +        fi
    +    done
    +}
    +
    +BASE="Tizen-Base"
    +UNIFIED="Tizen-Unified"
    +
    +Inform "Initialize ${TIZEN_ARCH} base"
    +fetch_tizen_pkgs_init standard $BASE
    +Inform "fetch common packages"
    +fetch_tizen_pkgs ${TIZEN_ARCH} gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
    +Inform "fetch coreclr packages"
    +fetch_tizen_pkgs ${TIZEN_ARCH} libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
    +if [ "$TIZEN_ARCH" != "riscv64" ]; then
    +    fetch_tizen_pkgs ${TIZEN_ARCH} lldb lldb-devel
    +fi
    +Inform "fetch corefx packages"
    +fetch_tizen_pkgs ${TIZEN_ARCH} libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
    +
    +Inform "Initialize standard unified"
    +fetch_tizen_pkgs_init standard $UNIFIED
    +Inform "fetch corefx packages"
    +fetch_tizen_pkgs ${TIZEN_ARCH} gssdp gssdp-devel tizen-release
    +
    diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
    index 6501c3a955..0ff85cf036 100644
    --- a/eng/common/cross/toolchain.cmake
    +++ b/eng/common/cross/toolchain.cmake
    @@ -1,23 +1,36 @@
     set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
     
    +# reset platform variables (e.g. cmake 3.25 sets LINUX=1)
    +unset(LINUX)
    +unset(FREEBSD)
    +unset(ILLUMOS)
    +unset(ANDROID)
    +unset(TIZEN)
    +unset(HAIKU)
    +
     set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH})
     if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version)
       set(CMAKE_SYSTEM_NAME FreeBSD)
    +  set(FREEBSD 1)
     elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc)
       set(CMAKE_SYSTEM_NAME SunOS)
       set(ILLUMOS 1)
    +elseif(EXISTS ${CROSS_ROOTFS}/boot/system/develop/headers/config/HaikuConfig.h)
    +  set(CMAKE_SYSTEM_NAME Haiku)
    +  set(HAIKU 1)
     else()
       set(CMAKE_SYSTEM_NAME Linux)
    +  set(LINUX 1)
     endif()
     set(CMAKE_SYSTEM_VERSION 1)
     
    -if(TARGET_ARCH_NAME STREQUAL "armel")
    -  set(CMAKE_SYSTEM_PROCESSOR armv7l)
    -  set(TOOLCHAIN "arm-linux-gnueabi")
    -  if("$ENV{__DistroRid}" MATCHES "tizen.*")
    -    set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0")
    -  endif()
    -elseif(TARGET_ARCH_NAME STREQUAL "arm")
    +if(EXISTS ${CROSS_ROOTFS}/etc/tizen-release)
    +  set(TIZEN 1)
    +elseif(EXISTS ${CROSS_ROOTFS}/android_platform)
    +  set(ANDROID 1)
    +endif()
    +
    +if(TARGET_ARCH_NAME STREQUAL "arm")
       set(CMAKE_SYSTEM_PROCESSOR armv7l)
       if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv7-alpine-linux-musleabihf)
         set(TOOLCHAIN "armv7-alpine-linux-musleabihf")
    @@ -26,30 +39,93 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm")
       else()
         set(TOOLCHAIN "arm-linux-gnueabihf")
       endif()
    +  if(TIZEN)
    +    set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf")
    +  endif()
     elseif(TARGET_ARCH_NAME STREQUAL "arm64")
       set(CMAKE_SYSTEM_PROCESSOR aarch64)
       if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl)
         set(TOOLCHAIN "aarch64-alpine-linux-musl")
    -  else()
    +  elseif(LINUX)
         set(TOOLCHAIN "aarch64-linux-gnu")
    +    if(TIZEN)
    +      set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu")
    +    endif()
    +  elseif(FREEBSD)
    +    set(triple "aarch64-unknown-freebsd12")
    +  endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "armel")
    +  set(CMAKE_SYSTEM_PROCESSOR armv7l)
    +  set(TOOLCHAIN "arm-linux-gnueabi")
    +  if(TIZEN)
    +    set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi")
    +  endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "armv6")
    +  set(CMAKE_SYSTEM_PROCESSOR armv6l)
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf)
    +    set(TOOLCHAIN "armv6-alpine-linux-musleabihf")
    +  else()
    +    set(TOOLCHAIN "arm-linux-gnueabihf")
    +  endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "loongarch64")
    +  set(CMAKE_SYSTEM_PROCESSOR "loongarch64")
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/loongarch64-alpine-linux-musl)
    +    set(TOOLCHAIN "loongarch64-alpine-linux-musl")
    +  else()
    +    set(TOOLCHAIN "loongarch64-linux-gnu")
       endif()
    -  if("$ENV{__DistroRid}" MATCHES "tizen.*")
    -    set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0")
    +elseif(TARGET_ARCH_NAME STREQUAL "ppc64le")
    +  set(CMAKE_SYSTEM_PROCESSOR ppc64le)
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/powerpc64le-alpine-linux-musl)
    +    set(TOOLCHAIN "powerpc64le-alpine-linux-musl")
    +  else()
    +    set(TOOLCHAIN "powerpc64le-linux-gnu")
    +  endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "riscv64")
    +  set(CMAKE_SYSTEM_PROCESSOR riscv64)
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/riscv64-alpine-linux-musl)
    +    set(TOOLCHAIN "riscv64-alpine-linux-musl")
    +  else()
    +    set(TOOLCHAIN "riscv64-linux-gnu")
    +    if(TIZEN)
    +      set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu")
    +    endif()
       endif()
     elseif(TARGET_ARCH_NAME STREQUAL "s390x")
       set(CMAKE_SYSTEM_PROCESSOR s390x)
    -  set(TOOLCHAIN "s390x-linux-gnu")
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/s390x-alpine-linux-musl)
    +    set(TOOLCHAIN "s390x-alpine-linux-musl")
    +  else()
    +    set(TOOLCHAIN "s390x-linux-gnu")
    +  endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "x64")
    +  set(CMAKE_SYSTEM_PROCESSOR x86_64)
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/x86_64-alpine-linux-musl)
    +    set(TOOLCHAIN "x86_64-alpine-linux-musl")
    +  elseif(LINUX)
    +    set(TOOLCHAIN "x86_64-linux-gnu")
    +    if(TIZEN)
    +      set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu")
    +    endif()
    +  elseif(FREEBSD)
    +    set(triple "x86_64-unknown-freebsd12")
    +  elseif(ILLUMOS)
    +    set(TOOLCHAIN "x86_64-illumos")
    +  elseif(HAIKU)
    +    set(TOOLCHAIN "x86_64-unknown-haiku")
    +  endif()
     elseif(TARGET_ARCH_NAME STREQUAL "x86")
       set(CMAKE_SYSTEM_PROCESSOR i686)
    -  set(TOOLCHAIN "i686-linux-gnu")
    -elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
    -  set(CMAKE_SYSTEM_PROCESSOR "x86_64")
    -  set(triple "x86_64-unknown-freebsd12")
    -elseif (ILLUMOS)
    -  set(CMAKE_SYSTEM_PROCESSOR "x86_64")
    -  set(TOOLCHAIN "x86_64-illumos")
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
    +    set(TOOLCHAIN "i586-alpine-linux-musl")
    +  else()
    +    set(TOOLCHAIN "i686-linux-gnu")
    +  endif()
    +  if(TIZEN)
    +    set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu")
    +  endif()
     else()
    -  message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, s390x and x86 are supported!")
    +  message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, loongarch64, ppc64le, riscv64, s390x, x64 and x86 are supported!")
     endif()
     
     if(DEFINED ENV{TOOLCHAIN})
    @@ -57,18 +133,48 @@ if(DEFINED ENV{TOOLCHAIN})
     endif()
     
     # Specify include paths
    -if(DEFINED TIZEN_TOOLCHAIN)
    -  if(TARGET_ARCH_NAME STREQUAL "armel")
    -    include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
    -    include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
    -  endif()
    -  if(TARGET_ARCH_NAME STREQUAL "arm64")
    -    include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
    -    include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/aarch64-tizen-linux-gnu)
    +if(TIZEN)
    +  function(find_toolchain_dir prefix)
    +    # Dynamically find the version subdirectory
    +    file(GLOB DIRECTORIES "${prefix}/*")
    +    list(GET DIRECTORIES 0 FIRST_MATCH)
    +    get_filename_component(TOOLCHAIN_VERSION ${FIRST_MATCH} NAME)
    +
    +    set(TIZEN_TOOLCHAIN_PATH "${prefix}/${TOOLCHAIN_VERSION}" PARENT_SCOPE)
    +  endfunction()
    +
    +  if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$")
    +    find_toolchain_dir("${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
    +  else()
    +    find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
       endif()
    +
    +  message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}")
    +
    +  include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++)
    +  include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN})
     endif()
     
    -if("$ENV{__DistroRid}" MATCHES "android.*")
    +function(locate_toolchain_exec exec var)
    +    set(TOOLSET_PREFIX ${TOOLCHAIN}-)
    +    string(TOUPPER ${exec} EXEC_UPPERCASE)
    +    if(NOT "$ENV{CLR_${EXEC_UPPERCASE}}" STREQUAL "")
    +        set(${var} "$ENV{CLR_${EXEC_UPPERCASE}}" PARENT_SCOPE)
    +        return()
    +    endif()
    +
    +    find_program(EXEC_LOCATION_${exec}
    +        NAMES
    +        "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}"
    +        "${TOOLSET_PREFIX}${exec}")
    +
    +    if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec}-NOTFOUND")
    +        message(FATAL_ERROR "Unable to find toolchain executable. Name: ${exec}, Prefix: ${TOOLSET_PREFIX}.")
    +    endif()
    +    set(${var} ${EXEC_LOCATION_${exec}} PARENT_SCOPE)
    +endfunction()
    +
    +if(ANDROID)
         if(TARGET_ARCH_NAME STREQUAL "arm")
             set(ANDROID_ABI armeabi-v7a)
         elseif(TARGET_ARCH_NAME STREQUAL "arm64")
    @@ -76,7 +182,9 @@ if("$ENV{__DistroRid}" MATCHES "android.*")
         endif()
     
         # extract platform number required by the NDK's toolchain
    -    string(REGEX REPLACE ".*\\.([0-9]+)-.*" "\\1" ANDROID_PLATFORM "$ENV{__DistroRid}")
    +    file(READ "${CROSS_ROOTFS}/android_platform" RID_FILE_CONTENTS)
    +    string(REPLACE "RID=" "" ANDROID_RID "${RID_FILE_CONTENTS}")
    +    string(REGEX REPLACE ".*\\.([0-9]+)-.*" "\\1" ANDROID_PLATFORM "${ANDROID_RID}")
     
         set(ANDROID_TOOLCHAIN clang)
         set(FEATURE_EVENT_TRACE 0) # disable event trace as there is no lttng-ust package in termux repository
    @@ -85,7 +193,7 @@ if("$ENV{__DistroRid}" MATCHES "android.*")
     
         # include official NDK toolchain script
         include(${CROSS_ROOTFS}/../build/cmake/android.toolchain.cmake)
    -elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
    +elseif(FREEBSD)
         # we cross-compile by instructing clang
         set(CMAKE_C_COMPILER_TARGET ${triple})
         set(CMAKE_CXX_COMPILER_TARGET ${triple})
    @@ -96,35 +204,26 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
         set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld")
     elseif(ILLUMOS)
         set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
    +    set(CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS}")
    +    set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp")
    +    set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp")
     
         include_directories(SYSTEM ${CROSS_ROOTFS}/include)
     
    -    set(TOOLSET_PREFIX ${TOOLCHAIN}-)
    -    function(locate_toolchain_exec exec var)
    -        string(TOUPPER ${exec} EXEC_UPPERCASE)
    -        if(NOT "$ENV{CLR_${EXEC_UPPERCASE}}" STREQUAL "")
    -            set(${var} "$ENV{CLR_${EXEC_UPPERCASE}}" PARENT_SCOPE)
    -            return()
    -        endif()
    -
    -        find_program(EXEC_LOCATION_${exec}
    -            NAMES
    -            "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}"
    -            "${TOOLSET_PREFIX}${exec}")
    -
    -        if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec}-NOTFOUND")
    -            message(FATAL_ERROR "Unable to find toolchain executable. Name: ${exec}, Prefix: ${TOOLSET_PREFIX}.")
    -        endif()
    -        set(${var} ${EXEC_LOCATION_${exec}} PARENT_SCOPE)
    -    endfunction()
    -
    +    locate_toolchain_exec(gcc CMAKE_C_COMPILER)
    +    locate_toolchain_exec(g++ CMAKE_CXX_COMPILER)
    +elseif(HAIKU)
    +    set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
    +    set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};${CROSS_ROOTFS}/cross-tools-x86_64/bin")
         set(CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS}")
    +    set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp")
    +    set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp")
     
         locate_toolchain_exec(gcc CMAKE_C_COMPILER)
         locate_toolchain_exec(g++ CMAKE_CXX_COMPILER)
     
    -    set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp")
    -    set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp")
    +    # let CMake set up the correct search paths
    +    include(Platform/Haiku)
     else()
         set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
     
    @@ -145,39 +244,54 @@ function(add_toolchain_linker_flag Flag)
       set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT} ${Flag}" PARENT_SCOPE)
     endfunction()
     
    -if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    +if(LINUX)
       add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
       add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/${TOOLCHAIN}")
     endif()
     
    -if(TARGET_ARCH_NAME STREQUAL "armel")
    -  if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only
    -    add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
    +if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
    +  if(TIZEN)
    +    add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
         add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
         add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
    -    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
    +    add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
       endif()
    -elseif(TARGET_ARCH_NAME STREQUAL "arm64")
    -  if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only
    -    add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
    +elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64|riscv64)$")
    +  if(TIZEN)
    +    add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
         add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64")
         add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64")
    -    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
    +    add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
     
         add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64")
         add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64")
    -    add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
    +    add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}")
       endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "s390x")
    +  add_toolchain_linker_flag("--target=${TOOLCHAIN}")
     elseif(TARGET_ARCH_NAME STREQUAL "x86")
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
    +    add_toolchain_linker_flag("--target=${TOOLCHAIN}")
    +    add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
    +  endif()
       add_toolchain_linker_flag(-m32)
    +  if(TIZEN)
    +    add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
    +    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
    +    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
    +    add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
    +  endif()
     elseif(ILLUMOS)
       add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64")
       add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/amd64/lib")
    +elseif(HAIKU)
    +  add_toolchain_linker_flag("-lnetwork")
    +  add_toolchain_linker_flag("-lroot")
     endif()
     
     # Specify compile options
     
    -if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x)$" AND NOT "$ENV{__DistroRid}" MATCHES "android.*") OR ILLUMOS)
    +if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
       set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
       set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
       set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
    @@ -196,16 +310,24 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
     
       add_definitions (-DCLR_ARM_FPU_CAPABILITY=${CLR_ARM_FPU_CAPABILITY})
     
    +  # persist variables across multiple try_compile passes
    +  list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CLR_ARM_FPU_TYPE CLR_ARM_FPU_CAPABILITY)
    +
       if(TARGET_ARCH_NAME STREQUAL "armel")
         add_compile_options(-mfloat-abi=softfp)
       endif()
    +elseif(TARGET_ARCH_NAME STREQUAL "s390x")
    +  add_compile_options("--target=${TOOLCHAIN}")
     elseif(TARGET_ARCH_NAME STREQUAL "x86")
    +  if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
    +    add_compile_options(--target=${TOOLCHAIN})
    +  endif()
       add_compile_options(-m32)
       add_compile_options(-Wno-error=unused-command-line-argument)
     endif()
     
    -if(DEFINED TIZEN_TOOLCHAIN)
    -  if(TARGET_ARCH_NAME MATCHES "^(armel|arm64)$")
    +if(TIZEN)
    +  if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|x86)$")
         add_compile_options(-Wno-deprecated-declarations) # compile-time option
         add_compile_options(-D__extern_always_inline=inline) # compile-time option
       endif()
    @@ -239,6 +361,26 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$")
       endif()
     endif()
     
    +# Set C++ standard library options if specified
    +set(CLR_CMAKE_CXX_STANDARD_LIBRARY "" CACHE STRING "Standard library flavor to link against. Only supported with the Clang compiler.")
    +if (CLR_CMAKE_CXX_STANDARD_LIBRARY)
    +  add_compile_options($<$:--stdlib=${CLR_CMAKE_CXX_STANDARD_LIBRARY}>)
    +  add_link_options($<$:--stdlib=${CLR_CMAKE_CXX_STANDARD_LIBRARY}>)
    +endif()
    +
    +option(CLR_CMAKE_CXX_STANDARD_LIBRARY_STATIC "Statically link against the C++ standard library" OFF)
    +if(CLR_CMAKE_CXX_STANDARD_LIBRARY_STATIC)
    +  add_link_options($<$:-static-libstdc++>)
    +endif()
    +
    +set(CLR_CMAKE_CXX_ABI_LIBRARY "" CACHE STRING "C++ ABI implementation library to link against. Only supported with the Clang compiler.")
    +if (CLR_CMAKE_CXX_ABI_LIBRARY)
    +  # The user may specify the ABI library with the 'lib' prefix, like 'libstdc++'. Strip the prefix here so the linker finds the right library.
    +  string(REGEX REPLACE "^lib(.+)" "\\1" CLR_CMAKE_CXX_ABI_LIBRARY ${CLR_CMAKE_CXX_ABI_LIBRARY})
    +  # We need to specify this as a linker-backend option as Clang will filter this option out when linking to libc++.
    +  add_link_options("LINKER:-l${CLR_CMAKE_CXX_ABI_LIBRARY}")
    +endif()
    +
     set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
     set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
     set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    diff --git a/eng/common/cross/x64/tizen/tizen.patch b/eng/common/cross/x64/tizen/tizen.patch
    new file mode 100644
    index 0000000000..56fbc88109
    --- /dev/null
    +++ b/eng/common/cross/x64/tizen/tizen.patch
    @@ -0,0 +1,9 @@
    +diff -u -r a/usr/lib64/libc.so b/usr/lib64/libc.so
    +--- a/usr/lib64/libc.so	2016-12-30 23:00:08.284951863 +0900
    ++++ b/usr/lib64/libc.so	2016-12-30 23:00:32.140951815 +0900
    +@@ -2,4 +2,4 @@
    +    Use the shared library, but some functions are only in
    +    the static library, so try that secondarily.  */
    + OUTPUT_FORMAT(elf64-x86-64)
    +-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
    ++GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux-x86-64.so.2 ) )
    diff --git a/eng/common/cross/x86/sources.list.bionic b/eng/common/cross/x86/sources.list.bionic
    deleted file mode 100644
    index a71ccadcff..0000000000
    --- a/eng/common/cross/x86/sources.list.bionic
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe
    -deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe
    -
    -deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
    -deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
    -
    -deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
    -deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
    -
    -deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
    -deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
    diff --git a/eng/common/cross/x86/sources.list.xenial b/eng/common/cross/x86/sources.list.xenial
    deleted file mode 100644
    index ad9c5a0144..0000000000
    --- a/eng/common/cross/x86/sources.list.xenial
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
    -deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
    -
    -deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
    -deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
    -
    -deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
    -deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
    -
    -deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
    -deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
    diff --git a/eng/common/cross/x86/tizen/tizen.patch b/eng/common/cross/x86/tizen/tizen.patch
    new file mode 100644
    index 0000000000..f4fe8838ad
    --- /dev/null
    +++ b/eng/common/cross/x86/tizen/tizen.patch
    @@ -0,0 +1,9 @@
    +diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
    +--- a/usr/lib/libc.so	2016-12-30 23:00:08.284951863 +0900
    ++++ b/usr/lib/libc.so	2016-12-30 23:00:32.140951815 +0900
    +@@ -2,4 +2,4 @@
    +    Use the shared library, but some functions are only in
    +    the static library, so try that secondarily.  */
    + OUTPUT_FORMAT(elf32-i386)
    +-GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux.so.2 ) )
    ++GROUP ( libc.so.6 libc_nonshared.a  AS_NEEDED ( ld-linux.so.2 ) )
    diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1
    index 435e764134..e337431056 100644
    --- a/eng/common/darc-init.ps1
    +++ b/eng/common/darc-init.ps1
    @@ -1,6 +1,6 @@
     param (
         $darcVersion = $null,
    -    $versionEndpoint = 'https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16',
    +    $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20',
         $verbosity = 'minimal',
         $toolpath = $null
     )
    diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh
    index 84c1d0cc2e..e889f439b8 100644
    --- a/eng/common/darc-init.sh
    +++ b/eng/common/darc-init.sh
    @@ -2,7 +2,7 @@
     
     source="${BASH_SOURCE[0]}"
     darcVersion=''
    -versionEndpoint='https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16'
    +versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20'
     verbosity='minimal'
     
     while [[ $# > 0 ]]; do
    @@ -68,7 +68,7 @@ function InstallDarcCli {
         fi
       fi
     
    -  local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json"
    +  local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json"
     
       echo "Installing Darc CLI version $darcVersion..."
       echo "You may need to restart your command shell if this is the first dotnet tool you have installed."
    diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh
    old mode 100644
    new mode 100755
    index fdfeea66e7..7b9d97e3bd
    --- a/eng/common/dotnet-install.sh
    +++ b/eng/common/dotnet-install.sh
    @@ -52,8 +52,15 @@ done
     # Use uname to determine what the CPU is, see https://en.wikipedia.org/wiki/Uname#Examples
     cpuname=$(uname -m)
     case $cpuname in
    -  aarch64)
    +  arm64|aarch64)
         buildarch=arm64
    +    if [ "$(getconf LONG_BIT)" -lt 64 ]; then
    +        # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS)
    +        buildarch=arm
    +    fi
    +    ;;
    +  loongarch64)
    +    buildarch=loongarch64
         ;;
       amd64|x86_64)
         buildarch=x64
    @@ -61,9 +68,12 @@ case $cpuname in
       armv*l)
         buildarch=arm
         ;;
    -  i686)
    +  i[3-6]86)
         buildarch=x86
         ;;
    +  riscv64)
    +    buildarch=riscv64
    +    ;;
       *)
         echo "Unknown CPU $cpuname detected, treating it as x64"
         buildarch=x64
    @@ -75,7 +85,7 @@ if [[ $architecture != "" ]] && [[ $architecture != $buildarch ]]; then
       dotnetRoot="$dotnetRoot/$architecture"
     fi
     
    -InstallDotNet $dotnetRoot $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || {
    +InstallDotNet "$dotnetRoot" $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || {
       local exit_code=$?
       Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
       ExitWithExitCode $exit_code
    diff --git a/eng/common/dotnet.cmd b/eng/common/dotnet.cmd
    new file mode 100644
    index 0000000000..527fa4bb38
    --- /dev/null
    +++ b/eng/common/dotnet.cmd
    @@ -0,0 +1,7 @@
    +@echo off
    +
    +:: This script is used to install the .NET SDK.
    +:: It will also invoke the SDK with any provided arguments.
    +
    +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet.ps1""" %*"
    +exit /b %ErrorLevel%
    diff --git a/eng/common/dotnet.ps1 b/eng/common/dotnet.ps1
    new file mode 100644
    index 0000000000..45e5676c9e
    --- /dev/null
    +++ b/eng/common/dotnet.ps1
    @@ -0,0 +1,11 @@
    +# This script is used to install the .NET SDK.
    +# It will also invoke the SDK with any provided arguments.
    +
    +. $PSScriptRoot\tools.ps1
    +$dotnetRoot = InitializeDotNetCli -install:$true
    +
    +# Invoke acquired SDK with args if they are provided
    +if ($args.count -gt 0) {
    +  $env:DOTNET_NOLOGO=1
    +  & "$dotnetRoot\dotnet.exe" $args
    +}
    diff --git a/eng/common/dotnet.sh b/eng/common/dotnet.sh
    new file mode 100644
    index 0000000000..2ef6823567
    --- /dev/null
    +++ b/eng/common/dotnet.sh
    @@ -0,0 +1,26 @@
    +#!/usr/bin/env bash
    +
    +# This script is used to install the .NET SDK.
    +# It will also invoke the SDK with any provided arguments.
    +
    +source="${BASH_SOURCE[0]}"
    +# resolve $SOURCE until the file is no longer a symlink
    +while [[ -h $source ]]; do
    +  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
    +  source="$(readlink "$source")"
    +
    +  # if $source was a relative symlink, we need to resolve it relative to the path where the
    +  # symlink file was located
    +  [[ $source != /* ]] && source="$scriptroot/$source"
    +done
    +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
    +
    +source $scriptroot/tools.sh
    +InitializeDotNetCli true # install
    +
    +# Invoke acquired SDK with args if they are provided
    +if [[ $# > 0 ]]; then
    +  __dotnetDir=${_InitializeDotNetCli}
    +  dotnetPath=${__dotnetDir}/dotnet
    +  ${dotnetPath} "$@"
    +fi
    diff --git a/eng/common/generate-graph-files.ps1 b/eng/common/generate-graph-files.ps1
    deleted file mode 100644
    index 0728b1a8b5..0000000000
    --- a/eng/common/generate-graph-files.ps1
    +++ /dev/null
    @@ -1,86 +0,0 @@
    -Param(
    -  [Parameter(Mandatory=$true)][string] $barToken,       # Token generated at https://maestro-prod.westus2.cloudapp.azure.com/Account/Tokens
    -  [Parameter(Mandatory=$true)][string] $gitHubPat,      # GitHub personal access token from https://github.com/settings/tokens (no auth scopes needed)
    -  [Parameter(Mandatory=$true)][string] $azdoPat,        # Azure Dev Ops tokens from https://dev.azure.com/dnceng/_details/security/tokens (code read scope needed)
    -  [Parameter(Mandatory=$true)][string] $outputFolder,   # Where the graphviz.txt file will be created
    -  [string] $darcVersion,                                # darc's version
    -  [string] $graphvizVersion = '2.38',                   # GraphViz version
    -  [switch] $includeToolset                              # Whether the graph should include toolset dependencies or not. i.e. arcade, optimization. For more about
    -                                                        # toolset dependencies see https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#toolset-vs-product-dependencies
    -)
    -
    -function CheckExitCode ([string]$stage)
    -{
    -  $exitCode = $LASTEXITCODE
    -  if ($exitCode  -ne 0) {
    -    Write-PipelineTelemetryError -Category 'Arcade' -Message "Something failed in stage: '$stage'. Check for errors above. Exiting now..."
    -    ExitWithExitCode $exitCode
    -  }
    -}
    -
    -try {
    -  $ErrorActionPreference = 'Stop'
    -  . $PSScriptRoot\tools.ps1
    -  
    -  Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1')
    -
    -  Push-Location $PSScriptRoot
    -
    -  Write-Host 'Installing darc...'
    -  . .\darc-init.ps1 -darcVersion $darcVersion
    -  CheckExitCode 'Running darc-init'
    -
    -  $engCommonBaseDir = Join-Path $PSScriptRoot 'native\'
    -  $graphvizInstallDir = CommonLibrary\Get-NativeInstallDirectory
    -  $nativeToolBaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external'
    -  $installBin = Join-Path $graphvizInstallDir 'bin'
    -
    -  Write-Host 'Installing dot...'
    -  .\native\install-tool.ps1 -ToolName graphviz -InstallPath $installBin -BaseUri $nativeToolBaseUri -CommonLibraryDirectory $engCommonBaseDir -Version $graphvizVersion -Verbose
    -
    -  $darcExe = "$env:USERPROFILE\.dotnet\tools"
    -  $darcExe = Resolve-Path "$darcExe\darc.exe"
    -
    -  Create-Directory $outputFolder
    -
    -  # Generate 3 graph descriptions:
    -  # 1. Flat with coherency information
    -  # 2. Graphviz (dot) file
    -  # 3. Standard dependency graph
    -  $graphVizFilePath = "$outputFolder\graphviz.txt"
    -  $graphVizImageFilePath = "$outputFolder\graph.png"
    -  $normalGraphFilePath = "$outputFolder\graph-full.txt"
    -  $flatGraphFilePath = "$outputFolder\graph-flat.txt"
    -  $baseOptions = @( '--github-pat', "$gitHubPat", '--azdev-pat', "$azdoPat", '--password', "$barToken" )
    -
    -  if ($includeToolset) {
    -    Write-Host 'Toolsets will be included in the graph...'
    -    $baseOptions += @( '--include-toolset' )
    -  }
    -
    -  Write-Host 'Generating standard dependency graph...'
    -  & "$darcExe" get-dependency-graph @baseOptions --output-file $normalGraphFilePath
    -  CheckExitCode 'Generating normal dependency graph'
    -
    -  Write-Host 'Generating flat dependency graph and graphviz file...'
    -  & "$darcExe" get-dependency-graph @baseOptions --flat --coherency --graphviz $graphVizFilePath --output-file $flatGraphFilePath
    -  CheckExitCode 'Generating flat and graphviz dependency graph'
    -
    -  Write-Host "Generating graph image $graphVizFilePath"
    -  $dotFilePath = Join-Path $installBin "graphviz\$graphvizVersion\release\bin\dot.exe"
    -  & "$dotFilePath" -Tpng -o"$graphVizImageFilePath" "$graphVizFilePath"
    -  CheckExitCode 'Generating graphviz image'
    -
    -  Write-Host "'$graphVizFilePath', '$flatGraphFilePath', '$normalGraphFilePath' and '$graphVizImageFilePath' created!"
    -}
    -catch {
    -  if (!$includeToolset) {
    -    Write-Host 'This might be a toolset repo which includes only toolset dependencies. ' -NoNewline -ForegroundColor Yellow
    -    Write-Host 'Since -includeToolset is not set there is no graph to create. Include -includeToolset and try again...' -ForegroundColor Yellow
    -  }
    -  Write-Host $_.ScriptStackTrace
    -  Write-PipelineTelemetryError -Category 'Arcade' -Message $_
    -  ExitWithExitCode 1
    -} finally {
    -  Pop-Location
    -}
    \ No newline at end of file
    diff --git a/eng/common/generate-locproject.ps1 b/eng/common/generate-locproject.ps1
    index 25e97ac007..524aaa57f2 100644
    --- a/eng/common/generate-locproject.ps1
    +++ b/eng/common/generate-locproject.ps1
    @@ -10,9 +10,7 @@ Param(
     
     Set-StrictMode -Version 2.0
     $ErrorActionPreference = "Stop"
    -. $PSScriptRoot\tools.ps1
    -
    -Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1')
    +. $PSScriptRoot\pipeline-logging-functions.ps1
     
     $exclusionsFilePath = "$SourcesDirectory\eng\Localize\LocExclusions.json"
     $exclusions = @{ Exclusions = @() }
    @@ -28,13 +26,34 @@ $jsonFiles = @()
     $jsonTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\.template\.config\\localize\\.+\.en\.json" } # .NET templating pattern
     $jsonTemplateFiles | ForEach-Object {
         $null = $_.Name -Match "(.+)\.[\w-]+\.json" # matches '[filename].[langcode].json
    -    
    +
         $destinationFile = "$($_.Directory.FullName)\$($Matches.1).json"
         $jsonFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
     }
     
     $jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern
     
    +$wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them
    +if (-not $wxlFiles) {
    +    $wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } #  pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files
    +    if ($wxlEnFiles) {
    +      $wxlFiles = @()
    +      $wxlEnFiles | ForEach-Object {
    +        $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
    +        $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
    +      }
    +    }
    +}
    +
    +$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html$" } # add installer HTML files
    +$macosHtmlFiles = @()
    +if ($macosHtmlEnFiles) {
    +    $macosHtmlEnFiles | ForEach-Object {
    +        $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
    +        $macosHtmlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
    +    }
    +}
    +
     $xlfFiles = @()
     
     $allXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.xlf"
    @@ -46,7 +65,7 @@ if ($allXlfFiles) {
     }
     $langXlfFiles | ForEach-Object {
         $null = $_.Name -Match "(.+)\.[\w-]+\.xlf" # matches '[filename].[langcode].xlf
    -    
    +
         $destinationFile = "$($_.Directory.FullName)\$($Matches.1).xlf"
         $xlfFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
     }
    @@ -59,10 +78,10 @@ $locJson = @{
                 LanguageSet = $LanguageSet
                 LocItems = @(
                     $locFiles | ForEach-Object {
    -                    $outputPath = "$(($_.DirectoryName | Resolve-Path -Relative) + "\")" 
    +                    $outputPath = "$(($_.DirectoryName | Resolve-Path -Relative) + "\")"
                         $continue = $true
                         foreach ($exclusion in $exclusions.Exclusions) {
    -                        if ($outputPath.Contains($exclusion))
    +                        if ($_.FullName.Contains($exclusion))
                             {
                                 $continue = $false
                             }
    @@ -79,8 +98,7 @@ $locJson = @{
                                     CopyOption = "LangIDOnPath"
                                     OutputPath = "$($_.Directory.Parent.FullName | Resolve-Path -Relative)\"
                                 }
    -                        }
    -                        else {
    +                        } else {
                                 return @{
                                     SourceFile = $sourceFile
                                     CopyOption = "LangIDOnName"
    @@ -90,6 +108,60 @@ $locJson = @{
                         }
                     }
                 )
    +        },
    +        @{
    +            LanguageSet = $LanguageSet
    +            CloneLanguageSet = "WiX_CloneLanguages"
    +            LssFiles = @( "wxl_loc.lss" )
    +            LocItems = @(
    +                $wxlFiles | ForEach-Object {
    +                    $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
    +                    $continue = $true
    +                    foreach ($exclusion in $exclusions.Exclusions) {
    +                        if ($_.FullName.Contains($exclusion)) {
    +                            $continue = $false
    +                        }
    +                    }
    +                    $sourceFile = ($_.FullName | Resolve-Path -Relative)
    +                    if ($continue)
    +                    {
    +                        return @{
    +                            SourceFile = $sourceFile
    +                            CopyOption = "LangIDOnPath"
    +                            OutputPath = $outputPath
    +                        }
    +                    }
    +                }
    +            )
    +        },
    +        @{
    +            LanguageSet = $LanguageSet
    +            CloneLanguageSet = "VS_macOS_CloneLanguages"
    +            LssFiles = @( ".\eng\common\loc\P22DotNetHtmlLocalization.lss" )
    +            LocItems = @(
    +                $macosHtmlFiles | ForEach-Object {
    +                    $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
    +                    $continue = $true
    +                    foreach ($exclusion in $exclusions.Exclusions) {
    +                        if ($_.FullName.Contains($exclusion)) {
    +                            $continue = $false
    +                        }
    +                    }
    +                    $sourceFile = ($_.FullName | Resolve-Path -Relative)
    +                    $lciFile = $sourceFile + ".lci"
    +                    if ($continue) {
    +                        $result = @{
    +                            SourceFile = $sourceFile
    +                            CopyOption = "LangIDOnPath"
    +                            OutputPath = $outputPath
    +                        }
    +                        if (Test-Path $lciFile -PathType Leaf) {
    +                            $result["LciFile"] = $lciFile
    +                        }
    +                        return $result
    +                    }
    +                }
    +            )
             }
         )
     }
    @@ -108,10 +180,10 @@ else {
     
         if ((Get-FileHash "$SourcesDirectory\eng\Localize\LocProject-generated.json").Hash -ne (Get-FileHash "$SourcesDirectory\eng\Localize\LocProject.json").Hash) {
             Write-PipelineTelemetryError -Category "OneLocBuild" -Message "Existing LocProject.json differs from generated LocProject.json. Download LocProject-generated.json and compare them."
    -        
    +
             exit 1
         }
         else {
             Write-Host "Generated LocProject.json and current LocProject.json are identical."
         }
    -}
    \ No newline at end of file
    +}
    diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1
    new file mode 100644
    index 0000000000..a0c7d792a7
    --- /dev/null
    +++ b/eng/common/generate-sbom-prep.ps1
    @@ -0,0 +1,29 @@
    +Param(
    +    [Parameter(Mandatory=$true)][string] $ManifestDirPath    # Manifest directory where sbom will be placed
    +)
    +
    +. $PSScriptRoot\pipeline-logging-functions.ps1
    +
    +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
    +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
    +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM"
    +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_'
    +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName
    +
    +Write-Host "Artifact name before : $ArtifactName"
    +Write-Host "Artifact name after : $SafeArtifactName"
    +
    +Write-Host "Creating dir $ManifestDirPath"
    +
    +# create directory for sbom manifest to be placed
    +if (!(Test-Path -path $SbomGenerationDir))
    +{
    +  New-Item -ItemType Directory -path $SbomGenerationDir
    +  Write-Host "Successfully created directory $SbomGenerationDir"
    +}
    +else{
    +  Write-PipelineTelemetryError -category 'Build'  "Unable to create sbom folder."
    +}
    +
    +Write-Host "Updating artifact name"
    +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName"
    diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh
    new file mode 100644
    index 0000000000..b8ecca72bb
    --- /dev/null
    +++ b/eng/common/generate-sbom-prep.sh
    @@ -0,0 +1,39 @@
    +#!/usr/bin/env bash
    +
    +source="${BASH_SOURCE[0]}"
    +
    +# resolve $SOURCE until the file is no longer a symlink
    +while [[ -h $source ]]; do
    +  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
    +  source="$(readlink "$source")"
    +
    +  # if $source was a relative symlink, we need to resolve it relative to the path where the
    +  # symlink file was located
    +  [[ $source != /* ]] && source="$scriptroot/$source"
    +done
    +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
    +. $scriptroot/pipeline-logging-functions.sh
    +
    +
    +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts.
    +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM"
    +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}"
    +manifest_dir=$1
    +
    +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
    +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
    +sbom_generation_dir="$manifest_dir/$safe_artifact_name"
    +
    +if [ ! -d "$sbom_generation_dir" ] ; then
    +  mkdir -p "$sbom_generation_dir"
    +  echo "Sbom directory created." $sbom_generation_dir
    +else
    +  Write-PipelineTelemetryError -category 'Build'  "Unable to create sbom folder."
    +fi
    +
    +echo "Artifact name before : "$artifact_name
    +echo "Artifact name after : "$safe_artifact_name
    +export ARTIFACT_NAME=$safe_artifact_name
    +echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name"
    +
    +exit 0
    diff --git a/eng/common/helixpublish.proj b/eng/common/helixpublish.proj
    index d7f185856e..c1323bf412 100644
    --- a/eng/common/helixpublish.proj
    +++ b/eng/common/helixpublish.proj
    @@ -1,3 +1,4 @@
    +
     
     
       
    diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1
    index db830c00a6..27ccdb9ecc 100644
    --- a/eng/common/init-tools-native.ps1
    +++ b/eng/common/init-tools-native.ps1
    @@ -31,6 +31,10 @@ Wait time between retry attempts in seconds
     .PARAMETER GlobalJsonFile
     File path to global.json file
     
    +.PARAMETER PathPromotion
    +Optional switch to enable either promote native tools specified in the global.json to the path (in Azure Pipelines)
    +or break the build if a native tool is not found on the path (on a local dev machine)
    +
     .NOTES
     #>
     [CmdletBinding(PositionalBinding=$false)]
    @@ -41,7 +45,8 @@ Param (
       [switch] $Force = $False,
       [int] $DownloadRetries = 5,
       [int] $RetryWaitTimeInSeconds = 30,
    -  [string] $GlobalJsonFile
    +  [string] $GlobalJsonFile,
    +  [switch] $PathPromotion
     )
     
     if (!$GlobalJsonFile) {
    @@ -77,53 +82,99 @@ try {
                         ConvertFrom-Json |
                         Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue
       if ($NativeTools) {
    -    $NativeTools.PSObject.Properties | ForEach-Object {
    -      $ToolName = $_.Name
    -      $ToolVersion = $_.Value
    -      $LocalInstallerArguments =  @{ ToolName = "$ToolName" }
    -      $LocalInstallerArguments += @{ InstallPath = "$InstallBin" }
    -      $LocalInstallerArguments += @{ BaseUri = "$BaseUri" }
    -      $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" }
    -      $LocalInstallerArguments += @{ Version = "$ToolVersion" }
    -
    -      if ($Verbose) {
    -        $LocalInstallerArguments += @{ Verbose = $True }
    -      }
    -      if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') {
    -        if($Force) {
    -          $LocalInstallerArguments += @{ Force = $True }
    -        }
    -      }
    -      if ($Clean) {
    -        $LocalInstallerArguments += @{ Clean = $True }
    -      }
    -
    -      Write-Verbose "Installing $ToolName version $ToolVersion"
    -      Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'"
    -      & $InstallerPath @LocalInstallerArguments
    -      if ($LASTEXITCODE -Ne "0") {
    -        $errMsg = "$ToolName installation failed"
    -        if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) {
    -            $showNativeToolsWarning = $true
    -            if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) {
    -                $showNativeToolsWarning = $false
    +    if ($PathPromotion -eq $True) {
    +      $ArcadeToolsDirectory = "$env:SYSTEMDRIVE\arcade-tools"
    +      if (Test-Path $ArcadeToolsDirectory) { # if this directory exists, we should use native tools on machine
    +        $NativeTools.PSObject.Properties | ForEach-Object {
    +          $ToolName = $_.Name
    +          $ToolVersion = $_.Value
    +          $InstalledTools = @{}
    +
    +          if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) {
    +            if ($ToolVersion -eq "latest") {
    +              $ToolVersion = ""
    +            }
    +            $ToolDirectories = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending)
    +            if ($ToolDirectories -eq $null) {
    +              Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image."
    +              exit 1
                 }
    -            if ($showNativeToolsWarning) {
    -                Write-Warning $errMsg
    +            $ToolDirectory = $ToolDirectories[0]
    +            $BinPathFile = "$($ToolDirectory.FullName)\binpath.txt"
    +            if (-not (Test-Path -Path "$BinPathFile")) {
    +              Write-Error "Unable to find binpath.txt in '$($ToolDirectory.FullName)' ($ToolName $ToolVersion); artifact is either installed incorrectly or is not a bootstrappable tool."
    +              exit 1
                 }
    -            $toolInstallationFailure = $true
    -        } else {
    -            # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
    -            Write-Host $errMsg
    -            exit 1
    +            $BinPath = Get-Content "$BinPathFile"
    +            $ToolPath = Convert-Path -Path $BinPath
    +            Write-Host "Adding $ToolName to the path ($ToolPath)..."
    +            Write-Host "##vso[task.prependpath]$ToolPath"
    +            $env:PATH = "$ToolPath;$env:PATH"
    +            $InstalledTools += @{ $ToolName = $ToolDirectory.FullName }
    +          }
             }
    +        return $InstalledTools
    +      } else {
    +        $NativeTools.PSObject.Properties | ForEach-Object {
    +          $ToolName = $_.Name
    +          $ToolVersion = $_.Value
    +
    +          if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) {
    +            Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding."
    +            Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "If this is running on a build machine, the arcade-tools directory was not found, which means there's an error with the image."
    +          }
    +        }
    +        exit 0
    +      }
    +    } else {
    +      $NativeTools.PSObject.Properties | ForEach-Object {
    +        $ToolName = $_.Name
    +        $ToolVersion = $_.Value
    +        $LocalInstallerArguments =  @{ ToolName = "$ToolName" }
    +        $LocalInstallerArguments += @{ InstallPath = "$InstallBin" }
    +        $LocalInstallerArguments += @{ BaseUri = "$BaseUri" }
    +        $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" }
    +        $LocalInstallerArguments += @{ Version = "$ToolVersion" }
    +  
    +        if ($Verbose) {
    +          $LocalInstallerArguments += @{ Verbose = $True }
    +        }
    +        if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') {
    +          if($Force) {
    +            $LocalInstallerArguments += @{ Force = $True }
    +          }
    +        }
    +        if ($Clean) {
    +          $LocalInstallerArguments += @{ Clean = $True }
    +        }
    +  
    +        Write-Verbose "Installing $ToolName version $ToolVersion"
    +        Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'"
    +        & $InstallerPath @LocalInstallerArguments
    +        if ($LASTEXITCODE -Ne "0") {
    +          $errMsg = "$ToolName installation failed"
    +          if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) {
    +              $showNativeToolsWarning = $true
    +              if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) {
    +                  $showNativeToolsWarning = $false
    +              }
    +              if ($showNativeToolsWarning) {
    +                  Write-Warning $errMsg
    +              }
    +              $toolInstallationFailure = $true
    +          } else {
    +              # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
    +              Write-Host $errMsg
    +              exit 1
    +          }
    +        }
    +      }
    +  
    +      if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) {
    +          # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
    +          Write-Host 'Native tools bootstrap failed'
    +          exit 1
           }
    -    }
    -
    -    if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) {
    -        # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
    -        Write-Host 'Native tools bootstrap failed'
    -        exit 1
         }
       }
       else {
    @@ -139,7 +190,7 @@ try {
         Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)"
         return $InstallBin
       }
    -  else {
    +  elseif (-not ($PathPromotion)) {
         Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message 'Native tools install directory does not exist, installation failed'
         exit 1
       }
    diff --git a/eng/common/internal/Directory.Build.props b/eng/common/internal/Directory.Build.props
    index dbf99d82a5..f1d041c33d 100644
    --- a/eng/common/internal/Directory.Build.props
    +++ b/eng/common/internal/Directory.Build.props
    @@ -1,4 +1,11 @@
     
     
    +
    +  
    +    false
    +    false
    +  
    +
       
    +
     
    diff --git a/eng/common/internal/NuGet.config b/eng/common/internal/NuGet.config
    new file mode 100644
    index 0000000000..f70261ed68
    --- /dev/null
    +++ b/eng/common/internal/NuGet.config
    @@ -0,0 +1,10 @@
    +
    +
    +  
    +    
    +    
    +  
    +  
    +    
    +  
    +
    diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj
    index beb9c4648e..feaa6d2081 100644
    --- a/eng/common/internal/Tools.csproj
    +++ b/eng/common/internal/Tools.csproj
    @@ -1,27 +1,22 @@
     
     
    +
       
         net472
    -    false
         false
    +    false
       
       
         
         
    +    
    +    
    +    
         
         
       
    -  
    -    
    -    
    -      https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json;
    -    
    -    
    -      $(RestoreSources);
    -      https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json;
    -    
    -  
     
       
       
    +
     
    diff --git a/eng/common/loc/P22DotNetHtmlLocalization.lss b/eng/common/loc/P22DotNetHtmlLocalization.lss
    new file mode 100644
    index 0000000000..5d892d6193
    --- /dev/null
    +++ b/eng/common/loc/P22DotNetHtmlLocalization.lss
    @@ -0,0 +1,29 @@
    +
    +
    +  
    +    
    +  
    +  
    +    
    +      
    +      
    +    
    +    
    +      
    +      
    +    
    +    
    +      
    +      
    +        
    +          
    +          
    +        
    +      
    +    
    +  
    +
    \ No newline at end of file
    diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1
    index adf707c8fe..f71f6af6cd 100644
    --- a/eng/common/native/CommonLibrary.psm1
    +++ b/eng/common/native/CommonLibrary.psm1
    @@ -276,7 +276,9 @@ function Get-MachineArchitecture {
       }
       if (($ProcessorArchitecture -Eq "AMD64") -Or
           ($ProcessorArchitecture -Eq "IA64") -Or
    -      ($ProcessorArchitecture -Eq "ARM64")) {
    +      ($ProcessorArchitecture -Eq "ARM64") -Or
    +      ($ProcessorArchitecture -Eq "LOONGARCH64") -Or
    +      ($ProcessorArchitecture -Eq "RISCV64")) {
         return "x64"
       }
       return "x86"
    diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh
    index e361e03fab..9a0e1f2b45 100644
    --- a/eng/common/native/init-compiler.sh
    +++ b/eng/common/native/init-compiler.sh
    @@ -1,124 +1,146 @@
    -#!/usr/bin/env bash
    +#!/bin/sh
     #
     # This file detects the C/C++ compiler and exports it to the CC/CXX environment variables
     #
    -# NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here! 
    +# NOTE: some scripts source this file and rely on stdout being empty, make sure
    +# to not output *anything* here, unless it is an error message that fails the
    +# build.
     
    -if [[ "$#" -lt 3 ]]; then
    +if [ -z "$build_arch" ] || [ -z "$compiler" ]; then
       echo "Usage..."
    -  echo "init-compiler.sh 
    -      
    -
    \ No newline at end of file
    +
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs
    new file mode 100644
    index 0000000000..a5df1f4fcb
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs
    @@ -0,0 +1,522 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System.Collections.Generic;
    +using System.Diagnostics;
    +using System.Diagnostics.CodeAnalysis;
    +using System.IO;
    +using System.Linq;
    +using System.Text.RegularExpressions;
    +using System.Threading;
    +using System.Threading.Tasks;
    +
    +using Castle.Core.Internal;
    +
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +[TestClass]
    +//Code coverage only supported on windows (based on the message in output)
    +[TestCategory("Windows-Review")]
    +public class CodeCoverageTests : CodeCoverageAcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private RunEventHandler? _runEventHandler;
    +    private TelemetryEventsHandler? _telemetryEventsHandler;
    +    private TestRunAttachmentsProcessingEventHandler? _testRunAttachmentsProcessingEventHandler;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_testRunAttachmentsProcessingEventHandler), nameof(_runEventHandler), nameof(_telemetryEventsHandler))]
    +    private void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _runEventHandler = new RunEventHandler();
    +        _testRunAttachmentsProcessingEventHandler = new TestRunAttachmentsProcessingEventHandler();
    +        _telemetryEventsHandler = new TelemetryEventsHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void TestRunWithCodeCoverage(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        // act
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies(), GetCodeCoverageRunSettings(1),
    +            new TestPlatformOptions { CollectMetrics = true }, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        // assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +
    +        int expectedNumberOfAttachments = 1;
    +        Assert.AreEqual(expectedNumberOfAttachments, _runEventHandler.Attachments.Count);
    +        Assert.IsTrue(_telemetryEventsHandler.Events.Any(e => e.Name.StartsWith("vs/codecoverage") && e.Properties.Any()));
    +
    +        AssertCoverageResults(_runEventHandler.Attachments);
    +
    +        Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", _runEventHandler.Metrics!["VS.TestPlatform.DataCollector.CorProfiler.datacollector://microsoft/CodeCoverage/2.0"]);
    +        Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", _runEventHandler.Metrics["VS.TestPlatform.DataCollector.CoreClrProfiler.datacollector://microsoft/CodeCoverage/2.0"]);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void TestRunWithCodeCoverageUsingClrIe(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        // act
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies(), GetCodeCoverageRunSettings(1, true),
    +            new TestPlatformOptions { CollectMetrics = true }, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        // assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.IsTrue(_telemetryEventsHandler.Events.Any(e => e.Name.StartsWith("vs/codecoverage") && e.Properties.Any()));
    +
    +        int expectedNumberOfAttachments = 1;
    +        Assert.AreEqual(expectedNumberOfAttachments, _runEventHandler.Attachments.Count);
    +
    +        AssertCoverageResults(_runEventHandler.Attachments);
    +
    +        Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", _runEventHandler.Metrics!["VS.TestPlatform.DataCollector.CorProfiler.datacollector://microsoft/CodeCoverage/2.0"]);
    +        Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", _runEventHandler.Metrics["VS.TestPlatform.DataCollector.CoreClrProfiler.datacollector://microsoft/CodeCoverage/2.0"]);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void TestRunWithCodeCoverageParallel(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        // act
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies(), GetCodeCoverageRunSettings(4),
    +            new TestPlatformOptions { CollectMetrics = true }, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        // assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(1, _runEventHandler.Attachments.Count);
    +        Assert.IsTrue(_telemetryEventsHandler.Events.Any(e => e.Name.StartsWith("vs/codecoverage") && e.Properties.Any()));
    +
    +        AssertCoverageResults(_runEventHandler.Attachments);
    +
    +        Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", _runEventHandler.Metrics!["VS.TestPlatform.DataCollector.CorProfiler.datacollector://microsoft/CodeCoverage/2.0"]);
    +        Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", _runEventHandler.Metrics["VS.TestPlatform.DataCollector.CoreClrProfiler.datacollector://microsoft/CodeCoverage/2.0"]);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task TestRunWithCodeCoverageAndAttachmentsProcessingWithInvokedDataCollectors(RunnerInfo runnerInfo)
    +        => await TestRunWithCodeCoverageAndAttachmentsProcessingInternal(runnerInfo, true);
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task TestRunWithCodeCoverageAndAttachmentsProcessingWithoutInvokedDataCollectors(RunnerInfo runnerInfo)
    +        => await TestRunWithCodeCoverageAndAttachmentsProcessingInternal(runnerInfo, false);
    +
    +    private async Task TestRunWithCodeCoverageAndAttachmentsProcessingInternal(RunnerInfo runnerInfo, bool withInvokedDataCollectors)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.Attachments.Count);
    +        Assert.AreEqual(2, _runEventHandler.InvokedDataCollectors.Count);
    +        Assert.IsFalse(_telemetryEventsHandler.Events.Any());
    +
    +        // act
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(
    +            _runEventHandler.Attachments,
    +            withInvokedDataCollectors ? _runEventHandler.InvokedDataCollectors : null,
    +            withInvokedDataCollectors ? GetCodeCoverageRunSettings(1) : null,
    +            true,
    +            true,
    +            _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // Assert
    +        _testRunAttachmentsProcessingEventHandler.EnsureSuccess();
    +        Assert.AreEqual(1, _testRunAttachmentsProcessingEventHandler.Attachments.Count);
    +
    +        AssertCoverageResults(_testRunAttachmentsProcessingEventHandler.Attachments);
    +
    +        Assert.IsFalse(_testRunAttachmentsProcessingEventHandler.CompleteArgs!.IsCanceled);
    +        Assert.IsNull(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Error);
    +
    +        for (int i = 0; i < _testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++)
    +        {
    +            TestRunAttachmentsProcessingProgressEventArgs progressArgs = _testRunAttachmentsProcessingEventHandler.ProgressArgs[i];
    +            Assert.AreEqual(i + 1, progressArgs.CurrentAttachmentProcessorIndex);
    +            Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorUris.Count);
    +            Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri);
    +            Assert.AreEqual(withInvokedDataCollectors ? 2 : 1, progressArgs.AttachmentProcessorsCount);
    +            if (_testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2)
    +            {
    +                Assert.AreEqual(100, progressArgs.CurrentAttachmentProcessorProgress);
    +            }
    +        }
    +
    +        Assert.AreEqual("Completed", _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics![TelemetryDataConstants.AttachmentsProcessingState]);
    +        Assert.AreEqual(2L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]);
    +        Assert.AreEqual(1L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]);
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing));
    +
    +        Assert.IsTrue(File.Exists(_runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath));
    +        Assert.IsFalse(File.Exists(_runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task TestRunWithCodeCoverageAndAttachmentsProcessingNoMetrics(RunnerInfo runnerInfo)
    +    {
    +        // System.Environment.SetEnvironmentVariable("VSTEST_RUNNER_DEBUG_ATTACHVS", "1");
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.Attachments.Count);
    +        Assert.AreEqual(2, _runEventHandler.InvokedDataCollectors.Count);
    +        Assert.IsFalse(_telemetryEventsHandler.Events.Any());
    +
    +        // act
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(_runEventHandler.Attachments, _runEventHandler.InvokedDataCollectors, GetCodeCoverageRunSettings(1), true, false, _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // Assert
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.FilePath).Distinct().Count());
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Count());
    +        Assert.IsTrue(Regex.IsMatch(_runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Single(),
    +            @"Microsoft\.VisualStudio\.Coverage\.DynamicCoverageDataCollectorWithAttachmentProcessorAndTelemetry, Microsoft\.VisualStudio\.TraceDataCollector, Version=.*, Culture=neutral, PublicKeyToken=.*"));
    +
    +        _testRunAttachmentsProcessingEventHandler.EnsureSuccess();
    +        Assert.AreEqual(1, _testRunAttachmentsProcessingEventHandler.Attachments.Count);
    +
    +        AssertCoverageResults(_testRunAttachmentsProcessingEventHandler.Attachments);
    +
    +        Assert.IsFalse(_testRunAttachmentsProcessingEventHandler.CompleteArgs!.IsCanceled);
    +        Assert.IsNull(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Error);
    +
    +        for (int i = 0; i < _testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++)
    +        {
    +            TestRunAttachmentsProcessingProgressEventArgs progressArgs = _testRunAttachmentsProcessingEventHandler.ProgressArgs[i];
    +            Assert.AreEqual(i + 1, progressArgs.CurrentAttachmentProcessorIndex);
    +            Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorUris.Count);
    +            Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri);
    +            Assert.AreEqual(2, progressArgs.AttachmentProcessorsCount);
    +            if (_testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2)
    +            {
    +                Assert.AreEqual(100, progressArgs.CurrentAttachmentProcessorProgress);
    +            }
    +        }
    +
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.IsNullOrEmpty());
    +
    +        Assert.IsTrue(File.Exists(_runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath));
    +        Assert.IsFalse(File.Exists(_runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task TestRunWithCodeCoverageAndAttachmentsProcessingModuleDuplicated(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        Assert.AreEqual(9, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(3, _runEventHandler.Attachments.Count);
    +        Assert.AreEqual(3, _runEventHandler.InvokedDataCollectors.Count);
    +        Assert.IsFalse(_telemetryEventsHandler.Events.Any());
    +
    +        // act
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(_runEventHandler.Attachments, _runEventHandler.InvokedDataCollectors, GetCodeCoverageRunSettings(1), true, true, _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // Assert
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.FilePath).Distinct().Count());
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Count());
    +        Assert.IsTrue(Regex.IsMatch(_runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Single(),
    +            @"Microsoft\.VisualStudio\.Coverage\.DynamicCoverageDataCollectorWithAttachmentProcessorAndTelemetry, Microsoft\.VisualStudio\.TraceDataCollector, Version=.*, Culture=neutral, PublicKeyToken=.*"));
    +
    +        _testRunAttachmentsProcessingEventHandler.EnsureSuccess();
    +        Assert.AreEqual(1, _testRunAttachmentsProcessingEventHandler.Attachments.Count);
    +
    +        AssertCoverageResults(_testRunAttachmentsProcessingEventHandler.Attachments);
    +
    +        Assert.IsFalse(_testRunAttachmentsProcessingEventHandler.CompleteArgs!.IsCanceled);
    +        Assert.IsNull(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Error);
    +
    +        for (int i = 0; i < _testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++)
    +        {
    +            TestRunAttachmentsProcessingProgressEventArgs progressArgs = _testRunAttachmentsProcessingEventHandler.ProgressArgs[i];
    +            Assert.AreEqual(i + 1, progressArgs.CurrentAttachmentProcessorIndex);
    +            Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri);
    +            Assert.AreEqual(2, progressArgs.AttachmentProcessorsCount);
    +
    +            if (_testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2)
    +            {
    +                Assert.AreEqual(100, progressArgs.CurrentAttachmentProcessorProgress);
    +            }
    +        }
    +
    +        Assert.AreEqual("Completed", _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics![TelemetryDataConstants.AttachmentsProcessingState]);
    +        Assert.AreEqual(3L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]);
    +        Assert.AreEqual(1L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]);
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing));
    +
    +        Assert.IsTrue(File.Exists(_runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath));
    +        Assert.IsFalse(File.Exists(_runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task TestRunWithCodeCoverageAndAttachmentsProcessingSameReportFormat(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1, outputFormat: "Coverage"),
    +            null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1, outputFormat: "Coverage"),
    +            null, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.Attachments.Count);
    +        Assert.AreEqual(2, _runEventHandler.InvokedDataCollectors.Count);
    +        Assert.IsFalse(_telemetryEventsHandler.Events.Any());
    +
    +        // act
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(_runEventHandler.Attachments, _runEventHandler.InvokedDataCollectors, GetCodeCoverageRunSettings(1), true, true, _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // Assert
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.FilePath).Distinct().Count());
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Count());
    +        Assert.IsTrue(Regex.IsMatch(_runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Single(),
    +            @"Microsoft\.VisualStudio\.Coverage\.DynamicCoverageDataCollectorWithAttachmentProcessorAndTelemetry, Microsoft\.VisualStudio\.TraceDataCollector, Version=.*, Culture=neutral, PublicKeyToken=.*"));
    +
    +        _testRunAttachmentsProcessingEventHandler.EnsureSuccess();
    +        Assert.AreEqual(1, _testRunAttachmentsProcessingEventHandler.Attachments.Count);
    +        Assert.AreEqual(1, _testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments.Count);
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments[0].Uri.LocalPath.Contains(".coverage"));
    +
    +        AssertCoverageResults(_testRunAttachmentsProcessingEventHandler.Attachments);
    +
    +        Assert.IsFalse(_testRunAttachmentsProcessingEventHandler.CompleteArgs!.IsCanceled);
    +        Assert.IsNull(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Error);
    +
    +        for (int i = 0; i < _testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++)
    +        {
    +            TestRunAttachmentsProcessingProgressEventArgs progressArgs = _testRunAttachmentsProcessingEventHandler.ProgressArgs[i];
    +            Assert.AreEqual(i + 1, progressArgs.CurrentAttachmentProcessorIndex);
    +            Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri);
    +            Assert.AreEqual(2, progressArgs.AttachmentProcessorsCount);
    +
    +            if (_testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2)
    +            {
    +                Assert.AreEqual(100, progressArgs.CurrentAttachmentProcessorProgress);
    +            }
    +        }
    +
    +        Assert.AreEqual("Completed", _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics![TelemetryDataConstants.AttachmentsProcessingState]);
    +        Assert.AreEqual(2L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]);
    +        Assert.AreEqual(1L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]);
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing));
    +
    +        Assert.IsTrue(File.Exists(_runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath));
    +        Assert.IsFalse(File.Exists(_runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task TestRunWithCodeCoverageAndAttachmentsProcessingDifferentReportFormats(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1, outputFormat: "Cobertura"), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1, outputFormat: "Cobertura"), null, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        Assert.AreEqual(12, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(4, _runEventHandler.Attachments.Count);
    +        Assert.AreEqual(4, _runEventHandler.InvokedDataCollectors.Count);
    +        Assert.IsFalse(_telemetryEventsHandler.Events.Any());
    +
    +        // act
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(_runEventHandler.Attachments, _runEventHandler.InvokedDataCollectors, GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), true, true, _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // Assert
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.FilePath).Distinct().Count());
    +        Assert.AreEqual(1, _runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Count());
    +        Assert.IsTrue(Regex.IsMatch(_runEventHandler.InvokedDataCollectors.Select(x => x.AssemblyQualifiedName).Distinct().Single(),
    +            @"Microsoft\.VisualStudio\.Coverage\.DynamicCoverageDataCollectorWithAttachmentProcessorAndTelemetry, Microsoft\.VisualStudio\.TraceDataCollector, Version=.*, Culture=neutral, PublicKeyToken=.*"));
    +
    +
    +        _testRunAttachmentsProcessingEventHandler.EnsureSuccess();
    +        Assert.AreEqual(1, _testRunAttachmentsProcessingEventHandler.Attachments.Count);
    +        Assert.AreEqual(2, _testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments.Count);
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments[0].Uri.LocalPath.Contains(".cobertura.xml"));
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments[1].Uri.LocalPath.Contains(".coverage"));
    +
    +        AssertCoverageResults(_testRunAttachmentsProcessingEventHandler.Attachments);
    +
    +        Assert.IsFalse(_testRunAttachmentsProcessingEventHandler.CompleteArgs!.IsCanceled);
    +        Assert.IsNull(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Error);
    +
    +        for (int i = 0; i < _testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++)
    +        {
    +            TestRunAttachmentsProcessingProgressEventArgs progressArgs = _testRunAttachmentsProcessingEventHandler.ProgressArgs[i];
    +            Assert.AreEqual(i + 1, progressArgs.CurrentAttachmentProcessorIndex);
    +            Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri);
    +
    +            // We have two processor because we append always CodeCoverage attachment processor shipped with VSTest+Attachment processor shipped from code coverage repo.
    +            Assert.AreEqual(2, progressArgs.AttachmentProcessorsCount);
    +
    +            if (_testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2)
    +            {
    +                Assert.AreEqual(100, progressArgs.CurrentAttachmentProcessorProgress);
    +            }
    +        }
    +
    +        Assert.AreEqual("Completed", _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics![TelemetryDataConstants.AttachmentsProcessingState]);
    +        Assert.AreEqual(4L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]);
    +        Assert.AreEqual(1L, _testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]);
    +        Assert.IsTrue(_testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing));
    +
    +        Assert.IsTrue(File.Exists(_runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath));
    +        Assert.IsFalse(File.Exists(_runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    [DoNotParallelize]
    +    public async Task EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo)
    +    {
    +        var numOfProcesses = Process.GetProcessesByName("vstest.console").Length;
    +
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Take(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies().Skip(1), GetCodeCoverageRunSettings(1), null, null, _runEventHandler, _telemetryEventsHandler);
    +
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.Attachments.Count);
    +        Assert.AreEqual(2, _runEventHandler.InvokedDataCollectors.Count);
    +        Assert.IsFalse(_telemetryEventsHandler.Events.Any());
    +
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(_runEventHandler.Attachments, _runEventHandler.InvokedDataCollectors, GetCodeCoverageRunSettings(1), true, true, _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // act
    +        _vstestConsoleWrapper?.EndSession();
    +
    +        // Assert
    +        Assert.AreEqual(numOfProcesses, Process.GetProcessesByName("vstest.console").Length);
    +
    +        _vstestConsoleWrapper = null;
    +    }
    +
    +    private IList GetTestAssemblies()
    +    {
    +        return GetProjects().Select(p => GetAssetFullPath(p)).ToList();
    +    }
    +
    +    private static IList GetProjects()
    +    {
    +        return new List { "SimpleTestProject.dll", "SimpleTestProject2.dll" };
    +    }
    +
    +    /// 
    +    /// Default RunSettings
    +    /// 
    +    /// 
    +    private string GetCodeCoverageRunSettings(int cpuCount, bool useClrIeInstrumentationEngine = false, string outputFormat = "Coverage")
    +    {
    +        string runSettingsXml = $@"
    +                                    
    +                                        
    +                                            {FrameworkArgValue}
    +                                            {GetNetStandardAdapterPath()}
    +                                            {cpuCount}
    +                                        
    +                                        
    +                                            
    +                                                
    +                                                    
    +                                                      {useClrIeInstrumentationEngine}
    +                                                      {outputFormat}
    +                                                      true
    +                                                      
    +                                                        
    +                                                          
    +                                                            .*CPPUnitTestFramework.*
    +                                                          
    +                                                        
    +
    +                                                        
    +                                                        True
    +                                                        True
    +                                                        True
    +                                                        False
    +                                                      
    +                                                    
    +                                                
    +                                            
    +                                        
    +                                    ";
    +        return runSettingsXml;
    +    }
    +
    +    private static void AssertCoverageResults(IList attachments)
    +    {
    +        foreach (var attachmentSet in attachments)
    +        {
    +            foreach (var attachment in attachmentSet.Attachments)
    +            {
    +                var coverageReport = GetCoverageReport(attachments.First().Attachments.First().Uri.LocalPath);
    +
    +                foreach (var project in GetProjects())
    +                {
    +                    var moduleNode = GetModule(coverageReport, project)!;
    +                    AssertCoverage(moduleNode, ExpectedMinimalModuleCoverage);
    +                }
    +            }
    +        }
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/CustomTestHostTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/CustomTestHostTests.cs
    new file mode 100644
    index 0000000000..cdff53add3
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/CustomTestHostTests.cs
    @@ -0,0 +1,330 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Diagnostics;
    +using System.IO;
    +using System.Linq;
    +using System.Text;
    +using System.Threading;
    +
    +using FluentAssertions;
    +
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +/// The Run Tests using VsTestConsoleWrapper API's
    +/// 
    +[TestClass]
    +public class CustomTestHostTests : AcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [RunnerCompatibilityDataSource(BeforeFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    // This does not work with testhosts that are earlier than when the feature was introduced,
    +    // when latest runner is used, because the latest runner does not downgrade the messages when
    +    // older testhost launcher is used.
    +    // [TestHostCompatibilityDataSource(BeforeFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    public void RunTestsWithCustomTestHostLauncherLaunchesTheProcessUsingTheProvidedLauncher(RunnerInfo runnerInfo)
    +    {
    +        // Pins the existing functionality.
    +
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +
    +        // Act
    +        var customTestHostLauncher = new TestHostLauncherV1();
    +        _vstestConsoleWrapper.RunTestsWithCustomTestHost(GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"), GetDefaultRunSettings(), runEventHandler, customTestHostLauncher);
    +
    +        // Assert
    +        EnsureTestsRunWithoutErrors(runEventHandler, passed: 2, failed: 2, skipped: 2);
    +
    +        // Ensure we tried to launch testhost process.
    +        customTestHostLauncher.Should().BeAssignableTo();
    +        customTestHostLauncher.LaunchProcessProcessId.Should().NotBeNull("we should launch some real process and save the pid of it");
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    // [RunnerCompatibilityDataSource(BeforeFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    [TestHostCompatibilityDataSource(DEFAULT_RUNNER_NETFX, DEFAULT_RUNNER_NETCORE, "LegacyStable", BeforeFeature = Features.ATTACH_DEBUGGER_FLOW, DebugVSTestConsole = true)]
    +    [Ignore("This is not working for any testhost prior 16.7.0 where the change was introduced. The launch testhost flow was replaced with AttachDebugger in runner, and the new callback to AttachDebugger happens in testhost."
    +        + "But any testhost prior 16.7.0 where the change was introduced does not know to call back AttachDebugger, and the call never happens.")]
    +    // You can confirm that the functionality broke between runner and testhost, past this point by using newer runners, against older testhosts.
    +    // [TestPlatformCompatibilityDataSource(AfterRunnerFeature = Features.ATTACH_DEBUGGER_FLOW, BeforeTestHostFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    public void RunTestsWithCustomTestHostLauncherLaunchesTheProcessUsingTheProvidedLauncherWhenITestHostLauncher2IsProvided(RunnerInfo runnerInfo)
    +    {
    +        // Ensures compatibility with testhost and runners that were created before 16.3.0. It makes sure that even if user provides
    +        // an implementation of the ITestHostLauncher2 interface, then testhost expecting ITestHostLauncher still works correctly.
    +
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +
    +        // Act
    +        var customTestHostLauncher = new TestHostLauncherV2();
    +        _vstestConsoleWrapper.RunTestsWithCustomTestHost(GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"), GetDefaultRunSettings(), runEventHandler, customTestHostLauncher);
    +
    +        // Assert
    +        EnsureTestsRunWithoutErrors(runEventHandler, passed: 2, failed: 2, skipped: 2);
    +
    +        customTestHostLauncher.Should().BeAssignableTo();
    +        customTestHostLauncher.LaunchProcessProcessId.Should().NotBeNull("we should launch some real process and save the pid of it");
    +        customTestHostLauncher.AttachDebuggerProcessId.Should().BeNull("we should not be asked to attach to a debugger, that flow is not used when vstest.console does not support it yet, even when it is given ITestHostLauncher2");
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [RunnerCompatibilityDataSource(AfterFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    // [TestHostCompatibilityDataSource(AfterFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    public void RunTestsWithCustomTestHostLauncherAttachesToDebuggerUsingTheProvidedLauncher(RunnerInfo runnerInfo)
    +    {
    +
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +
    +        // Act
    +        var customTestHostLauncher = new TestHostLauncherV2();
    +        _vstestConsoleWrapper.RunTestsWithCustomTestHost(GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"), GetDefaultRunSettings(), runEventHandler, customTestHostLauncher);
    +
    +        // Assert
    +        EnsureTestsRunWithoutErrors(runEventHandler, passed: 2, failed: 2, skipped: 2);
    +
    +        customTestHostLauncher.Should().BeAssignableTo();
    +        customTestHostLauncher.AttachDebuggerProcessId.Should().NotBeNull("we should be asked to attach a debugger to some process and save the pid of the process");
    +        customTestHostLauncher.LaunchProcessProcessId.Should().BeNull("we should not be asked to launch some real process, that flow is not used when vstest.console supports it and is given ITestHostLauncher2");
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [Ignore("This is not working. The compatibility code only checks the protocol version (in handler), which is dictated by testhost. "
    +        + "It sees 6 but does not realize that the provided CustomTesthostLauncher is not supporting the new feature, it ends up calling back to EditoAttachDebugger" +
    +        "in translation layer, and that just silently skips the call.")]
    +    [RunnerCompatibilityDataSource(AfterFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    [TestHostCompatibilityDataSource(AfterFeature = Features.ATTACH_DEBUGGER_FLOW)]
    +    public void RunTestsWithCustomTestHostLauncherUsesLaunchWhenGivenAnOutdatedITestHostLauncher(RunnerInfo runnerInfo)
    +    {
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +
    +        // Act
    +        var customTestHostLauncher = new TestHostLauncherV1();
    +        _vstestConsoleWrapper.RunTestsWithCustomTestHost(GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"), GetDefaultRunSettings(), runEventHandler, customTestHostLauncher);
    +
    +        // Assert
    +        EnsureTestsRunWithoutErrors(runEventHandler, passed: 2, failed: 2, skipped: 2);
    +
    +        customTestHostLauncher.Should().NotBeAssignableTo();
    +        customTestHostLauncher.LaunchProcessProcessId.Should().NotBeNull("we should launch some real process and save the pid of it");
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [TestCategory("Feature")]
    +    // "Just row" used here because mstest does not cooperate with older versions of vstest.console correctly, so we test with just the latest version available..
    +    [RunnerCompatibilityDataSource(AfterFeature = Features.MULTI_TFM, JustRow = 0)]
    +    public void RunAllTestsWithMixedTFMsWillProvideAdditionalInformationToTheDebugger(RunnerInfo runnerInfo)
    +    {
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +        var netFrameworkDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETFX);
    +        var netDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETCORE);
    +        var testHostLauncher = new TestHostLauncherV3();
    +
    +        // Act
    +        // We have no preference around what TFM is used. It will be autodetected.
    +        var runsettingsXml = "";
    +        vstestConsoleWrapper.RunTestsWithCustomTestHost(new[] { netFrameworkDll, netDll }, runsettingsXml, runEventHandler, testHostLauncher);
    +
    +        // Assert
    +        if (runEventHandler.Errors.Any())
    +        {
    +            var tempPath = TempDirectory.Path;
    +            var files = System.IO.Directory.GetFiles(tempPath, "*.txt").ToList();
    +            if (files.Count == 0)
    +            {
    +                throw new InvalidOperationException($"No error files found in {tempPath}. {string.Join("\n", Directory.GetFiles(tempPath))}");
    +            }
    +
    +            var allText = new StringBuilder();
    +            foreach (var file in files)
    +            {
    +#pragma warning disable CA1305 // Specify IFormatProvider
    +                allText.AppendLine($"Error file: {file}");
    +                allText.AppendLine(File.ReadAllText(file));
    +                allText.AppendLine();
    +#pragma warning restore CA1305 // Specify IFormatProvider
    +            }
    +            throw new InvalidOperationException($"Logs: {allText}");
    +        }
    +
    +        runEventHandler.Errors.Should().BeEmpty();
    +        testHostLauncher.AttachDebuggerInfos.Should().HaveCount(2);
    +        var targetFrameworks = testHostLauncher.AttachDebuggerInfos.Select(i => i.TargetFramework).ToList();
    +        targetFrameworks.Should().OnlyContain(tfm => tfm.StartsWith(".NETFramework") || tfm.StartsWith(".NET "));
    +
    +        runEventHandler.TestResults.Should().HaveCount(6, "we run all tests from both assemblies");
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [TestCategory("BackwardCompatibilityWithRunner")]
    +    // "Just row" used here because mstest does not cooperate with older versions of vstest.console correctly, so we test with just the single version available
    +    // before the multi tfm feature.
    +    [RunnerCompatibilityDataSource(BeforeFeature = Features.MULTI_TFM, JustRow = 0)]
    +    public void RunAllTestsCallsBackToTestHostLauncherV3EvenWhenRunnerDoesNotSupportMultiTfmOrTheNewAttachDebugger2MessageYet(RunnerInfo runnerInfo)
    +    {
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +        var netFrameworkDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETFX);
    +        var netDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETCORE);
    +        var testHostLauncher = new TestHostLauncherV3();
    +
    +        // Act
    +        // We have no preference around what TFM is used. It will be autodetected.
    +        var runsettingsXml = "";
    +        vstestConsoleWrapper.RunTestsWithCustomTestHost(new[] { netFrameworkDll, netDll }, runsettingsXml, runEventHandler, testHostLauncher);
    +
    +        // Assert
    +        runEventHandler.Errors.Should().BeEmpty();
    +        testHostLauncher.AttachDebuggerInfos.Should().HaveCount(1);
    +        var pid = testHostLauncher.AttachDebuggerInfos.Select(i => i.ProcessId).Single();
    +        pid.Should().NotBe(0);
    +
    +        runEventHandler.TestResults.Should().HaveCount(3, "we run all tests from just one of the assemblies, because the runner does not support multi tfm");
    +    }
    +
    +    private static void EnsureTestsRunWithoutErrors(RunEventHandler runEventHandler, int passed, int failed, int skipped)
    +    {
    +        runEventHandler.Errors.Should().BeEmpty();
    +        runEventHandler.TestResults.Should().HaveCount(passed + failed + skipped);
    +        runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed).Should().Be(passed);
    +        runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed).Should().Be(failed);
    +        runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped).Should().Be(skipped);
    +    }
    +
    +    /// 
    +    /// The custom test host launcher implementing ITestHostLauncher.
    +    /// 
    +    private class TestHostLauncherV1 : ITestHostLauncher
    +    {
    +        public int? LaunchProcessProcessId { get; private set; }
    +
    +        /// 
    +        public bool IsDebug => true;
    +
    +        /// 
    +        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo)
    +        {
    +            return LaunchTestHost(defaultTestHostStartInfo, CancellationToken.None);
    +        }
    +
    +        /// 
    +        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo, CancellationToken cancellationToken)
    +        {
    +            var processInfo = new ProcessStartInfo(
    +                defaultTestHostStartInfo.FileName!,
    +                defaultTestHostStartInfo.Arguments!)
    +            {
    +                WorkingDirectory = defaultTestHostStartInfo.WorkingDirectory
    +            };
    +            processInfo.UseShellExecute = false;
    +
    +            var process = new Process { StartInfo = processInfo };
    +            process.Start();
    +
    +            LaunchProcessProcessId = process?.Id;
    +            return LaunchProcessProcessId ?? -1;
    +        }
    +    }
    +
    +    /// 
    +    /// The custom test host launcher implementing ITestHostLauncher2, and through that also ITestHostLauncher.
    +    /// 
    +    private class TestHostLauncherV2 : TestHostLauncherV1, ITestHostLauncher2
    +    {
    +
    +        public int? AttachDebuggerProcessId { get; private set; }
    +
    +        public bool AttachDebuggerToProcess(int pid) => AttachDebuggerToProcess(pid, CancellationToken.None);
    +
    +        public bool AttachDebuggerToProcess(int pid, CancellationToken cancellationToken)
    +        {
    +            AttachDebuggerProcessId = pid;
    +            return true;
    +        }
    +    }
    +
    +#pragma warning disable CS0618 // Type or member is obsolete
    +    private class TestHostLauncherV3 : ITestHostLauncher3
    +    {
    +        public bool IsDebug => true;
    +
    +        public List AttachDebuggerInfos { get; } = new();
    +
    +        public bool AttachDebuggerToProcess(AttachDebuggerInfo attachDebuggerInfo, CancellationToken cancellationToken)
    +        {
    +            AttachDebuggerInfos.Add(attachDebuggerInfo);
    +
    +            return true;
    +        }
    +
    +        public bool AttachDebuggerToProcess(int pid)
    +        {
    +            return AttachDebuggerToProcess(new AttachDebuggerInfo
    +            {
    +                ProcessId = pid,
    +                TargetFramework = null,
    +            }, CancellationToken.None);
    +        }
    +
    +        public bool AttachDebuggerToProcess(int pid, CancellationToken cancellationToken)
    +        {
    +            return AttachDebuggerToProcess(new AttachDebuggerInfo
    +            {
    +                ProcessId = pid,
    +                TargetFramework = null,
    +            }, CancellationToken.None);
    +        }
    +
    +        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo)
    +        {
    +            return -1;
    +        }
    +
    +        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo, CancellationToken cancellationToken)
    +        {
    +            return -1;
    +        }
    +    }
    +}
    +#pragma warning restore CS0618 // Type or member is obsolete
    +
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs
    new file mode 100644
    index 0000000000..0fa571fdf2
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs
    @@ -0,0 +1,123 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.IO;
    +using System.Linq;
    +using System.Text.RegularExpressions;
    +using System.Threading;
    +using System.Threading.Tasks;
    +using System.Xml;
    +using System.Xml.Linq;
    +
    +using Microsoft.TestPlatform.TestUtilities;
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +[TestClass]
    +[TestCategory("Windows-Review")]
    +public class DataCollectorAttachmentProcessor : AcceptanceTestBase
    +{
    +    private readonly IVsTestConsoleWrapper _vstestConsoleWrapper;
    +    private readonly RunEventHandler _runEventHandler;
    +    private readonly TestRunAttachmentsProcessingEventHandler _testRunAttachmentsProcessingEventHandler;
    +
    +    public DataCollectorAttachmentProcessor()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _runEventHandler = new RunEventHandler();
    +        _testRunAttachmentsProcessingEventHandler = new TestRunAttachmentsProcessingEventHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public async Task AttachmentProcessorDataCollector_ExtensionFileNotLocked(RunnerInfo runnerInfo)
    +    {
    +        // arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        var originalExtensionsPath = Path.GetDirectoryName(GetTestDllForFramework("AttachmentProcessorDataCollector.dll", "netstandard2.0"));
    +
    +        string extensionPath = Path.Combine(TempDirectory.Path, "AttachmentProcessorDataCollector");
    +        Directory.CreateDirectory(extensionPath);
    +        TempDirectory.CopyDirectory(new DirectoryInfo(originalExtensionsPath!), new DirectoryInfo(extensionPath));
    +
    +        string runSettings = GetRunsettingsFilePath(TempDirectory.Path);
    +        XElement runSettingsXml = XElement.Load(runSettings);
    +        runSettingsXml.Add(new XElement("RunConfiguration", new XElement("TestAdaptersPaths", extensionPath)));
    +        // Set datacollector parameters
    +        runSettingsXml!.Element("DataCollectionRunSettings")!
    +            .Element("DataCollectors")!
    +            .Element("DataCollector")!
    +            .Add(new XElement("Configuration", new XElement("MergeFile", "MergedFile.txt")));
    +        runSettingsXml.Save(runSettings);
    +
    +        // act
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies(), File.ReadAllText(runSettings), new TestPlatformOptions(), _runEventHandler);
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies(), File.ReadAllText(runSettings), new TestPlatformOptions(), _runEventHandler);
    +        await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(_runEventHandler.Attachments, _runEventHandler.InvokedDataCollectors, File.ReadAllText(runSettings), true, false, _testRunAttachmentsProcessingEventHandler, CancellationToken.None);
    +
    +        // assert
    +        // Extension path is not locked, we can remove it.
    +        Directory.Delete(extensionPath, true);
    +
    +        // Ensure we ran the extension.
    +        using var logFile = new FileStream(Path.Combine(TempDirectory.Path, "log.txt"), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    +        using var streamReader = new StreamReader(logFile);
    +        string logFileContent = streamReader.ReadToEnd();
    +        Assert.IsTrue(Regex.IsMatch(logFileContent, $@"DataCollectorAttachmentsProcessorsFactory: Collector attachment processor 'AttachmentProcessorDataCollector\.SampleDataCollectorAttachmentProcessor, AttachmentProcessorDataCollector, Version=.*, Culture=neutral, PublicKeyToken=null' from file '{extensionPath.Replace(@"\", @"\\")}\\AttachmentProcessorDataCollector.dll' added to the 'run list'"));
    +        Assert.IsTrue(Regex.IsMatch(logFileContent, @"Invocation of data collector attachment processor AssemblyQualifiedName: 'Microsoft\.VisualStudio\.TestPlatform\.CrossPlatEngine\.TestRunAttachmentsProcessing\.DataCollectorAttachmentProcessorAppDomain, Microsoft\.TestPlatform\.CrossPlatEngine, Version=.*, Culture=neutral, PublicKeyToken=.*' FriendlyName: 'SampleDataCollector'"));
    +    }
    +
    +    private static string GetRunsettingsFilePath(string resultsDir)
    +    {
    +        var runsettingsPath = Path.Combine(resultsDir, "test_" + Guid.NewGuid() + ".runsettings");
    +        var dataCollectionAttributes = new Dictionary
    +        {
    +            { "friendlyName", "SampleDataCollector" },
    +            { "uri", "my://sample/datacollector" }
    +        };
    +
    +        CreateDataCollectionRunSettingsFile(runsettingsPath, dataCollectionAttributes);
    +        return runsettingsPath;
    +    }
    +
    +    private static void CreateDataCollectionRunSettingsFile(string destinationRunsettingsPath, Dictionary dataCollectionAttributes)
    +    {
    +        var doc = new XmlDocument();
    +        var xmlDeclaration = doc.CreateNode(XmlNodeType.XmlDeclaration, string.Empty, string.Empty);
    +
    +        doc.AppendChild(xmlDeclaration);
    +        var runSettingsNode = doc.CreateElement(Constants.RunSettingsName);
    +        doc.AppendChild(runSettingsNode);
    +        var dcConfigNode = doc.CreateElement(Constants.DataCollectionRunSettingsName);
    +        runSettingsNode.AppendChild(dcConfigNode);
    +        var dataCollectorsNode = doc.CreateElement(Constants.DataCollectorsSettingName);
    +        dcConfigNode.AppendChild(dataCollectorsNode);
    +        var dataCollectorNode = doc.CreateElement(Constants.DataCollectorSettingName);
    +        dataCollectorsNode.AppendChild(dataCollectorNode);
    +
    +        foreach (var kvp in dataCollectionAttributes)
    +        {
    +            dataCollectorNode.SetAttribute(kvp.Key, kvp.Value);
    +        }
    +
    +        using var stream = new FileHelper().GetStream(destinationRunsettingsPath, FileMode.Create);
    +        doc.Save(stream);
    +    }
    +
    +    private IList GetTestAssemblies()
    +        => new List { "SimpleTestProject.dll", "SimpleTestProject2.dll" }.Select(p => GetAssetFullPath(p)).ToList();
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs
    new file mode 100644
    index 0000000000..8532a5d229
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs
    @@ -0,0 +1,151 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Diagnostics.CodeAnalysis;
    +using System.IO;
    +using System.Linq;
    +
    +using Microsoft.TestPlatform.TestUtilities;
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +//using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +/// The Run Tests using VsTestConsoleWrapper API's
    +/// 
    +[TestClass]
    +public class DifferentTestFrameworkSimpleTests : AcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private RunEventHandler? _runEventHandler;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_runEventHandler))]
    +    private void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _runEventHandler = new RunEventHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithNunitAdapter(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var sources = new List
    +        {
    +            GetAssetFullPath("NUTestProject.dll")
    +        };
    +
    +        _vstestConsoleWrapper.RunTests(
    +            sources,
    +            GetDefaultRunSettings(),
    +            _runEventHandler);
    +
    +        var testCase =
    +            _runEventHandler.TestResults.Where(tr => tr.TestCase.DisplayName.Equals("PassTestMethod1"));
    +
    +        // Assert
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +
    +        // Release builds optimize code, hence line numbers are different.
    +        if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase))
    +        {
    +            Assert.AreEqual(14, testCase.First().TestCase.LineNumber);
    +        }
    +        else
    +        {
    +            Assert.AreEqual(13, testCase.First().TestCase.LineNumber);
    +        }
    +    }
    +
    +    [TestMethod]
    +    // there are logs in the diagnostic log, it is failing with NullReferenceException because path is null
    +    [TestCategory("Windows-Review")]
    +    [NetFullTargetFrameworkDataSource(useCoreRunner: true, useDesktopRunner: false)]
    +    // [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithXunitAdapter(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        string testAssemblyPath = _testEnvironment.GetTestAsset("XUTestProject.dll");
    +        var sources = new List { testAssemblyPath };
    +        var testAdapterPath = Directory.EnumerateFiles(GetTestAdapterPath(UnitTestFramework.XUnit), "*.TestAdapter.dll").ToList();
    +        _vstestConsoleWrapper.InitializeExtensions(new List() { testAdapterPath.First() });
    +
    +        _vstestConsoleWrapper.RunTests(
    +            sources,
    +             $@"
    +            
    +                
    +                    {runnerInfo.TargetFramework}
    +                
    +            ",
    +            _runEventHandler);
    +
    +        var testCase =
    +            _runEventHandler.TestResults.Where(tr => tr.TestCase.DisplayName.Equals("xUnitTestProject.Class1.PassTestMethod1"));
    +
    +        // Assert
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +
    +        // Release builds optimize code, hence line numbers are different.
    +        if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase))
    +        {
    +            Assert.AreEqual(15, testCase.First().TestCase.LineNumber);
    +        }
    +        else
    +        {
    +            Assert.AreEqual(14, testCase.First().TestCase.LineNumber);
    +        }
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [NetFullTargetFrameworkDataSource]
    +    public void RunTestsWithNonDllAdapter(RunnerInfo runnerInfo)
    +    {
    +        // This used to be test for Chutzpah, but it has long running problem with updating dependencies,
    +        // so we test against our own test framework, to ensure that we can run test files that are not using
    +        // *.dll as extension.
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var jsSource = Path.Combine(_testEnvironment.TestAssetsPath, "test.js");
    +        var jsInTemp = TempDirectory.CopyFile(jsSource);
    +
    +        var testAdapterPath = Directory.EnumerateFiles(GetTestAdapterPath(UnitTestFramework.NonDll), "*.TestAdapter.dll").ToList();
    +        _vstestConsoleWrapper.InitializeExtensions(new List() { testAdapterPath.First() });
    +
    +        _vstestConsoleWrapper.RunTests(
    +            new[] { jsInTemp },
    +            GetDefaultRunSettings(),
    +            _runEventHandler);
    +
    +        var testCase = _runEventHandler.TestResults.Where(tr => tr.TestCase.DisplayName.Equals("TestMethod1"));
    +
    +        // Assert
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(0, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DiscoverTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DiscoverTests.cs
    new file mode 100644
    index 0000000000..b84914d873
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/DiscoverTests.cs
    @@ -0,0 +1,297 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Diagnostics;
    +using System.Diagnostics.CodeAnalysis;
    +using System.Linq;
    +using System.Threading.Tasks;
    +
    +using FluentAssertions;
    +
    +using Microsoft.TestPlatform.TestUtilities;
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +using Moq;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +[TestClass]
    +public class DiscoverTests : AcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private DiscoveryEventHandler? _discoveryEventHandler;
    +    private DiscoveryEventHandler2? _discoveryEventHandler2;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_discoveryEventHandler), nameof(_discoveryEventHandler2))]
    +    public void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _discoveryEventHandler = new DiscoveryEventHandler();
    +        _discoveryEventHandler2 = new DiscoveryEventHandler2();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [RunnerCompatibilityDataSource]
    +    public void DiscoverTestsUsingDiscoveryEventHandler1(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        // Setup();
    +        _discoveryEventHandler = new DiscoveryEventHandler();
    +        _discoveryEventHandler2 = new DiscoveryEventHandler2();
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        vstestConsoleWrapper.DiscoverTests(GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"), GetDefaultRunSettings(), _discoveryEventHandler);
    +
    +        // Assert.
    +        Assert.AreEqual(6, _discoveryEventHandler.DiscoveredTestCases.Count);
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [RunnerCompatibilityDataSource]
    +    public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedOut(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        // Setup();
    +
    +        _discoveryEventHandler = new DiscoveryEventHandler();
    +        _discoveryEventHandler2 = new DiscoveryEventHandler2();
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        vstestConsoleWrapper.DiscoverTests(
    +            GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"),
    +            GetDefaultRunSettings(),
    +            new TestPlatformOptions() { CollectMetrics = false },
    +            _discoveryEventHandler2);
    +
    +        // Assert.
    +        Assert.AreEqual(6, _discoveryEventHandler2.DiscoveredTestCases.Count);
    +        Assert.AreEqual(0, _discoveryEventHandler2.Metrics!.Count);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedIn(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.DiscoverTests(GetTestAssemblies(), GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, _discoveryEventHandler2);
    +
    +        // Assert.
    +        Assert.AreEqual(6, _discoveryEventHandler2.DiscoveredTestCases.Count);
    +        Assert.IsTrue(_discoveryEventHandler2.Metrics!.ContainsKey(TelemetryDataConstants.TargetDevice));
    +        Assert.IsTrue(_discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests));
    +        Assert.IsTrue(_discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecByAllAdapters));
    +        Assert.IsTrue(_discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForDiscovery));
    +        Assert.IsTrue(_discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.DiscoveryState));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void DiscoverTestsUsingEventHandler2AndBatchSize(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var discoveryEventHandlerForBatchSize = new DiscoveryEventHandlerForBatchSize();
    +        var batchSize = 2;
    +        string runSettingsXml = $@"
    +                                    
    +                                        
    +                                        {batchSize}
    +                                        
    +                                    ";
    +
    +        _vstestConsoleWrapper.DiscoverTests(
    +            GetTestAssemblies(),
    +            runSettingsXml,
    +            null,
    +            discoveryEventHandlerForBatchSize);
    +
    +        // Assert.
    +        discoveryEventHandlerForBatchSize.DiscoveredTestCases.Should().HaveCount(6, "we found 6 tests in total");
    +        // Batching happens based on size and time interva. The middle batch should almost always be 2,
    +        // if the discovery is fast enough, but the only requirement we can reliably check and enforce is that no batch is bigger than the expected size.
    +        discoveryEventHandlerForBatchSize.Batches.Should().OnlyContain(v => v <= batchSize, "all batches should be the same size or smaller than the batch size");
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void DiscoverTestsUsingEventHandler1AndBatchSize(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var discoveryEventHandlerForBatchSize = new DiscoveryEventHandlerForBatchSize();
    +        var batchSize = 2;
    +        string runSettingsXml = $@"
    +                                    
    +                                        
    +                                        {batchSize}
    +                                        
    +                                    ";
    +
    +        _vstestConsoleWrapper.DiscoverTests(
    +            GetTestAssemblies(),
    +            runSettingsXml,
    +            discoveryEventHandlerForBatchSize);
    +
    +        // Assert.
    +        discoveryEventHandlerForBatchSize.DiscoveredTestCases.Should().HaveCount(6, "we found 6 tests in total");
    +        // Batching happens based on size and time interva. The middle batch should almost always be 2,
    +        // if the discovery is fast enough, but the only requirement we can reliably check and enforce is that no batch is bigger than the expected size.
    +        discoveryEventHandlerForBatchSize.Batches.Should().OnlyContain(v => v <= batchSize, "all batches should be the same size or smaller than the batch size");
    +    }
    +
    +    [TestMethod]
    +    [NetCoreTargetFrameworkDataSource]
    +    [NetFullTargetFrameworkDataSource]
    +    public void DiscoverTestUsingEventHandler2ShouldContainAllSourcesAsFullyDiscovered(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var eventHandler2 = new DiscoveryEventHandler2();
    +
    +        _vstestConsoleWrapper.DiscoverTests(
    +            GetTestAssemblies(),
    +            GetDefaultRunSettings(),
    +            null,
    +            eventHandler2);
    +
    +        // Assert.
    +        Assert.AreEqual(2, eventHandler2.FullyDiscoveredSources!.Count);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void DiscoverTestsUsingSourceNavigation(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.DiscoverTests(
    +            GetTestAssemblies(),
    +            GetDefaultRunSettings(),
    +            _discoveryEventHandler);
    +
    +        // Assert.
    +        var testCase =
    +            _discoveryEventHandler.DiscoveredTestCases.Where(dt => dt.FullyQualifiedName.Equals("SampleUnitTestProject.UnitTest1.PassingTest"));
    +
    +        // Release builds optimize code, hence line numbers are different.
    +        if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase))
    +        {
    +            Assert.AreEqual(25, testCase.First().LineNumber);
    +        }
    +        else
    +        {
    +            Assert.AreEqual(24, testCase.First().LineNumber);
    +        }
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource(inProcess: true)]
    +    [NetCoreTargetFrameworkDataSource]
    +    [Ignore("Flaky on CI")]
    +    public async Task CancelTestDiscovery(RunnerInfo runnerInfo)
    +    {
    +        var sw = Stopwatch.StartNew();
    +        // Setup
    +        var testAssemblies = new List
    +        {
    +            // This is fast to discover.
    +            GetAssetFullPath("SimpleTestProject.dll"),
    +            // This is slow to discover to keep us discovering while we cancel.
    +            GetAssetFullPath("DiscoveryTestProject.dll"),
    +        };
    +
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var discoveredTests = new List();
    +        var discoveryEvents = new Mock();
    +        var alreadyCancelled = false;
    +        TimeSpan cancellationCalled = TimeSpan.Zero;
    +        discoveryEvents.Setup(events => events.HandleDiscoveredTests(It.IsAny>()))
    +            .Callback((IEnumerable testcases) =>
    +            {
    +                Console.WriteLine($"Received test case {testcases.Single()}");
    +                // As soon as we get first test call cancel. That way we know there is discovery in progress.
    +                discoveredTests.AddRange(testcases);
    +                if (!alreadyCancelled)
    +                {
    +                    cancellationCalled = sw.Elapsed;
    +                    // Calling cancel many times crashes. https://github.com/microsoft/vstest/issues/3526
    +                    alreadyCancelled = true;
    +                    Console.WriteLine($"Cancelling at {cancellationCalled.TotalMilliseconds} ms.");
    +                    _vstestConsoleWrapper.CancelDiscovery();
    +                }
    +            });
    +        var isTestCancelled = false;
    +        discoveryEvents.Setup(events => events.HandleDiscoveryComplete(It.IsAny(), It.IsAny>(), It.IsAny()))
    +            .Callback((long _, IEnumerable testcases, bool isAborted) =>
    +            {
    +                Console.WriteLine($"Discovery complete at {sw.ElapsedMilliseconds} ms, with isAborted: {isAborted}.");
    +                isTestCancelled = isAborted;
    +                if (testcases != null)
    +                {
    +                    discoveredTests.AddRange(testcases);
    +                }
    +            });
    +
    +        string runSettingsXml =
    +             $@"
    +            
    +                
    +                    {FrameworkArgValue}
    +                    1
    +                
    +            ";
    +
    +        // Act
    +        Console.WriteLine("Starting Discovery.");
    +        await Task.Run(() => _vstestConsoleWrapper.DiscoverTests(testAssemblies, runSettingsXml, discoveryEvents.Object));
    +        Console.WriteLine("Discovery finished.");
    +
    +        // Assert
    +        Assert.IsTrue(isTestCancelled, "Discovery was not cancelled");
    +
    +        // TODO: Review how much time it takes to actually cancel. It is not 2s on CI server. Are we waiting for anything?
    +        //var done = sw.Elapsed;
    +        //var timeTillCancelled = done - cancellationCalled;
    +        //timeTillCancelled.Should().BeLessThan(2.Seconds());
    +        int discoveredSourcesCount = discoveredTests.Select(testcase => testcase.Source).Distinct().Count();
    +        Assert.AreNotEqual(testAssemblies.Count, discoveredSourcesCount, "All test assemblies discovered");
    +    }
    +
    +    private IList GetTestAssemblies()
    +    {
    +        var testAssemblies = new List
    +        {
    +            GetAssetFullPath("SimpleTestProject.dll"),
    +            GetAssetFullPath("SimpleTestProject2.dll")
    +        };
    +
    +        return testAssemblies;
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/DiscoveryEventHandler.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/DiscoveryEventHandler.cs
    new file mode 100644
    index 0000000000..2efac8896f
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/DiscoveryEventHandler.cs
    @@ -0,0 +1,180 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Linq;
    +
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +public class DiscoveryEventHandler : ITestDiscoveryEventsHandler
    +{
    +    /// 
    +    /// Gets the discovered test cases.
    +    /// 
    +    public List DiscoveredTestCases { get; }
    +
    +    public DiscoveryEventHandler()
    +    {
    +        DiscoveredTestCases = new List();
    +    }
    +
    +    public void HandleDiscoveredTests(IEnumerable? discoveredTestCases)
    +    {
    +        if (discoveredTestCases != null)
    +        {
    +            DiscoveredTestCases.AddRange(discoveredTestCases);
    +        }
    +    }
    +
    +    public void HandleDiscoveryComplete(long totalTests, IEnumerable? lastChunk, bool isAborted)
    +    {
    +        if (lastChunk != null)
    +        {
    +            DiscoveredTestCases.AddRange(lastChunk);
    +        }
    +    }
    +
    +    public void HandleLogMessage(TestMessageLevel level, string? message)
    +    {
    +        // No Op
    +    }
    +
    +    public void HandleRawMessage(string rawMessage)
    +    {
    +        // No op
    +    }
    +}
    +
    +public struct TestMessage
    +{
    +    public TestMessageLevel TestMessageLevel;
    +    public string? Message;
    +
    +    public TestMessage(TestMessageLevel testMessageLevel, string? message)
    +    {
    +        TestMessageLevel = testMessageLevel;
    +        Message = message;
    +    }
    +}
    +
    +/// 
    +public class DiscoveryEventHandler2 : ITestDiscoveryEventsHandler2
    +{
    +    /// 
    +    /// Gets the discovered test cases.
    +    /// 
    +    public List DiscoveredTestCases { get; }
    +
    +    public IList? FullyDiscoveredSources { get; private set; }
    +    public IList? PartiallyDiscoveredSources { get; private set; }
    +    public IList? NotDiscoveredSources { get; private set; }
    +    public IList? SkippedDiscoveredSources { get; private set; }
    +
    +    public List TestMessages;
    +
    +    /// 
    +    /// Gets the metrics.
    +    /// 
    +    public IDictionary? Metrics { get; private set; }
    +
    +    public DiscoveryEventHandler2()
    +    {
    +        DiscoveredTestCases = new List();
    +        TestMessages = new List();
    +    }
    +
    +    public void HandleRawMessage(string rawMessage)
    +    {
    +        // No Op
    +    }
    +
    +    public void HandleLogMessage(TestMessageLevel level, string? message)
    +    {
    +        TestMessages.Add(new TestMessage(level, message));
    +    }
    +
    +    public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable? lastChunk)
    +    {
    +        if (lastChunk != null)
    +        {
    +            DiscoveredTestCases.AddRange(lastChunk);
    +        }
    +
    +        Metrics = discoveryCompleteEventArgs.Metrics;
    +        FullyDiscoveredSources = discoveryCompleteEventArgs.FullyDiscoveredSources;
    +        PartiallyDiscoveredSources = discoveryCompleteEventArgs.PartiallyDiscoveredSources;
    +        NotDiscoveredSources = discoveryCompleteEventArgs.NotDiscoveredSources;
    +        SkippedDiscoveredSources = discoveryCompleteEventArgs.SkippedDiscoveredSources;
    +    }
    +
    +    public void HandleDiscoveredTests(IEnumerable? discoveredTestCases)
    +    {
    +        if (discoveredTestCases != null)
    +        {
    +            DiscoveredTestCases.AddRange(discoveredTestCases);
    +        }
    +    }
    +}
    +
    +/// Discovery Event Handler for batch size
    +public class DiscoveryEventHandlerForBatchSize : ITestDiscoveryEventsHandler2, ITestDiscoveryEventsHandler
    +{
    +    /// 
    +    /// Gets the batch size.
    +    /// 
    +    public List Batches { get; } = new List();
    +
    +    /// 
    +    /// Gets the discovered test cases.
    +    /// 
    +    public List DiscoveredTestCases { get; }
    +
    +    public DiscoveryEventHandlerForBatchSize()
    +    {
    +        DiscoveredTestCases = new List();
    +    }
    +
    +    public void HandleRawMessage(string rawMessage)
    +    {
    +        // No Op
    +    }
    +
    +    public void HandleLogMessage(TestMessageLevel level, string? message)
    +    {
    +        if (level == TestMessageLevel.Error)
    +        {
    +            Console.WriteLine($"ERROR:{message}");
    +        }
    +    }
    +
    +    public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable? lastChunk)
    +    {
    +        if (lastChunk != null)
    +        {
    +            DiscoveredTestCases.AddRange(lastChunk);
    +        }
    +    }
    +
    +    public void HandleDiscoveryComplete(long totalTests, IEnumerable? lastChunk, bool isAborted)
    +    {
    +        if (lastChunk != null)
    +        {
    +            DiscoveredTestCases.AddRange(lastChunk);
    +        }
    +    }
    +
    +    public void HandleDiscoveredTests(IEnumerable? discoveredTestCases)
    +    {
    +        if (discoveredTestCases != null && discoveredTestCases.Any())
    +        {
    +            DiscoveredTestCases.AddRange(discoveredTestCases);
    +            Batches.Add(discoveredTestCases.Count());
    +        }
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/RunEventHandler.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/RunEventHandler.cs
    new file mode 100644
    index 0000000000..f61c3e9d94
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/RunEventHandler.cs
    @@ -0,0 +1,117 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Linq;
    +
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +public class RunEventHandler : ITestRunEventsHandler
    +{
    +    /// 
    +    /// Gets the test results.
    +    /// 
    +    public List TestResults { get; private set; }
    +
    +    /// 
    +    /// Gets the attachments.
    +    /// 
    +    public List Attachments { get; private set; }
    +
    +    /// 
    +    /// Gets the list of the invoked data collectors.
    +    /// 
    +    public List InvokedDataCollectors { get; private set; }
    +
    +    /// 
    +    /// Gets the metrics.
    +    /// 
    +    public IDictionary? Metrics { get; private set; }
    +
    +    /// 
    +    /// Gets the log message.
    +    /// 
    +    public string? LogMessage { get; private set; }
    +
    +    public List Errors { get; set; }
    +
    +    /// 
    +    /// Gets the test message level.
    +    /// 
    +    public TestMessageLevel TestMessageLevel { get; private set; }
    +
    +    public RunEventHandler()
    +    {
    +        TestResults = new List();
    +        Errors = new List();
    +        Attachments = new List();
    +        InvokedDataCollectors = new List();
    +    }
    +
    +    public void EnsureSuccess()
    +    {
    +        if (Errors.Any())
    +        {
    +            throw new InvalidOperationException($"Test run reported errors:{Environment.NewLine}{string.Join(Environment.NewLine + Environment.NewLine, Errors)}");
    +        }
    +    }
    +
    +    public void HandleLogMessage(TestMessageLevel level, string? message)
    +    {
    +        LogMessage = message;
    +        TestMessageLevel = level;
    +        if (level == TestMessageLevel.Error)
    +        {
    +            Errors.Add(message);
    +        }
    +    }
    +
    +    public void HandleTestRunComplete(
    +        TestRunCompleteEventArgs testRunCompleteArgs,
    +        TestRunChangedEventArgs? lastChunkArgs,
    +        ICollection? runContextAttachments,
    +        ICollection? executorUris)
    +    {
    +        if (lastChunkArgs != null && lastChunkArgs.NewTestResults != null)
    +        {
    +            TestResults.AddRange(lastChunkArgs.NewTestResults);
    +        }
    +
    +        if (testRunCompleteArgs.AttachmentSets != null)
    +        {
    +            Attachments.AddRange(testRunCompleteArgs.AttachmentSets);
    +        }
    +
    +        if (testRunCompleteArgs.InvokedDataCollectors != null)
    +        {
    +            InvokedDataCollectors.AddRange(testRunCompleteArgs.InvokedDataCollectors);
    +        }
    +
    +        Metrics = testRunCompleteArgs.Metrics;
    +    }
    +
    +    public void HandleTestRunStatsChange(TestRunChangedEventArgs? testRunChangedArgs)
    +    {
    +        if (testRunChangedArgs != null && testRunChangedArgs.NewTestResults != null)
    +        {
    +            TestResults.AddRange(testRunChangedArgs.NewTestResults);
    +        }
    +    }
    +
    +    public void HandleRawMessage(string rawMessage)
    +    {
    +        // No op
    +    }
    +
    +    public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo testProcessStartInfo)
    +    {
    +        // No op
    +        return -1;
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/TelemetryEventsHandler.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/TelemetryEventsHandler.cs
    new file mode 100644
    index 0000000000..718c2ef36d
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/TelemetryEventsHandler.cs
    @@ -0,0 +1,19 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System.Collections.Concurrent;
    +
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +internal class TelemetryEventsHandler : ITelemetryEventsHandler
    +{
    +    public ConcurrentBag Events { get; private set; } = new ConcurrentBag();
    +
    +    public void HandleTelemetryEvent(TelemetryEvent telemetryEvent)
    +    {
    +        Events.Add(telemetryEvent);
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/TestRunAttachmentsProcessingEventHandler.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/TestRunAttachmentsProcessingEventHandler.cs
    new file mode 100644
    index 0000000000..2dd74862ac
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/EventHandler/TestRunAttachmentsProcessingEventHandler.cs
    @@ -0,0 +1,112 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Diagnostics.CodeAnalysis;
    +using System.Linq;
    +
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +public class TestRunAttachmentsProcessingEventHandler : ITestRunAttachmentsProcessingEventsHandler
    +{
    +    public List Attachments { get; private set; }
    +
    +    public TestRunAttachmentsProcessingCompleteEventArgs? CompleteArgs { get; private set; }
    +
    +    public List ProgressArgs { get; private set; }
    +
    +    /// 
    +    /// Gets the log message.
    +    /// 
    +    public string? LogMessage { get; private set; }
    +
    +    public List Errors { get; set; }
    +
    +    /// 
    +    /// Gets the test message level.
    +    /// 
    +    public TestMessageLevel TestMessageLevel { get; private set; }
    +
    +    public TestRunAttachmentsProcessingEventHandler()
    +    {
    +        Errors = new();
    +        Attachments = new List();
    +        ProgressArgs = new List();
    +    }
    +
    +    public void EnsureSuccess()
    +    {
    +        if (Errors.Any())
    +        {
    +            throw new InvalidOperationException($"Test run reported errors:{Environment.NewLine}{string.Join(Environment.NewLine + Environment.NewLine, Errors)}");
    +        }
    +    }
    +
    +    public void HandleLogMessage(TestMessageLevel level, string? message)
    +    {
    +        LogMessage = message;
    +        TestMessageLevel = level;
    +        if (level == TestMessageLevel.Error)
    +        {
    +            Errors.Add(message);
    +        }
    +    }
    +
    +    public void HandleRawMessage(string rawMessage)
    +    {
    +        // No op
    +    }
    +
    +    [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Usage is unclear so keeping as non-static")]
    +    public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo _)
    +    {
    +        // No op
    +        return -1;
    +    }
    +
    +    [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Usage is unclear so keeping as non-static")]
    +    public bool AttachDebuggerToProcess(int _)
    +    {
    +        // No op
    +        return true;
    +    }
    +
    +    public void HandleTestRunAttachmentsProcessingComplete(ICollection attachments)
    +    {
    +        if (attachments != null)
    +        {
    +            Attachments.AddRange(attachments);
    +        }
    +    }
    +
    +    public void HandleTestRunAttachmentsProcessingComplete(TestRunAttachmentsProcessingCompleteEventArgs attachmentsProcessingCompleteEventArgs, IEnumerable? lastChunk)
    +    {
    +        if (lastChunk != null)
    +        {
    +            Attachments.AddRange(lastChunk);
    +        }
    +
    +        if (attachmentsProcessingCompleteEventArgs.Error != null)
    +        {
    +            Errors.Add(attachmentsProcessingCompleteEventArgs.Error.Message);
    +        }
    +
    +        CompleteArgs = attachmentsProcessingCompleteEventArgs;
    +    }
    +
    +    public void HandleProcessedAttachmentsChunk(IEnumerable attachments)
    +    {
    +        throw new NotImplementedException();
    +    }
    +
    +    public void HandleTestRunAttachmentsProcessingProgress(TestRunAttachmentsProcessingProgressEventArgs attachmentsProcessingProgressEventArgs)
    +    {
    +        ProgressArgs.Add(attachmentsProcessingProgressEventArgs);
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs
    new file mode 100644
    index 0000000000..e7e1d5cd40
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs
    @@ -0,0 +1,99 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System.Collections.Generic;
    +using System.Diagnostics.CodeAnalysis;
    +using System.Linq;
    +
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +[TestClass]
    +public class LiveUnitTestingTests : AcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private DiscoveryEventHandler? _discoveryEventHandler;
    +    private RunEventHandler? _runEventHandler;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_discoveryEventHandler), nameof(_runEventHandler))]
    +    public void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _discoveryEventHandler = new DiscoveryEventHandler();
    +        _runEventHandler = new RunEventHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void DiscoverTestsUsingLiveUnitTesting(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        string runSettingsXml = @"
    +                                    
    +                                        
    +                                        true
    +                                        true
    +                                        
    +                                    ";
    +
    +        _vstestConsoleWrapper.DiscoverTests(
    +            GetTestAssemblies(),
    +            runSettingsXml,
    +            _discoveryEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _discoveryEventHandler.DiscoveredTestCases.Count);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithLiveUnitTesting(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        string runSettingsXml = @"
    +                                    
    +                                        
    +                                        true
    +                                        true
    +                                        
    +                                    ";
    +
    +        _vstestConsoleWrapper.RunTests(
    +            GetTestAssemblies(),
    +            runSettingsXml,
    +            _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped));
    +    }
    +
    +    private IList GetTestAssemblies()
    +    {
    +        var testAssemblies = new List
    +        {
    +            GetAssetFullPath("SimpleTestProject.dll"),
    +            GetAssetFullPath("SimpleTestProject2.dll")
    +        };
    +
    +        return testAssemblies;
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs
    new file mode 100644
    index 0000000000..0ac08c4827
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs
    @@ -0,0 +1,94 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System.Collections.Generic;
    +using System.Diagnostics.CodeAnalysis;
    +using System.Linq;
    +
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +[TestClass]
    +public class RunSelectedTests : AcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private RunEventHandler? _runEventHandler;
    +    private DiscoveryEventHandler? _discoveryEventHandler;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_runEventHandler), nameof(_discoveryEventHandler))]
    +    private void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _runEventHandler = new RunEventHandler();
    +        _discoveryEventHandler = new DiscoveryEventHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunSelectedTestsWithoutTestPlatformOptions(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.DiscoverTests(GetTestAssemblies(), GetDefaultRunSettings(), _discoveryEventHandler);
    +        var testCases = _discoveryEventHandler.DiscoveredTestCases;
    +
    +        _vstestConsoleWrapper.RunTests(testCases, GetDefaultRunSettings(), _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunSelectedTestsWithTestPlatformOptions(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.DiscoverTests(GetTestAssemblies(), GetDefaultRunSettings(), _discoveryEventHandler);
    +        var testCases = _discoveryEventHandler.DiscoveredTestCases;
    +
    +        _vstestConsoleWrapper.RunTests(
    +            testCases,
    +            GetDefaultRunSettings(),
    +            new TestPlatformOptions() { CollectMetrics = true },
    +            _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.IsTrue(_runEventHandler.Metrics!.ContainsKey(TelemetryDataConstants.TargetDevice));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetFramework));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetOS));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForRun));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.RunState));
    +    }
    +
    +    private IList GetTestAssemblies()
    +    {
    +        var testAssemblies = new List
    +        {
    +            GetAssetFullPath("SimpleTestProject.dll"),
    +            GetAssetFullPath("SimpleTestProject2.dll")
    +        };
    +
    +        return testAssemblies;
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTests.cs
    new file mode 100644
    index 0000000000..7f0b3249c1
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTests.cs
    @@ -0,0 +1,273 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System;
    +using System.Collections.Generic;
    +using System.Diagnostics;
    +using System.Diagnostics.CodeAnalysis;
    +using System.Linq;
    +using System.Threading;
    +
    +using FluentAssertions;
    +
    +using Microsoft.TestPlatform.TestUtilities;
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +/// The Run Tests using VsTestConsoleWrapper API's
    +/// 
    +[TestClass]
    +public class RunTests : AcceptanceTestBase
    +{
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private RunEventHandler? _runEventHandler;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_runEventHandler))]
    +    private void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _runEventHandler = new RunEventHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [RunnerCompatibilityDataSource]
    +    public void RunAllTests(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +        vstestConsoleWrapper.RunTests(GetTestDlls("MSTestProject1.dll", "MSTestProject2.dll"), GetDefaultRunSettings(), runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(2, runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +        Assert.AreEqual(2, runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped));
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [RunnerCompatibilityDataSource(BeforeFeature = Features.MULTI_TFM)]
    +    public void RunAllTestsWithMixedTFMsWillFailToRunTestsFromTheIncompatibleTFMDll(RunnerInfo runnerInfo)
    +    {
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +        var compatibleDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETFX);
    +        var incompatibleDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETCORE);
    +
    +        // Act
    +        // We have no preference around what TFM is used. It will be autodetected.
    +        var runsettingsXml = "";
    +        vstestConsoleWrapper.RunTests(new[] { compatibleDll, incompatibleDll }, runsettingsXml, runEventHandler);
    +
    +        // Assert
    +        runEventHandler.TestResults.Should().HaveCount(3, "we failed to run those tests because they are not compatible.");
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [TestHostCompatibilityDataSource]
    +    [RunnerCompatibilityDataSource(AfterFeature = Features.MULTI_TFM)]
    +    public void RunAllTestsWithMixedTFMsWillRunTestsFromAllProvidedDllEvenWhenTheyMixTFMs(RunnerInfo runnerInfo)
    +    {
    +        // Arrange
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +
    +        var vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        var runEventHandler = new RunEventHandler();
    +        var netFrameworkDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETFX);
    +        var netDll = GetTestDllForFramework("MSTestProject1.dll", DEFAULT_HOST_NETCORE);
    +
    +        // Act
    +        // We have no preference around what TFM is used. It will be autodetected.
    +        var runsettingsXml = "";
    +        vstestConsoleWrapper.RunTests(new[] { netFrameworkDll, netDll }, runsettingsXml, runEventHandler);
    +
    +        // Assert
    +        runEventHandler.Errors.Should().BeEmpty();
    +        runEventHandler.TestResults.Should().HaveCount(6, "we run all tests from both assemblies");
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    [DoNotParallelize]
    +    public void EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo)
    +    {
    +        var numOfProcesses = Process.GetProcessesByName("vstest.console").Length;
    +
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(GetTestAssemblies(), GetDefaultRunSettings(), _runEventHandler);
    +        _vstestConsoleWrapper?.EndSession();
    +
    +        // Assert
    +        // TODO: This still works reliably, but it is accidental. Correctly we should look at our "tree" of processes
    +        // but there is no such thing on Windows. We can still replicate it quite well. There is code for it in blame
    +        // hang collector.
    +        Assert.AreEqual(numOfProcesses, Process.GetProcessesByName("vstest.console").Length);
    +
    +        _vstestConsoleWrapper = null;
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithTelemetryOptedIn(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(
    +            GetTestAssemblies(),
    +            GetDefaultRunSettings(),
    +            new TestPlatformOptions() { CollectMetrics = true },
    +            _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.IsTrue(_runEventHandler.Metrics!.ContainsKey(TelemetryDataConstants.TargetDevice));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetFramework));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetOS));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForRun));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution));
    +        Assert.IsTrue(_runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.RunState));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithTelemetryOptedOut(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        _vstestConsoleWrapper.RunTests(
    +            GetTestAssemblies(),
    +            GetDefaultRunSettings(),
    +            new TestPlatformOptions() { CollectMetrics = false },
    +            _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(0, _runEventHandler.Metrics!.Count);
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsShouldThrowOnStackOverflowException(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        if (IntegrationTestEnvironment.BuildConfiguration.Equals("release", StringComparison.OrdinalIgnoreCase))
    +        {
    +            // On release, x64 builds, recursive calls may be replaced with loops (tail call optimization)
    +            Assert.Inconclusive("On StackOverflowException testhost not exited in release configuration.");
    +            return;
    +        }
    +
    +        var source = new[] { GetAssetFullPath("SimpleTestProject3.dll") };
    +
    +        _vstestConsoleWrapper.RunTests(
    +            source,
    +            GetDefaultRunSettings(),
    +            new TestPlatformOptions() { TestCaseFilter = "ExitWithStackoverFlow" },
    +            _runEventHandler);
    +
    +        var errorMessage = runnerInfo.TargetFramework == "net462"
    +            ? $"The active test run was aborted. Reason: Test host process crashed : Process is terminated due to StackOverflowException.{Environment.NewLine}"
    +            : $"The active test run was aborted. Reason: Test host process crashed : Stack overflow.{Environment.NewLine}";
    +
    +        _runEventHandler.Errors.Should().Contain(errorMessage);
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [NetFullTargetFrameworkDataSource(useCoreRunner: false)]
    +    [NetCoreTargetFrameworkDataSource(useCoreRunner: false)]
    +    public void RunTestsShouldShowProperWarningOnNoTestsForTestCaseFilter(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var testAssemblyName = "SimpleTestProject2.dll";
    +        var source = new List() { GetAssetFullPath(testAssemblyName) };
    +
    +        var veryLongTestCaseFilter =
    +            "FullyQualifiedName=VeryLongTestCaseNameeeeeeeeeeeeee" +
    +            "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" +
    +            "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" +
    +            "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" +
    +            "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
    +
    +        _vstestConsoleWrapper.RunTests(
    +            source,
    +            GetDefaultRunSettings(),
    +            new TestPlatformOptions() { TestCaseFilter = veryLongTestCaseFilter },
    +            _runEventHandler);
    +
    +        var expectedFilter = veryLongTestCaseFilter.Substring(0, 256) + "...";
    +
    +        // Assert
    +        StringAssert.StartsWith(_runEventHandler.LogMessage, $"No test matches the given testcase filter `{expectedFilter}` in");
    +        StringAssert.EndsWith(_runEventHandler.LogMessage, testAssemblyName);
    +
    +        Assert.AreEqual(TestMessageLevel.Warning, _runEventHandler.TestMessageLevel);
    +    }
    +
    +    private IList GetTestAssemblies()
    +    {
    +        return new List
    +        {
    +            GetAssetFullPath("SimpleTestProject.dll"),
    +            GetAssetFullPath("SimpleTestProject2.dll")
    +        };
    +    }
    +
    +    private class TestHostLauncher : ITestHostLauncher2
    +    {
    +        public bool IsDebug => true;
    +
    +        public bool AttachDebuggerToProcess(int pid)
    +        {
    +            return true;
    +        }
    +
    +        public bool AttachDebuggerToProcess(int pid, CancellationToken cancellationToken)
    +        {
    +            return true;
    +        }
    +
    +        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo)
    +        {
    +            return -1;
    +        }
    +
    +        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo, CancellationToken cancellationToken)
    +        {
    +            return -1;
    +        }
    +    }
    +}
    diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs
    new file mode 100644
    index 0000000000..b1f2757a56
    --- /dev/null
    +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs
    @@ -0,0 +1,236 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT license. See LICENSE file in the project root for full license information.
    +
    +using System.Collections.Generic;
    +using System.Diagnostics.CodeAnalysis;
    +using System.IO;
    +using System.Linq;
    +using System.Text;
    +
    +using Microsoft.TestPlatform.TestUtilities;
    +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel;
    +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
    +using Microsoft.VisualStudio.TestTools.UnitTesting;
    +
    +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests;
    +
    +/// 
    +/// The Run Tests using VsTestConsoleWrapper API's
    +/// 
    +[TestClass]
    +public class RunTestsWithDifferentConfigurationTests : AcceptanceTestBase
    +{
    +    private const string NetFramework = "net4";
    +    private const string Message = "VsTestConsoleWrapper does not support .Net Core Runner";
    +
    +    private IVsTestConsoleWrapper? _vstestConsoleWrapper;
    +    private TempDirectory? _logsDir;
    +    private RunEventHandler? _runEventHandler;
    +
    +    [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_logsDir), nameof(_runEventHandler))]
    +    private void Setup()
    +    {
    +        _vstestConsoleWrapper = GetVsTestConsoleWrapper();
    +        _logsDir = TempDirectory;
    +        _runEventHandler = new RunEventHandler();
    +    }
    +
    +    [TestCleanup]
    +    public void Cleanup()
    +    {
    +        _vstestConsoleWrapper?.EndSession();
    +        _logsDir?.Dispose();
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithTestAdapterPath(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        var testAdapterPath = Directory.EnumerateFiles(GetTestAdapterPath(), "*.TestAdapter.dll").ToList();
    +        _vstestConsoleWrapper.InitializeExtensions(new List() { testAdapterPath.First() });
    +
    +        _vstestConsoleWrapper.RunTests(
    +            GetTestAssemblies(),
    +            GetDefaultRunSettings(),
    +            _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped));
    +    }
    +
    +    [TestMethod]
    +    [NetFullTargetFrameworkDataSource]
    +    [NetCoreTargetFrameworkDataSource]
    +    public void RunTestsWithRunSettingsWithParallel(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        Setup();
    +
    +        string runSettingsXml = $@"
    +                                    
    +                                        
    +                                        {FrameworkArgValue}
    +                                        2
    +                                        
    +                                    ";
    +
    +        var testHostNames = new[] { "testhost", "testhost.x86" };
    +        int expectedNumOfProcessCreated = 2;
    +
    +        _vstestConsoleWrapper.RunTests(
    +            GetTestAssemblies(),
    +            runSettingsXml,
    +            _runEventHandler);
    +
    +        // Assert
    +        _runEventHandler.EnsureSuccess();
    +        Assert.AreEqual(6, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped));
    +        AssertExpectedNumberOfHostProcesses(expectedNumOfProcessCreated, _logsDir.Path, testHostNames);
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [NetFullTargetFrameworkDataSource()]
    +    public void RunTestsWithTestSettingsInTpv2(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        ExecuteNotSupportedRunnerFrameworkTests(runnerInfo.RunnerFramework, NetFramework, Message);
    +        Setup();
    +
    +        var testsettingsFile = Path.Combine(TempDirectory.Path, "tempsettings.testsettings");
    +        string testSettingsXml = @"";
    +
    +        File.WriteAllText(testsettingsFile, testSettingsXml, Encoding.UTF8);
    +        var runSettings = $"{FrameworkArgValue}" + testsettingsFile + "";
    +        var sources = new List
    +        {
    +            GetAssetFullPath("MstestV1UnitTestProject.dll")
    +        };
    +
    +        _vstestConsoleWrapper.RunTests(
    +            sources,
    +            runSettings,
    +            _runEventHandler);
    +
    +        // Assert
    +        Assert.AreEqual(5, _runEventHandler.TestResults.Count);
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed));
    +        Assert.AreEqual(2, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed));
    +        Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped));
    +    }
    +
    +    [TestMethod]
    +    [TestCategory("Windows-Review")]
    +    [NetFullTargetFrameworkDataSource()]
    +    public void RunTestsWithTestSettingsInTpv0(RunnerInfo runnerInfo)
    +    {
    +        SetTestEnvironment(_testEnvironment, runnerInfo);
    +        ExecuteNotSupportedRunnerFrameworkTests(runnerInfo.RunnerFramework, NetFramework, Message);
    +        Setup();
    +
    +        var testSettingsXml = """
    +            
    +            
    +              This is a default test run configuration for a local test run.
    +              
    +                
    +              
    +              
    +                
    +                  
    +                  
    +                
    +                
    +                
    +                  
    +                    
    +                      
    +                        
    +
    +
    +
    + + + + + + + + + + + + + + + + + + """; + + var testsettingsFile = Path.Combine(TempDirectory.Path, "tempsettings.testsettings"); + + File.WriteAllText(testsettingsFile, testSettingsXml, Encoding.UTF8); + + var source = GetAssetFullPath("MstestV1UnitTestProject.dll"); + + InvokeVsTestForExecution(source, null, runnerInfo.TargetFramework, runSettings: testsettingsFile, null); + + // Assert + // Ensure that we are trying to run via tpv0 and failing because that is no longer allowed. + StringAssert.Contains(StdErrWithWhiteSpace, "An exception occurred while invoking executor 'executor://mstestadapter/v1': MSTest v1 run was offloaded to legacy TestPlatform runner"); + + ExitCodeEquals(1); // failing tests + } + + [TestMethod] + [NetFullTargetFrameworkDataSource] + [NetCoreTargetFrameworkDataSource] + public void RunTestsWithX64Source(RunnerInfo runnerInfo) + { + SetTestEnvironment(_testEnvironment, runnerInfo); + Setup(); + + var sources = new List + { + GetAssetFullPath("SimpleTestProject3.dll") + }; + + + int expectedNumOfProcessCreated = 1; + var testhostProcessNames = new[] { "testhost" }; + + _vstestConsoleWrapper.RunTests( + sources, + GetDefaultRunSettings(), + new TestPlatformOptions() { TestCaseFilter = "FullyQualifiedName = SampleUnitTestProject3.UnitTest1.WorkingDirectoryTest" }, + _runEventHandler); + + // Assert + Assert.AreEqual(1, _runEventHandler.TestResults.Count); + Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); + AssertExpectedNumberOfHostProcesses(expectedNumOfProcessCreated, _logsDir.Path, testhostProcessNames); + } + + private IList GetTestAssemblies() + { + var testAssemblies = new List + { + GetAssetFullPath("SimpleTestProject.dll"), + GetAssetFullPath("SimpleTestProject2.dll") + }; + + return testAssemblies; + } +} diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs new file mode 100644 index 0000000000..77627b3e3d --- /dev/null +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests; + +/// +/// The Run Tests using VsTestConsoleWrapper API's +/// +[TestClass] +public class RunTestsWithFilterTests : AcceptanceTestBase +{ + private IVsTestConsoleWrapper? _vstestConsoleWrapper; + private RunEventHandler? _runEventHandler; + + [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_runEventHandler))] + private void Setup() + { + _vstestConsoleWrapper = GetVsTestConsoleWrapper(); + _runEventHandler = new RunEventHandler(); + } + + [TestCleanup] + public void Cleanup() + { + _vstestConsoleWrapper?.EndSession(); + } + + [TestMethod] + [TestCategory("Windows-Review")] + [RunnerCompatibilityDataSource] + public void RunTestsWithTestCaseFilter(RunnerInfo runnerInfo) + { + SetTestEnvironment(_testEnvironment, runnerInfo); + + _runEventHandler = new RunEventHandler(); + + var vstestConsoleWrapper = GetVsTestConsoleWrapper(); + var sources = new List { GetAssetFullPath("MSTestProject1.dll") }; + + vstestConsoleWrapper.RunTests( + sources, + GetDefaultRunSettings(), + new TestPlatformOptions() { TestCaseFilter = "FullyQualifiedName=MSTestProject1.UnitTest1.PassingTest" }, + _runEventHandler); + + // Assert + Assert.AreEqual(1, _runEventHandler.TestResults.Count); + Assert.AreEqual(TestOutcome.Passed, _runEventHandler.TestResults.First().Outcome); + } + + [TestMethod] + [NetFullTargetFrameworkDataSource] + [NetCoreTargetFrameworkDataSource] + public void RunTestsWithFastFilter(RunnerInfo runnerInfo) + { + SetTestEnvironment(_testEnvironment, runnerInfo); + Setup(); + + var sources = new List { GetAssetFullPath("SimpleTestProject.dll") }; + + _vstestConsoleWrapper.RunTests( + sources, + GetDefaultRunSettings(), + new TestPlatformOptions() { TestCaseFilter = "FullyQualifiedName=SampleUnitTestProject.UnitTest1.PassingTest | FullyQualifiedName=SampleUnitTestProject.UnitTest1.FailingTest" }, + _runEventHandler); + + // Assert + Assert.AreEqual(2, _runEventHandler.TestResults.Count); + Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); + Assert.AreEqual(1, _runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); + } +} diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs new file mode 100644 index 0000000000..f4f71b2a58 --- /dev/null +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs @@ -0,0 +1,114 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Text; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests; + +[TestClass] +// We need to dogfood the package built in this repo *-dev and we pack tha tp only on windows +[TestCategory("Windows-Review")] +public class SerialTestRunDecoratorTests : AcceptanceTestBase +{ + private IVsTestConsoleWrapper? _vstestConsoleWrapper; + private RunEventHandler? _runEventHandler; + private DiscoveryEventHandler? _discoveryEventHandler; + private DiscoveryEventHandler2? _discoveryEventHandler2; + private readonly string _runsettings = $$""" + + + true + + +"""; + + [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_runEventHandler), nameof(_discoveryEventHandler), nameof(_discoveryEventHandler2))] + private void Setup(Dictionary? environmentVariables = null) + { + _vstestConsoleWrapper = GetVsTestConsoleWrapper(environmentVariables); + _discoveryEventHandler = new DiscoveryEventHandler(); + _discoveryEventHandler2 = new DiscoveryEventHandler2(); + _runEventHandler = new RunEventHandler(); + } + + [TestCleanup] + public void Cleanup() + { + _vstestConsoleWrapper?.EndSession(); + } + + [TestMethod] + [NetCoreTargetFrameworkDataSource] + [NetFullTargetFrameworkDataSource] + public void DiscoverTestsAndRunTestsSequentially(RunnerInfo runnerInfo) + { + // Arrange + SetTestEnvironment(_testEnvironment, runnerInfo); + Setup(); + + // Act + var testDll = GetAssetFullPath("SerializeTestRunTestProject.dll"); + _vstestConsoleWrapper.DiscoverTests(new string[] { testDll }, GetDefaultRunSettings(), _discoveryEventHandler); + _vstestConsoleWrapper.RunTests(_discoveryEventHandler.DiscoveredTestCases, _runsettings, _runEventHandler); + _runEventHandler.EnsureSuccess(); + + // Assert + Assert.AreEqual(10, _discoveryEventHandler.DiscoveredTestCases.Count); + int failedTests = _runEventHandler.TestResults.Count(x => x.Outcome == TestOutcome.Failed); + Assert.IsFalse(failedTests > 0, $"Number of failed tests {failedTests}"); + } + + [TestMethod] + [NetCoreTargetFrameworkDataSource] + [NetFullTargetFrameworkDataSource] + public void DiscoverTestsAndRunTestsSequentially_DisabledByFeatureFlag(RunnerInfo runnerInfo) + { + // Arrange + SetTestEnvironment(_testEnvironment, runnerInfo); + Dictionary? environmentVariables = new() { { "VSTEST_DISABLE_SERIALTESTRUN_DECORATOR", "1" } }; + Setup(environmentVariables); + + // Act + var testDll = GetAssetFullPath("SerializeTestRunTestProject.dll"); + _vstestConsoleWrapper.DiscoverTests(new string[] { testDll }, GetDefaultRunSettings(), _discoveryEventHandler); + _vstestConsoleWrapper.RunTests(_discoveryEventHandler.DiscoveredTestCases, _runsettings, _runEventHandler); + _runEventHandler.EnsureSuccess(); + + // Assert + Assert.AreEqual(10, _discoveryEventHandler.DiscoveredTestCases.Count); + int failedTests = _runEventHandler.TestResults.Count(x => x.Outcome == TestOutcome.Failed); + Assert.IsTrue(failedTests > 0, $"Number of failed tests {failedTests}"); + } + + [TestMethod] + [NetCoreTargetFrameworkDataSource] + [NetFullTargetFrameworkDataSource] + public void DiscoverTestsAndRunTestsSequentially_IsNotSupportedForSources(RunnerInfo runnerInfo) + { + // Arrange + SetTestEnvironment(_testEnvironment, runnerInfo); + Setup(); + + // Act + var testDll = GetAssetFullPath("SerializeTestRunTestProject.dll"); + _vstestConsoleWrapper.RunTests(new string[] { testDll }, _runsettings, _runEventHandler); + _ = Assert.ThrowsException(_runEventHandler.EnsureSuccess); + + StringBuilder builder = new(); + foreach (string? error in _runEventHandler.Errors) + { + builder.AppendLine(error); + } + + Assert.IsTrue(_runEventHandler.Errors.Count > 0); + Assert.IsTrue(_runEventHandler.Errors.Contains(VisualStudio.TestPlatform.Common.Resources.Resources.SerialTestRunInvalidScenario), $"Error messages\n:{builder}"); + } +} diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs new file mode 100644 index 0000000000..a1454a92a3 --- /dev/null +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs @@ -0,0 +1,116 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests; + +[TestClass] +// We need to dogfood the package built in this repo *-dev and we pack tha tp only on windows +[TestCategory("Windows-Review")] +public class TargetFrameworkTestHostDemultiplexer : AcceptanceTestBase +{ + private IVsTestConsoleWrapper? _vstestConsoleWrapper; + private RunEventHandler? _runEventHandler; + private DiscoveryEventHandler? _discoveryEventHandler; + + [MemberNotNull(nameof(_vstestConsoleWrapper), nameof(_runEventHandler), nameof(_discoveryEventHandler))] + private void Setup(Dictionary? environmentVariables = null) + { + _vstestConsoleWrapper = GetVsTestConsoleWrapper(environmentVariables); + _discoveryEventHandler = new DiscoveryEventHandler(); + _runEventHandler = new RunEventHandler(); + } + + [TestCleanup] + public void Cleanup() + { + _vstestConsoleWrapper?.EndSession(); + } + + [TestMethod] + [NetCoreTargetFrameworkDataSource] + [NetFullTargetFrameworkDataSource] + public void ExecuteContainerInMultiHost(RunnerInfo runnerInfo) + => ExecuteContainerInMultiHost(runnerInfo, 3); + + [TestMethod] + [NetCoreTargetFrameworkDataSource] + [NetFullTargetFrameworkDataSource] + public void ExecuteContainerInMultiHost_MoreHostsThanTests(RunnerInfo runnerInfo) + => ExecuteContainerInMultiHost(runnerInfo, 20); + + [TestMethod] + [NetCoreTargetFrameworkDataSource] + [NetFullTargetFrameworkDataSource] + public void ExecuteSingleContainerInDefaultSingleHost(RunnerInfo runnerInfo) + => ExecuteContainerInMultiHost(runnerInfo, -1); + + private void ExecuteContainerInMultiHost(RunnerInfo runnerInfo, int expectedHost) + { + // Arrange + SetTestEnvironment(_testEnvironment, runnerInfo); + Dictionary? environmentVariables = new() { { "VSTEST_LOGFOLDER", TempDirectory.Path } }; + Setup(environmentVariables); + string runsettings = $""" + + + {expectedHost} + {expectedHost} + + +"""; + + // Act + var testDll = GetAssetFullPath("MultiHostTestExecutionProject.dll"); + _vstestConsoleWrapper.DiscoverTests(new string[] { testDll }, GetDefaultRunSettings(), _discoveryEventHandler); + _vstestConsoleWrapper.RunTests(_discoveryEventHandler.DiscoveredTestCases, expectedHost == -1 ? GetDefaultRunSettings() : runsettings, _runEventHandler); + _runEventHandler.EnsureSuccess(); + + // Assert + Assert.AreEqual(10, _discoveryEventHandler.DiscoveredTestCases.Count); + int failedTests = _runEventHandler.TestResults.Count(x => x.Outcome == TestOutcome.Failed); + Assert.IsFalse(failedTests > 0, $"Number of failed tests {failedTests}"); + + string[] hosts = Directory.GetFiles(TempDirectory.Path, "TestHost*"); + Assert.AreEqual(expectedHost == -1 ? 1 : expectedHost > 10 ? 10 : expectedHost, hosts.Length); + + List tests = new(); + int testsRunInsideHost; + foreach (var file in hosts) + { + testsRunInsideHost = 0; + + using StreamReader streamReader = new(file); + while (!streamReader.EndOfStream) + { + string? line = streamReader.ReadLine(); + if (!string.IsNullOrEmpty(line)) + { + tests.Add(line); + } + testsRunInsideHost++; + } + + + if (expectedHost == 3) + { + Assert.IsTrue(testsRunInsideHost >= 3); + } + } + + Assert.AreEqual(10, tests.Count); + for (int i = 1; i <= 10; i++) + { + tests.Remove($"TestMethod{i}"); + } + Assert.AreEqual(0, tests.Count); + } +} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/AcceptanceTestBase.cs b/test/Microsoft.TestPlatform.AcceptanceTests/AcceptanceTestBase.cs deleted file mode 100644 index 65fdcadc26..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/AcceptanceTestBase.cs +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; - - using Microsoft.TestPlatform.TestUtilities; - - public class AcceptanceTestBase : IntegrationTestBase - { - public const string Net451TargetFramework = "net451"; - public const string Net452TargetFramework = "net452"; - public const string Net46TargetFramework = "net46"; - public const string Net461TargetFramework = "net461"; - public const string Net462TargetFramework = "net462"; - public const string Net47TargetFramework = "net47"; - public const string Net471TargetFramework = "net471"; - public const string Net472TargetFramework = "net472"; - public const string Net48TargetFramework = "net48"; - public const string DesktopTargetFramework = "net451"; - public const string Core21TargetFramework = "netcoreapp2.1"; - public const string Core31TargetFramework = "netcoreapp3.1"; - public const string Core50TargetFramework = "net5.0"; - public const string Core60TargetFramework = "net6.0"; - - public const string DesktopFrameworkArgValue = ".NETFramework,Version=v4.5.1"; - public const string Net451FrameworkArgValue = ".NETFramework,Version=v4.5.1"; - public const string Net452FrameworkArgValue = ".NETFramework,Version=v4.5.2"; - public const string Net46FrameworkArgValue = ".NETFramework,Version=v4.6"; - public const string Net461FrameworkArgValue = ".NETFramework,Version=v4.6.1"; - public const string Net462FrameworkArgValue = ".NETFramework,Version=v4.6.2"; - public const string Net47FrameworkArgValue = ".NETFramework,Version=v4.7"; - public const string Net471FrameworkArgValue = ".NETFramework,Version=v4.7.1"; - public const string Net472FrameworkArgValue = ".NETFramework,Version=v4.7.2"; - public const string Net48FrameworkArgValue = ".NETFramework,Version=v4.8"; - - public const string Core21FrameworkArgValue = ".NETCoreApp,Version=v2.1"; - public const string Core31FrameworkArgValue = ".NETCoreApp,Version=v3.1"; - public const string Core50FrameworkArgValue = ".NETCoreApp,Version=v5.0"; - public const string Core60FrameworkArgValue = ".NETCoreApp,Version=v6.0"; - - public const string DesktopRunnerTargetRuntime = "win7-x64"; - public const string CoreRunnerTargetRuntime = ""; - public const string InIsolation = "/InIsolation"; - - public const string NETFX452_48 = "net452;net461;net472;net48"; - public const string NETFX451_48 = "net452;net461;net472;net48"; - public const string NETCORE21_50 = "netcoreapp2.1;netcoreapp3.1;net5.0"; - public const string NETFX452_NET50 = "net452;net461;net472;net48;netcoreapp2.1;netcoreapp3.1;net5.0"; - public const string NETFX452_NET31 = "net452;net461;net472;net48;netcoreapp2.1;netcoreapp3.1"; - - public static string And(string left, string right) - { - return string.Join(";", left, right); - } - - protected string FrameworkArgValue => DeriveFrameworkArgValue(this.testEnvironment); - - protected static void SetTestEnvironment(IntegrationTestEnvironment testEnvironment, RunnerInfo runnerInfo) - { - testEnvironment.RunnerFramework = runnerInfo.RunnerFramework; - testEnvironment.TargetFramework = runnerInfo.TargetFramework; - testEnvironment.InIsolationValue = runnerInfo.InIsolationValue; - } - - protected static string DeriveFrameworkArgValue(IntegrationTestEnvironment testEnvironment) - { - switch (testEnvironment.TargetFramework) - { - case Core21TargetFramework: - return Core21FrameworkArgValue; - case Core31TargetFramework: - return Core31FrameworkArgValue; - case Core50TargetFramework: - return Core50FrameworkArgValue; - case Core60TargetFramework: - return Core60FrameworkArgValue; - case Net451TargetFramework: - return Net451FrameworkArgValue; - case Net452TargetFramework: - return Net452FrameworkArgValue; - case Net46TargetFramework: - return Net46FrameworkArgValue; - case Net461TargetFramework: - return Net461FrameworkArgValue; - case Net462TargetFramework: - return Net462FrameworkArgValue; - case Net47TargetFramework: - return Net47FrameworkArgValue; - case Net471TargetFramework: - return Net471FrameworkArgValue; - case Net472TargetFramework: - return Net472FrameworkArgValue; - case Net48TargetFramework: - return Net48FrameworkArgValue; - default: - throw new NotSupportedException($"{testEnvironment.TargetFramework} is not supported TargetFramework value."); - } - } - - protected bool IsDesktopTargetFramework() - { - return this.testEnvironment.TargetFramework == AcceptanceTestBase.DesktopTargetFramework; - } - - protected string GetTargetFramworkForRunsettings() - { - var targetFramework = string.Empty; - if (this.testEnvironment.TargetFramework == DesktopTargetFramework) - { - targetFramework = "Framework45"; - } - else - { - targetFramework = "FrameworkCore10"; - } - - return targetFramework; - } - - /// - /// Default RunSettings - /// - /// - public string GetDefaultRunSettings() - { - string runSettingsXml = $@" - - - {FrameworkArgValue} - - "; - return runSettingsXml; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/AppDomainTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/AppDomainTests.cs deleted file mode 100644 index 0834163df7..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/AppDomainTests.cs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; -#if !NET451 - using System.Runtime.Loader; -#else - using System.Reflection; -#endif - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - [TestCategory("Windows-Review")] - public class AppDomainTests : AcceptanceTestBase - { - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void RunTestExecutionWithDisableAppDomain(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var testResults = GetResultsDirectory(); - var testAppDomainDetailFileName = Path.Combine(Path.GetTempPath(), "appdomain_test.txt"); - var dataCollectorAppDomainDetailFileName = Path.Combine(Path.GetTempPath(), "appdomain_datacollector.txt"); - - // Delete test output files if already exist - File.Delete(testAppDomainDetailFileName); - File.Delete(dataCollectorAppDomainDetailFileName); - var runsettingsFilePath = this.GetInProcDataCollectionRunsettingsFile(true); - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - runsettingsFilePath, - this.FrameworkArgValue, - runnerInfo.InIsolationValue, - testResults); - - this.InvokeVsTest(arguments); - - Assert.IsTrue(IsFilesContentEqual(testAppDomainDetailFileName, dataCollectorAppDomainDetailFileName), "Different AppDomains, test: {0} datacollector: {1}", File.ReadAllText(testAppDomainDetailFileName), File.ReadAllText(dataCollectorAppDomainDetailFileName)); - this.ValidateSummaryStatus(1, 1, 1); - File.Delete(runsettingsFilePath); - TryRemoveDirectory(testResults); - } - - private static bool IsFilesContentEqual(string filePath1, string filePath2) - { - Assert.IsTrue(File.Exists(filePath1), "File doesn't exist: {0}.", filePath1); - Assert.IsTrue(File.Exists(filePath2), "File doesn't exist: {0}.", filePath2); - var content1 = File.ReadAllText(filePath1); - var content2 = File.ReadAllText(filePath2); - Assert.IsTrue(string.Equals(content1, content2, StringComparison.Ordinal), "Content miss match file1 content:{2}{0}{2} file2 content:{2}{1}{2}", content1, content2, Environment.NewLine); - return string.Equals(content1, content2, StringComparison.Ordinal); - } - - private string GetInProcDataCollectionRunsettingsFile(bool disableAppDomain) - { - var runSettings = Path.Combine(Path.GetTempPath(), "test_" + Guid.NewGuid() + ".runsettings"); - var inprocasm = this.testEnvironment.GetTestAsset("SimpleDataCollector.dll"); -#if !NET451 - var assemblyName = AssemblyLoadContext.GetAssemblyName(inprocasm); -#else - var assemblyName = AssemblyName.GetAssemblyName(inprocasm); -#endif - var fileContents = @" - - - - - 4312 - - - - - - " + disableAppDomain + @" - - "; - - fileContents = string.Format(fileContents, assemblyName, inprocasm); - File.WriteAllText(runSettings, fileContents); - - return runSettings; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/ArgumentProcessorTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/ArgumentProcessorTests.cs deleted file mode 100644 index d0e39b924f..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/ArgumentProcessorTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - [TestCategory("Windows-Review")] - public class ArgumentProcessorTests : AcceptanceTestBase - { - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void PassingNoArgumentsToVsTestConsoleShouldPrintHelpMessage(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTest(null); - - //Check for help usage, description and arguments text. - this.StdOutputContains("Usage: vstest.console.exe"); - this.StdOutputContains("Description: Runs tests from the specified files."); - this.StdOutputContains("Arguments:"); - - //Check for help options text - this.StdOutputContains("Options:"); - - //Check for help examples text - this.StdOutputContains("To run tests: >vstest.console.exe tests.dll"); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void PassingInvalidArgumentsToVsTestConsoleShouldNotPrintHelpMessage(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var testResults = GetResultsDirectory(); - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, resultsDirectory: testResults); - arguments = string.Concat(arguments, " /badArgument"); - - this.InvokeVsTest(arguments); - - //Check for help usage, description and arguments text. - this.StdOutputDoesNotContains("Usage: vstest.console.exe"); - this.StdOutputDoesNotContains("Description: Runs tests from the specified files."); - this.StdOutputDoesNotContains("Arguments:"); - - //Check for help options text - this.StdOutputDoesNotContains("Options:"); - - //Check for help examples text - this.StdOutputDoesNotContains("To run tests: >vstest.console.exe tests.dll"); - - //Check for message which guides using help option - this.StdErrorContains("Please use the /help option to check the list of valid arguments"); - - TryRemoveDirectory(testResults); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/BlameDataCollectorTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/BlameDataCollectorTests.cs deleted file mode 100644 index 979acae2b2..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/BlameDataCollectorTests.cs +++ /dev/null @@ -1,339 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Text; - using System.Xml; - - [TestClass] - // this whole thing is complicated and depends on versions of OS and the target runtime - // keeping this for later - [TestCategory("Windows-Review")] - public class BlameDataCollectorTests : AcceptanceTestBase - { - private readonly string resultsDir; - - public const string NETCOREANDFX = "net452;net472;netcoreapp3.1"; - public const string NET50 = "net5.0"; - - public BlameDataCollectorTests() - { - this.resultsDir = GetResultsDirectory(); - } - - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", null); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - // netcoreapp2.1 dump is not supported on Linux - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void BlameDataCollectorShouldGiveCorrectTestCaseName(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("BlameUnitTestProject.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $" /Blame"); - arguments = string.Concat(arguments, $" /ResultsDirectory:{resultsDir}"); - this.InvokeVsTest(arguments); - - this.VaildateOutput("BlameUnitTestProject.UnitTest1.TestMethod2"); - } - - [TestMethod] - // netcoreapp2.1 dump is not supported on Linux - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void BlameDataCollectorShouldOutputDumpFile(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $" /Blame:CollectDump"); - arguments = string.Concat(arguments, $" /ResultsDirectory:{resultsDir}"); - arguments = string.Concat(arguments, " /testcasefilter:ExitWithStackoverFlow"); - this.InvokeVsTest(arguments); - - this.VaildateOutput("SampleUnitTestProject3.UnitTest1.ExitWithStackoverFlow", validateDumpFile: true); - } - - [TestMethod] - // netcoreapp2.1 dump is not supported on Linux - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void BlameDataCollectorShouldNotOutputDumpFileWhenNoCrashOccurs(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $" /Blame:CollectDump"); - arguments = string.Concat(arguments, $" /ResultsDirectory:{resultsDir}"); - arguments = string.Concat(arguments, " /testcasefilter:PassingTest"); - this.InvokeVsTest(arguments); - - Assert.IsFalse(this.StdOut.Contains(".dmp"), "it should not collect a dump, because nothing crashed"); - } - - [TestMethod] - // netcoreapp2.1 dump is not supported on Linux - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void BlameDataCollectorShouldOutputDumpFileWhenNoCrashOccursButCollectAlwaysIsEnabled(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $" /Blame:CollectDump;CollectAlways=True"); - arguments = string.Concat(arguments, $" /ResultsDirectory:{resultsDir}"); - arguments = string.Concat(arguments, " /testcasefilter:PassingTest"); - this.InvokeVsTest(arguments); - - Assert.IsTrue(this.StdOut.Contains(".dmp"), "it should collect dump, even if nothing crashed"); - } - - [TestMethod] - [NetCoreRunner("net452;net472;netcoreapp3.1;net5.0")] - // should make no difference, keeping for easy debug - // [NetFrameworkRunner("net452;net472;netcoreapp3.1;net5.0")] - public void HangDumpOnTimeout(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("timeout.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $@" /Blame:""CollectHangDump;HangDumpType=full;TestTimeout=3s"""); - this.InvokeVsTest(arguments); - - this.ValidateDump(); - } - - [TestMethod] - // net5.0 does not suppord dump on exit - [NetCoreRunner("net452;net472;netcoreapp3.1")] - // should make no difference, keeping for easy debug - // [NetFrameworkRunner("net452;net472;netcoreapp3.1")] - - public void CrashDumpWhenThereIsNoTimeout(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("timeout.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $@" /Blame:""CollectDump;DumpType=full;CollectAlways=true;CollectHangDump"""); - this.InvokeVsTest(arguments); - - this.ValidateDump(); - } - - [TestMethod] - // net5.0 does not suppord dump on exit - [NetCoreRunner("net452;net472;netcoreapp3.1")] - // should make no difference, keeping for easy debug - // [NetFrameworkRunner("net452;net472;netcoreapp3.1")] - - public void CrashDumpOnExit(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("timeout.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $@" /Blame:""CollectDump;DumpType=full;CollectAlways=true"""); - this.InvokeVsTest(arguments); - - this.ValidateDump(); - } - - [TestMethod] - [NetCoreRunner("net452;net472;netcoreapp3.1;net5.0")] - // should make no difference, keeping for easy debug - // [NetFrameworkRunner("net452;net472;netcoreapp3.1;net5.0")] - public void CrashDumpOnStackOverflow(RunnerInfo runnerInfo) - { - Environment.SetEnvironmentVariable("PROCDUMP_PATH", Path.Combine(this.testEnvironment.PackageDirectory, @"procdump\0.0.1\bin")); - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("crash.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $@" /Blame:""CollectDump;DumpType=full"""); - this.InvokeVsTest(arguments); - - this.ValidateDump(); - } - - [TestMethod] - [NetCoreRunner(NET50)] - // should make no difference, keeping for easy debug - // [NetFrameworkRunner(NET50)] - public void CrashDumpChildProcesses(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("child-crash.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $@" /Blame:""CollectDump;DumpType=full"""); - this.InvokeVsTest(arguments); - - this.ValidateDump(2); - } - - [TestMethod] - [NetCoreRunner("net452;net472;netcoreapp3.1;net5.0")] - // should make no difference, keeping for easy debug - // [NetFrameworkRunner("net452;net472;netcoreapp3.1;net5.0")] - public void HangDumpChildProcesses(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.GetAssetFullPath("child-hang.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, string.Empty, runnerInfo.InIsolationValue); - arguments = string.Concat(arguments, $@" /Blame:""CollectHangDump;HangDumpType=full;TestTimeout=15s"""); - this.InvokeVsTest(arguments); - - this.ValidateDump(2); - } - - private void ValidateDump(int expectedDumpCount = 1) - { - var attachments = this.StdOutWithWhiteSpace.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) - .SkipWhile(l => !l.Contains("Attachments:")).Skip(1) - .Where(l => !string.IsNullOrWhiteSpace(l)) - .ToList(); - - var output = string.Join(Environment.NewLine, attachments); - if (!attachments.Any(a => a.Contains("Sequence_"))) - { - // sequence file is pretty flaky, and easily substituted by diag log - // throw new AssertFailedException("Expected Sequence file in Attachments, but there was none." - // + Environment.NewLine - // + output); - } - - var dumps = attachments - .Where(a => a.EndsWith(".dmp")) - // On Windows we might collect conhost which tells us nothing - // or WerFault in case we would start hanging during crash - // we don't want these to make cross-platform checks more difficult - // so we filter them out. - .Where(a => !a.Contains("WerFault") && !a.Contains("conhost")) - .Select(a => a.Trim()).ToList(); - - if (dumps.Count < expectedDumpCount) - { - throw new AssertFailedException($"Expected at least {expectedDumpCount} dump file in Attachments, but there were {dumps.Count}." - + Environment.NewLine - + string.Join(Environment.NewLine, dumps)); - } - - var nonExistingDumps = new List(); - var emptyDumps = new List(); - foreach (var dump in dumps) - { - if (!File.Exists(dump)) - { - nonExistingDumps.Add(dump); - } - else - { - var file = new FileInfo(dump); - if (file.Length == 0) - { - emptyDumps.Add(dump); - } - } - } - - // allow some child dumps to be missing, they manage to terminate early from time to time - if ((dumps.Count == 1 && nonExistingDumps.Any()) || (dumps.Count > 1 && nonExistingDumps.Count > 1) - || emptyDumps.Any()) - { - var err = new StringBuilder(); - err.AppendLine("Expected all dumps in the list of attachments to exist, and not be empty, but:"); - if (nonExistingDumps.Any()) - { - err.AppendLine($"{nonExistingDumps.Count} don't exist:") - .AppendLine(string.Join(Environment.NewLine, nonExistingDumps)); - } - - if (emptyDumps.Any()) - { - err.AppendLine($"{emptyDumps.Count} are empty:") - .AppendLine(string.Join(Environment.NewLine, emptyDumps)); - } - - err.AppendLine("Reported attachments:") - .AppendLine(output); - - throw new AssertFailedException(err.ToString()); - } - } - - private void VaildateOutput(string testName, bool validateDumpFile = false) - { - bool isSequenceAttachmentReceived = false; - bool isDumpAttachmentReceived = false; - bool isValid = false; - this.StdErrorContains(testName); - this.StdOutputContains("Sequence_"); - var resultFiles = Directory.GetFiles(this.resultsDir, "*", SearchOption.AllDirectories); - - foreach (var file in resultFiles) - { - if (file.Contains("Sequence_")) - { - isSequenceAttachmentReceived = true; - isValid = IsValidXml(file); - } - else if (validateDumpFile && file.Contains(".dmp")) - { - isDumpAttachmentReceived = true; - } - } - - Assert.IsTrue(isSequenceAttachmentReceived); - Assert.IsTrue(!validateDumpFile || isDumpAttachmentReceived); - Assert.IsTrue(isValid); - } - - private bool IsValidXml(string xmlFilePath) - { - var file = File.OpenRead(xmlFilePath); - var reader = XmlReader.Create(file); - try - { - while (reader.Read()) - { - } - file.Dispose(); - return true; - } - catch (XmlException) - { - file.Dispose(); - return false; - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/CUITTest.cs b/test/Microsoft.TestPlatform.AcceptanceTests/CUITTest.cs deleted file mode 100644 index 18d5882e26..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/CUITTest.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - [TestCategory("Windows-Review")] - public class CUITTest : AcceptanceTestBase - { - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void CUITRunAllTests(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - CUITRunAll(runnerInfo.RunnerFramework); - } - - private void CUITRunAll(string runnerFramework) - { - if (runnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("CUIT tests are not supported with .Netcore runner."); - return; - } - - var assemblyAbsolutePath = testEnvironment.GetTestAsset("CUITTestProject.dll", "net451"); - var resultsDirectory = GetResultsDirectory(); - var arguments = PrepareArguments(assemblyAbsolutePath, string.Empty, string.Empty, this.FrameworkArgValue, resultsDirectory: resultsDirectory); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDirectory); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/CodeCoverageAcceptanceTestBase.cs b/test/Microsoft.TestPlatform.AcceptanceTests/CodeCoverageAcceptanceTestBase.cs deleted file mode 100644 index 9dc0f7baab..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/CodeCoverageAcceptanceTestBase.cs +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Diagnostics; - using System.IO; - using System.Xml; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - public class CodeCoverageAcceptanceTestBase : AcceptanceTestBase - { - /* - * Below value is just safe coverage result for which all tests are passing. - * Inspecting this value gives us confidence that there is no big drop in overall coverage. - */ - protected const double ExpectedMinimalModuleCoverage = 30.0; - - protected string GetNetStandardAdapterPath() - { - return Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, "artifacts", IntegrationTestEnvironment.BuildConfiguration, "Microsoft.CodeCoverage"); - } - - protected string GetNetFrameworkAdapterPath() - { - return Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, "artifacts", IntegrationTestEnvironment.BuildConfiguration, "net451", "win7-x64", "Extensions"); - } - - protected string GetCodeCoverageExePath() - { - return Path.Combine(this.GetNetStandardAdapterPath(), "CodeCoverage", "CodeCoverage.exe"); - } - - protected XmlNode GetModuleNode(XmlNode node, string name) - { - var moduleNode = this.GetNode(node, "module", name); - - if (moduleNode == null) - { - moduleNode = this.GetNode(node, "package", name); - - if (moduleNode == null) - { - moduleNode = this.GetNode(node, "package", Path.GetFileNameWithoutExtension(name)); - } - } - - return moduleNode; - } - - protected XmlNode GetNode(XmlNode node, string type, string name) - { - return node.SelectSingleNode($"//{type}[@name='{name}']"); - } - - protected XmlDocument GetXmlCoverage(string coverageResult) - { - XmlDocument coverage = new XmlDocument(); - - if (coverageResult.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)) - { - coverage.Load(coverageResult); - return coverage; - } - - var codeCoverageExe = this.GetCodeCoverageExePath(); - var output = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".xml"); - - var watch = new Stopwatch(); - - Console.WriteLine($"Starting {codeCoverageExe}"); - watch.Start(); - var analyze = Process.Start(new ProcessStartInfo - { - FileName = codeCoverageExe, - Arguments = $"analyze /include_skipped_functions /include_skipped_modules /output:\"{output}\" \"{coverageResult}\"", - RedirectStandardOutput = true, - UseShellExecute = false - }); - - string analysisOutput = analyze.StandardOutput.ReadToEnd(); - - analyze.WaitForExit(); - watch.Stop(); - Console.WriteLine($"Total execution time: {watch.Elapsed.Duration()}"); - - Assert.IsTrue(0 == analyze.ExitCode, $"Code Coverage analyze failed: {analysisOutput}"); - - coverage.Load(output); - return coverage; - } - - protected void AssertCoverage(XmlNode node, double expectedCoverage) - { - var coverage = node.Attributes["block_coverage"] != null - ? double.Parse(node.Attributes["block_coverage"].Value) - : double.Parse(node.Attributes["line-rate"].Value) * 100; - Console.WriteLine($"Checking coverage for {node.Name} {node.Attributes["name"].Value}. Expected at least: {expectedCoverage}. Result: {coverage}"); - Assert.IsTrue(coverage > expectedCoverage, $"Coverage check failed for {node.Name} {node.Attributes["name"].Value}. Expected at least: {expectedCoverage}. Found: {coverage}"); - } - - protected static string GetCoverageFileNameFromTrx(string trxFilePath, string resultsDirectory) - { - Assert.IsTrue(File.Exists(trxFilePath), "Trx file not found: {0}", trxFilePath); - XmlDocument doc = new XmlDocument(); - using (var trxStream = new FileStream(trxFilePath, FileMode.Open, FileAccess.Read)) - { - doc.Load(trxStream); - var deploymentElements = doc.GetElementsByTagName("Deployment"); - Assert.IsTrue(deploymentElements.Count == 1, - "None or more than one Deployment tags found in trx file:{0}", trxFilePath); - var deploymentDir = deploymentElements[0].Attributes.GetNamedItem("runDeploymentRoot")?.Value; - Assert.IsTrue(string.IsNullOrEmpty(deploymentDir) == false, - "runDeploymentRoot attribute not found in trx file:{0}", trxFilePath); - var collectors = doc.GetElementsByTagName("Collector"); - - string fileName = string.Empty; - for (int i = 0; i < collectors.Count; i++) - { - if (string.Equals(collectors[i].Attributes.GetNamedItem("collectorDisplayName").Value, - "Code Coverage", StringComparison.OrdinalIgnoreCase)) - { - fileName = collectors[i].FirstChild?.FirstChild?.FirstChild?.Attributes.GetNamedItem("href") - ?.Value; - } - } - - Assert.IsTrue(string.IsNullOrEmpty(fileName) == false, "Coverage file name not found in trx file: {0}", - trxFilePath); - return Path.Combine(resultsDirectory, deploymentDir, "In", fileName); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/CodeCoverageTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/CodeCoverageTests.cs deleted file mode 100644 index 37afffe262..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/CodeCoverageTests.cs +++ /dev/null @@ -1,368 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; - using System.Xml; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - internal struct TestParameters - { - public enum SettingsType - { - None = 0, - Default = 1, - Custom = 2, - XmlOutput = 3, - CoberturaOutput = 4 - } - - public string AssemblyName { get; set; } - - public string TargetPlatform { get; set; } - - public SettingsType RunSettingsType { get; set; } - - public string RunSettingsPath { get; set; } - - public int ExpectedPassedTests { get; set; } - - public int ExpectedSkippedTests { get; set; } - - public int ExpectedFailedTests { get; set; } - - public bool CheckSkipped { get; set; } - } - - [TestClass] - //Code coverage only supported on windows (based on the message in output) - [TestCategory("Windows-Review")] - public class CodeCoverageTests : CodeCoverageAcceptanceTestBase - { - private readonly string resultsDirectory; - - public CodeCoverageTests() - { - this.resultsDirectory = GetResultsDirectory(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CollectCodeCoverageWithCollectOptionForx86(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "SimpleTestProject.dll", - TargetPlatform = "x86", - RunSettingsPath = string.Empty, - RunSettingsType = TestParameters.SettingsType.None, - ExpectedPassedTests = 1, - ExpectedSkippedTests = 1, - ExpectedFailedTests = 1 - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CollectCodeCoverageWithCollectOptionForx64(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "SimpleTestProject.dll", - TargetPlatform = "x64", - RunSettingsPath = string.Empty, - RunSettingsType = TestParameters.SettingsType.None, - ExpectedPassedTests = 1, - ExpectedSkippedTests = 1, - ExpectedFailedTests = 1 - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CollectCodeCoverageX86WithRunSettings(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "SimpleTestProject.dll", - TargetPlatform = "x86", - RunSettingsPath = string.Empty, - RunSettingsType = TestParameters.SettingsType.Default, - ExpectedPassedTests = 1, - ExpectedSkippedTests = 1, - ExpectedFailedTests = 1 - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CollectCodeCoverageX64WithRunSettings(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "SimpleTestProject.dll", - TargetPlatform = "x64", - RunSettingsPath = string.Empty, - RunSettingsType = TestParameters.SettingsType.Default, - ExpectedPassedTests = 1, - ExpectedSkippedTests = 1, - ExpectedFailedTests = 1 - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CodeCoverageShouldAvoidExclusionsX86(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "CodeCoverageTest.dll", - TargetPlatform = "x86", - RunSettingsPath = Path.Combine( - IntegrationTestEnvironment.TestPlatformRootDirectory, - @"scripts", "vstest-codecoverage2.runsettings"), - RunSettingsType = TestParameters.SettingsType.Custom, - ExpectedPassedTests = 3, - ExpectedSkippedTests = 0, - ExpectedFailedTests = 0, - CheckSkipped = true - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CodeCoverageShouldAvoidExclusionsX64(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "CodeCoverageTest.dll", - TargetPlatform = "x64", - RunSettingsPath = Path.Combine( - IntegrationTestEnvironment.TestPlatformRootDirectory, - @"scripts", "vstest-codecoverage2.runsettings"), - RunSettingsType = TestParameters.SettingsType.Custom, - ExpectedPassedTests = 3, - ExpectedSkippedTests = 0, - ExpectedFailedTests = 0, - CheckSkipped = true - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CollectCodeCoverageSpecifyOutputFormatXml(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "SimpleTestProject.dll", - TargetPlatform = "x64", - RunSettingsPath = string.Empty, - RunSettingsType = TestParameters.SettingsType.XmlOutput, - ExpectedPassedTests = 1, - ExpectedSkippedTests = 1, - ExpectedFailedTests = 1 - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void CollectCodeCoverageSpecifyOutputFormatCoberturaOverrideRunSettingsConfiguration(RunnerInfo runnerInfo) - { - var parameters = new TestParameters() - { - AssemblyName = "SimpleTestProject.dll", - TargetPlatform = "x64", - RunSettingsPath = Path.Combine( - IntegrationTestEnvironment.TestPlatformRootDirectory, - @"scripts", "vstest-codecoverage2.runsettings"), - RunSettingsType = TestParameters.SettingsType.CoberturaOutput, - ExpectedPassedTests = 1, - ExpectedSkippedTests = 1, - ExpectedFailedTests = 1 - }; - - this.CollectCodeCoverage(runnerInfo, parameters); - } - - private void CollectCodeCoverage(RunnerInfo runnerInfo, TestParameters testParameters) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var arguments = this.CreateArguments(runnerInfo, testParameters, out var trxFilePath); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus( - testParameters.ExpectedPassedTests, - testParameters.ExpectedSkippedTests, - testParameters.ExpectedFailedTests); - - var actualCoverageFile = CodeCoverageTests.GetCoverageFileNameFromTrx(trxFilePath, resultsDirectory); - Console.WriteLine($@"Coverage file: {actualCoverageFile} Results directory: {resultsDirectory} trxfile: {trxFilePath}"); - Assert.IsTrue(File.Exists(actualCoverageFile), "Coverage file not found: {0}", actualCoverageFile); - - if (testParameters.RunSettingsType == TestParameters.SettingsType.XmlOutput) - { - Assert.IsTrue(actualCoverageFile.EndsWith(".xml", StringComparison.InvariantCultureIgnoreCase)); - } - else if (testParameters.RunSettingsType == TestParameters.SettingsType.CoberturaOutput) - { - Assert.IsTrue(actualCoverageFile.EndsWith(".cobertura.xml", StringComparison.InvariantCultureIgnoreCase)); - } - else - { - Assert.IsTrue(actualCoverageFile.EndsWith(".coverage", StringComparison.InvariantCultureIgnoreCase)); - } - - var coverageDocument = this.GetXmlCoverage(actualCoverageFile); - if (testParameters.CheckSkipped) - { - this.AssertSkippedMethod(coverageDocument); - } - - this.ValidateCoverageData(coverageDocument, testParameters.AssemblyName, testParameters.RunSettingsType != TestParameters.SettingsType.CoberturaOutput); - - Directory.Delete(this.resultsDirectory, true); - } - - private string CreateArguments( - RunnerInfo runnerInfo, - TestParameters testParameters, - out string trxFilePath) - { - var assemblyPaths = this.GetAssetFullPath(testParameters.AssemblyName); - - string traceDataCollectorDir = Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, - "artifacts", IntegrationTestEnvironment.BuildConfiguration, "Microsoft.CodeCoverage"); - - string diagFileName = Path.Combine(this.resultsDirectory, "diaglog.txt"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, - this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory); - arguments = string.Concat(arguments, $" /Diag:{diagFileName}", - $" /TestAdapterPath:{traceDataCollectorDir}"); - arguments = string.Concat(arguments, $" /Platform:{testParameters.TargetPlatform}"); - - trxFilePath = Path.Combine(this.resultsDirectory, Guid.NewGuid() + ".trx"); - arguments = string.Concat(arguments, " /logger:trx;logfilename=" + trxFilePath); - - var defaultRunSettingsPath = Path.Combine( - IntegrationTestEnvironment.TestPlatformRootDirectory, - @"scripts", "vstest-codecoverage.runsettings"); - - var runSettings = string.Empty; - switch (testParameters.RunSettingsType) - { - case TestParameters.SettingsType.None: - runSettings = $" /collect:\"Code Coverage\""; - break; - case TestParameters.SettingsType.Default: - runSettings = $" /settings:{defaultRunSettingsPath}"; - break; - case TestParameters.SettingsType.Custom: - runSettings = $" /settings:{testParameters.RunSettingsPath}"; - break; - case TestParameters.SettingsType.XmlOutput: - runSettings = $" /collect:\"Code Coverage;Format=Xml\""; - if (!string.IsNullOrWhiteSpace(testParameters.RunSettingsPath)) - { - runSettings += $" /settings:{testParameters.RunSettingsPath}"; - } - break; - case TestParameters.SettingsType.CoberturaOutput: - runSettings = $" /collect:\"Code Coverage;Format=Cobertura\""; - if (!string.IsNullOrWhiteSpace(testParameters.RunSettingsPath)) - { - runSettings += $" /settings:{testParameters.RunSettingsPath}"; - } - break; - } - - arguments = string.Concat(arguments, runSettings); - - return arguments; - } - - private void AssertSkippedMethod(XmlDocument document) - { - var module = this.GetModuleNode(document.DocumentElement, "codecoveragetest.dll"); - Assert.IsNotNull(module); - - var coverage = double.Parse(module.Attributes["block_coverage"].Value); - Assert.IsTrue(coverage > CodeCoverageAcceptanceTestBase.ExpectedMinimalModuleCoverage); - - var testSignFunction = this.GetNode(module, "skipped_function", "TestSign()"); - Assert.IsNotNull(testSignFunction); - Assert.AreEqual("name_excluded", testSignFunction.Attributes["reason"].Value); - - var skippedTestMethod = this.GetNode(module, "skipped_function", "__CxxPureMSILEntry_Test()"); - Assert.IsNotNull(skippedTestMethod); - Assert.AreEqual("name_excluded", skippedTestMethod.Attributes["reason"].Value); - - var testAbsFunction = this.GetNode(module, "function", "TestAbs()"); - Assert.IsNotNull(testAbsFunction); - } - - private void ValidateCoverageData(XmlDocument document, string moduleName, bool validateSourceFileNames) - { - var module = this.GetModuleNode(document.DocumentElement, moduleName.ToLower()); - - if (module == null) - { - module = this.GetModuleNode(document.DocumentElement, moduleName); - } - Assert.IsNotNull(module); - - this.AssertCoverage(module, CodeCoverageAcceptanceTestBase.ExpectedMinimalModuleCoverage); - - // In case of cobertura report. Cobertura report has different format. - if (validateSourceFileNames) - { - this.AssertSourceFileName(module); - } - } - - private void AssertSourceFileName(XmlNode module) - { - const string ExpectedFileName = "UnitTest1.cs"; - - var found = false; - var sourcesNode = module.SelectSingleNode("./source_files"); - foreach (XmlNode node in sourcesNode.ChildNodes) - { - if (node.Attributes["path"].Value.Contains(ExpectedFileName)) - { - found = true; - break; - } - } - - Assert.IsTrue(found); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DataCollectionTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DataCollectionTests.cs deleted file mode 100644 index 9a74582e5c..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DataCollectionTests.cs +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Xml; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class DataCollectionTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void ExecuteTestsWithDataCollection(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var resultsDir = GetResultsDirectory(); - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - string runSettings = this.GetRunsettingsFilePath(resultsDir); - string diagFileName = Path.Combine(resultsDir, "diaglog.txt"); - var extensionsPath = Path.Combine( - this.testEnvironment.TestAssetsPath, - Path.GetFileNameWithoutExtension("OutOfProcDataCollector"), - "bin", - IntegrationTestEnvironment.BuildConfiguration, - this.testEnvironment.RunnerFramework); - var arguments = PrepareArguments(assemblyPaths, null, runSettings, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, $" /Diag:{diagFileName}", $" /TestAdapterPath:{extensionsPath}"); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 1, 1); - this.VaildateDataCollectorOutput(resultsDir); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void ExecuteTestsWithDataCollectionUsingCollectArgument(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var resultsDir = GetResultsDirectory(); - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - string diagFileName = Path.Combine(resultsDir, "diaglog.txt"); - var extensionsPath = Path.Combine( - this.testEnvironment.TestAssetsPath, - Path.GetFileNameWithoutExtension("OutOfProcDataCollector"), - "bin", - IntegrationTestEnvironment.BuildConfiguration, - this.testEnvironment.RunnerFramework); - - var arguments = PrepareArguments(assemblyPaths, null, null, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDir); - arguments = string.Concat(arguments, $" /Diag:{diagFileName}", $" /Collect:SampleDataCollector", $" /TestAdapterPath:{extensionsPath}"); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 1, 1); - this.VaildateDataCollectorOutput(resultsDir); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetCoreTargetFrameworkDataSource] - public void DataCollectorAssemblyLoadingShouldNotThrowErrorForNetCore(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var resultsDir = GetResultsDirectory(); - var arguments = PrepareArguments(GetAssetFullPath("AppDomainGetAssembliesTestProject.dll", "netcoreapp2.1"), string.Empty, string.Empty, this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void DataCollectorAssemblyLoadingShouldNotThrowErrorForFullFramework(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var resultsDir = GetResultsDirectory(); - var arguments = PrepareArguments(GetAssetFullPath("AppDomainGetAssembliesTestProject.dll"), string.Empty, string.Empty, this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDir); - } - - private static void CreateDataCollectionRunSettingsFile(string destinationRunsettingsPath, Dictionary dataCollectionAttributes) - { - var doc = new XmlDocument(); - var xmlDeclaration = doc.CreateNode(XmlNodeType.XmlDeclaration, string.Empty, string.Empty); - - doc.AppendChild(xmlDeclaration); - var runSettingsNode = doc.CreateElement(Constants.RunSettingsName); - doc.AppendChild(runSettingsNode); - var dcConfigNode = doc.CreateElement(Constants.DataCollectionRunSettingsName); - runSettingsNode.AppendChild(dcConfigNode); - var dataCollectorsNode = doc.CreateElement(Constants.DataCollectorsSettingName); - dcConfigNode.AppendChild(dataCollectorsNode); - var dataCollectorNode = doc.CreateElement(Constants.DataCollectorSettingName); - dataCollectorsNode.AppendChild(dataCollectorNode); - - foreach (var kvp in dataCollectionAttributes) - { - dataCollectorNode.SetAttribute(kvp.Key, kvp.Value); - } - - using (var stream = new FileHelper().GetStream(destinationRunsettingsPath, FileMode.Create)) - { - doc.Save(stream); - } - } - - private void VaildateDataCollectorOutput(string resultsDir) - { - // Output of datacollection attachment. - this.StdOutputContains("filename.txt"); - this.StdOutputContains("TestCaseStarted"); - this.StdOutputContains("TestCaseEnded"); - this.StdOutputContains("SampleUnitTestProject2.UnitTest1.PassingTest2"); - this.StdOutputContains("SampleUnitTestProject2.UnitTest1.FailingTest2"); - this.StdOutputContains("Data collector 'SampleDataCollector' message: SessionStarted"); - this.StdOutputContains("Data collector 'SampleDataCollector' message: TestHostLaunched"); - this.StdOutputContains("Data collector 'SampleDataCollector' message: SessionEnded"); - this.StdOutputContains("Data collector 'SampleDataCollector' message: my warning"); - this.StdErrorContains("Data collector 'SampleDataCollector' message: Data collector caught an exception of type 'System.Exception': 'my exception'. More details:"); - this.StdOutputContains("Data collector 'SampleDataCollector' message: Dispose called."); - - // Verify attachments - var isTestRunLevelAttachmentFound = false; - var testCaseLevelAttachmentsCount = 0; - var diaglogsFileCount = 0; - - var resultFiles = Directory.GetFiles(resultsDir, "*.txt", SearchOption.AllDirectories); - - foreach (var file in resultFiles) - { - // Test Run level attachments are logged in standard output. - if (file.Contains("filename.txt")) - { - this.StdOutputContains(file); - isTestRunLevelAttachmentFound = true; - } - - if (file.Contains("testcasefilename")) - { - testCaseLevelAttachmentsCount++; - } - - if (file.Contains("diaglog")) - { - diaglogsFileCount++; - } - } - - Assert.IsTrue(isTestRunLevelAttachmentFound); - Assert.AreEqual(3, testCaseLevelAttachmentsCount); - Assert.AreEqual(3, diaglogsFileCount); - } - - private string GetRunsettingsFilePath(string resultsDir) - { - var runsettingsPath = Path.Combine(resultsDir, "test_" + Guid.NewGuid() + ".runsettings"); - var dataCollectionAttributes = new Dictionary(); - - dataCollectionAttributes.Add("friendlyName", "SampleDataCollector"); - dataCollectionAttributes.Add("uri", "my://sample/datacollector"); - - CreateDataCollectionRunSettingsFile(runsettingsPath, dataCollectionAttributes); - return runsettingsPath; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DebugAssertTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DebugAssertTests.cs deleted file mode 100644 index e995a4b272..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DebugAssertTests.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System; - - [TestClass] - public class DebugAssertTests : AcceptanceTestBase - { - [TestMethod] - // this is core only, there is nothing we can do about Debug.Assert crashing the process on framework - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] - public void RunningTestWithAFailingDebugAssertDoesNotCrashTheHostingProcess(RunnerInfo runnerInfo) - { - // when debugging this test in case it starts failing, be aware that the default behavior of Debug.Assert - // is to not crash the process when we are running in debug, and debugger is attached - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var resultsDir = GetResultsDirectory(); - var assemblyPath = this.BuildMultipleAssemblyPath("CrashingOnDebugAssertTestProject.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPath, null, null, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - - // this will have failed tests when our trace listener works and crash the testhost process when it does not - // because crashing processes is what a failed Debug.Assert does by default, unless you have a debugger attached - this.ValidateSummaryStatus(passedTestsCount: 4, failedTestsCount: 4, 0); - StringAssert.Contains(this.StdOut, "threw exception: Microsoft.VisualStudio.TestPlatform.TestHost.DebugAssertException:"); - - TryRemoveDirectory(resultsDir); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DeprecateExtensionsPathWarningTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DeprecateExtensionsPathWarningTests.cs deleted file mode 100644 index a1843bc87c..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DeprecateExtensionsPathWarningTests.cs +++ /dev/null @@ -1,86 +0,0 @@ -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System.Collections.Generic; - using System.IO; - using System.Reflection; - - [TestClass] - [TestCategory("Windows-Review")] - public class DeprecateExtensionsPathWarningTests : AcceptanceTestBase - { - private IList adapterDependencies; - private IList copiedFiles; - - private string BuildConfiguration - { - get - { -#if DEBUG - return "Debug"; -#else - return "Release"; -#endif - } - } - - [TestCleanup] - public void Cleanup() - { - try - { - foreach (var file in this.copiedFiles) - { - File.Delete(file); - } - } - catch - { - - } - } - - [TestInitialize] - public void CopyAdapterToExtensions() - { - this.copiedFiles = new List(); - var extensionsDir = Path.Combine(Path.GetDirectoryName(this.GetConsoleRunnerPath()), "Extensions"); - this.adapterDependencies = Directory.GetFiles(this.GetTestAdapterPath(), "*.dll", SearchOption.TopDirectoryOnly); - - try - { - foreach (var file in this.adapterDependencies) - { - var fileCopied = Path.Combine(extensionsDir, Path.GetFileName(file)); - this.copiedFiles.Add(fileCopied); - File.Copy(file, fileCopied); - } - } - catch - { - - } - } - - [TestMethod] - public void VerifyDeprecatedWarningIsThrownWhenAdaptersPickedFromExtensionDirectory() - { - var resultsDir = GetResultsDirectory(); - var arguments = PrepareArguments(this.GetSampleTestAssembly(), null, null, this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.StdOutputContains("Adapter lookup is being changed, please follow"); - - TryRemoveDirectory(resultsDir); - } - - public override string GetConsoleRunnerPath() - { - DirectoryInfo currentDirectory = new DirectoryInfo(typeof(DeprecateExtensionsPathWarningTests).GetTypeInfo().Assembly.GetAssemblyLocation()).Parent.Parent.Parent.Parent.Parent.Parent; - - return Path.Combine(currentDirectory.FullName, "artifacts", BuildConfiguration, "net451", "win7-x64", "vstest.console.exe"); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DifferentTestFrameworkSimpleTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DifferentTestFrameworkSimpleTests.cs deleted file mode 100644 index 1672ec95c6..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DifferentTestFrameworkSimpleTests.cs +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - [TestCategory("Windows-Review")] - public class DifferentTestFrameworkSimpleTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void ChutzpahRunAllTestExecution(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - var testJSFileAbsolutePath = Path.Combine(this.testEnvironment.TestAssetsPath, "test.js"); - var arguments = PrepareArguments(testJSFileAbsolutePath, this.GetTestAdapterPath(UnitTestFramework.Chutzpah), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 0); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - // vstest.console is x64 now, but x86 run "in process" run should still succeed by being run in x86 testhost - // Skip .NET (Core) tests because we test them below. - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true, useCoreRunner: false)] - public void CPPRunAllTestExecutionNetFramework(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - CppRunAllTests(runnerInfo.RunnerFramework, "x86"); - } - - - [TestMethod] - [TestCategory("Windows-Review")] - // vstest.console is 64-bit now, run in process to test the 64-bit native dll - // Skip .NET (Core) tests because we test them below. - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true, useCoreRunner: false)] - public void CPPRunAllTestExecutionPlatformx64NetFramework(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - CppRunAllTests(runnerInfo.RunnerFramework, "x64"); - } - - [TestMethod] - // C++ tests cannot run in .NET Framework host under .NET Core, because we only ship .NET Standard CPP adapter in .NET Core - // We also don't test x86 for .NET Core, because the resolver there does not switch between x86 and x64 correctly, it just uses the parent process bitness. - // We run this on netcore31 and not the default netcore21 because netcore31 is the minimum tfm that has the runtime features we need, such as additionaldeps. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false, useCoreRunner: true, useNetCore21Target: false, useNetCore31Target: true)] - public void CPPRunAllTestExecutionPlatformx64Net(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - CppRunAllTests(runnerInfo.RunnerFramework, "x64"); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void WebTestRunAllTestsWithRunSettings(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var runSettingsFilePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".runsettings"); - - //test the iterationCount setting for WebTestRunConfiguration in run settings - var runSettingsXml = $@" - - - - {FrameworkArgValue} - - "; - - IntegrationTestBase.CreateRunSettingsFile(runSettingsFilePath, runSettingsXml); - - //minWebTestResultFileSizeInKB is set to 150 here as the web test has a iteration count set to 5 - //therefore, the test will run for 5 iterations resulting in web test result file size of at least 150 KB - WebTestRunAllTests(runnerInfo.RunnerFramework, runSettingsFilePath, 150); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void CodedWebTestRunAllTests(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - CodedWebTestRunAllTests(runnerInfo.RunnerFramework); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void NUnitRunAllTestExecution(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var resultsDir = GetResultsDirectory(); - var arguments = PrepareArguments( - this.GetAssetFullPath("NUTestProject.dll"), - this.GetTestAdapterPath(UnitTestFramework.NUnit), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDir); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 0); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void XUnitRunAllTestExecution(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - string testAssemblyPath; - // Xunit >= 2.2 won't support net451, Minimum target framework it supports is net452. - if (this.testEnvironment.TargetFramework.Equals("net451")) - { - testAssemblyPath = testEnvironment.GetTestAsset("XUTestProject.dll", "net46"); - } - else - { - testAssemblyPath = testEnvironment.GetTestAsset("XUTestProject.dll"); - } - - var arguments = PrepareArguments( - testAssemblyPath, - this.GetTestAdapterPath(UnitTestFramework.XUnit), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDir); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 0); - - TryRemoveDirectory(resultsDir); - } - - private void CppRunAllTests(string runnerFramework, string platform) - { - var resultsDir = GetResultsDirectory(); - string assemblyRelativePathFormat = - @"microsoft.testplatform.testasset.nativecpp\2.0.0\contentFiles\any\any\{0}\Microsoft.TestPlatform.TestAsset.NativeCPP.dll"; - var assemblyRelativePath = platform.Equals("x64", StringComparison.OrdinalIgnoreCase) - ? string.Format(assemblyRelativePathFormat, platform) - : string.Format(assemblyRelativePathFormat, ""); - var assemblyAbsolutePath = Path.Combine(this.testEnvironment.PackageDirectory, assemblyRelativePath); - var arguments = PrepareArguments(assemblyAbsolutePath, string.Empty, string.Empty, this.FrameworkArgValue, this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 0); - - TryRemoveDirectory(resultsDir); - } - - private void WebTestRunAllTests(string runnerFramework, string runSettingsFilePath = null, int minWebTestResultFileSizeInKB = 0) - { - if (runnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("WebTests tests not supported with .Netcore runner."); - return; - } - - string assemblyRelativePath = - @"microsoft.testplatform.qtools.assets\2.0.0\contentFiles\any\any\WebTestAssets\WebTest1.webtest"; - - var assemblyAbsolutePath = Path.Combine(this.testEnvironment.PackageDirectory, assemblyRelativePath); - var resultsDirectory = GetResultsDirectory(); - var arguments = PrepareArguments( - assemblyAbsolutePath, - string.Empty, - runSettingsFilePath, this.FrameworkArgValue, string.Empty, resultsDirectory); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - if (minWebTestResultFileSizeInKB > 0) - { - var dirInfo = new DirectoryInfo(resultsDirectory); - var webtestResultFile = "WebTest1.webtestResult"; - var files = dirInfo.GetFiles(webtestResultFile, SearchOption.AllDirectories); - Assert.IsTrue(files.Length > 0, $"File {webtestResultFile} not found under results directory {resultsDirectory}"); - - var fileSizeInKB = files[0].Length / 1024; - Assert.IsTrue(fileSizeInKB > minWebTestResultFileSizeInKB, $"Size of the file {webtestResultFile} is {fileSizeInKB} KB. It is not greater than {minWebTestResultFileSizeInKB} KB indicating iterationCount in run settings not honored."); - } - - TryRemoveDirectory(resultsDirectory); - } - - private void CodedWebTestRunAllTests(string runnerFramework) - { - if (runnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("WebTests tests not supported with .Netcore runner."); - return; - } - - var resultsDir = GetResultsDirectory(); - string assemblyRelativePath = - @"microsoft.testplatform.qtools.assets\2.0.0\contentFiles\any\any\WebTestAssets\BingWebTest.dll"; - var assemblyAbsolutePath = Path.Combine(this.testEnvironment.PackageDirectory, assemblyRelativePath); - var arguments = PrepareArguments( - assemblyAbsolutePath, - string.Empty, - string.Empty, this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DisableAppdomainTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DisableAppdomainTests.cs deleted file mode 100644 index 718b30c210..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DisableAppdomainTests.cs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System; - using System.Collections.Generic; - using System.IO; - - [TestClass] - [TestCategory("Windows")] - public class DisableAppdomainTests : AcceptanceTestBase - { - [TestMethod] - [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] - public void DisableAppdomainTest(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - - var diableAppdomainTest1 = testEnvironment.GetTestAsset("DisableAppdomainTest1.dll", "net451"); - var diableAppdomainTest2 = testEnvironment.GetTestAsset("DisableAppdomainTest2.dll", "net451"); - - RunTests(runnerInfo.RunnerFramework, string.Format("{0}\" \"{1}", diableAppdomainTest1, diableAppdomainTest2), 2); - } - - [TestMethod] - [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] - public void NewtonSoftDependencyWithDisableAppdomainTest(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - - var newtonSoftDependnecyTest = testEnvironment.GetTestAsset("NewtonSoftDependency.dll", "net451"); - - RunTests(runnerInfo.RunnerFramework, newtonSoftDependnecyTest, 1); - } - - private void RunTests(string runnerFramework, string testAssembly, int passedTestCount) - { - if (runnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("This test is not meant for .netcore."); - return; - } - - var runConfigurationDictionary = new Dictionary - { - { "DisableAppDomain", "true" } - }; - - var resultsDir = GetResultsDirectory(); - var diableAppdomainTest1 = testEnvironment.GetTestAsset("DisableAppdomainTest1.dll", "net451"); - var diableAppdomainTest2 = testEnvironment.GetTestAsset("DisableAppdomainTest2.dll", "net451"); - var arguments = PrepareArguments( - testAssembly, - string.Empty, - GetRunsettingsFilePath(runConfigurationDictionary), - this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(passedTestCount, 0, 0); - - TryRemoveDirectory(resultsDir); - } - - private string GetRunsettingsFilePath(Dictionary runConfigurationDictionary) - { - var runsettingsPath = Path.Combine( - Path.GetTempPath(), - "test_" + Guid.NewGuid() + ".runsettings"); - CreateRunSettingsFile(runsettingsPath, runConfigurationDictionary); - return runsettingsPath; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DiscoveryTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DiscoveryTests.cs deleted file mode 100644 index e372313888..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DiscoveryTests.cs +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Reflection; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class DiscoveryTests : AcceptanceTestBase - { - private readonly string dummyFilePath = Path.Combine(Path.GetTempPath(), $"{System.Guid.NewGuid()}.txt"); - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void DiscoverAllTests(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTestForDiscovery(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue); - - var listOfTests = new[] { "SampleUnitTestProject.UnitTest1.PassingTest", "SampleUnitTestProject.UnitTest1.FailingTest", "SampleUnitTestProject.UnitTest1.SkippingTest" }; - this.ValidateDiscoveredTests(listOfTests); - this.ExitCodeEquals(0); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void MultipleSourcesDiscoverAllTests(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - var listOfTests = new[] { - "SampleUnitTestProject.UnitTest1.PassingTest", - "SampleUnitTestProject.UnitTest1.FailingTest", - "SampleUnitTestProject.UnitTest1.SkippingTest", - "SampleUnitTestProject.UnitTest1.PassingTest2", - "SampleUnitTestProject.UnitTest1.FailingTest2", - "SampleUnitTestProject.UnitTest1.SkippingTest2" - }; - - this.InvokeVsTestForDiscovery(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue); - - this.ValidateDiscoveredTests(listOfTests); - this.ExitCodeEquals(0); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void DiscoverFullyQualifiedTests(RunnerInfo runnerInfo) - { - var resultsDir = GetResultsDirectory(); - - try - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var listOfTests = new[] { "SampleUnitTestProject.UnitTest1.PassingTest", "SampleUnitTestProject.UnitTest1.FailingTest", "SampleUnitTestProject.UnitTest1.SkippingTest" }; - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /ListFullyQualifiedTests", " /ListTestsTargetPath:\"" + dummyFilePath + "\""); - this.InvokeVsTest(arguments); - - this.ValidateFullyQualifiedDiscoveredTests(this.dummyFilePath, listOfTests); - this.ExitCodeEquals(0); - } - finally - { - File.Delete(this.dummyFilePath); - TryRemoveDirectory(resultsDir); - } - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsShouldShowProperWarningIfNoTestsOnTestCaseFilter(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assetFullPath = this.GetAssetFullPath("SimpleTestProject2.dll"); - var arguments = PrepareArguments(assetFullPath, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /listtests"); - arguments = string.Concat(arguments, " /testcasefilter:NonExistTestCaseName"); - arguments = string.Concat(arguments, " /logger:\"console;prefix=true\""); - this.InvokeVsTest(arguments); - - StringAssert.Contains(this.StdOut, "Warning: No test matches the given testcase filter `NonExistTestCaseName` in"); - StringAssert.Contains(this.StdOut, "SimpleTestProject2.dll"); - this.ExitCodeEquals(0); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - public void TypesToLoadAttributeTests() - { - var environment = new IntegrationTestEnvironment(); - var extensionsDirectory = environment.ExtensionsDirectory; - var extensionsToVerify = new Dictionary - { - {"Microsoft.TestPlatform.Extensions.EventLogCollector.dll", new[] { "Microsoft.TestPlatform.Extensions.EventLogCollector.EventLogDataCollector"} }, - {"Microsoft.TestPlatform.Extensions.BlameDataCollector.dll", new[] { "Microsoft.TestPlatform.Extensions.BlameDataCollector.BlameLogger", "Microsoft.TestPlatform.Extensions.BlameDataCollector.BlameCollector" } }, - {"Microsoft.VisualStudio.TestPlatform.Extensions.Html.TestLogger.dll", new[] { "Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger" } }, - {"Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.dll", new[] { "Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.TrxLogger" } }, - {"Microsoft.TestPlatform.TestHostRuntimeProvider.dll", new[] { "Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting.DefaultTestHostManager", "Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting.DotnetTestHostManager" } } - }; - - foreach (var extension in extensionsToVerify.Keys) - { - var assemblyFile = Path.Combine(extensionsDirectory, extension); - var assembly = Assembly.LoadFrom(assemblyFile); - - var expected = extensionsToVerify[extension]; - var actual = TypesToLoadUtilities.GetTypesToLoad(assembly).Select(i => i.FullName).ToArray(); - - CollectionAssert.AreEquivalent(expected, actual, $"Specified types using TypesToLoadAttribute in \"{extension}\" assembly doesn't match the expected."); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/DotnetTestTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/DotnetTestTests.cs deleted file mode 100644 index 1743a747d5..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/DotnetTestTests.cs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class DotnetTestTests : AcceptanceTestBase - { - [TestMethod] - // patched dotnet is not published on non-windows systems - [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource] - public void RunDotnetTestWithCsproj(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var projectName = "SimpleTestProject.csproj"; - var projectPath = this.GetProjectFullPath(projectName); - - this.InvokeDotnetTest($@"{projectPath} --logger:""Console;Verbosity=normal"""); - - // ensure our dev version is used - this.StdOutputContains("-dev"); - this.ValidateSummaryStatus(1, 1, 1); - this.ExitCodeEquals(1); - } - - - [TestMethod] - // patched dotnet is not published on non-windows systems - [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource] - public void RunDotnetTestWithDll(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var assemblyPath = this.BuildMultipleAssemblyPath("SimpleTestProject.dll").Trim('\"'); - this.InvokeDotnetTest($@"{assemblyPath} --logger:""Console;Verbosity=normal"""); - - // ensure our dev version is used - this.StdOutputContains("-dev"); - this.ValidateSummaryStatus(1, 1, 1); - this.ExitCodeEquals(1); - } - - [TestMethod] - // patched dotnet is not published on non-windows systems - [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource] - public void PassInlineSettings(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var projectName = "ParametrizedTestProject.csproj"; - var projectPath = this.GetProjectFullPath(projectName); - this.InvokeDotnetTest($@"{projectPath} --logger:""Console;Verbosity=normal"" -- TestRunParameters.Parameter(name =\""weburl\"", value=\""http://localhost//def\"")"); - this.ValidateSummaryStatus(1, 0, 0); - this.ExitCodeEquals(0); - } - - [TestMethod] - // patched dotnet is not published on non-windows systems - [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource] - public void PassInlineSettingsToDll(RunnerInfo runnerInfo) - { - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var assemblyPath = this.BuildMultipleAssemblyPath("ParametrizedTestProject.dll").Trim('\"'); - this.InvokeDotnetTest($@"{assemblyPath} --logger:""Console;Verbosity=normal"" -- TestRunParameters.Parameter(name=\""weburl\"", value=\""http://localhost//def\"")"); - - this.ValidateSummaryStatus(1, 0, 0); - this.ExitCodeEquals(0); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/EventLogCollectorTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/EventLogCollectorTests.cs deleted file mode 100644 index 5187b01731..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/EventLogCollectorTests.cs +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - - [TestClass] - [TestCategory("Windows-Review")] - public class EventLogCollectorTests : AcceptanceTestBase - { - private readonly string resultsDir; - - public EventLogCollectorTests() - { - this.resultsDir = GetResultsDirectory(); - } - - // Fails randomly https://ci.dot.net/job/Microsoft_vstest/job/master/job/Windows_NT_Release_prtest/2084/console - // https://ci.dot.net/job/Microsoft_vstest/job/master/job/Windows_NT_Debug_prtest/2085/console - [Ignore] - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void EventLogDataCollectorShoudCreateLogFileHavingEvents(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.testEnvironment.GetTestAsset("EventLogUnitTestProject.dll"); - - string runSettings = this.GetRunsettingsFilePath(); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), runSettings, this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(3, 0, 0); - this.VaildateDataCollectorOutput(); - this.StdOutputDoesNotContains("An exception occurred while collecting final entries from the event log"); - this.StdErrorDoesNotContains("event log has encountered an exception, some events might get lost"); - this.StdOutputDoesNotContains("event log may have been cleared during collection; some events may not have been collected"); - this.StdErrorDoesNotContains("Unable to read event log"); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void EventLogDataCollectorShoudCreateLogFileWithoutEventsIfEventsAreNotLogged(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - var assemblyPaths = this.testEnvironment.GetTestAsset("SimpleTestProject.dll"); - - string runSettings = this.GetRunsettingsFilePath(); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), runSettings, this.FrameworkArgValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 1, 1); - this.StdOutputDoesNotContains("An exception occurred while collecting final entries from the event log"); - this.StdErrorDoesNotContains("event log has encountered an exception, some events might get lost"); - this.StdOutputDoesNotContains("event log may have been cleared during collection; some events may not have been collected"); - this.StdErrorDoesNotContains("Unable to read event log"); - } - - private string GetRunsettingsFilePath() - { - var runsettingsPath = Path.Combine( - Path.GetTempPath(), - "test_" + Guid.NewGuid() + ".runsettings"); - - string runSettingsXml = @" - - - 0 - x64 - Framework45 - - - - - - - - - "; - - File.WriteAllText(runsettingsPath, runSettingsXml); - return runsettingsPath; - } - - private string GetRunsettingsFilePathWithCustomSource() - { - var runsettingsPath = Path.Combine( - Path.GetTempPath(), - "test_" + Guid.NewGuid() + ".runsettings"); - - string runSettingsXml = @" - - - 0 - x64 - Framework45 - - - - - - - - - "; - - File.WriteAllText(runsettingsPath, runSettingsXml); - return runsettingsPath; - } - - private void VaildateDataCollectorOutput() - { - // Verify attachments - var di = new DirectoryInfo(this.resultsDir); - var resultFiles = di.EnumerateFiles("Event Log.xml", SearchOption.AllDirectories) - .OrderBy(d => d.CreationTime) - .Select(d => d.FullName) - .ToList(); - - Assert.AreEqual(4, resultFiles.Count); - this.StdOutputContains("Event Log.xml"); - - var fileContent1 = File.ReadAllText(resultFiles[0]); - var fileContent2 = File.ReadAllText(resultFiles[1]); - var fileContent3 = File.ReadAllText(resultFiles[2]); - var fileContent4 = File.ReadAllText(resultFiles[3]); - - var eventIdsDics = new Dictionary(); - eventIdsDics.Add(new[] { "110", "111", "112" }, false); - eventIdsDics.Add(new[] { "220", "221", "222", "223" }, false); - eventIdsDics.Add(new[] { "330", "331", "332" }, false); - - // Since there is no guaranty that test will run in a particular order, we will check file for all available list of ids - Assert.IsTrue(this.VerifyOrder2(fileContent1, eventIdsDics), string.Format("Event log file content: {0}", fileContent1)); - Assert.IsTrue(this.VerifyOrder2(fileContent2, eventIdsDics), string.Format("Event log file content: {0}", fileContent2)); - Assert.IsTrue(this.VerifyOrder2(fileContent3, eventIdsDics), string.Format("Event log file content: {0}", fileContent3)); - - Assert.IsTrue(this.VerifyOrder(fileContent4, new[] { "110", "111", "112", "220", "221", "222", "223", "330", "331", "332" }), string.Format("Event log file content: {0}", fileContent4)); - } - - private bool VerifyOrder2(string content, Dictionary eventIdsDics) - { - foreach (var eventIds in eventIdsDics) - { - if (eventIds.Value == false) - { - if (VerifyOrder(content, eventIds.Key)) - { - eventIdsDics[eventIds.Key] = true; - return true; - } - } - } - return false; - } - - private bool VerifyOrder(string content, string[] eventIds) - { - for (int i = 0; i < eventIds.Length; i++) - { - int currentIndex = 0; - currentIndex = content.IndexOf(eventIds[i], currentIndex); - if (currentIndex == -1) - { - return false; - } - } - - return true; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/ExecutionTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/ExecutionTests.cs deleted file mode 100644 index e09721e8d9..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/ExecutionTests.cs +++ /dev/null @@ -1,374 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; - using System.Threading; - - using global::TestPlatform.TestUtilities; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ExecutionTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void RunMultipleTestAssemblies(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - - this.InvokeVsTestForExecution(assemblyPaths, this.GetTestAdapterPath(), this.FrameworkArgValue, string.Empty); - - this.ValidateSummaryStatus(2, 2, 2); - this.ExitCodeEquals(1); // failing tests - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void RunMultipleTestAssembliesWithoutTestAdapterPath(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll").Trim('\"'); - var xunitAssemblyPath = this.testEnvironment.TargetFramework.Equals("net451") ? - testEnvironment.GetTestAsset("XUTestProject.dll", "net46") : - testEnvironment.GetTestAsset("XUTestProject.dll"); - - assemblyPaths = string.Concat(assemblyPaths, "\" \"", xunitAssemblyPath); - this.InvokeVsTestForExecution(assemblyPaths, string.Empty, this.FrameworkArgValue, string.Empty); - - this.ValidateSummaryStatus(2, 2, 1); - this.ExitCodeEquals(1); // failing tests - } - - // We cannot run this test on Mac/Linux because we're trying to switch the arch between x64 and x86 - // and after --arch feature implementation we won't find correct muxer on CI. - [TestCategory("Windows")] - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - [DoNotParallelize] - public void RunMultipleTestAssembliesInParallel(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /Parallel"); - arguments = string.Concat(arguments, " /Platform:x86"); - string testhostProcessName = string.Empty; - // for the desktop we will run testhost.x86 in two copies, but for core - // we will run a combination of testhost.x86 and dotnet, where the dotnet will be - // the test console, and sometimes it will be the test host (e.g dotnet, dotnet, testhost.x86, or dotnet, testhost.x86, testhost.x86) - // based on the target framework - int expectedNumOfProcessCreated = this.IsDesktopRunner() ? 2 : 3; - var testhostProcessNames = new[] { "testhost.x86", "dotnet" }; - - var cts = new CancellationTokenSource(); - var numOfProcessCreatedTask = NumberOfProcessLaunchedUtility.NumberOfProcessCreated( - cts, - testhostProcessNames); - - this.InvokeVsTest(arguments); - - cts.Cancel(); - Assert.AreEqual( - expectedNumOfProcessCreated, - numOfProcessCreatedTask.Result.Count, - $"Number of {testhostProcessName} process created, expected: {expectedNumOfProcessCreated} actual: {numOfProcessCreatedTask.Result.Count} ({ string.Join(", ", numOfProcessCreatedTask.Result) })"); - this.ValidateSummaryStatus(2, 2, 2); - this.ExitCodeEquals(1); // failing tests - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void TestSessionTimeOutTests(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:TestSessionTimeoutTest"); - - // set TestSessionTimeOut = 7 sec - arguments = string.Concat(arguments, " -- RunConfiguration.TestSessionTimeout=7000"); - this.InvokeVsTest(arguments); - - this.ExitCodeEquals(1); - this.StdErrorContains("Test Run Aborted."); - this.StdErrorContains("Aborting test run: test run timeout of 7000 milliseconds exceeded."); - this.StdOutputDoesNotContains("Total tests: 6"); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetCoreTargetFrameworkDataSource] - public void TestPlatformShouldBeCompatibleWithOldTestHost(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SampleProjectWithOldTestHost.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 0, 0); - this.ExitCodeEquals(0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void WorkingDirectoryIsSourceDirectory(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /tests:WorkingDirectoryTest"); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 0, 0); - this.ExitCodeEquals(0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void StackOverflowExceptionShouldBeLoggedToConsoleAndDiagLogFile(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - if (IntegrationTestEnvironment.BuildConfiguration.Equals("release", StringComparison.OrdinalIgnoreCase)) - { - // On release, x64 builds, recursive calls may be replaced with loops (tail call optimization) - Assert.Inconclusive("On StackOverflowException testhost not exited in release configuration."); - return; - } - - var diagLogFilePath = Path.Combine(resultsDir, $"std_error_log_{Guid.NewGuid()}.txt"); - File.Delete(diagLogFilePath); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:ExitWithStackoverFlow"); - arguments = string.Concat(arguments, $" /diag:{diagLogFilePath}"); - - this.InvokeVsTest(arguments); - - var errorMessage = "Process is terminated due to StackOverflowException."; - if (runnerInfo.TargetFramework.StartsWith("netcoreapp2.")) - { - errorMessage = "Process is terminating due to StackOverflowException."; - } - - this.ExitCodeEquals(1); - FileAssert.Contains(diagLogFilePath, errorMessage); - this.StdErrorContains(errorMessage); - File.Delete(diagLogFilePath); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void UnhandleExceptionExceptionShouldBeLoggedToDiagLogFile(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var diagLogFilePath = Path.Combine(resultsDir, $"std_error_log_{Guid.NewGuid()}.txt"); - File.Delete(diagLogFilePath); - - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:ExitwithUnhandleException"); - arguments = string.Concat(arguments, $" /diag:{diagLogFilePath}"); - - this.InvokeVsTest(arguments); - - var errorFirstLine = "Test host standard error line: Unhandled Exception: System.InvalidOperationException: Operation is not valid due to the current state of the object."; - FileAssert.Contains(diagLogFilePath, errorFirstLine); - File.Delete(diagLogFilePath); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void IncompatibleSourcesWarningShouldBeDisplayedInTheConsole(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var expectedWarningContains = @"Following DLL(s) do not match current settings, which are .NETFramework,Version=v4.5.1 framework and X86 platform. SimpleTestProject3.dll is built for Framework .NETFramework,Version=v4.5.1 and Platform X64"; - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject3.dll", "SimpleTestProjectx86.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:PassingTestx86"); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 0, 0); - this.ExitCodeEquals(0); - - // When both x64 & x86 DLL is passed x64 dll will be ignored. - this.StdOutputContains(expectedWarningContains); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void NoIncompatibleSourcesWarningShouldBeDisplayedInTheConsole(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var expectedWarningContains = @"Following DLL(s) do not match current settings, which are .NETFramework,Version=v4.5.1 framework and X86 platform. SimpleTestProjectx86 is built for Framework .NETFramework,Version=v4.5.1 and Platform X86"; - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProjectx86.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 0, 0); - this.ExitCodeEquals(0); - - this.StdOutputDoesNotContains(expectedWarningContains); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void IncompatibleSourcesWarningShouldBeDisplayedInTheConsoleOnlyWhenRunningIn32BitOS(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var expectedWarningContains = @"Following DLL(s) do not match current settings, which are .NETFramework,Version=v4.5.1 framework and X86 platform. SimpleTestProject2.dll is built for Framework .NETFramework,Version=v4.5.1 and Platform X64"; - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject2.dll"); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 1, 1); - this.ExitCodeEquals(1); - - // If we are running this test on 64 bit OS, it should not output any warning - if (Environment.Is64BitOperatingSystem) - { - this.StdOutputDoesNotContains(expectedWarningContains); - } - // If we are running this test on 32 bit OS, it should output warning message - else - { - this.StdOutputContains(expectedWarningContains); - } - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void ExitCodeShouldReturnOneWhenTreatNoTestsAsErrorParameterSetToTrueAndNoTestMatchesFilter(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - // Setting /TestCaseFilter to the test name, which does not exists in the assembly, so we will have 0 tests executed - arguments = string.Concat(arguments, " /TestCaseFilter:TestNameThatMatchesNoTestInTheAssembly"); - - arguments = string.Concat(arguments, " -- RunConfiguration.TreatNoTestsAsError=true"); - this.InvokeVsTest(arguments); - - this.ExitCodeEquals(1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void ExitCodeShouldReturnZeroWhenTreatNoTestsAsErrorParameterSetToFalseAndNoTestMatchesFilter(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - // Setting /TestCaseFilter to the test name, which does not exists in the assembly, so we will have 0 tests executed - arguments = string.Concat(arguments, " /TestCaseFilter:TestNameThatMatchesNoTestInTheAssembly"); - - arguments = string.Concat(arguments, " -- RunConfiguration.TreatNoTestsAsError=false"); - this.InvokeVsTest(arguments); - - this.ExitCodeEquals(0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] - public void ExitCodeShouldNotDependOnTreatNoTestsAsErrorTrueValueWhenThereAreAnyTestsToRun(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - arguments = string.Concat(arguments, " -- RunConfiguration.TreatNoTestsAsError=true"); - this.InvokeVsTest(arguments); - - // Returning 1 because of failing test in test assembly (SimpleTestProject2.dll) - this.ExitCodeEquals(1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] - public void ExitCodeShouldNotDependOnFailTreatNoTestsAsErrorFalseValueWhenThereAreAnyTestsToRun(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - arguments = string.Concat(arguments, " -- RunConfiguration.TreatNoTestsAsError=false"); - this.InvokeVsTest(arguments); - - // Returning 1 because of failing test in test assembly (SimpleTestProject2.dll) - this.ExitCodeEquals(1); - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/ExecutionThreadApartmentStateTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/ExecutionThreadApartmentStateTests.cs deleted file mode 100644 index 0ea06b97f1..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/ExecutionThreadApartmentStateTests.cs +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - [TestCategory("Windows-Review")] - public class ExecutionThreadApartmentStateTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void UITestShouldPassIfApartmentStateIsSTA(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:UITestMethod"); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetCoreTargetFrameworkDataSource] - public void WarningShouldBeShownWhenValueIsSTAForNetCore(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject2.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:PassingTest2 -- RunConfiguration.ExecutionThreadApartmentState=STA"); - this.InvokeVsTest(arguments); - this.StdOutputContains("ExecutionThreadApartmentState option not supported for framework:"); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void UITestShouldFailWhenDefaultApartmentStateIsMTA(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:UITestMethod -- RunConfiguration.ExecutionThreadApartmentState=MTA"); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(0, 1, 0); - - TryRemoveDirectory(resultsDir); - } - - [Ignore(@"Issue with TestSessionTimeout: https://github.com/Microsoft/vstest/issues/980")] - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void CancelTestExectionShouldWorkWhenApartmentStateIsSTA(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject3.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /tests:UITestWithSleep1,UITestMethod -- RunConfiguration.ExecutionThreadApartmentState=STA RunConfiguration.TestSessionTimeout=2000"); - this.InvokeVsTest(arguments); - this.StdOutputContains("Canceling test run: test run timeout of"); - this.ValidateSummaryStatus(1, 0, 0); - - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetCoreRunner.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetCoreRunner.cs deleted file mode 100644 index 8a2374b802..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetCoreRunner.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Linq; - using System.Reflection; - using TestUtilities; - using VisualStudio.TestTools.UnitTesting; - - /// - /// Runs tests using the dotnet vstest.console.dll built against .NET Core 2.1. - /// Provide a list of target frameworks to run the tests from given as a ';' separated list, or using a constant containing that range such as - /// AcceptanceTestBase.NETFX452_NET50 = "net452;net472;net48;netcoreapp2.1;netcoreapp3.1;net5.0" to determine which target framework of the project - /// to test. The target project must list those TFMs in the TargetFrameworks property in csproj. - /// - public class NetCoreRunner : Attribute, ITestDataSource - { - /// - /// Initializes a new instance of the class. - /// - /// To run tests with desktop runner(vstest.console.exe), use AcceptanceTestBase.Net452TargetFramework or alike values. - public NetCoreRunner(string targetFrameworks = AcceptanceTestBase.NETFX452_NET50) - { - var isWindows = Environment.OSVersion.Platform.ToString().StartsWith("Win"); - // on non-windows we want to filter down only to netcoreapp runner, and net5.0 and newer. - Func filter = tfm => isWindows ? true : !tfm.StartsWith("net4"); - foreach (var fmw in targetFrameworks.Split(';').Where(filter)) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.CoreRunnerFramework, fmw) }); - } - - } - - private List dataRows = new List(); - - public IEnumerable GetData(MethodInfo methodInfo) - { - return this.dataRows; - } - - public string GetDisplayName(MethodInfo methodInfo, object[] data) - { - return string.Format(CultureInfo.CurrentCulture, "{0} ({1})", methodInfo.Name, string.Join(",", data)); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetCoreTargetFrameworkDataSource.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetCoreTargetFrameworkDataSource.cs deleted file mode 100644 index 48242500fc..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetCoreTargetFrameworkDataSource.cs +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Reflection; - using TestUtilities; - using VisualStudio.TestTools.UnitTesting; - - /// - /// The attribute defining runner framework, target framework and target runtime for netcoreapp1.* - /// First Argument (Runner framework) = This decides who will run the tests. If runner framework is netcoreapp then "dotnet vstest.console.dll" will run the tests. - /// If runner framework is net46 then vstest.console.exe will run the tests. - /// Second argument (target framework) = The framework for which test will run - /// - public class NetCoreTargetFrameworkDataSource : Attribute, ITestDataSource - { - private List dataRows = new List(); - /// - /// Initializes a new instance of the class. - /// - /// To run tests with desktop runner(vstest.console.exe) - /// To run tests with core runner(dotnet vstest.console.dll) - public NetCoreTargetFrameworkDataSource( - bool useDesktopRunner = true, - // adding another runner is not necessary until we need to start building against another - // sdk, because the netcoreapp2.1 executable is forward compatible - bool useCoreRunner = true, - bool useNetCore21Target = true, - // laying the ground work here for tests to be able to run against 3.1 but not enabling it for - // all tests to avoid changing all acceptance tests right now - bool useNetCore31Target = false) - { - var isWindows = Environment.OSVersion.Platform.ToString().StartsWith("Win"); - if (useDesktopRunner && isWindows) - { - var runnerFramework = IntegrationTestBase.DesktopRunnerFramework; - if (useNetCore21Target) - { - this.AddRunnerDataRow(runnerFramework, AcceptanceTestBase.Core21TargetFramework); - } - - if (useNetCore31Target) - { - this.AddRunnerDataRow(runnerFramework, AcceptanceTestBase.Core31TargetFramework); - } - } - - if (useCoreRunner) - { - var runnerFramework = IntegrationTestBase.CoreRunnerFramework; - if (useNetCore21Target) - { - this.AddRunnerDataRow(runnerFramework, AcceptanceTestBase.Core21TargetFramework); - } - - if (useNetCore31Target) - { - this.AddRunnerDataRow(runnerFramework, AcceptanceTestBase.Core31TargetFramework); - } - } - } - - private void AddRunnerDataRow(string runnerFramework, string targetFramework) - { - var runnerInfo = new RunnerInfo(runnerFramework, targetFramework); - this.dataRows.Add(new object[] { runnerInfo }); - } - - public IEnumerable GetData(MethodInfo methodInfo) - { - return this.dataRows; - } - - public string GetDisplayName(MethodInfo methodInfo, object[] data) - { - return string.Format(CultureInfo.CurrentCulture, "{0} ({1})", methodInfo.Name, string.Join(",", data)); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetFrameworkRunner.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetFrameworkRunner.cs deleted file mode 100644 index 883a80968f..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetFrameworkRunner.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Reflection; - using TestUtilities; - using VisualStudio.TestTools.UnitTesting; - - /// - /// Runs tests using the dotnet vstest.console.dll built against .NET Core 2.1. - /// Provide a list of target frameworks to run the tests from given as a ';' separated list, or using a constant containing that range such as - /// AcceptanceTestBase.NETFX452_NET50 = "net452;net472;net48;netcoreapp2.1;netcoreapp3.1;net5.0" to determine which target framework of the project - /// to test. The target project must list those TFMs in the TargetFrameworks property in csproj. - /// - public class NetFrameworkRunner : Attribute, ITestDataSource - { - /// - /// Initializes a new instance of the class. - /// - /// To run tests with desktop runner(vstest.console.exe), use AcceptanceTestBase.Net452TargetFramework or alike values. - public NetFrameworkRunner(string targetFrameworks = AcceptanceTestBase.NETFX452_NET50) - { - var isWindows = Environment.OSVersion.Platform.ToString().StartsWith("Win"); - if (!isWindows) - { - return; - } - - foreach (var fmw in targetFrameworks.Split(';')) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.DesktopRunnerFramework, fmw, AcceptanceTestBase.InIsolation) }); - } - - } - - private List dataRows = new List(); - - public IEnumerable GetData(MethodInfo methodInfo) - { - return this.dataRows; - } - - public string GetDisplayName(MethodInfo methodInfo, object[] data) - { - return string.Format(CultureInfo.CurrentCulture, "{0} ({1})", methodInfo.Name, string.Join(",", data)); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetFullTargetFrameworkDataSource.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetFullTargetFrameworkDataSource.cs deleted file mode 100644 index c69101f611..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/NetFullTargetFrameworkDataSource.cs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Reflection; - using TestUtilities; - using VisualStudio.TestTools.UnitTesting; - - /// - /// The attribute defining runner framework and target framework for net451. - /// First Argument (Runner framework) = This decides who will run the tests. If runner framework is netcoreapp then "dotnet vstest.console.dll" will run the tests. - /// If runner framework is net46 then vstest.console.exe will run the tests. - /// Second argument (target framework) = The framework for which test will run - /// - public class NetFullTargetFrameworkDataSource : Attribute, ITestDataSource - { - /// - /// Initializes a new instance of the class. - /// - /// Run test in isolation - /// Run tests in process - /// To run tests with desktop runner(vstest.console.exe) - /// To run tests with core runner(dotnet vstest.console.dll) - public NetFullTargetFrameworkDataSource(bool inIsolation = true, bool inProcess = false, bool useDesktopRunner = true, bool useCoreRunner = true) - { - this.dataRows = new List(); - - var isWindows = Environment.OSVersion.Platform.ToString().StartsWith("Win"); - if (useCoreRunner && isWindows) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.CoreRunnerFramework, AcceptanceTestBase.DesktopTargetFramework) }); - } - - if (useDesktopRunner && isWindows) - { - if (inIsolation) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.DesktopRunnerFramework, AcceptanceTestBase.DesktopTargetFramework, AcceptanceTestBase.InIsolation) }); - } - - if (inProcess) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.DesktopRunnerFramework, AcceptanceTestBase.DesktopTargetFramework) }); - } - } - } - - - /// - /// Initializes a new instance of the class. - /// - /// To run tests with desktop runner(vstest.console.exe), use AcceptanceTestBase.Net452TargetFramework or alike values. - public NetFullTargetFrameworkDataSource(string[] targetFrameworks, bool inIsolation = true, bool inProcess = false) - { - if (inIsolation) - { - foreach (var fmw in targetFrameworks) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.DesktopRunnerFramework, fmw, AcceptanceTestBase.InIsolation) }); - } - } - - if (inProcess) - { - foreach (var fmw in targetFrameworks) - { - this.dataRows.Add(new object[] { new RunnerInfo(IntegrationTestBase.DesktopRunnerFramework, fmw) }); - } - } - } - - /// - /// Gets or sets the data rows. - /// - private List dataRows = new List(); - - public IEnumerable GetData(MethodInfo methodInfo) - { - return this.dataRows; - } - - public string GetDisplayName(MethodInfo methodInfo, object[] data) - { - return string.Format(CultureInfo.CurrentCulture, "{0} ({1})", methodInfo.Name, string.Join(",", data)); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/RunnnerInfo.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Extension/RunnnerInfo.cs deleted file mode 100644 index 0b4ba85361..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Extension/RunnnerInfo.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - public class RunnerInfo - { - public RunnerInfo(string runnerType, string targetFramework): this(runnerType, targetFramework, "") - { - } - - public RunnerInfo(string runnerType, string targetFramework, string inIsolation) - { - this.RunnerFramework = runnerType; - this.TargetFramework = targetFramework; - this.InIsolationValue = inIsolation; - } - /// - /// Gets the target framework. - /// - public string TargetFramework - { - get; - set; - } - - /// - /// Gets the inIsolation. - /// Supported values = /InIsolation. - /// - public string InIsolationValue - { - get; set; - } - - /// - /// Gets the application type. - /// - public string RunnerFramework - { - get; - set; - } - - public override string ToString() - { - return string.Join(",", new[] { "RunnerFramework = " + RunnerFramework, " TargetFramework = " + TargetFramework, string.IsNullOrEmpty(InIsolationValue) ? " InProcess" : " InIsolation" }); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/FilePatternParserTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/FilePatternParserTests.cs deleted file mode 100644 index bfafb9eb36..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/FilePatternParserTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information.using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System.IO; - - [TestClass] - public class FilePatternParserTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void WildCardPatternShouldCorrectlyWorkOnFiles(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssembly = this.GetSampleTestAssembly(); - testAssembly = testAssembly.Replace("SimpleTestProject.dll", "*TestProj*.dll"); - - var arguments = PrepareArguments( - testAssembly, - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void WildCardPatternShouldCorrectlyWorkOnArbitraryDepthDirectories(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssembly = this.GetSampleTestAssembly(); - var oldAssemblyPath = Path.Combine("Debug", this.testEnvironment.TargetFramework, "SimpleTestProject.dll"); - var newAssemblyPath = Path.Combine("**", this.testEnvironment.TargetFramework, "*TestProj*.dll"); - testAssembly = testAssembly.Replace(oldAssemblyPath, newAssemblyPath); - - var arguments = PrepareArguments( - testAssembly, - this.GetTestAdapterPath(), - string.Empty, string.Empty, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void WildCardPatternShouldCorrectlyWorkForRelativeAssemblyPath(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssembly = this.GetSampleTestAssembly(); - testAssembly = testAssembly.Replace("SimpleTestProject.dll", "*TestProj*.dll"); - - var wildCardIndex = testAssembly.IndexOfAny(new char[] { '*' }); - var testAssemblyDirectory = testAssembly.Substring(0, wildCardIndex); - testAssembly = testAssembly.Substring(wildCardIndex); - - Directory.SetCurrentDirectory(testAssemblyDirectory); - - var arguments = PrepareArguments( - testAssembly, - this.GetTestAdapterPath(), - string.Empty, string.Empty, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void WildCardPatternShouldCorrectlyWorkOnMultipleFiles(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssembly = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - testAssembly = testAssembly.Replace("SimpleTestProject.dll", "*TestProj*.dll"); - testAssembly = testAssembly.Replace("SimpleTestProject2.dll", "*TestProj*.dll"); - - var arguments = PrepareArguments( - testAssembly, - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(2, 2, 2); - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/FrameworkTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/FrameworkTests.cs deleted file mode 100644 index 492498d83f..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/FrameworkTests.cs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class FrameworkTests : AcceptanceTestBase - { - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void FrameworkArgumentShouldWork(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments(GetSampleTestAssembly(), string.Empty, string.Empty, string.Empty, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " ", $"/Framework:{this.FrameworkArgValue}"); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void FrameworkShortNameArgumentShouldWork(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments(GetSampleTestAssembly(), string.Empty, string.Empty, string.Empty, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " ", $"/Framework:{this.testEnvironment.TargetFramework}"); - - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - // framework runner not available on Linux - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] - //[NetCoreTargetFrameworkDataSource] - public void OnWrongFrameworkPassedTestRunShouldNotRun(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments(GetSampleTestAssembly(), string.Empty, string.Empty, string.Empty, resultsDirectory: resultsDir); - if (runnerInfo.TargetFramework.Contains("netcore")) - { - arguments = string.Concat(arguments, " ", "/Framework:Framework45"); - } - else - { - arguments = string.Concat(arguments, " ", "/Framework:FrameworkCore10"); - } - this.InvokeVsTest(arguments); - - if (runnerInfo.TargetFramework.Contains("netcore")) - { - this.StdOutputContains("No test is available"); - } - else - { - // This test indirectly tests that we abort when incorrect framework is forced on a DLL, the failure message with the new fallback - // is uglier than then one before that suggests (incorrectly) to install Microsoft.NET.Test.Sdk into the project, which would work, - // but would not solve the problem. In either cases we should improve the message later. - this.StdErrorContains("Test Run Failed."); - } - - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSpecificTestsShouldWorkWithFrameworkInCompatibleWarning(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments(GetSampleTestAssembly(), string.Empty, string.Empty, string.Empty, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " ", "/tests:PassingTest"); - arguments = string.Concat(arguments, " ", "/Framework:Framework40"); - - this.InvokeVsTest(arguments); - - if (runnerInfo.TargetFramework.Contains("netcore")) - { - this.StdOutputContains("No test is available"); - } - else - { - this.StdOutputContains("Following DLL(s) do not match current settings, which are .NETFramework,Version=v4.0 framework and X86 platform."); - this.ValidateSummaryStatus(1, 0, 0); - } - - TryRemoveDirectory(resultsDir); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/ListExtensionsTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/ListExtensionsTests.cs deleted file mode 100644 index 65e64331bb..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/ListExtensionsTests.cs +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - // this is tested only on .NET Framework - [TestCategory("Windows-Review")] - public class ListExtensionsTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] - public void ListDiscoverersShouldShowInboxDiscoverers(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTest("/listDiscoverers"); - - if (this.IsDesktopRunner()) - { - this.StdOutputContains("executor://codedwebtestadapter/v1"); - this.StdOutputContains("executor://mstestadapter/v1"); - this.StdOutputContains("executor://webtestadapter/v1"); - this.StdOutputContains(".Webtest"); - this.StdOutputContains("executor://cppunittestexecutor/v1"); - } - else - { - // There are no inbox adapters for dotnet core - this.StdOutputDoesNotContains("executor://codedwebtestadapter/v1"); - this.StdOutputDoesNotContains("executor://mstestadapter/v1"); - this.StdOutputDoesNotContains("executor://webtestadapter/v1"); - this.StdOutputDoesNotContains(".Webtest"); - this.StdOutputDoesNotContains("executor://cppunittestexecutor/v1"); - } - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] - public void ListExecutorsShouldShowInboxExecutors(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTest("/listExecutors"); - - if (this.IsDesktopRunner()) - { - this.StdOutputContains("executor://CodedWebTestAdapter/v1"); - this.StdOutputContains("executor://MSTestAdapter/v1"); - this.StdOutputContains("executor://WebTestAdapter/v1"); - this.StdOutputContains("executor://CppUnitTestExecutor/v1"); - this.StdOutputContains("executor://UAPCppExecutorIdentifier"); - } - else - { - // There are no inbox adapters for dotnet core - this.StdOutputDoesNotContains("executor://CodedWebTestAdapter/v1"); - this.StdOutputDoesNotContains("executor://MSTestAdapter/v1"); - this.StdOutputDoesNotContains("executor://WebTestAdapter/v1"); - this.StdOutputDoesNotContains("executor://CppUnitTestExecutor/v1"); - this.StdOutputDoesNotContains("executor://UAPCppExecutorIdentifier"); - } - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] - public void ListLoggersShouldShowInboxLoggers(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTest("/listLoggers"); - - this.StdOutputContains("logger://Microsoft/TestPlatform/Extensions/Blame/v1"); - this.StdOutputContains("logger://Microsoft/TestPlatform/TrxLogger/v1"); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] - public void ListSettingsProvidersShouldShowInboxSettingsProviders(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTest("/listSettingsProviders"); - - if (this.IsDesktopRunner()) - { - this.StdOutputContains("MSTestSettingsProvider"); - } - else - { - // There are no inbox adapters for dotnet core - this.StdOutputDoesNotContains("MSTestSettingsProvider"); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/LoggerTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/LoggerTests.cs deleted file mode 100644 index 1d142d3fe2..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/LoggerTests.cs +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Linq; - using System.Text; - using System.IO; - using System.Xml; - using System; - - [TestClass] - public class LoggerTests : AcceptanceTestBase - { - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void TrxLoggerWithFriendlyNameShouldProperlyOverwriteFile(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var testResultsDirectory = GetResultsDirectory(); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - var trxFileName = "TestResults.trx"; - arguments = string.Concat(arguments, $" /logger:\"trx;LogFileName={trxFileName}\""); - this.InvokeVsTest(arguments); - - arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - arguments = string.Concat(arguments, $" /logger:\"trx;LogFileName={trxFileName}\""); - arguments = string.Concat(arguments, " /testcasefilter:Name~Pass"); - this.InvokeVsTest(arguments); - - var trxFilePath = Path.Combine(testResultsDirectory, trxFileName); - Assert.IsTrue(IsValidXml(trxFilePath), "Invalid content in Trx log file"); - - TryRemoveDirectory(testResultsDirectory); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void HtmlLoggerWithFriendlyNameShouldProperlyOverwriteFile(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var testResultsDirectory = GetResultsDirectory(); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - var htmlFileName = "TestResults.html"; - arguments = string.Concat(arguments, $" /logger:\"html;LogFileName={htmlFileName}\""); - this.InvokeVsTest(arguments); - - arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - arguments = string.Concat(arguments, $" /logger:\"html;LogFileName={htmlFileName}\""); - arguments = string.Concat(arguments, " /testcasefilter:Name~Pass"); - this.InvokeVsTest(arguments); - - var htmlLogFilePath = Path.Combine(testResultsDirectory, htmlFileName); - IsFileAndContentEqual(htmlLogFilePath); - - TryRemoveDirectory(testResultsDirectory); - } - - [TestMethod] - [NetCoreTargetFrameworkDataSource] - public void TrxLoggerWithExecutorUriShouldProperlyOverwriteFile(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var testResultsDirectory = GetResultsDirectory(); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - var trxFileName = "TestResults.trx"; - arguments = string.Concat(arguments, $" /logger:\"logger://Microsoft/TestPlatform/TrxLogger/v1;LogFileName={trxFileName}\""); - this.InvokeVsTest(arguments); - - arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - arguments = string.Concat(arguments, $" /logger:\"logger://Microsoft/TestPlatform/TrxLogger/v1;LogFileName={trxFileName}\""); - arguments = string.Concat(arguments, " /testcasefilter:Name~Pass"); - this.InvokeVsTest(arguments); - - var trxLogFilePath = Path.Combine(testResultsDirectory, trxFileName); - Assert.IsTrue(IsValidXml(trxLogFilePath), "Invalid content in Trx log file"); - - TryRemoveDirectory(testResultsDirectory); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - public void TrxLoggerWithLogFilePrefixShouldGenerateMultipleTrx(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var testResultsDirectory = GetResultsDirectory(); - var trxFileNamePattern = "TestResults"; - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - arguments = string.Concat(arguments, $" /logger:\"logger://Microsoft/TestPlatform/TrxLogger/v1;LogFilePrefix={trxFileNamePattern}\""); - this.InvokeVsTest(arguments); - - arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - arguments = string.Concat(arguments, $" /logger:\"logger://Microsoft/TestPlatform/TrxLogger/v1;LogFilePrefix={trxFileNamePattern}\""); - arguments = string.Concat(arguments, " /testcasefilter:Name~Pass"); - this.InvokeVsTest(arguments); - - var trxFilePaths = Directory.EnumerateFiles(testResultsDirectory, trxFileNamePattern + "_net*.trx"); - Assert.IsTrue(trxFilePaths.Count() > 1); - - TryRemoveDirectory(testResultsDirectory); - } - - [TestMethod] - [NetCoreTargetFrameworkDataSource] - public void HtmlLoggerWithExecutorUriShouldProperlyOverwriteFile(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var testResultsDirectory = GetResultsDirectory(); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - var htmlFileName = "TestResults.html"; - arguments = string.Concat(arguments, $" /logger:\"logger://Microsoft/TestPlatform/htmlLogger/v1;LogFileName{htmlFileName}\""); - this.InvokeVsTest(arguments); - - arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue, testResultsDirectory); - arguments = string.Concat(arguments, $" /logger:\"logger://Microsoft/TestPlatform/htmlLogger/v1;LogFileName={htmlFileName}\""); - arguments = string.Concat(arguments, " /testcasefilter:Name~Pass"); - this.InvokeVsTest(arguments); - - var htmlLogFilePath = Path.Combine(testResultsDirectory, htmlFileName); - IsFileAndContentEqual(htmlLogFilePath); - - TryRemoveDirectory(testResultsDirectory); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void TrxLoggerResultSummaryOutcomeValueShouldBeFailedIfNoTestsExecutedAndTreatNoTestsAsErrorIsTrue(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue); - var trxFileName = "TrxLogger.trx"; - - arguments = string.Concat(arguments, $" /logger:\"trx;LogFileName={trxFileName}\""); - - // Setting /TestCaseFilter to the test name, which does not exists in the assembly, so we will have 0 tests executed - arguments = string.Concat(arguments, " /TestCaseFilter:TestNameThatMatchesNoTestInTheAssembly"); - arguments = string.Concat(arguments, " -- RunConfiguration.TreatNoTestsAsError=true"); - - this.InvokeVsTest(arguments); - - var trxLogFilePath = Path.Combine(Directory.GetCurrentDirectory(), "TestResults", trxFileName); - string outcomeValue = GetElementAtributeValueFromTrx(trxLogFilePath, "ResultSummary", "outcome"); - - Assert.AreEqual("Failed", outcomeValue); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void TrxLoggerResultSummaryOutcomeValueShouldNotChangeIfNoTestsExecutedAndTreatNoTestsAsErrorIsFalse(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue); - var trxFileName = "TrxLogger.trx"; - - arguments = string.Concat(arguments, $" /logger:\"trx;LogFileName={trxFileName}\""); - - // Setting /TestCaseFilter to the test name, which does not exists in the assembly, so we will have 0 tests executed - arguments = string.Concat(arguments, " /TestCaseFilter:TestNameThatMatchesNoTestInTheAssembly"); - arguments = string.Concat(arguments, " -- RunConfiguration.TreatNoTestsAsError=false"); - - this.InvokeVsTest(arguments); - - var trxLogFilePath = Path.Combine(Directory.GetCurrentDirectory(), "TestResults", trxFileName); - string outcomeValue = GetElementAtributeValueFromTrx(trxLogFilePath, "ResultSummary", "outcome"); - - Assert.AreEqual("Completed", outcomeValue); - } - - private bool IsValidXml(string xmlFilePath) - { - try - { - using (var file = File.OpenRead(xmlFilePath)) - using (var reader = XmlReader.Create(file)) - { - while (reader.Read()) - { - } - - return true; - } - } - catch (XmlException) - { - return false; - } - } - - private void IsFileAndContentEqual(string filePath) - { - StringBuilder sb = new StringBuilder(); - using (var sr = new StreamReader(filePath)) - { - sb.Append(sr.ReadToEnd()); - } - - string filePathContent = sb.ToString(); - string[] divs = { "Total tests", "Passed", "Failed", "Skipped", "Run duration", "Pass percentage", "SampleUnitTestProject.UnitTest1.PassingTest" }; - foreach (string str in divs) - { - StringAssert.Contains(filePathContent, str); - } - } - - private static string GetElementAtributeValueFromTrx(string trxFileName, string fieldName, string attributeName) - { - using (FileStream file = File.OpenRead(trxFileName)) - using (XmlReader reader = XmlReader.Create(file)) - { - while (reader.Read()) - { - if (reader.Name.Equals(fieldName) && reader.NodeType == XmlNodeType.Element && reader.HasAttributes) - { - return reader.GetAttribute(attributeName); - } - } - } - - return null; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Microsoft.TestPlatform.AcceptanceTests.csproj b/test/Microsoft.TestPlatform.AcceptanceTests/Microsoft.TestPlatform.AcceptanceTests.csproj deleted file mode 100644 index bbc5b66688..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Microsoft.TestPlatform.AcceptanceTests.csproj +++ /dev/null @@ -1,40 +0,0 @@ - - - - ..\..\ - true - true - - - - Exe - netcoreapp2.1;net451 - netcoreapp3.1 - Microsoft.TestPlatform.AcceptanceTests - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/MultitargetingTestHostTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/MultitargetingTestHostTests.cs deleted file mode 100644 index 46c67fb526..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/MultitargetingTestHostTests.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System; - - using static AcceptanceTestBase; - - [TestClass] - public class MultitargetingTestHostTests : AcceptanceTestBase - { - [TestMethod] - [TestCategory("Windows-Review")] - // the underlying test is using xUnit to avoid AppDomain enhancements in MSTest that make this pass even without multitargetting - // xUnit supports net452 onwards, so that is why this starts at net452, I also don't test all framework versions - [NetCoreRunner(NETFX452_48)] - [NetFrameworkRunner(NETFX452_48)] - public void RunningTestWithAFailingDebugAssertDoesNotCrashTheHostingProcess(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var assemblyPath = this.BuildMultipleAssemblyPath("MultitargetedNetFrameworkProject.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPath, null, null, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(passedTestsCount: 1, failedTestsCount: 0, 0); - TryRemoveDirectory(resultsDir); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/PlatformTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/PlatformTests.cs deleted file mode 100644 index b979a655f9..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/PlatformTests.cs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System.Threading; - - using global::TestPlatform.TestUtilities; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - // monitoring the processes does not work correctly - [TestCategory("Windows-Review")] - public class PlatformTests : AcceptanceTestBase - { - /// - /// The run test execution with platform x64. - /// - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestExecutionWithPlatformx64(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var platformArg = " /Platform:x64"; - this.RunTestExecutionWithPlatform(platformArg, "testhost", 1); - } - - /// - /// The run test execution with platform x86. - /// - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestExecutionWithPlatformx86(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var platformArg = " /Platform:x86"; - this.RunTestExecutionWithPlatform(platformArg, "testhost.x86", 1); - } - - private void SetExpectedParams(ref int expectedNumOfProcessCreated, ref string testhostProcessName, string desktopHostProcessName) - { - testhostProcessName = desktopHostProcessName; - expectedNumOfProcessCreated = 1; - } - - private void RunTestExecutionWithPlatform(string platformArg, string testhostProcessName, int expectedNumOfProcessCreated) - { - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, platformArg); - - var cts = new CancellationTokenSource(); - var numOfProcessCreatedTask = NumberOfProcessLaunchedUtility.NumberOfProcessCreated( - cts, - testhostProcessName); - - this.InvokeVsTest(arguments); - - cts.Cancel(); - - Assert.AreEqual( - expectedNumOfProcessCreated, - numOfProcessCreatedTask.Result.Count, - $"Number of {testhostProcessName} process created, expected: {expectedNumOfProcessCreated} actual: {numOfProcessCreatedTask.Result.Count} ({ string.Join(", ", numOfProcessCreatedTask.Result) }) args: {arguments} runner path: {this.GetConsoleRunnerPath()}"); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/PortableNugetPackageTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/PortableNugetPackageTests.cs deleted file mode 100644 index 5daed63d49..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/PortableNugetPackageTests.cs +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System.IO; - using System.IO.Compression; - using System.Linq; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Extensions; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class PortableNugetPackageTests : AcceptanceTestBase - { - private static string portablePackageFolder; - - [ClassInitialize] - public static void ClassInit(TestContext testContext) - { - var packageLocation = Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, "artifacts", IntegrationTestEnvironment.BuildConfiguration, "packages"); - var nugetPackage = Directory.EnumerateFiles(packageLocation, "Microsoft.TestPlatform.Portable.*.nupkg").ToList(); - portablePackageFolder = Path.Combine(packageLocation, Path.GetFileNameWithoutExtension(nugetPackage[0])); - if (Directory.Exists(portablePackageFolder)) - { - Directory.Delete(portablePackageFolder, recursive: true); - } - ZipFile.ExtractToDirectory(nugetPackage[0], portablePackageFolder); - } - - [ClassCleanup] - public static void ClassCleanup() - { - Directory.Delete(portablePackageFolder, true); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void RunMultipleTestAssemblies(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - - this.InvokeVsTestForExecution(assemblyPaths, this.GetTestAdapterPath(), this.FrameworkArgValue, string.Empty); - - this.ValidateSummaryStatus(2, 2, 2); - this.ExitCodeEquals(1); // failing tests - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void DiscoverAllTests(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.InvokeVsTestForDiscovery(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue); - - var listOfTests = new[] { "SampleUnitTestProject.UnitTest1.PassingTest", "SampleUnitTestProject.UnitTest1.FailingTest", "SampleUnitTestProject.UnitTest1.SkippingTest" }; - this.ValidateDiscoveredTests(listOfTests); - this.ExitCodeEquals(0); - } - - public override string GetConsoleRunnerPath() - { - string consoleRunnerPath = string.Empty; - - if (this.IsDesktopRunner()) - { - consoleRunnerPath = Path.Combine(portablePackageFolder, "tools", "net451", "vstest.console.exe"); - } - else if (this.IsNetCoreRunner()) - { - var executablePath = IsWindows ? @"dotnet\dotnet.exe" : @"dotnet-linux/dotnet"; - consoleRunnerPath = Path.Combine(this.testEnvironment.ToolsDirectory, executablePath); - } - else - { - Assert.Fail("Unknown Runner framework - [{0}]", this.testEnvironment.RunnerFramework); - } - - Assert.IsTrue(File.Exists(consoleRunnerPath), "GetConsoleRunnerPath: Path not found: {0}", consoleRunnerPath); - return consoleRunnerPath; - } - - protected override string SetVSTestConsoleDLLPathInArgs(string args) - { - var vstestConsoleDll = Path.Combine(portablePackageFolder, "tools", "netcoreapp2.1", "vstest.console.dll"); - vstestConsoleDll = vstestConsoleDll.AddDoubleQuote(); - args = string.Concat( - vstestConsoleDll, - " ", - args); - return args; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Program.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Program.cs deleted file mode 100644 index f51a7b7fe2..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace testhost.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.AcceptanceTests/Properties/AssemblyInfo.cs deleted file mode 100644 index c55669458b..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestingMSTest")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("755996fa-672a-4272-9776-7f707a520058")] diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/ResultsDirectoryTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/ResultsDirectoryTests.cs deleted file mode 100644 index 26158e5d6c..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/ResultsDirectoryTests.cs +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System.IO; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ResultsDirectoryTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void TrxFileShouldBeCreatedInResultsDirectory(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue); - var trxFileName = "TestResults.trx"; - var resultsDir = GetResultsDirectory(); - var trxFilePath = Path.Combine(resultsDir, trxFileName); - arguments = string.Concat(arguments, $" /logger:\"trx;LogFileName={trxFileName}\""); - arguments = string.Concat(arguments, $" /ResultsDirectory:{resultsDir}"); - - // Delete if already exists - TryRemoveDirectory(resultsDir); - - this.InvokeVsTest(arguments); - - Assert.IsTrue(File.Exists(trxFilePath), $"Expected Trx file: {trxFilePath} not created in results directory"); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void ResultsDirectoryRelativePathShouldWork(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue, runnerInfo.InIsolationValue); - var trxFileName = "TestResults.trx"; - var relativeDirectory = @"relative\directory"; - var resultsDirectory = Path.Combine(Directory.GetCurrentDirectory(), relativeDirectory); - - var trxFilePath = Path.Combine(resultsDirectory, trxFileName); - arguments = string.Concat(arguments, $" /logger:\"trx;LogFileName={trxFileName}\""); - arguments = string.Concat(arguments, $" /ResultsDirectory:{relativeDirectory}"); - - if (Directory.Exists(resultsDirectory)) - { - Directory.Delete(resultsDirectory, true); - } - - this.InvokeVsTest(arguments); - - Assert.IsTrue(File.Exists(trxFilePath), $"Expected Trx file: {trxFilePath} not created in results directory"); - TryRemoveDirectory(resultsDirectory); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/RunsettingsTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/RunsettingsTests.cs deleted file mode 100644 index 93ce21ae97..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/RunsettingsTests.cs +++ /dev/null @@ -1,635 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Threading; - - using global::TestPlatform.TestUtilities; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - // monitoring the processes does not work correctly - [TestCategory("Windows-Review")] - public class RunsettingsTests : AcceptanceTestBase - { - private string runsettingsPath = Path.Combine(Path.GetTempPath(), "test_" + Guid.NewGuid() + ".runsettings"); - - [TestCleanup] - public void TestCleanup() - { - if (File.Exists(runsettingsPath)) - { - File.Delete(runsettingsPath); - } - } - - #region Runsettings precedence tests - /// - /// Command line run settings should have high precedence among settings file, cli runsettings and cli switches - /// - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void CommandLineRunSettingsShouldWinAmongAllOptions(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var targetPlatform = "x86"; - var testhostProcessName = new[] { "testhost.x86", "dotnet" }; - var expectedNumOfProcessCreated = GetExpectedNumOfProcessCreatedForWithoutParallel(); - - // passing parallel - var runConfigurationDictionary = new Dictionary - { - { "MaxCpuCount", "0" }, - { "TargetFrameworkVersion", this.GetTargetFramworkForRunsettings() }, - { "TestAdaptersPaths", this.GetTestAdapterPath() } - }; - // passing different platform - var additionalArgs = "/Platform:x64"; - - var runSettingsArgs = String.Join( - " ", - new string[] - { - "RunConfiguration.MaxCpuCount=1", - string.Concat("RunConfiguration.TargetPlatform=",targetPlatform), - string.Concat("RunConfiguration.TargetFrameworkVersion=" , this.GetTargetFramworkForRunsettings()), - string.Concat("RunConfiguration.TestAdaptersPaths=" , this.GetTestAdapterPath()) - }); - - this.RunTestWithRunSettings(runConfigurationDictionary, runSettingsArgs, additionalArgs, testhostProcessName, expectedNumOfProcessCreated); - } - - /// - /// Command line run settings should have high precedence btween cli runsettings and cli switches. - /// - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void CLIRunsettingsShouldWinBetweenCLISwitchesAndCLIRunsettings(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var targetPlatform = "x86"; - var testhostProcessName = new[] { "testhost.x86", "dotnet" }; - var expectedNumOfProcessCreated = GetExpectedNumOfProcessCreatedForWithoutParallel(); - - // Pass parallel - var additionalArgs = "/Parallel"; - - // Pass non parallel - var runSettingsArgs = String.Join( - " ", - new string[] - { - "RunConfiguration.MaxCpuCount=1", - string.Concat("RunConfiguration.TargetPlatform=",targetPlatform), - string.Concat("RunConfiguration.TargetFrameworkVersion=" , this.GetTargetFramworkForRunsettings()), - string.Concat("RunConfiguration.TestAdaptersPaths=" , this.GetTestAdapterPath()) - }); - - this.RunTestWithRunSettings(null, runSettingsArgs, additionalArgs, testhostProcessName, expectedNumOfProcessCreated); - } - - /// - /// Command line switches should have high precedence if runsetting file and command line switch specified - /// - /// - /// - /// - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void CommandLineSwitchesShouldWinBetweenSettingsFileAndCommandLineSwitches(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var testhostProcessName = new[] { "testhost.x86", "dotnet" }; - var expectedNumOfProcessCreated = GetExpectedNumOfProcessCreatedForWithoutParallel(); - - // passing different platform - var runConfigurationDictionary = new Dictionary - { - { "MaxCpuCount", "1" }, - { "TargetPlatform", "x64" }, - { "TargetFrameworkVersion", this.GetTargetFramworkForRunsettings() }, - { "TestAdaptersPaths", this.GetTestAdapterPath() } - }; - var additionalArgs = "/Platform:x86"; - - this.RunTestWithRunSettings(runConfigurationDictionary, null, additionalArgs, testhostProcessName, expectedNumOfProcessCreated); - } - - #endregion - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSettingsWithoutParallelAndPlatformX86(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var targetPlatform = "x86"; - var testhostProcessNames = new[] { "testhost.x86" }; - var expectedNumOfProcessCreated = 1; - - var runConfigurationDictionary = new Dictionary - { - { "MaxCpuCount", "1" }, - { "TargetPlatform", targetPlatform }, - { "TargetFrameworkVersion", this.GetTargetFramworkForRunsettings() }, - { "TestAdaptersPaths", this.GetTestAdapterPath() } - }; - this.RunTestWithRunSettings(runConfigurationDictionary, null, null, testhostProcessNames, expectedNumOfProcessCreated); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSettingsParamsAsArguments(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var targetPlatform = "x86"; - var testhostProcessName = new[] { "testhost.x86" }; - var expectedNumOfProcessCreated = 1; - - var runSettingsArgs = String.Join( - " ", - new string[] - { - "RunConfiguration.MaxCpuCount=1", - string.Concat("RunConfiguration.TargetPlatform=",targetPlatform), - string.Concat("RunConfiguration.TargetFrameworkVersion=" , this.GetTargetFramworkForRunsettings()), - string.Concat("RunConfiguration.TestAdaptersPaths=" , this.GetTestAdapterPath()) - }); - - this.RunTestWithRunSettings(null, runSettingsArgs, null, testhostProcessName, expectedNumOfProcessCreated); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSettingsAndRunSettingsParamsAsArguments(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var targetPlatform = "x86"; - var testhostProcessName = new[] { "testhost.x86" }; - var expectedNumOfProcessCreated = 1; - var runConfigurationDictionary = new Dictionary - { - { "MaxCpuCount", "2" }, - { "TargetPlatform", targetPlatform }, - { "TargetFrameworkVersion", this.GetTargetFramworkForRunsettings() }, - { "TestAdaptersPaths", this.GetTestAdapterPath() } - }; - - var runSettingsArgs = String.Join( - " ", - new string[] - { - "RunConfiguration.MaxCpuCount=1", - string.Concat("RunConfiguration.TargetPlatform=",targetPlatform), - string.Concat("RunConfiguration.TargetFrameworkVersion=" , this.GetTargetFramworkForRunsettings()), - string.Concat("RunConfiguration.TestAdaptersPaths=" , this.GetTestAdapterPath()) - }); - - this.RunTestWithRunSettings(runConfigurationDictionary, runSettingsArgs, null, testhostProcessName, expectedNumOfProcessCreated); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSettingsWithParallelAndPlatformX64(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var targetPlatform = "x64"; - var testhostProcessName = new[] { "testhost", "dotnet" }; - var expectedProcessCreated = 2; - if (!this.IsDesktopRunner()) - { - // this creates dotnet hosted vstest console and 2 testhosts one of which is hosted - // in dotnet, so we have two dotnet + 1 testhost.exe - expectedProcessCreated = 3; - } - - var runConfigurationDictionary = new Dictionary - { - { "MaxCpuCount", "2" }, - { "TargetPlatform", targetPlatform }, - { "TargetFrameworkVersion", this.GetTargetFramworkForRunsettings()}, - { "TestAdaptersPaths", this.GetTestAdapterPath() } - }; - this.RunTestWithRunSettings(runConfigurationDictionary, null, null, testhostProcessName, expectedProcessCreated); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void RunSettingsWithInvalidValueShouldLogError(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var runConfigurationDictionary = new Dictionary - { - { "TargetPlatform", "123" } - }; - var runsettingsFilePath = this.GetRunsettingsFilePath(runConfigurationDictionary); - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - string.Empty, - runsettingsFilePath, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - this.StdErrorContains(@"Settings file provided does not conform to required format. An error occurred while loading the settings. Error: Invalid setting 'RunConfiguration'. Invalid value '123' specified for 'TargetPlatform'."); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void TestAdapterPathFromRunSettings(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var runConfigurationDictionary = new Dictionary - { - { "TestAdaptersPaths", this.GetTestAdapterPath() } - }; - var runsettingsFilePath = this.GetRunsettingsFilePath(runConfigurationDictionary); - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - string.Empty, - runsettingsFilePath, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - #region LegacySettings Tests - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, useCoreRunner: false)] - public void LegacySettingsWithPlatform(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssemblyPath = this.GetAssetFullPath("LegacySettingsUnitTestProject.dll"); - var testAssemblyDirectory = Path.GetDirectoryName(testAssemblyPath); - - var runsettingsXml = @" - - true - - - - - - "; - - File.WriteAllText(this.runsettingsPath, runsettingsXml); - - var arguments = PrepareArguments( - testAssemblyPath, - string.Empty, - this.runsettingsPath, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(0, 0, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, useCoreRunner: false)] - public void LegacySettingsWithScripts(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssemblyPath = this.GetAssetFullPath("LegacySettingsUnitTestProject.dll"); - var testAssemblyDirectory = Path.GetDirectoryName(testAssemblyPath); - - // Create the script files - var guid = Guid.NewGuid(); - var setupScriptName = "setupScript_" + guid + ".bat"; - var setupScriptPath = Path.Combine(Path.GetTempPath(), setupScriptName); - File.WriteAllText(setupScriptPath, @"echo > %temp%\ScriptTestingFile.txt"); - - var cleanupScriptName = "cleanupScript_" + guid + ".bat"; - var cleanupScriptPath = Path.Combine(Path.GetTempPath(), cleanupScriptName); - File.WriteAllText(cleanupScriptPath, @"del %temp%\ScriptTestingFile.txt"); - - var runsettingsFormat = @" - - true - - - - - "; - - // Scripts have relative paths to temp directory where the runsettings is created. - var runsettingsXml = string.Format(runsettingsFormat, setupScriptName, cleanupScriptName); - - File.WriteAllText(this.runsettingsPath, runsettingsXml); - - var arguments = PrepareArguments( - testAssemblyPath, - string.Empty, - this.runsettingsPath, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:Name=ScriptsTest"); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - - // Validate cleanup script ran - var scriptPath = Path.Combine(Path.GetTempPath(), "ScriptTestingFile.txt"); - Assert.IsFalse(File.Exists(scriptPath)); - - // Cleanup script files - File.Delete(setupScriptPath); - File.Delete(cleanupScriptPath); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, useCoreRunner: false)] - public void LegacySettingsWithDeploymentItem(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssemblyPath = this.GetAssetFullPath("LegacySettingsUnitTestProject.dll"); - var testAssemblyDirectory = Path.GetDirectoryName(testAssemblyPath); - - var deploymentItem = Path.Combine(testAssemblyDirectory, "Deployment", "DeploymentFile.xml"); - - var runsettingsFormat = @" - - true - - - - - - - "; - - var runsettingsXml = string.Format(runsettingsFormat, deploymentItem); - File.WriteAllText(this.runsettingsPath, runsettingsXml); - - var arguments = PrepareArguments( - testAssemblyPath, - string.Empty, - this.runsettingsPath, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:Name=DeploymentItemTest"); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource(inIsolation: true, useCoreRunner: false)] - public void LegacySettingsTestTimeout(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssemblyPath = this.GetAssetFullPath("LegacySettingsUnitTestProject.dll"); - var runsettingsXml = @" - - true - - - - - - "; - File.WriteAllText(this.runsettingsPath, runsettingsXml); - var arguments = PrepareArguments(testAssemblyPath, string.Empty, this.runsettingsPath, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:Name~TimeTest"); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 1, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, useCoreRunner: false)] - public void LegacySettingsAssemblyResolution(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssemblyPath = this.GetAssetFullPath("LegacySettingsUnitTestProject.dll"); - var runsettingsFormat = @" - true - - - - - - - - - - - - - - - "; - - var testAssemblyDirectory = Path.Combine(this.testEnvironment.TestAssetsPath, "LegacySettingsUnitTestProject", "DependencyAssembly"); - var runsettingsXml = string.Format(runsettingsFormat, testAssemblyDirectory); - - File.WriteAllText(this.runsettingsPath, runsettingsXml); - var arguments = PrepareArguments(testAssemblyPath, string.Empty, this.runsettingsPath, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /testcasefilter:Name=DependencyTest"); - - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(1, 0, 0); - TryRemoveDirectory(resultsDir); - } - - #endregion - - #region RunSettings With EnvironmentVariables Settings Tests - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void EnvironmentVariablesSettingsShouldSetEnvironmentVariables(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var testAssemblyPath = this.GetAssetFullPath("EnvironmentVariablesTestProject.dll"); - - var runsettingsXml = @" - - - C:\temp - - - "; - - File.WriteAllText(this.runsettingsPath, runsettingsXml); - - var arguments = PrepareArguments( - testAssemblyPath, - string.Empty, - this.runsettingsPath, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - TryRemoveDirectory(resultsDir); - } - - #endregion - - #region RunSettings defined in project file - /// - /// RunSettingsFilePath can be specified in .csproj and should be honored by `dotnet test`, this test - /// checks that the settings were honored by translating an inconclusive test to failed "result", instead of the default "skipped". - /// This test depends on Microsoft.TestPlatform.Build\Microsoft.TestPlatform.targets being previously copied into the - /// artifacts/testArtifacts/dotnet folder. This will allow the local copy of dotnet to pickup the VSTest msbuild task. - /// - /// - [TestMethod] - // patched dotnet is not published on non-windows systems - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSettingsAreLoadedFromProject(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var projectName = "ProjectFileRunSettingsTestProject.csproj"; - var projectPath = this.GetProjectFullPath(projectName); - this.InvokeDotnetTest($@"{projectPath} --logger:""Console;Verbosity=normal"""); - this.ValidateSummaryStatus(0, 1, 0); - - // make sure that we can revert the project settings back by providing a config from command line - // keeping this in the same test, because it is easier to see that we are reverting settings that - // are honored by dotnet test, instead of just using the default, which would produce the same - // result - var settingsPath = this.GetProjectAssetFullPath(projectName, "inconclusive.runsettings"); - this.InvokeDotnetTest($@"{projectPath} --settings {settingsPath} --logger:""Console;Verbosity=normal"""); - this.ValidateSummaryStatus(0, 0, 1); - } - - #endregion - - private string GetRunsettingsFilePath(Dictionary runConfigurationDictionary) - { - var runsettingsPath = Path.Combine( - Path.GetTempPath(), - "test_" + Guid.NewGuid() + ".runsettings"); - CreateRunSettingsFile(runsettingsPath, runConfigurationDictionary); - return runsettingsPath; - } - - private void RunTestWithRunSettings(Dictionary runConfigurationDictionary, - string runSettingsArgs, string additionalArgs, IEnumerable testhostProcessNames, int expectedNumOfProcessCreated) - { - var resultsDir = GetResultsDirectory(); - - var assemblyPaths = - this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - - var runsettingsPath = string.Empty; - - if (runConfigurationDictionary != null) - { - runsettingsPath = this.GetRunsettingsFilePath(runConfigurationDictionary); - } - - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), runsettingsPath, this.FrameworkArgValue, this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - - if (!string.IsNullOrWhiteSpace(additionalArgs)) - { - arguments = string.Concat(arguments, " ", additionalArgs); - } - - if (!string.IsNullOrWhiteSpace(runSettingsArgs)) - { - arguments = string.Concat(arguments, " -- ", runSettingsArgs); - } - - var cts = new CancellationTokenSource(); - var numOfProcessCreatedTask = NumberOfProcessLaunchedUtility.NumberOfProcessCreated( - cts, - testhostProcessNames); - - this.InvokeVsTest(arguments); - cts.Cancel(); - - var processesCreated = numOfProcessCreatedTask.Result; - // assert - Assert.AreEqual( - expectedNumOfProcessCreated, - processesCreated.Count, - $"Number of { string.Join(", ", testhostProcessNames) } process created, expected: {expectedNumOfProcessCreated} actual: {processesCreated.Count} ({ string.Join(", ", processesCreated) }) args: {arguments} runner path: {this.GetConsoleRunnerPath()}"); - this.ValidateSummaryStatus(2, 2, 2); - - //cleanup - if (!string.IsNullOrWhiteSpace(runsettingsPath)) - { - File.Delete(runsettingsPath); - } - TryRemoveDirectory(resultsDir); - } - - private int GetExpectedNumOfProcessCreatedForWithoutParallel() - { - if (this.IsDesktopRunner() && this.IsDesktopTargetFramework()) - { - // we create just testhost.exe - return 1; - } - - if (this.IsDesktopRunner() && !this.IsDesktopTargetFramework()) - { - // we create dotnet testhost and testhost.exe - return 2; - } - - if (!this.IsDesktopRunner() && this.IsDesktopTargetFramework()) - { - // we create testhost and testhost - return 2; - } - - if (!this.IsDesktopRunner() && this.IsDesktopTargetFramework() && this.testEnvironment.InIsolationValue == "InProcess") - { - // we create just testhost - return 1; - } - - if (!this.IsDesktopRunner() && !this.IsDesktopTargetFramework()) - { - // we create dotnet vsconsole, and 2 dotnet test hosts - return 3; - } - - return -10; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/SelfContainedAppTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/SelfContainedAppTests.cs deleted file mode 100644 index 9a82fa3e98..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/SelfContainedAppTests.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System.IO; - - [TestClass] - public class SelfContainedAppTests : AcceptanceTestBase - { - [TestMethod] - [TestCategory("Windows-Review")] - // this is core 3.1 only, full framework and netcoreapp2.1 don't "publish" automatically during build - // but if you run it on 2.1 it will pass because we execute the test normally - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false, useNetCore21Target: false, useNetCore31Target: true)] - public void RunningApplicationThatIsBuiltAsSelfContainedWillNotFailToFindHostpolicyDll(RunnerInfo runnerInfo) - { - // when the application is self-contained which is dictated by the RuntimeIdentifier and OutputType project - // properties, the testhost.exe executable is given a runtimeconfig that instructs it to find a hostpolicy.dll and hostfxr.dll next to it - // that will fail if we run the testhost.exe from the .nuget location, but will work when we run it from the output folder - // see https://github.com/dotnet/runtime/issues/3569#issuecomment-595820524 and below for description of how it works - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - // the app is published to win10-x64 because of the runtime identifier in the project - var assemblyPath = this.BuildMultipleAssemblyPath($@"win10-x64{Path.DirectorySeparatorChar}SelfContainedAppTestProject.dll").Trim('\"'); - var arguments = PrepareArguments(assemblyPath, null, null, this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - - this.ValidateSummaryStatus(passedTestsCount: 1, 0, 0); - TryRemoveDirectory(resultsDir); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TelemetryTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TelemetryTests.cs deleted file mode 100644 index 28cf73bce7..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TelemetryTests.cs +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TelemetryTests : AcceptanceTestBase - { - private readonly string resultPath; - private string CurrentOptInStatus; - private const string TELEMETRY_OPTEDIN = "VSTEST_TELEMETRY_OPTEDIN"; - private const string LOG_TELEMETRY = "VSTEST_LOGTELEMETRY"; - - public TelemetryTests() - { - this.resultPath = Path.GetTempPath() + "TelemetryLogs"; - - // Get Current Opt In Status - CurrentOptInStatus = Environment.GetEnvironmentVariable(TELEMETRY_OPTEDIN); - - // Opt in the Telemetry - Environment.SetEnvironmentVariable(TELEMETRY_OPTEDIN, "1"); - - // Log the telemetry Data to file - Environment.SetEnvironmentVariable(LOG_TELEMETRY, "1"); - } - - [TestCleanup] - public void TestCleanup() - { - // Opt out the Telemetry - Environment.SetEnvironmentVariable(TELEMETRY_OPTEDIN, "0"); - - // Set Current Opt in Status - Environment.SetEnvironmentVariable(TELEMETRY_OPTEDIN, CurrentOptInStatus); - - // Unset the environment variable - Environment.SetEnvironmentVariable(LOG_TELEMETRY, "0"); - - if (Directory.Exists(this.resultPath)) - { - Directory.Delete(this.resultPath, true); - } - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void RunTestsShouldPublishMetrics(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.RunTests(runnerInfo.RunnerFramework); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsShouldPublishMetrics(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.DiscoverTests(runnerInfo.RunnerFramework); - } - - private void RunTests(string runnerFramework) - { - if (runnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("Telemetry API is not supported for .NetCore runner"); - return; - } - - var assemblyPaths = this.GetAssetFullPath("SimpleTestProject2.dll"); - - this.InvokeVsTestForExecution(assemblyPaths, this.GetTestAdapterPath(), this.FrameworkArgValue, string.Empty); - this.ValidateOutput("Execution"); - } - - private void DiscoverTests(string runnerFramework) - { - if (runnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("Telemetry API is not supported for .NetCore runner"); - return; - } - - var assemblyPaths = this.GetAssetFullPath("SimpleTestProject2.dll"); - - this.InvokeVsTestForDiscovery(assemblyPaths, this.GetTestAdapterPath(), string.Empty, this.FrameworkArgValue); - this.ValidateOutput("Discovery"); - } - - private void ValidateOutput(string command) - { - bool isValid = false; - - if (Directory.Exists(this.resultPath)) - { - var directory = new DirectoryInfo(this.resultPath); - var file = directory.GetFiles().OrderByDescending(f => f.CreationTime).First(); - - string[] lines = File.ReadAllLines(file.FullName); - - foreach (var line in lines) - { - if (line.Contains(TelemetryDataConstants.TestExecutionCompleteEvent) && command.Equals("Execution", StringComparison.Ordinal)) - { - var isPresent = line.Contains( - TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution) - && line.Contains(TelemetryDataConstants.NumberOfAdapterUsedToRunTests) - && line.Contains(TelemetryDataConstants.ParallelEnabledDuringExecution + '=' + "False") - && line.Contains(TelemetryDataConstants.NumberOfSourcesSentForRun + '=' + "1") - && line.Contains(TelemetryDataConstants.RunState + '=' + "Completed") - && line.Contains(TelemetryDataConstants.TimeTakenByAllAdaptersInSec) - && line.Contains(TelemetryDataConstants.TotalTestsRun + '=' + "3") - && line.Contains(TelemetryDataConstants.TotalTestsRanByAdapter) - && line.Contains(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter); - - isValid = isPresent; - break; - } - else if (line.Contains(TelemetryDataConstants.TestDiscoveryCompleteEvent) && command.Equals("Discovery", StringComparison.Ordinal)) - { - var isPresent = line.Contains(TelemetryDataConstants.TotalTestsDiscovered + '=' + "3") - && line.Contains(TelemetryDataConstants.ParallelEnabledDuringDiscovery + '=' + "False") - && line.Contains(TelemetryDataConstants.TimeTakenInSecForDiscovery) - && line.Contains(TelemetryDataConstants.TimeTakenToLoadAdaptersInSec) - && line.Contains(TelemetryDataConstants.TimeTakenInSecByAllAdapters) - && line.Contains(TelemetryDataConstants.TotalTestsByAdapter) - && line.Contains(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter) - && line.Contains(TelemetryDataConstants.DiscoveryState + "=Completed") - && line.Contains(TelemetryDataConstants.NumberOfSourcesSentForDiscovery + '=' + "1") - && line.Contains( - TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery) - && line.Contains(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests); - - isValid = isPresent; - break; - } - } - } - - Assert.IsTrue(isValid); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TestCaseFilterTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TestCaseFilterTests.cs deleted file mode 100644 index 838972687a..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TestCaseFilterTests.cs +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System.IO; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestCaseFilterTests : AcceptanceTestBase - { - [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithAndOperatorTrait(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:\"(TestCategory=CategoryA&Priority=3)\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(0, 1, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithCategoryTraitInMixCase(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:\"TestCategory=Categorya\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(0, 1, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithClassNameTrait(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:\"ClassName=SampleUnitTestProject.UnitTest1\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithFullyQualifiedNameTrait(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat( - arguments, - " /TestCaseFilter:\"FullyQualifiedName=SampleUnitTestProject.UnitTest1.FailingTest\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(0, 1, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithNameTrait(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:\"Name=PassingTest\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithOrOperatorTrait(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:\"(TestCategory=CategoryA|Priority=2)\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 0); - TryRemoveDirectory(resultsDir); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithPriorityTrait(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.GetSampleTestAssembly(), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:\"Priority=2\""); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - TryRemoveDirectory(resultsDir); - } - - /// - /// In case TestCaseFilter is provide without any property like Name or ClassName. ex. /TestCaseFilter:"UnitTest1" - /// this command should provide same results as /TestCaseFilter:"FullyQualifiedName~UnitTest1". - /// - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void TestCaseFilterShouldWorkIfOnlyPropertyValueGivenInExpression(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.testEnvironment.GetTestAsset("SimpleTestProject2.dll"), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /TestCaseFilter:UnitTest1"); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 1, 1); - TryRemoveDirectory(resultsDir); - } - - /// - /// Discover tests using mstest v1 adapter with test case filters. - /// - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void DiscoverMstestV1TestsWithAndOperatorTrait(RunnerInfo runnerInfo) - { - if (runnerInfo.RunnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("Mstest v1 tests not supported with .Netcore runner."); - return; - } - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments( - this.testEnvironment.GetTestAsset("MstestV1UnitTestProject.dll"), - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /listtests /TestCaseFilter:\"(TestCategory!=CategoryA&Priority!=3)\""); - - this.InvokeVsTest(arguments); - var listOfTests = new string[] {"MstestV1UnitTestProject.UnitTest1.PassingTest1", "MstestV1UnitTestProject.UnitTest1.PassingTest2", - "MstestV1UnitTestProject.UnitTest1.FailingTest2", "MstestV1UnitTestProject.UnitTest1.SkippingTest" }; - var listOfNotDiscoveredTests = new string[] { "MstestV1UnitTestProject.UnitTest1.FailingTest1" }; - this.ValidateDiscoveredTests(listOfTests); - this.ValidateTestsNotDiscovered(listOfNotDiscoveredTests); - TryRemoveDirectory(resultsDir); - } - - /// - /// Discover tests using tmi adapter with test case filters. - /// - [TestMethod] - [TestCategory("Windows-Review")] - [Ignore("Temporary ignoring, because of incomplete interop work for legacy TP")] - [NetFullTargetFrameworkDataSource] - public void DiscoverTmiTestsWithOnlyPropertyValue(RunnerInfo runnerInfo) - { - if (runnerInfo.RunnerFramework.StartsWith("netcoreapp")) - { - Assert.Inconclusive("Tmi tests not supported with .Netcore runner."); - return; - } - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - var resultsDir = GetResultsDirectory(); - - string testAssemblyPath = this.testEnvironment.GetTestAsset("MstestV1UnitTestProject.dll"); - var arguments = PrepareArguments( - testAssemblyPath, - this.GetTestAdapterPath(), - string.Empty, this.FrameworkArgValue, - runnerInfo.InIsolationValue, resultsDirectory: resultsDir); - string testSettingsPath = Path.Combine(Path.GetDirectoryName(testAssemblyPath), "MstestV1UnitTestProjectTestSettings.testsettings"); - arguments = string.Concat(arguments, " /listtests /TestCaseFilter:PassingTest /settings:", testSettingsPath); - - this.InvokeVsTest(arguments); - var listOfTests = new string[] { "MstestV1UnitTestProject.UnitTest1.PassingTest1", "MstestV1UnitTestProject.UnitTest1.PassingTest2" }; - var listOfNotDiscoveredTests = new string[] { "MstestV1UnitTestProject.UnitTest1.FailingTest1", "MstestV1UnitTestProject.UnitTest1.FailingTest2", "MstestV1UnitTestProject.UnitTest1.SkippingTest" }; - this.ValidateDiscoveredTests(listOfTests); - this.ValidateTestsNotDiscovered(listOfNotDiscoveredTests); - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TestPlatformNugetPackageTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TestPlatformNugetPackageTests.cs deleted file mode 100644 index 1df78a08d0..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TestPlatformNugetPackageTests.cs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests -{ - using System; - using System.IO; - using System.IO.Compression; - using System.Linq; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestPlatformNugetPackageTests : CodeCoverageAcceptanceTestBase - { - private static string nugetPackageFolder; - private string resultsDirectory; - - [ClassInitialize] - public static void ClassInit(TestContext testContext) - { - var packageLocation = Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, "artifacts", IntegrationTestEnvironment.BuildConfiguration, "packages"); - var nugetPackage = Directory.EnumerateFiles(packageLocation, "Microsoft.TestPlatform.*.nupkg").OrderBy(a => a).FirstOrDefault(); - nugetPackageFolder = Path.Combine(packageLocation, Path.GetFileNameWithoutExtension(nugetPackage)); - ZipFile.ExtractToDirectory(nugetPackage, nugetPackageFolder); - - TryMoveDirectory( - sourceDirName: Path.Combine(nugetPackageFolder, "tools", "net451", "Team%20Tools"), - destDirName: Path.Combine(nugetPackageFolder, "tools", "net451", "Team Tools") - ); - - TryMoveDirectory( - sourceDirName: Path.Combine(nugetPackageFolder, "tools", "net451", "Team Tools", "Dynamic%20Code%20Coverage%20Tools"), - destDirName: Path.Combine(nugetPackageFolder, "tools", "net451", "Team Tools", "Dynamic Code Coverage Tools") - ); - } - - [ClassCleanup] - public static void ClassCleanup() - { - Directory.Delete(nugetPackageFolder, true); - } - - [TestInitialize] - public void SetUp() - { - this.resultsDirectory = GetResultsDirectory(); - } - - [TestCleanup] - public void CleanUp() - { - TryRemoveDirectory(resultsDirectory); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] - [NetCoreTargetFrameworkDataSource(useCoreRunner: false)] - public void RunMultipleTestAssembliesWithCodeCoverage(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"'); - - var arguments = CreateCodeCoverageArguments(runnerInfo, assemblyPaths, out var trxFilePath); - this.InvokeVsTest(arguments); - - this.ExitCodeEquals(1); // failing tests - - var actualCoverageFile = CodeCoverageTests.GetCoverageFileNameFromTrx(trxFilePath, resultsDirectory); - Console.WriteLine($@"Coverage file: {actualCoverageFile} Results directory: {resultsDirectory} trxfile: {trxFilePath}"); - Assert.IsTrue(File.Exists(actualCoverageFile), "Coverage file not found: {0}", actualCoverageFile); - } - - public override string GetConsoleRunnerPath() - { - string consoleRunnerPath = string.Empty; - - if (this.IsDesktopRunner()) - { - consoleRunnerPath = Path.Combine(nugetPackageFolder, "tools", "net451", "Common7", "IDE", "Extensions", "TestPlatform", "vstest.console.exe"); - } - - Assert.IsTrue(File.Exists(consoleRunnerPath), "GetConsoleRunnerPath: Path not found: {0}", consoleRunnerPath); - return consoleRunnerPath; - } - - private string CreateCodeCoverageArguments( - RunnerInfo runnerInfo, - string assemblyPaths, - out string trxFilePath) - { - string diagFileName = Path.Combine(this.resultsDirectory, "diaglog.txt"); - - var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty, - this.FrameworkArgValue, runnerInfo.InIsolationValue, resultsDirectory: resultsDirectory); - - arguments = string.Concat(arguments, $" /Diag:{diagFileName}", $" /EnableCodeCoverage"); - - trxFilePath = Path.Combine(this.resultsDirectory, Guid.NewGuid() + ".trx"); - arguments = string.Concat(arguments, " /logger:trx;logfilename=" + trxFilePath); - - return arguments; - } - - private static void TryMoveDirectory(string sourceDirName, string destDirName) - { - if (Directory.Exists(sourceDirName)) - { - Directory.Move(sourceDirName, destDirName); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CodeCoverageTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CodeCoverageTests.cs deleted file mode 100644 index 711e5a5cb0..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CodeCoverageTests.cs +++ /dev/null @@ -1,453 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - using Castle.Core.Internal; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - //Code coverage only supported on windows (based on the message in output) - [TestCategory("Windows-Review")] - public class CodeCoverageTests : CodeCoverageAcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - private TestRunAttachmentsProcessingEventHandler testRunAttachmentsProcessingEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - this.testRunAttachmentsProcessingEventHandler = new TestRunAttachmentsProcessingEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void TestRunWithCodeCoverage(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - // act - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies(), this.GetCodeCoverageRunSettings(1), new TestPlatformOptions { CollectMetrics = true }, this.runEventHandler); - - // assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - - int expectedNumberOfAttachments = 1; - Assert.AreEqual(expectedNumberOfAttachments, this.runEventHandler.Attachments.Count); - - AssertCoverageResults(this.runEventHandler.Attachments); - - Assert.AreEqual("e5f256dc-7959-4dd6-8e4f-c11150ab28e0", this.runEventHandler.Metrics["VS.TestPlatform.DataCollector.CorProfiler.datacollector://microsoft/CodeCoverage/2.0"]); - Assert.AreEqual("e5f256dc-7959-4dd6-8e4f-c11150ab28e0", this.runEventHandler.Metrics["VS.TestPlatform.DataCollector.CoreClrProfiler.datacollector://microsoft/CodeCoverage/2.0"]); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void TestRunWithCodeCoverageUsingClrIe(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - // act - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies(), this.GetCodeCoverageRunSettings(1, true), new TestPlatformOptions { CollectMetrics = true }, this.runEventHandler); - - // assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - - int expectedNumberOfAttachments = 1; - Assert.AreEqual(expectedNumberOfAttachments, this.runEventHandler.Attachments.Count); - - AssertCoverageResults(this.runEventHandler.Attachments); - - Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", this.runEventHandler.Metrics["VS.TestPlatform.DataCollector.CorProfiler.datacollector://microsoft/CodeCoverage/2.0"]); - Assert.AreEqual("324f817a-7420-4e6d-b3c1-143fbed6d855", this.runEventHandler.Metrics["VS.TestPlatform.DataCollector.CoreClrProfiler.datacollector://microsoft/CodeCoverage/2.0"]); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void TestRunWithCodeCoverageParallel(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - // act - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies(), this.GetCodeCoverageRunSettings(4), new TestPlatformOptions { CollectMetrics = true }, this.runEventHandler); - - // assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(1, this.runEventHandler.Attachments.Count); - - AssertCoverageResults(this.runEventHandler.Attachments); - - Assert.AreEqual("e5f256dc-7959-4dd6-8e4f-c11150ab28e0", this.runEventHandler.Metrics["VS.TestPlatform.DataCollector.CorProfiler.datacollector://microsoft/CodeCoverage/2.0"]); - Assert.AreEqual("e5f256dc-7959-4dd6-8e4f-c11150ab28e0", this.runEventHandler.Metrics["VS.TestPlatform.DataCollector.CoreClrProfiler.datacollector://microsoft/CodeCoverage/2.0"]); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public async Task TestRunWithCodeCoverageAndAttachmentsProcessing(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.Attachments.Count); - - // act - await this.vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(runEventHandler.Attachments, null, true, true, testRunAttachmentsProcessingEventHandler, CancellationToken.None); - - // Assert - testRunAttachmentsProcessingEventHandler.EnsureSuccess(); - Assert.AreEqual(1, this.testRunAttachmentsProcessingEventHandler.Attachments.Count); - - AssertCoverageResults(this.testRunAttachmentsProcessingEventHandler.Attachments); - - Assert.IsFalse(testRunAttachmentsProcessingEventHandler.CompleteArgs.IsCanceled); - Assert.IsNull(testRunAttachmentsProcessingEventHandler.CompleteArgs.Error); - - for (int i = 0; i < testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++) - { - VisualStudio.TestPlatform.ObjectModel.Client.TestRunAttachmentsProcessingProgressEventArgs progressArgs = testRunAttachmentsProcessingEventHandler.ProgressArgs[i]; - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorIndex); - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorUris.Count); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri); - Assert.AreEqual(1, progressArgs.AttachmentProcessorsCount); - if (testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2) - { - Assert.AreEqual(i == 0 ? 50 : 100, progressArgs.CurrentAttachmentProcessorProgress); - } - } - - Assert.AreEqual("Completed", testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.AttachmentsProcessingState]); - Assert.AreEqual(2L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]); - Assert.AreEqual(1L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]); - Assert.IsTrue(testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing)); - - Assert.IsTrue(File.Exists(runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath)); - Assert.IsFalse(File.Exists(runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public async Task TestRunWithCodeCoverageAndAttachmentsProcessingNoMetrics(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.Attachments.Count); - - // act - await this.vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(runEventHandler.Attachments, null, true, false, testRunAttachmentsProcessingEventHandler, CancellationToken.None); - - // Assert - testRunAttachmentsProcessingEventHandler.EnsureSuccess(); - Assert.AreEqual(1, this.testRunAttachmentsProcessingEventHandler.Attachments.Count); - - AssertCoverageResults(this.testRunAttachmentsProcessingEventHandler.Attachments); - - Assert.IsFalse(testRunAttachmentsProcessingEventHandler.CompleteArgs.IsCanceled); - Assert.IsNull(testRunAttachmentsProcessingEventHandler.CompleteArgs.Error); - - for (int i = 0; i < testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++) - { - VisualStudio.TestPlatform.ObjectModel.Client.TestRunAttachmentsProcessingProgressEventArgs progressArgs = testRunAttachmentsProcessingEventHandler.ProgressArgs[i]; - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorIndex); - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorUris.Count); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri); - Assert.AreEqual(1, progressArgs.AttachmentProcessorsCount); - if (testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 2) - { - Assert.AreEqual(i == 0 ? 50 : 100, progressArgs.CurrentAttachmentProcessorProgress); - } - } - - Assert.IsTrue(testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.IsNullOrEmpty()); - - Assert.IsTrue(File.Exists(runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath)); - Assert.IsFalse(File.Exists(runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public async Task TestRunWithCodeCoverageAndAttachmentsProcessingModuleDuplicated(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - - Assert.AreEqual(9, this.runEventHandler.TestResults.Count); - Assert.AreEqual(3, this.runEventHandler.Attachments.Count); - - // act - await this.vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(runEventHandler.Attachments, null, true, true, testRunAttachmentsProcessingEventHandler, CancellationToken.None); - - // Assert - testRunAttachmentsProcessingEventHandler.EnsureSuccess(); - Assert.AreEqual(1, this.testRunAttachmentsProcessingEventHandler.Attachments.Count); - - AssertCoverageResults(this.testRunAttachmentsProcessingEventHandler.Attachments); - - Assert.IsFalse(testRunAttachmentsProcessingEventHandler.CompleteArgs.IsCanceled); - Assert.IsNull(testRunAttachmentsProcessingEventHandler.CompleteArgs.Error); - - for (int i = 0; i < testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++) - { - VisualStudio.TestPlatform.ObjectModel.Client.TestRunAttachmentsProcessingProgressEventArgs progressArgs = testRunAttachmentsProcessingEventHandler.ProgressArgs[i]; - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorIndex); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri); - Assert.AreEqual(1, progressArgs.AttachmentProcessorsCount); - - if (testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 3) - { - Assert.AreEqual(i == 0 ? 33 : i == 1 ? 66 : 100, progressArgs.CurrentAttachmentProcessorProgress); - } - } - - Assert.AreEqual("Completed", testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.AttachmentsProcessingState]); - Assert.AreEqual(3L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]); - Assert.AreEqual(1L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]); - Assert.IsTrue(testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing)); - - Assert.IsTrue(File.Exists(runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath)); - Assert.IsFalse(File.Exists(runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public async Task TestRunWithCodeCoverageAndAttachmentsProcessingSameReportFormat(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), this.runEventHandler); - - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.Attachments.Count); - - // act - await this.vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(runEventHandler.Attachments, null, true, true, testRunAttachmentsProcessingEventHandler, CancellationToken.None); - - // Assert - testRunAttachmentsProcessingEventHandler.EnsureSuccess(); - Assert.AreEqual(1, this.testRunAttachmentsProcessingEventHandler.Attachments.Count); - Assert.AreEqual(1, this.testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments.Count); - Assert.IsTrue(this.testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments[0].Uri.LocalPath.Contains(".coverage")); - - AssertCoverageResults(this.testRunAttachmentsProcessingEventHandler.Attachments); - - Assert.IsFalse(testRunAttachmentsProcessingEventHandler.CompleteArgs.IsCanceled); - Assert.IsNull(testRunAttachmentsProcessingEventHandler.CompleteArgs.Error); - - for (int i = 0; i < testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++) - { - VisualStudio.TestPlatform.ObjectModel.Client.TestRunAttachmentsProcessingProgressEventArgs progressArgs = testRunAttachmentsProcessingEventHandler.ProgressArgs[i]; - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorIndex); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri); - Assert.AreEqual(1, progressArgs.AttachmentProcessorsCount); - - if (testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 3) - { - Assert.AreEqual(i == 0 ? 33 : i == 1 ? 66 : 100, progressArgs.CurrentAttachmentProcessorProgress); - } - } - - Assert.AreEqual("Completed", testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.AttachmentsProcessingState]); - Assert.AreEqual(2L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]); - Assert.AreEqual(1L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]); - Assert.IsTrue(testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing)); - - Assert.IsTrue(File.Exists(runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath)); - Assert.IsFalse(File.Exists(runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public async Task TestRunWithCodeCoverageAndAttachmentsProcessingDifferentReportFormats(RunnerInfo runnerInfo) - { - // arrange - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1, outputFormat: "Coverage"), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1, outputFormat: "Cobertura"), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1, outputFormat: "Cobertura"), this.runEventHandler); - - Assert.AreEqual(12, this.runEventHandler.TestResults.Count); - Assert.AreEqual(4, this.runEventHandler.Attachments.Count); - - // act - await this.vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(runEventHandler.Attachments, null, true, true, testRunAttachmentsProcessingEventHandler, CancellationToken.None); - - // Assert - testRunAttachmentsProcessingEventHandler.EnsureSuccess(); - Assert.AreEqual(1, this.testRunAttachmentsProcessingEventHandler.Attachments.Count); - Assert.AreEqual(2, this.testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments.Count); - Assert.IsTrue(this.testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments[0].Uri.LocalPath.Contains(".cobertura.xml")); - Assert.IsTrue(this.testRunAttachmentsProcessingEventHandler.Attachments[0].Attachments[1].Uri.LocalPath.Contains(".coverage")); - - AssertCoverageResults(this.testRunAttachmentsProcessingEventHandler.Attachments); - - Assert.IsFalse(testRunAttachmentsProcessingEventHandler.CompleteArgs.IsCanceled); - Assert.IsNull(testRunAttachmentsProcessingEventHandler.CompleteArgs.Error); - - for (int i = 0; i < testRunAttachmentsProcessingEventHandler.ProgressArgs.Count; i++) - { - VisualStudio.TestPlatform.ObjectModel.Client.TestRunAttachmentsProcessingProgressEventArgs progressArgs = testRunAttachmentsProcessingEventHandler.ProgressArgs[i]; - Assert.AreEqual(1, progressArgs.CurrentAttachmentProcessorIndex); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", progressArgs.CurrentAttachmentProcessorUris.First().AbsoluteUri); - Assert.AreEqual(1, progressArgs.AttachmentProcessorsCount); - - if (testRunAttachmentsProcessingEventHandler.ProgressArgs.Count == 3) - { - Assert.AreEqual(i == 0 ? 33 : i == 1 ? 66 : 100, progressArgs.CurrentAttachmentProcessorProgress); - } - } - - Assert.AreEqual("Completed", testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.AttachmentsProcessingState]); - Assert.AreEqual(4L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]); - Assert.AreEqual(1L, testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]); - Assert.IsTrue(testRunAttachmentsProcessingEventHandler.CompleteArgs.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing)); - - Assert.IsTrue(File.Exists(runEventHandler.Attachments.First().Attachments.First().Uri.LocalPath)); - Assert.IsFalse(File.Exists(runEventHandler.Attachments.Last().Attachments.First().Uri.LocalPath)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public async Task EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo) - { - var numOfProcesses = Process.GetProcessesByName("vstest.console").Length; - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Take(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies().Skip(1), this.GetCodeCoverageRunSettings(1), this.runEventHandler); - - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.Attachments.Count); - - await this.vstestConsoleWrapper.ProcessTestRunAttachmentsAsync(runEventHandler.Attachments, null, true, true, testRunAttachmentsProcessingEventHandler, CancellationToken.None); - - // act - this.vstestConsoleWrapper?.EndSession(); - - // Assert - Assert.AreEqual(numOfProcesses, Process.GetProcessesByName("vstest.console").Length); - - this.vstestConsoleWrapper = null; - } - - private IList GetTestAssemblies() - { - return GetProjects().Select(p => this.GetAssetFullPath(p)).ToList(); - } - - private IList GetProjects() - { - return new List { "SimpleTestProject.dll", "SimpleTestProject2.dll" }; - } - - /// - /// Default RunSettings - /// - /// - private string GetCodeCoverageRunSettings(int cpuCount, bool useClrIeInstrumentationEngine = false, string outputFormat = "Coverage") - { - string runSettingsXml = $@" - - - {FrameworkArgValue} - {this.GetNetStandardAdapterPath()} - {cpuCount} - - - - - - {useClrIeInstrumentationEngine} - {useClrIeInstrumentationEngine} - {outputFormat} - - - - .*CPPUnitTestFramework.* - - - - - True - True - True - False - - - - - - "; - return runSettingsXml; - } - - private void AssertCoverageResults(IList attachments) - { - if (attachments.Count == 1) - { - var xmlCoverage = this.GetXmlCoverage(attachments.First().Attachments.First().Uri.LocalPath); - - foreach (var project in this.GetProjects()) - { - var moduleNode = this.GetModuleNode(xmlCoverage.DocumentElement, project.ToLower()); - this.AssertCoverage(moduleNode, CodeCoverageAcceptanceTestBase.ExpectedMinimalModuleCoverage); - } - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CustomTestHostLauncher.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CustomTestHostLauncher.cs deleted file mode 100644 index 7712b11c7c..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CustomTestHostLauncher.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System.Diagnostics; - using System.Threading; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - - /// - /// The custom test host launcher. - /// - public class CustomTestHostLauncher : ITestHostLauncher2 - { - public int ProcessId - { - get; - private set; - } - - /// - public bool IsDebug => true; - - public bool AttachDebuggerToProcess(int pid) => this.AttachDebuggerToProcess(pid, CancellationToken.None); - - public bool AttachDebuggerToProcess(int pid, CancellationToken cancellationToken) => true; - - /// - public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo) - { - return this.LaunchTestHost(defaultTestHostStartInfo, CancellationToken.None); - } - - /// - public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo, CancellationToken cancellationToken) - { - var processInfo = new ProcessStartInfo( - defaultTestHostStartInfo.FileName, - defaultTestHostStartInfo.Arguments) - { - WorkingDirectory = defaultTestHostStartInfo.WorkingDirectory - }; - processInfo.UseShellExecute = false; - - var process = new Process { StartInfo = processInfo }; - process.Start(); - - if (process != null) - { - return process.Id; - } - - return -1; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CustomTestHostTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CustomTestHostTests.cs deleted file mode 100644 index b0b96b43cf..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/CustomTestHostTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.Linq; - - /// - /// The Run Tests using VsTestConsoleWrapper API's - /// - [TestClass] - public class CustomTestHostTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithCustomTestHostLaunch(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var customTestHostLauncher = new CustomTestHostLauncher(); - this.vstestConsoleWrapper.RunTestsWithCustomTestHost(this.GetTestAssemblies(), this.GetDefaultRunSettings(), this.runEventHandler, customTestHostLauncher); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.IsTrue(customTestHostLauncher.ProcessId != -1); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs deleted file mode 100644 index 5269a27ceb..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - - /// - /// The Run Tests using VsTestConsoleWrapper API's - /// - [TestClass] - public class DifferentTestFrameworkSimpleTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithNunitAdapter(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var sources = new List - { - this.GetAssetFullPath("NUTestProject.dll") - }; - - this.vstestConsoleWrapper.RunTests( - sources, - this.GetDefaultRunSettings(), - this.runEventHandler); - - var testCase = - this.runEventHandler.TestResults.Where(tr => tr.TestCase.DisplayName.Equals("PassTestMethod1")); - - // Assert - Assert.AreEqual(2, this.runEventHandler.TestResults.Count); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - - // Release builds optimize code, hence line numbers are different. - if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase)) - { - Assert.AreEqual(11, testCase.FirstOrDefault().TestCase.LineNumber); - } - else - { - Assert.AreEqual(10, testCase.FirstOrDefault().TestCase.LineNumber); - } - } - - [TestMethod] - // there are logs in the diagnostic log, it is failing with NullReferenceException because path is null - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithXunitAdapter(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - // Xunit >= 2.2 won't support net451, Minimum target framework it supports is net452. - string testAssemblyPath = null; - if (this.testEnvironment.TargetFramework.Equals("net451")) - { - testAssemblyPath = testEnvironment.GetTestAsset("XUTestProject.dll", "net46"); - } - else - { - testAssemblyPath = testEnvironment.GetTestAsset("XUTestProject.dll"); - } - - var sources = new List { testAssemblyPath }; - var testAdapterPath = Directory.EnumerateFiles(this.GetTestAdapterPath(UnitTestFramework.XUnit), "*.TestAdapter.dll").ToList(); - this.vstestConsoleWrapper.InitializeExtensions(new List() { testAdapterPath.FirstOrDefault() }); - - this.vstestConsoleWrapper.RunTests( - sources, - this.GetDefaultRunSettings(), - this.runEventHandler); - - var testCase = - this.runEventHandler.TestResults.Where(tr => tr.TestCase.DisplayName.Equals("xUnitTestProject.Class1.PassTestMethod1")); - - // Assert - Assert.AreEqual(2, this.runEventHandler.TestResults.Count); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - - // Release builds optimize code, hence line numbers are different. - if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase)) - { - Assert.AreEqual(16, testCase.FirstOrDefault().TestCase.LineNumber); - } - else - { - Assert.AreEqual(15, testCase.FirstOrDefault().TestCase.LineNumber); - } - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void RunTestsWithChutzpahAdapter(RunnerInfo runnerInfo) - { - SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var sources = new List - { - Path.Combine(this.testEnvironment.TestAssetsPath, "test.js") - }; - - var testAdapterPath = Directory.EnumerateFiles(this.GetTestAdapterPath(UnitTestFramework.Chutzpah), "*.TestAdapter.dll").ToList(); - this.vstestConsoleWrapper.InitializeExtensions(new List() { testAdapterPath.FirstOrDefault() }); - - this.vstestConsoleWrapper.RunTests( - sources, - this.GetDefaultRunSettings(), - this.runEventHandler); - - var testCase = - this.runEventHandler.TestResults.Where(tr => tr.TestCase.DisplayName.Equals("TestMethod1")); - - // Assert - Assert.AreEqual(2, this.runEventHandler.TestResults.Count); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(1, testCase.FirstOrDefault().TestCase.LineNumber); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/DiscoverTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/DiscoverTests.cs deleted file mode 100644 index 35dfc4181d..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/DiscoverTests.cs +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class DiscoverTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private DiscoveryEventHandler discoveryEventHandler; - private DiscoveryEventHandler2 discoveryEventHandler2; - - public void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.discoveryEventHandler = new DiscoveryEventHandler(); - this.discoveryEventHandler2 = new DiscoveryEventHandler2(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingDiscoveryEventHandler1(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - - this.Setup(); - - this.vstestConsoleWrapper.DiscoverTests(this.GetTestAssemblies(), this.GetDefaultRunSettings(), this.discoveryEventHandler); - - // Assert. - Assert.AreEqual(6, this.discoveryEventHandler.DiscoveredTestCases.Count); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedOut(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.DiscoverTests( - this.GetTestAssemblies(), - this.GetDefaultRunSettings(), - new TestPlatformOptions() { CollectMetrics = false }, - this.discoveryEventHandler2); - - // Assert. - Assert.AreEqual(6, this.discoveryEventHandler2.DiscoveredTestCases.Count); - Assert.AreEqual(0, this.discoveryEventHandler2.Metrics.Count); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedIn(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.DiscoverTests(this.GetTestAssemblies(), this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.discoveryEventHandler2); - - // Assert. - Assert.AreEqual(6, this.discoveryEventHandler2.DiscoveredTestCases.Count); - Assert.IsTrue(this.discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.TargetDevice)); - Assert.IsTrue(this.discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests)); - Assert.IsTrue(this.discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecByAllAdapters)); - Assert.IsTrue(this.discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForDiscovery)); - Assert.IsTrue(this.discoveryEventHandler2.Metrics.ContainsKey(TelemetryDataConstants.DiscoveryState)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingEventHandler2AndBatchSize(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var discoveryEventHandlerForBatchSize = new DiscoveryEventHandlerForBatchSize(); - - string runSettingsXml = @" - - - 3 - - "; - - this.vstestConsoleWrapper.DiscoverTests( - this.GetTestAssemblies(), - runSettingsXml, - null, - discoveryEventHandlerForBatchSize); - - // Assert. - Assert.AreEqual(6, discoveryEventHandlerForBatchSize.DiscoveredTestCases.Count); - Assert.AreEqual(3, discoveryEventHandlerForBatchSize.BatchSize); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingEventHandler1AndBatchSize(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var discoveryEventHandlerForBatchSize = new DiscoveryEventHandlerForBatchSize(); - - string runSettingsXml = @" - - - 3 - - "; - - this.vstestConsoleWrapper.DiscoverTests( - this.GetTestAssemblies(), - runSettingsXml, - discoveryEventHandlerForBatchSize); - - // Assert. - Assert.AreEqual(6, discoveryEventHandlerForBatchSize.DiscoveredTestCases.Count); - Assert.AreEqual(3, discoveryEventHandlerForBatchSize.BatchSize); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingSourceNavigation(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.DiscoverTests( - this.GetTestAssemblies(), - this.GetDefaultRunSettings(), - this.discoveryEventHandler); - - // Assert. - var testCase = - this.discoveryEventHandler.DiscoveredTestCases.Where(dt => dt.FullyQualifiedName.Equals("SampleUnitTestProject.UnitTest1.PassingTest")); - - // Release builds optimize code, hence line numbers are different. - if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase)) - { - Assert.AreEqual(23, testCase.FirstOrDefault().LineNumber); - } - else - { - Assert.AreEqual(22, testCase.FirstOrDefault().LineNumber); - } - } - - [TestMethod] - // flaky on the desktop runner, desktop framework combo - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource] - public void CancelTestDiscovery(RunnerInfo runnerInfo) - { - // Setup - var testAssemblies = new List - { - this.GetAssetFullPath("DiscoveryTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var discoveredTests = new List(); - var discoveryEvents = new Mock(); - discoveryEvents.Setup((events) => events.HandleDiscoveredTests(It.IsAny>())).Callback - ((IEnumerable testcases) => { discoveredTests.AddRange(testcases); }); - - // Act - var discoveryTask = Task.Run(() => - { - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), discoveryEvents.Object); - }); - - Task.Delay(2000).Wait(); - vstestConsoleWrapper.CancelDiscovery(); - discoveryTask.Wait(); - - // Assert. - int discoveredSources = discoveredTests.Select((testcase) => testcase.Source).Distinct().Count(); - Assert.AreNotEqual(testAssemblies.Count, discoveredSources, "All test assemblies discovered"); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/DiscoveryEventHandler.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/DiscoveryEventHandler.cs deleted file mode 100644 index e6e72e7a24..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/DiscoveryEventHandler.cs +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System.Collections.Generic; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - - /// - public class DiscoveryEventHandler : ITestDiscoveryEventsHandler - { - /// - /// Gets the discovered test cases. - /// - public List DiscoveredTestCases { get;} - - public DiscoveryEventHandler() - { - this.DiscoveredTestCases = new List(); - } - - public void HandleDiscoveredTests(IEnumerable discoveredTestCases) - { - if (discoveredTestCases != null) - { - this.DiscoveredTestCases.AddRange(discoveredTestCases); - } - } - - public void HandleDiscoveryComplete(long totalTests, IEnumerable lastChunk, bool isAborted) - { - if (lastChunk != null) - { - this.DiscoveredTestCases.AddRange(lastChunk); - } - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - // No Op - } - - public void HandleRawMessage(string rawMessage) - { - // No op - } - } - - public struct TestMessage - { - public TestMessageLevel testMessageLevel; - public string message; - - public TestMessage(TestMessageLevel testMessageLevel, string message) - { - this.testMessageLevel = testMessageLevel; - this.message = message; - } - } - - /// - public class DiscoveryEventHandler2 : ITestDiscoveryEventsHandler2 - { - /// - /// Gets the discovered test cases. - /// - public List DiscoveredTestCases { get; } - - public List testMessages; - - /// - /// Gets the metrics. - /// - public IDictionary Metrics { get; private set; } - - public DiscoveryEventHandler2() - { - this.DiscoveredTestCases = new List(); - this.testMessages = new List(); - } - - public void HandleRawMessage(string rawMessage) - { - // No Op - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - this.testMessages.Add(new TestMessage(level, message)); - } - - public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable lastChunk) - { - if (lastChunk != null) - { - this.DiscoveredTestCases.AddRange(lastChunk); - } - - this.Metrics = discoveryCompleteEventArgs.Metrics; - } - - public void HandleDiscoveredTests(IEnumerable discoveredTestCases) - { - if (discoveredTestCases != null) - { - this.DiscoveredTestCases.AddRange(discoveredTestCases); - } - } - } - - /// Discovery Event Handler for batch size - public class DiscoveryEventHandlerForBatchSize : ITestDiscoveryEventsHandler2, ITestDiscoveryEventsHandler - { - /// - /// Gets the batch size. - /// - public long BatchSize { get; private set; } - - /// - /// Gets the discovered test cases. - /// - public List DiscoveredTestCases { get; } - - public DiscoveryEventHandlerForBatchSize() - { - this.DiscoveredTestCases = new List(); - } - - public void HandleRawMessage(string rawMessage) - { - // No Op - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - // No Op - } - - public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable lastChunk) - { - if (lastChunk != null) - { - this.DiscoveredTestCases.AddRange(lastChunk); - } - } - - public void HandleDiscoveryComplete(long totalTests, IEnumerable lastChunk, bool isAborted) - { - if (lastChunk != null) - { - this.DiscoveredTestCases.AddRange(lastChunk); - } - } - - public void HandleDiscoveredTests(IEnumerable discoveredTestCases) - { - if (discoveredTestCases != null && discoveredTestCases.Any()) - { - this.DiscoveredTestCases.AddRange(discoveredTestCases); - this.BatchSize = discoveredTestCases.Count(); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/RunEventHandler.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/RunEventHandler.cs deleted file mode 100644 index c4bd80e385..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/RunEventHandler.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System; - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - - /// - public class RunEventHandler : ITestRunEventsHandler2 - { - /// - /// Gets the test results. - /// - public List TestResults { get; private set; } - - /// - /// Gets the attachments. - /// - public List Attachments { get; private set; } - - /// - /// Gets the metrics. - /// - public IDictionary Metrics { get; private set; } - - /// - /// Gets the log message. - /// - public string LogMessage { get; private set; } - - public List Errors { get; set; } - - /// - /// Gets the test message level. - /// - public TestMessageLevel TestMessageLevel { get; private set; } - - public RunEventHandler() - { - this.TestResults = new List(); - this.Errors = new List(); - this.Attachments = new List(); - } - - public void EnsureSuccess() - { - if (this.Errors.Any()) - { - throw new InvalidOperationException($"Test run reported errors:{Environment.NewLine}{string.Join(Environment.NewLine + Environment.NewLine, this.Errors)}"); - } - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - this.LogMessage = message; - this.TestMessageLevel = level; - if (level == TestMessageLevel.Error) { - this.Errors.Add(message); - } - } - - public void HandleTestRunComplete( - TestRunCompleteEventArgs testRunCompleteArgs, - TestRunChangedEventArgs lastChunkArgs, - ICollection runContextAttachments, - ICollection executorUris) - { - if (lastChunkArgs != null && lastChunkArgs.NewTestResults != null) - { - this.TestResults.AddRange(lastChunkArgs.NewTestResults); - } - - if (testRunCompleteArgs.AttachmentSets != null) - { - this.Attachments.AddRange(testRunCompleteArgs.AttachmentSets); - } - - this.Metrics = testRunCompleteArgs.Metrics; - } - - public void HandleTestRunStatsChange(TestRunChangedEventArgs testRunChangedArgs) - { - if (testRunChangedArgs != null && testRunChangedArgs.NewTestResults != null) - { - this.TestResults.AddRange(testRunChangedArgs.NewTestResults); - } - } - - public void HandleRawMessage(string rawMessage) - { - // No op - } - - public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo testProcessStartInfo) - { - // No op - return -1; - } - - public bool AttachDebuggerToProcess(int pid) - { - // No op - return true; - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/TestRunAttachmentsProcessingEventHandler.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/TestRunAttachmentsProcessingEventHandler.cs deleted file mode 100644 index 8a0b6513c6..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/EventHandler/TestRunAttachmentsProcessingEventHandler.cs +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System; - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - - /// - public class TestRunAttachmentsProcessingEventHandler : ITestRunAttachmentsProcessingEventsHandler - { - public List Attachments { get; private set; } - - public TestRunAttachmentsProcessingCompleteEventArgs CompleteArgs { get; private set; } - - public List ProgressArgs { get; private set; } - - /// - /// Gets the log message. - /// - public string LogMessage { get; private set; } - - public List Errors { get; set; } - - /// - /// Gets the test message level. - /// - public TestMessageLevel TestMessageLevel { get; private set; } - - public TestRunAttachmentsProcessingEventHandler() - { - this.Errors = new List(); - this.Attachments = new List(); - this.ProgressArgs = new List(); - } - - public void EnsureSuccess() - { - if (this.Errors.Any()) - { - throw new InvalidOperationException($"Test run reported errors:{Environment.NewLine}{string.Join(Environment.NewLine + Environment.NewLine, this.Errors)}"); - } - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - this.LogMessage = message; - this.TestMessageLevel = level; - if (level == TestMessageLevel.Error) - { - this.Errors.Add(message); - } - } - - public void HandleRawMessage(string rawMessage) - { - // No op - } - - public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo testProcessStartInfo) - { - // No op - return -1; - } - - public bool AttachDebuggerToProcess(int pid) - { - // No op - return true; - } - - public void HandleTestRunAttachmentsProcessingComplete(ICollection attachments) - { - if(attachments != null) - { - this.Attachments.AddRange(attachments); - } - } - - public void HandleTestRunAttachmentsProcessingComplete(TestRunAttachmentsProcessingCompleteEventArgs attachmentsProcessingCompleteEventArgs, IEnumerable lastChunk) - { - if (lastChunk != null) - { - this.Attachments.AddRange(lastChunk); - } - - if (attachmentsProcessingCompleteEventArgs.Error != null) - { - Errors.Add(attachmentsProcessingCompleteEventArgs.Error.Message); - } - - CompleteArgs = attachmentsProcessingCompleteEventArgs; - } - - public void HandleProcessedAttachmentsChunk(IEnumerable attachments) - { - throw new NotImplementedException(); - } - - public void HandleTestRunAttachmentsProcessingProgress(TestRunAttachmentsProcessingProgressEventArgs AttachmentsProcessingProgressEventArgs) - { - ProgressArgs.Add(AttachmentsProcessingProgressEventArgs); - } - } -} diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/LiveUnitTestingTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/LiveUnitTestingTests.cs deleted file mode 100644 index f6f1e97cab..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/LiveUnitTestingTests.cs +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.Linq; - - [TestClass] - public class LiveUnitTestingTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private DiscoveryEventHandler discoveryEventHandler; - private DiscoveryEventHandler2 discoveryEventHandler2; - private RunEventHandler runEventHandler; - - public void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.discoveryEventHandler = new DiscoveryEventHandler(); - this.discoveryEventHandler2 = new DiscoveryEventHandler2(); - this.runEventHandler = new RunEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void DiscoverTestsUsingLiveUnitTesting(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - string runSettingsXml = @" - - - true - true - - "; - - this.vstestConsoleWrapper.DiscoverTests( - this.GetTestAssemblies(), - runSettingsXml, - this.discoveryEventHandler); - - // Assert - Assert.AreEqual(6, this.discoveryEventHandler.DiscoveredTestCases.Count); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithLiveUnitTesting(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - string runSettingsXml = @" - - - true - true - - "; - - this.vstestConsoleWrapper.RunTests( - this.GetTestAssemblies(), - runSettingsXml, - this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunSelectedTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunSelectedTests.cs deleted file mode 100644 index eea46f5c9c..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunSelectedTests.cs +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using System.Collections.Generic; - using System.Linq; - - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class RunSelectedTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - private DiscoveryEventHandler discoveryEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - this.discoveryEventHandler = new DiscoveryEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithoutTestPlatformOptions(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.DiscoverTests(this.GetTestAssemblies(), this.GetDefaultRunSettings(), this.discoveryEventHandler); - var testCases = this.discoveryEventHandler.DiscoveredTestCases; - - this.vstestConsoleWrapper.RunTests(testCases, this.GetDefaultRunSettings(), this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunSelectedTestsWithTestPlatformOptions(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.DiscoverTests(this.GetTestAssemblies(), this.GetDefaultRunSettings(), this.discoveryEventHandler); - var testCases = this.discoveryEventHandler.DiscoveredTestCases; - - this.vstestConsoleWrapper.RunTests( - testCases, - this.GetDefaultRunSettings(), - new TestPlatformOptions() { CollectMetrics = true }, - this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetDevice)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetFramework)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetOS)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForRun)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.RunState)); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTests.cs deleted file mode 100644 index 485eddef3b..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTests.cs +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using VisualStudio.TestPlatform.ObjectModel.Logging; - - /// - /// The Run Tests using VsTestConsoleWrapper API's - /// - [TestClass] - public class RunTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunAllTests(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies(), this.GetDefaultRunSettings(), this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo) - { - var numOfProcesses = Process.GetProcessesByName("vstest.console").Length; - - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests(this.GetTestAssemblies(), this.GetDefaultRunSettings(), this.runEventHandler); - this.vstestConsoleWrapper?.EndSession(); - - // Assert - Assert.AreEqual(numOfProcesses, Process.GetProcessesByName("vstest.console").Length); - - this.vstestConsoleWrapper = null; - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithTelemetryOptedIn(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests( - this.GetTestAssemblies(), - this.GetDefaultRunSettings(), - new TestPlatformOptions() { CollectMetrics = true }, - this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetDevice)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetFramework)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TargetOS)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.TimeTakenInSecForRun)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution)); - Assert.IsTrue(this.runEventHandler.Metrics.ContainsKey(TelemetryDataConstants.RunState)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithTelemetryOptedOut(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - this.vstestConsoleWrapper.RunTests( - this.GetTestAssemblies(), - this.GetDefaultRunSettings(), - new TestPlatformOptions() { CollectMetrics = false }, - this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(0, this.runEventHandler.Metrics.Count); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsShouldThrowOnStackOverflowException(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - if (IntegrationTestEnvironment.BuildConfiguration.Equals("release", StringComparison.OrdinalIgnoreCase)) - { - // On release, x64 builds, recursive calls may be replaced with loops (tail call optimization) - Assert.Inconclusive("On StackOverflowException testhost not exited in release configuration."); - return; - } - - var source = new[] { this.GetAssetFullPath("SimpleTestProject3.dll") }; - - this.vstestConsoleWrapper.RunTests( - source, - this.GetDefaultRunSettings(), - new TestPlatformOptions() { TestCaseFilter = "ExitWithStackoverFlow" }, - this.runEventHandler); - - var errorMessage = runnerInfo.TargetFramework == "net451" - ? $"The active test run was aborted. Reason: Test host process crashed : Process is terminated due to StackOverflowException.{Environment.NewLine}" - : $"The active test run was aborted. Reason: Test host process crashed : Process is terminating due to StackOverflowException.{Environment.NewLine}"; - - Assert.AreEqual(errorMessage, this.runEventHandler.LogMessage); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] - [NetCoreTargetFrameworkDataSource(useCoreRunner: false)] - public void RunTestsShouldShowProperWarningOnNoTestsForTestCaseFilter(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var testAssemblyName = "SimpleTestProject2.dll"; - var source = new List() { this.GetAssetFullPath(testAssemblyName) }; - - var veryLongTestCaseFilter = - "FullyQualifiedName=VeryLongTestCaseNameeeeeeeeeeeeee" + - "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + - "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + - "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + - "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; - - this.vstestConsoleWrapper.RunTests( - source, - this.GetDefaultRunSettings(), - new TestPlatformOptions() { TestCaseFilter = veryLongTestCaseFilter }, - this.runEventHandler); - - var expectedFilter = veryLongTestCaseFilter.Substring(0, 256) + "..."; - - // Assert - StringAssert.StartsWith(this.runEventHandler.LogMessage, $"No test matches the given testcase filter `{expectedFilter}` in"); - StringAssert.EndsWith(this.runEventHandler.LogMessage, testAssemblyName); - - Assert.AreEqual(TestMessageLevel.Warning, this.runEventHandler.TestMessageLevel); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs deleted file mode 100644 index f432c4a160..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using global::TestPlatform.TestUtilities; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Text; - using System.Threading; - - /// - /// The Run Tests using VsTestConsoleWrapper API's - /// - [TestClass] - public class RunTestsWithDifferentConfigurationTests : AcceptanceTestBase - { - private const string Netcoreapp = "netcoreapp"; - private const string Message = "VsTestConsoleWrapper does not support .Net Core Runner"; - - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithTestAdapterPath(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var testAdapterPath = Directory.EnumerateFiles(this.GetTestAdapterPath(), "*.TestAdapter.dll").ToList(); - this.vstestConsoleWrapper.InitializeExtensions(new List() { testAdapterPath.FirstOrDefault() }); - - this.vstestConsoleWrapper.RunTests( - this.GetTestAssemblies(), - this.GetDefaultRunSettings(), - this.runEventHandler); - - // Assert - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithRunSettingsWithParallel(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - string runSettingsXml = $@" - - - {FrameworkArgValue} - 2 - - "; - - var testHostNames = new[] { "testhost", "testhost.x86", "dotnet" }; - int expectedNumOfProcessCreated = 2; - - var cts = new CancellationTokenSource(); - var numOfProcessCreatedTask = NumberOfProcessLaunchedUtility.NumberOfProcessCreated( - cts, - testHostNames); - - this.vstestConsoleWrapper.RunTests( - this.GetTestAssemblies(), - runSettingsXml, - this.runEventHandler); - - cts.Cancel(); - - // Assert - this.runEventHandler.EnsureSuccess(); - Assert.AreEqual(6, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - Assert.AreEqual( - expectedNumOfProcessCreated, - numOfProcessCreatedTask.Result.Count, - $"Number of '{ string.Join(", ", testHostNames) }' process created, expected: {expectedNumOfProcessCreated} actual: {numOfProcessCreatedTask.Result.Count} ({ string.Join(", ", numOfProcessCreatedTask.Result) })"); - } - - [TestMethod] - [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - public void RunTestsWithTestSettings(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.ExecuteNotSupportedRunnerFrameworkTests(runnerInfo.RunnerFramework, Netcoreapp, Message); - this.Setup(); - - var testsettingsFile = Path.Combine(Path.GetTempPath(), "tempsettings.testsettings"); - string testSettingsXml = @""; - - File.WriteAllText(testsettingsFile, testSettingsXml, Encoding.UTF8); - var runSettings = $"{FrameworkArgValue}" + testsettingsFile + ""; - var sources = new List - { - this.GetAssetFullPath("MstestV1UnitTestProject.dll") - }; - - this.vstestConsoleWrapper.RunTests( - sources, - runSettings, - this.runEventHandler); - - // Assert - Assert.AreEqual(5, this.runEventHandler.TestResults.Count); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(2, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Skipped)); - - File.Delete(testsettingsFile); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithX64Source(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var sources = new List - { - this.GetAssetFullPath("SimpleTestProject3.dll") - }; - - - int expectedNumOfProcessCreated = 1; - var testhostProcessNames = new[] { "testhost", "dotnet" }; - - var cts = new CancellationTokenSource(); - var numOfProcessCreatedTask = NumberOfProcessLaunchedUtility.NumberOfProcessCreated( - cts, testhostProcessNames); - - this.vstestConsoleWrapper.RunTests( - sources, - this.GetDefaultRunSettings(), - new TestPlatformOptions() { TestCaseFilter = "FullyQualifiedName = SampleUnitTestProject3.UnitTest1.WorkingDirectoryTest" }, - this.runEventHandler); - - cts.Cancel(); - - // Assert - Assert.AreEqual(1, this.runEventHandler.TestResults.Count); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - var numberOfProcessCreated = numOfProcessCreatedTask.Result; - Assert.AreEqual( - expectedNumOfProcessCreated, - numberOfProcessCreated.Count, - $"Number of { string.Join(" ,", testhostProcessNames) } process created, expected: {expectedNumOfProcessCreated} actual: {numberOfProcessCreated.Count} ({ string.Join(", ", numberOfProcessCreated) })"); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTestsWithFilterTests.cs b/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTestsWithFilterTests.cs deleted file mode 100644 index cc3c782561..0000000000 --- a/test/Microsoft.TestPlatform.AcceptanceTests/TranslationLayerTests/RunTestsWithFilterTests.cs +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AcceptanceTests.TranslationLayerTests -{ - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.Linq; - - /// - /// The Run Tests using VsTestConsoleWrapper API's - /// - [TestClass] - public class RunTestsWithFilterTests : AcceptanceTestBase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - - private void Setup() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - } - - [TestCleanup] - public void Cleanup() - { - this.vstestConsoleWrapper?.EndSession(); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithTestCaseFilter(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var sources = new List - { - this.GetAssetFullPath("SimpleTestProject.dll") - }; - - this.vstestConsoleWrapper.RunTests( - sources, - this.GetDefaultRunSettings(), - new TestPlatformOptions() { TestCaseFilter = "FullyQualifiedName=SampleUnitTestProject.UnitTest1.PassingTest" }, - this.runEventHandler); - - // Assert - Assert.AreEqual(1, this.runEventHandler.TestResults.Count); - Assert.AreEqual(TestOutcome.Passed, this.runEventHandler.TestResults.FirstOrDefault().Outcome); - } - - [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] - public void RunTestsWithFastFilter(RunnerInfo runnerInfo) - { - AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo); - this.Setup(); - - var sources = new List - { - this.GetAssetFullPath("SimpleTestProject.dll") - }; - - this.vstestConsoleWrapper.RunTests( - sources, - this.GetDefaultRunSettings(), - new TestPlatformOptions() { TestCaseFilter = "FullyQualifiedName=SampleUnitTestProject.UnitTest1.PassingTest | FullyQualifiedName=SampleUnitTestProject.UnitTest1.FailingTest" }, - this.runEventHandler); - - // Assert - Assert.AreEqual(2, this.runEventHandler.TestResults.Count); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Passed)); - Assert.AreEqual(1, this.runEventHandler.TestResults.Count(t => t.Outcome == TestOutcome.Failed)); - } - - private IList GetTestAssemblies() - { - var testAssemblies = new List - { - this.GetAssetFullPath("SimpleTestProject.dll"), - this.GetAssetFullPath("SimpleTestProject2.dll") - }; - - return testAssemblies; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/FindMethodExtensions.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/FindMethodExtensions.cs index 8455bcb5f2..d20d4f2ef0 100644 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/FindMethodExtensions.cs +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/FindMethodExtensions.cs @@ -1,101 +1,99 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +using Microsoft.CodeAnalysis; + +namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests; + +internal static class FindMethodExtensions { - using Microsoft.CodeAnalysis; + private const BindingFlags PrivateBindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using System.Reflection; + internal static MethodInfo? FindMethod(this Type type, string signature) + => type.FindMembers(MemberTypes.Method, PrivateBindingFlags, + (mbr, sig) => mbr.ToString() == (string?)sig, signature).FirstOrDefault() as MethodInfo; - internal static class FindMethodExtensions + internal static IMethodSymbol FindMethod( + this INamedTypeSymbol type, + string methodName, + int methodGenericArity = -1, + params ITypeSymbol[] methodParameterTypes) { - private const BindingFlags PrivateBindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; - - internal static MethodInfo FindMethod(this Type type, string signature) - => type.FindMembers(MemberTypes.Method, PrivateBindingFlags, - (mbr, sig) => mbr.ToString() == (string)sig, signature).FirstOrDefault() as MethodInfo; + var candidates = GetCandidateMethods(type, methodName); + if (candidates.Any() && !candidates.Skip(1).Any()) + { + return candidates.Single(); + } - internal static IMethodSymbol FindMethod( - this INamedTypeSymbol type, - string methodName, - int methodGenericArity = -1, - params ITypeSymbol[] methodParameterTypes) + if (methodGenericArity != -1) { - var candidates = GetCandidateMethods(type, methodName); + candidates = candidates.Where(m => m.Arity == methodGenericArity); if (candidates.Any() && !candidates.Skip(1).Any()) { return candidates.Single(); } - - if (methodGenericArity != -1) - { - candidates = candidates.Where(m => m.Arity == methodGenericArity); - if (candidates.Any() && !candidates.Skip(1).Any()) - { - return candidates.Single(); - } - } - - if (methodParameterTypes != null && methodParameterTypes.Length >= 0) - { - candidates = candidates.Where(m => m.Parameters.Length == methodParameterTypes.Length); - if (candidates.Any() && !candidates.Skip(1).Any()) - { - return candidates.Single(); - } - - candidates = candidates.Where(m => m.Parameters.Select(p => p.Type).SequenceEqual(methodParameterTypes)); - } - - Debug.Assert(candidates.Any() && !candidates.Skip(1).Any()); - return candidates.SingleOrDefault(); } - internal static IMethodSymbol FindMethod( - this INamedTypeSymbol type, - string methodName, - int methodGenericArity, - int methodParameterCount, - Func selector) + if (methodParameterTypes != null && methodParameterTypes.Length >= 0) { - var candidates = GetCandidateMethods(type, methodName); + candidates = candidates.Where(m => m.Parameters.Length == methodParameterTypes.Length); if (candidates.Any() && !candidates.Skip(1).Any()) { return candidates.Single(); } - candidates = candidates.Where(m => m.Arity == methodGenericArity); - if (candidates.Any() && !candidates.Skip(1).Any()) - { - return candidates.Single(); - } + candidates = candidates.Where(m => m.Parameters.Select(p => p.Type).SequenceEqual(methodParameterTypes)); + } - candidates = candidates.Where(m => m.Parameters.Length == methodParameterCount); - if (candidates.Any() && !candidates.Skip(1).Any()) - { - return candidates.Single(); - } + TPDebug.Assert(candidates.Any() && !candidates.Skip(1).Any()); + return candidates.Single(); + } - candidates = candidates.Where(selector); + internal static IMethodSymbol FindMethod( + this INamedTypeSymbol type, + string methodName, + int methodGenericArity, + int methodParameterCount, + Func selector) + { + var candidates = GetCandidateMethods(type, methodName); + if (candidates.Any() && !candidates.Skip(1).Any()) + { + return candidates.Single(); + } - Debug.Assert(candidates.Any() && !candidates.Skip(1).Any()); - return candidates.SingleOrDefault(); + candidates = candidates.Where(m => m.Arity == methodGenericArity); + if (candidates.Any() && !candidates.Skip(1).Any()) + { + return candidates.Single(); } - private static IEnumerable GetCandidateMethods(INamedTypeSymbol type, string methodName) + candidates = candidates.Where(m => m.Parameters.Length == methodParameterCount); + if (candidates.Any() && !candidates.Skip(1).Any()) { - var candidates = type.GetMembers(methodName).OfType(); + return candidates.Single(); + } - if (type.BaseType != null && type.BaseType.SpecialType != SpecialType.System_Object) - { - candidates = candidates.Union(GetCandidateMethods(type.BaseType, methodName)); - } + candidates = candidates.Where(selector); + + TPDebug.Assert(candidates.Any() && !candidates.Skip(1).Any()); + return candidates.Single(); + } - return candidates; + private static IEnumerable GetCandidateMethods(INamedTypeSymbol type, string methodName) + { + var candidates = type.GetMembers(methodName).OfType(); + + if (type.BaseType != null && type.BaseType.SpecialType != SpecialType.System_Object) + { + candidates = candidates.Union(GetCandidateMethods(type.BaseType, methodName)); } + + return candidates; } } diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameGeneratorTests.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameGeneratorTests.cs new file mode 100644 index 0000000000..20abdbedab --- /dev/null +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameGeneratorTests.cs @@ -0,0 +1,142 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using TestClasses; + +namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests; + +[TestClass] +public class ManagedNameGeneratorTests +{ + [TestMethod] + public void Namespaceless_ClassMembers_ShouldNotReportANamespace() + { + // Arrange + var methodBase = typeof(global::NamespacelessClass).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName); + + // Assert + Assert.AreEqual("NamespacelessClass", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + } + + [TestMethod] + public void Namespaceless_RecordMembers_ShouldNotReportANamespace() + { + // Arrange + var methodBase = typeof(global::NamespacelessRecord).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName); + + // Assert + Assert.AreEqual("NamespacelessRecord", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + } + + [TestMethod] + public void Namespaceless_InnerClassMembers_ShouldNotReportANamespace() + { + // Arrange + var methodBase = typeof(global::NamespacelessClass.Inner).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName); + + // Assert + Assert.AreEqual("NamespacelessClass+Inner", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + } + + [TestMethod] + public void Namespaceless_InnerRecordMembers_ShouldNotReportANamespace() + { + // Arrange + var methodBase = typeof(global::NamespacelessRecord.Inner).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName); + + // Assert + Assert.AreEqual("NamespacelessRecord+Inner", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + } + + [TestMethod] + public void Namespaceless_ClassMembers_ShouldNotReportANamespace_InHierarchy() + { + // Arrange + var methodBase = typeof(global::NamespacelessClass).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName, out var hierarchyValues); + + // Assert + Assert.AreEqual("NamespacelessClass", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + Assert.IsNull(hierarchyValues[HierarchyConstants.Levels.NamespaceIndex]); + } + + [TestMethod] + public void Namespaceless_RecordMembers_ShouldNotReportANamespace_InHierarch() + { + // Arrange + var methodBase = typeof(global::NamespacelessRecord).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName, out var hierarchyValues); + + // Assert + Assert.AreEqual("NamespacelessRecord", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + Assert.IsNull(hierarchyValues[HierarchyConstants.Levels.NamespaceIndex]); + } + + [TestMethod] + public void Namespaceless_InnerClassMembers_ShouldNotReportANamespace_InHierarchy() + { + // Arrange + var methodBase = typeof(global::NamespacelessClass.Inner).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName, out var hierarchyValues); + + // Assert + Assert.AreEqual("NamespacelessClass+Inner", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + Assert.IsNull(hierarchyValues[HierarchyConstants.Levels.NamespaceIndex]); + } + + [TestMethod] + public void Namespaceless_InnerRecordMembers_ShouldNotReportANamespace_InHierarchy() + { + // Arrange + var methodBase = typeof(global::NamespacelessRecord.Inner).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName, out var hierarchyValues); + + // Assert + Assert.AreEqual("NamespacelessRecord+Inner", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + Assert.IsNull(hierarchyValues[HierarchyConstants.Levels.NamespaceIndex]); + } + + [TestMethod] + public void SpecialCharacters_HierarchyShouldNotWrapMembersWithSpecialCharactersInSingleQuotes() + { + var methodBase = typeof(Class狧麱狵錋狾龍龪啊阿埃挨哎唉0u㐀㐁㐂㐃㐄㐅㐆㐇6ⅶ0ǒoU1U2U38丂丄丅丆丏丒丟).GetMethod("Method0")!; + + // Act + ManagedNameHelper.GetManagedName(methodBase, out var managedTypeName, out var managedMethodName, out var _); + + // Assert + Assert.AreEqual("TestClasses.Class狧麱狵錋狾龍龪啊阿埃挨哎唉0u㐀㐁㐂㐃㐄㐅㐆㐇6ⅶ0ǒoU1U2U38丂丄丅丆丏丒丟", managedTypeName); + Assert.AreEqual("Method0", managedMethodName); + } + +} diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameParserTests.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameParserTests.cs index 289d9d604a..826de8e0d1 100644 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameParserTests.cs +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameParserTests.cs @@ -1,74 +1,81 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests -{ - using Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests; - [TestClass] - public class ManagedNameParserTests +[TestClass] +public class ManagedNameParserTests +{ + [TestMethod] + public void ParseTypeName() { - [TestMethod] - public void ParseTypeName() + static (string, string) Parse(string managedTypeName) { - (string, string) Parse(string managedTypeName) - { - ManagedNameParser.ParseManagedTypeName(managedTypeName, out var namespaceName, out var typeName); - return (namespaceName, typeName); - } + ManagedNameParser.ParseManagedTypeName(managedTypeName, out var namespaceName, out var typeName); + return (namespaceName, typeName); + } - Assert.AreEqual(("NS", "Class"), Parse("NS.Class")); - Assert.AreEqual(("NS.NS", "Class"), Parse("NS.NS.Class")); - Assert.AreEqual(("NS.NS", "Class`2"), Parse("NS.NS.Class`2")); - Assert.AreEqual(("NS.NS", "ClassA`2+ClassInner"), Parse("NS.NS.ClassA`2+ClassInner")); - Assert.AreEqual(("NS.NS", "ClassA`2+ClassInner`1"), Parse("NS.NS.ClassA`2+ClassInner`1")); - Assert.AreEqual(("", "ClassA`2+ClassInner`1"), Parse("ClassA`2+ClassInner`1")); + Assert.AreEqual(("NS", "Class"), Parse("NS.Class")); + Assert.AreEqual(("NS.NS", "Class"), Parse("NS.NS.Class")); + Assert.AreEqual(("NS.NS", "Class`2"), Parse("NS.NS.Class`2")); + Assert.AreEqual(("NS.NS", "ClassA`2+ClassInner"), Parse("NS.NS.ClassA`2+ClassInner")); + Assert.AreEqual(("NS.NS", "ClassA`2+ClassInner`1"), Parse("NS.NS.ClassA`2+ClassInner`1")); + Assert.AreEqual(("", "ClassA`2+ClassInner`1"), Parse("ClassA`2+ClassInner`1")); + } + + [TestMethod] + public void ParseMethodName() + { + (string, int, string[]?) Parse(string managedMethodName) + { + ManagedNameParser.ParseManagedMethodName(managedMethodName, out var method, out var arity, out var parameterTypes); + return (method, arity, parameterTypes); } - [TestMethod] - public void ParseMethodName() + void AssertParse(string expectedMethod, int expectedArity, string[] expectedParams, string expression) { - (string, int, string[]) Parse(string managedMethodName) - { - ManagedNameParser.ParseManagedMethodName(managedMethodName, out var method, out var arity, out var parameterTypes); - return (method, arity, parameterTypes); - } + var (method, arity, parameters) = Parse(expression); + Assert.AreEqual(expectedMethod, method); + Assert.AreEqual(expectedArity, arity); + CollectionAssert.AreEqual(expectedParams, parameters, "parameter comparison"); + } - void AssertParse(string expectedMethod, int expectedArity, string[] expectedParams, string expression) - { - var (method, arity, parameters) = Parse(expression); - Assert.AreEqual(expectedMethod, method); - Assert.AreEqual(expectedArity, arity); - CollectionAssert.AreEqual(expectedParams, parameters, "parameter comparison"); - } + Assert.AreEqual(("Method", 0, null), Parse("Method")); + Assert.AreEqual(("Method", 0, null), Parse("Method()")); + Assert.AreEqual(("Method", 2, null), Parse("Method`2()")); + AssertParse("Method", 0, ["System.Int32"], "Method(System.Int32)"); + AssertParse("Method", 0, ["TypeA", "List"], "Method(TypeA,List)"); + AssertParse("Method", 1, ["B", "List"], "Method`1(B,List)"); + AssertParse("Method", 0, ["B[]"], "Method(B[])"); + AssertParse("Method", 0, ["A[,]", "B[,,][]"], "Method(A[,],B[,,][])"); - Assert.AreEqual(("Method", 0, null), Parse("Method")); - Assert.AreEqual(("Method", 0, null), Parse("Method()")); - Assert.AreEqual(("Method", 2, null), Parse("Method`2()")); - AssertParse("Method", 0, new string[] { "System.Int32" }, "Method(System.Int32)"); - AssertParse("Method", 0, new string[] { "TypeA", "List" }, "Method(TypeA,List)"); - AssertParse("Method", 1, new string[] { "B", "List" }, "Method`1(B,List)"); - AssertParse("Method", 0, new string[] { "B[]" }, "Method(B[])"); - AssertParse("Method", 0, new string[] { "A[,]", "B[,,][]" }, "Method(A[,],B[,,][])"); - } + // An F# method that would look like this in code: member _.``method that does not pass`` () = + // And like this in CIL: instance void 'method that does not pass' () cil managed + Assert.AreEqual(("Method that does not pass", 0, null), Parse("'Method that does not pass'()")); + + // An F# method that would look like this in code: member _.``method that doesn't pass`` () = + // And like this in CIL: instance void 'method that doesn\'t pass' () cil managed + // Notice the ' escaped by \. + Assert.AreEqual(("Method that doesn't pass", 0, null), Parse(@"'Method that doesn\'t pass'()")); + } - [TestMethod] - public void ParseInvalidMethodName() + [TestMethod] + public void ParseInvalidMethodName() + { + static (string, int, string[]?) Parse(string methodName) { - (string, int, string[]) Parse(string methodName) - { - ManagedNameParser.ParseManagedMethodName(methodName, out var method, out var arity, out var parameterTypes); - return (method, arity, parameterTypes); - } + ManagedNameParser.ParseManagedMethodName(methodName, out var method, out var arity, out var parameterTypes); + return (method, arity, parameterTypes); + } - Assert.ThrowsException(() => Parse(" Method"), "Whitespace is not valid in a ManagedName (pos: 0)"); - Assert.ThrowsException(() => Parse("Method( List)"), "Whitespace is not valid in a ManagedName (pos: 7)"); + Assert.ThrowsException(() => Parse(" Method"), "Whitespace is not valid in a ManagedName (pos: 0)"); + Assert.ThrowsException(() => Parse("Method( List)"), "Whitespace is not valid in a ManagedName (pos: 7)"); - Assert.ThrowsException(() => Parse("Method(List)xa"), "Unexpected characters after the end of the ManagedName (pos: 7)"); + Assert.ThrowsException(() => Parse("Method(List)xa"), "Unexpected characters after the end of the ManagedName (pos: 7)"); - Assert.ThrowsException(() => Parse("Method("), "ManagedName is incomplete"); - Assert.ThrowsException(() => Parse("Method`4a"), "Method arity must be numeric"); - } + Assert.ThrowsException(() => Parse("Method("), "ManagedName is incomplete"); + Assert.ThrowsException(() => Parse("Method`4a"), "Method arity must be numeric"); } } diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameRoundTripTests.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameRoundTripTests.cs index c6bfc854fa..4a2789e234 100644 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameRoundTripTests.cs +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/ManagedNameRoundTripTests.cs @@ -1,938 +1,938 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Reflection; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests; + +[TestClass] +[DeploymentItem("TestClasses.cs")] +public partial class ManagedNameRoundTripTests { - using Microsoft.CodeAnalysis; - using Microsoft.CodeAnalysis.CSharp; - using Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System.IO; - using System.Linq; - using System.Reflection; - - [TestClass] - [DeploymentItem("TestClasses.cs")] - public partial class ManagedNameRoundTripTests - { - private const BindingFlags PrivateBindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; - private Compilation _compilation; - - [TestInitialize] - public void Initialize() - => _compilation = CSharpCompilation.Create( - "Test.dll", - new[] { CSharpSyntaxTree.ParseText(File.ReadAllText("TestClasses.cs")) }, - new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) }); - - [TestMethod] - public void Simple1() - { - var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method0"), - containingTypeSymbol: outer, - methodSymbol: outer.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer", - managedMethodName: "Method0"); - } - - [TestMethod] - public void Simple2() - { - var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method1"), - containingTypeSymbol: outer, - methodSymbol: outer.FindMethod("Method1"), - managedTypeName: "TestClasses.Outer", - managedMethodName: "Method1(System.Int32)"); - } - - [TestMethod] - public void Simple3() - { - var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method2"), - containingTypeSymbol: outer, - methodSymbol: outer.FindMethod("Method2"), - managedTypeName: "TestClasses.Outer", - managedMethodName: "Method2(System.Collections.Generic.List`1)"); - } - - [TestMethod] - public void Simple4() - { - var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method3"), - containingTypeSymbol: outer, - methodSymbol: outer.FindMethod("Method3"), - managedTypeName: "TestClasses.Outer", - managedMethodName: "Method3(System.String,System.Int32)"); - } - - [TestMethod] - public void Nested1() - { - var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method0"), - containingTypeSymbol: outerInner, - methodSymbol: outerInner.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer+Inner", - managedMethodName: "Method0"); - } - - [TestMethod] - public void Nested2() - { - var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method1"), - containingTypeSymbol: outerInner, - methodSymbol: outerInner.FindMethod("Method1"), - managedTypeName: "TestClasses.Outer+Inner", - managedMethodName: "Method1(System.Int32)"); - } - - [TestMethod] - public void OpenGeneric1() - { - var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method0"), - containingTypeSymbol: outerT, - methodSymbol: outerT.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method0"); - } - - [TestMethod] - public void OpenGeneric2() - { - var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method1"), - containingTypeSymbol: outerT, - methodSymbol: outerT.FindMethod("Method1"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method1(!0)"); - } - - [TestMethod] - public void OpenGeneric3() - { - var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method2"), - containingTypeSymbol: outerT, - methodSymbol: outerT.FindMethod("Method2"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method2`1(!!0[])"); - } - - [TestMethod] - public void OpenGeneric4() - { - var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method3"), - containingTypeSymbol: outerT, - methodSymbol: outerT.FindMethod("Method3"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method3`1(!0,!!0)"); - } - - [TestMethod] - public void OpenGenericNested1() - { - var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method0"), - containingTypeSymbol: outerTInnterV, - methodSymbol: outerTInnterV.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method0"); - } - - [TestMethod] - public void OpenGenericNested2() - { - var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method1"), - containingTypeSymbol: outerTInnterV, - methodSymbol: outerTInnterV.FindMethod("Method1"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method1(!0)"); - } - - [TestMethod] - public void OpenGenericNested3() - { - var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method2"), - containingTypeSymbol: outerTInnterV, - methodSymbol: outerTInnterV.FindMethod("Method2"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method2(!1)"); - } - - [TestMethod] - public void OpenGenericNested4() - { - var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method3"), - containingTypeSymbol: outerTInnterV, - methodSymbol: outerTInnterV.FindMethod("Method3"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method3`1(!0,!!0,!1)"); - } - - [TestMethod] - public void OpenGenericNested5() - { - var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method4"), - containingTypeSymbol: outerTInnterV, - methodSymbol: outerTInnterV.FindMethod("Method4"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method4`2(!!1,!!0)"); - } - - [TestMethod] - public void OpenGenericNested6() - { - var outerTInnerVMoreInnerI = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1+MoreInner`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer<>.Inner<>.MoreInner<>).GetMethod("Method0"), - containingTypeSymbol: outerTInnerVMoreInnerI, - methodSymbol: outerTInnerVMoreInnerI.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer`1+Inner`1+MoreInner`1", - managedMethodName: "Method0`1(!0,!1,!2,!!0)"); - } - - [TestMethod] - public void ClosedGeneric1() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method0"), - containingTypeSymbol: outerTInt, - methodSymbol: outerTInt.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method0"); - } - - [TestMethod] - public void ClosedGeneric2() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method1"), - containingTypeSymbol: outerTInt, - methodSymbol: outerTInt.FindMethod("Method1"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method1(!0)"); - } - - [TestMethod] - public void ClosedGeneric3() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method2"), - containingTypeSymbol: outerTInt, - methodSymbol: outerTInt.FindMethod("Method2"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method2`1(!!0[])"); - } - - [TestMethod] - public void ClosedGeneric4() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method3"), - containingTypeSymbol: outerTInt, - methodSymbol: outerTInt.FindMethod("Method3"), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method3`1(!0,!!0)"); - } - - [TestMethod] - public void ClosedGenericNested1() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method0"), - containingTypeSymbol: outerTIntInnerVString, - methodSymbol: outerTIntInnerVString.FindMethod("Method0"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method0"); - } - - [TestMethod] - public void ClosedGenericNested2() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method1"), - containingTypeSymbol: outerTIntInnerVString, - methodSymbol: outerTIntInnerVString.FindMethod("Method1"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method1(!0)"); - } - - [TestMethod] - public void ClosedGenericNested3() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method2"), - containingTypeSymbol: outerTIntInnerVString, - methodSymbol: outerTIntInnerVString.FindMethod("Method2"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method2(!1)"); - } - - [TestMethod] - public void ClosedGenericNested4() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method3"), - containingTypeSymbol: outerTIntInnerVString, - methodSymbol: outerTIntInnerVString.FindMethod("Method3"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method3`1(!0,!!0,!1)"); - } - - [TestMethod] - public void ClosedGenericNested5() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method4"), - containingTypeSymbol: outerTIntInnerVString, - methodSymbol: outerTIntInnerVString.FindMethod("Method4"), - managedTypeName: "TestClasses.Outer`1+Inner`1", - managedMethodName: "Method4`2(!!1,!!0)"); - } - - [TestMethod] - public void ClosedGenericMethod1() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1").Construct(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer).GetMethod("Method3").MakeGenericMethod(typeof(string)), - containingTypeSymbol: outerTInt, - methodSymbol: outerTInt.FindMethod("Method3").Construct(@string), - managedTypeName: "TestClasses.Outer`1", - managedMethodName: "Method3`1(!0,!!0)"); - } - - [TestMethod] - public void ClosedGenericMethod2() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method2").MakeGenericMethod(typeof(int)), - containingTypeSymbol: outerInner, - methodSymbol: outerInner.FindMethod("Method2").Construct(@int), - managedTypeName: "TestClasses.Outer+Inner", - managedMethodName: "Method2`1(System.Int32)"); - } - - [TestMethod] - public void ClosedGenericMethod3() - { - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var @float = _compilation.GetSpecialType(SpecialType.System_Single); - var @string = _compilation.GetSpecialType(SpecialType.System_String); - var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method3").MakeGenericMethod(typeof(float), typeof(string)), - containingTypeSymbol: outerInner, - methodSymbol: outerInner.FindMethod("Method3").Construct(@float, @string), - managedTypeName: "TestClasses.Outer+Inner", - managedMethodName: "Method3`2(System.Int32)"); - } - - [TestMethod] - public void ExplicitInterfaceImplementation1() - { - var impl = _compilation.GetTypeByMetadataName("TestClasses.Impl"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Impl).GetMethod("TestClasses.IImplementation.ImplMethod0", PrivateBindingFlags), - containingTypeSymbol: impl, - methodSymbol: impl.FindMethod("TestClasses.IImplementation.ImplMethod0"), - managedTypeName: "TestClasses.Impl", - managedMethodName: "TestClasses.IImplementation.ImplMethod0"); - } - - [TestMethod] - public void ExplicitInterfaceImplementation2() - { - var impl = _compilation.GetTypeByMetadataName("TestClasses.Impl"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Impl).GetMethod("TestClasses.IImplementation.ImplMethod1", PrivateBindingFlags), - containingTypeSymbol: impl, - methodSymbol: impl.FindMethod("TestClasses.IImplementation.ImplMethod1"), - managedTypeName: "TestClasses.Impl", - managedMethodName: "TestClasses.IImplementation.ImplMethod1(System.Int32)"); - } - - [TestMethod] - public void GenericExplicitInterfaceImplementation1() - { - var implT = _compilation.GetTypeByMetadataName("TestClasses.Impl`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Impl<>).GetMethod("TestClasses.IImplementation.ImplMethod0", PrivateBindingFlags), - containingTypeSymbol: implT, - methodSymbol: implT.FindMethod("TestClasses.IImplementation.ImplMethod0"), - managedTypeName: "TestClasses.Impl`1", - managedMethodName: "'TestClasses.IImplementation.ImplMethod0'"); - } - - [TestMethod] - public void GenericExplicitInterfaceImplementation2() - { - var implT = _compilation.GetTypeByMetadataName("TestClasses.Impl`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Impl<>).GetMethod("TestClasses.IImplementation.ImplMethod1", PrivateBindingFlags), - containingTypeSymbol: implT, - methodSymbol: implT.FindMethod("TestClasses.IImplementation.ImplMethod1"), - managedTypeName: "TestClasses.Impl`1", - managedMethodName: "'TestClasses.IImplementation.ImplMethod1'(!0)"); - } - - [TestMethod] - public void GenericExplicitInterfaceImplementation3() - { - var implT = _compilation.GetTypeByMetadataName("TestClasses.Impl`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Impl<>).GetMethod("TestClasses.IImplementation.ImplMethod2", PrivateBindingFlags), - containingTypeSymbol: implT, - methodSymbol: implT.FindMethod("TestClasses.IImplementation.ImplMethod2"), - managedTypeName: "TestClasses.Impl`1", - managedMethodName: "'TestClasses.IImplementation.ImplMethod2'`1(!0,!!0,System.String)"); - } - - [TestMethod] - public void Inheritance1() - { - var outerPrime = _compilation.GetTypeByMetadataName("TestClasses.OuterPrime"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.OuterPrime).GetMethod("Method3"), - containingTypeSymbol: outerPrime, - methodSymbol: outerPrime.FindMethod("Method3"), - managedTypeName: "TestClasses.OuterPrime", - managedMethodName: "Method3(System.String,System.Int32)"); - } - - [TestMethod] - public void Inheritance2() - { - var outerPrimeZ = _compilation.GetTypeByMetadataName("TestClasses.OuterPrime`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.OuterPrime<>).GetMethod("Method3"), - containingTypeSymbol: outerPrimeZ, - methodSymbol: outerPrimeZ.FindMethod("Method3"), - managedTypeName: "TestClasses.OuterPrime`1", - managedMethodName: "Method3`1(!0,!!0)"); - } - - [TestMethod] - public void Inheritance3() - { - var outerPrimeYZ = _compilation.GetTypeByMetadataName("TestClasses.OuterPrime`2"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.OuterPrime<,>).GetMethod("Method3"), - containingTypeSymbol: outerPrimeYZ, - methodSymbol: outerPrimeYZ.FindMethod("Method3"), - managedTypeName: "TestClasses.OuterPrime`2", - managedMethodName: "Method3`1(!1,!!0)"); - } - - [TestMethod] - public void Inheritance4() - { - var outerString = _compilation.GetTypeByMetadataName("TestClasses.OuterString"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.OuterString).GetMethod("Method3"), - containingTypeSymbol: outerString, - methodSymbol: outerString.FindMethod("Method3"), - managedTypeName: "TestClasses.OuterString", - managedMethodName: "Method3`1(System.String,!!0)"); - } - - [TestMethod] - public void Overloads1() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0()"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0"); - } - - [TestMethod] - public void Overloads2() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(Int32)"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0, @int), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0(System.Int32)"); - } - - [TestMethod] - public void Overloads3() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(Int32, TestClasses.Overloads)"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0, @int, overloads), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0(System.Int32,TestClasses.Overloads)"); - } - - [TestMethod] - public void Overloads4() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var intptr = _compilation.CreatePointerTypeSymbol(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(Int32*)"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0, intptr), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0(System.Int32*)"); - } - - [TestMethod] - public void Overloads5() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var dynamic = _compilation.DynamicType; - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(System.Object)"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0, dynamic), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0(System.Object)"); - } - - [TestMethod] - public void Overloads6() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U)"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, m => m.Parameters.Single().Type == m.TypeParameters.Single()), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(!!0)"); - } - - [TestMethod] - public void Overloads7() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U]()"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1"); - } - - [TestMethod] - public void Overloads8() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U,T]()"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 2), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`2"); - } - - [TestMethod] - public void Overloads9() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, - m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && - arrayType.Rank == 1 && - arrayType.ElementType == m.TypeParameters.Single()), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(!!0[])"); - } - - [TestMethod] - public void Overloads10() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[][])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, - m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && - arrayType.Rank == 1 && - arrayType.ElementType is IArrayTypeSymbol innerArrayType && - innerArrayType.Rank == 1 && - innerArrayType.ElementType == m.TypeParameters.Single()), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(!!0[][])"); - } - - [TestMethod] - public void Overloads11() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[,])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, - m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && - arrayType.Rank == 2 && - arrayType.ElementType == m.TypeParameters.Single()), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(!!0[,])"); - } - - [TestMethod] - public void Overloads12() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[,,])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, - m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && - arrayType.Rank == 3 && - arrayType.ElementType == m.TypeParameters.Single()), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(!!0[,,])"); - } - - [TestMethod] - public void Overloads13() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var @int = _compilation.GetSpecialType(SpecialType.System_Int32); - var listInt = _compilation.GetTypeByMetadataName("System.Collections.Generic.List`1").Construct(@int); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](System.Collections.Generic.List`1[System.Int32])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, listInt), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(System.Collections.Generic.List`1)"); - } - - [TestMethod] - public void Overloads14() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var list = _compilation.GetTypeByMetadataName("System.Collections.Generic.List`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](System.Collections.Generic.List`1[U])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, - m => - m.Parameters.Single().Type is INamedTypeSymbol p && - p.OriginalDefinition == list && - p.TypeArguments.Single() == m.TypeParameters.Single()), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(System.Collections.Generic.List`1)"); - } - - [TestMethod] - public void Overloads15() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var tuple2 = _compilation.GetTypeByMetadataName("System.Tuple`2"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U,V](System.Tuple`2[U,V], System.Tuple`2[V,U])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 2, 2, - m => - m.Parameters.First() is INamedTypeSymbol p1 && - p1.OriginalDefinition == tuple2 && - p1.TypeArguments.SequenceEqual(m.TypeParameters) && - m.Parameters.Last() is INamedTypeSymbol p2 && - p2.OriginalDefinition == tuple2 && - p2.TypeArguments.SequenceEqual(m.TypeParameters.Reverse())), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`2(System.Tuple`2,System.Tuple`2)"); - } - - [TestMethod] - public void Overloads16() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var tuple1 = _compilation.GetTypeByMetadataName("System.Tuple`1"); - var tuple2 = _compilation.GetTypeByMetadataName("System.Tuple`2"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(System.Tuple`1[System.Tuple`2[System.String[,],System.Int32]])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0, 1, - m => - m.Parameters.Single().Type is INamedTypeSymbol p && - p.OriginalDefinition == tuple1 && - p.TypeArguments.Single() is INamedTypeSymbol t && - t.OriginalDefinition == tuple2), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0(System.Tuple`1>)"); - } - - [TestMethod] - public void Overloads17() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var tuple1 = _compilation.GetTypeByMetadataName("System.Tuple`1"); - var tuple2 = _compilation.GetTypeByMetadataName("System.Tuple`2"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(System.Tuple`2[System.Tuple`1[System.String],System.Tuple`1[System.Int32]])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 0, 1, - m => - m.Parameters.Single().Type is INamedTypeSymbol p && - p.OriginalDefinition == tuple2 && - p.TypeArguments.All(t => t.OriginalDefinition == tuple1)), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0(System.Tuple`2,System.Tuple`1>)"); - } - - [TestMethod] - public void Overloads18() - { - var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads"); - var tuple1 = _compilation.GetTypeByMetadataName("System.Tuple`1"); - - VerifyRoundTrip( - methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](System.Tuple`1[System.Tuple`1[TestClasses.Outer`1+Inner`1[U,U]]])"), - containingTypeSymbol: overloads, - methodSymbol: overloads.FindMethod("Overload0", 1, 1, - m => - m.Parameters.Single().Type is INamedTypeSymbol p && - p.OriginalDefinition == tuple1 && - p.TypeArguments.Single() is INamedTypeSymbol t && - t.OriginalDefinition == tuple1), - managedTypeName: "TestClasses.Overloads", - managedMethodName: "Overload0`1(System.Tuple`1>>)"); - } - - #region Helpers - private void VerifyRoundTrip( - MethodInfo methodInfo, - INamedTypeSymbol containingTypeSymbol, - IMethodSymbol methodSymbol, - string managedTypeName, - string managedMethodName) - { - VerifyRoundTripFromMethodInfo(methodInfo, managedTypeName, managedMethodName); - VerifyRoundTripFromName(managedTypeName, managedMethodName, methodInfo); - // VerifyRoundTripFromMethodSymbol(containingTypeSymbol, methodSymbol, managedTypeName, managedMethodName); - // VerifyRoundTripFromName(managedTypeName, managedMethodName, containingTypeSymbol, methodSymbol); - } - - private void VerifyRoundTripFromMethodInfo( - MethodInfo methodInfo, - string expectedManagedTypeName, - string expectedManagedMethodName) - { - // Generate the fqn for the Reflection MethodInfo - ManagedNameHelper.GetManagedName(methodInfo, out var managedTypeName, out var managedMethodName, out var hierarchyValues); - - Assert.AreEqual(expectedManagedTypeName, managedTypeName); - Assert.AreEqual(expectedManagedMethodName, managedMethodName); - - // Lookup the Reflection MethodInfo using fullTypeName and fullMethodName - var roundTrippedMethodInfo = ManagedNameHelper.GetMethod( - Assembly.GetExecutingAssembly(), - managedTypeName, - managedMethodName); - - Assert.AreEqual(methodInfo.MetadataToken, roundTrippedMethodInfo.MetadataToken); - } - - private void VerifyRoundTripFromName( - string managedTypeName, - string managedMethodName, - MethodInfo expectedMethodInfo) - { - // Lookup the Reflection MethodInfo using fullTypeName and fullMethodName - var methodInfo = ManagedNameHelper.GetMethod( - Assembly.GetExecutingAssembly(), - managedTypeName, - managedMethodName); - - Assert.AreEqual(expectedMethodInfo.MetadataToken, methodInfo.MetadataToken); - - // Generate the fqn for the Reflection MethodInfo - ManagedNameHelper.GetManagedName( - methodInfo, - out var roundTrippedFullTypeName, - out var roundTrippedFullMethodName); - - Assert.AreEqual(managedTypeName, roundTrippedFullTypeName); - Assert.AreEqual(managedMethodName, roundTrippedFullMethodName); - } - - // private void VerifyRoundTripFromMethodSymbol( - // INamedTypeSymbol containingTypeSymbol, - // IMethodSymbol methodSymbol, - // string expectedFullTypeName, - // string expectedFullMethodName) - // { - // // Generate the fqn for the Roslyn IMethodSymbol - // FullyQualifiedNameHelper.GetFullyQualifiedName( - // containingTypeSymbol, - // methodSymbol, - // out var fullTypeName, - // out var fullMethodName); - - // Assert.AreEqual(expectedFullTypeName, fullTypeName); - // Assert.AreEqual(expectedFullMethodName, fullMethodName); - - // // Lookup the Roslyn ITypeSymbol and IMethodSymbol using fullTypeName and fullMethodName - // var roundTrippedContainingTypeSymbol = _compilation.GetTypeByMetadataName(fullTypeName); - - // Assert.AreEqual(containingTypeSymbol.OriginalDefinition, roundTrippedContainingTypeSymbol.OriginalDefinition); - - // var roundTrippedMethodSymbol = FullyQualifiedNameHelper.GetMethodFromFullyQualifiedName( - // _compilation, - // fullTypeName, - // fullMethodName); - - // Assert.AreEqual(methodSymbol.OriginalDefinition, roundTrippedMethodSymbol.OriginalDefinition); - // } - - // private void VerifyRoundTripFromName( - // string fullTypeName, - // string fullMethodName, - // INamedTypeSymbol expectedContainingTypeSymbol, - // IMethodSymbol expectedMethodSymbol) - // { - // // Lookup the Roslyn ITypeSymbol and IMethodSymbol using fullTypeName and fullMethodName - // var containingTypeSymbol = _compilation.GetTypeByMetadataName(fullTypeName); - // - // Assert.AreEqual(expectedContainingTypeSymbol.OriginalDefinition, containingTypeSymbol.OriginalDefinition); - // - // var methodSymbol = FullyQualifiedNameHelper.GetMethodFromFullyQualifiedName( - // _compilation, - // fullTypeName, - // fullMethodName); - // - // Assert.AreEqual(expectedMethodSymbol.OriginalDefinition, methodSymbol.OriginalDefinition); - // - // // Generate the fqn for the Roslyn IMethodSymbol - // FullyQualifiedNameHelper.GetFullyQualifiedName( - // containingTypeSymbol, - // methodSymbol, - // out var roundTrippedFullTypeName, - // out var roundTrippedFullMethodName); - // - // Assert.AreEqual(fullTypeName, roundTrippedFullTypeName); - // Assert.AreEqual(fullMethodName, roundTrippedFullMethodName); - // } - #endregion + private const BindingFlags PrivateBindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; + private readonly Compilation _compilation; + + public ManagedNameRoundTripTests() + => _compilation = CSharpCompilation.Create( + "Test.dll", + new[] { CSharpSyntaxTree.ParseText(File.ReadAllText("TestClasses.cs")) }, + new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) }); + + [TestMethod] + public void Simple1() + { + var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method0")!, + containingTypeSymbol: outer, + methodSymbol: outer.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer", + managedMethodName: "Method0"); + } + + [TestMethod] + public void Simple2() + { + var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method1")!, + containingTypeSymbol: outer, + methodSymbol: outer.FindMethod("Method1")!, + managedTypeName: "TestClasses.Outer", + managedMethodName: "Method1(System.Int32)"); + } + + [TestMethod] + public void Simple3() + { + var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method2")!, + containingTypeSymbol: outer, + methodSymbol: outer.FindMethod("Method2")!, + managedTypeName: "TestClasses.Outer", + managedMethodName: "Method2(System.Collections.Generic.List`1)"); + } + + [TestMethod] + public void Simple4() + { + var outer = _compilation.GetTypeByMetadataName("TestClasses.Outer")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method3")!, + containingTypeSymbol: outer, + methodSymbol: outer.FindMethod("Method3")!, + managedTypeName: "TestClasses.Outer", + managedMethodName: "Method3(System.String,System.Int32)"); + } + + [TestMethod] + public void Nested1() + { + var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method0")!, + containingTypeSymbol: outerInner, + methodSymbol: outerInner.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer+Inner", + managedMethodName: "Method0"); + } + + [TestMethod] + public void Nested2() + { + var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method1")!, + containingTypeSymbol: outerInner, + methodSymbol: outerInner.FindMethod("Method1")!, + managedTypeName: "TestClasses.Outer+Inner", + managedMethodName: "Method1(System.Int32)"); + } + + [TestMethod] + public void OpenGeneric1() + { + var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method0")!, + containingTypeSymbol: outerT, + methodSymbol: outerT.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method0"); + } + + [TestMethod] + public void OpenGeneric2() + { + var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method1")!, + containingTypeSymbol: outerT, + methodSymbol: outerT.FindMethod("Method1")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method1(!0)"); + } + + [TestMethod] + public void OpenGeneric3() + { + var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method2")!, + containingTypeSymbol: outerT, + methodSymbol: outerT.FindMethod("Method2")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method2`1(!!0[])"); + } + + [TestMethod] + public void OpenGeneric4() + { + var outerT = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>).GetMethod("Method3")!, + containingTypeSymbol: outerT, + methodSymbol: outerT.FindMethod("Method3")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method3`1(!0,!!0)"); } + + [TestMethod] + public void OpenGenericNested1() + { + var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method0")!, + containingTypeSymbol: outerTInnterV, + methodSymbol: outerTInnterV.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method0"); + } + + [TestMethod] + public void OpenGenericNested2() + { + var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method1")!, + containingTypeSymbol: outerTInnterV, + methodSymbol: outerTInnterV.FindMethod("Method1")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method1(!0)"); + } + + [TestMethod] + public void OpenGenericNested3() + { + var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method2")!, + containingTypeSymbol: outerTInnterV, + methodSymbol: outerTInnterV.FindMethod("Method2")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method2(!1)"); + } + + [TestMethod] + public void OpenGenericNested4() + { + var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method3")!, + containingTypeSymbol: outerTInnterV, + methodSymbol: outerTInnterV.FindMethod("Method3")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method3`1(!0,!!0,!1)"); + } + + [TestMethod] + public void OpenGenericNested5() + { + var outerTInnterV = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>.Inner<>).GetMethod("Method4")!, + containingTypeSymbol: outerTInnterV, + methodSymbol: outerTInnterV.FindMethod("Method4")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method4`2(!!1,!!0)"); + } + + [TestMethod] + public void OpenGenericNested6() + { + var outerTInnerVMoreInnerI = _compilation.GetTypeByMetadataName("TestClasses.Outer`1+Inner`1+MoreInner`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer<>.Inner<>.MoreInner<>).GetMethod("Method0")!, + containingTypeSymbol: outerTInnerVMoreInnerI, + methodSymbol: outerTInnerVMoreInnerI.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer`1+Inner`1+MoreInner`1", + managedMethodName: "Method0`1(!0,!1,!2,!!0)"); + } + + [TestMethod] + public void ClosedGeneric1() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method0")!, + containingTypeSymbol: outerTInt, + methodSymbol: outerTInt.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method0"); + } + + [TestMethod] + public void ClosedGeneric2() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method1")!, + containingTypeSymbol: outerTInt, + methodSymbol: outerTInt.FindMethod("Method1")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method1(!0)"); + } + + [TestMethod] + public void ClosedGeneric3() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method2")!, + containingTypeSymbol: outerTInt, + methodSymbol: outerTInt.FindMethod("Method2")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method2`1(!!0[])"); + } + + [TestMethod] + public void ClosedGeneric4() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method3")!, + containingTypeSymbol: outerTInt, + methodSymbol: outerTInt.FindMethod("Method3")!, + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method3`1(!0,!!0)"); + } + + [TestMethod] + public void ClosedGenericNested1() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method0")!, + containingTypeSymbol: outerTIntInnerVString, + methodSymbol: outerTIntInnerVString.FindMethod("Method0")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method0"); + } + + [TestMethod] + public void ClosedGenericNested2() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method1")!, + containingTypeSymbol: outerTIntInnerVString, + methodSymbol: outerTIntInnerVString.FindMethod("Method1")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method1(!0)"); + } + + [TestMethod] + public void ClosedGenericNested3() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method2")!, + containingTypeSymbol: outerTIntInnerVString, + methodSymbol: outerTIntInnerVString.FindMethod("Method2")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method2(!1)"); + } + + [TestMethod] + public void ClosedGenericNested4() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method3")!, + containingTypeSymbol: outerTIntInnerVString, + methodSymbol: outerTIntInnerVString.FindMethod("Method3")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method3`1(!0,!!0,!1)"); + } + + [TestMethod] + public void ClosedGenericNested5() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + var outerTIntInnerVString = outerTInt.GetTypeMembers().Single().Construct(@string); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method4")!, + containingTypeSymbol: outerTIntInnerVString, + methodSymbol: outerTIntInnerVString.FindMethod("Method4")!, + managedTypeName: "TestClasses.Outer`1+Inner`1", + managedMethodName: "Method4`2(!!1,!!0)"); + } + + [TestMethod] + public void ClosedGenericMethod1() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerTInt = _compilation.GetTypeByMetadataName("TestClasses.Outer`1")!.Construct(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer).GetMethod("Method3")!.MakeGenericMethod(typeof(string)), + containingTypeSymbol: outerTInt, + methodSymbol: outerTInt.FindMethod("Method3")!.Construct(@string), + managedTypeName: "TestClasses.Outer`1", + managedMethodName: "Method3`1(!0,!!0)"); + } + + [TestMethod] + public void ClosedGenericMethod2() + { + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method2")!.MakeGenericMethod(typeof(int)), + containingTypeSymbol: outerInner, + methodSymbol: outerInner.FindMethod("Method2")!.Construct(@int), + managedTypeName: "TestClasses.Outer+Inner", + managedMethodName: "Method2`1(System.Int32)"); + } + + [TestMethod] + public void ClosedGenericMethod3() + { + _ = _compilation.GetSpecialType(SpecialType.System_Int32); + var @float = _compilation.GetSpecialType(SpecialType.System_Single); + var @string = _compilation.GetSpecialType(SpecialType.System_String); + var outerInner = _compilation.GetTypeByMetadataName("TestClasses.Outer+Inner")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Outer.Inner).GetMethod("Method3")!.MakeGenericMethod(typeof(float), typeof(string)), + containingTypeSymbol: outerInner, + methodSymbol: outerInner.FindMethod("Method3")!.Construct(@float, @string), + managedTypeName: "TestClasses.Outer+Inner", + managedMethodName: "Method3`2(System.Int32)"); + } + + [TestMethod] + public void ExplicitInterfaceImplementation1() + { + var impl = _compilation.GetTypeByMetadataName("TestClasses.Impl")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Impl).GetMethod("TestClasses.IImplementation.ImplMethod0", PrivateBindingFlags)!, + containingTypeSymbol: impl, + methodSymbol: impl.FindMethod("TestClasses.IImplementation.ImplMethod0")!, + managedTypeName: "TestClasses.Impl", + managedMethodName: "TestClasses.IImplementation.ImplMethod0"); + } + + [TestMethod] + public void ExplicitInterfaceImplementation2() + { + var impl = _compilation.GetTypeByMetadataName("TestClasses.Impl")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Impl).GetMethod("TestClasses.IImplementation.ImplMethod1", PrivateBindingFlags)!, + containingTypeSymbol: impl, + methodSymbol: impl.FindMethod("TestClasses.IImplementation.ImplMethod1")!, + managedTypeName: "TestClasses.Impl", + managedMethodName: "TestClasses.IImplementation.ImplMethod1(System.Int32)"); + } + + [TestMethod] + public void GenericExplicitInterfaceImplementation1() + { + var implT = _compilation.GetTypeByMetadataName("TestClasses.Impl`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Impl<>).GetMethod("TestClasses.IImplementation.ImplMethod0", PrivateBindingFlags)!, + containingTypeSymbol: implT, + methodSymbol: implT.FindMethod("TestClasses.IImplementation.ImplMethod0")!, + managedTypeName: "TestClasses.Impl`1", + managedMethodName: "TestClasses.IImplementation.ImplMethod0"); + } + + [TestMethod] + public void GenericExplicitInterfaceImplementation2() + { + var implT = _compilation.GetTypeByMetadataName("TestClasses.Impl`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Impl<>).GetMethod("TestClasses.IImplementation.ImplMethod1", PrivateBindingFlags)!, + containingTypeSymbol: implT, + methodSymbol: implT.FindMethod("TestClasses.IImplementation.ImplMethod1")!, + managedTypeName: "TestClasses.Impl`1", + managedMethodName: "TestClasses.IImplementation.ImplMethod1(!0)"); + } + + [TestMethod] + public void GenericExplicitInterfaceImplementation3() + { + var implT = _compilation.GetTypeByMetadataName("TestClasses.Impl`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Impl<>).GetMethod("TestClasses.IImplementation.ImplMethod2", PrivateBindingFlags)!, + containingTypeSymbol: implT, + methodSymbol: implT.FindMethod("TestClasses.IImplementation.ImplMethod2")!, + managedTypeName: "TestClasses.Impl`1", + managedMethodName: "TestClasses.IImplementation.ImplMethod2`1(!0,!!0,System.String)"); + } + + [TestMethod] + public void Inheritance1() + { + var outerPrime = _compilation.GetTypeByMetadataName("TestClasses.OuterPrime")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.OuterPrime).GetMethod("Method3")!, + containingTypeSymbol: outerPrime, + methodSymbol: outerPrime.FindMethod("Method3")!, + managedTypeName: "TestClasses.OuterPrime", + managedMethodName: "Method3(System.String,System.Int32)"); + } + + [TestMethod] + public void Inheritance2() + { + var outerPrimeZ = _compilation.GetTypeByMetadataName("TestClasses.OuterPrime`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.OuterPrime<>).GetMethod("Method3")!, + containingTypeSymbol: outerPrimeZ, + methodSymbol: outerPrimeZ.FindMethod("Method3")!, + managedTypeName: "TestClasses.OuterPrime`1", + managedMethodName: "Method3`1(!0,!!0)"); + } + + [TestMethod] + public void Inheritance3() + { + var outerPrimeYz = _compilation.GetTypeByMetadataName("TestClasses.OuterPrime`2")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.OuterPrime<,>).GetMethod("Method3")!, + containingTypeSymbol: outerPrimeYz, + methodSymbol: outerPrimeYz.FindMethod("Method3")!, + managedTypeName: "TestClasses.OuterPrime`2", + managedMethodName: "Method3`1(!1,!!0)"); + } + + [TestMethod] + public void Inheritance4() + { + var outerString = _compilation.GetTypeByMetadataName("TestClasses.OuterString")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.OuterString).GetMethod("Method3")!, + containingTypeSymbol: outerString, + methodSymbol: outerString.FindMethod("Method3")!, + managedTypeName: "TestClasses.OuterString", + managedMethodName: "Method3`1(System.String,!!0)"); + } + + [TestMethod] + public void Overloads1() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0()")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0"); + } + + [TestMethod] + public void Overloads2() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(Int32)")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0, @int), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0(System.Int32)"); + } + + [TestMethod] + public void Overloads3() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(Int32, TestClasses.Overloads)")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0, @int, overloads), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0(System.Int32,TestClasses.Overloads)"); + } + + [TestMethod] + public void Overloads4() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var intptr = _compilation.CreatePointerTypeSymbol(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(Int32*)")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0, intptr), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0(System.Int32*)"); + } + + [TestMethod] + public void Overloads5() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var dynamic = _compilation.DynamicType; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(System.Object)")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0, dynamic), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0(System.Object)"); + } + + [TestMethod] + public void Overloads6() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U)")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, m => m.Parameters.Single().Type == m.TypeParameters.Single()), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(!!0)"); + } + + [TestMethod] + public void Overloads7() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U]()")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1"); + } + + [TestMethod] + public void Overloads8() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U,T]()")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 2), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`2"); + } + + [TestMethod] + public void Overloads9() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, + m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && + arrayType.Rank == 1 && + arrayType.ElementType == m.TypeParameters.Single()), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(!!0[])"); + } + + [TestMethod] + public void Overloads10() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[][])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, + m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && + arrayType.Rank == 1 && + arrayType.ElementType is IArrayTypeSymbol innerArrayType && + innerArrayType.Rank == 1 && + innerArrayType.ElementType == m.TypeParameters.Single()), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(!!0[][])"); + } + + [TestMethod] + public void Overloads11() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[,])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, + m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && + arrayType.Rank == 2 && + arrayType.ElementType == m.TypeParameters.Single()), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(!!0[,])"); + } + + [TestMethod] + public void Overloads12() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](U[,,])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, + m => m.Parameters.Single().Type is IArrayTypeSymbol arrayType && + arrayType.Rank == 3 && + arrayType.ElementType == m.TypeParameters.Single()), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(!!0[,,])"); + } + + [TestMethod] + public void Overloads13() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var @int = _compilation.GetSpecialType(SpecialType.System_Int32); + var listInt = _compilation.GetTypeByMetadataName("System.Collections.Generic.List`1")!.Construct(@int); + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](System.Collections.Generic.List`1[System.Int32])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, listInt), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(System.Collections.Generic.List`1)"); + } + + [TestMethod] + public void Overloads14() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var list = _compilation.GetTypeByMetadataName("System.Collections.Generic.List`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](System.Collections.Generic.List`1[U])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, + m => + m.Parameters.Single().Type is INamedTypeSymbol p && + p.OriginalDefinition == list && + p.TypeArguments.Single() == m.TypeParameters.Single()), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(System.Collections.Generic.List`1)"); + } + + [TestMethod] + public void Overloads15() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var tuple2 = _compilation.GetTypeByMetadataName("System.Tuple`2")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U,V](System.Tuple`2[U,V], System.Tuple`2[V,U])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 2, 2, + m => + m.Parameters.First() is INamedTypeSymbol p1 && + p1.OriginalDefinition == tuple2 && + p1.TypeArguments.SequenceEqual(m.TypeParameters) && + m.Parameters.Last() is INamedTypeSymbol p2 && + p2.OriginalDefinition == tuple2 && + p2.TypeArguments.SequenceEqual(m.TypeParameters.Reverse())), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`2(System.Tuple`2,System.Tuple`2)"); + } + + [TestMethod] + public void Overloads16() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var tuple1 = _compilation.GetTypeByMetadataName("System.Tuple`1")!; + var tuple2 = _compilation.GetTypeByMetadataName("System.Tuple`2")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(System.Tuple`1[System.Tuple`2[System.String[,],System.Int32]])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0, 1, + m => + m.Parameters.Single().Type is INamedTypeSymbol p && + p.OriginalDefinition == tuple1 && + p.TypeArguments.Single() is INamedTypeSymbol t && + t.OriginalDefinition == tuple2), + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0(System.Tuple`1>)"); + } + + [TestMethod] + public void Overloads17() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var tuple1 = _compilation.GetTypeByMetadataName("System.Tuple`1")!; + var tuple2 = _compilation.GetTypeByMetadataName("System.Tuple`2")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0(System.Tuple`2[System.Tuple`1[System.String],System.Tuple`1[System.Int32]])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 0, 1, + m => + m.Parameters.Single().Type is INamedTypeSymbol p && + p.OriginalDefinition == tuple2 && + p.TypeArguments.All(t => t.OriginalDefinition == tuple1))!, + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0(System.Tuple`2,System.Tuple`1>)"); + } + + [TestMethod] + public void Overloads18() + { + var overloads = _compilation.GetTypeByMetadataName("TestClasses.Overloads")!; + var tuple1 = _compilation.GetTypeByMetadataName("System.Tuple`1")!; + + VerifyRoundTrip( + methodInfo: typeof(TestClasses.Overloads).FindMethod("Void Overload0[U](System.Tuple`1[System.Tuple`1[TestClasses.Outer`1+Inner`1[U,U]]])")!, + containingTypeSymbol: overloads, + methodSymbol: overloads.FindMethod("Overload0", 1, 1, + m => + m.Parameters.Single().Type is INamedTypeSymbol p && + p.OriginalDefinition == tuple1 && + p.TypeArguments.Single() is INamedTypeSymbol t && + t.OriginalDefinition == tuple1)!, + managedTypeName: "TestClasses.Overloads", + managedMethodName: "Overload0`1(System.Tuple`1>>)"); + } + + #region Helpers + [SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Code using the parameters is commented out temporarly.")] + private static void VerifyRoundTrip( + MethodInfo methodInfo, + INamedTypeSymbol containingTypeSymbol, + IMethodSymbol methodSymbol, + string managedTypeName, + string managedMethodName) + { + VerifyRoundTripFromMethodInfo(methodInfo, managedTypeName, managedMethodName); + VerifyRoundTripFromName(managedTypeName, managedMethodName, methodInfo); + // TODO: Enable these checks and remove attributes on method + // VerifyRoundTripFromMethodSymbol(containingTypeSymbol, methodSymbol, managedTypeName, managedMethodName); + // VerifyRoundTripFromName(managedTypeName, managedMethodName, containingTypeSymbol, methodSymbol); + } + + private static void VerifyRoundTripFromMethodInfo( + MethodInfo methodInfo, + string expectedManagedTypeName, + string expectedManagedMethodName) + { + // Generate the fqn for the Reflection MethodInfo + ManagedNameHelper.GetManagedName(methodInfo, out var managedTypeName, out var managedMethodName, out _); + + Assert.AreEqual(expectedManagedTypeName, managedTypeName); + Assert.AreEqual(expectedManagedMethodName, managedMethodName); + + // Lookup the Reflection MethodInfo using fullTypeName and fullMethodName + var roundTrippedMethodInfo = ManagedNameHelper.GetMethod( + Assembly.GetExecutingAssembly(), + managedTypeName, + managedMethodName); + + Assert.AreEqual(methodInfo.MetadataToken, roundTrippedMethodInfo.MetadataToken); + } + + private static void VerifyRoundTripFromName( + string managedTypeName, + string managedMethodName, + MethodInfo expectedMethodInfo) + { + // Lookup the Reflection MethodInfo using fullTypeName and fullMethodName + var methodInfo = ManagedNameHelper.GetMethod( + Assembly.GetExecutingAssembly(), + managedTypeName, + managedMethodName); + + Assert.AreEqual(expectedMethodInfo.MetadataToken, methodInfo.MetadataToken); + + // Generate the fqn for the Reflection MethodInfo + ManagedNameHelper.GetManagedName( + methodInfo, + out var roundTrippedFullTypeName, + out var roundTrippedFullMethodName); + + Assert.AreEqual(managedTypeName, roundTrippedFullTypeName); + Assert.AreEqual(managedMethodName, roundTrippedFullMethodName); + } + + // private void VerifyRoundTripFromMethodSymbol( + // INamedTypeSymbol containingTypeSymbol, + // IMethodSymbol methodSymbol, + // string expectedFullTypeName, + // string expectedFullMethodName) + // { + // // Generate the fqn for the Roslyn IMethodSymbol + // FullyQualifiedNameHelper.GetFullyQualifiedName( + // containingTypeSymbol, + // methodSymbol, + // out var fullTypeName, + // out var fullMethodName); + + // Assert.AreEqual(expectedFullTypeName, fullTypeName); + // Assert.AreEqual(expectedFullMethodName, fullMethodName); + + // // Lookup the Roslyn ITypeSymbol and IMethodSymbol using fullTypeName and fullMethodName + // var roundTrippedContainingTypeSymbol = _compilation.GetTypeByMetadataName(fullTypeName); + + // Assert.AreEqual(containingTypeSymbol.OriginalDefinition, roundTrippedContainingTypeSymbol.OriginalDefinition); + + // var roundTrippedMethodSymbol = FullyQualifiedNameHelper.GetMethodFromFullyQualifiedName( + // _compilation, + // fullTypeName, + // fullMethodName); + + // Assert.AreEqual(methodSymbol.OriginalDefinition, roundTrippedMethodSymbol.OriginalDefinition); + // } + + // private void VerifyRoundTripFromName( + // string fullTypeName, + // string fullMethodName, + // INamedTypeSymbol expectedContainingTypeSymbol, + // IMethodSymbol expectedMethodSymbol) + // { + // // Lookup the Roslyn ITypeSymbol and IMethodSymbol using fullTypeName and fullMethodName + // var containingTypeSymbol = _compilation.GetTypeByMetadataName(fullTypeName); + // + // Assert.AreEqual(expectedContainingTypeSymbol.OriginalDefinition, containingTypeSymbol.OriginalDefinition); + // + // var methodSymbol = FullyQualifiedNameHelper.GetMethodFromFullyQualifiedName( + // _compilation, + // fullTypeName, + // fullMethodName); + // + // Assert.AreEqual(expectedMethodSymbol.OriginalDefinition, methodSymbol.OriginalDefinition); + // + // // Generate the fqn for the Roslyn IMethodSymbol + // FullyQualifiedNameHelper.GetFullyQualifiedName( + // containingTypeSymbol, + // methodSymbol, + // out var roundTrippedFullTypeName, + // out var roundTrippedFullMethodName); + // + // Assert.AreEqual(fullTypeName, roundTrippedFullTypeName); + // Assert.AreEqual(fullMethodName, roundTrippedFullMethodName); + // } + #endregion } diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/SpecialNameTests.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/SpecialNameTests.cs deleted file mode 100644 index 01e97719e4..0000000000 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/ManagedNameUtilities/SpecialNameTests.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AdapterUtilities.ManagedNameUtilities.UnitTests -{ - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System.Reflection; - - [TestClass] - [TestCategory("Windows")] - [TestCategory("AcceptanceTests")] - public class SpecialNameTests - { - [TestMethod] - public void VerifyThatInvalidIdentifierNamesAreParsed() - { - var environment = new IntegrationTestEnvironment(); - var asset = environment.GetTestAsset("CILProject.dll", "net451"); - var assembly = Assembly.LoadFrom(asset); - var types = assembly.GetTypes(); - - foreach (var type in types) - { - var methods = type.GetMethods(); - - foreach (var method in methods) - { - if (method.DeclaringType != type) continue; - - ManagedNameHelper.GetManagedName(method, out var typeName, out var methodName); - var methodInfo = ManagedNameHelper.GetMethod(assembly, typeName, methodName); - ManagedNameHelper.GetManagedName(methodInfo, out var typeName2, out var methodName2); - - Assert.IsTrue(method == methodInfo); - Assert.AreEqual(typeName, typeName2, $"Type parse roundtrip test failed: {method} ({typeName} != {typeName2})"); - Assert.AreEqual(methodName, methodName2, $"Method parse roundtrip test failed: {method} ({methodName} != {methodName2})"); - } - } - } - } -} diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Microsoft.TestPlatform.AdapterUtilities.UnitTests.csproj b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Microsoft.TestPlatform.AdapterUtilities.UnitTests.csproj index 0e9bc56646..6fc895e272 100644 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Microsoft.TestPlatform.AdapterUtilities.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Microsoft.TestPlatform.AdapterUtilities.UnitTests.csproj @@ -1,36 +1,43 @@ - ..\..\ true - + - netcoreapp2.1 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.AdapterUtilities.UnitTests true - 3.8.0-3.20427.2 $(NoWarn);RS1024 - + - + - + - + PreserveNewest - - + + + + NullableHelpers.cs + TextTemplatingFileGenerator + + + + + + + diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Program.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Program.cs deleted file mode 100644 index e6fb5d296f..0000000000 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AdapterUtilities.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestClasses.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestClasses.cs index f40b044ec0..a138475319 100644 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestClasses.cs +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestClasses.cs @@ -1,11 +1,45 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestClasses +using System; +using System.Collections.Generic; + +#pragma warning disable IDE0060 // Remove unused parameter +#pragma warning disable CA1822 // Mark members as static +#pragma warning disable IDE0161 // Convert to file-scoped namespace + +internal class NamespacelessClass { - using System; - using System.Collections.Generic; + public void Method0() { } + public void Method1(int i) { } + public void Method2(List ls) { } + public void Method3(string p, int l) { } + internal class Inner + { + public void Method0() { } + public void Method1(int i) { } + public void Method2(int i) { } + public void Method3(int i) { } + } +} +internal record NamespacelessRecord +{ + public void Method0() { } + public void Method1(int i) { } + public void Method2(List ls) { } + public void Method3(string p, int l) { } + internal record Inner + { + public void Method0() { } + public void Method1(int i) { } + public void Method2(int i) { } + public void Method3(int i) { } + } +} + +namespace TestClasses +{ internal class Outer { public void Method0() { } @@ -99,4 +133,17 @@ public void Overload0(Tuple> t0) { } public void Overload0(Tuple, Tuple> t) { } public void Overload0(Tuple.Inner>> t) { } } + + public class Class狧麱狵錋狾龍龪啊阿埃挨哎唉0u㐀㐁㐂㐃㐄㐅㐆㐇6ⅶ0ǒoU1U2U38丂丄丅丆丏丒丟 + { + public void Method0() + { + + } + } } + + +#pragma warning restore IDE0161 // Convert to file-scoped namespace +#pragma warning restore IDE0060 // Remove unused parameter +#pragma warning restore CA1822 // Mark members as static diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/CompatibilityTests.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/CompatibilityTests.cs index 06220dc920..175ea9bcb2 100644 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/CompatibilityTests.cs +++ b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/CompatibilityTests.cs @@ -1,139 +1,138 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.AdapterUtilities.UnitTests.TestIdProvider -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Linq; - using System; - using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class CompatibilityTests - { - [TestMethod] - [DataRow(new[] { "eea339da-6b5e-0d4b-3255-bfef95601890", "" })] - [DataRow(new[] { "740b9afc-3350-4257-ca01-5bd47799147d", "adapter://", "name1" })] // less than one block - [DataRow(new[] { "119c5b31-c0fb-1c12-6d1a-d617bb2bd996", "adapter://namesamplenam.testname" })] // 1 full block - [DataRow(new[] { "2a4c33ec-6115-4bd7-2e94-71f2fd3a5ee3", "adapter://namesamplenamespace.testname" })] // 1 full block and extra - [DataRow(new[] { "119c5b31-c0fb-1c12-6d1a-d617bb2bd996", "adapter://", "name", "samplenam", ".", "testname" })] // 1 full block - [DataRow(new[] { "2a4c33ec-6115-4bd7-2e94-71f2fd3a5ee3", "adapter://", "name", "samplenamespace", ".", "testname" })] // 1 full block and extra - [DataRow(new[] { "1fc07043-3d2d-1401-c732-3b507feec548", "adapter://namesamplenam.testnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" })] // 2 full blocks - [DataRow(new[] { "24e8a50b-2766-6a12-f461-9f8e4fa1cbb5", "adapter://namesamplenamespace.testnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" })] // 2 full blocks and extra - [DataRow(new[] { "1fc07043-3d2d-1401-c732-3b507feec548", "adapter://", "name", "samplenam", ".", "testname", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" })] // 2 full blocks - [DataRow(new[] { "24e8a50b-2766-6a12-f461-9f8e4fa1cbb5", "adapter://", "name", "samplenamespace", ".", "testname", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" })] // 2 full blocks and extra - public void IdCompatibilityTests(string[] data) - { - // Arrange - var expectedId = new Guid(data[0]); - - // Act - var idProvider = new AdapterUtilities.TestIdProvider(); - foreach (var d in data.Skip(1)) - { - idProvider.AppendString(d); - } - var id = idProvider.GetId(); - - // Assert - Assert.AreEqual(expectedId, id); - } +namespace Microsoft.TestPlatform.AdapterUtilities.UnitTests.TestIdProvider; +[TestClass] +public class CompatibilityTests +{ + [TestMethod] + [DataRow(["eea339da-6b5e-0d4b-3255-bfef95601890", ""])] + [DataRow(["740b9afc-3350-4257-ca01-5bd47799147d", "adapter://", "name1"])] // less than one block + [DataRow(["119c5b31-c0fb-1c12-6d1a-d617bb2bd996", "adapter://namesamplenam.testname"])] // 1 full block + [DataRow(["2a4c33ec-6115-4bd7-2e94-71f2fd3a5ee3", "adapter://namesamplenamespace.testname"])] // 1 full block and extra + [DataRow(["119c5b31-c0fb-1c12-6d1a-d617bb2bd996", "adapter://", "name", "samplenam", ".", "testname"])] // 1 full block + [DataRow(["2a4c33ec-6115-4bd7-2e94-71f2fd3a5ee3", "adapter://", "name", "samplenamespace", ".", "testname"])] // 1 full block and extra + [DataRow(["1fc07043-3d2d-1401-c732-3b507feec548", "adapter://namesamplenam.testnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"])] // 2 full blocks + [DataRow(["24e8a50b-2766-6a12-f461-9f8e4fa1cbb5", "adapter://namesamplenamespace.testnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"])] // 2 full blocks and extra + [DataRow(["1fc07043-3d2d-1401-c732-3b507feec548", "adapter://", "name", "samplenam", ".", "testname", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"])] // 2 full blocks + [DataRow(["24e8a50b-2766-6a12-f461-9f8e4fa1cbb5", "adapter://", "name", "samplenamespace", ".", "testname", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"])] // 2 full blocks and extra + public void IdCompatibilityTests(string[] data) + { + // Arrange + var expectedId = new Guid(data[0]); - [TestMethod] - public void IdGeneration_TestVectors_EmptyString() + // Act + var idProvider = new AdapterUtilities.TestIdProvider(); + foreach (var d in data.Skip(1)) { - IdGeneration_TestVector( - string.Empty, - "eea339da-6b5e-0d4b-3255-bfef95601890" - ); + idProvider.AppendString(d); } + var id = idProvider.GetId(); + // Assert + Assert.AreEqual(expectedId, id); + } - [TestMethod] - public void IdGeneration_TestVectors_abc() - { - IdGeneration_TestVector( - "abc", - "1af4049f-8584-1614-2050-e3d68c1a7abb" - ); - } - [TestMethod] - public void IdGeneration_TestVectors_448Bits() - { - IdGeneration_TestVector( - "abcdbcdecdefdefgefghfghighij", - "7610f6db-8808-4bb7-b076-96871a96329c" - ); - } + [TestMethod] + public void IdGeneration_TestVectors_EmptyString() + { + IdGeneration_TestVector( + string.Empty, + "eea339da-6b5e-0d4b-3255-bfef95601890" + ); + } - [TestMethod] - public void IdGeneration_TestVectors_896Bits() - { - IdGeneration_TestVector( - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "76d8d751-c79a-402c-9c5b-0e3f69c60adc" - ); - } - [TestMethod] - public void IdGeneration_TestVectors_1Block() - { - IdGeneration_TestRepetitionVector( - "a", 512 / 16, - "99b1aec7-ff50-5229-a378-70ca37914c90" - ); - } + [TestMethod] + public void IdGeneration_TestVectors_abc() + { + IdGeneration_TestVector( + "abc", + "1af4049f-8584-1614-2050-e3d68c1a7abb" + ); + } - [TestMethod] - public void IdGeneration_ExtremelyLarge_TestVectors_100k_abc() - { - IdGeneration_TestRepetitionVector( - "abc", 100_000, - "11dbfc20-b34a-eef6-158e-ea8c201dfff9" - ); - } + [TestMethod] + public void IdGeneration_TestVectors_448Bits() + { + IdGeneration_TestVector( + "abcdbcdecdefdefgefghfghighij", + "7610f6db-8808-4bb7-b076-96871a96329c" + ); + } - [TestMethod] - public void IdGeneration_ExtremelyLarge_TestVectors_10M_abc() - { - IdGeneration_TestRepetitionVector( - "abc", 10_000_000, - "78640f07-8041-71bd-6461-3a7e4db52389" - ); - } + [TestMethod] + public void IdGeneration_TestVectors_896Bits() + { + IdGeneration_TestVector( + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "76d8d751-c79a-402c-9c5b-0e3f69c60adc" + ); + } - private void IdGeneration_TestVector(string testName, string expected) - { - // Arrange - expected = expected.Replace(" ", "").ToLowerInvariant(); - var idProvider = new AdapterUtilities.TestIdProvider(); + [TestMethod] + public void IdGeneration_TestVectors_1Block() + { + IdGeneration_TestRepetitionVector( + "a", 512 / 16, + "99b1aec7-ff50-5229-a378-70ca37914c90" + ); + } - // Act - idProvider.AppendString(testName); - var actual = idProvider.GetId().ToString(); + [TestMethod] + public void IdGeneration_ExtremelyLarge_TestVectors_100k_abc() + { + IdGeneration_TestRepetitionVector( + "abc", 100_000, + "11dbfc20-b34a-eef6-158e-ea8c201dfff9" + ); + } - // Assert - Assert.AreEqual(expected, actual, $"Test Id for '{testName}' is invalid!"); - } + [TestMethod] + public void IdGeneration_ExtremelyLarge_TestVectors_10M_abc() + { + IdGeneration_TestRepetitionVector( + "abc", 10_000_000, + "78640f07-8041-71bd-6461-3a7e4db52389" + ); + } - private void IdGeneration_TestRepetitionVector(string input, int repetition, string expected) - { - // Arrange - var idProvider = new AdapterUtilities.TestIdProvider(); + private static void IdGeneration_TestVector(string testName, string expected) + { + // Arrange + expected = expected.Replace(" ", "").ToLowerInvariant(); + var idProvider = new AdapterUtilities.TestIdProvider(); + + // Act + idProvider.AppendString(testName); + var actual = idProvider.GetId().ToString(); - // Act - for (int i = 0; i < repetition; i++) - { - idProvider.AppendString(input); - } + // Assert + Assert.AreEqual(expected, actual, $"Test Id for '{testName}' is invalid!"); + } - var id = idProvider.GetId().ToString(); + private static void IdGeneration_TestRepetitionVector(string input, int repetition, string expected) + { + // Arrange + var idProvider = new AdapterUtilities.TestIdProvider(); - // Assert - Assert.AreEqual(expected, id, $"Test id generation for vector '{input}'*{repetition} failed! (normal path)"); + // Act + for (int i = 0; i < repetition; i++) + { + idProvider.AppendString(input); } + var id = idProvider.GetId().ToString(); + + // Assert + Assert.AreEqual(expected, id, $"Test id generation for vector '{input}'*{repetition} failed! (normal path)"); } + } diff --git a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/SHA1ImplTests.cs b/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/SHA1ImplTests.cs deleted file mode 100644 index 23bb10bef8..0000000000 --- a/test/Microsoft.TestPlatform.AdapterUtilities.UnitTests/TestIdProvider/SHA1ImplTests.cs +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.AdapterUtilities.UnitTests.TestIdProvider -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System; - using System.Linq; - using System.Text; - - [TestClass] - public class SHA1ImplTests - { - [TestMethod] - public void SHA1_TestVectors_EmptyString() - { - SHA1_TestVector( - string.Empty, - "da39a3ee5e6b4b0d3255bfef95601890afd80709" - ); - } - - [TestMethod] - public void SHA1_TestVectors_abc() - { - SHA1_TestVector( - "abc", - "a9993e364706816aba3e25717850c26c9cd0d89d" - ); - } - - [TestMethod] - public void SHA1_TestVectors_448Bits() - { - SHA1_TestVector( - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "84983e441c3bd26ebaae4aa1f95129e5e54670f1" - ); - } - - [TestMethod] - public void SHA1_TestVectors_896Bits() - { - SHA1_TestVector( - "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", - "a49b2446a02c645bf419f995b67091253a04a259" - ); - } - - [TestMethod] - public void SHA1_TestVectors_1Block() - { - SHA1_TestRepetitionVector( - 'a', - 512 / 8 - ); - } - - [TestMethod] - public void SHA1_ExtremelyLarge_TestVectors_500k_a() - { - SHA1_TestRepetitionVector( - 'a', - 500_000 - ); - } - - [TestMethod] - public void SHA1_ExtremelyLarge_TestVectors_900k_a() - { - SHA1_TestRepetitionVector( - 'a', - 900_000 - ); - } - - [TestMethod] - public void SHA1_ExtremelyLarge_TestVectors_999999_a() - { - SHA1_TestRepetitionVector( - 'a', - 999_999 - ); - } - - [TestMethod] - public void SHA1_ExtremelyLarge_TestVectors_1M_a() - { - SHA1_TestRepetitionVector( - 'a', - 1_000_000, - "34aa973c d4c4daa4 f61eeb2b dbad2731 6534016f" - ); - } - - [TestMethod] - public void SHA1_ExtremelyLarge_TestVectors_10M_a() - { - SHA1_TestRepetitionVector( - 'a', - 10_000_000 - ); - } - - private void SHA1_TestVector(string message, string expected) - { - // Arrange - expected = expected.Replace(" ", "").ToLowerInvariant(); - var shaHasher1 = new AdapterUtilities.TestIdProvider.Sha1Implementation(); - - // Act - var bytes = UTF8Encoding.UTF8.GetBytes(message); - var digest1 = ToHex(shaHasher1.ComputeHash(bytes)); - - // Assert - Assert.AreEqual(expected, digest1, $"Test vector '{message}' failed!"); - } - - private void SHA1_TestRepetitionVector(char input, int repetition, string expected = null) - { - // Arrange - var shaHasher1 = new AdapterUtilities.TestIdProvider.Sha1Implementation(); - var shaHasher2 = new AdapterUtilities.TestIdProvider.Sha1Implementation(); - - var bytes = new byte[repetition]; - for (int i = 0; i < repetition; i++) - { - bytes[i] = (byte)input; - } - - if (string.IsNullOrEmpty(expected)) - { - using (var hasher = System.Security.Cryptography.SHA1.Create()) - { - expected = ToHex(hasher.ComputeHash(bytes)); - } - } - else - { - expected = expected.Replace(" ", "").ToLowerInvariant(); - } - - // Act - var digest1 = ToHex(shaHasher1.ComputeHash(bytes)); - var blocks = bytes.Length / AdapterUtilities.TestIdProvider.BlockBytes; - byte[] block; - for (var i = 0; i < blocks; i += 1) - { - block = new byte[AdapterUtilities.TestIdProvider.BlockBytes]; - Buffer.BlockCopy(bytes, i * block.Length, block, 0, block.Length); - shaHasher2.ProcessBlock(block, 0, block.Length); - } - - var rest = bytes.Length - blocks * AdapterUtilities.TestIdProvider.BlockBytes; - if (rest != 0) - { - block = new byte[rest]; - Buffer.BlockCopy(bytes, blocks * block.Length, block, 0, block.Length); - shaHasher2.PadMessage(ref block, block.Length); - shaHasher2.ProcessBlock(block, 0, block.Length); - } - - var digest2 = ToHex(shaHasher2.ProcessFinalBlock()); - - // Assert - Assert.AreEqual(expected, digest1, $"Test vector '{input}'*{repetition} failed! (normal path)"); - Assert.AreEqual(expected, digest2, $"Test vector '{input}'*{repetition} failed! (padding path)"); - } - - private static string ToHex(byte[] digest) => string.Concat(digest.Select(i => i.ToString("x2"))); - } -} diff --git a/test/Microsoft.TestPlatform.Build.UnitTests/ArgumentEscaperTests.cs b/test/Microsoft.TestPlatform.Build.UnitTests/ArgumentEscaperTests.cs deleted file mode 100644 index e71cb67c55..0000000000 --- a/test/Microsoft.TestPlatform.Build.UnitTests/ArgumentEscaperTests.cs +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.Build.Utils.UnitTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ArgumentEscaperTests - { - [TestMethod] - public void EscapeArgForProcessStartShouldAddDoubleQuoteIfThereIsSpace() - { - string stringWithSpace = "Some string"; - - string expected = "\"Some string\""; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithSpace); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void EscapeArgForProcessStartShouldAddDoubleQuoteIfThereIsSpaceAtEnd() - { - string stringWithSpaceAtEnd = "Some string "; - - string expected = "\"Some string \""; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithSpaceAtEnd); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void EscapeArgForProcessStartShouldHandleForwardSlash() - { - string stringWithForwardSlash = "Some/string"; - - string expected = "Some/string"; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithForwardSlash); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void EscapeArgForProcessStartShouldPreserveDoubleQuote() - { - string stringWithDoubleQuote = "Some\"string"; - - string expected = "Some\\\"string"; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithDoubleQuote); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void EscapeArgForProcessStartShouldPreserveSingleQuote() - { - string stringWithSingleQuote = "Some'string"; - - string expected = "Some'string"; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithSingleQuote); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void EscapeArgForProcessStartShouldPreserveBackSlash() - { - string stringWithBackSlash = @"Some\\string"; - - string expected = "Some\\\\string"; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithBackSlash); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void EscapeArgForProcessStartShouldPreserveBackSlashIfStringHasWhiteSpace() - { - string stringWithBackSlash = @"Some string With Space\\"; - - string expected = @"""Some string With Space\\\\"""; - string result = ArgumentEscaper.HandleEscapeSequenceInArgForProcessStart(stringWithBackSlash); - - Assert.AreEqual(expected, result); - } - - [TestMethod] - public void ShouldSurroundWithQuotesShouldReturnFalseIfAlreadySurroundWithQuotes() - { - string stringSurroundWithQuotes = "\"some string\""; - - Assert.IsFalse(ArgumentEscaper.ShouldSurroundWithQuotes(stringSurroundWithQuotes)); - } - - [TestMethod] - public void ShouldSurroundWithQuotesShouldReturnFalseIfItIsNotSurroundWithQuotesAndHasNoWhiteSpace() - { - string stringWithoutSpace = "someStringWithNoWhiteSpace"; - - Assert.IsFalse(ArgumentEscaper.ShouldSurroundWithQuotes(stringWithoutSpace)); - } - - [TestMethod] - public void ShouldSurroundWithQuotesShouldReturnTrueIfItIsNotSurroundWithQuotesAndHasWhiteSpace() - { - string stringWithSpace = "some String With WhiteSpace"; - - Assert.IsTrue(ArgumentEscaper.ShouldSurroundWithQuotes(stringWithSpace)); - } - - [TestMethod] - public void IsSurroundedWithQuotesShouldReturnTrueIfStringIsSurrondedByQuotes() - { - string stringSurroundWithQuotes = "\"some string\""; - - Assert.IsTrue(ArgumentEscaper.IsSurroundedWithQuotes(stringSurroundWithQuotes)); - } - - [TestMethod] - public void IsSurroundedWithQuotesShouldReturnFalseIfStringIsNotSurrondedByQuotes() - { - string stringNotSurroundWithQuotes = "some string"; - - Assert.IsFalse(ArgumentEscaper.IsSurroundedWithQuotes(stringNotSurroundWithQuotes)); - } - } -} diff --git a/test/Microsoft.TestPlatform.Build.UnitTests/FakeBuildEngine.cs b/test/Microsoft.TestPlatform.Build.UnitTests/FakeBuildEngine.cs new file mode 100644 index 0000000000..c0d077d74e --- /dev/null +++ b/test/Microsoft.TestPlatform.Build.UnitTests/FakeBuildEngine.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections; + +using Microsoft.Build.Framework; + +namespace Microsoft.TestPlatform.Build.UnitTests; + +public class FakeBuildEngine : IBuildEngine +{ + public bool ContinueOnError => false; + + public int LineNumberOfTaskNode => 0; + + public int ColumnNumberOfTaskNode => 0; + + public string ProjectFileOfTaskNode => string.Empty; + + public bool BuildProjectFile(string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs) + { + return false; + } + + public void LogCustomEvent(CustomBuildEventArgs e) + { + } + + public void LogErrorEvent(BuildErrorEventArgs e) + { + } + + public void LogMessageEvent(BuildMessageEventArgs e) + { + } + + public void LogWarningEvent(BuildWarningEventArgs e) + { + } +} diff --git a/test/Microsoft.TestPlatform.Build.UnitTests/Microsoft.TestPlatform.Build.UnitTests.csproj b/test/Microsoft.TestPlatform.Build.UnitTests/Microsoft.TestPlatform.Build.UnitTests.csproj index b8922d576d..a1197a8308 100644 --- a/test/Microsoft.TestPlatform.Build.UnitTests/Microsoft.TestPlatform.Build.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Build.UnitTests/Microsoft.TestPlatform.Build.UnitTests.csproj @@ -1,18 +1,14 @@ - + - ..\..\ true true - + - netcoreapp2.1 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.Build.UnitTests - true - true @@ -22,6 +18,8 @@ + + - + diff --git a/test/Microsoft.TestPlatform.Build.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Build.UnitTests/Program.cs deleted file mode 100644 index 6b68a1b2ad..0000000000 --- a/test/Microsoft.TestPlatform.Build.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.Build.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Build.UnitTests/TestTaskUtilsTests.cs b/test/Microsoft.TestPlatform.Build.UnitTests/TestTaskUtilsTests.cs new file mode 100644 index 0000000000..a8ed80b8f1 --- /dev/null +++ b/test/Microsoft.TestPlatform.Build.UnitTests/TestTaskUtilsTests.cs @@ -0,0 +1,314 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Text.RegularExpressions; + +using Microsoft.Build.Utilities; +using Microsoft.TestPlatform.Build.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Build.UnitTests; + +[TestClass] +public class TestTaskUtilsTests +{ + private readonly ITestTask _vsTestTask; + + public TestTaskUtilsTests() + { + _vsTestTask = new VSTestTask + { + BuildEngine = new FakeBuildEngine(), + TestFileFullPath = new TaskItem(@"C:\path\to\test-assembly.dll"), + VSTestFramework = ".NETCoreapp,Version2.0" + }; + } + + [TestMethod] + public void CreateArgumentShouldAddOneEntryForCLIRunSettings() + { + const string arg1 = "RunConfiguration.ResultsDirectory=Path having Space"; + const string arg2 = "MSTest.DeploymentEnabled"; + + _vsTestTask.VSTestCLIRunSettings = new string[2]; + _vsTestTask.VSTestCLIRunSettings[0] = arg1; + _vsTestTask.VSTestCLIRunSettings[1] = arg2; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, " -- "); + StringAssert.Contains(commandline, $"\"{arg1}\""); + StringAssert.Contains(commandline, $"{arg2}"); + } + + [TestMethod] + public void CreateArgumentShouldAddCLIRunSettingsArgAtEnd() + { + const string codeCoverageOption = "Code Coverage"; + + _vsTestTask.VSTestCollect = [codeCoverageOption]; + _vsTestTask.VSTestBlame = true; + + const string arg1 = "RunConfiguration.ResultsDirectory=Path having Space"; + const string arg2 = "MSTest.DeploymentEnabled"; + + _vsTestTask.VSTestCLIRunSettings = new string[2]; + _vsTestTask.VSTestCLIRunSettings[0] = arg1; + _vsTestTask.VSTestCLIRunSettings[1] = arg2; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, " -- "); + StringAssert.Contains(commandline, $"\"{arg1}\""); + StringAssert.Contains(commandline, $"{arg2}"); + } + + [TestMethod] + public void CreateArgumentShouldPassResultsDirectoryCorrectly() + { + const string resultsDirectoryValue = @"C:\tmp\Results Directory"; + _vsTestTask.VSTestResultsDirectory = new TaskItem(resultsDirectoryValue); + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, $"--resultsDirectory:\"{_vsTestTask.VSTestResultsDirectory?.ItemSpec}\""); + } + + [TestMethod] + public void CreateArgumentShouldNotSetConsoleLoggerVerbosityIfConsoleLoggerIsGivenInArgs() + { + _vsTestTask.VSTestVerbosity = "diag"; + _vsTestTask.VSTestLogger = ["Console;Verbosity=quiet"]; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.DoesNotMatch(commandline, new Regex("(--logger:\"Console;Verbosity=normal\")")); + StringAssert.Contains(commandline, "--logger:\"Console;Verbosity=quiet\""); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsn() + { + _vsTestTask.VSTestVerbosity = "n"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsnormal() + { + _vsTestTask.VSTestVerbosity = "normal"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsd() + { + _vsTestTask.VSTestVerbosity = "d"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsdetailed() + { + _vsTestTask.VSTestVerbosity = "detailed"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsdiag() + { + _vsTestTask.VSTestVerbosity = "diag"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsdiagnostic() + { + _vsTestTask.VSTestVerbosity = "diagnostic"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToQuietIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsq() + { + _vsTestTask.VSTestVerbosity = "q"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=quiet"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToQuietIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsquiet() + { + _vsTestTask.VSTestVerbosity = "quiet"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=quiet"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToMinimalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsm() + { + _vsTestTask.VSTestVerbosity = "m"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=minimal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToMinimalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsminimal() + { + _vsTestTask.VSTestVerbosity = "minimal"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=minimal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsNormalWithCapitalN() + { + _vsTestTask.VSTestVerbosity = "Normal"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=normal"); + } + + [TestMethod] + public void CreateArgumentShouldSetConsoleLoggerVerbosityToQuietIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsQuietWithCapitalQ() + { + _vsTestTask.VSTestVerbosity = "Quiet"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:Console;Verbosity=quiet"); + } + + [TestMethod] + public void CreateArgumentShouldPreserveWhiteSpaceInLogger() + { + _vsTestTask.VSTestLogger = ["trx;LogFileName=foo bar.trx"]; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:\"trx;LogFileName=foo bar.trx\""); + } + + [TestMethod] + public void CreateArgumentShouldAddOneCollectArgumentForEachCollect() + { + _vsTestTask.VSTestCollect = new string[2]; + + _vsTestTask.VSTestCollect[0] = "name1"; + _vsTestTask.VSTestCollect[1] = "name 2"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--collect:name1"); + StringAssert.Contains(commandline, "--collect:\"name 2\""); + } + + [TestMethod] + public void CreateArgumentShouldAddMultipleTestAdapterPaths() + { + _vsTestTask.VSTestTestAdapterPath = [new TaskItem("path1"), new TaskItem("path2")]; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--testAdapterPath:path1"); + StringAssert.Contains(commandline, "--testAdapterPath:path2"); + } + + [TestMethod] + public void CreateArgumentShouldAddMultipleLoggers() + { + _vsTestTask.VSTestLogger = ["trx;LogFileName=foo bar.trx", "console"]; + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--logger:\"trx;LogFileName=foo bar.trx\""); + StringAssert.Contains(commandline, "--logger:console"); + } + + [TestMethod] + public void CreateArgumentShouldAddTraceCollectorDirectoryPathAsTestAdapterForCodeCoverageCollect() + { + const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedata collector"; + _vsTestTask.VSTestTraceDataCollectorDirectoryPath = new TaskItem(traceDataCollectorDirectoryPath); + _vsTestTask.VSTestCollect = ["code coverage"]; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + string expectedArg = $"--testAdapterPath:\"{_vsTestTask.VSTestTraceDataCollectorDirectoryPath?.ItemSpec}\""; + StringAssert.Contains(commandline, expectedArg); + } + + [TestMethod] + public void CreateArgumentShouldNotAddTraceCollectorDirectoryPathAsTestAdapterForNonCodeCoverageCollect() + { + const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedata collector"; + _vsTestTask.VSTestTraceDataCollectorDirectoryPath = new TaskItem(traceDataCollectorDirectoryPath); + _vsTestTask.VSTestCollect = ["not code coverage"]; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + string notExpectedArg = $"--testAdapterPath:\"{_vsTestTask.VSTestTraceDataCollectorDirectoryPath?.ItemSpec}\""; + StringAssert.DoesNotMatch(commandline, new Regex(Regex.Escape(notExpectedArg))); + } + + [TestMethod] + public void CreateArgumentShouldAddTraceCollectorDirectoryPathAsTestAdapterIfSettingsGiven() + { + const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedatacollector\"; + _vsTestTask.VSTestTraceDataCollectorDirectoryPath = new TaskItem(traceDataCollectorDirectoryPath); + _vsTestTask.VSTestSetting = @"c:\path\to\sample.runsettings"; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + string expectedArg = $"--testAdapterPath:{_vsTestTask.VSTestTraceDataCollectorDirectoryPath?.ItemSpec}"; + StringAssert.Contains(commandline, expectedArg); + } + + [TestMethod] + public void CreateArgumentShouldNotAddTestAdapterPathIfVSTestTraceDataCollectorDirectoryPathIsEmpty() + { + _vsTestTask.VSTestTraceDataCollectorDirectoryPath = null; + _vsTestTask.VSTestSetting = @"c:\path\to\sample.runsettings"; + _vsTestTask.VSTestCollect = ["code coverage"]; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.DoesNotMatch(commandline, new Regex(@"(--testAdapterPath:)")); + } + + [TestMethod] + public void CreateArgumentShouldAddNoLogoOptionIfSpecifiedByUser() + { + _vsTestTask.VSTestNoLogo = true; + + var commandline = TestTaskUtils.CreateCommandLineArguments(_vsTestTask); + + StringAssert.Contains(commandline, "--nologo"); + } +} diff --git a/test/Microsoft.TestPlatform.Build.UnitTests/VsTestTaskTests.cs b/test/Microsoft.TestPlatform.Build.UnitTests/VsTestTaskTests.cs deleted file mode 100644 index c61451ec9a..0000000000 --- a/test/Microsoft.TestPlatform.Build.UnitTests/VsTestTaskTests.cs +++ /dev/null @@ -1,329 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.Build.UnitTests -{ - using System; - using System.Linq; - - using Microsoft.TestPlatform.Build.Tasks; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class VSTestTaskTests - { - private readonly VSTestTask vsTestTask; - - public VSTestTaskTests() - { - this.vsTestTask = new VSTestTask - { - TestFileFullPath = @"C:\path\to\test-assembly.dll", - VSTestFramework = ".NETCoreapp,Version2.0" - }; - } - - [TestMethod] - public void CreateArgumentShouldAddOneEntryForCLIRunSettings() - { - const string arg1 = "RunConfiguration.ResultsDirectory=Path having Space"; - const string arg2 = "MSTest.DeploymentEnabled"; - - this.vsTestTask.VSTestCLIRunSettings = new string[2]; - this.vsTestTask.VSTestCLIRunSettings[0] = arg1; - this.vsTestTask.VSTestCLIRunSettings[1] = arg2; - - var result = this.vsTestTask.CreateArgument().ToArray(); - - Assert.AreEqual(5, result.Length); - - // First, second and third args would be framework:".NETCoreapp,Version2.0", testfilepath and -- respectively. - Assert.AreEqual($"\"{arg1}\"", result[3]); - Assert.AreEqual($"{arg2}", result[4]); - } - - [TestMethod] - public void CreateArgumentShouldAddCLIRunSettingsArgAtEnd() - { - const string codeCoverageOption = "Code Coverage"; - - this.vsTestTask.VSTestCollect = new string[] { codeCoverageOption }; - this.vsTestTask.VSTestBlame = "Blame"; - - const string arg1 = "RunConfiguration.ResultsDirectory=Path having Space"; - const string arg2 = "MSTest.DeploymentEnabled"; - - this.vsTestTask.VSTestCLIRunSettings = new string[2]; - this.vsTestTask.VSTestCLIRunSettings[0] = arg1; - this.vsTestTask.VSTestCLIRunSettings[1] = arg2; - - var result = this.vsTestTask.CreateArgument().ToArray(); - - Assert.AreEqual(7, result.Length); - - // Following are expected --framework:".NETCoreapp,Version2.0", testfilepath, blame, collect:"Code coverage" -- respectively. - Assert.AreEqual($"\"{arg1}\"", result[5]); - Assert.AreEqual($"{arg2}", result[6]); - } - - [TestMethod] - public void CreateArgumentShouldPassResultsDirectoryCorrectly() - { - const string resultsDirectoryValue = @"C:\tmp\Results Directory"; - this.vsTestTask.VSTestResultsDirectory = resultsDirectoryValue; - - var result = this.vsTestTask.CreateArgument().ToArray(); - - Assert.AreEqual($"--resultsDirectory:\"{resultsDirectoryValue}\"", result[1]); - } - - [TestMethod] - public void CreateArgumentShouldNotSetConsoleLoggerVerbosityIfConsoleLoggerIsGivenInArgs() - { - this.vsTestTask.VSTestVerbosity = "diag"; - this.vsTestTask.VSTestLogger = new string[] { "Console;Verbosity=quiet" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=quiet"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsn() - { - this.vsTestTask.VSTestVerbosity = "n"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsnormal() - { - this.vsTestTask.VSTestVerbosity = "normal"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsd() - { - this.vsTestTask.VSTestVerbosity = "d"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsdetailed() - { - this.vsTestTask.VSTestVerbosity = "detailed"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsdiag() - { - this.vsTestTask.VSTestVerbosity = "diag"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsdiagnostic() - { - this.vsTestTask.VSTestVerbosity = "diagnostic"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToQuietIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsq() - { - this.vsTestTask.VSTestVerbosity = "q"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=quiet"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToQuietIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsquiet() - { - this.vsTestTask.VSTestVerbosity = "quiet"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=quiet"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToMinimalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsm() - { - this.vsTestTask.VSTestVerbosity = "m"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=minimal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToMinimalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsminimal() - { - this.vsTestTask.VSTestVerbosity = "minimal"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=minimal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToNormalIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsNormalWithCapitalN() - { - this.vsTestTask.VSTestVerbosity = "Normal"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=normal"))); - } - - [TestMethod] - public void CreateArgumentShouldSetConsoleLoggerVerbosityToQuietIfConsoleLoggerIsNotGivenInArgsAndVerbosityIsQuietWithCapitalQ() - { - this.vsTestTask.VSTestVerbosity = "Quiet"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:Console;Verbosity=quiet"))); - } - - [TestMethod] - public void CreateArgumentShouldPreserveWhiteSpaceInLogger() - { - this.vsTestTask.VSTestLogger = new string[] { "trx;LogFileName=foo bar.trx" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:\"trx;LogFileName=foo bar.trx\""))); - } - - [TestMethod] - public void CreateArgumentShouldAddOneCollectArgumentForEachCollect() - { - this.vsTestTask.VSTestCollect = new string[2]; - - this.vsTestTask.VSTestCollect[0] = "name1"; - this.vsTestTask.VSTestCollect[1] = "name 2"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--collect:name1"))); - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--collect:\"name 2\""))); - } - - [TestMethod] - public void CreateArgumentShouldAddMultipleTestAdapterPaths() - { - this.vsTestTask.VSTestTestAdapterPath = new string[] { "path1", "path2" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--testAdapterPath:path1"))); - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--testAdapterPath:path2"))); - } - - [TestMethod] - public void CreateArgumentShouldAddMultipleLoggers() - { - this.vsTestTask.VSTestLogger = new string[] { "trx;LogFileName=foo bar.trx", "console" }; - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:\"trx;LogFileName=foo bar.trx\""))); - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--logger:console"))); - } - - [TestMethod] - public void CreateArgumentShouldAddTraceCollectorDirectoryPathAsTestAdapterForCodeCoverageCollect() - { - const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedata collector"; - this.vsTestTask.VSTestTraceDataCollectorDirectoryPath = traceDataCollectorDirectoryPath; - this.vsTestTask.VSTestCollect = new string[] { "code coverage" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - const string expectedArg = "--testAdapterPath:\"c:\\path\\to\\tracedata collector\""; - CollectionAssert.Contains(allArguments, expectedArg, $"Expected argument: '''{expectedArg}''' not present in [{string.Join(", ", allArguments)}]"); - } - - [TestMethod] - public void CreateArgumentShouldAddTraceCollectorDirectoryPathAsTestAdapterForCodeCoverageCollectWithExtraConfigurations() - { - const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedata collector"; - this.vsTestTask.VSTestTraceDataCollectorDirectoryPath = traceDataCollectorDirectoryPath; - this.vsTestTask.VSTestCollect = new string[] { "code coverage;someParameter=someValue" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - const string expectedArg = "--testAdapterPath:\"c:\\path\\to\\tracedata collector\""; - CollectionAssert.Contains(allArguments, expectedArg, $"Expected argument: '''{expectedArg}''' not present in [{string.Join(", ", allArguments)}]"); - } - - [TestMethod] - public void CreateArgumentShouldNotAddTraceCollectorDirectoryPathAsTestAdapterForNonCodeCoverageCollect() - { - const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedata collector"; - this.vsTestTask.VSTestTraceDataCollectorDirectoryPath = traceDataCollectorDirectoryPath; - this.vsTestTask.VSTestCollect = new string[] { "not code coverage" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - const string notExpectedArg = "--testAdapterPath:\"c:\\path\\to\\tracedata collector\""; - CollectionAssert.DoesNotContain(allArguments, notExpectedArg, $"Not expected argument: '''{notExpectedArg}''' present in [{string.Join(", ", allArguments)}]"); - } - - [TestMethod] - public void CreateArgumentShouldAddTraceCollectorDirectoryPathAsTestAdapterIfSettingsGiven() - { - const string traceDataCollectorDirectoryPath = @"c:\path\to\tracedatacollector\"; - this.vsTestTask.VSTestTraceDataCollectorDirectoryPath = traceDataCollectorDirectoryPath; - this.vsTestTask.VSTestSetting = @"c:\path\to\sample.runsettings"; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - const string expectedArg = "--testAdapterPath:c:\\path\\to\\tracedatacollector\\"; - CollectionAssert.Contains(allArguments, expectedArg, $"Expected argument: '''{expectedArg}''' not present in [{string.Join(", ", allArguments)}]"); - } - - [TestMethod] - public void CreateArgumentShouldNotAddTestAdapterPathIfVSTestTraceDataCollectorDirectoryPathIsEmpty() - { - this.vsTestTask.VSTestTraceDataCollectorDirectoryPath = string.Empty; - this.vsTestTask.VSTestSetting = @"c:\path\to\sample.runsettings"; - this.vsTestTask.VSTestCollect = new string[] { "code coverage" }; - - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNull(Array.Find(allArguments, arg => arg.Contains("--testAdapterPath:"))); - } - - [TestMethod] - public void CreateArgumentShouldAddNoLogoOptionIfSpecifiedByUser() - { - this.vsTestTask.VSTestNoLogo = "--nologo"; - var allArguments = this.vsTestTask.CreateArgument().ToArray(); - - Assert.IsNotNull(Array.Find(allArguments, arg => arg.Contains("--nologo"))); - } - } -} diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingEventsHandlerTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingEventsHandlerTests.cs index 2988e594c6..8cf76418d2 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingEventsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingEventsHandlerTests.cs @@ -1,67 +1,67 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Client.UnitTests.TestRunAttachmentsProcessing + +using Microsoft.VisualStudio.TestPlatform.Client.TestRunAttachmentsProcessing; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Client.UnitTests.TestRunAttachmentsProcessing; + +[TestClass] +public class TestRunAttachmentsProcessingEventsHandlerTests { - using Microsoft.VisualStudio.TestPlatform.Client.TestRunAttachmentsProcessing; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class TestRunAttachmentsProcessingEventsHandlerTests - { - private readonly Mock mockCommunicationManager; - private readonly ITestRunAttachmentsProcessingEventsHandler handler; + private readonly Mock _mockCommunicationManager; + private readonly ITestRunAttachmentsProcessingEventsHandler _handler; - public TestRunAttachmentsProcessingEventsHandlerTests() - { - this.mockCommunicationManager = new Mock(); - this.handler = new TestRunAttachmentsProcessingEventsHandler(mockCommunicationManager.Object); - } + public TestRunAttachmentsProcessingEventsHandlerTests() + { + _mockCommunicationManager = new Mock(); + _handler = new TestRunAttachmentsProcessingEventsHandler(_mockCommunicationManager.Object); + } - [TestMethod] - public void EventsHandlerHandleLogMessageShouldSendTestMessage() - { - string message = "error message"; + [TestMethod] + public void EventsHandlerHandleLogMessageShouldSendTestMessage() + { + string message = "error message"; - handler.HandleLogMessage(TestMessageLevel.Error, message); + _handler.HandleLogMessage(TestMessageLevel.Error, message); - mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.Is(p => p.MessageLevel == TestMessageLevel.Error && p.Message == message))); - } + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.Is(p => p.MessageLevel == TestMessageLevel.Error && p.Message == message))); + } - [TestMethod] - public void EventsHandlerHandleTestRunAttachmentsProcessingCompleteShouldSendAttachmentsProcessingCompleteMessage() - { - var attachments = new[] { new AttachmentSet(new System.Uri("http://www.bing.com/"), "code coverage") }; - var args = new TestRunAttachmentsProcessingCompleteEventArgs(false, null); + [TestMethod] + public void EventsHandlerHandleTestRunAttachmentsProcessingCompleteShouldSendAttachmentsProcessingCompleteMessage() + { + var attachments = new[] { new AttachmentSet(new System.Uri("http://www.bing.com/"), "code coverage") }; + var args = new TestRunAttachmentsProcessingCompleteEventArgs(false, null); - handler.HandleTestRunAttachmentsProcessingComplete(args, attachments); + _handler.HandleTestRunAttachmentsProcessingComplete(args, attachments); - mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.Is(p => p.Attachments == attachments && p.AttachmentsProcessingCompleteEventArgs == args))); - } + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.Is(p => p.Attachments == attachments && p.AttachmentsProcessingCompleteEventArgs == args))); + } - [TestMethod] - public void EventsHandlerHandleTestRunAttachmentsProcessingProgressShouldSendAttachmentsProcessingProgressMessage() - { - var args = new TestRunAttachmentsProcessingProgressEventArgs(1, new[] { new System.Uri("http://www.bing.com/") }, 90, 2); + [TestMethod] + public void EventsHandlerHandleTestRunAttachmentsProcessingProgressShouldSendAttachmentsProcessingProgressMessage() + { + var args = new TestRunAttachmentsProcessingProgressEventArgs(1, new[] { new System.Uri("http://www.bing.com/") }, 90, 2); - handler.HandleTestRunAttachmentsProcessingProgress(args); + _handler.HandleTestRunAttachmentsProcessingProgress(args); - mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingProgress, It.Is(p => p.AttachmentsProcessingProgressEventArgs == args))); - } + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingProgress, It.Is(p => p.AttachmentsProcessingProgressEventArgs == args))); + } - [TestMethod] - public void EventsHandlerHandleRawMessageShouldDoNothing() - { - handler.HandleRawMessage("any"); + [TestMethod] + public void EventsHandlerHandleRawMessageShouldDoNothing() + { + _handler.HandleRawMessage("any"); - mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny()), Times.Never); - mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(), It.IsAny()), Times.Never); - } + _mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny()), Times.Never); + _mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(), It.IsAny()), Times.Never); } } diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeClientTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeClientTests.cs index 9cf49fb843..84acf7765a 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeClientTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeClientTests.cs @@ -1,748 +1,651 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode -{ - using System; - using System.Linq; - using System.Net; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; - using Microsoft.VisualStudio.TestPlatform.Client.TestRunAttachmentsProcessing; - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using Newtonsoft.Json.Linq; - - [TestClass] - public class DesignModeClientTests - { - private const int Timeout = 15 * 1000; - private const int PortNumber = 123; +using System; +using System.Linq; +using System.Net; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.Client.TestRunAttachmentsProcessing; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Newtonsoft.Json.Linq; + +namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode; + +[TestClass] +public class DesignModeClientTests +{ + private const int Timeout = 15 * 1000; + private const int PortNumber = 123; - private readonly Mock mockTestRequestManager; + private readonly Mock _mockTestRequestManager; + private readonly Mock _mockCommunicationManager; + private readonly DesignModeClient _designModeClient; + private readonly int _protocolVersion = 7; + private readonly AutoResetEvent _completeEvent; + private readonly Mock _mockPlatformEnvironment; - private readonly Mock mockCommunicationManager; + public DesignModeClientTests() + { + _mockTestRequestManager = new Mock(); + _mockCommunicationManager = new Mock(); + _mockPlatformEnvironment = new Mock(); + _designModeClient = new DesignModeClient(_mockCommunicationManager.Object, JsonDataSerializer.Instance, _mockPlatformEnvironment.Object); + _completeEvent = new AutoResetEvent(false); + } - private readonly DesignModeClient designModeClient; + [TestMethod] + public void DesignModeClientBeforeConnectInstanceShouldReturnNull() + { + Assert.IsNull(DesignModeClient.Instance); + } - private readonly int protocolVersion = 5; + [TestMethod] + public void DesignModeClientInitializeShouldInstantiateClassAndCreateClient() + { + DesignModeClient.Initialize(); + Assert.IsNotNull(DesignModeClient.Instance); + } - private readonly AutoResetEvent completeEvent; + [TestMethod] + public void TestRunMessageHandlerShouldCallCommunicationManagerIfMessageIsError() + { + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny())); - private readonly Mock mockPlatformEnvrironment; + _designModeClient.TestRunMessageHandler(new object(), new TestRunMessageEventArgs(TestMessageLevel.Error, "message")); - public DesignModeClientTests() - { - this.mockTestRequestManager = new Mock(); - this.mockCommunicationManager = new Mock(); - this.mockPlatformEnvrironment = new Mock(); - this.designModeClient = new DesignModeClient(this.mockCommunicationManager.Object, JsonDataSerializer.Instance, this.mockPlatformEnvrironment.Object); - this.completeEvent = new AutoResetEvent(false); - } + _mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(), It.IsAny()), Times.Once()); + } - [TestMethod] - public void DesignModeClientBeforeConnectInstanceShouldReturnNull() - { - Assert.IsNull(DesignModeClient.Instance); - } + [TestMethod] + public void TestRunMessageHandlerShouldCallCommunicationManagerIfMessageIsWarning() + { + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny())); - [TestMethod] - public void DesignModeClientInitializeShouldInstantiateClassAndCreateClient() - { - DesignModeClient.Initialize(); - Assert.IsNotNull(DesignModeClient.Instance); - } + _designModeClient.TestRunMessageHandler(new object(), new TestRunMessageEventArgs(TestMessageLevel.Warning, "message")); - [TestMethod] - public void TestRunMessageHandlerShouldCallCommmunicationManagerIfMessageisError() - { - this.mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny())); + _mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(), It.IsAny()), Times.Once()); + } - this.designModeClient.TestRunMessageHandler(new object(), new TestRunMessageEventArgs(TestMessageLevel.Error, "message")); + [TestMethod] + public void DesignModeClientConnectShouldSetupChannel() + { + var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = _protocolVersion }; + var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(),It.IsAny()), Times.Once()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void TestRunMessageHandlerShouldCallCommmunicationManagerIfMessageisWarning() - { - this.mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny())); + _mockCommunicationManager.Verify(cm => cm.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, PortNumber)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForServerConnection(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.SessionConnected), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once()); + } - this.designModeClient.TestRunMessageHandler(new object(), new TestRunMessageEventArgs(TestMessageLevel.Warning, "message")); + [TestMethod] + public void DesignModeClientConnectShouldNotSendConnectedIfServerConnectionTimesOut() + { + var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = _protocolVersion }; + var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(false); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(), It.IsAny()), Times.Once()); - } + Assert.ThrowsException(() => _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object)); - [TestMethod] - public void TestRunMessageHandlerShouldNotCallCommmunicationManagerIfMessageisInformational() - { - this.mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny())); + _mockCommunicationManager.Verify(cm => cm.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, PortNumber)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForServerConnection(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.SessionConnected), Times.Never); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, It.IsAny()), Times.Never); + } - this.designModeClient.TestRunMessageHandler(new object(), new TestRunMessageEventArgs(TestMessageLevel.Informational, "message")); + [TestMethod] + public void DesignModeClientDuringConnectShouldHighestCommonVersionWhenReceivedVersionIsGreaterThanSupportedVersion() + { + var reallyHighProtocolVersion = 10000; + var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = reallyHighProtocolVersion }; + var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(It.IsAny(), It.IsAny()), Times.Never()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldSetupChannel() - { - var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = this.protocolVersion }; - var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once()); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + public void DesignModeClientDuringConnectShouldHighestCommonVersionWhenReceivedVersionIsSmallerThanSupportedVersion() + { + var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = 1 }; + var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); - this.mockCommunicationManager.Verify(cm => cm.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, PortNumber)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForServerConnection(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.SessionConnected), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldNotSendConnectedIfServerConnectionTimesOut() - { - var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = this.protocolVersion }; - var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(false); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, 1), Times.Once()); + } - Assert.ThrowsException(() => this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object)); + [TestMethod] + public void DesignModeClientWithGetTestRunnerProcessStartInfoShouldDeserializeTestsWithTraitsCorrectly() + { + // Arrange. + var testCase = new TestCase("A.C.M", new Uri("d:\\executor"), "A.dll"); + testCase.Traits.Add(new Trait("foo", "bar")); - this.mockCommunicationManager.Verify(cm => cm.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, PortNumber)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForServerConnection(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.SessionConnected), Times.Never); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, It.IsAny()), Times.Never); - } + var testList = new System.Collections.Generic.List { testCase }; + var testRunPayload = new TestRunRequestPayload { RunSettings = null, TestCases = testList }; - [TestMethod] - public void DesignModeClientDuringConnectShouldHighestCommonVersionWhenReceivedVersionIsGreaterThanSupportedVersion() + var getProcessStartInfoMessage = new Message { - var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = 5 }; - var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); + MessageType = MessageType.GetTestRunnerProcessStartInfoForRunSelected, + Payload = JToken.FromObject("random") + }; - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; + TestRunRequestPayload? receivedTestRunPayload = null; + var allTasksComplete = new ManualResetEvent(false); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once()); - } + // Setup mocks. + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.Setup(cm => cm.DeserializePayload(getProcessStartInfoMessage)) + .Returns(testRunPayload); - [TestMethod] - public void DesignModeClientDuringConnectShouldHighestCommonVersionWhenReceivedVersionIsSmallerThanSupportedVersion() - { - var verCheck = new Message { MessageType = MessageType.VersionCheck, Payload = 1 }; - var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(verCheck).Returns(sessionEnd); - - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); - - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, 1), Times.Once()); - } + _mockTestRequestManager.Setup( + trm => + trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback( + (TestRunRequestPayload trp, + ITestHostLauncher testHostManager, + ITestRunEventsRegistrar testRunEventsRegistrar, + ProtocolConfig config) => + { + receivedTestRunPayload = trp; + allTasksComplete.Set(); + }); - [TestMethod] - public void DesignModeClientWithGetTestRunnerProcessStartInfoShouldDeserializeTestsWithTraitsCorrectly() - { - // Arrange. - var testCase = new TestCase("A.C.M", new Uri("d:\\executor"), "A.dll"); - testCase.Traits.Add(new Trait("foo", "bar")); - - var testList = new System.Collections.Generic.List { testCase }; - var testRunPayload = new TestRunRequestPayload { RunSettings = null, TestCases = testList }; - - var getProcessStartInfoMessage = new Message - { - MessageType = MessageType.GetTestRunnerProcessStartInfoForRunSelected, - Payload = JToken.FromObject("random") - }; - - var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; - TestRunRequestPayload receivedTestRunPayload = null; - var allTasksComplete = new ManualResetEvent(false); - - // Setup mocks. - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.Setup(cm => cm.DeserializePayload(getProcessStartInfoMessage)) - .Returns(testRunPayload); - - this.mockTestRequestManager.Setup( - trm => - trm.RunTests( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Callback( - (TestRunRequestPayload trp, - ITestHostLauncher testHostManager, - ITestRunEventsRegistrar testRunEventsRegistrar, - ProtocolConfig config) => - { - receivedTestRunPayload = trp; - allTasksComplete.Set(); - }); - - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()) - .Returns(getProcessStartInfoMessage) - .Returns(sessionEnd); - - // Act. - this.designModeClient.ConnectToClientAndProcessRequests(0, this.mockTestRequestManager.Object); - - // wait for the internal spawned of tasks to complete. - Assert.IsTrue(allTasksComplete.WaitOne(1000), "Timed out waiting for mock request manager."); - - // Assert. - Assert.IsNotNull(receivedTestRunPayload); - Assert.IsNotNull(receivedTestRunPayload.TestCases); - Assert.AreEqual(1, receivedTestRunPayload.TestCases.Count); - - // Validate traits - var traits = receivedTestRunPayload.TestCases.ToArray()[0].Traits; - Assert.AreEqual("foo", traits.ToArray()[0].Name); - Assert.AreEqual("bar", traits.ToArray()[0].Value); - } + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()) + .Returns(getProcessStartInfoMessage) + .Returns(sessionEnd); - [TestMethod] - public void DesignModeClientWithRunSelectedTestCasesShouldDeserializeTestsWithTraitsCorrectly() - { - // Arrange. - var testCase = new TestCase("A.C.M", new Uri("d:\\executor"), "A.dll"); - testCase.Traits.Add(new Trait("foo", "bar")); - - var testList = new System.Collections.Generic.List { testCase }; - var testRunPayload = new TestRunRequestPayload { RunSettings = null, TestCases = testList }; - - var getProcessStartInfoMessage = new Message - { - MessageType = MessageType.TestRunSelectedTestCasesDefaultHost, - Payload = JToken.FromObject("random") - }; - - var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; - TestRunRequestPayload receivedTestRunPayload = null; - var allTasksComplete = new ManualResetEvent(false); - - // Setup mocks. - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.Setup(cm => cm.DeserializePayload(getProcessStartInfoMessage)) - .Returns(testRunPayload); - this.mockTestRequestManager.Setup( - trm => - trm.RunTests( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Callback( - (TestRunRequestPayload trp, - ITestHostLauncher testHostManager, - ITestRunEventsRegistrar testRunEventsRegistrar, - ProtocolConfig config) => - { - receivedTestRunPayload = trp; - allTasksComplete.Set(); - }); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()) - .Returns(getProcessStartInfoMessage) - .Returns(sessionEnd); - - // Act. - this.designModeClient.ConnectToClientAndProcessRequests(0, this.mockTestRequestManager.Object); - - // wait for the internal spawned of tasks to complete. - allTasksComplete.WaitOne(1000); - - // Assert. - Assert.IsNotNull(receivedTestRunPayload); - Assert.IsNotNull(receivedTestRunPayload.TestCases); - Assert.AreEqual(1, receivedTestRunPayload.TestCases.Count); - - // Validate traits - var traits = receivedTestRunPayload.TestCases.ToArray()[0].Traits; - Assert.AreEqual("foo", traits.ToArray()[0].Name); - Assert.AreEqual("bar", traits.ToArray()[0].Value); - } + // Act. + _designModeClient.ConnectToClientAndProcessRequests(0, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientOnBadConnectionShouldStopServerAndThrowTimeoutException() - { - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(false); + // wait for the internal spawned of tasks to complete. + Assert.IsTrue(allTasksComplete.WaitOne(1000), "Timed out waiting for mock request manager."); - var ex = Assert.ThrowsException(() => this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object)); - Assert.AreEqual("vstest.console process failed to connect to translation layer process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.", ex.Message); + // Assert. + Assert.IsNotNull(receivedTestRunPayload); + Assert.IsNotNull(receivedTestRunPayload.TestCases); + Assert.AreEqual(1, receivedTestRunPayload.TestCases.Count); - this.mockCommunicationManager.Verify(cm => cm.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, PortNumber)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForServerConnection(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.StopClient(), Times.Once); - } + // Validate traits + var traits = receivedTestRunPayload.TestCases.ToArray()[0].Traits; + Assert.AreEqual("foo", traits.ToArray()[0].Name); + Assert.AreEqual("bar", traits.ToArray()[0].Value); + } - [TestMethod] - public void DesignModeClientShouldStopCommunicationOnParentProcessExit() - { - this.mockPlatformEnvrironment.Setup(pe => pe.Exit(It.IsAny())); - this.designModeClient.HandleParentProcessExit(); + [TestMethod] + public void DesignModeClientWithRunSelectedTestCasesShouldDeserializeTestsWithTraitsCorrectly() + { + // Arrange. + var testCase = new TestCase("A.C.M", new Uri("d:\\executor"), "A.dll"); + testCase.Traits.Add(new Trait("foo", "bar")); - this.mockCommunicationManager.Verify(cm => cm.StopClient(), Times.Once); - } + var testList = new System.Collections.Generic.List { testCase }; + var testRunPayload = new TestRunRequestPayload { RunSettings = null, TestCases = testList }; - [TestMethod] - public void DesignModeClientLaunchCustomHostMustReturnIfAckComes() + var getProcessStartInfoMessage = new Message { - var testableDesignModeClient = new TestableDesignModeClient(this.mockCommunicationManager.Object, JsonDataSerializer.Instance, this.mockPlatformEnvrironment.Object); + MessageType = MessageType.TestRunSelectedTestCasesDefaultHost, + Payload = JToken.FromObject("random") + }; + + var sessionEnd = new Message { MessageType = MessageType.SessionEnd }; + TestRunRequestPayload? receivedTestRunPayload = null; + var allTasksComplete = new ManualResetEvent(false); + + // Setup mocks. + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.Setup(cm => cm.DeserializePayload(getProcessStartInfoMessage)) + .Returns(testRunPayload); + _mockTestRequestManager.Setup( + trm => + trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback( + (TestRunRequestPayload trp, + ITestHostLauncher testHostManager, + ITestRunEventsRegistrar testRunEventsRegistrar, + ProtocolConfig config) => + { + receivedTestRunPayload = trp; + allTasksComplete.Set(); + }); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()) + .Returns(getProcessStartInfoMessage) + .Returns(sessionEnd); - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + // Act. + _designModeClient.ConnectToClientAndProcessRequests(0, _mockTestRequestManager.Object); - var expectedProcessId = 1234; - Action sendMessageAction = () => - { - testableDesignModeClient.InvokeCustomHostLaunchAckCallback(expectedProcessId, null); - }; + // wait for the internal spawned of tasks to complete. + allTasksComplete.WaitOne(1000); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.CustomTestHostLaunch, It.IsAny())). - Callback(() => Task.Run(sendMessageAction)); + // Assert. + Assert.IsNotNull(receivedTestRunPayload); + Assert.IsNotNull(receivedTestRunPayload.TestCases); + Assert.AreEqual(1, receivedTestRunPayload.TestCases.Count); - var info = new TestProcessStartInfo(); - var processId = testableDesignModeClient.LaunchCustomHost(info, CancellationToken.None); + // Validate traits + var traits = receivedTestRunPayload.TestCases.ToArray()[0].Traits; + Assert.AreEqual("foo", traits.ToArray()[0].Name); + Assert.AreEqual("bar", traits.ToArray()[0].Value); + } - Assert.AreEqual(expectedProcessId, processId); - } + [TestMethod] + public void DesignModeClientOnBadConnectionShouldStopServerAndThrowTimeoutException() + { + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(false); - [TestMethod] - [ExpectedException(typeof(TestPlatformException))] - public void DesignModeClientLaunchCustomHostMustThrowIfInvalidAckComes() - { - var testableDesignModeClient = new TestableDesignModeClient(this.mockCommunicationManager.Object, JsonDataSerializer.Instance, this.mockPlatformEnvrironment.Object); + var ex = Assert.ThrowsException(() => _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object)); + Assert.AreEqual("vstest.console process failed to connect to translation layer process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.", ex.Message); - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.Verify(cm => cm.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, PortNumber)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForServerConnection(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(cm => cm.StopClient(), Times.Once); + } - var expectedProcessId = -1; - Action sendMessageAction = () => - { - testableDesignModeClient.InvokeCustomHostLaunchAckCallback(expectedProcessId, "Dummy"); - }; + [TestMethod] + public void DesignModeClientShouldStopCommunicationOnParentProcessExit() + { + _mockPlatformEnvironment.Setup(pe => pe.Exit(It.IsAny())); + _designModeClient.HandleParentProcessExit(); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.CustomTestHostLaunch, It.IsAny())) - .Callback(() => Task.Run(sendMessageAction)); + _mockCommunicationManager.Verify(cm => cm.StopClient(), Times.Once); + } - var info = new TestProcessStartInfo(); - testableDesignModeClient.LaunchCustomHost(info, CancellationToken.None); - } + [TestMethod] + public void DesignModeClientLaunchCustomHostMustReturnIfAckComes() + { + var testableDesignModeClient = new TestableDesignModeClient(_mockCommunicationManager.Object, JsonDataSerializer.Instance, _mockPlatformEnvironment.Object); - [TestMethod] - [ExpectedException(typeof(TestPlatformException))] - public void DesignModeClientLaunchCustomHostMustThrowIfCancellationOccursBeforeHostLaunch() - { - var testableDesignModeClient = new TestableDesignModeClient(this.mockCommunicationManager.Object, JsonDataSerializer.Instance, this.mockPlatformEnvrironment.Object); + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - var info = new TestProcessStartInfo(); - var cancellationTokenSource = new CancellationTokenSource(); - cancellationTokenSource.Cancel(); + var expectedProcessId = 1234; + Action sendMessageAction = () => testableDesignModeClient.InvokeCustomHostLaunchAckCallback(expectedProcessId, null); - testableDesignModeClient.LaunchCustomHost(info, cancellationTokenSource.Token); - } + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.CustomTestHostLaunch, It.IsAny())). + Callback(() => Task.Run(sendMessageAction)); - [TestMethod] - public void DesignModeClientConnectShouldSendTestMessageAndDiscoverCompleteOnExceptionInDiscovery() - { - var payload = new DiscoveryRequestPayload(); - var startDiscovery = new Message { MessageType = MessageType.StartDiscovery, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startDiscovery); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny())) - .Callback(() => completeEvent.Set()); - this.mockTestRequestManager.Setup( - rm => rm.DiscoverTests( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Throws(new Exception()); + var info = new TestProcessStartInfo(); + var processId = testableDesignModeClient.LaunchCustomHost(info, CancellationToken.None); - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + Assert.AreEqual(expectedProcessId, processId); + } - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Discovery not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny()), Times.Once()); - } + [TestMethod] + [ExpectedException(typeof(TestPlatformException))] + public void DesignModeClientLaunchCustomHostMustThrowIfInvalidAckComes() + { + var testableDesignModeClient = new TestableDesignModeClient(_mockCommunicationManager.Object, JsonDataSerializer.Instance, _mockPlatformEnvironment.Object); - [TestMethod] - public void DesignModeClientConnectShouldSendTestMessageAndDiscoverCompleteOnTestPlatformExceptionInDiscovery() - { - var payload = new DiscoveryRequestPayload(); - var startDiscovery = new Message { MessageType = MessageType.StartDiscovery, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startDiscovery); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny())) - .Callback(() => completeEvent.Set()); - this.mockTestRequestManager.Setup( - rm => rm.DiscoverTests( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Throws(new TestPlatformException("Hello world")); + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + var expectedProcessId = -1; + Action sendMessageAction = () => testableDesignModeClient.InvokeCustomHostLaunchAckCallback(expectedProcessId, "Dummy"); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Discovery not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny()), Times.Once()); - } + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.CustomTestHostLaunch, It.IsAny())) + .Callback(() => Task.Run(sendMessageAction)); - [TestMethod] - public void DesignModeClientConnectShouldSendTestMessageAndAttachmentsProcessingCompleteOnExceptionInAttachmentsProcessing() - { - var payload = new TestRunAttachmentsProcessingPayload(); - var startAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingStart, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startAttachmentsProcessing); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny())) - .Callback(() => completeEvent.Set()); - this.mockTestRequestManager.Setup( - rm => rm.ProcessTestRunAttachments( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Throws(new Exception()); + var info = new TestProcessStartInfo(); + testableDesignModeClient.LaunchCustomHost(info, CancellationToken.None); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + [ExpectedException(typeof(TestPlatformException))] + public void DesignModeClientLaunchCustomHostMustThrowIfCancellationOccursBeforeHostLaunch() + { + var testableDesignModeClient = new TestableDesignModeClient(_mockCommunicationManager.Object, JsonDataSerializer.Instance, _mockPlatformEnvironment.Object); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "AttachmentsProcessing not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.Is(p => p.Attachments == null)), Times.Once()); - } + var info = new TestProcessStartInfo(); + var cancellationTokenSource = new CancellationTokenSource(); + cancellationTokenSource.Cancel(); - [TestMethod] - public void DesignModeClientConnectShouldSendTestMessageAndDiscoverCompleteOnTestPlatformExceptionInAttachmentsProcessing() - { - var payload = new TestRunAttachmentsProcessingPayload(); - var startAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingStart, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startAttachmentsProcessing); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny())) - .Callback(() => completeEvent.Set()); - this.mockTestRequestManager.Setup( - rm => rm.ProcessTestRunAttachments( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Throws(new TestPlatformException("Hello world")); + testableDesignModeClient.LaunchCustomHost(info, cancellationTokenSource.Token); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + public void DesignModeClientConnectShouldSendTestMessageAndDiscoverCompleteOnExceptionInDiscovery() + { + var payload = new DiscoveryRequestPayload(); + var startDiscovery = new Message { MessageType = MessageType.StartDiscovery, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startDiscovery); + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny())) + .Callback(() => _completeEvent.Set()); + _mockTestRequestManager.Setup( + rm => rm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Throws(new Exception()); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "AttachmentsProcessing not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.Is(p => p.Attachments == null)), Times.Once()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldCallRequestManagerForAttachmentsProcessingStart() - { - var payload = new TestRunAttachmentsProcessingPayload(); - var startAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingStart, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startAttachmentsProcessing); - - this.mockTestRequestManager - .Setup( - rm => rm.ProcessTestRunAttachments( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Callback(() => completeEvent.Set()); + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "Discovery not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny()), Times.Once()); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + public void DesignModeClientConnectShouldSendTestMessageAndDiscoverCompleteOnTestPlatformExceptionInDiscovery() + { + var payload = new DiscoveryRequestPayload(); + var startDiscovery = new Message { MessageType = MessageType.StartDiscovery, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startDiscovery); + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny())) + .Callback(() => _completeEvent.Set()); + _mockTestRequestManager.Setup( + rm => rm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Throws(new TestPlatformException("Hello world")); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "AttachmentsProcessing not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Never); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny()), Times.Never); - this.mockTestRequestManager.Verify(rm => rm.ProcessTestRunAttachments(It.IsAny(), It.IsAny(), It.IsAny())); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldCallRequestManagerForAttachmentsProcessingCancel() - { - var cancelAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingCancel }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(cancelAttachmentsProcessing); + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "Discovery not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.DiscoveryComplete, It.IsAny()), Times.Once()); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + public void DesignModeClientConnectShouldSendTestMessageAndAttachmentsProcessingCompleteOnExceptionInAttachmentsProcessing() + { + var payload = new TestRunAttachmentsProcessingPayload(); + var startAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingStart, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startAttachmentsProcessing); + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny())) + .Callback(() => _completeEvent.Set()); + _mockTestRequestManager.Setup( + rm => rm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Throws(new Exception()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Never); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny()), Times.Never); - this.mockTestRequestManager.Verify(rm => rm.CancelTestRunAttachmentsProcessing()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldSendTestMessageAndExecutionCompleteOnExceptionInTestRun() - { - var payload = new TestRunRequestPayload(); - var testRunAll = new Message { MessageType = MessageType.TestRunAllSourcesWithDefaultHost, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(testRunAll); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny())) - .Callback(() => this.completeEvent.Set()); - this.mockTestRequestManager.Setup( - rm => rm.RunTests( - It.IsAny(), - null, - It.IsAny(), - It.IsAny())).Throws(new Exception()); + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "AttachmentsProcessing not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.Is(p => p.Attachments == null)), Times.Once()); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + public void DesignModeClientConnectShouldSendTestMessageAndDiscoverCompleteOnTestPlatformExceptionInAttachmentsProcessing() + { + var payload = new TestRunAttachmentsProcessingPayload(); + var startAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingStart, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startAttachmentsProcessing); + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny())) + .Callback(() => _completeEvent.Set()); + _mockTestRequestManager.Setup( + rm => rm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Throws(new TestPlatformException("Hello world")); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Execution not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny()), Times.Once()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldSendTestMessageAndExecutionCompleteOnTestPlatformExceptionInTestRun() - { - var payload = new TestRunRequestPayload(); - var testRunAll = new Message { MessageType = MessageType.TestRunAllSourcesWithDefaultHost, Payload = JToken.FromObject(payload) }; - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(testRunAll); - this.mockCommunicationManager - .Setup(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny())) - .Callback(() => this.completeEvent.Set()); - this.mockTestRequestManager.Setup( - rm => rm.RunTests( - It.IsAny(), - null, - It.IsAny(), - It.IsAny())).Throws(new TestPlatformException("Hello world")); + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "AttachmentsProcessing not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.Is(p => p.Attachments == null)), Times.Once()); + } - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + [TestMethod] + public void DesignModeClientConnectShouldCallRequestManagerForAttachmentsProcessingStart() + { + var payload = new TestRunAttachmentsProcessingPayload(); + var startAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingStart, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startAttachmentsProcessing); + _mockCommunicationManager.Setup(cm => cm.DeserializePayload(It.IsAny())).Returns(payload); + + _mockTestRequestManager + .Setup( + rm => rm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(() => _completeEvent.Set()); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Execution not completed."); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny()), Times.Once()); - } + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - [TestMethod] - public void DesignModeClientConnectShouldReturnNullSessionWhenStartTestSessionThrows() - { - var payload = new StartTestSessionPayload(); - var startTestSessionMessage = new Message() - { - MessageType = MessageType.StartTestSession, - Payload = JToken.FromObject(payload) - }; + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "AttachmentsProcessing not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Never); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny()), Times.Never); + _mockTestRequestManager.Verify(rm => rm.ProcessTestRunAttachments(It.IsAny(), It.IsAny(), It.IsAny())); + } - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startTestSessionMessage); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSessionCallback, - It.IsAny())) - .Callback((string _, object actualPayload) => - { - this.completeEvent.Set(); - Assert.IsNull(((StartTestSessionAckPayload)actualPayload).TestSessionInfo); - }); - this.mockCommunicationManager.Setup( - cm => cm.DeserializePayload( - startTestSessionMessage)) - .Returns(payload); - - this.mockTestRequestManager.Setup( - rm => rm.StartTestSession( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny())).Throws(new SettingsException("DummyException")); - - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); - - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Start test session not completed."); - this.mockCommunicationManager.Verify( - cm => cm.SendMessage( - MessageType.StartTestSessionCallback, - It.IsAny()), - Times.Once()); - } + [TestMethod] + public void DesignModeClientConnectShouldCallRequestManagerForAttachmentsProcessingCancel() + { + var cancelAttachmentsProcessing = new Message { MessageType = MessageType.TestRunAttachmentsProcessingCancel }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(cancelAttachmentsProcessing); - [TestMethod] - public void DesignModeClientConnectShouldReturnFalseWhenStopTestSessionThrows() - { - var mockTestPool = new Mock(); - TestSessionPool.Instance = mockTestPool.Object; + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - var testSessionInfo = new TestSessionInfo(); - var stopTestSessionMessage = new Message() - { - MessageType = MessageType.StopTestSession, - Payload = JToken.FromObject(testSessionInfo) - }; + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Never); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, It.IsAny()), Times.Never); + _mockTestRequestManager.Verify(rm => rm.CancelTestRunAttachmentsProcessing()); + } - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(stopTestSessionMessage); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StopTestSessionCallback, - It.IsAny())) - .Callback((string _, object actualPayload) => - { - this.completeEvent.Set(); + [TestMethod] + public void DesignModeClientConnectShouldSendTestMessageAndExecutionCompleteOnExceptionInTestRun() + { + var payload = new TestRunRequestPayload(); + var testRunAll = new Message { MessageType = MessageType.TestRunAllSourcesWithDefaultHost, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(testRunAll); + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny())) + .Callback(() => _completeEvent.Set()); + _mockTestRequestManager.Setup( + rm => rm.RunTests( + It.IsAny(), + null, + It.IsAny(), + It.IsAny())).Throws(new Exception()); - Assert.AreEqual(((StopTestSessionAckPayload)actualPayload).TestSessionInfo, testSessionInfo); - Assert.IsFalse(((StopTestSessionAckPayload)actualPayload).IsStopped); - }); + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - this.mockCommunicationManager.Setup( - cm => cm.DeserializePayload( - stopTestSessionMessage)) - .Returns(testSessionInfo); + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "Execution not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny()), Times.Once()); + } - mockTestPool.Setup(tp => tp.KillSession(testSessionInfo)).Throws(new Exception("DummyException")); + [TestMethod] + public void DesignModeClientConnectShouldSendTestMessageAndExecutionCompleteOnTestPlatformExceptionInTestRun() + { + var payload = new TestRunRequestPayload(); + var testRunAll = new Message { MessageType = MessageType.TestRunAllSourcesWithDefaultHost, Payload = JToken.FromObject(payload) }; + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(testRunAll); + _mockCommunicationManager + .Setup(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny())) + .Callback(() => _completeEvent.Set()); + _mockTestRequestManager.Setup( + rm => rm.RunTests( + It.IsAny(), + null, + It.IsAny(), + It.IsAny())).Throws(new TestPlatformException("Hello world")); - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Start test session not completed."); - this.mockCommunicationManager.Verify( - cm => cm.SendMessage( - MessageType.StopTestSessionCallback, - It.IsAny()), - Times.Once()); - } + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "Execution not completed."); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.ExecutionComplete, It.IsAny()), Times.Once()); + } - [TestMethod] - public void DesignModeClientConnectShouldReturnFalseWhenStopTestSessionReturnsFalse() + [TestMethod] + public void DesignModeClientConnectShouldReturnNullSessionWhenStartTestSessionThrows() + { + var payload = new StartTestSessionPayload(); + var startTestSessionMessage = new Message() { - var mockTestPool = new Mock(); - TestSessionPool.Instance = mockTestPool.Object; - - var testSessionInfo = new TestSessionInfo(); - var stopTestSessionMessage = new Message() + MessageType = MessageType.StartTestSession, + Payload = JToken.FromObject(payload) + }; + + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(startTestSessionMessage); + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSessionCallback, + It.IsAny())) + .Callback((string _, object actualPayload) => { - MessageType = MessageType.StopTestSession, - Payload = JToken.FromObject(testSessionInfo) - }; - - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(stopTestSessionMessage); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StopTestSessionCallback, - It.IsAny())) - .Callback((string _, object actualPayload) => - { - this.completeEvent.Set(); - - Assert.AreEqual(((StopTestSessionAckPayload)actualPayload).TestSessionInfo, testSessionInfo); - Assert.IsFalse(((StopTestSessionAckPayload)actualPayload).IsStopped); - }); - - this.mockCommunicationManager.Setup( - cm => cm.DeserializePayload( - stopTestSessionMessage)) - .Returns(testSessionInfo); - - mockTestPool.Setup(tp => tp.KillSession(testSessionInfo)).Returns(false); - - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + _completeEvent.Set(); + Assert.IsNull(((StartTestSessionAckPayload)actualPayload).EventArgs!.TestSessionInfo); + }); + _mockCommunicationManager.Setup( + cm => cm.DeserializePayload( + startTestSessionMessage)) + .Returns(payload); + + _mockTestRequestManager.Setup( + rm => rm.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())).Throws(new SettingsException("DummyException")); + + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); + + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "Start test session not completed."); + _mockCommunicationManager.Verify( + cm => cm.SendMessage( + MessageType.StartTestSessionCallback, + It.IsAny()), + Times.Once()); + } - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Start test session not completed."); - this.mockCommunicationManager.Verify( - cm => cm.SendMessage( - MessageType.StopTestSessionCallback, - It.IsAny()), - Times.Once()); - } + [TestMethod] + public void DesignModeClientConnectShouldReturnFalseWhenStopTestSessionThrows() + { + var mockTestPool = new Mock(); + TestSessionPool.Instance = mockTestPool.Object; - [TestMethod] - public void DesignModeClientConnectShouldReturnTruenWhenStopTestSessionReturnsTrue() + var testSessionInfo = new TestSessionInfo(); + var stopTestSessionPayload = new StopTestSessionPayload { - var mockTestPool = new Mock(); - TestSessionPool.Instance = mockTestPool.Object; - - var testSessionInfo = new TestSessionInfo(); - var stopTestSessionMessage = new Message() + TestSessionInfo = testSessionInfo, + CollectMetrics = true + }; + var stopTestSessionMessage = new Message() + { + MessageType = MessageType.StopTestSession, + Payload = JToken.FromObject(stopTestSessionPayload) + }; + + _mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); + _mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(stopTestSessionMessage); + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StopTestSessionCallback, + It.IsAny())) + .Callback((string _, object actualPayload) => { - MessageType = MessageType.StopTestSession, - Payload = JToken.FromObject(testSessionInfo) - }; + _completeEvent.Set(); - this.mockCommunicationManager.Setup(cm => cm.WaitForServerConnection(It.IsAny())).Returns(true); - this.mockCommunicationManager.SetupSequence(cm => cm.ReceiveMessage()).Returns(stopTestSessionMessage); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StopTestSessionCallback, - It.IsAny())) - .Callback((string _, object actualPayload) => - { - this.completeEvent.Set(); - - Assert.AreEqual(((StopTestSessionAckPayload)actualPayload).TestSessionInfo, testSessionInfo); - Assert.IsTrue(((StopTestSessionAckPayload)actualPayload).IsStopped); - }); + Assert.AreEqual(((StopTestSessionAckPayload)actualPayload).EventArgs!.TestSessionInfo, testSessionInfo); + Assert.IsFalse(((StopTestSessionAckPayload)actualPayload).EventArgs!.IsStopped); + }); - this.mockCommunicationManager.Setup( - cm => cm.DeserializePayload( + _mockCommunicationManager.Setup( + cm => cm.DeserializePayload( stopTestSessionMessage)) - .Returns(testSessionInfo); + .Returns(stopTestSessionPayload); + + _mockTestRequestManager.Setup( + rm => rm.StopTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny())).Throws(new Exception("DummyException")); + + _designModeClient.ConnectToClientAndProcessRequests(PortNumber, _mockTestRequestManager.Object); + + Assert.IsTrue(_completeEvent.WaitOne(Timeout), "Start test session not completed."); + _mockCommunicationManager.Verify( + cm => cm.SendMessage( + MessageType.StopTestSessionCallback, + It.IsAny()), + Times.Once()); + } - mockTestPool.Setup(tp => tp.KillSession(testSessionInfo)).Returns(true); + [TestMethod] + public void DesignModeClientSendTestMessageShouldSendTestMessage() + { + var testPayload = new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "DummyMessage" }; - this.designModeClient.ConnectToClientAndProcessRequests(PortNumber, this.mockTestRequestManager.Object); + _designModeClient.SendTestMessage(testPayload.MessageLevel, testPayload.Message); - Assert.IsTrue(this.completeEvent.WaitOne(Timeout), "Start test session not completed."); - this.mockCommunicationManager.Verify( - cm => cm.SendMessage( - MessageType.StopTestSessionCallback, - It.IsAny()), - Times.Once()); - } + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); + } - [TestMethod] - public void DesignModeClientSendTestMessageShouldSendTestMessage() + private class TestableDesignModeClient : DesignModeClient + { + internal TestableDesignModeClient( + ICommunicationManager communicationManager, + IDataSerializer dataSerializer, + IEnvironment platformEnvironment) + : base(communicationManager, dataSerializer, platformEnvironment) { - var testPayload = new TestMessagePayload { MessageLevel = ObjectModel.Logging.TestMessageLevel.Error, Message = "DummyMessage" }; - - this.designModeClient.SendTestMessage(testPayload.MessageLevel, testPayload.Message); - - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.TestMessage, It.IsAny()), Times.Once()); } - private class TestableDesignModeClient : DesignModeClient + public void InvokeCustomHostLaunchAckCallback(int processId, string? errorMessage) { - internal TestableDesignModeClient( - ICommunicationManager communicationManager, - IDataSerializer dataSerializer, - IEnvironment platformEnvironment) - : base(communicationManager, dataSerializer, platformEnvironment) - { - } - - public void InvokeCustomHostLaunchAckCallback(int processId, string errorMessage) + var payload = new CustomHostLaunchAckPayload() { - var payload = new CustomHostLaunchAckPayload() - { - HostProcessId = processId, - ErrorMessage = errorMessage - }; - this.onCustomTestHostLaunchAckReceived?.Invoke( - new Message() { MessageType = MessageType.CustomTestHostLaunchCallback, Payload = JToken.FromObject(payload) }); - } + HostProcessId = processId, + ErrorMessage = errorMessage + }; + onCustomTestHostLaunchAckReceived?.Invoke( + new Message() { MessageType = MessageType.CustomTestHostLaunchCallback, Payload = JToken.FromObject(payload) }); } } } diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs index 177d73d5f1..4f595713ba 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs @@ -1,35 +1,34 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode -{ - using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; - using Moq; +namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode; - [TestClass] - public class DesignModeTestHostLauncherFactoryTests +[TestClass] +public class DesignModeTestHostLauncherFactoryTests +{ + [TestMethod] + public void DesignModeTestHostFactoryShouldReturnNonDebugLauncherIfDebuggingDisabled() { - [TestMethod] - public void DesignModeTestHostFactoryShouldReturnNonDebugLauncherIfDebuggingDisabled() - { - var mockDesignModeClient = new Mock(); - var testRunRequestPayload = new TestRunRequestPayload { DebuggingEnabled = false }; - var launcher = DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(mockDesignModeClient.Object, testRunRequestPayload.DebuggingEnabled); + var mockDesignModeClient = new Mock(); + var testRunRequestPayload = new TestRunRequestPayload { DebuggingEnabled = false }; + var launcher = DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(mockDesignModeClient.Object, testRunRequestPayload.DebuggingEnabled); - Assert.IsFalse(launcher.IsDebug, "Factory must not return debug launcher if debugging is disabled."); - } + Assert.IsFalse(launcher.IsDebug, "Factory must not return debug launcher if debugging is disabled."); + } - [TestMethod] - public void DesignModeTestHostFactoryShouldReturnDebugLauncherIfDebuggingEnabled() - { - var mockDesignModeClient = new Mock(); - var testRunRequestPayload = new TestRunRequestPayload { DebuggingEnabled = true }; - var launcher = DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(mockDesignModeClient.Object, testRunRequestPayload.DebuggingEnabled); + [TestMethod] + public void DesignModeTestHostFactoryShouldReturnDebugLauncherIfDebuggingEnabled() + { + var mockDesignModeClient = new Mock(); + var testRunRequestPayload = new TestRunRequestPayload { DebuggingEnabled = true }; + var launcher = DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(mockDesignModeClient.Object, testRunRequestPayload.DebuggingEnabled); - Assert.IsTrue(launcher.IsDebug, "Factory must return non-debug launcher if debugging is enabled."); - } + Assert.IsTrue(launcher.IsDebug, "Factory must return non-debug launcher if debugging is enabled."); } } diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherTests.cs index 01f98448fb..22c33b59bc 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherTests.cs @@ -1,44 +1,44 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System.Threading; + using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; using Microsoft.VisualStudio.TestPlatform.ObjectModel; using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; -using System.Threading; -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode +namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode; + +[TestClass] +public class DesignModeTestHostLauncherTests { - [TestClass] - public class DesignModeTestHostLauncherTests + [TestMethod] + public void DesignModeTestHostLauncherLaunchTestHostShouldCallDesignModeClientToLaunchCustomHost() { - [TestMethod] - public void DesignModeTestHostLauncherLaunchTestHostShouldCallDesignModeClientToLaunchCustomHost() - { - var mockDesignModeClient = new Mock(); - var launcher = new DesignModeTestHostLauncher(mockDesignModeClient.Object); - Assert.IsFalse(launcher.IsDebug, "Default launcher must not implement debug launcher interface."); + var mockDesignModeClient = new Mock(); + var launcher = new DesignModeTestHostLauncher(mockDesignModeClient.Object); + Assert.IsFalse(launcher.IsDebug, "Default launcher must not implement debug launcher interface."); - var testProcessStartInfo = new TestProcessStartInfo(); + var testProcessStartInfo = new TestProcessStartInfo(); - launcher.LaunchTestHost(testProcessStartInfo); + launcher.LaunchTestHost(testProcessStartInfo); - mockDesignModeClient.Verify(md => md.LaunchCustomHost(testProcessStartInfo, It.IsAny()), Times.Once); - } + mockDesignModeClient.Verify(md => md.LaunchCustomHost(testProcessStartInfo, It.IsAny()), Times.Once); + } - [TestMethod] - public void DesignModeDebugTestHostLauncherLaunchTestHostShouldCallDesignModeClientToLaunchCustomHost() - { - var mockDesignModeClient = new Mock(); - var launcher = new DesignModeDebugTestHostLauncher(mockDesignModeClient.Object); - Assert.IsTrue(launcher.IsDebug, "Debug launcher must implement debug launcher interface."); + [TestMethod] + public void DesignModeDebugTestHostLauncherLaunchTestHostShouldCallDesignModeClientToLaunchCustomHost() + { + var mockDesignModeClient = new Mock(); + var launcher = new DesignModeDebugTestHostLauncher(mockDesignModeClient.Object); + Assert.IsTrue(launcher.IsDebug, "Debug launcher must implement debug launcher interface."); - var testProcessStartInfo = new TestProcessStartInfo(); + var testProcessStartInfo = new TestProcessStartInfo(); - launcher.LaunchTestHost(testProcessStartInfo); + launcher.LaunchTestHost(testProcessStartInfo); - mockDesignModeClient.Verify(md => md.LaunchCustomHost(testProcessStartInfo, It.IsAny()), Times.Once); - } + mockDesignModeClient.Verify(md => md.LaunchCustomHost(testProcessStartInfo, It.IsAny()), Times.Once); } } - diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/Discovery/DiscoveryRequestTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/Discovery/DiscoveryRequestTests.cs index 3b80962f7b..1a64538b9a 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/Discovery/DiscoveryRequestTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/Discovery/DiscoveryRequestTests.cs @@ -1,291 +1,303 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.Discovery -{ - using System; - using System.Collections.Generic; - using System.Linq; +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Client.Discovery; - using Client.Discovery; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; - using Moq; +namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.Discovery; - [TestClass] - public class DiscoveryRequestTests +[TestClass] +public class DiscoveryRequestTests +{ + readonly DiscoveryRequest _discoveryRequest; + readonly Mock _discoveryManager; + private readonly Mock _loggerManager; + readonly DiscoveryCriteria _discoveryCriteria; + private readonly Mock _mockRequestData; + private readonly Mock _mockDataSerializer; + + public DiscoveryRequestTests() { - DiscoveryRequest discoveryRequest; - Mock discoveryManager; - private readonly Mock loggerManager; - DiscoveryCriteria discoveryCriteria; - private Mock mockRequestData; - private Mock mockDataSerializer; - - public DiscoveryRequestTests() - { - this.discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 1, null); - this.discoveryManager = new Mock(); - this.loggerManager = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); - this.mockDataSerializer = new Mock(); - this.discoveryRequest = new DiscoveryRequest(this.mockRequestData.Object, this.discoveryCriteria, this.discoveryManager.Object, loggerManager.Object, this.mockDataSerializer.Object); - } + _discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 1, null); + _discoveryManager = new Mock(); + _loggerManager = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _mockDataSerializer = new Mock(); + _discoveryRequest = new DiscoveryRequest(_mockRequestData.Object, _discoveryCriteria, _discoveryManager.Object, _loggerManager.Object, _mockDataSerializer.Object); + } - [TestMethod] - public void ConstructorSetsDiscoveryCriteriaAndDiscoveryManager() - { - Assert.AreEqual(this.discoveryCriteria, this.discoveryRequest.DiscoveryCriteria); - Assert.AreEqual(this.discoveryManager.Object, (this.discoveryRequest as DiscoveryRequest).DiscoveryManager); - } + public static IEnumerable ProtocolConfigVersionProvider + => Enumerable.Range(0, Constants.DefaultProtocolConfig.Version + 1) + .Select(x => new object[] { x }); - [TestMethod] - public void DiscoveryAsycIfDiscoveryRequestIsDisposedThrowsObjectDisposedException() - { - this.discoveryRequest.Dispose(); + [TestMethod] + public void ConstructorSetsDiscoveryCriteriaAndDiscoveryManager() + { + Assert.AreEqual(_discoveryCriteria, _discoveryRequest.DiscoveryCriteria); + Assert.AreEqual(_discoveryManager.Object, (_discoveryRequest as DiscoveryRequest).DiscoveryManager); + } - Assert.ThrowsException(() => this.discoveryRequest.DiscoverAsync()); - } + [TestMethod] + public void DiscoveryAsycIfDiscoveryRequestIsDisposedThrowsObjectDisposedException() + { + _discoveryRequest.Dispose(); - [TestMethod] - public void DiscoverAsyncSetsDiscoveryInProgressAndCallManagerToDiscoverTests() - { - this.discoveryRequest.DiscoverAsync(); + Assert.ThrowsException(() => _discoveryRequest.DiscoverAsync()); + } - Assert.IsTrue((this.discoveryRequest as DiscoveryRequest).DiscoveryInProgress); - this.discoveryManager.Verify(dm => dm.DiscoverTests(this.discoveryCriteria, this.discoveryRequest as DiscoveryRequest), Times.Once); - } + [TestMethod] + public void DiscoverAsyncSetsDiscoveryInProgressAndCallManagerToDiscoverTests() + { + _discoveryRequest.DiscoverAsync(); - [TestMethod] - public void DiscoveryAsyncIfDiscoverTestsThrowsExceptionSetsDiscoveryInProgressToFalseAndThrowsThatException() + Assert.IsTrue((_discoveryRequest as DiscoveryRequest).DiscoveryInProgress); + _discoveryManager.Verify(dm => dm.DiscoverTests(_discoveryCriteria, _discoveryRequest as DiscoveryRequest), Times.Once); + } + + [TestMethod] + public void DiscoveryAsyncIfDiscoverTestsThrowsExceptionSetsDiscoveryInProgressToFalseAndThrowsThatException() + { + _discoveryManager.Setup(dm => dm.DiscoverTests(_discoveryCriteria, _discoveryRequest as DiscoveryRequest)).Throws(new Exception("DummyException")); + try { - this.discoveryManager.Setup(dm => dm.DiscoverTests(this.discoveryCriteria, this.discoveryRequest as DiscoveryRequest)).Throws(new Exception("DummyException")); - try - { - this.discoveryRequest.DiscoverAsync(); - } - catch (Exception ex) - { - Assert.IsTrue(ex is Exception); - Assert.AreEqual("DummyException", ex.Message); - Assert.IsFalse((this.discoveryRequest as DiscoveryRequest).DiscoveryInProgress); - } + _discoveryRequest.DiscoverAsync(); } - - [TestMethod] - public void AbortIfDiscoveryRequestDisposedShouldThrowObjectDisposedException() + catch (Exception ex) { - this.discoveryRequest.Dispose(); - Assert.ThrowsException(() => this.discoveryRequest.Abort()); + Assert.IsTrue(ex is Exception); + Assert.AreEqual("DummyException", ex.Message); + Assert.IsFalse((_discoveryRequest as DiscoveryRequest).DiscoveryInProgress); } + } - [TestMethod] - public void AbortIfDiscoveryIsinProgressShouldCallDiscoveryManagerAbort() - { - // Just to set the IsDiscoveryInProgress flag - this.discoveryRequest.DiscoverAsync(); + [TestMethod] + public void AbortIfDiscoveryRequestDisposedShouldThrowObjectDisposedException() + { + _discoveryRequest.Dispose(); + Assert.ThrowsException(() => _discoveryRequest.Abort()); + } - this.discoveryRequest.Abort(); - this.discoveryManager.Verify(dm => dm.Abort(), Times.Once); - } + [DataTestMethod] + [DynamicData(nameof(ProtocolConfigVersionProvider))] + public void AbortIfDiscoveryIsinProgressShouldCallDiscoveryManagerAbort(int version) + { + // Just to set the IsDiscoveryInProgress flag + _discoveryRequest.DiscoverAsync(); + // Set the protocol version to a version not supporting new abort overload. + Constants.DefaultProtocolConfig.Version = version; + + _discoveryRequest.Abort(); - [TestMethod] - public void AbortIfDiscoveryIsNotInProgressShouldNotCallDiscoveryManagerAbort() + if (version < Constants.MinimumProtocolVersionWithCancelDiscoveryEventHandlerSupport) { - // DiscoveryAsync has not been called, discoveryInProgress should be false - this.discoveryRequest.Abort(); - this.discoveryManager.Verify(dm => dm.Abort(), Times.Never); + _discoveryManager.Verify(dm => dm.Abort(), Times.Once); + _discoveryManager.Verify(dm => dm.Abort(_discoveryRequest), Times.Never); } - - [TestMethod] - public void WaitForCompletionIfDiscoveryRequestDisposedShouldThrowObjectDisposedException() + else { - this.discoveryRequest.Dispose(); - Assert.ThrowsException(() => this.discoveryRequest.WaitForCompletion()); + _discoveryManager.Verify(dm => dm.Abort(), Times.Never); + _discoveryManager.Verify(dm => dm.Abort(_discoveryRequest), Times.Once); } + } - [TestMethod] - public void HandleDiscoveryCompleteShouldCloseDiscoveryManager() - { - var eventsHandler = this.discoveryRequest as ITestDiscoveryEventsHandler2; + [TestMethod] + public void AbortIfDiscoveryIsNotInProgressShouldNotCallDiscoveryManagerAbort() + { + // DiscoveryAsync has not been called, discoveryInProgress should be false + _discoveryRequest.Abort(); + _discoveryManager.Verify(dm => dm.Abort(), Times.Never); + } - eventsHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(1, false), Enumerable.Empty()); - this.discoveryManager.Verify(dm => dm.Close(), Times.Once); - } + [TestMethod] + public void WaitForCompletionIfDiscoveryRequestDisposedShouldThrowObjectDisposedException() + { + _discoveryRequest.Dispose(); + Assert.ThrowsException(() => _discoveryRequest.WaitForCompletion()); + } - [TestMethod] - public void HandleDiscoveryCompleteShouldCloseDiscoveryManagerBeforeRaiseDiscoveryComplete() - { - var events = new List(); - this.discoveryManager.Setup(dm => dm.Close()).Callback(() => events.Add("close")); - this.discoveryRequest.OnDiscoveryComplete += (s, e) => events.Add("complete"); - var eventsHandler = this.discoveryRequest as ITestDiscoveryEventsHandler2; + [TestMethod] + public void HandleDiscoveryCompleteShouldCloseDiscoveryManager() + { + var eventsHandler = _discoveryRequest as ITestDiscoveryEventsHandler2; - eventsHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(1, false), Enumerable.Empty()); + eventsHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(1, false), []); + _discoveryManager.Verify(dm => dm.Close(), Times.Once); + } - Assert.AreEqual(2, events.Count); - Assert.AreEqual("close", events[0]); - Assert.AreEqual("complete", events[1]); - } + [TestMethod] + public void HandleDiscoveryCompleteShouldCloseDiscoveryManagerBeforeRaiseDiscoveryComplete() + { + var events = new List(); + _discoveryManager.Setup(dm => dm.Close()).Callback(() => events.Add("close")); + _discoveryRequest.OnDiscoveryComplete += (s, e) => events.Add("complete"); + var eventsHandler = _discoveryRequest as ITestDiscoveryEventsHandler2; - /// - /// DiscoverAsync should invoke OnDiscoveryStart event. - /// - [TestMethod] - public void DiscoverAsyncShouldInvokeOnDiscoveryStart() - { - bool onDiscoveryStartHandlerCalled = false; - this.discoveryRequest.OnDiscoveryStart += (s, e) => onDiscoveryStartHandlerCalled = true; + eventsHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(1, false), []); - // Action - this.discoveryRequest.DiscoverAsync(); + Assert.AreEqual(2, events.Count); + Assert.AreEqual("close", events[0]); + Assert.AreEqual("complete", events[1]); + } - // Assert - Assert.IsTrue(onDiscoveryStartHandlerCalled, "DiscoverAsync should invoke OnDiscoveryStart event"); - } + /// + /// DiscoverAsync should invoke OnDiscoveryStart event. + /// + [TestMethod] + public void DiscoverAsyncShouldInvokeOnDiscoveryStart() + { + bool onDiscoveryStartHandlerCalled = false; + _discoveryRequest.OnDiscoveryStart += (s, e) => onDiscoveryStartHandlerCalled = true; - [TestMethod] - public void DiscoverAsyncShouldInvokeHandleDiscoveryStartofLoggerManager() - { - // Action - this.discoveryRequest.DiscoverAsync(); + // Action + _discoveryRequest.DiscoverAsync(); - // Assert - loggerManager.Verify(lm => lm.HandleDiscoveryStart(It.IsAny()), Times.Once); - } + // Assert + Assert.IsTrue(onDiscoveryStartHandlerCalled, "DiscoverAsync should invoke OnDiscoveryStart event"); + } - [TestMethod] - public void HandleDiscoveryCompleteShouldCollectMetrics() + [TestMethod] + public void DiscoverAsyncShouldInvokeHandleDiscoveryStartofLoggerManager() + { + // Action + _discoveryRequest.DiscoverAsync(); + + // Assert + _loggerManager.Verify(lm => lm.HandleDiscoveryStart(It.IsAny()), Times.Once); + } + + [TestMethod] + public void HandleDiscoveryCompleteShouldCollectMetrics() + { + var mockMetricsCollector = new Mock(); + var dict = new Dictionary { - var mockMetricsCollector = new Mock(); - var dict = new Dictionary(); - dict.Add("DummyMessage", "DummyValue"); + { "DummyMessage", "DummyValue" } + }; - mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - var eventsHandler = this.discoveryRequest as ITestDiscoveryEventsHandler2; - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); - discoveryCompleteEventArgs.Metrics = dict; + var eventsHandler = _discoveryRequest as ITestDiscoveryEventsHandler2; + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); + discoveryCompleteEventArgs.Metrics = dict; - // Act - eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, Enumerable.Empty()); + // Act + eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, []); - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenInSecForDiscovery, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add("DummyMessage", "DummyValue"), Times.Once); - } + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenInSecForDiscovery, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add("DummyMessage", "DummyValue"), Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldHandleRawMessage() - { - bool onDiscoveryCompleteInvoked = false; - this.discoveryRequest.OnRawMessageReceived += (object sender, string e) => - { - onDiscoveryCompleteInvoked = true; - }; + [TestMethod] + public void HandleRawMessageShouldHandleRawMessage() + { + bool onDiscoveryCompleteInvoked = false; + _discoveryRequest.OnRawMessageReceived += (object? sender, string e) => onDiscoveryCompleteInvoked = true; - this.discoveryRequest.HandleRawMessage(string.Empty); + _discoveryRequest.HandleRawMessage(string.Empty); - Assert.IsTrue(onDiscoveryCompleteInvoked); - } + Assert.IsTrue(onDiscoveryCompleteInvoked); + } - [TestMethod] - public void HandleRawMessageShouldAddVSTestDataPointsIfTelemetryOptedIn() - { - bool onDiscoveryCompleteInvoked = true; - this.mockRequestData.Setup(x => x.IsTelemetryOptedIn).Returns(true); - this.discoveryRequest.OnRawMessageReceived += (object sender, string e) => - { - onDiscoveryCompleteInvoked = true; - }; + [TestMethod] + public void HandleRawMessageShouldAddVsTestDataPointsIfTelemetryOptedIn() + { + bool onDiscoveryCompleteInvoked = true; + _mockRequestData.Setup(x => x.IsTelemetryOptedIn).Returns(true); + _discoveryRequest.OnRawMessageReceived += (object? sender, string e) => onDiscoveryCompleteInvoked = true; - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.DiscoveryComplete }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.DiscoveryComplete }); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new DiscoveryCompletePayload()); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new DiscoveryCompletePayload()); - this.discoveryRequest.HandleRawMessage(string.Empty); + _discoveryRequest.HandleRawMessage(string.Empty); - this.mockDataSerializer.Verify(x => x.SerializePayload(It.IsAny(), It.IsAny()), Times.Once); - this.mockRequestData.Verify(x => x.MetricsCollection, Times.AtLeastOnce); - Assert.IsTrue(onDiscoveryCompleteInvoked); - } + _mockDataSerializer.Verify(x => x.SerializePayload(It.IsAny(), It.IsAny()), Times.Once); + _mockRequestData.Verify(x => x.MetricsCollection, Times.AtLeastOnce); + Assert.IsTrue(onDiscoveryCompleteInvoked); + } - [TestMethod] - public void HandleRawMessageShouldInvokeHandleDiscoveryCompleteOfLoggerManager() - { - this.loggerManager.Setup(x => x.LoggersInitialized).Returns(true); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.DiscoveryComplete }); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new DiscoveryCompletePayload() - { - TotalTests = 1, - IsAborted = false, - LastDiscoveredTests = Enumerable.Empty() - }); - - this.discoveryRequest.HandleRawMessage(string.Empty); - - this.loggerManager.Verify(lm => lm.HandleDiscoveryComplete(It.IsAny()), Times.Once); - } + [TestMethod] + public void HandleRawMessageShouldInvokeHandleDiscoveryCompleteOfLoggerManager() + { + _loggerManager.Setup(x => x.LoggersInitialized).Returns(true); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.DiscoveryComplete }); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new DiscoveryCompletePayload() + { + TotalTests = 1, + IsAborted = false, + LastDiscoveredTests = [] + }); - [TestMethod] - public void HandleDiscoveryCompleteShouldInvokeHandleDiscoveryCompleteOfLoggerManager() - { - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); - var eventsHandler = this.discoveryRequest as ITestDiscoveryEventsHandler2; - eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, Enumerable.Empty()); + _discoveryRequest.HandleRawMessage(string.Empty); - loggerManager.Verify(lm => lm.HandleDiscoveryComplete(discoveryCompleteEventArgs), Times.Once); - } + _loggerManager.Verify(lm => lm.HandleDiscoveryComplete(It.IsAny()), Times.Once); + } - [TestMethod] - public void HandleDiscoveryCompleteShouldNotInvokeHandleDiscoveredTestsIfLastChunkNotPresent() - { - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); - var eventsHandler = this.discoveryRequest as ITestDiscoveryEventsHandler2; - eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, Enumerable.Empty()); + [TestMethod] + public void HandleDiscoveryCompleteShouldInvokeHandleDiscoveryCompleteOfLoggerManager() + { + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); + var eventsHandler = _discoveryRequest as ITestDiscoveryEventsHandler2; + eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, []); - loggerManager.Verify(lm => lm.HandleDiscoveredTests(It.IsAny()), Times.Never); - } + _loggerManager.Verify(lm => lm.HandleDiscoveryComplete(discoveryCompleteEventArgs), Times.Once); + } - [TestMethod] - public void HandleDiscoveryCompleteShouldInvokeHandleDiscoveredTestsIfLastChunkPresent() + [TestMethod] + public void HandleDiscoveryCompleteShouldNotInvokeHandleDiscoveredTestsIfLastChunkNotPresent() + { + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); + var eventsHandler = _discoveryRequest as ITestDiscoveryEventsHandler2; + eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, []); + + _loggerManager.Verify(lm => lm.HandleDiscoveredTests(It.IsAny()), Times.Never); + } + + [TestMethod] + public void HandleDiscoveryCompleteShouldInvokeHandleDiscoveredTestsIfLastChunkPresent() + { + var activeTestCases = new List { - var activeTestCases = new List - { - new ObjectModel.TestCase( - "A.C.M2", - new Uri("executor://dummy"), - "A") - }; + new( + "A.C.M2", + new Uri("executor://dummy"), + "A") + }; - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); - var eventsHandler = this.discoveryRequest as ITestDiscoveryEventsHandler2; - eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, activeTestCases); + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(1, false); + var eventsHandler = _discoveryRequest as ITestDiscoveryEventsHandler2; + eventsHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, activeTestCases); - loggerManager.Verify(lm => lm.HandleDiscoveredTests(It.IsAny()), Times.Once); - } + _loggerManager.Verify(lm => lm.HandleDiscoveredTests(It.IsAny()), Times.Once); + } - [TestMethod] - public void HandleDiscoveredTestsShouldInvokeHandleDiscoveredTestsOfLoggerManager() - { - discoveryRequest.HandleDiscoveredTests(null); + [TestMethod] + public void HandleDiscoveredTestsShouldInvokeHandleDiscoveredTestsOfLoggerManager() + { + _discoveryRequest.HandleDiscoveredTests(null); - loggerManager.Verify(lm => lm.HandleDiscoveredTests(It.IsAny()), Times.Once); - } + _loggerManager.Verify(lm => lm.HandleDiscoveredTests(It.IsAny()), Times.Once); } } diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/Execution/TestRunRequestTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/Execution/TestRunRequestTests.cs index 55745d4e82..d77e39fda6 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/Execution/TestRunRequestTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/Execution/TestRunRequestTests.cs @@ -1,678 +1,663 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.Execution +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.Client.Execution; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.Execution; + +[TestClass] +public class TestRunRequestTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading; + private TestRunRequest _testRunRequest; + private Mock _executionManager; + private readonly Mock _loggerManager; + private TestRunCriteria _testRunCriteria; + private readonly Mock _mockRequestData; - using Client.Execution; + private readonly Mock _mockDataSerializer; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using ObjectModel; - using ObjectModel.Client; - using ObjectModel.Engine; - using System.Collections.ObjectModel; - - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; + public TestRunRequestTests() + { + _testRunCriteria = new TestRunCriteria(new List { "foo" }, 1); + _executionManager = new Mock(); + _loggerManager = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _mockDataSerializer = new Mock(); + _testRunRequest = new TestRunRequest(_mockRequestData.Object, _testRunCriteria, _executionManager.Object, _loggerManager.Object, _mockDataSerializer.Object); + } - [TestClass] - public class TestRunRequestTests + [TestMethod] + public void ConstructorSetsTestRunCriteriaExecutionManagerAndState() { - TestRunRequest testRunRequest; - Mock executionManager; - private readonly Mock loggerManager; - TestRunCriteria testRunCriteria; - private Mock mockRequestData; + Assert.AreEqual(TestRunState.Pending, _testRunRequest.State); + Assert.AreEqual(_testRunCriteria, _testRunRequest.TestRunConfiguration); + Assert.AreEqual(_executionManager.Object, _testRunRequest.ExecutionManager); + } - private Mock mockDataSerializer; + [TestMethod] + public void ExecuteAsycIfTestRunRequestIsDisposedThrowsObjectDisposedException() + { + _testRunRequest.Dispose(); - public TestRunRequestTests() - { - testRunCriteria = new TestRunCriteria(new List { "foo" }, 1); - executionManager = new Mock(); - this.loggerManager = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); - this.mockDataSerializer = new Mock(); - testRunRequest = new TestRunRequest(this.mockRequestData.Object, testRunCriteria, executionManager.Object, loggerManager.Object, this.mockDataSerializer.Object); - } + Assert.ThrowsException(() => _testRunRequest.ExecuteAsync()); + } - [TestMethod] - public void ConstructorSetsTestRunCriteriaExecutionManagerAndState() - { - Assert.AreEqual(TestRunState.Pending, testRunRequest.State); - Assert.AreEqual(testRunCriteria, testRunRequest.TestRunConfiguration); - Assert.AreEqual(executionManager.Object, testRunRequest.ExecutionManager); - } + [TestMethod] + public void ExecuteAsycIfStateIsNotPendingThrowsInvalidOperationException() + { + _testRunRequest.ExecuteAsync(); + Assert.ThrowsException(() => _testRunRequest.ExecuteAsync()); + } - [TestMethod] - public void ExecuteAsycIfTestRunRequestIsDisposedThrowsObjectDisposedException() - { - testRunRequest.Dispose(); + [TestMethod] + public void ExecuteAsyncSetsStateToInProgressAndCallManagerToStartTestRun() + { + _testRunRequest.ExecuteAsync(); - Assert.ThrowsException(() => testRunRequest.ExecuteAsync()); - } + Assert.AreEqual(TestRunState.InProgress, _testRunRequest.State); + _executionManager.Verify(em => em.StartTestRun(_testRunCriteria, _testRunRequest), Times.Once); + } - [TestMethod] - public void ExecuteAsycIfStateIsNotPendingThrowsInvalidOperationException() + [TestMethod] + public void ExecuteAsyncIfStartTestRunThrowsExceptionSetsStateToPendingAndThrowsThatException() + { + _executionManager.Setup(em => em.StartTestRun(_testRunCriteria, _testRunRequest)).Throws(new Exception("DummyException")); + try { - testRunRequest.ExecuteAsync(); - Assert.ThrowsException(() => testRunRequest.ExecuteAsync()); + _testRunRequest.ExecuteAsync(); } - - [TestMethod] - public void ExecuteAsyncSetsStateToInProgressAndCallManagerToStartTestRun() + catch (Exception ex) { - testRunRequest.ExecuteAsync(); - - Assert.AreEqual(TestRunState.InProgress, testRunRequest.State); - executionManager.Verify(em => em.StartTestRun(testRunCriteria, testRunRequest), Times.Once); + Assert.IsTrue(ex is not null); + Assert.AreEqual("DummyException", ex.Message); + Assert.AreEqual(TestRunState.Pending, _testRunRequest.State); } + } - [TestMethod] - public void ExecuteAsyncIfStartTestRunThrowsExceptionSetsStateToPendingAndThrowsThatException() - { - executionManager.Setup(em => em.StartTestRun(testRunCriteria, testRunRequest)).Throws(new Exception("DummyException")); - try - { - testRunRequest.ExecuteAsync(); - } - catch (Exception ex) - { - Assert.IsTrue(ex is Exception); - Assert.AreEqual("DummyException", ex.Message); - Assert.AreEqual(TestRunState.Pending, testRunRequest.State); - } - } + [TestMethod] + public void AbortIfTestRunRequestDisposedShouldNotThrowException() + { + _testRunRequest.Dispose(); + _testRunRequest.Abort(); + } - [TestMethod] - public void AbortIfTestRunRequestDisposedShouldNotThrowException() - { - testRunRequest.Dispose(); - testRunRequest.Abort(); - } + [TestMethod] + public void AbortIfTestRunStateIsNotInProgressShouldNotCallExecutionManagerAbort() + { + //ExecuteAsync has not been called, so State is not InProgress + _testRunRequest.Abort(); + _executionManager.Verify(dm => dm.Abort(It.IsAny()), Times.Never); + } - [TestMethod] - public void AbortIfTestRunStateIsNotInProgressShouldNotCallExecutionManagerAbort() - { - //ExecuteAsync has not been called, so State is not InProgress - testRunRequest.Abort(); - executionManager.Verify(dm => dm.Abort(It.IsAny()), Times.Never); - } + [TestMethod] + public void AbortIfDiscoveryIsinProgressShouldCallDiscoveryManagerAbort() + { + // Set the State to InProgress + _testRunRequest.ExecuteAsync(); - [TestMethod] - public void AbortIfDiscoveryIsinProgressShouldCallDiscoveryManagerAbort() - { - // Set the State to InProgress - testRunRequest.ExecuteAsync(); + _testRunRequest.Abort(); + _executionManager.Verify(dm => dm.Abort(It.IsAny()), Times.Once); + } - testRunRequest.Abort(); - executionManager.Verify(dm => dm.Abort(It.IsAny()), Times.Once); - } + [TestMethod] + public void WaitForCompletionIfTestRunRequestDisposedShouldThrowObjectDisposedException() + { + _testRunRequest.Dispose(); + Assert.ThrowsException(() => _testRunRequest.WaitForCompletion()); + } - [TestMethod] - public void WaitForCompletionIfTestRunRequestDisposedShouldThrowObjectDisposedException() - { - testRunRequest.Dispose(); - Assert.ThrowsException(() => testRunRequest.WaitForCompletion()); - } + [TestMethod] + public void WaitForCompletionIfTestRunStatePendingShouldThrowInvalidOperationException() + { + Assert.ThrowsException(() => _testRunRequest.WaitForCompletion()); + } - [TestMethod] - public void WaitForCompletionIfTestRunStatePendingShouldThrowInvalidOperationException() - { - Assert.ThrowsException(() => testRunRequest.WaitForCompletion()); - } + [TestMethod] + public void CancelAsyncIfTestRunRequestDisposedShouldNotThrowException() + { + _testRunRequest.Dispose(); + _testRunRequest.CancelAsync(); + } - [TestMethod] - public void CancelAsyncIfTestRunRequestDisposedShouldNotThrowException() - { - testRunRequest.Dispose(); - testRunRequest.CancelAsync(); - } + [TestMethod] + public void CancelAsyncIfTestRunStateNotInProgressWillNotCallExecutionManagerCancel() + { + _testRunRequest.CancelAsync(); + _executionManager.Verify(dm => dm.Cancel(It.IsAny()), Times.Never); + } - [TestMethod] - public void CancelAsyncIfTestRunStateNotInProgressWillNotCallExecutionManagerCancel() - { - testRunRequest.CancelAsync(); - executionManager.Verify(dm => dm.Cancel(It.IsAny()), Times.Never); - } + [TestMethod] + public void CancelAsyncIfTestRunStateInProgressCallsExecutionManagerCancel() + { + _testRunRequest.ExecuteAsync(); + _testRunRequest.CancelAsync(); + _executionManager.Verify(dm => dm.Cancel(It.IsAny()), Times.Once); + } - [TestMethod] - public void CancelAsyncIfTestRunStateInProgressCallsExecutionManagerCancel() - { - testRunRequest.ExecuteAsync(); - testRunRequest.CancelAsync(); - executionManager.Verify(dm => dm.Cancel(It.IsAny()), Times.Once); - } + [TestMethod] + public void OnTestSessionTimeoutShouldCallAbort() + { + _testRunRequest.ExecuteAsync(); + _testRunRequest.OnTestSessionTimeout(null); + _executionManager.Verify(o => o.Abort(It.IsAny()), Times.Once); + } - [TestMethod] - public void OnTestSessionTimeoutShouldCallAbort() - { - this.testRunRequest.ExecuteAsync(); - this.testRunRequest.OnTestSessionTimeout(null); - this.executionManager.Verify(o => o.Abort(It.IsAny()), Times.Once); - } + [TestMethod] + public void OnTestSessionTimeoutShouldLogMessage() + { + bool handleLogMessageCalled = false; + bool handleRawMessageCalled = false; - [TestMethod] - public void OnTestSessionTimeoutShouldLogMessage() - { - bool handleLogMessageCalled = false; - bool handleRawMessageCalled = false; + _mockDataSerializer + .Setup(s => s.SerializePayload(It.IsAny(), It.IsAny())) + .Returns("non-empty rawMessage"); - this.testRunRequest.TestRunMessage += (object sender, TestRunMessageEventArgs e) => - { - handleLogMessageCalled = true; - }; + _testRunRequest.TestRunMessage += (object? sender, TestRunMessageEventArgs e) => handleLogMessageCalled = true; - this.testRunRequest.OnRawMessageReceived += (object sender, string message) => - { - handleRawMessageCalled = true; - }; + _testRunRequest.OnRawMessageReceived += (object? sender, string message) => handleRawMessageCalled = true; - this.testRunRequest.OnTestSessionTimeout(null); + _testRunRequest.OnTestSessionTimeout(null); - Assert.IsTrue(handleLogMessageCalled, "OnTestSessionTimeout should call HandleLogMessage"); - Assert.IsTrue(handleRawMessageCalled, "OnTestSessionTimeout should call HandleRawMessage"); - } + Assert.IsTrue(handleLogMessageCalled, "OnTestSessionTimeout should call HandleLogMessage"); + Assert.IsTrue(handleRawMessageCalled, "OnTestSessionTimeout should call HandleRawMessage"); + } - [TestMethod] - public void OnTestSessionTimeoutShouldGetCalledWhenExecutionCrossedTestSessionTimeout() - { - string settingsXml = - @" + [TestMethod] + public void OnTestSessionTimeoutShouldGetCalledWhenExecutionCrossedTestSessionTimeout() + { + string settingsXml = + @" 1000 "; - var testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, true, settingsXml); - var executionManager = new Mock(); - var testRunRequest = new TestRunRequest(this.mockRequestData.Object, testRunCriteria, executionManager.Object, loggerManager.Object); + var testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, true, settingsXml); + var executionManager = new Mock(); + var testRunRequest = new TestRunRequest(_mockRequestData.Object, testRunCriteria, executionManager.Object, _loggerManager.Object); - ManualResetEvent onTestSessionTimeoutCalled = new ManualResetEvent(true); - onTestSessionTimeoutCalled.Reset(); - executionManager.Setup(o => o.Abort(It.IsAny())).Callback(() => onTestSessionTimeoutCalled.Set()); + ManualResetEvent onTestSessionTimeoutCalled = new(true); + onTestSessionTimeoutCalled.Reset(); + executionManager.Setup(o => o.Abort(It.IsAny())).Callback(() => onTestSessionTimeoutCalled.Set()); - testRunRequest.ExecuteAsync(); - onTestSessionTimeoutCalled.WaitOne(20 * 1000); + testRunRequest.ExecuteAsync(); + onTestSessionTimeoutCalled.WaitOne(20 * 1000); - executionManager.Verify(o => o.Abort(It.IsAny()), Times.Once); - } + executionManager.Verify(o => o.Abort(It.IsAny()), Times.Once); + } - /// - /// Test session timeout should be infinity if TestSessionTimeout is 0. - /// - [TestMethod] - public void OnTestSessionTimeoutShouldNotGetCalledWhenTestSessionTimeoutIsZero() - { - string settingsXml = - @" + /// + /// Test session timeout should be infinity if TestSessionTimeout is 0. + /// + [TestMethod] + public void OnTestSessionTimeoutShouldNotGetCalledWhenTestSessionTimeoutIsZero() + { + string settingsXml = + @" 0 "; - var testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, true, settingsXml); - var executionManager = new Mock(); - var testRunRequest = new TestRunRequest(this.mockRequestData.Object, testRunCriteria, executionManager.Object, loggerManager.Object); + var testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, true, settingsXml); + var executionManager = new Mock(); + var testRunRequest = new TestRunRequest(_mockRequestData.Object, testRunCriteria, executionManager.Object, _loggerManager.Object); - executionManager.Setup(o => o.StartTestRun(It.IsAny(), It.IsAny())).Callback(() => System.Threading.Thread.Sleep(5 * 1000)); + executionManager.Setup(o => o.StartTestRun(It.IsAny(), It.IsAny())).Callback(() => Thread.Sleep(5 * 1000)); - testRunRequest.ExecuteAsync(); + testRunRequest.ExecuteAsync(); - executionManager.Verify(o => o.Abort(It.IsAny()), Times.Never); - } + executionManager.Verify(o => o.Abort(It.IsAny()), Times.Never); + } - [TestMethod] - public void HandleTestRunStatsChangeShouldInvokeListenersWithTestRunChangedEventArgs() - { - var mockStats = new Mock(); - - var testResults = new List - { - new ObjectModel.TestResult( - new ObjectModel.TestCase( - "A.C.M", - new Uri("executor://dummy"), - "A")) - }; - var activeTestCases = new List - { - new ObjectModel.TestCase( - "A.C.M2", - new Uri("executor://dummy"), - "A") - }; - var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); - TestRunChangedEventArgs receivedArgs = null; - - testRunRequest.OnRunStatsChange += (object sender, TestRunChangedEventArgs e) => - { - receivedArgs = e; - }; - - // Act. - testRunRequest.HandleTestRunStatsChange(testRunChangedEventArgs); - - // Assert. - Assert.IsNotNull(receivedArgs); - Assert.AreEqual(testRunChangedEventArgs.TestRunStatistics, receivedArgs.TestRunStatistics); - CollectionAssert.AreEqual( - testRunChangedEventArgs.NewTestResults.ToList(), - receivedArgs.NewTestResults.ToList()); - CollectionAssert.AreEqual(testRunChangedEventArgs.ActiveTests.ToList(), receivedArgs.ActiveTests.ToList()); - } + [TestMethod] + public void HandleTestRunStatsChangeShouldInvokeListenersWithTestRunChangedEventArgs() + { + var mockStats = new Mock(); - [TestMethod] - public void HandleRawMessageShouldCallOnRawMessageReceived() + var testResults = new List { - string rawMessage = "HelloWorld"; - string messageReceived = null; - - // Call should NOT fail even if on raw message received is not registered. - testRunRequest.HandleRawMessage(rawMessage); + new( + new TestCase( + "A.C.M", + new Uri("executor://dummy"), + "A")) + }; + var activeTestCases = new List + { + new( + "A.C.M2", + new Uri("executor://dummy"), + "A") + }; + var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); + TestRunChangedEventArgs? receivedArgs = null; + + _testRunRequest.OnRunStatsChange += (object? sender, TestRunChangedEventArgs e) => receivedArgs = e; + + // Act. + _testRunRequest.HandleTestRunStatsChange(testRunChangedEventArgs); + + // Assert. + Assert.IsNotNull(receivedArgs); + Assert.AreEqual(testRunChangedEventArgs.TestRunStatistics, receivedArgs.TestRunStatistics); + CollectionAssert.AreEqual( + testRunChangedEventArgs.NewTestResults!.ToList(), + receivedArgs.NewTestResults!.ToList()); + CollectionAssert.AreEqual(testRunChangedEventArgs.ActiveTests!.ToList(), receivedArgs.ActiveTests!.ToList()); + } - EventHandler handler = (sender, e) => { messageReceived = e; }; - testRunRequest.OnRawMessageReceived += handler; + [TestMethod] + public void HandleRawMessageShouldCallOnRawMessageReceived() + { + string rawMessage = "HelloWorld"; + string? messageReceived = null; - testRunRequest.HandleRawMessage(rawMessage); + // Call should NOT fail even if on raw message received is not registered. + _testRunRequest.HandleRawMessage(rawMessage); - Assert.AreEqual(rawMessage, messageReceived, "RunRequest should just pass the message as is."); - testRunRequest.OnRawMessageReceived -= handler; - } + EventHandler handler = (sender, e) => messageReceived = e; + _testRunRequest.OnRawMessageReceived += handler; - [TestMethod] - public void HandleRawMessageShouldAddVSTestDataPointsIfTelemetryOptedIn() - { - bool onDiscoveryCompleteInvoked = true; - this.mockRequestData.Setup(x => x.IsTelemetryOptedIn).Returns(true); - this.testRunRequest.OnRawMessageReceived += (object sender, string e) => - { - onDiscoveryCompleteInvoked = true; - }; - - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() - { - TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.MinValue) - }); - - this.testRunRequest.HandleRawMessage(string.Empty); - - this.mockDataSerializer.Verify(x => x.SerializePayload(It.IsAny(), It.IsAny()), Times.Once); - this.mockRequestData.Verify(x => x.MetricsCollection, Times.AtLeastOnce); - Assert.IsTrue(onDiscoveryCompleteInvoked); - } + _testRunRequest.HandleRawMessage(rawMessage); - [TestMethod] - public void HandleRawMessageShouldInvokeHandleTestRunCompleteOfLoggerManager() - { - this.loggerManager.Setup(x => x.LoggersInitialized).Returns(true); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - - var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, - null, TimeSpan.FromSeconds(0)); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() - { - TestRunCompleteArgs = testRunCompleteEvent - }); - - this.testRunRequest.ExecuteAsync(); - this.testRunRequest.HandleRawMessage(string.Empty); - - this.loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); - } + Assert.AreEqual(rawMessage, messageReceived, "RunRequest should just pass the message as is."); + _testRunRequest.OnRawMessageReceived -= handler; + } - [TestMethod] - public void HandleRawMessageShouldNotInvokeHandleTestRunCompleteOfLoggerManagerWhenNoLoggersInitiailized() - { - this.loggerManager.Setup(x => x.LoggersInitialized).Returns(false); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - - var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, - null, TimeSpan.FromSeconds(0)); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() - { - TestRunCompleteArgs = testRunCompleteEvent - }); - - this.testRunRequest.ExecuteAsync(); - this.testRunRequest.HandleRawMessage(string.Empty); - - this.loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Never); - } + [TestMethod] + public void HandleRawMessageShouldAddVsTestDataPointsIfTelemetryOptedIn() + { + bool onDiscoveryCompleteInvoked = true; + _mockRequestData.Setup(x => x.IsTelemetryOptedIn).Returns(true); + _testRunRequest.OnRawMessageReceived += (object? sender, string e) => onDiscoveryCompleteInvoked = true; - [TestMethod] - public void HandleRawMessageShouldInvokeShouldInvokeHandleTestRunStatsChangeOfLoggerManagerWhenLastChunkAvailable() - { - var mockStats = new Mock(); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - var testResults = new List + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() { - new ObjectModel.TestResult( - new ObjectModel.TestCase( - "A.C.M", - new Uri("executor://dummy"), - "A")) - }; - var activeTestCases = new List - { - new ObjectModel.TestCase( - "A.C.M2", - new Uri("executor://dummy"), - "A") - }; - - this.loggerManager.Setup(x => x.LoggersInitialized).Returns(true); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.MinValue) + }); - var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); - var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, - null, TimeSpan.FromSeconds(0)); + _testRunRequest.HandleRawMessage(string.Empty); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() - { - TestRunCompleteArgs = testRunCompleteEvent, - LastRunTests = testRunChangedEventArgs - }); + _mockDataSerializer.Verify(x => x.SerializePayload(It.IsAny(), It.IsAny()), Times.Once); + _mockRequestData.Verify(x => x.MetricsCollection, Times.AtLeastOnce); + Assert.IsTrue(onDiscoveryCompleteInvoked); + } - this.testRunRequest.ExecuteAsync(); - this.testRunRequest.HandleRawMessage(string.Empty); + [TestMethod] + public void HandleRawMessageShouldInvokeHandleTestRunCompleteOfLoggerManager() + { + _loggerManager.Setup(x => x.LoggersInitialized).Returns(true); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + + var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, + null, TimeSpan.FromSeconds(0)); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() + { + TestRunCompleteArgs = testRunCompleteEvent + }); - loggerManager.Verify(lm => lm.HandleTestRunStatsChange(testRunChangedEventArgs), Times.Once); - loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); - } + _testRunRequest.ExecuteAsync(); + _testRunRequest.HandleRawMessage(string.Empty); - [TestMethod] - public void HandleTestRunStatsChangeShouldInvokeHandleTestRunStatsChangeOfLoggerManager() - { - var mockStats = new Mock(); + _loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); + } - var testResults = new List - { - new ObjectModel.TestResult( - new ObjectModel.TestCase( - "A.C.M", - new Uri("executor://dummy"), - "A")) - }; - var activeTestCases = new List + [TestMethod] + public void HandleRawMessageShouldNotInvokeHandleTestRunCompleteOfLoggerManagerWhenNoLoggersInitiailized() + { + _loggerManager.Setup(x => x.LoggersInitialized).Returns(false); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + + var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, + null, TimeSpan.FromSeconds(0)); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() { - new ObjectModel.TestCase( - "A.C.M2", - new Uri("executor://dummy"), - "A") - }; + TestRunCompleteArgs = testRunCompleteEvent + }); - var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); - testRunRequest.HandleTestRunStatsChange(testRunChangedEventArgs); + _testRunRequest.ExecuteAsync(); + _testRunRequest.HandleRawMessage(string.Empty); - loggerManager.Verify(lm => lm.HandleTestRunStatsChange(testRunChangedEventArgs), Times.Once); - } + _loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Never); + } - [TestMethod] - public void HandleTestRunCompleteShouldInvokeHandleTestRunStatsChangeOfLoggerManagerWhenLastChunkAvailable() - { - var mockStats = new Mock(); + [TestMethod] + public void HandleRawMessageShouldInvokeShouldInvokeHandleTestRunStatsChangeOfLoggerManagerWhenLastChunkAvailable() + { + var mockStats = new Mock(); - var testResults = new List - { - new ObjectModel.TestResult( - new ObjectModel.TestCase( - "A.C.M", - new Uri("executor://dummy"), - "A")) - }; - var activeTestCases = new List - { - new ObjectModel.TestCase( - "A.C.M2", + var testResults = new List + { + new( + new TestCase( + "A.C.M", new Uri("executor://dummy"), - "A") - }; - var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); - var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, - null, TimeSpan.FromSeconds(0)); + "A")) + }; + var activeTestCases = new List + { + new( + "A.C.M2", + new Uri("executor://dummy"), + "A") + }; + + _loggerManager.Setup(x => x.LoggersInitialized).Returns(true); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + + var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); + var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, + null, TimeSpan.FromSeconds(0)); + + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() + { + TestRunCompleteArgs = testRunCompleteEvent, + LastRunTests = testRunChangedEventArgs + }); - testRunRequest.ExecuteAsync(); - testRunRequest.HandleTestRunComplete(testRunCompleteEvent, testRunChangedEventArgs, null, null); + _testRunRequest.ExecuteAsync(); + _testRunRequest.HandleRawMessage(string.Empty); - loggerManager.Verify(lm => lm.HandleTestRunStatsChange(testRunChangedEventArgs), Times.Once); - loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); - } + _loggerManager.Verify(lm => lm.HandleTestRunStatsChange(testRunChangedEventArgs), Times.Once); + _loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); + } + + [TestMethod] + public void HandleTestRunStatsChangeShouldInvokeHandleTestRunStatsChangeOfLoggerManager() + { + var mockStats = new Mock(); - [TestMethod] - public void HandleTestRunCompleteShouldInvokeHandleTestRunCompleteOfLoggerManager() + var testResults = new List + { + new( + new TestCase( + "A.C.M", + new Uri("executor://dummy"), + "A")) + }; + var activeTestCases = new List { - var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, - null, TimeSpan.FromSeconds(0)); + new( + "A.C.M2", + new Uri("executor://dummy"), + "A") + }; - testRunRequest.ExecuteAsync(); - testRunRequest.HandleTestRunComplete(testRunCompleteEvent, null, null, null); + var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); + _testRunRequest.HandleTestRunStatsChange(testRunChangedEventArgs); - loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); - } + _loggerManager.Verify(lm => lm.HandleTestRunStatsChange(testRunChangedEventArgs), Times.Once); + } - [TestMethod] - public void HandleLogMessageShouldInvokeHandleLogMessageOfLoggerManager() - { - testRunRequest.HandleLogMessage(TestMessageLevel.Error, "hello"); - loggerManager.Verify(lm => lm.HandleTestRunMessage(It.IsAny()), Times.Once); - } + [TestMethod] + public void HandleTestRunCompleteShouldInvokeHandleTestRunStatsChangeOfLoggerManagerWhenLastChunkAvailable() + { + var mockStats = new Mock(); - [TestMethod] - public void HandleTestRunCompleteShouldCollectMetrics() + var testResults = new List { - var mockMetricsCollector = new Mock(); - var dict = new Dictionary(); - dict.Add("DummyMessage", "DummyValue"); - - mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - - this.testRunRequest.ExecuteAsync(); - var testRunCompeleteEventsArgs = new TestRunCompleteEventArgs( - new TestRunStatistics(1, null), - false, - false, - null, - null, - TimeSpan.FromSeconds(0)); - testRunCompeleteEventsArgs.Metrics = dict; - - // Act - this.testRunRequest.HandleTestRunComplete(testRunCompeleteEventsArgs, null, null, null); - - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenInSecForRun, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add("DummyMessage", "DummyValue"), Times.Once); - } + new( + new TestCase( + "A.C.M", + new Uri("executor://dummy"), + "A")) + }; + var activeTestCases = new List + { + new( + "A.C.M2", + new Uri("executor://dummy"), + "A") + }; + var testRunChangedEventArgs = new TestRunChangedEventArgs(mockStats.Object, testResults, activeTestCases); + var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, + null, TimeSpan.FromSeconds(0)); + + _testRunRequest.ExecuteAsync(); + _testRunRequest.HandleTestRunComplete(testRunCompleteEvent, testRunChangedEventArgs, null, null); + + _loggerManager.Verify(lm => lm.HandleTestRunStatsChange(testRunChangedEventArgs), Times.Once); + _loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); + } - [TestMethod] - public void HandleTestRunCompleteShouldHandleListAttachments() - { - bool attachmentsFound = false; - this.testRunRequest.OnRunCompletion += (s, e) => - { - attachmentsFound = e.AttachmentSets != null && e.AttachmentSets.Count == 1; - }; - - List attachmentSets = new List { new AttachmentSet(new Uri("datacollector://attachment"), "datacollectorAttachment") }; - - this.testRunRequest.ExecuteAsync(); - var testRunCompeleteEventsArgs = new TestRunCompleteEventArgs( - new TestRunStatistics(1, null), - false, - false, - null, - null, - TimeSpan.FromSeconds(0)); - - // Act - this.testRunRequest.HandleTestRunComplete(testRunCompeleteEventsArgs, null, attachmentSets, null); - - // Verify. - Assert.IsTrue(attachmentsFound); - } + [TestMethod] + public void HandleTestRunCompleteShouldInvokeHandleTestRunCompleteOfLoggerManager() + { + var testRunCompleteEvent = new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, + null, TimeSpan.FromSeconds(0)); - [TestMethod] - public void HandleTestRunCompleteShouldHandleCollectionAttachments() - { - bool attachmentsFound = false; - this.testRunRequest.OnRunCompletion += (s, e) => - { - attachmentsFound = e.AttachmentSets != null && e.AttachmentSets.Count == 1; - }; + _testRunRequest.ExecuteAsync(); + _testRunRequest.HandleTestRunComplete(testRunCompleteEvent, null, null, null); - Collection attachmentSets = new Collection(new List { new AttachmentSet(new Uri("datacollector://attachment"), "datacollectorAttachment") }); + _loggerManager.Verify(lm => lm.HandleTestRunComplete(It.IsAny()), Times.Once); + } - this.testRunRequest.ExecuteAsync(); - var testRunCompeleteEventsArgs = new TestRunCompleteEventArgs( - new TestRunStatistics(1, null), - false, - false, - null, - null, - TimeSpan.FromSeconds(0)); + [TestMethod] + public void HandleLogMessageShouldInvokeHandleLogMessageOfLoggerManager() + { + _testRunRequest.HandleLogMessage(TestMessageLevel.Error, "hello"); + _loggerManager.Verify(lm => lm.HandleTestRunMessage(It.IsAny()), Times.Once); + } - // Act - this.testRunRequest.HandleTestRunComplete(testRunCompeleteEventsArgs, null, attachmentSets, null); + [TestMethod] + public void HandleTestRunCompleteShouldCollectMetrics() + { + var mockMetricsCollector = new Mock(); + var dict = new Dictionary + { + { "DummyMessage", "DummyValue" } + }; + + mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + + _testRunRequest.ExecuteAsync(); + var testRunCompleteEventsArgs = new TestRunCompleteEventArgs( + new TestRunStatistics(1, null), + false, + false, + null, + null, + null, + TimeSpan.FromSeconds(0)); + testRunCompleteEventsArgs.Metrics = dict; + + // Act + _testRunRequest.HandleTestRunComplete(testRunCompleteEventsArgs, null, null, null); + + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenInSecForRun, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add("DummyMessage", "DummyValue"), Times.Once); + } - // Verify. - Assert.IsTrue(attachmentsFound); - } + [TestMethod] + public void HandleTestRunCompleteShouldHandleListAttachments() + { + bool attachmentsFound = false; + _testRunRequest.OnRunCompletion += (s, e) => attachmentsFound = e.AttachmentSets != null && e.AttachmentSets.Count == 1; + + List attachmentSets = [new AttachmentSet(new Uri("datacollector://attachment"), "datacollectorAttachment")]; + + _testRunRequest.ExecuteAsync(); + var testRunCompleteEventsArgs = new TestRunCompleteEventArgs( + new TestRunStatistics(1, null), + false, + false, + null, + null, + null, + TimeSpan.FromSeconds(0)); + + // Act + _testRunRequest.HandleTestRunComplete(testRunCompleteEventsArgs, null, attachmentSets, null); + + // Verify. + Assert.IsTrue(attachmentsFound); + } - [TestMethod] - public void HandleTestRunCompleteShouldHandleEmptyAttachments() - { - bool attachmentsFound = false; - this.testRunRequest.OnRunCompletion += (s, e) => - { - attachmentsFound = (e.AttachmentSets.Count == 0); - }; - - this.testRunRequest.ExecuteAsync(); - var testRunCompeleteEventsArgs = new TestRunCompleteEventArgs( - new TestRunStatistics(1, null), - false, - false, - null, - null, - TimeSpan.FromSeconds(0)); - - // Act - this.testRunRequest.HandleTestRunComplete(testRunCompeleteEventsArgs, null, null, null); - - // Verify. - Assert.IsTrue(attachmentsFound); - } + [TestMethod] + public void HandleTestRunCompleteShouldHandleCollectionAttachments() + { + bool attachmentsFound = false; + _testRunRequest.OnRunCompletion += (s, e) => attachmentsFound = e.AttachmentSets != null && e.AttachmentSets.Count == 1; + + Collection attachmentSets = new(new List { new(new Uri("datacollector://attachment"), "datacollectorAttachment") }); + + _testRunRequest.ExecuteAsync(); + var testRunCompleteEventsArgs = new TestRunCompleteEventArgs( + new TestRunStatistics(1, null), + false, + false, + null, + null, + null, + TimeSpan.FromSeconds(0)); + + // Act + _testRunRequest.HandleTestRunComplete(testRunCompleteEventsArgs, null, attachmentSets, null); + + // Verify. + Assert.IsTrue(attachmentsFound); + } - [TestMethod] - public void HandleTestRunCompleteShouldCloseExecutionManager() - { - var events = new List(); - this.executionManager.Setup(em => em.Close()).Callback(() => events.Add("close")); - this.testRunRequest.OnRunCompletion += (s, e) => events.Add("complete"); - this.testRunRequest.ExecuteAsync(); + [TestMethod] + public void HandleTestRunCompleteShouldHandleEmptyAttachments() + { + bool attachmentsFound = false; + _testRunRequest.OnRunCompletion += (s, e) => attachmentsFound = (e.AttachmentSets.Count == 0); + + _testRunRequest.ExecuteAsync(); + var testRunCompleteEventsArgs = new TestRunCompleteEventArgs( + new TestRunStatistics(1, null), + false, + false, + null, + null, + null, + TimeSpan.FromSeconds(0)); + + // Act + _testRunRequest.HandleTestRunComplete(testRunCompleteEventsArgs, null, null, null); + + // Verify. + Assert.IsTrue(attachmentsFound); + } - this.testRunRequest.HandleTestRunComplete(new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, TimeSpan.FromSeconds(0)), null, null, null); + [TestMethod] + public void HandleTestRunCompleteShouldCloseExecutionManager() + { + var events = new List(); + _executionManager.Setup(em => em.Close()).Callback(() => events.Add("close")); + _testRunRequest.OnRunCompletion += (s, e) => events.Add("complete"); + _testRunRequest.ExecuteAsync(); - Assert.AreEqual(2, events.Count); - Assert.AreEqual("close", events[0]); - Assert.AreEqual("complete", events[1]); - } + _testRunRequest.HandleTestRunComplete(new TestRunCompleteEventArgs(new TestRunStatistics(1, null), false, false, null, null, null, TimeSpan.FromSeconds(0)), null, null, null); - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldNotCallCustomLauncherIfTestRunIsNotInProgress() - { - var mockCustomLauncher = new Mock(); - testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, false, null, TimeSpan.Zero, mockCustomLauncher.Object); - executionManager = new Mock(); - testRunRequest = new TestRunRequest(this.mockRequestData.Object, testRunCriteria, executionManager.Object, loggerManager.Object); + Assert.AreEqual(2, events.Count); + Assert.AreEqual("close", events[0]); + Assert.AreEqual("complete", events[1]); + } - var testProcessStartInfo = new TestProcessStartInfo(); - testRunRequest.LaunchProcessWithDebuggerAttached(testProcessStartInfo); + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldNotCallCustomLauncherIfTestRunIsNotInProgress() + { + var mockCustomLauncher = new Mock(); + _testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, false, null, TimeSpan.Zero, mockCustomLauncher.Object); + _executionManager = new Mock(); + _testRunRequest = new TestRunRequest(_mockRequestData.Object, _testRunCriteria, _executionManager.Object, _loggerManager.Object); - mockCustomLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Never); - } + var testProcessStartInfo = new TestProcessStartInfo(); + _testRunRequest.LaunchProcessWithDebuggerAttached(testProcessStartInfo); - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldNotCallCustomLauncherIfLauncherIsNotDebug() - { - var mockCustomLauncher = new Mock(); - testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, false, null, TimeSpan.Zero, mockCustomLauncher.Object); - executionManager = new Mock(); - testRunRequest = new TestRunRequest(this.mockRequestData.Object, testRunCriteria, executionManager.Object, loggerManager.Object); + mockCustomLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Never); + } - testRunRequest.ExecuteAsync(); + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldNotCallCustomLauncherIfLauncherIsNotDebug() + { + var mockCustomLauncher = new Mock(); + _testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, false, null, TimeSpan.Zero, mockCustomLauncher.Object); + _executionManager = new Mock(); + _testRunRequest = new TestRunRequest(_mockRequestData.Object, _testRunCriteria, _executionManager.Object, _loggerManager.Object); - var testProcessStartInfo = new TestProcessStartInfo(); - testRunRequest.LaunchProcessWithDebuggerAttached(testProcessStartInfo); + _testRunRequest.ExecuteAsync(); - mockCustomLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Never); - } + var testProcessStartInfo = new TestProcessStartInfo(); + _testRunRequest.LaunchProcessWithDebuggerAttached(testProcessStartInfo); - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldCallCustomLauncherIfLauncherIsDebugAndRunInProgress() - { - var mockCustomLauncher = new Mock(); - testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, false, null, TimeSpan.Zero, mockCustomLauncher.Object); - executionManager = new Mock(); - testRunRequest = new TestRunRequest(this.mockRequestData.Object, testRunCriteria, executionManager.Object, loggerManager.Object); + mockCustomLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Never); + } - testRunRequest.ExecuteAsync(); + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldCallCustomLauncherIfLauncherIsDebugAndRunInProgress() + { + var mockCustomLauncher = new Mock(); + _testRunCriteria = new TestRunCriteria(new List { "foo" }, 1, false, null, TimeSpan.Zero, mockCustomLauncher.Object); + _executionManager = new Mock(); + _testRunRequest = new TestRunRequest(_mockRequestData.Object, _testRunCriteria, _executionManager.Object, _loggerManager.Object); - var testProcessStartInfo = new TestProcessStartInfo(); - mockCustomLauncher.Setup(ml => ml.IsDebug).Returns(true); - testRunRequest.LaunchProcessWithDebuggerAttached(testProcessStartInfo); + _testRunRequest.ExecuteAsync(); - mockCustomLauncher.Verify(ml => ml.LaunchTestHost(testProcessStartInfo), Times.Once); - } + var testProcessStartInfo = new TestProcessStartInfo(); + mockCustomLauncher.Setup(ml => ml.IsDebug).Returns(true); + _testRunRequest.LaunchProcessWithDebuggerAttached(testProcessStartInfo); - /// - /// ExecuteAsync should invoke OnRunStart event. - /// - [TestMethod] - public void ExecuteAsyncShouldInvokeOnRunStart() - { - bool onRunStartHandlerCalled = false; - this.testRunRequest.OnRunStart += (s, e) => onRunStartHandlerCalled = true; + mockCustomLauncher.Verify(ml => ml.LaunchTestHost(testProcessStartInfo), Times.Once); + } - // Action - this.testRunRequest.ExecuteAsync(); + /// + /// ExecuteAsync should invoke OnRunStart event. + /// + [TestMethod] + public void ExecuteAsyncShouldInvokeOnRunStart() + { + bool onRunStartHandlerCalled = false; + _testRunRequest.OnRunStart += (s, e) => onRunStartHandlerCalled = true; - // Assert - Assert.IsTrue(onRunStartHandlerCalled, "ExecuteAsync should invoke OnRunstart event"); - } + // Action + _testRunRequest.ExecuteAsync(); - [TestMethod] - public void ExecuteAsyncShouldInvokeHandleTestRunStartOfLoggerManager() - { - this.testRunRequest.ExecuteAsync(); + // Assert + Assert.IsTrue(onRunStartHandlerCalled, "ExecuteAsync should invoke OnRunstart event"); + } - loggerManager.Verify(lm => lm.HandleTestRunStart(It.IsAny()), Times.Once); - } + [TestMethod] + public void ExecuteAsyncShouldInvokeHandleTestRunStartOfLoggerManager() + { + _testRunRequest.ExecuteAsync(); + + _loggerManager.Verify(lm => lm.HandleTestRunStart(It.IsAny()), Times.Once); } } diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/Microsoft.TestPlatform.Client.UnitTests.csproj b/test/Microsoft.TestPlatform.Client.UnitTests/Microsoft.TestPlatform.Client.UnitTests.csproj index 29dcd973cd..890481f977 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/Microsoft.TestPlatform.Client.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Client.UnitTests/Microsoft.TestPlatform.Client.UnitTests.csproj @@ -1,24 +1,16 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.Client.UnitTests - - - - - - diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Client.UnitTests/Program.cs deleted file mode 100644 index 220caa36c3..0000000000 --- a/test/Microsoft.TestPlatform.Client.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.Client.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 00ddea45ca..0000000000 --- a/test/Microsoft.TestPlatform.Client.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestPlatform.Client.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("342ac5e0-6fb2-4fa3-97ba-268e42a4487c")] diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/TestPlatformTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/TestPlatformTests.cs index a0402eaa98..b2a1cf8b2f 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/TestPlatformTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/TestPlatformTests.cs @@ -1,704 +1,641 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests +using System; +using System.Collections.Generic; +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.Client.Execution; +using Microsoft.VisualStudio.TestPlatform.Common.Hosting; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests; + +[TestClass] +public class TestPlatformTests { - using System; - using System.IO; - using System.Collections.Generic; - - using Microsoft.VisualStudio.TestPlatform.Client.Execution; - using Microsoft.VisualStudio.TestPlatform.Common.Hosting; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class TestPlatformTests + private readonly Mock _testEngine; + private readonly Mock _discoveryManager; + private readonly Mock _extensionManager; + private readonly Mock _hostManager; + private readonly Mock _executionManager; + private readonly Mock _loggerManager; + private readonly Mock _mockFileHelper; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + + public TestPlatformTests() { - private readonly Mock testEngine; - private readonly Mock discoveryManager; - private readonly Mock extensionManager; - private readonly Mock hostManager; - private readonly Mock executionManager; - private readonly Mock loggerManager; - private readonly Mock mockFileHelper; - private Mock mockRequestData; - private Mock mockMetricsCollection; - - public TestPlatformTests() - { - this.testEngine = new Mock(); - this.discoveryManager = new Mock(); - this.extensionManager = new Mock(); - this.executionManager = new Mock(); - this.loggerManager = new Mock(); - this.hostManager = new Mock(); - this.mockFileHelper = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - } - - [TestMethod] - public void CreateDiscoveryRequestShouldInitializeManagersAndCreateDiscoveryRequestWithGivenCriteriaAndReturnIt() - { - this.discoveryManager.Setup(dm => dm.Initialize(false)).Verifiable(); - var discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 1, null); - this.hostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)) - .Returns(discoveryCriteria.Sources); - - this.testEngine.Setup(te => te.GetDiscoveryManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.discoveryManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - - var discoveryRequest = tp.CreateDiscoveryRequest(this.mockRequestData.Object, discoveryCriteria, new TestPlatformOptions()); + _testEngine = new Mock(); + _discoveryManager = new Mock(); + _extensionManager = new Mock(); + _executionManager = new Mock(); + _loggerManager = new Mock(); + _hostManager = new Mock(); + _mockFileHelper = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + } - this.hostManager.Verify(hm => hm.Initialize(It.IsAny(), It.IsAny()), Times.Once); - this.discoveryManager.Verify(dm => dm.Initialize(false), Times.Once); - Assert.AreEqual(discoveryCriteria, discoveryRequest.DiscoveryCriteria); - } + [TestMethod] + public void CreateDiscoveryRequestShouldInitializeDiscoveryManagerAndCreateDiscoveryRequestWithGivenCriteriaAndReturnIt() + { + _discoveryManager.Setup(dm => dm.Initialize(false)).Verifiable(); + var discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 1, null); + _hostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)) + .Returns(discoveryCriteria.Sources); - [TestMethod] - public void CreateDiscoveryRequestShouldInitializeManagersWithFalseFlagWhenSkipDefaultAdaptersIsFalse() - { - var options = new TestPlatformOptions() - { - SkipDefaultAdapters = false - }; + _testEngine.Setup(te => te.GetDiscoveryManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_discoveryManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); - InvokeCreateDiscoveryRequest(options); + var discoveryRequest = tp.CreateDiscoveryRequest(_mockRequestData.Object, discoveryCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - this.discoveryManager.Verify(dm => dm.Initialize(false), Times.Once); - } + _discoveryManager.Verify(dm => dm.Initialize(false), Times.Once); + Assert.AreEqual(discoveryCriteria, discoveryRequest.DiscoveryCriteria); + } - [TestMethod] - public void CreateDiscoveryRequestShouldInitializeManagersWithTrueFlagWhenSkipDefaultAdaptersIsTrue() + [TestMethod] + public void CreateDiscoveryRequestShouldInitializeManagersWithFalseFlagWhenSkipDefaultAdaptersIsFalse() + { + var options = new TestPlatformOptions() { - var options = new TestPlatformOptions() - { - SkipDefaultAdapters = true - }; + SkipDefaultAdapters = false + }; - InvokeCreateDiscoveryRequest(options); + InvokeCreateDiscoveryRequest(options); - this.discoveryManager.Verify(dm => dm.Initialize(true), Times.Once); - } + _discoveryManager.Verify(dm => dm.Initialize(false), Times.Once); + } - [TestMethod] - public void CreateDiscoveryRequestShouldInitializeManagersWithFalseFlagWhenTestPlatformOptionsIsNull() + [TestMethod] + public void CreateDiscoveryRequestShouldInitializeManagersWithTrueFlagWhenSkipDefaultAdaptersIsTrue() + { + var options = new TestPlatformOptions() { - InvokeCreateDiscoveryRequest(); + SkipDefaultAdapters = true + }; - this.discoveryManager.Verify(dm => dm.Initialize(false), Times.Once); - } - - [TestMethod] - public void CreateDiscoveryRequestThrowsIfDiscoveryCriteriaIsNull() - { - TestPlatform tp = new TestPlatform(); + InvokeCreateDiscoveryRequest(options); - Assert.ThrowsException(() => tp.CreateDiscoveryRequest(this.mockRequestData.Object, null, new TestPlatformOptions())); - } + _discoveryManager.Verify(dm => dm.Initialize(true), Times.Once); + } - [TestMethod] - public void UpdateExtensionsShouldUpdateTheEngineWithAdditionalExtensions() - { - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - var additionalExtensions = new List { "e1.dll", "e2.dll" }; + [TestMethod] + public void CreateDiscoveryRequestShouldInitializeManagersWithFalseFlagWhenTestPlatformOptionsIsNull() + { + InvokeCreateDiscoveryRequest(); - tp.UpdateExtensions(additionalExtensions, skipExtensionFilters: true); + _discoveryManager.Verify(dm => dm.Initialize(false), Times.Once); + } - this.extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, true)); - } + [TestMethod] + public void CreateDiscoveryRequestThrowsIfDiscoveryCriteriaIsNull() + { + TestPlatform tp = new(); - [TestMethod] - public void ClearExtensionsShouldClearTheExtensionsCachedInEngine() - { - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); + Assert.ThrowsException(() => tp.CreateDiscoveryRequest(_mockRequestData.Object, null!, new TestPlatformOptions(), It.IsAny>(), It.IsAny())); + } - tp.ClearExtensions(); + [TestMethod] + public void UpdateExtensionsShouldUpdateTheEngineWithAdditionalExtensions() + { + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + var additionalExtensions = new List { "e1.dll", "e2.dll" }; - this.extensionManager.Verify(em => em.ClearExtensions()); - } + tp.UpdateExtensions(additionalExtensions, skipExtensionFilters: true); - [TestMethod] - public void CreateTestRunRequestShouldThrowExceptionIfNoTestHostproviderFound() - { - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + _extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, true)); + } - string settingsXml = - @" - - - .NETPortable,Version=v4.5 - - "; + [TestMethod] + public void ClearExtensionsShouldClearTheExtensionsCachedInEngine() + { + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); - var testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, settingsXml, TimeSpan.Zero); - var tp = new TestableTestPlatform(this.testEngine.Object, this.mockFileHelper.Object, null); - bool exceptionThrown = false; + tp.ClearExtensions(); - try - { - tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); - } - catch(TestPlatformException ex) - { - exceptionThrown = true; - Assert.AreEqual("No suitable test runtime provider found for this run.", ex.Message); - } - - Assert.IsTrue(exceptionThrown, "TestPlatformException should get thrown"); - } + _extensionManager.Verify(em => em.ClearExtensions()); + } - [TestMethod] - public void CreateTestRunRequestShouldUpdateLoggerExtensionWhenDesingModeIsFalseForRunAll() - { - var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); - this.executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); + [TestMethod] + public void CreateTestRunRequestShouldUpdateLoggerExtensionWhenDesingModeIsFalseForRunAll() + { + var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); + _executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); - string settingsXml = - @" + string settingsXml = + @" false "; - var temp = Path.GetTempPath(); - var testRunCriteria = new TestRunCriteria(new List { $@"{temp}foo.dll" }, 10, false, settingsXml, TimeSpan.Zero); - this.hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources)) - .Returns(testRunCriteria.Sources); + var temp = Path.GetTempPath(); + var testRunCriteria = new TestRunCriteria(new List { $@"{temp}foo.dll" }, 10, false, settingsXml, TimeSpan.Zero); + _hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources!)) + .Returns(testRunCriteria.Sources!); - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.mockFileHelper.Object, this.hostManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _mockFileHelper.Object, _hostManager.Object); - var testRunRequest = tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); - this.extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); - } + var testRunRequest = tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); + _extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); + } - [TestMethod] - public void CreateTestRunRequestShouldUpdateLoggerExtensionWhenDesignModeIsFalseForRunSelected() - { - var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); + [TestMethod] + public void CreateTestRunRequestShouldUpdateLoggerExtensionWhenDesignModeIsFalseForRunSelected() + { + var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); - this.executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); + _executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); - string settingsXml = - @" + string settingsXml = + @" false "; - var testRunCriteria = new TestRunCriteria(new List { new TestCase("dll1.class1.test1", new Uri("hello://x/"), $"xyz{Path.DirectorySeparatorChar}1.dll") }, 10, false, settingsXml); + var testRunCriteria = new TestRunCriteria(new List { new("dll1.class1.test1", new Uri("hello://x/"), $"xyz{Path.DirectorySeparatorChar}1.dll") }, 10, false, settingsXml); - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.mockFileHelper.Object, this.hostManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _mockFileHelper.Object, _hostManager.Object); - var testRunRequest = tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); - this.extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); - } + var testRunRequest = tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); + _extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); + } - [TestMethod] - public void CreateTestRunRequestShouldNotUpdateTestSourcesIfSelectedTestAreRun() - { - var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); + [TestMethod] + public void CreateTestRunRequestShouldNotUpdateTestSourcesIfSelectedTestAreRun() + { + var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); - this.executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); + _executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); - string settingsXml = - @" + string settingsXml = + @" false "; - var testRunCriteria = new TestRunCriteria(new List { new TestCase("dll1.class1.test1", new Uri("hello://x/"), $"xyz{Path.DirectorySeparatorChar}1.dll") }, 10, false, settingsXml); - this.hostManager.Setup(hm => hm.GetTestSources(It.IsAny>())) - .Returns(new List { $"xyz{Path.DirectorySeparatorChar}1.dll" }); - - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); - - var tp = new TestableTestPlatform(this.testEngine.Object, this.mockFileHelper.Object, this.hostManager.Object); - - tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); - this.extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); - this.hostManager.Verify(hm => hm.GetTestSources(It.IsAny>()), Times.Never); - } - - [TestMethod] - public void CreateTestRunRequestShouldInitializeManagersAndCreateTestRunRequestWithSpecifiedCriteria() - { - this.executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); - - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10); - this.hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources)) - .Returns(testRunCriteria.Sources); + var testRunCriteria = new TestRunCriteria(new List { new("dll1.class1.test1", new Uri("hello://x/"), $"xyz{Path.DirectorySeparatorChar}1.dll") }, 10, false, settingsXml); + _hostManager.Setup(hm => hm.GetTestSources(It.IsAny>())) + .Returns(new List { $"xyz{Path.DirectorySeparatorChar}1.dll" }); - var testRunRequest = tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - var actualTestRunRequest = testRunRequest as TestRunRequest; + var tp = new TestableTestPlatform(_testEngine.Object, _mockFileHelper.Object, _hostManager.Object); - this.hostManager.Verify(hm => hm.Initialize(It.IsAny(), It.IsAny()), Times.Once); - this.executionManager.Verify(em => em.Initialize(false), Times.Once); - Assert.AreEqual(testRunCriteria, actualTestRunRequest.TestRunCriteria); - } - - [TestMethod] - public void CreateTestRunRequestShouldInitializeManagersWithFalseFlagWhenSkipDefaultAdaptersIsFalse() - { - var options = new TestPlatformOptions() - { - SkipDefaultAdapters = false - }; + tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); + _extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); + _hostManager.Verify(hm => hm.GetTestSources(It.IsAny>()), Times.Never); + } - InvokeCreateTestRunRequest(options); + [TestMethod] + public void CreateTestRunRequestShouldInitializeManagersAndCreateTestRunRequestWithSpecifiedCriteria() + { + _executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - this.executionManager.Verify(dm => dm.Initialize(false), Times.Once); - } + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10); + _hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources!)) + .Returns(testRunCriteria.Sources!); - [TestMethod] - public void CreateTestRunRequestShouldInitializeManagersWithTrueFlagWhenSkipDefaultAdaptersIsTrue() - { - var options = new TestPlatformOptions() - { - SkipDefaultAdapters = true - }; + var testRunRequest = tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - InvokeCreateTestRunRequest(options); + var actualTestRunRequest = testRunRequest as TestRunRequest; - this.executionManager.Verify(dm => dm.Initialize(true), Times.Once); - } + _executionManager.Verify(em => em.Initialize(false), Times.Once); + Assert.AreEqual(testRunCriteria, actualTestRunRequest?.TestRunCriteria); + } - [TestMethod] - public void CreateTestRunRequestShouldInitializeManagersWithFalseFlagWhenTestPlatformOptionsIsNull() + [TestMethod] + public void CreateTestRunRequestShouldInitializeManagersWithFalseFlagWhenSkipDefaultAdaptersIsFalse() + { + var options = new TestPlatformOptions() { - InvokeCreateTestRunRequest(); + SkipDefaultAdapters = false + }; - this.executionManager.Verify(dm => dm.Initialize(false), Times.Once); - } + InvokeCreateTestRunRequest(options); - [TestMethod] - public void CreateTestRunRequestShouldSetCustomHostLauncherOnEngineDefaultLauncherIfSpecified() - { - var mockCustomLauncher = new Mock(); - this.executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); - - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10, false, null, TimeSpan.Zero, mockCustomLauncher.Object); - this.hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources)) - .Returns(testRunCriteria.Sources); - - var testRunRequest = tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); - - var actualTestRunRequest = testRunRequest as TestRunRequest; - Assert.AreEqual(testRunCriteria, actualTestRunRequest.TestRunCriteria); - this.hostManager.Verify(hl => hl.SetCustomLauncher(mockCustomLauncher.Object), Times.Once); - } + _executionManager.Verify(dm => dm.Initialize(false), Times.Once); + } - [TestMethod] - public void CreateTestRunRequestThrowsIfTestRunCriteriaIsNull() + [TestMethod] + public void CreateTestRunRequestShouldInitializeManagersWithTrueFlagWhenSkipDefaultAdaptersIsTrue() + { + var options = new TestPlatformOptions() { - var tp = new TestPlatform(); + SkipDefaultAdapters = true + }; - Assert.ThrowsException(() => tp.CreateTestRunRequest(this.mockRequestData.Object, null, new TestPlatformOptions())); - } + InvokeCreateTestRunRequest(options); + _executionManager.Verify(dm => dm.Initialize(true), Times.Once); + } - [TestMethod] - public void CreateDiscoveryRequestShouldThrowExceptionIfNoTestHostproviderFound() - { - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)) - .Returns(this.loggerManager.Object); - - string settingsXml = - @" - - - .NETPortable,Version=v4.5 - - "; + [TestMethod] + public void CreateTestRunRequestShouldInitializeManagersWithFalseFlagWhenTestPlatformOptionsIsNull() + { + InvokeCreateTestRunRequest(); - var discoveryCriteria = new DiscoveryCriteria(new List { @"x:dummy\foo.dll" }, 1, settingsXml); - var tp = new TestableTestPlatform(this.testEngine.Object, this.mockFileHelper.Object, null); - bool exceptionThrown = false; + _executionManager.Verify(dm => dm.Initialize(false), Times.Once); + } - try - { - tp.CreateDiscoveryRequest(this.mockRequestData.Object, discoveryCriteria, new TestPlatformOptions()); - } - catch (TestPlatformException ex) - { - exceptionThrown = true; - Assert.AreEqual("No suitable test runtime provider found for this run.", ex.Message); - } + [TestMethod] + public void CreateTestRunRequestThrowsIfTestRunCriteriaIsNull() + { + var tp = new TestPlatform(); - Assert.IsTrue(exceptionThrown, "TestPlatformException should get thrown"); - } + Assert.ThrowsException(() => tp.CreateTestRunRequest(_mockRequestData.Object, null!, new TestPlatformOptions(), It.IsAny>(), It.IsAny())); + } - /// - /// Logger extensions should be updated when design mode is false. - /// - [TestMethod] - public void CreateDiscoveryRequestShouldUpdateLoggerExtensionWhenDesignModeIsFalse() - { - var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), System.IO.SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); + /// + /// Logger extensions should be updated when design mode is false. + /// + [TestMethod] + public void CreateDiscoveryRequestShouldUpdateLoggerExtensionWhenDesignModeIsFalse() + { + var additionalExtensions = new List { "foo.TestLogger.dll", "Joo.TestLogger.dll" }; + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(additionalExtensions); - this.discoveryManager.Setup(dm => dm.Initialize(false)).Verifiable(); + _discoveryManager.Setup(dm => dm.Initialize(false)).Verifiable(); - string settingsXml = - @" + string settingsXml = + @" false "; - var temp = Path.GetTempPath(); - var discoveryCriteria = new DiscoveryCriteria(new List { $@"{temp}foo.dll" }, 1, settingsXml); - this.hostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)) - .Returns(discoveryCriteria.Sources); + var temp = Path.GetTempPath(); + var discoveryCriteria = new DiscoveryCriteria(new List { $@"{temp}foo.dll" }, 1, settingsXml); + _hostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)) + .Returns(discoveryCriteria.Sources); - this.testEngine.Setup(te => te.GetDiscoveryManager(It.IsAny(), this.hostManager.Object, It.IsAny())).Returns(this.discoveryManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.mockFileHelper.Object, this.hostManager.Object); + _testEngine.Setup(te => te.GetDiscoveryManager(It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_discoveryManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _mockFileHelper.Object, _hostManager.Object); - // Action - var discoveryRequest = tp.CreateDiscoveryRequest(this.mockRequestData.Object, discoveryCriteria, new TestPlatformOptions()); + // Action + var discoveryRequest = tp.CreateDiscoveryRequest(_mockRequestData.Object, discoveryCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - // Verify - this.extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); - } + // Verify + _extensionManager.Verify(em => em.UseAdditionalExtensions(additionalExtensions, false)); + } - /// - /// Create test run request should initialize logger manager for design mode. - /// - [TestMethod] - public void CreateTestRunRequestShouldInitializeLoggerManagerForDesignMode() - { - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + /// + /// Create test run request should initialize logger manager for design mode. + /// + [TestMethod] + public void CreateTestRunRequestShouldInitializeLoggerManagerForDesignMode() + { + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - string settingsXml = - @" + string settingsXml = + @" True "; - var testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, settingsXml); + var testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, settingsXml); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - this.loggerManager.Verify(lm => lm.Initialize(settingsXml)); - } + _loggerManager.Verify(lm => lm.Initialize(settingsXml)); + } - /// - /// Create discovery request should initialize logger manager for design mode. - /// - [TestMethod] - public void CreateDiscoveryRequestShouldInitializeLoggerManagerForDesignMode() - { - this.testEngine.Setup(te => te.GetDiscoveryManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.discoveryManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + /// + /// Create discovery request should initialize logger manager for design mode. + /// + [TestMethod] + public void CreateDiscoveryRequestShouldInitializeLoggerManagerForDesignMode() + { + _testEngine.Setup(te => te.GetDiscoveryManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_discoveryManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - string settingsXml = - @" + string settingsXml = + @" True "; - var discoveryCriteria = new DiscoveryCriteria(new List { @"x:dummy\foo.dll" }, 10, settingsXml); + var discoveryCriteria = new DiscoveryCriteria(new List { @"x:dummy\foo.dll" }, 10, settingsXml); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - tp.CreateDiscoveryRequest(this.mockRequestData.Object, discoveryCriteria, new TestPlatformOptions()); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + tp.CreateDiscoveryRequest(_mockRequestData.Object, discoveryCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - this.loggerManager.Verify(lm => lm.Initialize(settingsXml)); - } + _loggerManager.Verify(lm => lm.Initialize(settingsXml)); + } - /// - /// Create test run request should initialize logger manager for design mode. - /// - [TestMethod] - public void CreateTestRunRequestShouldInitializeLoggerManagerForNonDesignMode() - { - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + /// + /// Create test run request should initialize logger manager for design mode. + /// + [TestMethod] + public void CreateTestRunRequestShouldInitializeLoggerManagerForNonDesignMode() + { + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - string settingsXml = - @" + string settingsXml = + @" False "; - var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10, false, settingsXml); + var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10, false, settingsXml); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, new TestPlatformOptions()); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - this.loggerManager.Verify(lm => lm.Initialize(settingsXml)); - } + _loggerManager.Verify(lm => lm.Initialize(settingsXml)); + } - /// - /// Create discovery request should initialize logger manager for design mode. - /// - [TestMethod] - public void CreateDiscoveryRequestShouldInitializeLoggerManagerForNonDesignMode() - { - this.testEngine.Setup(te => te.GetDiscoveryManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.discoveryManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + /// + /// Create discovery request should initialize logger manager for design mode. + /// + [TestMethod] + public void CreateDiscoveryRequestShouldInitializeLoggerManagerForNonDesignMode() + { + _testEngine.Setup(te => te.GetDiscoveryManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_discoveryManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - string settingsXml = - @" + string settingsXml = + @" False "; - var discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 10, settingsXml); + var discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 10, settingsXml); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - tp.CreateDiscoveryRequest(this.mockRequestData.Object, discoveryCriteria, new TestPlatformOptions()); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + tp.CreateDiscoveryRequest(_mockRequestData.Object, discoveryCriteria, new TestPlatformOptions(), It.IsAny>(), It.IsAny()); - this.loggerManager.Verify(lm => lm.Initialize(settingsXml)); - } + _loggerManager.Verify(lm => lm.Initialize(settingsXml)); + } - [TestMethod] - public void StartTestSessionShouldThrowExceptionIfTestSessionCriteriaIsNull() - { - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); + [TestMethod] + public void StartTestSessionShouldThrowExceptionIfTestSessionCriteriaIsNull() + { + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + + Assert.ThrowsException(() => + tp.StartTestSession( + new Mock().Object, + null!, + new Mock().Object, + new Dictionary(), + new Mock().Object)); + } - Assert.ThrowsException(() => - tp.StartTestSession( - new Mock().Object, - null, - new Mock().Object)); - } + [TestMethod] + public void StartTestSessionShouldReturnFalseIfDesignModeIsDisabled() + { + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); - [TestMethod] - public void StartTestSessionShouldReturnFalseIfDesignModeIsDisabled() + var testSessionCriteria = new StartTestSessionCriteria() { - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - - var testSessionCriteria = new StartTestSessionCriteria() - { - RunSettings = @" + RunSettings = @" false " - }; - - Assert.IsFalse( - tp.StartTestSession( - new Mock().Object, - testSessionCriteria, - new Mock().Object)); - } + }; + + Assert.IsFalse( + tp.StartTestSession( + new Mock().Object, + testSessionCriteria, + new Mock().Object, + It.IsAny>(), It.IsAny())); + } - [TestMethod] - public void StartTestSessionShouldReturnFalseIfTestSessionManagerIsNull() - { - this.testEngine.Setup( + [TestMethod] + public void StartTestSessionShouldReturnFalseIfTestSessionManagerIsNull() + { + _testEngine.Setup( te => te.GetTestSessionManager( It.IsAny(), - It.IsAny())) - .Returns((IProxyTestSessionManager)null); + It.IsAny(), + It.IsAny>(), It.IsAny())) + .Returns((IProxyTestSessionManager)null!); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - var mockEventsHandler = new Mock(); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + var mockEventsHandler = new Mock(); - var testSessionCriteria = new StartTestSessionCriteria() + mockEventsHandler.Setup( + eh => eh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => { - RunSettings = @" + Assert.IsNull(eventArgs.TestSessionInfo); + Assert.IsNull(eventArgs.Metrics); + }); + + var testSessionCriteria = new StartTestSessionCriteria() + { + RunSettings = @" true " - }; - - Assert.IsFalse( - tp.StartTestSession( - new Mock().Object, - testSessionCriteria, - mockEventsHandler.Object)); + }; + + Assert.IsFalse( + tp.StartTestSession( + new Mock().Object, + testSessionCriteria, + mockEventsHandler.Object, + It.IsAny>(), It.IsAny())); + } - mockEventsHandler.Verify( - eh => eh.HandleStartTestSessionComplete(null), - Times.Once); - } + [TestMethod] + public void StartTestSessionShouldReturnTrueIfTestSessionManagerStartSessionReturnsTrue() + { + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); - [TestMethod] - public void StartTestSessionShouldReturnTrueIfTestSessionManagerStartSessionReturnsTrue() + var testSessionCriteria = new StartTestSessionCriteria() { - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - - var testSessionCriteria = new StartTestSessionCriteria() - { - RunSettings = @" + RunSettings = @" true " - }; - - var mockEventsHandler = new Mock(); - var mockTestSessionManager = new Mock(); - mockTestSessionManager.Setup( - tsm => tsm.StartSession(It.IsAny())) - .Returns(true); - this.testEngine.Setup( + }; + + var mockEventsHandler = new Mock(); + var mockRequestData = new Mock(); + var mockTestSessionManager = new Mock(); + mockTestSessionManager.Setup( + tsm => tsm.StartSession( + It.IsAny(), + It.IsAny())) + .Returns(true); + _testEngine.Setup( te => te.GetTestSessionManager( It.IsAny(), - It.IsAny())) - .Returns(mockTestSessionManager.Object); - - Assert.IsTrue( - tp.StartTestSession( - new Mock().Object, - testSessionCriteria, - mockEventsHandler.Object)); + It.IsAny(), + It.IsAny>(), It.IsAny())) + .Returns(mockTestSessionManager.Object); + + Assert.IsTrue( + tp.StartTestSession( + new Mock().Object, + testSessionCriteria, + mockEventsHandler.Object, + It.IsAny>(), It.IsAny())); + + mockTestSessionManager.Verify( + tsm => tsm.StartSession(mockEventsHandler.Object, It.IsAny()), + Times.Once); + } - mockTestSessionManager.Verify( - tsm => tsm.StartSession(mockEventsHandler.Object)); - } + [TestMethod] + public void StartTestSessionShouldReturnFalseIfTestSessionManagerStartSessionReturnsFalse() + { + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); - [TestMethod] - public void StartTestSessionShouldReturnFalseIfTestSessionManagerStartSessionReturnsFalse() + var testSessionCriteria = new StartTestSessionCriteria() { - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - - var testSessionCriteria = new StartTestSessionCriteria() - { - RunSettings = @" + RunSettings = @" true " - }; - - var mockEventsHandler = new Mock(); - var mockTestSessionManager = new Mock(); - mockTestSessionManager.Setup( - tsm => tsm.StartSession(It.IsAny())) - .Returns(false); - this.testEngine.Setup( + }; + + var mockEventsHandler = new Mock(); + var mockRequestData = new Mock(); + var mockTestSessionManager = new Mock(); + mockTestSessionManager.Setup( + tsm => tsm.StartSession( + It.IsAny(), + It.IsAny())) + .Returns(false); + _testEngine.Setup( te => te.GetTestSessionManager( It.IsAny(), - It.IsAny())) - .Returns(mockTestSessionManager.Object); - - Assert.IsFalse( - tp.StartTestSession( - new Mock().Object, - testSessionCriteria, - mockEventsHandler.Object)); + It.IsAny(), + It.IsAny>(), It.IsAny())) + .Returns(mockTestSessionManager.Object); + + Assert.IsFalse( + tp.StartTestSession( + mockRequestData.Object, + testSessionCriteria, + mockEventsHandler.Object, + It.IsAny>(), It.IsAny())); + + mockTestSessionManager.Verify( + tsm => tsm.StartSession(mockEventsHandler.Object, mockRequestData.Object), + Times.Once); + } - mockTestSessionManager.Verify( - tsm => tsm.StartSession(mockEventsHandler.Object)); - } + private void InvokeCreateDiscoveryRequest(TestPlatformOptions? options = null) + { + _discoveryManager.Setup(dm => dm.Initialize(false)).Verifiable(); + var discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 1, null); + _hostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)) + .Returns(discoveryCriteria.Sources); - private void InvokeCreateDiscoveryRequest(TestPlatformOptions options = null) - { - this.discoveryManager.Setup(dm => dm.Initialize(false)).Verifiable(); - var discoveryCriteria = new DiscoveryCriteria(new List { "foo" }, 1, null); - this.hostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)) - .Returns(discoveryCriteria.Sources); + _testEngine.Setup(te => te.GetDiscoveryManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_discoveryManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); - this.testEngine.Setup(te => te.GetDiscoveryManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.discoveryManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); + tp.CreateDiscoveryRequest(_mockRequestData.Object, discoveryCriteria, options, new Dictionary(), new Mock().Object); + } - tp.CreateDiscoveryRequest(this.mockRequestData.Object, discoveryCriteria, options); - } + private void InvokeCreateTestRunRequest(TestPlatformOptions? options = null) + { + _executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); + _testEngine.Setup(te => te.GetExecutionManager(_mockRequestData.Object, It.IsAny(), It.IsAny>(), It.IsAny())).Returns(_executionManager.Object); + _testEngine.Setup(te => te.GetExtensionManager()).Returns(_extensionManager.Object); + _testEngine.Setup(te => te.GetLoggerManager(_mockRequestData.Object)).Returns(_loggerManager.Object); - private void InvokeCreateTestRunRequest(TestPlatformOptions options = null) - { - this.executionManager.Setup(dm => dm.Initialize(false)).Verifiable(); - this.testEngine.Setup(te => te.GetExecutionManager(this.mockRequestData.Object, this.hostManager.Object, It.IsAny())).Returns(this.executionManager.Object); - this.testEngine.Setup(te => te.GetExtensionManager()).Returns(this.extensionManager.Object); - this.testEngine.Setup(te => te.GetLoggerManager(this.mockRequestData.Object)).Returns(this.loggerManager.Object); + var tp = new TestableTestPlatform(_testEngine.Object, _hostManager.Object); + var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10); + _hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources!)) + .Returns(testRunCriteria.Sources!); - var tp = new TestableTestPlatform(this.testEngine.Object, this.hostManager.Object); - var testRunCriteria = new TestRunCriteria(new List { "foo" }, 10); - this.hostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources)) - .Returns(testRunCriteria.Sources); + tp.CreateTestRunRequest(_mockRequestData.Object, testRunCriteria, options, new Dictionary(), new Mock().Object); + } - tp.CreateTestRunRequest(this.mockRequestData.Object, testRunCriteria, options); + private class TestableTestPlatform : TestPlatform + { + public TestableTestPlatform(ITestEngine testEngine, ITestRuntimeProvider hostProvider) + : base(testEngine, new FileHelper(), new TestableTestRuntimeProviderManager(hostProvider)) + { } - private class TestableTestPlatform : TestPlatform + public TestableTestPlatform(ITestEngine testEngine, IFileHelper fileHelper, ITestRuntimeProvider hostProvider) + : base(testEngine, fileHelper, new TestableTestRuntimeProviderManager(hostProvider)) { - public TestableTestPlatform(ITestEngine testEngine, ITestRuntimeProvider hostProvider) : base(testEngine, new FileHelper(), new TestableTestRuntimeProviderManager(hostProvider)) - { - } - - public TestableTestPlatform(ITestEngine testEngine, IFileHelper fileHelper, ITestRuntimeProvider hostProvider) : base(testEngine, fileHelper, new TestableTestRuntimeProviderManager(hostProvider)) - { - } } + } - private class TestableTestRuntimeProviderManager : TestRuntimeProviderManager - { - private readonly ITestRuntimeProvider hostProvider; + private class TestableTestRuntimeProviderManager : TestRuntimeProviderManager + { + private readonly ITestRuntimeProvider _hostProvider; - public TestableTestRuntimeProviderManager(ITestRuntimeProvider hostProvider) - : base(TestSessionMessageLogger.Instance) - { - this.hostProvider = hostProvider; - } + public TestableTestRuntimeProviderManager(ITestRuntimeProvider hostProvider) + : base(TestSessionMessageLogger.Instance) + { + _hostProvider = hostProvider; + } - public override ITestRuntimeProvider GetTestHostManagerByRunConfiguration(string runConfiguration) - { - return this.hostProvider; - } + public override ITestRuntimeProvider GetTestHostManagerByRunConfiguration(string? runConfiguration, List? _) + { + return _hostProvider; } } } diff --git a/test/Microsoft.TestPlatform.Common.PlatformTests/AssemblyPropertiesTests.cs b/test/Microsoft.TestPlatform.Common.PlatformTests/AssemblyPropertiesTests.cs deleted file mode 100644 index 15d97f4c96..0000000000 --- a/test/Microsoft.TestPlatform.Common.PlatformTests/AssemblyPropertiesTests.cs +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace TestPlatform.Common.UnitTests.Utilities -{ - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class AssemblyPropertiesTests : IntegrationTestBase - { - private IAssemblyProperties assemblyProperties; - - public AssemblyPropertiesTests() - { - this.assemblyProperties = new AssemblyProperties(); - } - - [TestMethod] - [DataRow("net451")] - [DataRow("netcoreapp2.1")] - public void GetAssemblyTypeForManagedDll(string framework) - { - var assemblyPath = this.testEnvironment.GetTestAsset("SimpleTestProject3.dll", framework); - var assemblyType = this.assemblyProperties.GetAssemblyType(assemblyPath); - - Assert.AreEqual(AssemblyType.Managed, assemblyType); - } - - [TestMethod] - public void GetAssemblyTypeForNativeDll() - { - var assemblyPath = $@"{this.testEnvironment.PackageDirectory}\microsoft.testplatform.testasset.nativecpp\2.0.0\contentFiles\any\any\Microsoft.TestPlatform.TestAsset.NativeCPP.dll"; - var assemblyType = this.assemblyProperties.GetAssemblyType(assemblyPath); - - Assert.AreEqual(AssemblyType.Native, assemblyType); - } - - [TestMethod] - public void GetAssemblyTypeForManagedExe() - { - var assemblyPath = this.testEnvironment.GetTestAsset("ConsoleManagedApp.exe", "net451"); - var assemblyType = this.assemblyProperties.GetAssemblyType(assemblyPath); - - Assert.AreEqual(AssemblyType.Managed, assemblyType); - } - - [TestMethod] - [DataRow("netcoreapp2.1")] - public void GetAssemblyTypeForNetCoreManagedExe(string framework) - { - var assemblyPath = this.testEnvironment.GetTestAsset("ConsoleManagedApp.dll", framework); - var assemblyType = this.assemblyProperties.GetAssemblyType(assemblyPath); - - Assert.AreEqual(AssemblyType.Managed, assemblyType); - } - - [TestMethod] - public void GetAssemblyTypeForNativeExe() - { - var assemblyPath = $@"{this.testEnvironment.PackageDirectory}\microsoft.testplatform.testasset.nativecpp\2.0.0\contentFiles\any\any\Microsoft.TestPlatform.TestAsset.ConsoleNativeApp.exe"; - var assemblyType = this.assemblyProperties.GetAssemblyType(assemblyPath); - - Assert.AreEqual(AssemblyType.Native, assemblyType); - } - - [TestMethod] - public void GetAssemblyTypeShouldReturnNoneInCaseOfError() - { - var assemblyType = this.assemblyProperties.GetAssemblyType("invalidFile.dll"); - - Assert.AreEqual(AssemblyType.None, assemblyType); - } - } -} diff --git a/test/Microsoft.TestPlatform.Common.PlatformTests/Microsoft.TestPlatform.Common.PlatformTests.csproj b/test/Microsoft.TestPlatform.Common.PlatformTests/Microsoft.TestPlatform.Common.PlatformTests.csproj deleted file mode 100644 index 63e3b0c9f6..0000000000 --- a/test/Microsoft.TestPlatform.Common.PlatformTests/Microsoft.TestPlatform.Common.PlatformTests.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - ..\..\ - true - true - - - - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - Microsoft.TestPlatform.Common.PlatformTests - true - - - - - 2.0.0 - - - - - - - - - - diff --git a/test/Microsoft.TestPlatform.Common.PlatformTests/Program.cs b/test/Microsoft.TestPlatform.Common.PlatformTests/Program.cs deleted file mode 100644 index c14da13e69..0000000000 --- a/test/Microsoft.TestPlatform.Common.PlatformTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.Common.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/DataCollectorExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/DataCollectorExtensionManagerTests.cs index 00e193f6f7..4422bceb8e 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/DataCollectorExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/DataCollectorExtensionManagerTests.cs @@ -1,46 +1,45 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.ExtensionFramework -{ - using System; +using System; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Common.UnitTests.ExtensionFramework; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; +[TestClass] +public class DataCollectorExtensionManagerTests +{ + [TestInitialize] + public void Initialize() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(DataCollectorExtensionManagerTests)); + } - [TestClass] - public class DataCollectorExtensionManagerTests + [TestMethod] + public void CreateShouldThrowExceptionIfMessageLoggerIsNull() { - [TestInitialize] - public void Initialize() + Assert.ThrowsException(() => { - TestPluginCacheHelper.SetupMockExtensions(typeof(DataCollectorExtensionManagerTests)); - } + var dataCollectionExtensionManager = DataCollectorExtensionManager.Create(null!); + }); + } - [TestMethod] - public void CreateShouldThrowExceptionIfMessageLoggerIsNull() + [TestMethod] + public void CreateShouldReturnInstanceOfDataCollectorExtensionManager() + { + try { - Assert.ThrowsException(() => - { - var dataCollectionExtensionManager = DataCollectorExtensionManager.Create(null); - }); + var dataCollectorExtensionManager = DataCollectorExtensionManager.Create(TestSessionMessageLogger.Instance); + Assert.IsNotNull(dataCollectorExtensionManager); + Assert.IsInstanceOfType(dataCollectorExtensionManager, typeof(DataCollectorExtensionManager)); } - - [TestMethod] - public void CreateShouldReturnInstanceOfDataCollectorExtensionManager() + finally { - try - { - var dataCollectorExtensionManager = DataCollectorExtensionManager.Create(TestSessionMessageLogger.Instance); - Assert.IsNotNull(dataCollectorExtensionManager); - Assert.IsInstanceOfType(dataCollectorExtensionManager, typeof(DataCollectorExtensionManager)); - } - finally - { - TestSessionMessageLogger.Instance = null; - } + TestSessionMessageLogger.Instance = null; } } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/ExtensionDecoratorTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/ExtensionDecoratorTests.cs new file mode 100644 index 0000000000..a44997fd80 --- /dev/null +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/ExtensionDecoratorTests.cs @@ -0,0 +1,142 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionDecorators; +using Microsoft.VisualStudio.TestPlatform.Common.Resources; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class ExtensionDecoratorTests +{ + private readonly Mock _featureFlagMock = new(); + private readonly Mock _testExecutorMock = new(); + private readonly Mock _contextMock = new(); + private readonly Mock _frameworkWorkHandleMock = new(); + private readonly Mock _settingsMock = new(); + private readonly string _runsettings = @" + + + true + + "; + + [TestMethod] + public void ExtensionDecoratorFactory_DisabledByFlag() + { + // Arrange + _featureFlagMock.Setup(x => x.IsSet(FeatureFlag.VSTEST_DISABLE_SERIALTESTRUN_DECORATOR)).Returns(true); + + // Run test and assert + ExtensionDecoratorFactory extensionDecoratorFactory = new(_featureFlagMock.Object); + Mock featureFlagMock = new(); + Assert.AreEqual(featureFlagMock.Object, extensionDecoratorFactory.Decorate(featureFlagMock.Object)); + } + + [TestMethod] + public void SerialTestRunDecorator_ShouldSerializeTests() + { + // Arrange + List testCases = new(); + for (int i = 0; i < 50; i++) + { + testCases.Add(new TestCase() { Id = Guid.NewGuid() }); + } + + long currentCount = 0; + List testCasesRan = new(); + _settingsMock.Setup(x => x.SettingsXml).Returns(_runsettings); + _contextMock.Setup(x => x.RunSettings).Returns(_settingsMock.Object); + _testExecutorMock.Setup(x => x.RunTests(It.IsAny?>(), It.IsAny(), It.IsAny())) + .Callback((IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) => + { + Assert.AreEqual(0, Interlocked.Read(ref currentCount)); + currentCount = Interlocked.Increment(ref currentCount); + TestCase tc = tests!.First(); + Task.Run(() => + { + Thread.Sleep(100); + currentCount = Interlocked.Decrement(ref currentCount); + frameworkHandle!.RecordEnd(tc, TestOutcome.Passed); + }); + testCasesRan.Add(tc); + }); + + // Run test + SerialTestRunDecorator serialTestRunDecorator = new(_testExecutorMock.Object); + serialTestRunDecorator.RunTests(testCases, _contextMock.Object, _frameworkWorkHandleMock.Object); + + // Assert + Assert.AreEqual(0, testCases.Except(testCasesRan).Count()); + } + + [TestMethod] + public void SerialTestRunDecorator_DoesNotSupportSources() + { + // Arrange + _settingsMock.Setup(x => x.SettingsXml).Returns(_runsettings); + _contextMock.Setup(x => x.RunSettings).Returns(_settingsMock.Object); + + // Run test + SerialTestRunDecorator serialTestRunDecorator = new(_testExecutorMock.Object); + serialTestRunDecorator.RunTests(new List() { "samplesource.dll" }, _contextMock.Object, _frameworkWorkHandleMock.Object); + + // Assert + _testExecutorMock.Verify(x => x.RunTests(It.IsAny?>(), It.IsAny(), It.IsAny()), Times.Never()); + _frameworkWorkHandleMock.Verify(x => x.SendMessage(TestMessageLevel.Error, Resources.SerialTestRunInvalidScenario), Times.Once()); + } + + + [TestMethod] + [DataRow("FaLsE", false)] + [DataRow("false", false)] + [DataRow("FALSE", false)] + [DataRow(null, true)] + public void SerialTestRunDecorator_Disabled(string falseValue, bool nullRunSettings) + { + // Arrange + string runsettings = $@" + + + {falseValue} + + "; + + List testCases = new(); + for (int i = 0; i < 50; i++) + { + testCases.Add(new TestCase() { Id = Guid.NewGuid() }); + } + + string[] sourcesName = ["testSource.dll"]; + + _settingsMock.Setup(x => x.SettingsXml).Returns(nullRunSettings ? null : runsettings); + _contextMock.Setup(x => x.RunSettings).Returns(_settingsMock.Object); + _testExecutorMock.Setup(x => x.RunTests(It.IsAny?>(), It.IsAny(), It.IsAny())) + .Callback((IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) => Assert.AreEqual(testCases, tests)); + _testExecutorMock.Setup(x => x.RunTests(It.IsAny?>(), It.IsAny(), It.IsAny())) + .Callback((IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) => Assert.AreEqual(sourcesName, tests)); + + // Run test + SerialTestRunDecorator serialTestRunDecorator = new(_testExecutorMock.Object); + serialTestRunDecorator.RunTests(testCases, _contextMock.Object, _frameworkWorkHandleMock.Object); + serialTestRunDecorator.RunTests(sourcesName, _contextMock.Object, _frameworkWorkHandleMock.Object); + + // Assert + _testExecutorMock.Verify(x => x.RunTests(It.IsAny?>(), It.IsAny(), It.IsAny()), Times.Once()); + _testExecutorMock.Verify(x => x.RunTests(It.IsAny?>(), It.IsAny(), It.IsAny()), Times.Once()); + } +} diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestDiscoveryExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestDiscoveryExtensionManagerTests.cs index 7c69dfd0a1..89631f1b85 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestDiscoveryExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestDiscoveryExtensionManagerTests.cs @@ -1,138 +1,151 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework +using System.Collections.Generic; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class TestDiscoveryExtensionManagerTests { - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using Microsoft.TestPlatform.Common; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestDiscoveryExtensionManagerTests + [TestCleanup] + public void TestCleanup() { - [TestCleanup] - public void TestCleanup() - { - TestDiscoveryExtensionManager.Destroy(); - } + TestDiscoveryExtensionManager.Destroy(); + } - [TestMethod] - public void CreateShouldDiscoverDiscovererExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestDiscoveryExtensionManagerTests)); + [TestMethod] + public void CreateShouldDiscoverDiscovererExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestDiscoveryExtensionManagerTests)); - var extensionManager = TestDiscoveryExtensionManager.Create(); + var extensionManager = TestDiscoveryExtensionManager.Create(); - Assert.IsNotNull(extensionManager.Discoverers); - Assert.IsTrue(extensionManager.Discoverers.Any()); - } + Assert.IsNotNull(extensionManager.Discoverers); + Assert.IsTrue(extensionManager.Discoverers.Any()); + } - [TestMethod] - public void CreateShouldCacheDiscoveredExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestDiscoveryExtensionManagerTests), () => { }); + [TestMethod] + public void CreateShouldCacheDiscoveredExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestDiscoveryExtensionManagerTests), () => { }); - var extensionManager = TestDiscoveryExtensionManager.Create(); - TestDiscoveryExtensionManager.Create(); + var extensionManager = TestDiscoveryExtensionManager.Create(); + TestDiscoveryExtensionManager.Create(); - Assert.IsNotNull(extensionManager.Discoverers); - Assert.IsTrue(extensionManager.Discoverers.Any()); - } + Assert.IsNotNull(extensionManager.Discoverers); + Assert.IsTrue(extensionManager.Discoverers.Any()); + } - [TestMethod] - public void GetDiscoveryExtensionManagerShouldReturnADiscoveryManagerWithExtensions() - { - var extensionManager = - TestDiscoveryExtensionManager.GetDiscoveryExtensionManager( - typeof(TestDiscoveryExtensionManagerTests).GetTypeInfo().Assembly.Location); + [TestMethod] + public void GetDiscoveryExtensionManagerShouldReturnADiscoveryManagerWithExtensions() + { + var extensionManager = + TestDiscoveryExtensionManager.GetDiscoveryExtensionManager( + typeof(TestDiscoveryExtensionManagerTests).Assembly.Location); - Assert.IsNotNull(extensionManager.Discoverers); - Assert.IsTrue(extensionManager.Discoverers.Any()); - } + Assert.IsNotNull(extensionManager.Discoverers); + Assert.IsTrue(extensionManager.Discoverers.Any()); + } - #region LoadAndInitialize tests + #region LoadAndInitialize tests - [TestMethod] - public void LoadAndInitializeShouldInitializeAllExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestDiscoveryExtensionManagerTests)); + [TestMethod] + public void LoadAndInitializeShouldInitializeAllExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestDiscoveryExtensionManagerTests)); - TestDiscoveryExtensionManager.LoadAndInitializeAllExtensions(false); + TestDiscoveryExtensionManager.LoadAndInitializeAllExtensions(false); - var allDiscoverers = TestDiscoveryExtensionManager.Create().Discoverers; + var allDiscoverers = TestDiscoveryExtensionManager.Create().Discoverers; - foreach (var discoverer in allDiscoverers) - { - Assert.IsTrue(discoverer.IsExtensionCreated); - } + foreach (var discoverer in allDiscoverers) + { + Assert.IsTrue(discoverer.IsExtensionCreated); } + } + + #endregion +} + +[TestClass] +public class TestDiscovererMetadataTests +{ + [TestMethod] + public void TestDiscovererMetadataCtorDoesNotThrowWhenFileExtensionsIsNull() + { + var metadata = new TestDiscovererMetadata(null, null); - #endregion + Assert.IsNull(metadata.FileExtension); + Assert.IsFalse(metadata.IsDirectoryBased); } - [TestClass] - public class TestDiscovererMetadataTests + [TestMethod] + public void TestDiscovererMetadataCtorDoesNotThrowWhenFileExtensionsIsEmpty() { - [TestMethod] - public void TestDiscovererMetadataCtorDoesNotThrowWhenFileExtensionsIsNull() - { - var metadata = new TestDiscovererMetadata(null, null); + var metadata = new TestDiscovererMetadata(new List(), null); - Assert.IsNull(metadata.FileExtension); - } + Assert.IsNull(metadata.FileExtension); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void TestDiscovererMetadataCtorDoesNotThrowWhenFileExtensionsIsEmpty() - { - var metadata = new TestDiscovererMetadata(new List(), null); + [TestMethod] + public void TestDiscovererMetadataCtorDoesNotThrowWhenDefaultUriIsNull() + { + var metadata = new TestDiscovererMetadata(new List(), null); - Assert.IsNull(metadata.FileExtension); - } + Assert.IsNull(metadata.DefaultExecutorUri); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void TestDiscovererMetadataCtorDoesNotThrowWhenDefaultUriIsNull() - { - var metadata = new TestDiscovererMetadata(new List(), null); + [TestMethod] + public void TestDiscovererMetadataCtorDoesNotThrowWhenDefaultUriIsEmpty() + { + var metadata = new TestDiscovererMetadata(new List(), " "); - Assert.IsNull(metadata.DefaultExecutorUri); - } + Assert.IsNull(metadata.DefaultExecutorUri); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void TestDiscovererMetadataCtorDoesNotThrowWhenDefaultUriIsEmpty() - { - var metadata = new TestDiscovererMetadata(new List(), " "); + [TestMethod] + public void TestDiscovererMetadataCtorSetsFileExtensions() + { + var extensions = new List { "csv", "dll" }; + var metadata = new TestDiscovererMetadata(extensions, null); - Assert.IsNull(metadata.DefaultExecutorUri); - } + CollectionAssert.AreEqual(extensions, metadata.FileExtension!.ToList()); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void TestDiscovererMetadataCtorSetsFileExtensions() - { - var extensions = new List { "csv", "dll" }; - var metadata = new TestDiscovererMetadata(extensions, null); + [TestMethod] + public void TestDiscovererMetadataCtorSetsDefaultUri() + { + var metadata = new TestDiscovererMetadata(null, "executor://helloworld"); - CollectionAssert.AreEqual(extensions, metadata.FileExtension.ToList()); - } + Assert.AreEqual("executor://helloworld/", metadata.DefaultExecutorUri!.AbsoluteUri); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void TestDiscovererMetadataCtorSetsDefaultUri() - { - var metadata = new TestDiscovererMetadata(null, "executor://helloworld"); + [TestMethod] + public void TestDiscovererMetadataCtorSetsAssemblyType() + { + var metadata = new TestDiscovererMetadata(null, "executor://helloworld", AssemblyType.Native); - Assert.AreEqual("executor://helloworld/", metadata.DefaultExecutorUri.AbsoluteUri); - } + Assert.AreEqual(AssemblyType.Native, metadata.AssemblyType); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void TestDiscovererMetadataCtorSetsAssemblyType() - { - var metadata = new TestDiscovererMetadata(null, "executor://helloworld", AssemblyType.Native); + [TestMethod] + public void TestDiscovererMetadataCtorSetsIsDirectoryBased() + { + var metadata = new TestDiscovererMetadata(null, "executor://helloworld", isDirectoryBased: true); - Assert.AreEqual(AssemblyType.Native, metadata.AssemblyType); - } + Assert.IsTrue(metadata.IsDirectoryBased); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExecutorExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExecutorExtensionManagerTests.cs index 76c8142970..6f0b810351 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExecutorExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExecutorExtensionManagerTests.cs @@ -1,87 +1,85 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework -{ - using System.Linq; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Reflection; - using Microsoft.TestPlatform.TestUtilities; +namespace TestPlatform.Common.UnitTests.ExtensionFramework; - [TestClass] - public class TestExecutorExtensionManagerTests +[TestClass] +public class TestExecutorExtensionManagerTests +{ + [TestCleanup] + public void TestCleanup() { - [TestCleanup] - public void TestCleanup() - { - TestExecutorExtensionManager.Destroy(); - } + TestExecutorExtensionManager.Destroy(); + } - [TestMethod] - public void CreateShouldDiscoverExecutorExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestExecutorExtensionManagerTests)); + [TestMethod] + public void CreateShouldDiscoverExecutorExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestExecutorExtensionManagerTests)); - var extensionManager = TestExecutorExtensionManager.Create(); + var extensionManager = TestExecutorExtensionManager.Create(); - Assert.IsNotNull(extensionManager.TestExtensions); - Assert.IsTrue(extensionManager.TestExtensions.Any()); - } + Assert.IsNotNull(extensionManager.TestExtensions); + Assert.IsTrue(extensionManager.TestExtensions.Any()); + } - [TestMethod] - public void CreateShouldCacheDiscoveredExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestExecutorExtensionManagerTests), () => { }); + [TestMethod] + public void CreateShouldCacheDiscoveredExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestExecutorExtensionManagerTests), () => { }); - var extensionManager = TestExecutorExtensionManager.Create(); - TestExecutorExtensionManager.Create(); + var extensionManager = TestExecutorExtensionManager.Create(); + TestExecutorExtensionManager.Create(); - Assert.IsNotNull(extensionManager.TestExtensions); - Assert.IsTrue(extensionManager.TestExtensions.Any()); - } + Assert.IsNotNull(extensionManager.TestExtensions); + Assert.IsTrue(extensionManager.TestExtensions.Any()); + } - [TestMethod] - public void GetExecutorExtensionManagerShouldReturnAnExecutionManagerWithExtensions() - { - var extensionManager = - TestExecutorExtensionManager.GetExecutionExtensionManager( - typeof(TestExecutorExtensionManagerTests).GetTypeInfo().Assembly.Location); + [TestMethod] + public void GetExecutorExtensionManagerShouldReturnAnExecutionManagerWithExtensions() + { + var extensionManager = + TestExecutorExtensionManager.GetExecutionExtensionManager( + typeof(TestExecutorExtensionManagerTests).Assembly.Location); - Assert.IsNotNull(extensionManager.TestExtensions); - Assert.IsTrue(extensionManager.TestExtensions.Any()); - } + Assert.IsNotNull(extensionManager.TestExtensions); + Assert.IsTrue(extensionManager.TestExtensions.Any()); + } - #region LoadAndInitialize tests + #region LoadAndInitialize tests - [TestMethod] - public void LoadAndInitializeShouldInitializeAllExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestExecutorExtensionManagerTests)); + [TestMethod] + public void LoadAndInitializeShouldInitializeAllExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestExecutorExtensionManagerTests)); - TestExecutorExtensionManager.LoadAndInitializeAllExtensions(false); + TestExecutorExtensionManager.LoadAndInitializeAllExtensions(false); - var allExecutors = TestExecutorExtensionManager.Create().TestExtensions; + var allExecutors = TestExecutorExtensionManager.Create().TestExtensions; - foreach (var executor in allExecutors) - { - Assert.IsTrue(executor.IsExtensionCreated); - } + foreach (var executor in allExecutors) + { + Assert.IsTrue(executor.IsExtensionCreated); } - - #endregion } - [TestClass] - public class TestExecutorMetadataTests + #endregion +} + +[TestClass] +public class TestExecutorMetadataTests +{ + [TestMethod] + public void TestExecutorMetadataCtorShouldSetExtensionUri() { - [TestMethod] - public void TestExecutorMetadataCtorShouldSetExtensionUri() - { - var metadata = new TestExecutorMetadata("random"); + var metadata = new TestExecutorMetadata("random"); - Assert.AreEqual("random", metadata.ExtensionUri); - } + Assert.AreEqual("random", metadata.ExtensionUri); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExtensionManagerTests.cs index 4a940c523b..f31173f945 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestExtensionManagerTests.cs @@ -1,122 +1,118 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework +using System; +using System.Collections.Generic; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class TestExtensionManagerTests { - using System; - using System.Collections.Generic; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestExtensionManagerTests + private readonly IMessageLogger _messageLogger; + private TestExtensionManager? _testExtensionManager; + private readonly IEnumerable> _filteredTestExtensions; + private readonly IEnumerable>> _unfilteredTestExtensions; + + public TestExtensionManagerTests() { - private IMessageLogger messageLogger; - private TestExtensionManager testExtensionManager; - private IEnumerable> filteredTestExtensions; - private IEnumerable>> unfilteredTestExtensions; + TestPluginCacheHelper.SetupMockExtensions(typeof(TestExtensionManagerTests)); + _messageLogger = TestSessionMessageLogger.Instance; + TestPluginManager.GetSpecificTestExtensions + (TestPlatformConstants.TestLoggerEndsWithPattern, out _unfilteredTestExtensions, out _filteredTestExtensions); + } - public TestExtensionManagerTests() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestExtensionManagerTests)); - messageLogger = TestSessionMessageLogger.Instance; - TestPluginManager.Instance.GetSpecificTestExtensions - (TestPlatformConstants.TestLoggerEndsWithPattern, out unfilteredTestExtensions, out filteredTestExtensions); - } + [TestCleanup] + public void Cleanup() + { + TestSessionMessageLogger.Instance = null; + } - [TestCleanup] - public void Cleanup() - { - TestSessionMessageLogger.Instance = null; - } + [TestMethod] + public void TestExtensionManagerConstructorShouldThrowExceptionIfMessageLoggerIsNull() + { + Assert.ThrowsException(() => _testExtensionManager = new DummyTestExtensionManager(_unfilteredTestExtensions, _filteredTestExtensions, null!)); + } - [TestMethod] - public void TestExtensionManagerConstructorShouldThrowExceptionIfMessageLoggerIsNull() - { - Assert.ThrowsException(() => - { - testExtensionManager = new DummyTestExtensionManager(unfilteredTestExtensions, filteredTestExtensions, null); - } - ); - } + [TestMethod] + public void TryGetTestExtensionShouldReturnExtensionWithCorrectUri() + { + _testExtensionManager = new DummyTestExtensionManager(_unfilteredTestExtensions, _filteredTestExtensions, _messageLogger); + var result = _testExtensionManager.TryGetTestExtension(new Uri("testlogger://logger")); - [TestMethod] - public void TryGetTestExtensionShouldReturnExtensionWithCorrectUri() - { - testExtensionManager = new DummyTestExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); - var result = testExtensionManager.TryGetTestExtension(new Uri("testlogger://logger")); + Assert.IsNotNull(result); + Assert.IsInstanceOfType(result.Value, typeof(ITestLogger)); + } - Assert.IsNotNull(result); - Assert.IsInstanceOfType(result.Value, typeof(ITestLogger)); - } + [TestMethod] + public void TryGetTestExtensionShouldThrowExceptionWithNullUri() + { + _testExtensionManager = new DummyTestExtensionManager(_unfilteredTestExtensions, _filteredTestExtensions, _messageLogger); + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestExtensionManagerTests)); + Assert.ThrowsException(() => + { + var result = _testExtensionManager.TryGetTestExtension(default(Uri)!); + } + ); + } + + [TestMethod] + public void TryGetTestExtensionShouldNotReturnExtensionWithIncorrectlUri() + { + _testExtensionManager = new DummyTestExtensionManager(_unfilteredTestExtensions, _filteredTestExtensions, _messageLogger); + var result = _testExtensionManager.TryGetTestExtension(""); + Assert.IsNull(result); + } + + [TestMethod] + public void TryGetTestExtensionWithStringUriUnitTest() + { + _testExtensionManager = new DummyTestExtensionManager(_unfilteredTestExtensions, _filteredTestExtensions, _messageLogger); + var result = _testExtensionManager.TryGetTestExtension(new Uri("testlogger://logger").AbsoluteUri); - [TestMethod] - public void TryGetTestExtensionShouldThrowExceptionWithNullUri() + Assert.IsNotNull(result); + Assert.IsInstanceOfType(result.Value, typeof(ITestLogger)); + } + + [ExtensionUri("testlogger://logger")] + [FriendlyName("TestLoggerExtension")] + private class ValidLogger3 : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - testExtensionManager = new DummyTestExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestExtensionManagerTests)); - Assert.ThrowsException(() => - { - var result = testExtensionManager.TryGetTestExtension(default(Uri)); - } - ); + events.TestRunMessage += TestMessageHandler; + events.TestRunComplete += Events_TestRunComplete; + events.TestResult += Events_TestResult; } - [TestMethod] - public void TryGetTestExtensionShouldNotReturnExtensionWithIncorrectlUri() + private void Events_TestResult(object? sender, TestResultEventArgs e) { - testExtensionManager = new DummyTestExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); - var result = testExtensionManager.TryGetTestExtension(""); - Assert.IsNull(result); } - [TestMethod] - public void TryGetTestExtensionWithStringUriUnitTest() + private void Events_TestRunComplete(object? sender, TestRunCompleteEventArgs e) { - testExtensionManager = new DummyTestExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); - var result = testExtensionManager.TryGetTestExtension(new Uri("testlogger://logger").AbsoluteUri); - - Assert.IsNotNull(result); - Assert.IsInstanceOfType(result.Value, typeof(ITestLogger)); } - [ExtensionUri("testlogger://logger")] - [FriendlyName("TestLoggerExtension")] - private class ValidLogger3 : ITestLogger + private void TestMessageHandler(object? sender, TestRunMessageEventArgs e) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - events.TestRunMessage += TestMessageHandler; - events.TestRunComplete += Events_TestRunComplete; - events.TestResult += Events_TestResult; - } - - private void Events_TestResult(object sender, TestResultEventArgs e) - { - } - - private void Events_TestRunComplete(object sender, TestRunCompleteEventArgs e) - { - } - - private void TestMessageHandler(object sender, TestRunMessageEventArgs e) - { - } } } +} - internal class DummyTestExtensionManager : TestExtensionManager +internal class DummyTestExtensionManager : TestExtensionManager +{ + public DummyTestExtensionManager(IEnumerable>> unfilteredTestExtensions, IEnumerable> testExtensions, IMessageLogger logger) : base(unfilteredTestExtensions, testExtensions, logger) { - public DummyTestExtensionManager(IEnumerable>> unfilteredTestExtensions, IEnumerable> testExtensions, IMessageLogger logger) : base(unfilteredTestExtensions, testExtensions, logger) - { - } } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestLoggerExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestLoggerExtensionManagerTests.cs index 6a8f749dba..e6990a0641 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestLoggerExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestLoggerExtensionManagerTests.cs @@ -1,45 +1,45 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework +using System; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class TestLoggerExtensionManagerTests { - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; + [TestInitialize] + public void Initialize() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestLoggerExtensionManagerTests)); + } - [TestClass] - public class TestLoggerExtensionManagerTests + [TestMethod] + public void CreateShouldThrowExceptionIfMessageLoggerIsNull() { - [TestInitialize] - public void Initialize() + Assert.ThrowsException(() => { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestLoggerExtensionManagerTests)); - } + var testLoggerExtensionManager = TestLoggerExtensionManager.Create(null!); + }); + } - [TestMethod] - public void CreateShouldThrowExceptionIfMessageLoggerIsNull() + [TestMethod] + public void CreateShouldReturnInstanceOfTestLoggerExtensionManager() + { + try { - Assert.ThrowsException(() => - { - var testLoggerExtensionManager = TestLoggerExtensionManager.Create(null); - }); + var testLoggerExtensionManager = TestLoggerExtensionManager.Create(TestSessionMessageLogger.Instance); + Assert.IsNotNull(testLoggerExtensionManager); + Assert.IsInstanceOfType(testLoggerExtensionManager, typeof(TestLoggerExtensionManager)); } - - [TestMethod] - public void CreateShouldReturnInstanceOfTestLoggerExtensionManager() + finally { - try - { - var testLoggerExtensionManager = TestLoggerExtensionManager.Create(TestSessionMessageLogger.Instance); - Assert.IsNotNull(testLoggerExtensionManager); - Assert.IsInstanceOfType(testLoggerExtensionManager, typeof(TestLoggerExtensionManager)); - } - finally - { - TestSessionMessageLogger.Instance = null; - } + TestSessionMessageLogger.Instance = null; } } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs index aee7e48b94..30612dfc6e 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs @@ -1,383 +1,381 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class TestPluginCacheTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Reflection; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class TestPluginCacheTests + private readonly Mock _mockFileHelper; + + private readonly TestableTestPluginCache _testablePluginCache; + + public TestPluginCacheTests() { - private readonly Mock mockFileHelper; + // Reset the singleton. + TestPluginCache.Instance = null; + _mockFileHelper = new Mock(); + _testablePluginCache = new TestableTestPluginCache([typeof(TestPluginCacheTests).Assembly.Location]); - private readonly TestableTestPluginCache testablePluginCache; + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + } - public TestPluginCacheTests() - { - // Reset the singleton. - TestPluginCache.Instance = null; - this.mockFileHelper = new Mock(); - this.testablePluginCache = new TestableTestPluginCache(new List { typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location }); + #region Properties tests - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - } + [TestMethod] + public void InstanceShouldNotReturnANull() + { + Assert.IsNotNull(TestPluginCache.Instance); + } - #region Properties tests + [TestMethod] + public void TestExtensionsShouldBeNullByDefault() + { + Assert.IsNull(TestPluginCache.Instance.TestExtensions); + } - [TestMethod] - public void InstanceShouldNotReturnANull() - { - Assert.IsNotNull(TestPluginCache.Instance); - } + #endregion - [TestMethod] - public void TestExtensionsShouldBeNullByDefault() - { - Assert.IsNull(TestPluginCache.Instance.TestExtensions); - } + #region UpdateAdditionalExtensions tests - #endregion + [TestMethod] + public void UpdateAdditionalExtensionsShouldNotThrowIfExtensionPathIsNull() + { + TestPluginCache.Instance.UpdateExtensions(null, true); + Assert.IsFalse(TestPluginCache.Instance.GetExtensionPaths(string.Empty).Any()); + } - #region UpdateAdditionalExtensions tests + [TestMethod] + public void UpdateAdditionalExtensionsShouldNotThrowIfExtensionPathIsEmpty() + { + TestPluginCache.Instance.UpdateExtensions(new List(), true); + Assert.IsFalse(TestPluginCache.Instance.GetExtensionPaths(string.Empty).Any()); + } - [TestMethod] - public void UpdateAdditionalExtensionsShouldNotThrowIfExtensionPathIsNull() - { - TestPluginCache.Instance.UpdateExtensions(null, true); - Assert.IsFalse(TestPluginCache.Instance.GetExtensionPaths(string.Empty).Any()); - } + [TestMethod] + public void UpdateAdditionalExtensionsShouldUpdateAdditionalExtensions() + { + var additionalExtensions = new List { typeof(TestPluginCacheTests).Assembly.Location }; + TestPluginCache.Instance.UpdateExtensions(additionalExtensions, false); + var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - [TestMethod] - public void UpdateAdditionalExtensionsShouldNotThrowIfExtensionPathIsEmpty() - { - TestPluginCache.Instance.UpdateExtensions(new List(), true); - Assert.IsFalse(TestPluginCache.Instance.GetExtensionPaths(string.Empty).Any()); - } + Assert.IsNotNull(updatedExtensions); + CollectionAssert.AreEqual(additionalExtensions, updatedExtensions.ToList()); + } - [TestMethod] - public void UpdateAdditionalExtensionsShouldUpdateAdditionalExtensions() + [TestMethod] + public void UpdateAdditionalExtensionsShouldOnlyAddUniqueExtensionPaths() + { + var additionalExtensions = new List { - var additionalExtensions = new List { typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location }; - TestPluginCache.Instance.UpdateExtensions(additionalExtensions, false); - var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + typeof(TestPluginCacheTests).Assembly.Location, + typeof(TestPluginCacheTests).Assembly.Location + }; + TestPluginCache.Instance.UpdateExtensions(additionalExtensions, false); + var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + + Assert.IsNotNull(updatedExtensions); + Assert.AreEqual(1, updatedExtensions.Count); + CollectionAssert.AreEqual(new List { additionalExtensions.First() }, updatedExtensions); + } - Assert.IsNotNull(updatedExtensions); - CollectionAssert.AreEqual(additionalExtensions, updatedExtensions.ToList()); - } + [TestMethod] + public void UpdateAdditionalExtensionsShouldUpdatePathsThatDoNotExist() + { + var additionalExtensions = new List { "foo.dll" }; + TestPluginCache.Instance.UpdateExtensions(additionalExtensions, false); + var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - [TestMethod] - public void UpdateAdditionalExtensionsShouldOnlyAddUniqueExtensionPaths() - { - var additionalExtensions = new List - { - typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location, - typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location - }; - TestPluginCache.Instance.UpdateExtensions(additionalExtensions, false); - var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - - Assert.IsNotNull(updatedExtensions); - Assert.AreEqual(1, updatedExtensions.Count); - CollectionAssert.AreEqual(new List { additionalExtensions.First() }, updatedExtensions); - } - - [TestMethod] - public void UpdateAdditionalExtensionsShouldUpdatePathsThatDoNotExist() - { - var additionalExtensions = new List { "foo.dll" }; - TestPluginCache.Instance.UpdateExtensions(additionalExtensions, false); - var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + Assert.IsNotNull(updatedExtensions); + Assert.AreEqual(1, updatedExtensions.Count); + } - Assert.IsNotNull(updatedExtensions); - Assert.AreEqual(1, updatedExtensions.Count); - } + [TestMethod] + public void UpdateAdditionalExtensionsShouldUpdateUnfilteredExtensionsListWhenSkipFilteringIsTrue() + { + var additionalExtensions = new List { "foo.dll" }; + TestPluginCache.Instance.UpdateExtensions(additionalExtensions, true); + var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths("testadapter.dll"); - [TestMethod] - public void UpdateAdditionalExtensionsShouldUpdateUnfilteredExtensionsListWhenSkipFilteringIsTrue() - { - var additionalExtensions = new List { "foo.dll" }; - TestPluginCache.Instance.UpdateExtensions(additionalExtensions, true); - var updatedExtensions = TestPluginCache.Instance.GetExtensionPaths("testadapter.dll"); - - // Since the extension is unfiltered, above filter criteria doesn't filter it - Assert.IsNotNull(updatedExtensions); - Assert.AreEqual(1, updatedExtensions.Count); - } - - [Ignore] - [TestMethod] - public void UpdateAdditionalExtensionsShouldResetExtensionsDiscoveredFlag() - { - } + // Since the extension is unfiltered, above filter criteria doesn't filter it + Assert.IsNotNull(updatedExtensions); + Assert.AreEqual(1, updatedExtensions.Count); + } - #endregion + [Ignore] + [TestMethod] + public void UpdateAdditionalExtensionsShouldResetExtensionsDiscoveredFlag() + { + } - #region ClearExtensions + #endregion - [TestMethod] - public void ClearExtensionsShouldClearPathToExtensions() - { - TestPluginCache.Instance.UpdateExtensions(new List { @"oldExtension.dll" }, false); + #region ClearExtensions - TestPluginCache.Instance.ClearExtensions(); + [TestMethod] + public void ClearExtensionsShouldClearPathToExtensions() + { + TestPluginCache.Instance.UpdateExtensions(new List { @"oldExtension.dll" }, false); - Assert.AreEqual(0, TestPluginCache.Instance.GetExtensionPaths(string.Empty).Count); - } + TestPluginCache.Instance.ClearExtensions(); - #endregion + Assert.AreEqual(0, TestPluginCache.Instance.GetExtensionPaths(string.Empty).Count); + } - #region GetExtensionPaths + #endregion - [TestMethod] - public void GetExtensionPathsShouldConsolidateAllExtensions() - { - var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); - expectedExtensions.Add("default.dll"); - TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll" }, false); - TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); - TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; + #region GetExtensionPaths - var extensions = TestPluginCache.Instance.GetExtensionPaths("filter.dll"); + [TestMethod] + public void GetExtensionPathsShouldConsolidateAllExtensions() + { + var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); + expectedExtensions.Add("default.dll"); + TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll" }, false); + TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); + TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; - CollectionAssert.AreEquivalent(expectedExtensions, extensions); - } + var extensions = TestPluginCache.Instance.GetExtensionPaths("filter.dll"); - [TestMethod] - public void GetExtensionPathsShouldFilterFilterableExtensions() - { - var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); - expectedExtensions.Add("default.dll"); - TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll", @"other.dll" }, false); - TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); - TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; + CollectionAssert.AreEquivalent(expectedExtensions, extensions); + } - var extensions = TestPluginCache.Instance.GetExtensionPaths("filter.dll"); + [TestMethod] + public void GetExtensionPathsShouldFilterFilterableExtensions() + { + var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); + expectedExtensions.Add("default.dll"); + TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll", @"other.dll" }, false); + TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); + TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; - CollectionAssert.AreEquivalent(expectedExtensions, extensions); - } + var extensions = TestPluginCache.Instance.GetExtensionPaths("filter.dll"); - [TestMethod] - public void GetExtensionPathsShouldNotFilterIfEndsWithPatternIsNullOrEmpty() - { - var expectedExtensions = new[] { "filter.dll", "other.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); - expectedExtensions.Add("default.dll"); - TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll", @"other.dll" }, false); - TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); - TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; + CollectionAssert.AreEquivalent(expectedExtensions, extensions); + } - var extensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + [TestMethod] + public void GetExtensionPathsShouldNotFilterIfEndsWithPatternIsNullOrEmpty() + { + var expectedExtensions = new[] { "filter.dll", "other.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); + expectedExtensions.Add("default.dll"); + TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll", @"other.dll" }, false); + TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); + TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; - CollectionAssert.AreEquivalent(expectedExtensions, extensions); - } + var extensions = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - [TestMethod] - public void GetExtensionPathsShouldSkipDefaultExtensionsIfSetTrue() - { - var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); - InvokeGetExtensionPaths(expectedExtensions, true); - } + CollectionAssert.AreEquivalent(expectedExtensions, extensions); + } - [TestMethod] - public void GetExtensionPathsShouldNotSkipDefaultExtensionsIfSetFalse() - { - var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); - expectedExtensions.Add("default.dll"); - InvokeGetExtensionPaths(expectedExtensions, false); - } + [TestMethod] + public void GetExtensionPathsShouldSkipDefaultExtensionsIfSetTrue() + { + var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); + InvokeGetExtensionPaths(expectedExtensions, true); + } - #endregion + [TestMethod] + public void GetExtensionPathsShouldNotSkipDefaultExtensionsIfSetFalse() + { + var expectedExtensions = new[] { "filter.dll", "unfilter.dll" }.Select(Path.GetFullPath).ToList(); + expectedExtensions.Add("default.dll"); + InvokeGetExtensionPaths(expectedExtensions, false); + } - #region GetDefaultResolutionPaths tests + #endregion - [TestMethod] - public void GetDefaultResolutionPathsShouldReturnCurrentDirectoryByDefault() - { - var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).GetTypeInfo().Assembly.Location); - var expectedDirectories = new List { currentDirectory }; + #region GetDefaultResolutionPaths tests - var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); + [TestMethod] + public void GetDefaultResolutionPathsShouldReturnCurrentDirectoryByDefault() + { + var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).Assembly.Location); + var expectedDirectories = new List { currentDirectory! }; - Assert.IsNotNull(resolutionPaths); - CollectionAssert.AreEqual(expectedDirectories, resolutionPaths.ToList()); - } + var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); - [TestMethod] - public void GetDefaultResolutionPathsShouldReturnAdditionalExtensionPathsDirectories() - { - var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).GetTypeInfo().Assembly.Location); - var candidateDirectory = Directory.GetParent(currentDirectory).FullName; - var extensionPaths = new List { Path.Combine(candidateDirectory, "foo.dll") }; + Assert.IsNotNull(resolutionPaths); + CollectionAssert.AreEqual(expectedDirectories, resolutionPaths.ToList()); + } - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); - var testableTestPluginCache = new TestableTestPluginCache(); + [TestMethod] + public void GetDefaultResolutionPathsShouldReturnAdditionalExtensionPathsDirectories() + { + var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).Assembly.Location)!; + var candidateDirectory = Directory.GetParent(currentDirectory)!.FullName; + var extensionPaths = new List { Path.Combine(candidateDirectory, "foo.dll") }; - TestPluginCache.Instance = testableTestPluginCache; + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); + var testableTestPluginCache = new TestableTestPluginCache(); - TestPluginCache.Instance.UpdateExtensions(extensionPaths, true); - var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); + TestPluginCache.Instance = testableTestPluginCache; - var expectedExtensions = new List { candidateDirectory, currentDirectory }; + TestPluginCache.Instance.UpdateExtensions(extensionPaths, true); + var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); - Assert.IsNotNull(resolutionPaths); - CollectionAssert.AreEqual(expectedExtensions, resolutionPaths.ToList()); - } + var expectedExtensions = new List { candidateDirectory, currentDirectory }; - [TestMethod] - public void GetDefaultResolutionPathsShouldReturnDirectoryFromDefaultExtensionsPath() - { - // Setup the testable instance. - TestPluginCache.Instance = this.testablePluginCache; + Assert.IsNotNull(resolutionPaths); + CollectionAssert.AreEqual(expectedExtensions, resolutionPaths.ToList()); + } - var defaultExtensionsFile = typeof(TestPluginCache).GetTypeInfo().Assembly.Location; - this.testablePluginCache.DefaultExtensionPaths = new List() { defaultExtensionsFile }; + [TestMethod] + public void GetDefaultResolutionPathsShouldReturnDirectoryFromDefaultExtensionsPath() + { + // Setup the testable instance. + TestPluginCache.Instance = _testablePluginCache; - var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); + var defaultExtensionsFile = typeof(TestPluginCache).Assembly.Location; + _testablePluginCache.DefaultExtensionPaths = new List() { defaultExtensionsFile }; - Assert.IsNotNull(resolutionPaths); - Assert.IsTrue(resolutionPaths.Contains(Path.GetDirectoryName(defaultExtensionsFile))); - } + var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); - #endregion + Assert.IsNotNull(resolutionPaths); + Assert.IsTrue(resolutionPaths.Contains(Path.GetDirectoryName(defaultExtensionsFile)!)); + } - #region GetResolutionPaths tests + #endregion - [TestMethod] - public void GetResolutionPathsShouldThrowIfExtensionAssemblyIsNull() - { - Assert.ThrowsException(() => TestPluginCache.Instance.GetResolutionPaths(null)); - } + #region GetResolutionPaths tests - [TestMethod] - public void GetResolutionPathsShouldReturnExtensionAssemblyDirectoryAndTPCommonDirectory() - { - var temp = Path.GetTempPath(); - var resolutionPaths = TestPluginCache.Instance.GetResolutionPaths($@"{temp}{Path.DirectorySeparatorChar}Idonotexist.dll").Select(p => p.Replace("/", "\\")).ToList(); + [TestMethod] + public void GetResolutionPathsShouldThrowIfExtensionAssemblyIsNull() + { + Assert.ThrowsException(() => TestPluginCache.GetResolutionPaths(null!)); + } - var tpCommonDirectory = Path.GetDirectoryName(typeof(TestPluginCache).GetTypeInfo().Assembly.Location); - var expectedPaths = new List { temp, tpCommonDirectory }.ConvertAll(p => p.Replace("/", "\\").TrimEnd('\\')); + [TestMethod] + public void GetResolutionPathsShouldReturnExtensionAssemblyDirectoryAndTpCommonDirectory() + { + var temp = Path.GetTempPath(); + var resolutionPaths = TestPluginCache.GetResolutionPaths($@"{temp}{Path.DirectorySeparatorChar}Idonotexist.dll").Select(p => p.Replace("/", "\\")).ToList(); - CollectionAssert.AreEqual(expectedPaths, resolutionPaths, $"Collection {string.Join(", ", resolutionPaths)}, is not equal to the expected collection {string.Join(", ", expectedPaths)}."); - } + var tpCommonDirectory = Path.GetDirectoryName(typeof(TestPluginCache).Assembly.Location)!; + var expectedPaths = new List { temp, tpCommonDirectory }.ConvertAll(p => p.Replace("/", "\\").TrimEnd('\\')); - [TestMethod] - public void GetResolutionPathsShouldNotHaveDuplicatePathsIfExtensionIsInSameDirectory() - { - var tpCommonlocation = typeof(TestPluginCache).GetTypeInfo().Assembly.Location; + CollectionAssert.AreEqual(expectedPaths, resolutionPaths, $"Collection {string.Join(", ", resolutionPaths)}, is not equal to the expected collection {string.Join(", ", expectedPaths)}."); + } + + [TestMethod] + public void GetResolutionPathsShouldNotHaveDuplicatePathsIfExtensionIsInSameDirectory() + { + var tpCommonlocation = typeof(TestPluginCache).Assembly.Location; - var resolutionPaths = TestPluginCache.Instance.GetResolutionPaths(tpCommonlocation); + var resolutionPaths = TestPluginCache.GetResolutionPaths(tpCommonlocation); - var expectedPaths = new List { Path.GetDirectoryName(tpCommonlocation) }; + var expectedPaths = new List { Path.GetDirectoryName(tpCommonlocation)! }; - CollectionAssert.AreEqual(expectedPaths, resolutionPaths.ToList()); - } + CollectionAssert.AreEqual(expectedPaths, resolutionPaths.ToList()); + } - #endregion + #endregion - #region GetTestExtensions tests + #region GetTestExtensions tests - [TestMethod] - public void GetTestExtensionsShouldReturnExtensionsInAssembly() - { - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestPluginCacheTests)); + [TestMethod] + public void GetTestExtensionsShouldReturnExtensionsInAssembly() + { + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestPluginCacheTests)); - TestPluginCache.Instance.GetTestExtensions(typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location); + TestPluginCache.Instance.GetTestExtensions(typeof(TestPluginCacheTests).Assembly.Location); - Assert.IsNotNull(TestPluginCache.Instance.TestExtensions); - Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestDiscoverers.Count > 0); - } + Assert.IsNotNull(TestPluginCache.Instance.TestExtensions); + Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestDiscoverers!.Count > 0); + } - [TestMethod] - public void GetTestExtensionsShouldAddTestExtensionsDiscoveredToCache() - { - var extensionAssembly = typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location; + [TestMethod] + public void GetTestExtensionsShouldAddTestExtensionsDiscoveredToCache() + { + var extensionAssembly = typeof(TestPluginCacheTests).Assembly.Location; - var testDiscovererPluginInfos = this.testablePluginCache.GetTestExtensions(extensionAssembly); + var testDiscovererPluginInfos = _testablePluginCache.GetTestExtensions(extensionAssembly); - CollectionAssert.AreEqual( - this.testablePluginCache.TestExtensions.TestDiscoverers.Keys, - testDiscovererPluginInfos.Keys); - } + Assert.IsNotNull(_testablePluginCache.TestExtensions); + CollectionAssert.AreEqual( + _testablePluginCache.TestExtensions.TestDiscoverers!.Keys, + testDiscovererPluginInfos.Keys); + } - [TestMethod] - public void GetTestExtensionsShouldGetTestExtensionsFromCache() - { - var extensionAssembly = typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location; - var testDiscovererPluginInfos = this.testablePluginCache.GetTestExtensions(extensionAssembly); - Assert.IsFalse(testDiscovererPluginInfos.ContainsKey("td")); + [TestMethod] + public void GetTestExtensionsShouldGetTestExtensionsFromCache() + { + var extensionAssembly = typeof(TestPluginCacheTests).Assembly.Location; + var testDiscovererPluginInfos = _testablePluginCache.GetTestExtensions(extensionAssembly); + Assert.IsFalse(testDiscovererPluginInfos.ContainsKey("td")); - // Set the cache. - this.testablePluginCache.TestExtensions.TestDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestPluginCacheTests))); + // Set the cache. + _testablePluginCache.TestExtensions!.TestDiscoverers!.Add("td", new TestDiscovererPluginInformation(typeof(TestPluginCacheTests))); - testDiscovererPluginInfos = this.testablePluginCache.GetTestExtensions(extensionAssembly); - Assert.IsTrue(testDiscovererPluginInfos.ContainsKey("td")); - } + testDiscovererPluginInfos = _testablePluginCache.GetTestExtensions(extensionAssembly); + Assert.IsTrue(testDiscovererPluginInfos.ContainsKey("td")); + } - [Ignore] - [TestMethod] - public void GetTestExtensionsShouldShouldThrowIfDiscovererThrows() - { - //TODO : make ITestDiscoverer interface and then mock it in order to make this test case pass. + [Ignore] + [TestMethod] + public void GetTestExtensionsShouldShouldThrowIfDiscovererThrows() + { + //TODO : make ITestDiscoverer interface and then mock it in order to make this test case pass. - var extensionAssembly = typeof(TestPluginCacheTests).GetTypeInfo().Assembly.Location; - Assert.ThrowsException(() => this.testablePluginCache.GetTestExtensions(extensionAssembly)); - } + var extensionAssembly = typeof(TestPluginCacheTests).Assembly.Location; + Assert.ThrowsException(() => _testablePluginCache.GetTestExtensions(extensionAssembly)); + } - #endregion + #endregion - #region DiscoverTestExtensions tests + #region DiscoverTestExtensions tests - [TestMethod] - public void DiscoverTestExtensionsShouldDiscoverExtensionsFromExtensionsFolder() - { - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestPluginCacheTests)); + [TestMethod] + public void DiscoverTestExtensionsShouldDiscoverExtensionsFromExtensionsFolder() + { + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestPluginCacheTests)); - TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); + TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - Assert.IsNotNull(TestPluginCache.Instance.TestExtensions); + Assert.IsNotNull(TestPluginCache.Instance.TestExtensions); - // Validate the discoverers to be absolutely certain. - Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestDiscoverers.Count > 0); - } + // Validate the discoverers to be absolutely certain. + Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestDiscoverers!.Count > 0); + } - [TestMethod] - public void DiscoverTestExtensionsShouldSetCachedBoolToTrue() - { - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestPluginCacheTests)); + [TestMethod] + public void DiscoverTestExtensionsShouldSetCachedBoolToTrue() + { + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(typeof(TestPluginCacheTests)); - TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); + TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - Assert.IsTrue(TestPluginCache.Instance.TestExtensions.AreTestDiscoverersCached); - Assert.IsTrue(TestPluginCache.Instance.TestExtensions.AreTestExtensionsCached()); - } + Assert.IsTrue(TestPluginCache.Instance.TestExtensions!.AreTestDiscoverersCached); + Assert.IsTrue(TestPluginCache.Instance.TestExtensions.AreTestExtensionsCached()); + } - #endregion + #endregion - private void InvokeGetExtensionPaths(List expectedExtensions, bool skipDefaultExtensions) - { - TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll", @"other.dll" }, false); - TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); - TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; + private static void InvokeGetExtensionPaths(List expectedExtensions, bool skipDefaultExtensions) + { + TestPluginCache.Instance.UpdateExtensions(new[] { @"filter.dll", @"other.dll" }, false); + TestPluginCache.Instance.UpdateExtensions(new[] { @"unfilter.dll" }, true); + TestPluginCache.Instance.DefaultExtensionPaths = new[] { "default.dll" }; - var extensions = TestPluginCache.Instance.GetExtensionPaths("filter.dll", skipDefaultExtensions); + var extensions = TestPluginCache.Instance.GetExtensionPaths("filter.dll", skipDefaultExtensions); - CollectionAssert.AreEquivalent(expectedExtensions, extensions); - } + CollectionAssert.AreEquivalent(expectedExtensions, extensions); } } - diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginDiscovererTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginDiscovererTests.cs index 55f20f3543..de46d6098c 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginDiscovererTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginDiscovererTests.cs @@ -1,349 +1,355 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class TestPluginDiscovererTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using System.Xml; - - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using MSTest.TestFramework.AssertExtensions; - - [TestClass] - public class TestPluginDiscovererTests + [TestMethod] + public void GetTestExtensionsInformationShouldNotThrowOnALoadException() { - private TestPluginDiscoverer testPluginDiscoverer; + var pathToExtensions = new List { "foo.dll" }; - public TestPluginDiscovererTests() - { - this.testPluginDiscoverer = new TestPluginDiscoverer(); - } + // The below should not throw an exception. + Assert.IsNotNull(TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions)); + } - [TestMethod] - public void GetTestExtensionsInformationShouldNotThrowOnALoadException() - { - var pathToExtensions = new List { "foo.dll" }; + [TestMethod] + public void GetTestExtensionsInformationShouldNotConsiderAbstractClasses() + { + var pathToExtensions = new List { typeof(TestPluginDiscovererTests).Assembly.Location }; - // The below should not throw an exception. - Assert.IsNotNull(this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions)); - } + // The below should not throw an exception. + var testExtensions = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + var discovererPluginInformation = new TestDiscovererPluginInformation(typeof(AbstractTestDiscoverer)); + Assert.IsFalse(testExtensions.ContainsKey(discovererPluginInformation.IdentifierData!)); + } - [TestMethod] - public void GetTestExtensionsInformationShouldNotConsiderAbstractClasses() - { - var pathToExtensions = new List { typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location }; + [TestMethod] + public void GetTestExtensionsInformationShouldReturnDiscovererExtensions() + { + var pathToExtensions = new List { typeof(TestPluginDiscovererTests).Assembly.Location }; - // The below should not throw an exception. - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - var discovererPluginInformation = new TestDiscovererPluginInformation(typeof(AbstractTestDiscoverer)); - Assert.IsFalse(testExtensions.ContainsKey(discovererPluginInformation.IdentifierData)); - } + // The below should not throw an exception. + var testExtensions = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - [TestMethod] - public void GetTestExtensionsInformationShouldReturnDiscovererExtensions() - { - var pathToExtensions = new List { typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location }; + var discovererPluginInformation = new TestDiscovererPluginInformation(typeof(ValidDiscoverer)); + var discovererPluginInformation2 = new TestDiscovererPluginInformation(typeof(ValidDiscoverer2)); - // The below should not throw an exception. - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + Assert.IsTrue(testExtensions.ContainsKey(discovererPluginInformation.IdentifierData!)); + Assert.IsTrue(testExtensions.ContainsKey(discovererPluginInformation2.IdentifierData!)); + } - var discovererPluginInformation = new TestDiscovererPluginInformation(typeof(ValidDiscoverer)); - var discovererPluginInformation2 = new TestDiscovererPluginInformation(typeof(ValidDiscoverer2)); + [TestMethod] + public void GetTestExtensionsInformationShouldReturnExecutorExtensions() + { + var pathToExtensions = new List { typeof(TestPluginDiscovererTests).Assembly.Location }; - Assert.IsTrue(testExtensions.ContainsKey(discovererPluginInformation.IdentifierData)); - Assert.IsTrue(testExtensions.ContainsKey(discovererPluginInformation2.IdentifierData)); - } + // The below should not throw an exception. + var testExtensions = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - [TestMethod] - public void GetTestExtensionsInformationShouldReturnExecutorExtensions() - { - var pathToExtensions = new List { typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location }; + var pluginInformation = new TestExecutorPluginInformation(typeof(ValidExecutor)); + var pluginInformation2 = new TestExecutorPluginInformation(typeof(ValidExecutor2)); - // The below should not throw an exception. - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + Assert.AreEqual(2, testExtensions.Keys.Count(k => k.Contains("ValidExecutor"))); + Assert.IsTrue(testExtensions.ContainsKey(pluginInformation.IdentifierData!)); + Assert.IsTrue(testExtensions.ContainsKey(pluginInformation2.IdentifierData!)); + } - var pluginInformation = new TestExecutorPluginInformation(typeof(ValidExecutor)); - var pluginInformation2 = new TestExecutorPluginInformation(typeof(ValidExecutor2)); + [TestMethod] + public void GetTestExtensionsInformationShouldReturnLoggerExtensions() + { + var pathToExtensions = new List { typeof(TestPluginDiscovererTests).Assembly.Location }; - Assert.AreEqual(2, testExtensions.Keys.Count(k => k.Contains("ValidExecutor"))); - Assert.IsTrue(testExtensions.ContainsKey(pluginInformation.IdentifierData)); - Assert.IsTrue(testExtensions.ContainsKey(pluginInformation2.IdentifierData)); - } + // The below should not throw an exception. + var testExtensions = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - [TestMethod] - public void GetTestExtensionsInformationShouldReturnLoggerExtensions() - { - var pathToExtensions = new List { typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location }; + var pluginInformation = new TestLoggerPluginInformation(typeof(ValidLogger)); + var pluginInformation2 = new TestLoggerPluginInformation(typeof(ValidLogger2)); - // The below should not throw an exception. - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + Assert.AreEqual(1, testExtensions.Keys.Count(k => k.Contains("csv"))); + Assert.IsTrue(testExtensions.ContainsKey(pluginInformation.IdentifierData!)); + } - var pluginInformation = new TestLoggerPluginInformation(typeof(ValidLogger)); - var pluginInformation2 = new TestLoggerPluginInformation(typeof(ValidLogger2)); + [TestMethod] + public void GetTestExtensionsInformationShouldReturnDataCollectorExtensionsAndIgnoresInvalidDataCollectors() + { + var pathToExtensions = new List { typeof(TestPluginDiscovererTests).Assembly.Location }; - Assert.AreEqual(1, testExtensions.Keys.Count(k => k.Contains("csv"))); - Assert.IsTrue(testExtensions.ContainsKey(pluginInformation.IdentifierData)); - Assert.IsTrue(testExtensions.ContainsKey(pluginInformation2.IdentifierData)); - } + // The below should not throw an exception. + var testExtensions = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - [TestMethod] - public void GetTestExtensionsInformationShouldReturnDataCollectorExtensionsAndIgnoresInvalidDataCollectors() - { - var pathToExtensions = new List { typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location }; + var pluginInformation = new DataCollectorConfig(typeof(ValidDataCollector)); + + Assert.AreEqual(2, testExtensions.Keys.Count); + Assert.AreEqual(1, testExtensions.Keys.Count(k => k.Equals("datacollector://foo/bar"))); + Assert.AreEqual(1, testExtensions.Keys.Count(k => k.Equals("datacollector://foo/bar1"))); + } - // The below should not throw an exception. - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + [TestMethod] + public void GetTestExtensionsInformationShouldReturnSettingsProviderExtensions() + { + var pathToExtensions = new List { typeof(TestPluginDiscovererTests).Assembly.Location }; - var pluginInformation = new DataCollectorConfig(typeof(ValidDataCollector)); + // The below should not throw an exception. + var testExtensions = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - Assert.AreEqual(2, testExtensions.Keys.Count); - Assert.AreEqual(1, testExtensions.Keys.Count(k => k.Equals("datacollector://foo/bar"))); - Assert.AreEqual(1, testExtensions.Keys.Count(k => k.Equals("datacollector://foo/bar1"))); - } + var pluginInformation = new TestSettingsProviderPluginInformation(typeof(ValidSettingsProvider)); + var pluginInformation2 = new TestSettingsProviderPluginInformation(typeof(ValidSettingsProvider2)); - [TestMethod] - public void GetTestExtensionsInformationShouldReturnSettingsProviderExtensions() + Assert.IsTrue(testExtensions.Keys.Select(k => k.Contains("ValidSettingsProvider")).Count() >= 3); + Assert.IsTrue(testExtensions.ContainsKey(pluginInformation.IdentifierData!)); + Assert.IsTrue(testExtensions.ContainsKey(pluginInformation2.IdentifierData!)); + } + + [TestMethod] + public void GetTestExtensionsInformationShouldNotAbortOnFaultyExtensions() + { + var pathToExtensions = new List { - var pathToExtensions = new List { typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location }; + typeof(TestPluginDiscovererTests).Assembly.Location, + }; - // The below should not throw an exception. - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + _ = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); - var pluginInformation = new TestSettingsProviderPluginInformation(typeof(ValidSettingsProvider)); - var pluginInformation2 = new TestSettingsProviderPluginInformation(typeof(ValidSettingsProvider2)); + _ = TestPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + } - Assert.IsTrue(testExtensions.Keys.Select(k => k.Contains("ValidSettingsProvider")).Count() >= 3); - Assert.IsTrue(testExtensions.ContainsKey(pluginInformation.IdentifierData)); - Assert.IsTrue(testExtensions.ContainsKey(pluginInformation2.IdentifierData)); - } + #region Implementations + + #region Discoverers - [TestMethod] - public void GetTestExtensionsInformationShouldNotAbortOnFaultyExtensions() + private abstract class AbstractTestDiscoverer : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { - var pathToExtensions = new List - { - typeof(TestPluginDiscovererTests).GetTypeInfo().Assembly.Location, - }; + throw new NotImplementedException(); + } + } - var testExtensions = this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions); + private class ValidDiscoverer : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + throw new NotImplementedException(); + } + } - Assert.That.DoesNotThrow(() =>this.testPluginDiscoverer.GetTestExtensionsInformation(pathToExtensions)); + private class ValidDiscoverer2 : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + throw new NotImplementedException(); } + } - #region Implementations + #endregion - #region Discoverers + #region Executors - private abstract class AbstractTestDiscoverer : ITestDiscoverer + [ExtensionUri("ValidExecutor")] + private class ValidExecutor : ITestExecutor + { + public void Cancel() { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - private class ValidDiscoverer : ITestDiscoverer + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - private class ValidDiscoverer2 : ITestDiscoverer + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + [ExtensionUri("ValidExecutor2")] + private class ValidExecutor2 : ITestExecutor + { + public void Cancel() + { + throw new NotImplementedException(); + } - #region Executors + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); + } + + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); + } + } - [ExtensionUri("ValidExecutor")] - private class ValidExecutor : ITestExecutor + [ExtensionUri("ValidExecutor")] + private class DuplicateExecutor : ITestExecutor + { + public void Cancel() { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - [ExtensionUri("ValidExecutor2")] - private class ValidExecutor2 : ITestExecutor + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - [ExtensionUri("ValidExecutor")] - private class DuplicateExecutor : ITestExecutor + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + #endregion - #region Loggers + #region Loggers - [ExtensionUri("csv")] - private class ValidLogger : ITestLogger + [ExtensionUri("csv")] + private class ValidLogger : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [ExtensionUri("docx")] - private class ValidLogger2 : ITestLogger + [ExtensionUri("docx")] + private class ValidLogger2 : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [ExtensionUri("csv")] - private class DuplicateLogger : ITestLogger + [ExtensionUri("csv")] + private class DuplicateLogger : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + #endregion - #region Settings Providers + #region Settings Providers - [SettingsName("ValidSettingsProvider")] - private class ValidSettingsProvider : ISettingsProvider + [SettingsName("ValidSettingsProvider")] + private class ValidSettingsProvider : ISettingsProvider + { + public void Load(XmlReader reader) { - public void Load(XmlReader reader) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [SettingsName("ValidSettingsProvider2")] - private class ValidSettingsProvider2 : ISettingsProvider + [SettingsName("ValidSettingsProvider2")] + private class ValidSettingsProvider2 : ISettingsProvider + { + public void Load(XmlReader reader) { - public void Load(XmlReader reader) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [SettingsName("ValidSettingsProvider")] - private class DuplicateSettingsProvider : ISettingsProvider + [SettingsName("ValidSettingsProvider")] + private class DuplicateSettingsProvider : ISettingsProvider + { + public void Load(XmlReader reader) { - public void Load(XmlReader reader) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + #endregion - #region DataCollectors + #region DataCollectors - public class InvalidDataCollector : DataCollector + public class InvalidDataCollector : DataCollector + { + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - } } + } - /// - /// The a data collector inheriting from another data collector. - /// - [DataCollectorFriendlyName("Foo1")] - [DataCollectorTypeUri("datacollector://foo/bar1")] - public class ADataCollectorInheritingFromAnotherDataCollector : InvalidDataCollector + /// + /// The a data collector inheriting from another data collector. + /// + [DataCollectorFriendlyName("Foo1")] + [DataCollectorTypeUri("datacollector://foo/bar1")] + public class ADataCollectorInheritingFromAnotherDataCollector : InvalidDataCollector + { + } + + [DataCollectorFriendlyName("Foo")] + [DataCollectorTypeUri("datacollector://foo/bar")] + [DataCollectorAttachmentProcessor(typeof(DataCollectorAttachmentProcessor))] + public class ValidDataCollector : DataCollector + { + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) { } + } + + public class DataCollectorAttachmentProcessor : IDataCollectorAttachmentProcessor + { + public bool SupportsIncrementalProcessing => throw new NotImplementedException(); + + public IEnumerable GetExtensionUris() + { + throw new NotImplementedException(); + } - [DataCollectorFriendlyName("Foo")] - [DataCollectorTypeUri("datacollector://foo/bar")] - public class ValidDataCollector : DataCollector + public Task> ProcessAttachmentSetsAsync(XmlElement configurationElement, ICollection attachments, IProgress progressReporter, IMessageLogger logger, CancellationToken cancellationToken) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - } + throw new NotImplementedException(); } - #endregion + } + #endregion - internal class FaultyTestExecutorPluginInformation : TestExtensionPluginInformation + internal class FaultyTestExecutorPluginInformation : TestExtensionPluginInformation + { + /// + /// Default constructor + /// + /// The Type. + public FaultyTestExecutorPluginInformation(Type type) : base(type) { - /// - /// Default constructor - /// - /// The Type. - public FaultyTestExecutorPluginInformation(Type type): base(type) - { - throw new Exception(); - } + throw new Exception(); } - #endregion } + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginManagerTests.cs index 6684ecde72..62682571f6 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginManagerTests.cs @@ -1,155 +1,153 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework; + +[TestClass] +public class TestPluginManagerTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestPluginManagerTests + [TestMethod] + public void GetTestExtensionTypeShouldReturnExtensionType() { - [TestMethod] - public void GetTestExtensionTypeShouldReturnExtensionType() - { - var type = TestPluginManager.GetTestExtensionType(typeof(TestPluginManagerTests).AssemblyQualifiedName); + var type = TestPluginManager.GetTestExtensionType(typeof(TestPluginManagerTests).AssemblyQualifiedName!); - Assert.AreEqual(typeof(TestPluginManagerTests), type); - } + Assert.AreEqual(typeof(TestPluginManagerTests), type); + } - [TestMethod] - public void GetTestExtensionTypeShouldThrowIfTypeNotFound() - { - Assert.ThrowsException(() => TestPluginManager.GetTestExtensionType("randomassemblyname.random")); - } + [TestMethod] + public void GetTestExtensionTypeShouldThrowIfTypeNotFound() + { + Assert.ThrowsException(() => TestPluginManager.GetTestExtensionType("randomassemblyname.random")); + } - [TestMethod] - public void CreateTestExtensionShouldCreateExtensionTypeInstance() - { - var instance = TestPluginManager.CreateTestExtension(typeof(DummyTestDiscoverer)); + [TestMethod] + public void CreateTestExtensionShouldCreateExtensionTypeInstance() + { + var instance = TestPluginManager.CreateTestExtension(typeof(DummyTestDiscoverer)); - Assert.IsNotNull(instance); - } + Assert.IsNotNull(instance); + } - [TestMethod] - public void CreateTestExtensionShouldThrowIfInstanceCannotBeCreated() - { - Assert.ThrowsException(() => TestPluginManager.CreateTestExtension(typeof(AbstractDummyLogger))); - } + [TestMethod] + public void CreateTestExtensionShouldThrowIfInstanceCannotBeCreated() + { + Assert.ThrowsException(() => TestPluginManager.CreateTestExtension(typeof(AbstractDummyLogger))); + } - [TestMethod] - public void InstanceShouldReturnTestPluginManagerInstance() - { - var instance = TestPluginManager.Instance; + [TestMethod] + public void InstanceShouldReturnTestPluginManagerInstance() + { + var instance = TestPluginManager.Instance; - Assert.IsNotNull(instance); - Assert.IsTrue(instance is TestPluginManager); - } + Assert.IsNotNull(instance); + Assert.IsTrue(instance is TestPluginManager); + } - [TestMethod] - public void InstanceShouldReturnCachedTestPluginManagerInstance() - { - var instance = TestPluginManager.Instance; + [TestMethod] + public void InstanceShouldReturnCachedTestPluginManagerInstance() + { + var instance = TestPluginManager.Instance; - Assert.AreEqual(instance, TestPluginManager.Instance); - } + Assert.AreEqual(instance, TestPluginManager.Instance); + } - [TestMethod] - public void GetTestExtensionsShouldReturnTestDiscovererExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestPluginManagerTests)); + [TestMethod] + public void GetTestExtensionsShouldReturnTestDiscovererExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestPluginManagerTests)); - TestPluginManager.Instance.GetSpecificTestExtensions( - TestPlatformConstants.TestAdapterEndsWithPattern, - out var unfilteredTestExtensions, - out var testExtensions); + TestPluginManager.GetSpecificTestExtensions( + TestPlatformConstants.TestAdapterEndsWithPattern, + out var unfilteredTestExtensions, + out var testExtensions); - Assert.IsNotNull(unfilteredTestExtensions); - Assert.IsNotNull(testExtensions); - Assert.IsTrue(testExtensions.Any()); - } + Assert.IsNotNull(unfilteredTestExtensions); + Assert.IsNotNull(testExtensions); + Assert.IsTrue(testExtensions.Any()); + } - [TestMethod] - public void GetTestExtensionsShouldDiscoverExtensionsOnlyOnce() - { - var discoveryCount = 0; - TestPluginCacheHelper.SetupMockExtensions(typeof(TestPluginManagerTests), () => { discoveryCount++; }); + [TestMethod] + public void GetTestExtensionsShouldDiscoverExtensionsOnlyOnce() + { + var discoveryCount = 0; + TestPluginCacheHelper.SetupMockExtensions(typeof(TestPluginManagerTests), () => discoveryCount++); + + TestPluginManager.GetSpecificTestExtensions( + TestPlatformConstants.TestAdapterEndsWithPattern, + out var unfilteredTestExtensions, + out var testExtensions); + + // Call this again to verify that discovery is not called again. + TestPluginManager.GetSpecificTestExtensions( + TestPlatformConstants.TestAdapterEndsWithPattern, + out unfilteredTestExtensions, + out testExtensions); + + Assert.IsNotNull(testExtensions); + Assert.IsTrue(testExtensions.Any()); + + Assert.AreEqual(2, discoveryCount); + } - TestPluginManager.Instance.GetSpecificTestExtensions( - TestPlatformConstants.TestAdapterEndsWithPattern, - out var unfilteredTestExtensions, + [TestMethod] + public void GetTestExtensionsForAnExtensionAssemblyShouldReturnExtensionsInThatAssembly() + { + TestPluginManager.GetTestExtensions( + typeof(TestPluginManagerTests).Assembly.Location, + out _, out var testExtensions); - // Call this again to verify that discovery is not called again. - TestPluginManager.Instance.GetSpecificTestExtensions( - TestPlatformConstants.TestAdapterEndsWithPattern, - out unfilteredTestExtensions, - out testExtensions); + Assert.IsNotNull(testExtensions); + Assert.IsTrue(testExtensions.Any()); + } - Assert.IsNotNull(testExtensions); - Assert.IsTrue(testExtensions.Any()); + #region Implementations - Assert.AreEqual(2, discoveryCount); + private abstract class AbstractDummyLogger : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) + { + throw new NotImplementedException(); } + } - [TestMethod] - public void GetTestExtensionsForAnExtensionAssemblyShouldReturnExtensionsInThatAssembly() + private class DummyTestDiscoverer : ITestDiscoverer, ITestExecutor + { + public void Cancel() { - TestPluginManager.Instance - .GetTestExtensions( - typeof(TestPluginManagerTests).GetTypeInfo().Assembly.Location, - out var unfilteredTestExtensions, - out var testExtensions); - - Assert.IsNotNull(testExtensions); - Assert.IsTrue(testExtensions.Any()); + throw new NotImplementedException(); } - #region Implementations - - private abstract class AbstractDummyLogger : ITestLogger + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - private class DummyTestDiscoverer : ITestDiscoverer, ITestExecutor + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - #endregion + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); + } } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/LazyExtensionTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/LazyExtensionTests.cs index c4eba8d2fd..97a1a975b2 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/LazyExtensionTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/LazyExtensionTests.cs @@ -1,149 +1,150 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; + +[TestClass] +public class LazyExtensionTests { - using System; - using System.Collections.Generic; - using System.ComponentModel; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class LazyExtensionTests + #region Value tests + + [TestMethod] + public void ValueShouldCreateExtensionViaTheCallback() { - #region Value tests + var mockExtension = new Mock(); + LazyExtension extension = + new( + () => mockExtension.Object, + new Mock().Object); - [TestMethod] - public void ValueShouldCreateExtensionViaTheCallback() - { - var mockExtension = new Mock(); - LazyExtension extension = - new LazyExtension( - () => { return mockExtension.Object; }, - new Mock().Object); + Assert.AreEqual(mockExtension.Object, extension.Value); + } - Assert.AreEqual(mockExtension.Object, extension.Value); - } + [TestMethod] + public void ValueShouldCreateExtensionViaTestPluginManager() + { + var testDiscovererPluginInfo = new TestDiscovererPluginInformation(typeof(DummyExtension)); + LazyExtension extension = + new( + testDiscovererPluginInfo, + new Mock().Object); + + Assert.IsNotNull(extension.Value); + Assert.AreEqual(typeof(DummyExtension), extension.Value.GetType()); + } - [TestMethod] - public void ValueShouldCreateExtensionViaTestPluginManager() - { - var testDiscovererPluginInfo = new TestDiscovererPluginInformation(typeof(DummyExtension)); - LazyExtension extension = - new LazyExtension( - testDiscovererPluginInfo, - new Mock().Object); - - Assert.IsNotNull(extension.Value); - Assert.AreEqual(typeof(DummyExtension), extension.Value.GetType()); - } + [TestMethod] + public void ValueShouldNotCreateExtensionIfAlreadyCreated() + { + var numberOfTimesExtensionCreated = 0; + var mockExtension = new Mock(); + LazyExtension extension = + new( + () => + { + numberOfTimesExtensionCreated++; + return mockExtension.Object; + }, + new Mock().Object); + + var temp = extension.Value; + temp = extension.Value; + + Assert.AreEqual(1, numberOfTimesExtensionCreated); + } - [TestMethod] - public void ValueShouldNotCreateExtensionIfAlreadyCreated() - { - var numberOfTimesExtensionCreated = 0; - var mockExtension = new Mock(); - LazyExtension extension = - new LazyExtension( - () => - { - numberOfTimesExtensionCreated++; - return mockExtension.Object; - }, - new Mock().Object); - - var temp = extension.Value; - temp = extension.Value; - - Assert.AreEqual(1, numberOfTimesExtensionCreated); - } + #endregion + + #region metadata tests - #endregion + [TestMethod] + public void MetadataShouldReturnMetadataSpecified() + { + var testDiscovererPluginInfo = new TestDiscovererPluginInformation(typeof(DummyExtension)); + var mockMetadata = new Mock(); + LazyExtension extension = new(testDiscovererPluginInfo, mockMetadata.Object); + + Assert.AreEqual(mockMetadata.Object, extension.Metadata); + } - #region metadata tests + [TestMethod] + public void MetadataShouldCreateMetadataFromMetadataType() + { + var testDiscovererPluginInfo = new TestDiscovererPluginInformation(typeof(DummyExtension)); + LazyExtension extension = new(testDiscovererPluginInfo, typeof(DummyDiscovererCapability)); + + var metadata = extension.Metadata; + Assert.IsNotNull(metadata); + Assert.AreEqual(typeof(DummyDiscovererCapability), metadata.GetType()); + CollectionAssert.AreEqual(new List { "csv" }, metadata.FileExtension!.ToArray()); + Assert.AreEqual("executor://unittestexecutor/", metadata.DefaultExecutorUri!.AbsoluteUri); + Assert.AreEqual(AssemblyType.Native, metadata.AssemblyType); + Assert.IsFalse(metadata.IsDirectoryBased); + } - [TestMethod] - public void MetadataShouldReturnMetadataSpecified() + #endregion + + #region Implementation + + private class DummyDiscovererCapability : ITestDiscovererCapabilities + { + public IEnumerable FileExtension { - var testDiscovererPluginInfo = new TestDiscovererPluginInformation(typeof(DummyExtension)); - var mockMetadata = new Mock(); - LazyExtension extension = - new LazyExtension( - testDiscovererPluginInfo, - mockMetadata.Object); - - Assert.AreEqual(mockMetadata.Object, extension.Metadata); + get; + private set; } - [TestMethod] - public void MetadataShouldCreateMetadataFromMetadataType() + public Uri DefaultExecutorUri { - var testDiscovererPluginInfo = new TestDiscovererPluginInformation(typeof(DummyExtension)); - LazyExtension extension = - new LazyExtension( - testDiscovererPluginInfo, - typeof(DummyDiscovererCapability)); - - var metadata = extension.Metadata; - Assert.IsNotNull(metadata); - Assert.AreEqual(typeof(DummyDiscovererCapability), metadata.GetType()); - CollectionAssert.AreEqual(new List { "csv" }, (metadata as ITestDiscovererCapabilities).FileExtension.ToArray()); - Assert.AreEqual("executor://unittestexecutor/", (metadata as ITestDiscovererCapabilities).DefaultExecutorUri.AbsoluteUri); - Assert.AreEqual(AssemblyType.Native, (metadata as ITestDiscovererCapabilities).AssemblyType); + get; + private set; } - #endregion - - #region Implementation - - private class DummyDiscovererCapability : ITestDiscovererCapabilities + public AssemblyType AssemblyType { - public IEnumerable FileExtension - { - get; - private set; - } - - public Uri DefaultExecutorUri - { - get; - private set; - } - - public AssemblyType AssemblyType - { - get; - private set; - } - - public DummyDiscovererCapability(List fileExtensions, string executorURI, AssemblyType assemblyType) - { - this.FileExtension = fileExtensions; - this.DefaultExecutorUri = new Uri(executorURI); - this.AssemblyType = assemblyType; - } + get; + private set; } + public bool IsDirectoryBased + { + get; + private set; + } - [FileExtension("csv")] - [DefaultExecutorUri("executor://unittestexecutor")] - [Category("native")] - private class DummyExtension : ITestDiscoverer + public DummyDiscovererCapability(List fileExtensions, string executorUri, AssemblyType assemblyType, bool isDirectoryBased) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - } + FileExtension = fileExtensions; + DefaultExecutorUri = new Uri(executorUri); + AssemblyType = assemblyType; + IsDirectoryBased = isDirectoryBased; } + } - #endregion + [FileExtension("csv")] + [DefaultExecutorUri("executor://unittestexecutor")] + [Category("native")] + private class DummyExtension : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + } } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs index 114bcf4b7b..e6831cf97b 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs @@ -1,315 +1,313 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors.Utilities +using System; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors.Utilities; + +[TestClass] +public class RunSettingsProviderExtensionsTests { - using System; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using System.Text.RegularExpressions; - - [TestClass] - public class RunSettingsProviderExtensionsTests - { - private IRunSettingsProvider runSettingsProvider; - - [TestInitialize] - public void Init() - { - runSettingsProvider = new TestableRunSettingsProvider(); - } + private readonly IRunSettingsProvider _runSettingsProvider; - [TestMethod] - public void UpdateRunSettingsShouldUpdateGivenSettingsXml() - { - string runSettingsXml = string.Join(Environment.NewLine, - "", - " ", - " X86", - " ", - ""); + public RunSettingsProviderExtensionsTests() + { + _runSettingsProvider = new TestableRunSettingsProvider(); + } - this.runSettingsProvider.UpdateRunSettings(runSettingsXml); + [TestMethod] + public void UpdateRunSettingsShouldUpdateGivenSettingsXml() + { + string runSettingsXml = string.Join(Environment.NewLine, + "", + " ", + " X86", + " ", + ""); - StringAssert.Contains(this.runSettingsProvider.ActiveRunSettings.SettingsXml, runSettingsXml); - } + _runSettingsProvider.UpdateRunSettings(runSettingsXml); - [TestMethod] - public void UpdateRunSettingsShouldThrownExceptionIfRunSettingsProviderIsNull() - { - Assert.ThrowsException( - () => RunSettingsProviderExtensions.UpdateRunSettings(null, "")); - } + StringAssert.Contains(_runSettingsProvider.ActiveRunSettings!.SettingsXml, runSettingsXml); + } - [TestMethod] - public void UpdateRunSettingsShouldThrownExceptionIfSettingsXmlIsNull() - { - Assert.ThrowsException( - () => this.runSettingsProvider.UpdateRunSettings(null)); - } + [TestMethod] + public void UpdateRunSettingsShouldThrownExceptionIfRunSettingsProviderIsNull() + { + Assert.ThrowsException( + () => RunSettingsProviderExtensions.UpdateRunSettings(null!, "")); + } - [TestMethod] - public void UpdateRunSettingsShouldThrownExceptionIfSettingsXmlIsEmptyOrWhiteSpace() - { - Assert.ThrowsException( - () => this.runSettingsProvider.UpdateRunSettings(" ")); - } + [TestMethod] + public void UpdateRunSettingsShouldThrownExceptionIfSettingsXmlIsNull() + { + Assert.ThrowsException( + () => _runSettingsProvider.UpdateRunSettings(null!)); + } - [TestMethod] - public void AddDefaultRunSettingsShouldSetDefaultSettingsForEmptySettings() - { - this.runSettingsProvider.AddDefaultRunSettings(); + [TestMethod] + public void UpdateRunSettingsShouldThrownExceptionIfSettingsXmlIsEmptyOrWhiteSpace() + { + Assert.ThrowsException( + () => _runSettingsProvider.UpdateRunSettings(" ")); + } - var runConfiguration = - XmlRunSettingsUtilities.GetRunConfigurationNode(this.runSettingsProvider.ActiveRunSettings.SettingsXml); - Assert.AreEqual(runConfiguration.ResultsDirectory, Constants.DefaultResultsDirectory); - Assert.AreEqual(runConfiguration.TargetFramework.ToString(), Framework.DefaultFramework.ToString()); - Assert.AreEqual(runConfiguration.TargetPlatform, Constants.DefaultPlatform); - } + [TestMethod] + public void AddDefaultRunSettingsShouldSetDefaultSettingsForEmptySettings() + { + _runSettingsProvider.AddDefaultRunSettings(); - [TestMethod] - public void AddDefaultRunSettingsShouldAddUnspecifiedSettings() - { - this.runSettingsProvider.UpdateRunSettings(string.Join(Environment.NewLine, - "", - " ", - " X86", - " ", - "")); - - this.runSettingsProvider.AddDefaultRunSettings(); - - var runConfiguration = - XmlRunSettingsUtilities.GetRunConfigurationNode(this.runSettingsProvider.ActiveRunSettings.SettingsXml); - Assert.AreEqual(runConfiguration.ResultsDirectory, Constants.DefaultResultsDirectory); - Assert.AreEqual(runConfiguration.TargetFramework.ToString(), Framework.DefaultFramework.ToString()); - } + var runConfiguration = + XmlRunSettingsUtilities.GetRunConfigurationNode(_runSettingsProvider.ActiveRunSettings!.SettingsXml); + Assert.AreEqual(runConfiguration.ResultsDirectory, Constants.DefaultResultsDirectory); + Assert.AreEqual(runConfiguration.TargetFramework!.ToString(), Framework.DefaultFramework.ToString()); + Assert.AreEqual(runConfiguration.TargetPlatform, Constants.DefaultPlatform); + } - [TestMethod] - public void AddDefaultRunSettingsShouldNotChangeSpecifiedSettings() - { - this.runSettingsProvider.UpdateRunSettings(string.Join(Environment.NewLine, - "", - " ", - " X64 ", - "")); + [TestMethod] + public void AddDefaultRunSettingsShouldAddUnspecifiedSettings() + { + _runSettingsProvider.UpdateRunSettings(string.Join(Environment.NewLine, + "", + " ", + " X86", + " ", + "")); + + _runSettingsProvider.AddDefaultRunSettings(); + + var runConfiguration = + XmlRunSettingsUtilities.GetRunConfigurationNode(_runSettingsProvider.ActiveRunSettings!.SettingsXml); + Assert.AreEqual(runConfiguration.ResultsDirectory, Constants.DefaultResultsDirectory); + Assert.AreEqual(runConfiguration.TargetFramework!.ToString(), Framework.DefaultFramework.ToString()); + } - this.runSettingsProvider.AddDefaultRunSettings(); + [TestMethod] + public void AddDefaultRunSettingsShouldNotChangeSpecifiedSettings() + { + _runSettingsProvider.UpdateRunSettings(string.Join(Environment.NewLine, + "", + " ", + " X64 ", + "")); - var runConfiguration = - XmlRunSettingsUtilities.GetRunConfigurationNode(this.runSettingsProvider.ActiveRunSettings.SettingsXml); - Assert.AreEqual(runConfiguration.TargetPlatform, Architecture.X64); - } + _runSettingsProvider.AddDefaultRunSettings(); - [TestMethod] - public void AddDefaultRunSettingsShouldThrowExceptionIfArgumentIsNull() - { - Assert.ThrowsException(() => - RunSettingsProviderExtensions.AddDefaultRunSettings(null)); - } + var runConfiguration = + XmlRunSettingsUtilities.GetRunConfigurationNode(_runSettingsProvider.ActiveRunSettings!.SettingsXml); + Assert.AreEqual(runConfiguration.TargetPlatform, Architecture.X64); + } - [TestMethod] - public void UpdateRunSettingsNodeShouldThrowExceptionIfKeyIsNull() - { - Assert.ThrowsException(() => - this.runSettingsProvider.UpdateRunSettingsNode(null, "data")); - } + [TestMethod] + public void AddDefaultRunSettingsShouldThrowExceptionIfArgumentIsNull() + { + Assert.ThrowsException(() => + RunSettingsProviderExtensions.AddDefaultRunSettings(null!)); + } - [TestMethod] - public void UpdateRunSettingsNodeShouldThrowExceptionIfKeyIsEmptyOrWhiteSpace() - { - Assert.ThrowsException(() => - this.runSettingsProvider.UpdateRunSettingsNode(" ", "data")); - } + [TestMethod] + public void UpdateRunSettingsNodeShouldThrowExceptionIfKeyIsNull() + { + Assert.ThrowsException(() => + _runSettingsProvider.UpdateRunSettingsNode(null!, "data")); + } - [TestMethod] - public void UpdateRunSettingsNodeShouldThrowExceptionIfDataIsNull() - { - Assert.ThrowsException(() => - this.runSettingsProvider.UpdateRunSettingsNode("Key", null)); - } + [TestMethod] + public void UpdateRunSettingsNodeShouldThrowExceptionIfKeyIsEmptyOrWhiteSpace() + { + Assert.ThrowsException(() => + _runSettingsProvider.UpdateRunSettingsNode(" ", "data")); + } - [TestMethod] - public void UpdateRunSettingsNodeShouldThrowExceptionIfRunSettingsProviderIsNull() - { - Assert.ThrowsException(() => - RunSettingsProviderExtensions.UpdateRunSettingsNode(null, "Key", "data")); - } + [TestMethod] + public void UpdateRunSettingsNodeShouldThrowExceptionIfDataIsNull() + { + Assert.ThrowsException(() => + _runSettingsProvider.UpdateRunSettingsNode("Key", null!)); + } - [TestMethod] - public void UpdateRunSettingsNodeShouldAddNewKeyIfNotPresent() - { - this.runSettingsProvider.UpdateRunSettings( - " "); - this.runSettingsProvider.UpdateRunSettingsNode("Key.Path", "data"); + [TestMethod] + public void UpdateRunSettingsNodeShouldThrowExceptionIfRunSettingsProviderIsNull() + { + Assert.ThrowsException(() => + RunSettingsProviderExtensions.UpdateRunSettingsNode(null!, "Key", "data")); + } - Assert.AreEqual("data", this.runSettingsProvider.QueryRunSettingsNode("Key.Path")); - } + [TestMethod] + public void UpdateRunSettingsNodeShouldAddNewKeyIfNotPresent() + { + _runSettingsProvider.UpdateRunSettings( + " "); + _runSettingsProvider.UpdateRunSettingsNode("Key.Path", "data"); - [TestMethod] - public void UpdateTestRunParameterSettingsNodeShouldAddNewKeyIfNotPresent() - { - this.CheckRunSettingsAreUpdated("weburl", @"http://localhost//abc"); - } + Assert.AreEqual("data", _runSettingsProvider.QueryRunSettingsNode("Key.Path")); + } - [TestMethod] - public void UpdateTetsRunParameterSettingsNodeShouldOverrideValueIfKeyIsAlreadyPresent() - { - var runSettingsWithTestRunParameters = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - ""); - var runSettingsWithTestRunParametersOverrode = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - ""); - - this.runSettingsProvider.UpdateRunSettings(runSettingsWithTestRunParameters); - var match = this.runSettingsProvider.GetTestRunParameterNodeMatch( - "TestRunParameters.Parameter(name=\"weburl\",value=\"http://localhost//def\")"); - this.runSettingsProvider.UpdateTestRunParameterSettingsNode(match); - - Assert.AreEqual(runSettingsWithTestRunParametersOverrode, - this.runSettingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void UpdateTestRunParameterSettingsNodeShouldAddNewKeyIfNotPresent() + { + CheckRunSettingsAreUpdated("weburl", @"http://localhost//abc"); + } - [TestMethod] - public void TestRunParameterSettingsNodeCanContainSpecialCharacters() - { - this.CheckRunSettingsAreUpdated("weburl:name", @"http://localhost//abc"); - } + [TestMethod] + public void UpdateTetsRunParameterSettingsNodeShouldOverrideValueIfKeyIsAlreadyPresent() + { + var runSettingsWithTestRunParameters = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + ""); + var runSettingsWithTestRunParametersOverrode = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + ""); + + _runSettingsProvider.UpdateRunSettings(runSettingsWithTestRunParameters); + var match = _runSettingsProvider.GetTestRunParameterNodeMatch( + "TestRunParameters.Parameter(name=\"weburl\",value=\"http://localhost//def\")"); + _runSettingsProvider.UpdateTestRunParameterSettingsNode(match); + + Assert.AreEqual(runSettingsWithTestRunParametersOverrode, + _runSettingsProvider.ActiveRunSettings!.SettingsXml); + } - [TestMethod] - public void TestRunParameterSettingsNodeCanBeJustASingleCharacter() - { - this.CheckRunSettingsAreUpdated("a", @"http://localhost//abc"); - } + [TestMethod] + public void TestRunParameterSettingsNodeCanContainSpecialCharacters() + { + CheckRunSettingsAreUpdated("weburl:name", @"http://localhost//abc"); + } - [TestMethod] - public void TestRunParameterSettingsNodeCanMixSpecialCharacters() - { - this.CheckRunSettingsAreUpdated("___this_Should:be-valid.2", @"http://localhost//abc"); - } + [TestMethod] + public void TestRunParameterSettingsNodeCanBeJustASingleCharacter() + { + CheckRunSettingsAreUpdated("a", @"http://localhost//abc"); + } - [TestMethod] - public void UpdateRunSettingsNodeShouldUpdateKeyIfAlreadyPresent() - { - this.runSettingsProvider.UpdateRunSettings( - " 1 "); - this.runSettingsProvider.UpdateRunSettingsNode("RunConfiguration.MaxCpuCount", "0"); - Assert.AreEqual("0", this.runSettingsProvider.QueryRunSettingsNode("RunConfiguration.MaxCpuCount")); - } + [TestMethod] + public void TestRunParameterSettingsNodeCanMixSpecialCharacters() + { + CheckRunSettingsAreUpdated("___this_Should:be-valid.2", @"http://localhost//abc"); + } - [TestMethod] - public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfKeyIsNull() - { - Assert.ThrowsException(() => - this.runSettingsProvider.UpdateRunSettingsNodeInnerXml(null, "")); - } + [TestMethod] + public void UpdateRunSettingsNodeShouldUpdateKeyIfAlreadyPresent() + { + _runSettingsProvider.UpdateRunSettings( + " 1 "); + _runSettingsProvider.UpdateRunSettingsNode("RunConfiguration.MaxCpuCount", "0"); + Assert.AreEqual("0", _runSettingsProvider.QueryRunSettingsNode("RunConfiguration.MaxCpuCount")); + } - [TestMethod] - public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfKeyIsEmptyOrWhiteSpace() - { - Assert.ThrowsException(() => - this.runSettingsProvider.UpdateRunSettingsNodeInnerXml(" ", "")); - } + [TestMethod] + public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfKeyIsNull() + { + Assert.ThrowsException(() => + _runSettingsProvider.UpdateRunSettingsNodeInnerXml(null!, "")); + } - [TestMethod] - public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfXmlIsNull() - { - Assert.ThrowsException(() => - this.runSettingsProvider.UpdateRunSettingsNodeInnerXml("Key", null)); - } + [TestMethod] + public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfKeyIsEmptyOrWhiteSpace() + { + Assert.ThrowsException(() => + _runSettingsProvider.UpdateRunSettingsNodeInnerXml(" ", "")); + } - [TestMethod] - public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfRunSettingsProviderIsNull() - { - Assert.ThrowsException(() => - RunSettingsProviderExtensions.UpdateRunSettingsNodeInnerXml(null, "Key", "")); - } + [TestMethod] + public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfXmlIsNull() + { + Assert.ThrowsException(() => + _runSettingsProvider.UpdateRunSettingsNodeInnerXml("Key", null!)); + } - [TestMethod] - public void UpdateRunSettingsNodeInnerXmlShouldAddNewKeyIfNotPresent() - { - this.runSettingsProvider.UpdateRunSettings( - " "); - this.runSettingsProvider.UpdateRunSettingsNodeInnerXml("Key.Path", "myxml"); + [TestMethod] + public void UpdateRunSettingsNodeInnerXmlShouldThrowExceptionIfRunSettingsProviderIsNull() + { + Assert.ThrowsException(() => + RunSettingsProviderExtensions.UpdateRunSettingsNodeInnerXml(null!, "Key", "")); + } - Assert.AreEqual("myxml", this.runSettingsProvider.QueryRunSettingsNode("Key.Path")); - } + [TestMethod] + public void UpdateRunSettingsNodeInnerXmlShouldAddNewKeyIfNotPresent() + { + _runSettingsProvider.UpdateRunSettings( + " "); + _runSettingsProvider.UpdateRunSettingsNodeInnerXml("Key.Path", "myxml"); - [TestMethod] - public void UpdateRunSettingsNodeInnerXmlShouldUpdateKeyIfAlreadyPresent() - { - this.runSettingsProvider.UpdateRunSettings( - " 1 "); - this.runSettingsProvider.UpdateRunSettingsNodeInnerXml("RunConfiguration", "0"); - Assert.AreEqual("0", this.runSettingsProvider.QueryRunSettingsNode("RunConfiguration.MaxCpuCount")); - } + Assert.AreEqual("myxml", _runSettingsProvider.QueryRunSettingsNode("Key.Path")); + } - [TestMethod] - public void QueryRunSettingsNodeShouldThrowIfKeyIsNull() - { - Assert.ThrowsException(() => this.runSettingsProvider.QueryRunSettingsNode(null)); - } + [TestMethod] + public void UpdateRunSettingsNodeInnerXmlShouldUpdateKeyIfAlreadyPresent() + { + _runSettingsProvider.UpdateRunSettings( + " 1 "); + _runSettingsProvider.UpdateRunSettingsNodeInnerXml("RunConfiguration", "0"); + Assert.AreEqual("0", _runSettingsProvider.QueryRunSettingsNode("RunConfiguration.MaxCpuCount")); + } - [TestMethod] - public void QueryRunSettingsNodeShouldThrowIfKeyIsEmptyOrWhiteSpace() - { - Assert.ThrowsException(() => this.runSettingsProvider.QueryRunSettingsNode(" ")); - } + [TestMethod] + public void QueryRunSettingsNodeShouldThrowIfKeyIsNull() + { + Assert.ThrowsException(() => _runSettingsProvider.QueryRunSettingsNode(null!)); + } - [TestMethod] - public void QueryRunSettingsNodeShouldReturnNullForNotExistKey() - { - Assert.IsNull(this.runSettingsProvider.QueryRunSettingsNode("RunConfiguration.TargetPlatform")); - } + [TestMethod] + public void QueryRunSettingsNodeShouldThrowIfKeyIsEmptyOrWhiteSpace() + { + Assert.ThrowsException(() => _runSettingsProvider.QueryRunSettingsNode(" ")); + } - [TestMethod] - public void QueryRunSettingsNodeShouldReturnCorrectValue() - { - this.runSettingsProvider.UpdateRunSettings( - " x86 "); - Assert.AreEqual("x86", this.runSettingsProvider.QueryRunSettingsNode("RunConfiguration.TargetPlatform")); - } + [TestMethod] + public void QueryRunSettingsNodeShouldReturnNullForNotExistKey() + { + Assert.IsNull(_runSettingsProvider.QueryRunSettingsNode("RunConfiguration.TargetPlatform")); + } - private void CheckRunSettingsAreUpdated(string parameterName, string parameterValue) - { - var match = this.runSettingsProvider.GetTestRunParameterNodeMatch( - $@"TestRunParameters.Parameter(name=""{parameterName}"",value=""{parameterValue}"")"); - var runSettingsWithTestRunParameters = string.Join( - Environment.NewLine, - $@"", - $@"", - $@" ", - $@" ", - $@" ", - $@""); - - this.runSettingsProvider.UpdateRunSettings("\r\n "); - this.runSettingsProvider.UpdateTestRunParameterSettingsNode(match); - - Assert.AreEqual(runSettingsWithTestRunParameters, this.runSettingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void QueryRunSettingsNodeShouldReturnCorrectValue() + { + _runSettingsProvider.UpdateRunSettings( + " x86 "); + Assert.AreEqual("x86", _runSettingsProvider.QueryRunSettingsNode("RunConfiguration.TargetPlatform")); + } - private class TestableRunSettingsProvider : IRunSettingsProvider - { - public RunSettings ActiveRunSettings { get; set; } + private void CheckRunSettingsAreUpdated(string parameterName, string parameterValue) + { + var match = _runSettingsProvider.GetTestRunParameterNodeMatch( + $@"TestRunParameters.Parameter(name=""{parameterName}"",value=""{parameterValue}"")"); + var runSettingsWithTestRunParameters = string.Join( + Environment.NewLine, + $@"", + $@"", + $@" ", + $@" ", + $@" ", + $@""); + + _runSettingsProvider.UpdateRunSettings("\r\n "); + _runSettingsProvider.UpdateTestRunParameterSettingsNode(match); + + Assert.AreEqual(runSettingsWithTestRunParameters, _runSettingsProvider.ActiveRunSettings!.SettingsXml); + } + + private class TestableRunSettingsProvider : IRunSettingsProvider + { + public RunSettings? ActiveRunSettings { get; set; } - public void SetActiveRunSettings(RunSettings runSettings) - { - this.ActiveRunSettings = runSettings; - } + public void SetActiveRunSettings(RunSettings runSettings) + { + ActiveRunSettings = runSettings; } } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestDiscovererPluginInformationTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestDiscovererPluginInformationTests.cs index 2ff6af44c3..6b61aa6568 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestDiscovererPluginInformationTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestDiscovererPluginInformationTests.cs @@ -1,197 +1,240 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities -{ - using System; - using System.Collections.Generic; - using System.ComponentModel; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestDiscovererPluginInformationTests - { - private TestDiscovererPluginInformation testPluginInformation; - - [TestMethod] - public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); - Assert.AreEqual(typeof(DummyTestDiscovererWithNoFileExtensions).AssemblyQualifiedName, this.testPluginInformation.AssemblyQualifiedName); - } - - [TestMethod] - public void IdentifierDataShouldReturnTestExtensionTypesName() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); - Assert.AreEqual(typeof(DummyTestDiscovererWithNoFileExtensions).AssemblyQualifiedName, this.testPluginInformation.IdentifierData); - } - - [TestMethod] - public void FileExtensionsShouldReturnEmptyListIfADiscovererSupportsNoFileExtensions() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); - Assert.IsNotNull(this.testPluginInformation.FileExtensions); - Assert.AreEqual(0, this.testPluginInformation.FileExtensions.Count); - } - - [TestMethod] - public void FileExtensionsShouldReturnAFileExtensionForADiscoverer() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithOneFileExtensions)); - CollectionAssert.AreEqual(new List { "csv"}, this.testPluginInformation.FileExtensions); - } - - [TestMethod] - public void FileExtensionsShouldReturnSupportedFileExtensionsForADiscoverer() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithTwoFileExtensions)); - CollectionAssert.AreEqual(new List {"csv", "docx"}, this.testPluginInformation.FileExtensions); - } - - [TestMethod] - public void AssemblyTypeShouldReturnNoneIfDiscovererHasNoCategory() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithNoCategory)); - Assert.AreEqual(AssemblyType.None, this.testPluginInformation.AssemblyType); - } - - [TestMethod] - public void AssemblyTypeShouldReturnNoneIfDiscovererHasCategoryWithNoValue() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithCategoryHavingNoValue)); - Assert.AreEqual(AssemblyType.None, this.testPluginInformation.AssemblyType); - } - - [TestMethod] - public void AssemblyTypeShouldReturnNoneIfDiscovererHasCategoryWithEmptyValue() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithCategoryHavingEmptyValue)); - Assert.AreEqual(AssemblyType.None, this.testPluginInformation.AssemblyType); - } +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; - [TestMethod] - public void AssemblyTypeShouldReturnNativeIfDiscovererHasNativeCategory() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithNativeCategory)); - Assert.AreEqual(AssemblyType.Native, this.testPluginInformation.AssemblyType); - } +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestMethod] - public void AssemblyTypeShouldReturnManagedIfDiscovererHasManagedCategory() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithManagedCategory)); - Assert.AreEqual(AssemblyType.Managed, this.testPluginInformation.AssemblyType); - } +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; - [TestMethod] - public void AssemblyTypeShouldReturnNoneIfDiscovererHasUnknownCategory() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithUnknownCategory)); - Assert.AreEqual(AssemblyType.None, this.testPluginInformation.AssemblyType); - } +[TestClass] +public class TestDiscovererPluginInformationTests +{ + private TestDiscovererPluginInformation? _testPluginInformation; - [TestMethod] - public void AssemblyTypeShouldReturnAssemblyTypeIfDiscovererHasCategoryInArbitCasing() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithArbitCasedCategory)); - Assert.AreEqual(AssemblyType.Native, this.testPluginInformation.AssemblyType); - } + [TestMethod] + public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); + Assert.AreEqual(typeof(DummyTestDiscovererWithNoFileExtensions).AssemblyQualifiedName, _testPluginInformation.AssemblyQualifiedName); + } - [TestMethod] - public void DefaultExecutorUriShouldReturnEmptyListIfADiscovererDoesNotHaveOne() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); - Assert.IsNotNull(this.testPluginInformation.DefaultExecutorUri); - Assert.AreEqual(string.Empty, this.testPluginInformation.DefaultExecutorUri); - } + [TestMethod] + public void IdentifierDataShouldReturnTestExtensionTypesName() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); + Assert.AreEqual(typeof(DummyTestDiscovererWithNoFileExtensions).AssemblyQualifiedName, _testPluginInformation.IdentifierData); + } - [TestMethod] - public void DefaultExecutorUriShouldReturnDefaultExecutorUriOfADiscoverer() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithOneFileExtensions)); - Assert.AreEqual("csvexecutor", this.testPluginInformation.DefaultExecutorUri); - } + [TestMethod] + public void FileExtensionsShouldReturnEmptyListIfADiscovererSupportsNoFileExtensions() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); + Assert.IsNotNull(_testPluginInformation.FileExtensions); + Assert.AreEqual(0, _testPluginInformation.FileExtensions.Count); + Assert.IsFalse(_testPluginInformation.IsDirectoryBased); + } - [TestMethod] - public void MetadataShouldReturnFileExtensionsAndDefaultExecutorUriAndAssemblyType() - { - this.testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithTwoFileExtensions)); + [TestMethod] + public void FileExtensionsShouldReturnAFileExtensionForADiscoverer() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithOneFileExtensions)); + CollectionAssert.AreEqual(new List { "csv" }, _testPluginInformation.FileExtensions); + Assert.IsFalse(_testPluginInformation.IsDirectoryBased); + } - var expectedFileExtensions = new List { "csv", "docx" }; - var testPluginMetada = this.testPluginInformation.Metadata.ToArray(); + [TestMethod] + public void FileExtensionsShouldReturnSupportedFileExtensionsForADiscoverer() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithTwoFileExtensions)); + CollectionAssert.AreEqual(new List { "csv", "docx" }, _testPluginInformation.FileExtensions); + Assert.IsFalse(_testPluginInformation.IsDirectoryBased); + } - CollectionAssert.AreEqual(expectedFileExtensions, (testPluginMetada[0] as List).ToArray()); - Assert.AreEqual("csvexecutor", testPluginMetada[1] as string); - Assert.AreEqual(AssemblyType.Managed, Enum.Parse(typeof(AssemblyType), testPluginMetada[2].ToString())); - } + [TestMethod] + public void AssemblyTypeShouldReturnNoneIfDiscovererHasNoCategory() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithNoCategory)); + Assert.AreEqual(AssemblyType.None, _testPluginInformation.AssemblyType); } - #region Implementation + [TestMethod] + public void AssemblyTypeShouldReturnNoneIfDiscovererHasCategoryWithNoValue() + { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithCategoryHavingNoValue)); + Assert.AreEqual(AssemblyType.None, _testPluginInformation.AssemblyType); + } - public class DummyTestDiscovererWithNoFileExtensions + [TestMethod] + public void AssemblyTypeShouldReturnNoneIfDiscovererHasCategoryWithEmptyValue() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithCategoryHavingEmptyValue)); + Assert.AreEqual(AssemblyType.None, _testPluginInformation.AssemblyType); } - [FileExtension(".dll")] - public class DummyTestDiscovereWithNoCategory + [TestMethod] + public void AssemblyTypeShouldReturnNativeIfDiscovererHasNativeCategory() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithNativeCategory)); + Assert.AreEqual(AssemblyType.Native, _testPluginInformation.AssemblyType); } - [FileExtension(".dll")] - [Category] - public class DummyTestDiscovereWithCategoryHavingNoValue + [TestMethod] + public void AssemblyTypeShouldReturnManagedIfDiscovererHasManagedCategory() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithManagedCategory)); + Assert.AreEqual(AssemblyType.Managed, _testPluginInformation.AssemblyType); } - [FileExtension(".dll")] - [Category] - public class DummyTestDiscovereWithCategoryHavingEmptyValue + [TestMethod] + public void AssemblyTypeShouldReturnNoneIfDiscovererHasUnknownCategory() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithUnknownCategory)); + Assert.AreEqual(AssemblyType.None, _testPluginInformation.AssemblyType); } - [FileExtension(".js")] - [Category("native")] - public class DummyTestDiscovereWithNativeCategory + [TestMethod] + public void AssemblyTypeShouldReturnAssemblyTypeIfDiscovererHasCategoryInArbitCasing() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovereWithArbitCasedCategory)); + Assert.AreEqual(AssemblyType.Native, _testPluginInformation.AssemblyType); } - [FileExtension(".dll")] - [Category("managed")] - public class DummyTestDiscovereWithManagedCategory + [TestMethod] + public void DefaultExecutorUriShouldReturnEmptyListIfADiscovererDoesNotHaveOne() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithNoFileExtensions)); + Assert.IsNotNull(_testPluginInformation.DefaultExecutorUri); + Assert.AreEqual(string.Empty, _testPluginInformation.DefaultExecutorUri); } - [FileExtension(".dll")] - [Category("arbitValue")] - public class DummyTestDiscovereWithUnknownCategory + [TestMethod] + public void DefaultExecutorUriShouldReturnDefaultExecutorUriOfADiscoverer() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithOneFileExtensions)); + Assert.AreEqual("csvexecutor", _testPluginInformation.DefaultExecutorUri); } - [FileExtension(".dll")] - [Category("NatIVe")] - public class DummyTestDiscovereWithArbitCasedCategory + [TestMethod] + public void MetadataShouldReturnFileExtensionsAndDefaultExecutorUriAndAssemblyType() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyTestDiscovererWithTwoFileExtensions)); + + var expectedFileExtensions = new List { "csv", "docx" }; + var testPluginMetada = _testPluginInformation.Metadata.ToArray(); + + CollectionAssert.AreEqual(expectedFileExtensions, ((List)testPluginMetada[0]!).ToArray()); + Assert.AreEqual("csvexecutor", testPluginMetada[1] as string); + Assert.AreEqual(AssemblyType.Managed, Enum.Parse(typeof(AssemblyType), testPluginMetada[2]!.ToString()!)); + Assert.IsFalse(bool.Parse(testPluginMetada[3]!.ToString()!)); } - [FileExtension("csv")] - [DefaultExecutorUri("csvexecutor")] - public class DummyTestDiscovererWithOneFileExtensions + [TestMethod] + public void IsDirectoryBasedShouldReturnTrueIfDiscovererIsDirectoryBased() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyDirectoryBasedTestDiscoverer)); + var testPluginMetada = _testPluginInformation.Metadata.ToArray(); + + Assert.IsNotNull(_testPluginInformation.FileExtensions); + Assert.AreEqual(0, _testPluginInformation.FileExtensions.Count); + Assert.IsNotNull(testPluginMetada[0]); + Assert.AreEqual(0, ((List)testPluginMetada[0]!).Count); + + Assert.IsTrue(_testPluginInformation.IsDirectoryBased); + Assert.IsTrue(bool.Parse(testPluginMetada[3]!.ToString()!)); } - [FileExtension("csv")] - [FileExtension("docx")] - [Category("managed")] - [DefaultExecutorUri("csvexecutor")] - public class DummyTestDiscovererWithTwoFileExtensions + [TestMethod] + public void FileExtensionsAndIsDirectroyBasedShouldReturnCorrectValuesWhenBothAreSupported() { + _testPluginInformation = new TestDiscovererPluginInformation(typeof(DummyDirectoryBasedTestDiscovererWithFileExtensions)); + var testPluginMetada = _testPluginInformation.Metadata.ToArray(); + var expectedFileExtensions = new List { "csv", "docx" }; + + CollectionAssert.AreEqual(expectedFileExtensions, _testPluginInformation.FileExtensions); + CollectionAssert.AreEqual(expectedFileExtensions, ((List)testPluginMetada[0]!)); + + Assert.IsTrue(_testPluginInformation.IsDirectoryBased); + Assert.IsTrue(bool.Parse(testPluginMetada[3]!.ToString()!)); } +} + +#region Implementation + +public class DummyTestDiscovererWithNoFileExtensions +{ +} + +[FileExtension(".dll")] +public class DummyTestDiscovereWithNoCategory +{ +} + +[FileExtension(".dll")] +[Category] +public class DummyTestDiscovereWithCategoryHavingNoValue +{ +} - #endregion +[FileExtension(".dll")] +[Category] +public class DummyTestDiscovereWithCategoryHavingEmptyValue +{ +} + +[FileExtension(".js")] +[Category("native")] +public class DummyTestDiscovereWithNativeCategory +{ +} + +[FileExtension(".dll")] +[Category("managed")] +public class DummyTestDiscovereWithManagedCategory +{ +} + +[FileExtension(".dll")] +[Category("arbitValue")] +public class DummyTestDiscovereWithUnknownCategory +{ +} + +[FileExtension(".dll")] +[Category("NatIVe")] +public class DummyTestDiscovereWithArbitCasedCategory +{ +} + +[FileExtension("csv")] +[DefaultExecutorUri("csvexecutor")] +public class DummyTestDiscovererWithOneFileExtensions +{ +} + +[FileExtension("csv")] +[FileExtension("docx")] +[Category("managed")] +[DefaultExecutorUri("csvexecutor")] +public class DummyTestDiscovererWithTwoFileExtensions +{ +} + +[DirectoryBasedTestDiscoverer] +public class DummyDirectoryBasedTestDiscoverer +{ +} + +[DirectoryBasedTestDiscoverer] +[FileExtension("csv")] +[FileExtension("docx")] +public class DummyDirectoryBasedTestDiscovererWithFileExtensions +{ } +#endregion diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionPluginInformationTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionPluginInformationTests.cs index 357f6c2f23..f2d4bb849c 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionPluginInformationTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionPluginInformationTests.cs @@ -1,77 +1,76 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities -{ - using System; - using System.Linq; +using System; +using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class TestExtensionPluginInformationTests - { - private TestableTestExtensionPluginInformation testPluginInformation; +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; - internal const string DefaultExtensionURI = "executor://unittest"; +[TestClass] +public class TestExtensionPluginInformationTests +{ + private TestableTestExtensionPluginInformation? _testPluginInformation; - [TestMethod] - public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() - { - this.testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithNoExtensionUri)); - Assert.AreEqual(typeof(DummyTestExtensionWithNoExtensionUri).AssemblyQualifiedName, this.testPluginInformation.AssemblyQualifiedName); - } + internal const string DefaultExtensionUri = "executor://unittest"; - [TestMethod] - public void IdentifierDataShouldReturnExtensionUri() - { - this.testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithExtensionUri)); - Assert.AreEqual(DefaultExtensionURI, this.testPluginInformation.IdentifierData); - } + [TestMethod] + public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() + { + _testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithNoExtensionUri)); + Assert.AreEqual(typeof(DummyTestExtensionWithNoExtensionUri).AssemblyQualifiedName, _testPluginInformation.AssemblyQualifiedName); + } - [TestMethod] - public void ExtensionUriShouldReturnEmptyIfAnExtensionDoesNotHaveOne() - { - this.testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithNoExtensionUri)); - Assert.IsNotNull(this.testPluginInformation.ExtensionUri); - Assert.AreEqual(string.Empty, this.testPluginInformation.ExtensionUri); - } + [TestMethod] + public void IdentifierDataShouldReturnExtensionUri() + { + _testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithExtensionUri)); + Assert.AreEqual(DefaultExtensionUri, _testPluginInformation.IdentifierData); + } - [TestMethod] - public void ExtensionUriShouldReturnExtensionUriOfAnExtension() - { - this.testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithExtensionUri)); - Assert.AreEqual(DefaultExtensionURI, this.testPluginInformation.ExtensionUri); - } + [TestMethod] + public void ExtensionUriShouldReturnEmptyIfAnExtensionDoesNotHaveOne() + { + _testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithNoExtensionUri)); + Assert.IsNotNull(_testPluginInformation.ExtensionUri); + Assert.AreEqual(string.Empty, _testPluginInformation.ExtensionUri); + } - [TestMethod] - public void MetadataShouldReturnExtensionUri() - { - this.testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithExtensionUri)); + [TestMethod] + public void ExtensionUriShouldReturnExtensionUriOfAnExtension() + { + _testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithExtensionUri)); + Assert.AreEqual(DefaultExtensionUri, _testPluginInformation.ExtensionUri); + } - CollectionAssert.AreEqual(new object[] { DefaultExtensionURI }, this.testPluginInformation.Metadata.ToArray()); - } + [TestMethod] + public void MetadataShouldReturnExtensionUri() + { + _testPluginInformation = new TestableTestExtensionPluginInformation(typeof(DummyTestExtensionWithExtensionUri)); - #region Implementation + CollectionAssert.AreEqual(new object[] { DefaultExtensionUri }, _testPluginInformation.Metadata.ToArray()); + } - private class TestableTestExtensionPluginInformation : TestExtensionPluginInformation - { - public TestableTestExtensionPluginInformation(Type testExtensionType) : base(testExtensionType) - { - } - } + #region Implementation - private class DummyTestExtensionWithNoExtensionUri + private class TestableTestExtensionPluginInformation : TestExtensionPluginInformation + { + public TestableTestExtensionPluginInformation(Type testExtensionType) : base(testExtensionType) { } + } - [ExtensionUri(TestExtensionPluginInformationTests.DefaultExtensionURI)] - private class DummyTestExtensionWithExtensionUri - { - } + private class DummyTestExtensionWithNoExtensionUri + { + } - #endregion + [ExtensionUri(DefaultExtensionUri)] + private class DummyTestExtensionWithExtensionUri + { } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionsTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionsTests.cs index 4525781aca..aed57338cf 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionsTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestExtensionsTests.cs @@ -1,207 +1,347 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using FluentAssertions; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; + +[TestClass] +public class TestExtensionsTests { - using System.Collections.Generic; + private readonly TestExtensions _testExtensions; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Reflection; + public TestExtensionsTests() + { + _testExtensions = new TestExtensions(); + } - [TestClass] - public class TestExtensionsTests + [TestMethod] + public void AddExtensionsShouldNotThrowIfExtensionsIsNull() { - private TestExtensions testExtensions; + _testExtensions.AddExtension(null); - [TestInitialize] - public void TestInit() - { - this.testExtensions = new TestExtensions(); - } + // Validate that the default state does not change. + Assert.IsNull(_testExtensions.TestDiscoverers); + } - [TestMethod] - public void AddExtensionsShouldNotThrowIfExtensionsIsNull() + [TestMethod] + public void AddExtensionsShouldNotThrowIfExistingExtensionCollectionIsNull() + { + var testDiscoverers = new Dictionary { - this.testExtensions.AddExtension(null); + { + "td", + new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) + } + }; - // Validate that the default state does not change. - Assert.IsNull(this.testExtensions.TestDiscoverers); - } + _testExtensions.AddExtension(testDiscoverers); - [TestMethod] - public void AddExtensionsShouldNotThrowIfExistingExtensionCollectionIsNull() + Assert.IsNotNull(_testExtensions.TestDiscoverers); + CollectionAssert.AreEqual(_testExtensions.TestDiscoverers, testDiscoverers); + + // Validate that the others remain same. + Assert.IsNull(_testExtensions.TestExecutors); + Assert.IsNull(_testExtensions.TestSettingsProviders); + Assert.IsNull(_testExtensions.TestLoggers); + } + + [TestMethod] + public void AddExtensionsShouldAddToExistingExtensionCollection() + { + var testDiscoverers = new Dictionary { - var testDiscoverers = new System.Collections.Generic.Dictionary(); + { "td1", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) }, + { "td2", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; - testDiscoverers.Add( - "td", - new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + _testExtensions.TestDiscoverers = new Dictionary + { + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; + + // Act. + _testExtensions.AddExtension(testDiscoverers); - this.testExtensions.AddExtension(testDiscoverers); + // Validate. + var expectedTestExtensions = new Dictionary + { + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) }, + { "td1", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) }, + { "td2", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; - Assert.IsNotNull(this.testExtensions.TestDiscoverers); - CollectionAssert.AreEqual(this.testExtensions.TestDiscoverers, testDiscoverers); + CollectionAssert.AreEqual(_testExtensions.TestDiscoverers.Keys, expectedTestExtensions.Keys); - // Validate that the others remain same. - Assert.IsNull(this.testExtensions.TestExecutors); - Assert.IsNull(this.testExtensions.TestSettingsProviders); - Assert.IsNull(this.testExtensions.TestLoggers); - } + // Validate that the others remain same. + Assert.IsNull(_testExtensions.TestExecutors); + Assert.IsNull(_testExtensions.TestSettingsProviders); + Assert.IsNull(_testExtensions.TestLoggers); + } - [TestMethod] - public void AddExtensionsShouldAddToExistingExtensionCollection() + [TestMethod] + public void AddExtensionsShouldNotAddAnAlreadyExistingExtensionToTheCollection() + { + var testDiscoverers = new Dictionary { - var testDiscoverers = new System.Collections.Generic.Dictionary(); + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; - testDiscoverers.Add("td1", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); - testDiscoverers.Add("td2", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + _testExtensions.TestDiscoverers = new Dictionary + { + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; - this.testExtensions.TestDiscoverers = new Dictionary(); - this.testExtensions.TestDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + // Act. + _testExtensions.AddExtension(testDiscoverers); - // Act. - this.testExtensions.AddExtension(testDiscoverers); + // Validate. + CollectionAssert.AreEqual(_testExtensions.TestDiscoverers.Keys, testDiscoverers.Keys); - // Validate. - var expectedTestExtensions = new Dictionary(); - expectedTestExtensions.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); - expectedTestExtensions.Add("td1", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); - expectedTestExtensions.Add("td2", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + // Validate that the others remain same. + Assert.IsNull(_testExtensions.TestExecutors); + Assert.IsNull(_testExtensions.TestSettingsProviders); + Assert.IsNull(_testExtensions.TestLoggers); + } - CollectionAssert.AreEqual(this.testExtensions.TestDiscoverers.Keys, expectedTestExtensions.Keys); + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldReturnNullIfNoExtensionsPresent() + { + var assemblyLocation = typeof(TestExtensionsTests).Assembly.Location; - // Validate that the others remain same. - Assert.IsNull(this.testExtensions.TestExecutors); - Assert.IsNull(this.testExtensions.TestSettingsProviders); - Assert.IsNull(this.testExtensions.TestLoggers); - } + Assert.IsNull(_testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation)); + } - [TestMethod] - public void AddExtensionsShouldNotAddAnAlreadyExistingExtensionToTheCollection() + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldNotThrowIfExtensionAssemblyIsNull() + { + _testExtensions.TestDiscoverers = new Dictionary { - var testDiscoverers = new System.Collections.Generic.Dictionary(); + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; - testDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + Assert.IsNull(_testExtensions.GetExtensionsDiscoveredFromAssembly(null)); + } - this.testExtensions.TestDiscoverers = new System.Collections.Generic.Dictionary(); + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestDiscoverers() + { + var assemblyLocation = typeof(TestExtensionsTests).Assembly.Location; - this.testExtensions.TestDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + _testExtensions.TestDiscoverers = new Dictionary + { + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) }, + { "td1", new TestDiscovererPluginInformation(typeof(TestExtensions)) } + }; - // Act. - this.testExtensions.AddExtension(testDiscoverers); + var extensions = _testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); - // Validate. - CollectionAssert.AreEqual(this.testExtensions.TestDiscoverers.Keys, testDiscoverers.Keys); + var expectedExtensions = new Dictionary + { + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; + CollectionAssert.AreEqual(expectedExtensions.Keys, extensions!.TestDiscoverers!.Keys); + } - // Validate that the others remain same. - Assert.IsNull(this.testExtensions.TestExecutors); - Assert.IsNull(this.testExtensions.TestSettingsProviders); - Assert.IsNull(this.testExtensions.TestLoggers); - } + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestExecutors() + { + var assemblyLocation = typeof(TestExtensionsTests).Assembly.Location; - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldReturnNullIfNoExtensionsPresent() + _testExtensions.TestExecutors = new Dictionary { - var assemblyLocation = typeof(TestExtensionsTests).GetTypeInfo().Assembly.Location; + { "te", new TestExecutorPluginInformation(typeof(TestExtensionsTests)) }, + { "te1", new TestExecutorPluginInformation(typeof(TestExtensions)) } + }; - Assert.IsNull(this.testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation)); - } + var extensions = _testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldNotThrowIfExtensionAssemblyIsNull() + var expectedExtensions = new Dictionary { - this.testExtensions.TestDiscoverers = new Dictionary(); - - this.testExtensions.TestDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + { "te", new TestExecutorPluginInformation(typeof(TestExtensionsTests)) } + }; + CollectionAssert.AreEqual(expectedExtensions.Keys, extensions!.TestExecutors!.Keys); + } - Assert.IsNull(this.testExtensions.GetExtensionsDiscoveredFromAssembly(null)); - } + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestSettingsProviders() + { + var assemblyLocation = typeof(TestExtensionsTests).Assembly.Location; - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestDiscoverers() + _testExtensions.TestSettingsProviders = new Dictionary { - var assemblyLocation = typeof(TestExtensionsTests).GetTypeInfo().Assembly.Location; + { "tsp", new TestSettingsProviderPluginInformation(typeof(TestExtensionsTests)) }, + { "tsp1", new TestSettingsProviderPluginInformation(typeof(TestExtensions)) } + }; - this.testExtensions.TestDiscoverers = new Dictionary(); - this.testExtensions.TestDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); - this.testExtensions.TestDiscoverers.Add("td1", new TestDiscovererPluginInformation(typeof(TestExtensions))); + var extensions = _testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); - var extensions = this.testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); + var expectedExtensions = new Dictionary + { + { "tsp", new TestSettingsProviderPluginInformation(typeof(TestExtensionsTests)) } + }; + CollectionAssert.AreEqual(expectedExtensions.Keys, extensions!.TestSettingsProviders!.Keys); + } - var expectedExtensions = new Dictionary(); - expectedExtensions.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); - CollectionAssert.AreEqual(expectedExtensions.Keys, extensions.TestDiscoverers.Keys); - } + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestLoggers() + { + var assemblyLocation = typeof(TestExtensionsTests).Assembly.Location; - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestExecutors() + _testExtensions.TestLoggers = new Dictionary { - var assemblyLocation = typeof(TestExtensionsTests).GetTypeInfo().Assembly.Location; + { "tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests)) }, + { "tl1", new TestLoggerPluginInformation(typeof(TestExtensions)) } + }; - this.testExtensions.TestExecutors = new Dictionary(); - this.testExtensions.TestExecutors.Add("te", new TestExecutorPluginInformation(typeof(TestExtensionsTests))); - this.testExtensions.TestExecutors.Add("te1", new TestExecutorPluginInformation(typeof(TestExtensions))); + var extensions = _testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); - var extensions = this.testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); + var expectedExtensions = new Dictionary + { + { "tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests)) } + }; + CollectionAssert.AreEqual(expectedExtensions.Keys, extensions!.TestLoggers!.Keys); + } - var expectedExtensions = new Dictionary(); - expectedExtensions.Add("te", new TestExecutorPluginInformation(typeof(TestExtensionsTests))); - CollectionAssert.AreEqual(expectedExtensions.Keys, extensions.TestExecutors.Keys); - } + [TestMethod] + public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestDiscoveresAndLoggers() + { + var assemblyLocation = typeof(TestExtensionsTests).Assembly.Location; - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestSettingsProviders() + _testExtensions.TestDiscoverers = new Dictionary { - var assemblyLocation = typeof(TestExtensionsTests).GetTypeInfo().Assembly.Location; + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; - this.testExtensions.TestSettingsProviders = new Dictionary(); - this.testExtensions.TestSettingsProviders.Add("tsp", new TestSettingsProviderPluginInformation(typeof(TestExtensionsTests))); - this.testExtensions.TestSettingsProviders.Add("tsp1", new TestSettingsProviderPluginInformation(typeof(TestExtensions))); + _testExtensions.TestLoggers = new Dictionary + { + { "tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests)) } + }; - var extensions = this.testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); + var extensions = _testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); - var expectedExtensions = new Dictionary(); - expectedExtensions.Add("tsp", new TestSettingsProviderPluginInformation(typeof(TestExtensionsTests))); - CollectionAssert.AreEqual(expectedExtensions.Keys, extensions.TestSettingsProviders.Keys); - } + var expectedDiscoverers = new Dictionary + { + { "td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests)) } + }; + CollectionAssert.AreEqual(expectedDiscoverers.Keys, extensions!.TestDiscoverers!.Keys); - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestLoggers() + var expectedLoggers = new Dictionary { - var assemblyLocation = typeof(TestExtensionsTests).GetTypeInfo().Assembly.Location; + { "tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests)) } + }; + CollectionAssert.AreEqual(expectedLoggers.Keys, extensions.TestLoggers!.Keys); + } - this.testExtensions.TestLoggers = new Dictionary(); - this.testExtensions.TestLoggers.Add("tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests))); - this.testExtensions.TestLoggers.Add("tl1", new TestLoggerPluginInformation(typeof(TestExtensions))); + [TestMethod] + public void MergedDictionaryOfEmptyDictionariesShouldBeAnEmptyDictionary() + { + var first = new Dictionary>(); + var second = new Dictionary>(); + var merged = TestExtensions.CreateMergedDictionary(first, second); - var extensions = this.testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); + // Merging two empty dictionaries should result in an empty dictionary. + merged.Should().HaveCount(0); - var expectedExtensions = new Dictionary(); - expectedExtensions.Add("tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests))); - CollectionAssert.AreEqual(expectedExtensions.Keys, extensions.TestLoggers.Keys); - } + // Make sure the method is "pure" and returns a new reference. + merged.Should().NotBeSameAs(first); + merged.Should().NotBeSameAs(second); + } - [TestMethod] - public void GetExtensionsDiscoveredFromAssemblyShouldReturnTestDiscoveresAndLoggers() + [TestMethod] + public void MergedDictionaryOfOneEmptyAndOneNonEmptyDictionaryShouldContainAllTheItemsOfTheNonEmptyDictionary() + { + var first = new Dictionary>(); + var second = new Dictionary> + { + { "aaa", new HashSet() } + }; + + var merged1 = TestExtensions.CreateMergedDictionary(first, second); + var merged2 = TestExtensions.CreateMergedDictionary(second, first); + + // Merging one empty dictionary with a not empty one should result in a not empty + // dictionary. + merged1.Should().HaveCount(1); + merged2.Should().HaveCount(1); + merged1.Should().ContainKey("aaa"); + merged2.Should().ContainKey("aaa"); + + // Make sure the method stays "pure" and returns a new reference regardless of the input. + merged1.Should().NotBeSameAs(first); + merged1.Should().NotBeSameAs(second); + merged2.Should().NotBeSameAs(first); + merged2.Should().NotBeSameAs(second); + merged1.Should().NotBeSameAs(merged2); + } + + [TestMethod] + public void MergedDictionaryShouldBeEquivalentToTheExpectedDictionary() + { + var first = new Dictionary> { - var assemblyLocation = typeof(TestExtensionsTests).GetTypeInfo().Assembly.Location; + // Merged with "key1" from the next set. + { "key1", ["ext1", "ext2", "ext3"] }, + // Empty hashset, will be removed from the result. + { "key2", [] }, + // Added as is. + { "key5", ["ext1", "ext2"] } + }; + var second = new Dictionary> + { + // Merged with "key1" from the previous set. + { "key1", ["ext2", "ext3", "ext3", "ext4", "ext5"] }, + // Empty hashset, will be removed from the result. + { "key2", [] }, + // Empty hashset, will be removed from the result. + { "key3", [] }, + // Added as is. + { "key4", ["ext1"] } + }; + var expected = new Dictionary> + { + { "key1", ["ext1", "ext2", "ext3", "ext4", "ext5"] }, + { "key4", ["ext1"] }, + { "key5", ["ext1", "ext2"] } + }; - this.testExtensions.TestDiscoverers = new Dictionary(); - this.testExtensions.TestDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); + // Merge the two dictionaries. + var merged = TestExtensions.CreateMergedDictionary(first, second); - this.testExtensions.TestLoggers = new Dictionary(); - this.testExtensions.TestLoggers.Add("tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests))); + // Make sure the merged dictionary has the exact same keys as the expected dictionary. + merged.Should().HaveCount(expected.Count); + merged.Should().ContainKeys(expected.Keys); + expected.Should().ContainKeys(merged.Keys); + + // Make sure the hashsets for each key are equal. + merged.Values.Should().BeEquivalentTo(expected.Values); + } + + [TestMethod] + public void AddExtensionTelemetryShouldAddJsonFormattedDiscoveredExtensionsTelemetry() + { + var telemetryData = new Dictionary(); + var extensions = new Dictionary> + { + { "key1", ["ext1", "ext2", "ext3", "ext4", "ext5"] }, + { "key4", ["ext1"] }, + { "key5", ["ext1", "ext2"] } + }; - var extensions = this.testExtensions.GetExtensionsDiscoveredFromAssembly(assemblyLocation); + var expectedTelemetry = + @"{""key1"":[""ext1"",""ext2"",""ext3"",""ext4"",""ext5""]," + + @"""key4"":[""ext1""]," + + @"""key5"":[""ext1"",""ext2""]}"; - var expectedDiscoverers = new Dictionary(); - expectedDiscoverers.Add("td", new TestDiscovererPluginInformation(typeof(TestExtensionsTests))); - CollectionAssert.AreEqual(expectedDiscoverers.Keys, extensions.TestDiscoverers.Keys); + TestExtensions.AddExtensionTelemetry(telemetryData, extensions); - var expectedLoggers = new Dictionary(); - expectedLoggers.Add("tl", new TestLoggerPluginInformation(typeof(TestExtensionsTests))); - CollectionAssert.AreEqual(expectedLoggers.Keys, extensions.TestLoggers.Keys); - } + telemetryData.Should().ContainKey(TelemetryDataConstants.DiscoveredExtensions); + telemetryData[TelemetryDataConstants.DiscoveredExtensions].Should().BeEquivalentTo(expectedTelemetry); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestLoggerPluginInformationTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestLoggerPluginInformationTests.cs index 4bd1640354..ea02bdc988 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestLoggerPluginInformationTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestLoggerPluginInformationTests.cs @@ -1,73 +1,71 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; + +[TestClass] +public class TestLoggerPluginInformationTests { - using System; - using System.Linq; + private TestLoggerPluginInformation? _testPluginInformation; + + internal const string DefaultExtensionUri = "executor://unittest"; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; + internal const string DefaultFriendlyName = "excel"; + + [TestMethod] + public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() + { + _testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithNoFriendlyName)); + Assert.AreEqual(typeof(DummyTestExtensionWithNoFriendlyName).AssemblyQualifiedName, _testPluginInformation.AssemblyQualifiedName); + } + + [TestMethod] + public void IdentifierDataShouldReturnExtensionUri() + { + _testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithFriendlyName)); + Assert.AreEqual(DefaultExtensionUri, _testPluginInformation.IdentifierData); + } + + [TestMethod] + public void FriendlyNameShouldReturnEmptyIfALoggerDoesNotHaveOne() + { + _testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithNoFriendlyName)); + Assert.IsNotNull(_testPluginInformation.FriendlyName); + Assert.AreEqual(string.Empty, _testPluginInformation.FriendlyName); + } - [TestClass] - public class TestLoggerPluginInformationTests + [TestMethod] + public void FriendlyNameShouldReturnFriendlyNameOfALogger() { - private TestLoggerPluginInformation testPluginInformation; - - internal const string DefaultExtensionURI = "executor://unittest"; - - internal const string DefaultFriendlyName = "excel"; - - [TestMethod] - public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() - { - this.testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithNoFriendlyName)); - Assert.AreEqual(typeof(DummyTestExtensionWithNoFriendlyName).AssemblyQualifiedName, this.testPluginInformation.AssemblyQualifiedName); - } - - [TestMethod] - public void IdentifierDataShouldReturnExtensionUri() - { - this.testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithFriendlyName)); - Assert.AreEqual(DefaultExtensionURI, this.testPluginInformation.IdentifierData); - } - - [TestMethod] - public void FriendlyNameShouldReturnEmptyIfALoggerDoesNotHaveOne() - { - this.testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithNoFriendlyName)); - Assert.IsNotNull(this.testPluginInformation.FriendlyName); - Assert.AreEqual(string.Empty, this.testPluginInformation.FriendlyName); - } - - [TestMethod] - public void FriendlyNameShouldReturnFriendlyNameOfALogger() - { - this.testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithFriendlyName)); - Assert.AreEqual(DefaultFriendlyName, this.testPluginInformation.FriendlyName); - } - - [TestMethod] - public void MetadataShouldReturnExtensionUriAndFriendlyName() - { - this.testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithFriendlyName)); - - CollectionAssert.AreEqual(new object[] { DefaultExtensionURI, DefaultFriendlyName }, this.testPluginInformation.Metadata.ToArray()); - } - - #region Implementation - - private class DummyTestExtensionWithNoFriendlyName - { - } - - [FriendlyName(TestLoggerPluginInformationTests.DefaultFriendlyName)] - [ExtensionUri(TestLoggerPluginInformationTests.DefaultExtensionURI)] - private class DummyTestExtensionWithFriendlyName - { - } - - #endregion + _testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithFriendlyName)); + Assert.AreEqual(DefaultFriendlyName, _testPluginInformation.FriendlyName); } + + [TestMethod] + public void MetadataShouldReturnExtensionUriAndFriendlyName() + { + _testPluginInformation = new TestLoggerPluginInformation(typeof(DummyTestExtensionWithFriendlyName)); + + CollectionAssert.AreEqual(new object[] { DefaultExtensionUri, DefaultFriendlyName }, _testPluginInformation.Metadata.ToArray()); + } + + #region Implementation + + private class DummyTestExtensionWithNoFriendlyName + { + } + + [FriendlyName(DefaultFriendlyName)] + [ExtensionUri(DefaultExtensionUri)] + private class DummyTestExtensionWithFriendlyName + { + } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestPluginInformationTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestPluginInformationTests.cs index 4b398259ef..21623b39ef 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestPluginInformationTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestPluginInformationTests.cs @@ -1,50 +1,50 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities +using System; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; + +[TestClass] +public class TestPluginInformationTests { - using System; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly TestableTestPluginInformation _testPluginInformation; - [TestClass] - public class TestPluginInformationTests + public TestPluginInformationTests() { - private TestableTestPluginInformation testPluginInformation; - - public TestPluginInformationTests() - { - this.testPluginInformation = new TestableTestPluginInformation(typeof(TestPluginInformationTests)); - } - - [TestMethod] - public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() - { - Assert.AreEqual(typeof(TestPluginInformationTests).AssemblyQualifiedName, this.testPluginInformation.AssemblyQualifiedName); - } - - [TestMethod] - public void IdentifierDataShouldReturnTestExtensionTypesName() - { - Assert.AreEqual(typeof(TestPluginInformationTests).AssemblyQualifiedName, this.testPluginInformation.IdentifierData); - } - - [TestMethod] - public void MetadataShouldReturnTestExtensionTypesAssemblyQualifiedName() - { - CollectionAssert.AreEqual(new object[] { typeof(TestPluginInformationTests).AssemblyQualifiedName }, this.testPluginInformation.Metadata.ToArray()); - } + _testPluginInformation = new TestableTestPluginInformation(typeof(TestPluginInformationTests)); } - #region Implementation + [TestMethod] + public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() + { + Assert.AreEqual(typeof(TestPluginInformationTests).AssemblyQualifiedName, _testPluginInformation.AssemblyQualifiedName); + } + + [TestMethod] + public void IdentifierDataShouldReturnTestExtensionTypesName() + { + Assert.AreEqual(typeof(TestPluginInformationTests).AssemblyQualifiedName, _testPluginInformation.IdentifierData); + } - public class TestableTestPluginInformation : TestPluginInformation + [TestMethod] + public void MetadataShouldReturnTestExtensionTypesAssemblyQualifiedName() { - public TestableTestPluginInformation(Type testExtensionType) : base(testExtensionType) - { - } + CollectionAssert.AreEqual(new object[] { typeof(TestPluginInformationTests).AssemblyQualifiedName! }, _testPluginInformation.Metadata.ToArray()); } +} - #endregion +#region Implementation + +public class TestableTestPluginInformation : TestPluginInformation +{ + public TestableTestPluginInformation(Type testExtensionType) : base(testExtensionType) + { + } } + +#endregion diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestSettingsProviderPluginInformationTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestSettingsProviderPluginInformationTests.cs index c200738a70..dad5365f98 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestSettingsProviderPluginInformationTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/TestSettingsProviderPluginInformationTests.cs @@ -1,69 +1,67 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities -{ - using System; - using System.Linq; +using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class TestSettingsProviderPluginInformationTests - { - private TestSettingsProviderPluginInformation testPluginInformation; +namespace TestPlatform.Common.UnitTests.ExtensionFramework.Utilities; - private const string DefaultSettingsName = "mstestsettings"; +[TestClass] +public class TestSettingsProviderPluginInformationTests +{ + private TestSettingsProviderPluginInformation? _testPluginInformation; - [TestMethod] - public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() - { - this.testPluginInformation = new TestSettingsProviderPluginInformation(typeof(TestPluginInformationTests)); - Assert.AreEqual(typeof(TestPluginInformationTests).AssemblyQualifiedName, this.testPluginInformation.AssemblyQualifiedName); - } + private const string DefaultSettingsName = "mstestsettings"; - [TestMethod] - public void IdentifierDataShouldReturnSettingsName() - { - this.testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithSettingsName)); - Assert.AreEqual(DefaultSettingsName, this.testPluginInformation.IdentifierData); - } + [TestMethod] + public void AssemblyQualifiedNameShouldReturnTestExtensionTypesName() + { + _testPluginInformation = new TestSettingsProviderPluginInformation(typeof(TestPluginInformationTests)); + Assert.AreEqual(typeof(TestPluginInformationTests).AssemblyQualifiedName, _testPluginInformation.AssemblyQualifiedName); + } - [TestMethod] - public void MetadataShouldReturnSettingsProviderName() - { - this.testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithSettingsName)); - CollectionAssert.AreEqual(new object[] { DefaultSettingsName }, this.testPluginInformation.Metadata.ToArray()); - } + [TestMethod] + public void IdentifierDataShouldReturnSettingsName() + { + _testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithSettingsName)); + Assert.AreEqual(DefaultSettingsName, _testPluginInformation.IdentifierData); + } - [TestMethod] - public void SettingsNameShouldReturnEmptyIfASettingsProviderDoesNotHaveOne() - { - this.testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithoutSettingsName)); - Assert.IsNotNull(this.testPluginInformation.SettingsName); - Assert.AreEqual(string.Empty, this.testPluginInformation.SettingsName); - } + [TestMethod] + public void MetadataShouldReturnSettingsProviderName() + { + _testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithSettingsName)); + CollectionAssert.AreEqual(new object[] { DefaultSettingsName }, _testPluginInformation.Metadata.ToArray()); + } - [TestMethod] - public void SettingsNameShouldReturnExtensionUriOfAnExtension() - { - this.testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithSettingsName)); - Assert.AreEqual(DefaultSettingsName, this.testPluginInformation.SettingsName); - } + [TestMethod] + public void SettingsNameShouldReturnEmptyIfASettingsProviderDoesNotHaveOne() + { + _testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithoutSettingsName)); + Assert.IsNotNull(_testPluginInformation.SettingsName); + Assert.AreEqual(string.Empty, _testPluginInformation.SettingsName); + } - #region Implementation + [TestMethod] + public void SettingsNameShouldReturnExtensionUriOfAnExtension() + { + _testPluginInformation = new TestSettingsProviderPluginInformation(typeof(DummySettingProviderWithSettingsName)); + Assert.AreEqual(DefaultSettingsName, _testPluginInformation.SettingsName); + } - private class DummySettingProviderWithoutSettingsName - { - } + #region Implementation - [SettingsName(DefaultSettingsName)] - private class DummySettingProviderWithSettingsName - { - } + private class DummySettingProviderWithoutSettingsName + { + } - #endregion + [SettingsName(DefaultSettingsName)] + private class DummySettingProviderWithSettingsName + { } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/ConditionTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/ConditionTests.cs index d28627c0c2..ab7d08c6fc 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/ConditionTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/ConditionTests.cs @@ -1,237 +1,238 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Filtering +using System; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.Filtering; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Common.UnitTests.Filtering; + +[TestClass] +public class ConditionTests { - using System; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.Filtering; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ConditionTests - { - [TestMethod] - public void ParseShouldThrownFormatExceptionOnNullConditionString() - { - string conditionString = null; - Assert.ThrowsException(() => Condition.Parse(conditionString)); - } - - [TestMethod] - public void ParseShouldThrownFormatExceptionOnEmptyConditionString() - { - var conditionString = ""; - Assert.ThrowsException(() => Condition.Parse(conditionString)); - } - - [TestMethod] - public void ParseShouldThrownFormatExceptionOnIncompleteConditionString() - { - var conditionString = "PropertyName="; - Assert.ThrowsException( () => Condition.Parse(conditionString)); - } - - [TestMethod] - public void ParseShouldCreateDefaultConditionWhenOnlyPropertyValuePassed() - { - var conditionString = "ABC"; - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual(Condition.DefaultPropertyName, condition.Name); - Assert.AreEqual(Operation.Contains, condition.Operation); - Assert.AreEqual(conditionString, condition.Value); - } - - [TestMethod] - public void ParseShouldCreateProperConditionOnValidConditionString() - { - var conditionString = "PropertyName=PropertyValue"; - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual("PropertyName", condition.Name); - Assert.AreEqual(Operation.Equal, condition.Operation); - Assert.AreEqual("PropertyValue", condition.Value); - } - - [TestMethod] - public void ParseShouldHandleEscapedString() - { - var conditionString = @"FullyQualifiedName=TestClass1\(""hello""\).TestMethod\(1.5\)"; - - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual("FullyQualifiedName", condition.Name); - Assert.AreEqual(Operation.Equal, condition.Operation); - Assert.AreEqual(@"TestClass1(""hello"").TestMethod(1.5)", condition.Value); - } - - [TestMethod] - public void ParseShouldHandleEscapedBang() - { - var conditionString = @"FullyQualifiedName!=TestClass1\(""\!""\).TestMethod\(1.5\)"; - - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual("FullyQualifiedName", condition.Name); - Assert.AreEqual(Operation.NotEqual, condition.Operation); - Assert.AreEqual(@"TestClass1(""!"").TestMethod(1.5)", condition.Value); - } - - [TestMethod] - public void ParseShouldHandleEscapedNotEqual() - { - var conditionString = @"FullyQualifiedName!=TestClass1\(""\!\=""\).TestMethod\(1.5\)"; - - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual("FullyQualifiedName", condition.Name); - Assert.AreEqual(Operation.NotEqual, condition.Operation); - Assert.AreEqual(@"TestClass1(""!="").TestMethod(1.5)", condition.Value); - } - - [TestMethod] - public void ParseShouldHandleEscapedTilde() - { - var conditionString = @"FullyQualifiedName~TestClass1\(""\~""\).TestMethod\(1.5\)"; - - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual("FullyQualifiedName", condition.Name); - Assert.AreEqual(Operation.Contains, condition.Operation); - Assert.AreEqual(@"TestClass1(""~"").TestMethod(1.5)", condition.Value); - } - - [TestMethod] - public void ParseShouldHandleEscapedNotTilde() - { - var conditionString = @"FullyQualifiedName!~TestClass1\(""\!\~""\).TestMethod\(1.5\)"; - - Condition condition = Condition.Parse(conditionString); - Assert.AreEqual("FullyQualifiedName", condition.Name); - Assert.AreEqual(Operation.NotContains, condition.Operation); - Assert.AreEqual(@"TestClass1(""!~"").TestMethod(1.5)", condition.Value); - } - - [TestMethod] - public void ParseStringWithSingleUnescapedBangThrowsFormatException1() - { - var conditionString = @"FullyQualifiedName=Test1(""!"")"; - - Assert.ThrowsException(() => Condition.Parse(conditionString)); - } - - [TestMethod] - public void ParseStringWithSingleUnescapedBangThrowsFormatException2() - { - var conditionString = @"FullyQualifiedName!Test1()"; - - Assert.ThrowsException(() => Condition.Parse(conditionString)); - } - - [TestMethod] - public void TokenizeNullThrowsArgumentNullException() - { - Assert.ThrowsException(() => Condition.TokenizeFilterConditionString(null), "str"); - } - - [TestMethod] - public void TokenizeConditionShouldHandleEscapedBang() - { - var conditionString = @"FullyQualifiedName=TestMethod\(""\!""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(3, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("=", tokens[1]); - Assert.AreEqual(@"TestMethod\(""\!""\)", tokens[2]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleEscapedNotEqual1() - { - var conditionString = @"FullyQualifiedName=TestMethod\(""\!\=""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(3, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("=", tokens[1]); - Assert.AreEqual(@"TestMethod\(""\!\=""\)", tokens[2]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleEscapedNotEqual2() - { - var conditionString = @"FullyQualifiedName!=TestMethod\(""\!\=""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(3, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("!=", tokens[1]); - Assert.AreEqual(@"TestMethod\(""\!\=""\)", tokens[2]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleEscapedBackslash() - { - var conditionString = @"FullyQualifiedName=TestMethod\(""\\""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(3, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("=", tokens[1]); - Assert.AreEqual(@"TestMethod\(""\\""\)", tokens[2]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleEscapedTilde() - { - var conditionString = @"FullyQualifiedName~TestMethod\(""\~""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(3, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("~", tokens[1]); - Assert.AreEqual(@"TestMethod\(""\~""\)", tokens[2]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleEscapedNotTilde() - { - var conditionString = @"FullyQualifiedName!~TestMethod\(""\!\~""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(3, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("!~", tokens[1]); - Assert.AreEqual(@"TestMethod\(""\!\~""\)", tokens[2]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleSingleUnescapedBang() - { - var conditionString = @"FullyQualifiedName!=TestMethod\(""!""\)"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(5, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("!=", tokens[1]); - Assert.AreEqual(@"TestMethod\(""", tokens[2]); - Assert.AreEqual("!", tokens[3]); - Assert.AreEqual(@"""\)", tokens[4]); - } - - [TestMethod] - public void TokenizeConditionShouldHandleSingleBangAtEnd() - { - var conditionString = "FullyQualifiedName!"; - - var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); - - Assert.AreEqual(2, tokens.Length); - Assert.AreEqual("FullyQualifiedName", tokens[0]); - Assert.AreEqual("!", tokens[1]); - } + [TestMethod] + public void ParseShouldThrownFormatExceptionOnNullConditionString() + { + string? conditionString = null; + Assert.ThrowsException(() => Condition.Parse(conditionString)); + } + + [TestMethod] + public void ParseShouldThrownFormatExceptionOnEmptyConditionString() + { + var conditionString = ""; + Assert.ThrowsException(() => Condition.Parse(conditionString)); + } + + [TestMethod] + public void ParseShouldThrownFormatExceptionOnIncompleteConditionString() + { + var conditionString = "PropertyName="; + Assert.ThrowsException(() => Condition.Parse(conditionString)); + } + + [TestMethod] + public void ParseShouldCreateDefaultConditionWhenOnlyPropertyValuePassed() + { + var conditionString = "ABC"; + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual(Condition.DefaultPropertyName, condition.Name); + Assert.AreEqual(Operation.Contains, condition.Operation); + Assert.AreEqual(conditionString, condition.Value); + } + + [TestMethod] + public void ParseShouldCreateProperConditionOnValidConditionString() + { + var conditionString = "PropertyName=PropertyValue"; + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual("PropertyName", condition.Name); + Assert.AreEqual(Operation.Equal, condition.Operation); + Assert.AreEqual("PropertyValue", condition.Value); + } + + [TestMethod] + public void ParseShouldHandleEscapedString() + { + var conditionString = @"FullyQualifiedName=TestClass1\(""hello""\).TestMethod\(1.5\)"; + + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual("FullyQualifiedName", condition.Name); + Assert.AreEqual(Operation.Equal, condition.Operation); + Assert.AreEqual(@"TestClass1(""hello"").TestMethod(1.5)", condition.Value); + } + + [TestMethod] + public void ParseShouldHandleEscapedBang() + { + var conditionString = @"FullyQualifiedName!=TestClass1\(""\!""\).TestMethod\(1.5\)"; + + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual("FullyQualifiedName", condition.Name); + Assert.AreEqual(Operation.NotEqual, condition.Operation); + Assert.AreEqual(@"TestClass1(""!"").TestMethod(1.5)", condition.Value); + } + + [TestMethod] + public void ParseShouldHandleEscapedNotEqual() + { + var conditionString = @"FullyQualifiedName!=TestClass1\(""\!\=""\).TestMethod\(1.5\)"; + + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual("FullyQualifiedName", condition.Name); + Assert.AreEqual(Operation.NotEqual, condition.Operation); + Assert.AreEqual(@"TestClass1(""!="").TestMethod(1.5)", condition.Value); + } + + [TestMethod] + public void ParseShouldHandleEscapedTilde() + { + var conditionString = @"FullyQualifiedName~TestClass1\(""\~""\).TestMethod\(1.5\)"; + + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual("FullyQualifiedName", condition.Name); + Assert.AreEqual(Operation.Contains, condition.Operation); + Assert.AreEqual(@"TestClass1(""~"").TestMethod(1.5)", condition.Value); + } + + [TestMethod] + public void ParseShouldHandleEscapedNotTilde() + { + var conditionString = @"FullyQualifiedName!~TestClass1\(""\!\~""\).TestMethod\(1.5\)"; + + Condition condition = Condition.Parse(conditionString); + Assert.AreEqual("FullyQualifiedName", condition.Name); + Assert.AreEqual(Operation.NotContains, condition.Operation); + Assert.AreEqual(@"TestClass1(""!~"").TestMethod(1.5)", condition.Value); + } + + [TestMethod] + public void ParseStringWithSingleUnescapedBangThrowsFormatException1() + { + var conditionString = @"FullyQualifiedName=Test1(""!"")"; + + Assert.ThrowsException(() => Condition.Parse(conditionString)); + } + + [TestMethod] + public void ParseStringWithSingleUnescapedBangThrowsFormatException2() + { + var conditionString = @"FullyQualifiedName!Test1()"; + + Assert.ThrowsException(() => Condition.Parse(conditionString)); + } + + [TestMethod] + public void TokenizeNullThrowsArgumentNullException() + { + Assert.ThrowsException(() => Condition.TokenizeFilterConditionString(null!), "str"); + } + + [TestMethod] + public void TokenizeConditionShouldHandleEscapedBang() + { + var conditionString = @"FullyQualifiedName=TestMethod\(""\!""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(3, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("=", tokens[1]); + Assert.AreEqual(@"TestMethod\(""\!""\)", tokens[2]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleEscapedNotEqual1() + { + var conditionString = @"FullyQualifiedName=TestMethod\(""\!\=""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(3, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("=", tokens[1]); + Assert.AreEqual(@"TestMethod\(""\!\=""\)", tokens[2]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleEscapedNotEqual2() + { + var conditionString = @"FullyQualifiedName!=TestMethod\(""\!\=""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(3, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("!=", tokens[1]); + Assert.AreEqual(@"TestMethod\(""\!\=""\)", tokens[2]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleEscapedBackslash() + { + var conditionString = @"FullyQualifiedName=TestMethod\(""\\""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(3, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("=", tokens[1]); + Assert.AreEqual(@"TestMethod\(""\\""\)", tokens[2]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleEscapedTilde() + { + var conditionString = @"FullyQualifiedName~TestMethod\(""\~""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(3, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("~", tokens[1]); + Assert.AreEqual(@"TestMethod\(""\~""\)", tokens[2]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleEscapedNotTilde() + { + var conditionString = @"FullyQualifiedName!~TestMethod\(""\!\~""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(3, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("!~", tokens[1]); + Assert.AreEqual(@"TestMethod\(""\!\~""\)", tokens[2]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleSingleUnescapedBang() + { + var conditionString = @"FullyQualifiedName!=TestMethod\(""!""\)"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(5, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("!=", tokens[1]); + Assert.AreEqual(@"TestMethod\(""", tokens[2]); + Assert.AreEqual("!", tokens[3]); + Assert.AreEqual(@"""\)", tokens[4]); + } + + [TestMethod] + public void TokenizeConditionShouldHandleSingleBangAtEnd() + { + var conditionString = "FullyQualifiedName!"; + + var tokens = Condition.TokenizeFilterConditionString(conditionString).ToArray(); + + Assert.AreEqual(2, tokens.Length); + Assert.AreEqual("FullyQualifiedName", tokens[0]); + Assert.AreEqual("!", tokens[1]); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FastFilterTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FastFilterTests.cs index 3ee70eb7b5..4608a2d494 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FastFilterTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FastFilterTests.cs @@ -1,453 +1,452 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Filtering +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; + +using Microsoft.VisualStudio.TestPlatform.Common.Filtering; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Common.UnitTests.Filtering; + +[TestClass] +public class FastFilterTests { - using System; - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Common.Filtering; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using System.Collections.Immutable; - - [TestClass] - public class FastFilterTests + [TestMethod] + public void MultipleOperatorKindsShouldNotCreateFastFilter() { - [TestMethod] - public void MultipleOperatorKindsShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Name=Test1&(Name=Test2|NameTest3)"); - var fastFilter = filterExpressionWrapper.fastFilter; + var filterExpressionWrapper = new FilterExpressionWrapper("Name=Test1&(Name=Test2|NameTest3)"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsTrue(fastFilter == null); - } + Assert.IsTrue(fastFilter == null); + } - [TestMethod] - public void MultipleOperationKindsShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Name!=TestClass1&Category=Nightly"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void MultipleOperationKindsShouldNotCreateFastFilter() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Name!=TestClass1&Category=Nightly"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsTrue(fastFilter == null); - } + Assert.IsTrue(fastFilter == null); + } - [TestMethod] - public void ContainsOperationShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Name~TestClass1"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void ContainsOperationShouldNotCreateFastFilter() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Name~TestClass1"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsTrue(fastFilter == null); - } + Assert.IsTrue(fastFilter == null); + } - [TestMethod] - public void NotContainsOperationShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Name!~TestClass1"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void NotContainsOperationShouldNotCreateFastFilter() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Name!~TestClass1"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsTrue(fastFilter == null); - } + Assert.IsTrue(fastFilter == null); + } - [TestMethod] - public void AndOperatorAndEqualsOperationShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Name=Test1&Name=Test2"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void AndOperatorAndEqualsOperationShouldNotCreateFastFilter() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Name=Test1&Name=Test2"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsTrue(fastFilter == null); - Assert.IsTrue(string.IsNullOrEmpty(filterExpressionWrapper.ParseError)); - } + Assert.IsTrue(fastFilter == null); + Assert.IsTrue(string.IsNullOrEmpty(filterExpressionWrapper.ParseError)); + } - [TestMethod] - public void OrOperatorAndNotEqualsOperationShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Name!=Test1|Name!=Test2"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void OrOperatorAndNotEqualsOperationShouldNotCreateFastFilter() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Name!=Test1|Name!=Test2"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsTrue(fastFilter == null); - Assert.IsTrue(string.IsNullOrEmpty(filterExpressionWrapper.ParseError)); - } + Assert.IsTrue(fastFilter == null); + Assert.IsTrue(string.IsNullOrEmpty(filterExpressionWrapper.ParseError)); + } - [TestMethod] - public void FastFilterWithSingleEqualsClause() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void FastFilterWithSingleEqualsClause() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1"); + var fastFilter = filterExpressionWrapper.FastFilter; - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1" }; + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1" }; - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + + Assert.IsTrue(fastFilter.Evaluate(s => "Test1")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test2")); + } - Assert.IsTrue(fastFilter.Evaluate((s) => "Test1")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test2")); + [TestMethod] + public void ValidForPropertiesHandlesBigFilteringExpressions() + { + StringBuilder testCaseFilter = new("Category=Test1"); + + for (int i = 0; i < 1e5; i++) // creating a 100k filter cases string + { + testCaseFilter.Append("|Test2"); } - [TestMethod] - public void FastFilterWithMultipleEqualsClause() + var filterExpressionWrapper = new FilterExpressionWrapper(testCaseFilter.ToString()); + string[]? invalidProperties = filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null); + + Assert.IsNotNull(invalidProperties); + Assert.AreEqual(invalidProperties.Length, 1); + Assert.AreEqual(invalidProperties[0], "Category"); + } + + [TestMethod] + public void EvaluateHandlesBigFilteringExpressions() + { + StringBuilder testCaseFilter = new("Test1"); + // Create filter with 100k conditions. + for (int i = 0; i < 1e5; i++) { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|FullyQualifiedName=Test2|FullyQualifiedName=Test3"); - var fastFilter = filterExpressionWrapper.fastFilter; + testCaseFilter.Append("|Test2"); + } - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; + var filterExpressionWrapper = new FilterExpressionWrapper(testCaseFilter.ToString()); + Assert.IsTrue(filterExpressionWrapper.Evaluate(s => "Test1")); + } - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + [TestMethod] + public void FastFilterWithMultipleEqualsClause() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|FullyQualifiedName=Test2|FullyQualifiedName=Test3"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; - Assert.IsTrue(fastFilter.Evaluate((s) => "Test1")); - Assert.IsTrue(fastFilter.Evaluate((s) => "test2")); - Assert.IsTrue(fastFilter.Evaluate((s) => "test3")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test4")); - } + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - [TestMethod] - public void FastFilterWithMultipleEqualsClauseAndParentheses() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|(FullyQualifiedName=Test2|FullyQualifiedName=Test3)"); - var fastFilter = filterExpressionWrapper.fastFilter; + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; + Assert.IsTrue(fastFilter.Evaluate(s => "Test1")); + Assert.IsTrue(fastFilter.Evaluate(s => "test2")); + Assert.IsTrue(fastFilter.Evaluate(s => "test3")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test4")); + } - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + [TestMethod] + public void FastFilterWithMultipleEqualsClauseAndParentheses() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|(FullyQualifiedName=Test2|FullyQualifiedName=Test3)"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; - Assert.IsTrue(fastFilter.Evaluate((s) => "Test1")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test2")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test3")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test4")); - } + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - [TestMethod] - public void FastFilterWithMultipleEqualsClauseAndRegex() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|FullyQualifiedName=Test2|FullyQualifiedName=Test3", new FilterOptions() { FilterRegEx = @"^[^\s\(]+" }); - var fastFilter = filterExpressionWrapper.fastFilter; - - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; - - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - - Assert.IsTrue(fastFilter.Evaluate((s) => "Test1")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test2")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test3")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test1 (123)")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test2(123)")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test3 (123)")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test4")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test4 ()")); - } + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - [TestMethod] - public void FastFilterWithMultipleEqualsClauseForMultiplePropertyValues() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Category=UnitTest|Category=PerfTest", null); - var fastFilter = filterExpressionWrapper.fastFilter; + Assert.IsTrue(fastFilter.Evaluate(s => "Test1")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test2")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test3")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test4")); + } - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "unittest", "perftest" }; + [TestMethod] + public void FastFilterWithMultipleEqualsClauseAndRegex() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|FullyQualifiedName=Test2|FullyQualifiedName=Test3", new FilterOptions() { FilterRegEx = @"^[^\s\(]+" }); + var fastFilter = filterExpressionWrapper.FastFilter; + + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; + + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + + Assert.IsTrue(fastFilter.Evaluate(s => "Test1")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test2")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test3")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test1 (123)")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test2(123)")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test3 (123)")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test4")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test4 ()")); + } - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("Category", fastFilter.FilterProperties.Keys.Single()); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + [TestMethod] + public void FastFilterWithMultipleEqualsClauseForMultiplePropertyValues() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Category=UnitTest|Category=PerfTest", null); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null)); + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "unittest", "perftest" }; - Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "UnitTest" })); - Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "PerfTest" })); - Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "UnitTest", "PerfTest" })); - Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "UnitTest", "IntegrationTest" })); - Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "IntegrationTest" })); - Assert.IsFalse(fastFilter.Evaluate((s) => null)); - } + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("Category", fastFilter.FilterProperties.Keys.Single()); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - [TestMethod] - public void FastFilterWithMultipleEqualsClauseAndRegexReplacement() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=TestClass.Test1|FullyQualifiedName=TestClass.Test2|FullyQualifiedName=TestClass.Test3", new FilterOptions() { FilterRegEx = @"\s*\([^\)]*\)", FilterRegExReplacement = "" }); - var fastFilter = filterExpressionWrapper.fastFilter; - - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "testclass.test1", "testclass.test2", "testclass.test3" }; - - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1).Test1")); - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass().Test1()")); - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1, 2).Test2")); - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass.Test3 (abcd1234)")); - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1).Test1(123)")); - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1, 2).Test2(x:1, y:2, z:3)")); - Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1, 2,3).Test3(1) (123)")); - Assert.IsFalse(fastFilter.Evaluate((s) => "TestClass1.Test1")); - Assert.IsFalse(fastFilter.Evaluate((s) => "TestClass1(1).Test1")); - Assert.IsFalse(fastFilter.Evaluate((s) => "TestClass((1, 2, 3)).Test1")); - } + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null)); - [TestMethod] - public void FastFilterWithSingleNotEqualsClause() - { - var filterString = "FullyQualifiedName!=Test1"; - CheckFastFailureWithNotEqualClause(filterString); - } + Assert.IsTrue(fastFilter.Evaluate(s => new[] { "UnitTest" })); + Assert.IsTrue(fastFilter.Evaluate(s => new[] { "PerfTest" })); + Assert.IsTrue(fastFilter.Evaluate(s => new[] { "UnitTest", "PerfTest" })); + Assert.IsTrue(fastFilter.Evaluate(s => new[] { "UnitTest", "IntegrationTest" })); + Assert.IsFalse(fastFilter.Evaluate(s => new[] { "IntegrationTest" })); + Assert.IsFalse(fastFilter.Evaluate(s => null)); + } - [TestMethod] - public void FastFilterWithNotEqualsClauseAndDifferentCase() - { - var filterString = "FullyQualifiedName!=Test1&FullyQualifiedName!=test1"; - CheckFastFailureWithNotEqualClause(filterString); - } + [TestMethod] + public void FastFilterWithMultipleEqualsClauseAndRegexReplacement() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=TestClass.Test1|FullyQualifiedName=TestClass.Test2|FullyQualifiedName=TestClass.Test3", new FilterOptions() { FilterRegEx = @"\s*\([^\)]*\)", FilterRegExReplacement = "" }); + var fastFilter = filterExpressionWrapper.FastFilter; + + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "testclass.test1", "testclass.test2", "testclass.test3" }; + + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass(1).Test1")); + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass().Test1()")); + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass(1, 2).Test2")); + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass.Test3 (abcd1234)")); + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass(1).Test1(123)")); + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass(1, 2).Test2(x:1, y:2, z:3)")); + Assert.IsTrue(fastFilter.Evaluate(s => "TestClass(1, 2,3).Test3(1) (123)")); + Assert.IsFalse(fastFilter.Evaluate(s => "TestClass1.Test1")); + Assert.IsFalse(fastFilter.Evaluate(s => "TestClass1(1).Test1")); + Assert.IsFalse(fastFilter.Evaluate(s => "TestClass((1, 2, 3)).Test1")); + } - private void CheckFastFailureWithNotEqualClause(string filterString) - { - var filterExpressionWrapper = new FilterExpressionWrapper(filterString); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void FastFilterWithSingleNotEqualsClause() + { + var filterString = "FullyQualifiedName!=Test1"; + CheckFastFailureWithNotEqualClause(filterString); + } - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1" }; + [TestMethod] + public void FastFilterWithNotEqualsClauseAndDifferentCase() + { + var filterString = "FullyQualifiedName!=Test1&FullyQualifiedName!=test1"; + CheckFastFailureWithNotEqualClause(filterString); + } - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + private static void CheckFastFailureWithNotEqualClause(string filterString) + { + var filterExpressionWrapper = new FilterExpressionWrapper(filterString); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1" }; - Assert.IsFalse(fastFilter.Evaluate((s) => "Test1")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test2")); - } + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - [TestMethod] - public void FastFilterWithMultipleNotEqualsClause() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&FullyQualifiedName!=Test2&FullyQualifiedName!=Test3"); - var fastFilter = filterExpressionWrapper.fastFilter; + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; + Assert.IsFalse(fastFilter.Evaluate(s => "Test1")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test2")); + } - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + [TestMethod] + public void FastFilterWithMultipleNotEqualsClause() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&FullyQualifiedName!=Test2&FullyQualifiedName!=Test3"); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; - Assert.IsFalse(fastFilter.Evaluate((s) => "Test1")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test2")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test3")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test4")); - } + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - [TestMethod] - public void FastFilterWithMultipleNotEqualsClauseAndRegex() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&FullyQualifiedName!=Test2&FullyQualifiedName!=Test3", new FilterOptions() { FilterRegEx = @"^[^\s\(]+" }); - var fastFilter = filterExpressionWrapper.fastFilter; - - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; - - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); - Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - - Assert.IsFalse(fastFilter.Evaluate((s) => "Test1")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test2")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test3")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test1 (123)")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test2(123)")); - Assert.IsFalse(fastFilter.Evaluate((s) => "Test3 (123)")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test4")); - Assert.IsTrue(fastFilter.Evaluate((s) => "Test4 (123)")); - } + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); - [TestMethod] - public void FastFilterWithMultipleNotEqualsClauseForMultiplePropertyValues() - { - var filterExpressionWrapper = new FilterExpressionWrapper("Category!=UnitTest&Category!=PerfTest", null); - var fastFilter = filterExpressionWrapper.fastFilter; + Assert.IsFalse(fastFilter.Evaluate(s => "Test1")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test2")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test3")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test4")); + } - var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "unittest", "perftest" }; + [TestMethod] + public void FastFilterWithMultipleNotEqualsClauseAndRegex() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&FullyQualifiedName!=Test2&FullyQualifiedName!=Test3", new FilterOptions() { FilterRegEx = @"^[^\s\(]+" }); + var fastFilter = filterExpressionWrapper.FastFilter; + + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "test1", "test2", "test3" }; + + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single()); + Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName" }, null)); + + Assert.IsFalse(fastFilter.Evaluate(s => "Test1")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test2")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test3")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test1 (123)")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test2(123)")); + Assert.IsFalse(fastFilter.Evaluate(s => "Test3 (123)")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test4")); + Assert.IsTrue(fastFilter.Evaluate(s => "Test4 (123)")); + } - Assert.IsTrue(fastFilter != null); - Assert.AreEqual("Category", fastFilter.FilterProperties.Keys.Single()); - Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); + [TestMethod] + public void FastFilterWithMultipleNotEqualsClauseForMultiplePropertyValues() + { + var filterExpressionWrapper = new FilterExpressionWrapper("Category!=UnitTest&Category!=PerfTest", null); + var fastFilter = filterExpressionWrapper.FastFilter; - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null)); + var expectedFilterValues = new HashSet(StringComparer.OrdinalIgnoreCase) { "unittest", "perftest" }; - Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "UnitTest" })); - Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "PerfTest" })); - Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "UnitTest", "PerfTest" })); - Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "UnitTest", "IntegrationTest" })); - Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "IntegrationTest" })); - Assert.IsTrue(fastFilter.Evaluate((s) => null)); - } + Assert.IsTrue(fastFilter != null); + Assert.AreEqual("Category", fastFilter.FilterProperties.Keys.Single()); + Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single())); - [TestMethod] - public void FastFilterWithWithRegexParseErrorShouldNotCreateFastFilter() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test", new FilterOptions() { FilterRegEx = @"^[^\s\(]+\1" }); + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null)); - Assert.IsNull(filterExpressionWrapper.fastFilter); - Assert.IsFalse(string.IsNullOrEmpty(filterExpressionWrapper.ParseError)); - } + Assert.IsFalse(fastFilter.Evaluate(s => new[] { "UnitTest" })); + Assert.IsFalse(fastFilter.Evaluate(s => new[] { "PerfTest" })); + Assert.IsFalse(fastFilter.Evaluate(s => new[] { "UnitTest", "PerfTest" })); + Assert.IsFalse(fastFilter.Evaluate(s => new[] { "UnitTest", "IntegrationTest" })); + Assert.IsTrue(fastFilter.Evaluate(s => new[] { "IntegrationTest" })); + Assert.IsTrue(fastFilter.Evaluate(s => null)); + } + + [TestMethod] + public void FastFilterWithWithRegexParseErrorShouldNotCreateFastFilter() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test", new FilterOptions() { FilterRegEx = @"^[^\s\(]+\1" }); - [TestMethod] - public void FastFilterShouldThrowExceptionForUnsupportedOperatorOperationCombination() + Assert.IsNull(filterExpressionWrapper.FastFilter); + Assert.IsFalse(string.IsNullOrEmpty(filterExpressionWrapper.ParseError)); + } + + [TestMethod] + public void FastFilterShouldThrowExceptionForUnsupportedOperatorOperationCombination() + { + ImmutableHashSet.Builder filterHashSetBuilder = ImmutableHashSet.CreateBuilder(); + try { - ImmutableHashSet.Builder filterHashSetBuilder = ImmutableHashSet.CreateBuilder(); - try - { - var filter = new FastFilter(ImmutableDictionary.CreateRange(new[] { new KeyValuePair>("dummyName", filterHashSetBuilder.ToImmutableHashSet()) }), Operation.Equal, Operator.And); - } - catch (Exception ex) - { - Assert.IsTrue(ex is ArgumentException); - Assert.AreEqual("An error occurred while creating Fast filter.", ex.Message); - } + var filter = new FastFilter(ImmutableDictionary.CreateRange(new[] { new KeyValuePair>("dummyName", filterHashSetBuilder.ToImmutableHashSet()) }), Operation.Equal, Operator.And); } - - [TestMethod] - public void MultiplePropertyNamesEqualOr() + catch (Exception ex) { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|Category=IntegrationTest"); - var fastFilter = filterExpressionWrapper.fastFilter; - - var expectedFilterKeys = new HashSet(StringComparer.OrdinalIgnoreCase) { "Category", "FullyQualifiedName" }; - - Assert.IsNotNull(fastFilter); - Assert.IsTrue(expectedFilterKeys.SetEquals(fastFilter.FilterProperties.Keys)); - Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(fastFilter.FilterProperties["FullyQualifiedName"].SequenceEqual(new[] { "Test1" })); - Assert.IsTrue(fastFilter.FilterProperties["Category"].SequenceEqual(new[] { "IntegrationTest" })); - - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName", "Category" }, null)); - Assert.AreEqual("FullyQualifiedName", filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null).Single()); - - Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest" } : null)); - Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "PerfTest" } : null)); - Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest", "PerfTest" } : null)); - Assert.IsTrue(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest", "IntegrationTest" } : null)); - Assert.IsTrue(fastFilter.Evaluate((s) => s == "Category" ? new[] { "IntegrationTest" } : null)); - Assert.IsTrue(fastFilter.Evaluate((s) => + Assert.IsTrue(ex is ArgumentException); + Assert.AreEqual("An error occurred while creating Fast filter.", ex.Message); + } + } + + [TestMethod] + public void MultiplePropertyNamesEqualOr() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|Category=IntegrationTest"); + var fastFilter = filterExpressionWrapper.FastFilter; + + var expectedFilterKeys = new HashSet(StringComparer.OrdinalIgnoreCase) { "Category", "FullyQualifiedName" }; + + Assert.IsNotNull(fastFilter); + Assert.IsTrue(expectedFilterKeys.SetEquals(fastFilter.FilterProperties.Keys)); + Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(fastFilter.FilterProperties["FullyQualifiedName"].SequenceEqual(new[] { "Test1" })); + Assert.IsTrue(fastFilter.FilterProperties["Category"].SequenceEqual(new[] { "IntegrationTest" })); + + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName", "Category" }, null)); + Assert.AreEqual("FullyQualifiedName", + filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null)!.Single()); + + Assert.IsFalse(fastFilter.Evaluate(s => s == "Category" ? new[] { "UnitTest" } : null)); + Assert.IsFalse(fastFilter.Evaluate(s => s == "Category" ? new[] { "PerfTest" } : null)); + Assert.IsFalse(fastFilter.Evaluate(s => s == "Category" ? new[] { "UnitTest", "PerfTest" } : null)); + Assert.IsTrue(fastFilter.Evaluate(s => s == "Category" ? new[] { "UnitTest", "IntegrationTest" } : null)); + Assert.IsTrue(fastFilter.Evaluate(s => s == "Category" ? new[] { "IntegrationTest" } : null)); + Assert.IsTrue(fastFilter.Evaluate(s => s switch { - switch (s) - { - case "Category": - return new[] { "UnitTest" }; - case "FullyQualifiedName": - return new[] { "Test1" }; - default: - return null; - } + "Category" => new[] { "UnitTest" }, + "FullyQualifiedName" => new[] { "Test1" }, + _ => null, })); - Assert.IsFalse(fastFilter.Evaluate((s) => + Assert.IsFalse(fastFilter.Evaluate(s => s switch { - switch (s) - { - case "Category": - return "UnitTest"; - case "FullyQualifiedName": - return "Test2"; - default: - return null; - } + "Category" => "UnitTest", + "FullyQualifiedName" => "Test2", + _ => null, })); - Assert.IsTrue(fastFilter.Evaluate((s) => + Assert.IsTrue(fastFilter.Evaluate(s => s switch { - switch (s) - { - case "Category": - return new[] { "IntegrationTest" }; - case "FullyQualifiedName": - return new[] { "Test2" }; - default: - return null; - } + "Category" => new[] { "IntegrationTest" }, + "FullyQualifiedName" => new[] { "Test2" }, + _ => null, })); - Assert.IsFalse(fastFilter.Evaluate((s) => null)); - } + Assert.IsFalse(fastFilter.Evaluate(s => null)); + } - [TestMethod] - public void MultiplePropertyNamesNotEqualAnd() - { - var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&Category!=IntegrationTest"); - var fastFilter = filterExpressionWrapper.fastFilter; + [TestMethod] + public void MultiplePropertyNamesNotEqualAnd() + { + var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&Category!=IntegrationTest"); + var fastFilter = filterExpressionWrapper.FastFilter; - var expectedFilterKeys = new HashSet(StringComparer.OrdinalIgnoreCase) { "Category", "FullyQualifiedName" }; + var expectedFilterKeys = new HashSet(StringComparer.OrdinalIgnoreCase) { "Category", "FullyQualifiedName" }; - Assert.IsNotNull(fastFilter); - Assert.IsTrue(expectedFilterKeys.SetEquals(fastFilter.FilterProperties.Keys)); - Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); - Assert.IsTrue(fastFilter.FilterProperties["FullyQualifiedName"].SequenceEqual(new[] { "Test1" })); - Assert.IsTrue(fastFilter.FilterProperties["Category"].SequenceEqual(new[] { "IntegrationTest" })); + Assert.IsNotNull(fastFilter); + Assert.IsTrue(expectedFilterKeys.SetEquals(fastFilter.FilterProperties.Keys)); + Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched); + Assert.IsTrue(fastFilter.FilterProperties["FullyQualifiedName"].SequenceEqual(new[] { "Test1" })); + Assert.IsTrue(fastFilter.FilterProperties["Category"].SequenceEqual(new[] { "IntegrationTest" })); - Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName", "Category" }, null)); - Assert.AreEqual("FullyQualifiedName", filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null).Single()); + Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List() { "FullyQualifiedName", "Category" }, null)); + Assert.AreEqual("FullyQualifiedName", + filterExpressionWrapper.ValidForProperties(new List() { "Category" }, null)!.Single()); - Assert.IsTrue(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest" } : null)); - Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest", "IntegrationTest" } : null)); - Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "IntegrationTest" } : null)); - Assert.IsFalse(fastFilter.Evaluate((s) => + Assert.IsTrue(fastFilter.Evaluate(s => s == "Category" ? new[] { "UnitTest" } : null)); + Assert.IsFalse(fastFilter.Evaluate(s => s == "Category" ? new[] { "UnitTest", "IntegrationTest" } : null)); + Assert.IsFalse(fastFilter.Evaluate(s => s == "Category" ? new[] { "IntegrationTest" } : null)); + Assert.IsFalse(fastFilter.Evaluate(s => s switch { - switch (s) - { - case "Category": - return new[] { "UnitTest" }; - case "FullyQualifiedName": - return new[] { "Test1" }; - default: - return null; - } + "Category" => new[] { "UnitTest" }, + "FullyQualifiedName" => new[] { "Test1" }, + _ => null, })); - Assert.IsFalse(fastFilter.Evaluate((s) => + Assert.IsFalse(fastFilter.Evaluate(s => s switch { - switch (s) - { - case "Category": - return new[] { "IntegrationTest" }; - case "FullyQualifiedName": - return new[] { "Test2" }; - default: - return null; - } + "Category" => new[] { "IntegrationTest" }, + "FullyQualifiedName" => new[] { "Test2" }, + _ => null, })); - Assert.IsTrue(fastFilter.Evaluate((s) => + Assert.IsTrue(fastFilter.Evaluate(s => s switch { - switch (s) - { - case "Category": - return new[] { "UnitTest" }; - case "FullyQualifiedName": - return new[] { "Test2" }; - default: - return null; - } + "Category" => new[] { "UnitTest" }, + "FullyQualifiedName" => new[] { "Test2" }, + _ => null, })); - } } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FilterExpressionTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FilterExpressionTests.cs index 5d53fcefbf..99a5f7964e 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FilterExpressionTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/FilterExpressionTests.cs @@ -1,101 +1,102 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Filtering +using System; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.Filtering; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Common.UnitTests.Filtering; + +[TestClass] +public class FilterExpressionTests { - using System; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.Filtering; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void TokenizeNullThrowsArgumentNullException() + { + Assert.ThrowsException(() => FilterExpression.TokenizeFilterExpressionString(null!), "str"); + } + + [TestMethod] + public void TokenizeFilterShouldHandleEscapedParenthesis() + { + var conditionString = @"(T1\(\) | T2\(\))"; + + var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); + + Assert.AreEqual(5, tokens.Length); + Assert.AreEqual("(", tokens[0]); + Assert.AreEqual(@"T1\(\) ", tokens[1]); + Assert.AreEqual(@"|", tokens[2]); + Assert.AreEqual(@" T2\(\)", tokens[3]); + Assert.AreEqual(")", tokens[4]); + } + + [TestMethod] + public void TokenizeFilterShouldHandleEmptyParenthesis() + { + var conditionString = @" ( ) "; - [TestClass] - public class FilterExpressionTests + var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); + + Assert.AreEqual(5, tokens.Length); + Assert.AreEqual(" ", tokens[0]); + Assert.AreEqual("(", tokens[1]); + Assert.AreEqual(" ", tokens[2]); + Assert.AreEqual(")", tokens[3]); + Assert.AreEqual(" ", tokens[4]); + } + + [TestMethod] + public void TokenizeFilterShouldHandleEscapedBackslash() { - [TestMethod] - public void TokenizeNullThrowsArgumentNullException() - { - Assert.ThrowsException(() => FilterExpression.TokenizeFilterExpressionString(null), "str"); - } - - [TestMethod] - public void TokenizeFilterShouldHandleEscapedParenthesis() - { - var conditionString = @"(T1\(\) | T2\(\))"; - - var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); - - Assert.AreEqual(5, tokens.Length); - Assert.AreEqual("(", tokens[0]); - Assert.AreEqual(@"T1\(\) ", tokens[1]); - Assert.AreEqual(@"|", tokens[2]); - Assert.AreEqual(@" T2\(\)", tokens[3]); - Assert.AreEqual(")", tokens[4]); - } - - [TestMethod] - public void TokenizeFilterShouldHandleEmptyParenthesis() - { - var conditionString = @" ( ) "; - - var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); - - Assert.AreEqual(5, tokens.Length); - Assert.AreEqual(" ", tokens[0]); - Assert.AreEqual("(", tokens[1]); - Assert.AreEqual(" ", tokens[2]); - Assert.AreEqual(")", tokens[3]); - Assert.AreEqual(" ", tokens[4]); - } - - [TestMethod] - public void TokenizeFilterShouldHandleEscapedBackslash() - { - var conditionString = @"(FQN!=T1\(""\\""\) | FQN!=T2\(\))"; - - var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); - - Assert.AreEqual(5, tokens.Length); - Assert.AreEqual("(", tokens[0]); - Assert.AreEqual(@"FQN!=T1\(""\\""\) ", tokens[1]); - Assert.AreEqual(@"|", tokens[2]); - Assert.AreEqual(@" FQN!=T2\(\)", tokens[3]); - Assert.AreEqual(")", tokens[4]); - } - - [TestMethod] - public void TokenizeFilterShouldHandleNestedParenthesis() - { - var conditionString = @"((FQN!=T1|FQN!=T2)&(Category=Foo\(\)))"; - - var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); - - Assert.AreEqual(11, tokens.Length); - Assert.AreEqual("(", tokens[0]); - Assert.AreEqual("(", tokens[1]); - Assert.AreEqual(@"FQN!=T1", tokens[2]); - Assert.AreEqual(@"|", tokens[3]); - Assert.AreEqual(@"FQN!=T2", tokens[4]); - Assert.AreEqual(")", tokens[5]); - Assert.AreEqual("&", tokens[6]); - Assert.AreEqual("(", tokens[7]); - Assert.AreEqual(@"Category=Foo\(\)", tokens[8]); - Assert.AreEqual(")", tokens[9]); - Assert.AreEqual(")", tokens[10]); - } - - [TestMethod] - public void TokenizeFilterShouldHandleInvalidEscapeSequence() - { - var conditionString = @"(T1\#\#)|T2\)"; - - var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); - - Assert.AreEqual(5, tokens.Length); - Assert.AreEqual("(", tokens[0]); - Assert.AreEqual(@"T1\#\#", tokens[1]); - Assert.AreEqual(@")", tokens[2]); - Assert.AreEqual(@"|", tokens[3]); - Assert.AreEqual(@"T2\)", tokens[4]); - } + var conditionString = @"(FQN!=T1\(""\\""\) | FQN!=T2\(\))"; + + var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); + + Assert.AreEqual(5, tokens.Length); + Assert.AreEqual("(", tokens[0]); + Assert.AreEqual(@"FQN!=T1\(""\\""\) ", tokens[1]); + Assert.AreEqual(@"|", tokens[2]); + Assert.AreEqual(@" FQN!=T2\(\)", tokens[3]); + Assert.AreEqual(")", tokens[4]); + } + + [TestMethod] + public void TokenizeFilterShouldHandleNestedParenthesis() + { + var conditionString = @"((FQN!=T1|FQN!=T2)&(Category=Foo\(\)))"; + + var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); + + Assert.AreEqual(11, tokens.Length); + Assert.AreEqual("(", tokens[0]); + Assert.AreEqual("(", tokens[1]); + Assert.AreEqual(@"FQN!=T1", tokens[2]); + Assert.AreEqual(@"|", tokens[3]); + Assert.AreEqual(@"FQN!=T2", tokens[4]); + Assert.AreEqual(")", tokens[5]); + Assert.AreEqual("&", tokens[6]); + Assert.AreEqual("(", tokens[7]); + Assert.AreEqual(@"Category=Foo\(\)", tokens[8]); + Assert.AreEqual(")", tokens[9]); + Assert.AreEqual(")", tokens[10]); + } + + [TestMethod] + public void TokenizeFilterShouldHandleInvalidEscapeSequence() + { + var conditionString = @"(T1\#\#)|T2\)"; + + var tokens = FilterExpression.TokenizeFilterExpressionString(conditionString).ToArray(); + + Assert.AreEqual(5, tokens.Length); + Assert.AreEqual("(", tokens[0]); + Assert.AreEqual(@"T1\#\#", tokens[1]); + Assert.AreEqual(@")", tokens[2]); + Assert.AreEqual(@"|", tokens[3]); + Assert.AreEqual(@"T2\)", tokens[4]); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/TestCaseFilterExpressionTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/TestCaseFilterExpressionTests.cs index 521ea6a9a0..35afc403bb 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/TestCaseFilterExpressionTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Filtering/TestCaseFilterExpressionTests.cs @@ -1,30 +1,31 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System.Collections.Generic; +using System.Linq; -namespace Microsoft.TestPlatform.Common.UnitTests.Filtering +using Microsoft.VisualStudio.TestPlatform.Common.Filtering; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Common.UnitTests.Filtering; + +[TestClass] +public class TestCaseFilterExpressionTests { - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.Filtering; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestCaseFilterExpressionTests + [TestMethod] + public void ValidForPropertiesShouldNotSetvalidForMatchVariableTofalseIfFilterIsInvalid() { - [TestMethod] - public void ValidForPropertiesShouldNotSetvalidForMatchVariableTofalseIfFilterIsInvalid() - { - var filterExpressionWrapper = new FilterExpressionWrapper("highlyunlikelyproperty=unused"); - var testCaseFilterExpression = new TestCaseFilterExpression(filterExpressionWrapper); + var filterExpressionWrapper = new FilterExpressionWrapper("highlyunlikelyproperty=unused"); + var testCaseFilterExpression = new TestCaseFilterExpression(filterExpressionWrapper); - Assert.AreEqual("highlyunlikelyproperty", testCaseFilterExpression.ValidForProperties(new List() { "TestCategory" }, (s) => { return null; }).Single()); + Assert.AreEqual("highlyunlikelyproperty", + testCaseFilterExpression.ValidForProperties(new List() { "TestCategory" }, s => null)!.Single()); - TestCase dummyTestCase = new TestCase(); - bool result = testCaseFilterExpression.MatchTestCase(dummyTestCase, (s) => { return "unused"; }); + TestCase dummyTestCase = new(); + bool result = testCaseFilterExpression.MatchTestCase(dummyTestCase, s => "unused"); - Assert.IsTrue(result); - } + Assert.IsTrue(result); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostExtensionManagerTests.cs index 01c5030094..f693fe887a 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostExtensionManagerTests.cs @@ -1,44 +1,45 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.Logging +using System; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Hosting; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.Logging; + +[TestClass] +public class TestHostExtensionManagerTests { - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Hosting; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; + [TestInitialize] + public void Initialize() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(TestHostExtensionManagerTests)); + } - [TestClass] - public class TestHostExtensionManagerTests + [TestMethod] + public void CreateShouldThrowExceptionIfMessageLoggerIsNull() { - [TestInitialize] - public void Initialize() + Assert.ThrowsException(() => { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestHostExtensionManagerTests)); - } - [TestMethod] - public void CreateShouldThrowExceptionIfMessageLoggerIsNull() + var testLoggerExtensionManager = TestRuntimeExtensionManager.Create(null!); + }); + } + + [TestMethod] + public void CreateShouldReturnInstanceOfTestLoggerExtensionManager() + { + try { - Assert.ThrowsException(() => - { - var testLoggerExtensionManager = TestRuntimeExtensionManager.Create(null); - }); + var testLoggerExtensionManager = TestRuntimeExtensionManager.Create(TestSessionMessageLogger.Instance); + Assert.IsNotNull(testLoggerExtensionManager); + Assert.IsInstanceOfType(testLoggerExtensionManager, typeof(TestRuntimeExtensionManager)); } - - [TestMethod] - public void CreateShouldReturnInstanceOfTestLoggerExtensionManager() + finally { - try - { - var testLoggerExtensionManager = TestRuntimeExtensionManager.Create(TestSessionMessageLogger.Instance); - Assert.IsNotNull(testLoggerExtensionManager); - Assert.IsInstanceOfType(testLoggerExtensionManager, typeof(TestRuntimeExtensionManager)); - } - finally - { - TestSessionMessageLogger.Instance = null; - } + TestSessionMessageLogger.Instance = null; } } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostProviderManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostProviderManagerTests.cs index d8e1ce85b6..18b43def79 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostProviderManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Hosting/TestHostProviderManagerTests.cs @@ -1,50 +1,51 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.Logging +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Hosting; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.Logging; + +/// +/// Tests the behaviors of the TestLoggerManager class. +/// +[TestClass] +public class TestHostProviderManagerTests { - using System; - using System.Collections.Generic; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Hosting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - /// - /// Tests the behaviors of the TestLoggerManager class. - /// - [TestClass] - public class TestHostProviderManagerTests + public TestHostProviderManagerTests() { - public TestHostProviderManagerTests() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(TestHostProviderManagerTests)); - } + TestPluginCacheHelper.SetupMockExtensions(typeof(TestHostProviderManagerTests)); + } - [TestMethod] - public void TestHostProviderManagerShouldReturnTestHostWhenAppropriateCustomUriProvided() - { - var manager = TestRuntimeProviderManager.Instance; - Assert.IsNotNull(manager.GetTestHostManagerByUri("executor://DesktopTestHost/")); - } + [TestMethod] + public void TestHostProviderManagerShouldReturnTestHostWhenAppropriateCustomUriProvided() + { + var manager = TestRuntimeProviderManager.Instance; + Assert.IsNotNull(manager.GetTestHostManagerByUri("executor://DesktopTestHost/")); + } - [TestMethod] - public void TestHostProviderManagerShouldReturnNullWhenInvalidCustomUriProvided() - { - var manager = TestRuntimeProviderManager.Instance; - Assert.IsNull(manager.GetTestHostManagerByUri("executor://InvalidHost/")); - } + [TestMethod] + public void TestHostProviderManagerShouldReturnNullWhenInvalidCustomUriProvided() + { + var manager = TestRuntimeProviderManager.Instance; + Assert.IsNull(manager.GetTestHostManagerByUri("executor://InvalidHost/")); + } - [TestMethod] - public void TestHostProviderManagerShouldReturnTestHostBasedOnRunConfiguration() - { - string runSettingsXml = @" + [TestMethod] + public void TestHostProviderManagerShouldReturnTestHostBasedOnRunConfiguration() + { + string runSettingsXml = @" 0 @@ -53,87 +54,104 @@ public void TestHostProviderManagerShouldReturnTestHostBasedOnRunConfiguration() "; - var manager = TestRuntimeProviderManager.Instance; - Assert.IsNotNull(manager.GetTestHostManagerByRunConfiguration(runSettingsXml)); - } + var manager = TestRuntimeProviderManager.Instance; + Assert.IsNotNull(manager.GetTestHostManagerByRunConfiguration(runSettingsXml, null)); + } - [TestMethod] - public void GetDefaultTestHostManagerReturnsANonNullInstance() - { - string runSettingsXml = string.Concat( - @" + [TestMethod] + public void GetDefaultTestHostManagerReturnsANonNullInstance() + { + string runSettingsXml = string.Concat( + @" 0 x86 ", - Framework.DefaultFramework.Name, - " "); + Framework.DefaultFramework.Name, + " "); - Assert.IsNotNull(TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml)); - } + Assert.IsNotNull(TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml, null)); + } - [TestMethod] - public void GetDefaultTestHostManagerReturnsANewInstanceEverytime() - { - string runSettingsXml = string.Concat( - @" + [TestMethod] + public void GetDefaultTestHostManagerReturnsANewInstanceEverytime() + { + string runSettingsXml = string.Concat( + @" 0 x86 ", - Framework.DefaultFramework.Name, - " "); + Framework.DefaultFramework.Name, + " "); - var instance1 = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml); - var instance2 = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml); + var instance1 = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml, null); + var instance2 = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml, null); - Assert.AreNotEqual(instance1, instance2); - } + Assert.AreNotEqual(instance1, instance2); + } - [TestMethod] - public void GetDefaultTestHostManagerReturnsDotnetCoreHostManagerIfFrameworkIsNetCore() - { - string runSettingsXml = string.Concat( - @" + [TestMethod] + public void GetDefaultTestHostManagerReturnsDotnetCoreHostManagerIfFrameworkIsNetCore() + { + string runSettingsXml = string.Concat( + @" 0 x64 ", - ".NETCoreApp,Version=v1.0", - " "); + ".NETCoreApp,Version=v1.0", + " "); - var testHostManager = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml); + var testHostManager = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml, null); - Assert.AreEqual(typeof(TestableTestHostManager), testHostManager.GetType()); - } + Assert.AreEqual(typeof(TestableTestHostManager), testHostManager!.GetType()); + } - [TestMethod] - public void GetDefaultTestHostManagerReturnsASharedManagerIfDisableAppDomainIsFalse() - { - string runSettingsXml = string.Concat( - @" + [TestMethod] + public void GetDefaultTestHostManagerReturnsASharedManagerIfDisableAppDomainIsFalse() + { + string runSettingsXml = string.Concat( + @" 0 x86 ", - ".NETFramework,Version=v4.5.1", - " "); + ".NETFramework,Version=v4.5.1", + " "); - var testHostManager = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml); - testHostManager.Initialize(null, runSettingsXml); - Assert.IsNotNull(testHostManager); + var testHostManager = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml, null); + testHostManager!.Initialize(null, runSettingsXml); + Assert.IsNotNull(testHostManager); - Assert.IsTrue(testHostManager.Shared, "Default TestHostManager must be shared if DisableAppDomain is false"); - } + Assert.IsTrue(testHostManager.Shared, "Default TestHostManager must be shared if DisableAppDomain is false"); + } - [TestMethod] - public void GetDefaultTestHostManagerReturnsANonSharedManagerIfDisableAppDomainIsTrue() - { - string runSettingsXml = string.Concat( - @" + [TestMethod] + public void GetDefaultTestHostManagerReturnsANonSharedManagerIfDisableAppDomainIsTrue() + { + string runSettingsXml = string.Concat( + @" 0 x86 ", - ".NETFramework,Version=v4.5.1", - "true "); + ".NETFramework,Version=v4.5.1", + "true "); - var testHostManager = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml); - testHostManager.Initialize(null, runSettingsXml); - Assert.IsNotNull(testHostManager); + var testHostManager = TestRuntimeProviderManager.Instance.GetTestHostManagerByRunConfiguration(runSettingsXml, null); + testHostManager!.Initialize(null, runSettingsXml); + Assert.IsNotNull(testHostManager); - Assert.IsFalse(testHostManager.Shared, "Default TestHostManager must NOT be shared if DisableAppDomain is true"); - } + Assert.IsFalse(testHostManager.Shared, "Default TestHostManager must NOT be shared if DisableAppDomain is true"); + } - [TestMethod] - public void TestHostProviderManagerShouldReturnNullIfTargetFrameworkIsPortable() - { - string runSettingsXml = @" + [TestMethod] + public void TestHostProviderManagerShouldReturnNullIfTargetFrameworkIsPortable() + { + string runSettingsXml = @" + + + 0 + x64 + .NETPortable,Version=v4.5,Profile=Profile44 + + "; + + var manager = TestRuntimeProviderManager.Instance; + Assert.IsNull(manager.GetTestHostManagerByRunConfiguration(runSettingsXml, null)); + } + + [TestMethod] + public void TestHostProviderManagerShouldReturnNullIfTargetFrameworkIsInvalidFramework() + { + // Portable 4.5 is not valid when it does not mention which profile it is. + string runSettingsXml = @" 0 @@ -142,169 +160,157 @@ public void TestHostProviderManagerShouldReturnNullIfTargetFrameworkIsPortable() "; - var manager = TestRuntimeProviderManager.Instance; - Assert.IsNull(manager.GetTestHostManagerByRunConfiguration(runSettingsXml)); + var manager = TestRuntimeProviderManager.Instance; + Assert.IsNull(manager.GetTestHostManagerByRunConfiguration(runSettingsXml, null)); + } + + #region Implementations + + [ExtensionUri("executor://DesktopTestHost")] + [FriendlyName("DesktopTestHost")] + private class CustomTestHost : ITestRuntimeProvider + { + public event EventHandler? HostLaunched; + + public event EventHandler? HostExited; + + public bool Shared { get; private set; } + + + public bool CanExecuteCurrentRunConfiguration(string? runsettingsXml) + { + var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); + var framework = config.TargetFramework; + Shared = !config.DisableAppDomain; + + // This is expected to be called once every run so returning a new instance every time. + return framework!.Name.IndexOf("netframework", StringComparison.OrdinalIgnoreCase) >= 0; + } + + public TestProcessStartInfo GetTestHostProcessStartInfo(IEnumerable sources, IDictionary? environmentVariables, TestRunnerConnectionInfo connectionInfo) + { + throw new NotImplementedException(); + } + + public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) + { + throw new NotImplementedException(); + } + + public IEnumerable GetTestSources(IEnumerable sources) + { + return sources; + } + + public void Initialize(IMessageLogger? logger, string runsettingsXml) + { + var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); + Shared = !config.DisableAppDomain; + } + + public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public void OnHostExited(HostProviderEventArgs _) + { + HostExited?.Invoke(this, new HostProviderEventArgs("Error")); } - #region Implementations + public void OnHostLaunched(HostProviderEventArgs _) + { + HostLaunched?.Invoke(this, new HostProviderEventArgs("Error")); + } - [ExtensionUri("executor://DesktopTestHost")] - [FriendlyName("DesktopTestHost")] - private class CustomTestHost : ITestRuntimeProvider + public void SetCustomLauncher(ITestHostLauncher customLauncher) { - public event EventHandler HostLaunched; - - public event EventHandler HostExited; - - public bool Shared { get; private set; } - - - public bool CanExecuteCurrentRunConfiguration(string runsettingsXml) - { - var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); - var framework = config.TargetFramework; - this.Shared = !config.DisableAppDomain; - - // This is expected to be called once every run so returning a new instance every time. - if (framework.Name.IndexOf("netframework", StringComparison.OrdinalIgnoreCase) >= 0) - { - return true; - } - - return false; - } - - public TestProcessStartInfo GetTestHostProcessStartInfo(IEnumerable sources, IDictionary environmentVariables, TestRunnerConnectionInfo connectionInfo) - { - throw new NotImplementedException(); - } - - public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) - { - throw new NotImplementedException(); - } - - public IEnumerable GetTestSources(IEnumerable sources) - { - return sources; - } - - public void Initialize(IMessageLogger logger, string runsettingsXml) - { - var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); - this.Shared = !config.DisableAppDomain; - } - - public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) - { - throw new NotImplementedException(); - } - - public void OnHostExited(HostProviderEventArgs e) - { - this.HostExited.Invoke(this, new HostProviderEventArgs("Error")); - } - - public void OnHostLaunched(HostProviderEventArgs e) - { - this.HostLaunched.Invoke(this, new HostProviderEventArgs("Error")); - } - - public void SetCustomLauncher(ITestHostLauncher customLauncher) - { - throw new NotImplementedException(); - } - - public Task CleanTestHostAsync(CancellationToken cancellationToken) - { - throw new NotImplementedException(); - } - - public TestHostConnectionInfo GetTestHostConnectionInfo() - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - [ExtensionUri("executor://NetCoreTestHost")] - [FriendlyName("NetCoreTestHost")] - private class TestableTestHostManager : ITestRuntimeProvider + public Task CleanTestHostAsync(CancellationToken cancellationToken) { - public event EventHandler HostLaunched; - - public event EventHandler HostExited; - - public bool Shared { get; private set; } - - public bool CanExecuteCurrentRunConfiguration(string runsettingsXml) - { - var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); - var framework = config.TargetFramework; - this.Shared = !config.DisableAppDomain; - - // This is expected to be called once every run so returning a new instance every time. - if (framework.Name.IndexOf("netstandard", StringComparison.OrdinalIgnoreCase) >= 0 - || framework.Name.IndexOf("netcoreapp", StringComparison.OrdinalIgnoreCase) >= 0) - { - return true; - } - - return false; - } - - public TestProcessStartInfo GetTestHostProcessStartInfo(IEnumerable sources, IDictionary environmentVariables, TestRunnerConnectionInfo connectionInfo) - { - throw new NotImplementedException(); - } - - public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) - { - throw new NotImplementedException(); - } - - public void Initialize(IMessageLogger logger, string runsettingsXml) - { - var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); - this.Shared = !config.DisableAppDomain; - } - - public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) - { - throw new NotImplementedException(); - } - - public void OnHostExited(HostProviderEventArgs e) - { - this.HostExited.Invoke(this, new HostProviderEventArgs("Error")); - } - - public void OnHostLaunched(HostProviderEventArgs e) - { - this.HostLaunched.Invoke(this, new HostProviderEventArgs("Error")); - } - - public void SetCustomLauncher(ITestHostLauncher customLauncher) - { - throw new NotImplementedException(); - } - - public Task CleanTestHostAsync(CancellationToken cancellationToken) - { - throw new NotImplementedException(); - } - - public TestHostConnectionInfo GetTestHostConnectionInfo() - { - throw new NotImplementedException(); - } - - public IEnumerable GetTestSources(IEnumerable sources) - { - return sources; - } + throw new NotImplementedException(); } - #endregion + public TestHostConnectionInfo GetTestHostConnectionInfo() + { + throw new NotImplementedException(); + } } -} + [ExtensionUri("executor://NetCoreTestHost")] + [FriendlyName("NetCoreTestHost")] + private class TestableTestHostManager : ITestRuntimeProvider + { + public event EventHandler? HostLaunched; + + public event EventHandler? HostExited; + + public bool Shared { get; private set; } + + public bool CanExecuteCurrentRunConfiguration(string? runsettingsXml) + { + var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); + var framework = config.TargetFramework; + Shared = !config.DisableAppDomain; + + // This is expected to be called once every run so returning a new instance every time. + return framework!.Name.IndexOf("netstandard", StringComparison.OrdinalIgnoreCase) >= 0 + || framework.Name.IndexOf("netcoreapp", StringComparison.OrdinalIgnoreCase) >= 0; + } + + public TestProcessStartInfo GetTestHostProcessStartInfo(IEnumerable sources, IDictionary? environmentVariables, TestRunnerConnectionInfo connectionInfo) + { + throw new NotImplementedException(); + } + + public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) + { + throw new NotImplementedException(); + } + + public void Initialize(IMessageLogger? logger, string runsettingsXml) + { + var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettingsXml); + Shared = !config.DisableAppDomain; + } + + public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public void OnHostExited(HostProviderEventArgs _) + { + HostExited?.Invoke(this, new HostProviderEventArgs("Error")); + } + + public void OnHostLaunched(HostProviderEventArgs _) + { + HostLaunched?.Invoke(this, new HostProviderEventArgs("Error")); + } + + public void SetCustomLauncher(ITestHostLauncher customLauncher) + { + throw new NotImplementedException(); + } + + public Task CleanTestHostAsync(CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public TestHostConnectionInfo GetTestHostConnectionInfo() + { + throw new NotImplementedException(); + } + + public IEnumerable GetTestSources(IEnumerable sources) + { + return sources; + } + } + + #endregion +} diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Logging/InternalTestLoggerEventsTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Logging/InternalTestLoggerEventsTests.cs index 0cd28995da..5077e68760 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Logging/InternalTestLoggerEventsTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Logging/InternalTestLoggerEventsTests.cs @@ -1,571 +1,511 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Logging +using System; +using System.Collections.Generic; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + +namespace Microsoft.TestPlatform.Common.UnitTests.Logging; + +[TestClass] +public class InternalTestLoggerEventsBehaviors { - using System; - using System.Collections.Generic; - using System.Threading; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly TestSessionMessageLogger _testSessionMessageLogger; + private readonly InternalTestLoggerEvents _loggerEvents; - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + public InternalTestLoggerEventsBehaviors() + { + _testSessionMessageLogger = TestSessionMessageLogger.Instance; + _loggerEvents = new InternalTestLoggerEvents(_testSessionMessageLogger); + } - [TestClass] - public class InternalTestLoggerEventsBehaviors + [TestCleanup] + public void Dispose() { - private TestSessionMessageLogger testSessionMessageLogger; - private InternalTestLoggerEvents loggerEvents; + _loggerEvents.Dispose(); + TestSessionMessageLogger.Instance = null; + } - [TestInitialize] - public void Initialize() - { - testSessionMessageLogger = TestSessionMessageLogger.Instance; - loggerEvents = new InternalTestLoggerEvents(testSessionMessageLogger); - } + [TestMethod] + public void RaiseTestRunMessageShouldNotThrowExceptionIfNoEventHandlersAreRegistered() + { + // Send the test message event. + _loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "This is a string.")); + } - [TestCleanup] - public void Dispose() - { - loggerEvents.Dispose(); - TestSessionMessageLogger.Instance = null; - } + [TestMethod] + public void RaiseTestRunMessageShouldInvokeRegisteredEventHandlerIfTestRunMessageEventArgsIsPassed() + { + EventWaitHandle waitHandle = new AutoResetEvent(false); + bool testMessageReceived = false; + TestRunMessageEventArgs? eventArgs = null; + var message = "This is the test message"; + + // Register for the test message event. + _loggerEvents.TestRunMessage += (sender, e) => + { + testMessageReceived = true; + eventArgs = e; + waitHandle.Set(); + }; + + _loggerEvents.EnableEvents(); + // Send the test message event. + _loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, message)); + + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + + Assert.IsTrue(testMessageReceived); + Assert.IsNotNull(eventArgs); + Assert.AreEqual(message, eventArgs.Message); + Assert.AreEqual(TestMessageLevel.Informational, eventArgs.Level); + } - [TestMethod] - public void RaiseTestRunMessageShouldNotThrowExceptionIfNoEventHandlersAreRegistered() - { - // Send the test message event. - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational,"This is a string.")); - } + [TestMethod] + public void RaiseTestResultShouldInvokeRegisteredEventHandlerIfTestResultEventArgsIsPassed() + { + EventWaitHandle waitHandle = new AutoResetEvent(false); + bool testResultReceived = false; + TestResultEventArgs? eventArgs = null; + var result = new TestResult(new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")); - [TestMethod] - public void RaiseTestRunMessageShouldInvokeRegisteredEventHandlerIfTestRunMessageEventArgsIsPassed() + // Register for the test result event. + _loggerEvents.TestResult += (sender, e) => { - EventWaitHandle waitHandle = new AutoResetEvent(false); - bool testMessageReceived = false; - TestRunMessageEventArgs eventArgs = null; - var message = "This is the test message"; - - // Register for the test message event. - loggerEvents.TestRunMessage += (sender, e) => - { - testMessageReceived = true; - eventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the test message event. - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, message)); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - - Assert.IsTrue(testMessageReceived); - Assert.IsNotNull(eventArgs); - Assert.AreEqual(message, eventArgs.Message); - Assert.AreEqual(TestMessageLevel.Informational, eventArgs.Level); - } + testResultReceived = true; + eventArgs = e; + waitHandle.Set(); + }; - [TestMethod] - public void RaiseTestResultShouldInvokeRegisteredEventHandlerIfTestResultEventArgsIsPassed() - { - EventWaitHandle waitHandle = new AutoResetEvent(false); - bool testResultReceived = false; - TestResultEventArgs eventArgs = null; - var result =new TestResult(new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")); - - // Register for the test result event. - loggerEvents.TestResult += (sender, e) => - { - testResultReceived = true; - eventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the test result event. - loggerEvents.RaiseTestResult(new TestResultEventArgs(result)); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - - Assert.IsTrue(testResultReceived); - Assert.IsNotNull(eventArgs); - Assert.AreEqual(result, eventArgs.Result); - } + _loggerEvents.EnableEvents(); + // Send the test result event. + _loggerEvents.RaiseTestResult(new TestResultEventArgs(result)); - [TestMethod] - public void RaiseTestResultShouldThrowExceptionIfNullTestResultEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestResult(null); - }); - } + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - [TestMethod] - public void RaiseTestRunMessageShouldThrowExceptioIfNullTestRunMessageEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestRunMessage(null); - }); - } + Assert.IsTrue(testResultReceived); + Assert.IsNotNull(eventArgs); + Assert.AreEqual(result, eventArgs.Result); + } - [TestMethod] - public void CompleteTestRunShouldInvokeRegisteredEventHandler() - { - bool testRunCompleteReceived = false; - TestRunCompleteEventArgs eventArgs = null; - - EventWaitHandle waitHandle = new AutoResetEvent(false); - - // Register for the test run complete event. - loggerEvents.TestRunComplete += (sender, e) => - { - testRunCompleteReceived = true; - eventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the test run complete event. - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan()); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - Assert.IsTrue(testRunCompleteReceived); - Assert.IsNotNull(eventArgs); - } + [TestMethod] + public void RaiseTestResultShouldThrowExceptionIfNullTestResultEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseTestResult(null!)); + } + + [TestMethod] + public void RaiseTestRunMessageShouldThrowExceptioIfNullTestRunMessageEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseTestRunMessage(null!)); + } + + [TestMethod] + public void CompleteTestRunShouldInvokeRegisteredEventHandler() + { + bool testRunCompleteReceived = false; + TestRunCompleteEventArgs? eventArgs = null; - [TestMethod] - public void EnableEventsShouldSendEventsAlreadyPresentInQueueToRegisteredEventHandlers() + EventWaitHandle waitHandle = new AutoResetEvent(false); + + // Register for the test run complete event. + _loggerEvents.TestRunComplete += (sender, e) => { - bool testResultReceived = false; - bool testMessageReceived = false; + testRunCompleteReceived = true; + eventArgs = e; + waitHandle.Set(); + }; - // Send the events. - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error,"This is a string.")); - loggerEvents.RaiseTestResult(new TestResultEventArgs(new TestResult(new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")))); + _loggerEvents.EnableEvents(); + // Send the test run complete event. + _loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan()); - // Register for the events. - loggerEvents.TestResult += (sender, e) => - { - testResultReceived = true; - }; + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + Assert.IsTrue(testRunCompleteReceived); + Assert.IsNotNull(eventArgs); + } - loggerEvents.TestRunMessage += (sender, e) => - { - testMessageReceived = true; - }; + [TestMethod] + public void EnableEventsShouldSendEventsAlreadyPresentInQueueToRegisteredEventHandlers() + { + bool testResultReceived = false; + bool testMessageReceived = false; - // Enable events and verify that the events are received. - loggerEvents.EnableEvents(); + // Send the events. + _loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, "This is a string.")); + _loggerEvents.RaiseTestResult(new TestResultEventArgs(new TestResult(new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")))); - Assert.IsTrue(testResultReceived); - Assert.IsTrue(testMessageReceived); - } + // Register for the events. + _loggerEvents.TestResult += (sender, e) => testResultReceived = true; - [TestMethod] - public void DisposeShouldNotThrowExceptionIfCalledMultipleTimes() - { - var loggerEvents = GetDisposedLoggerEvents(); - loggerEvents.Dispose(); - } + _loggerEvents.TestRunMessage += (sender, e) => testMessageReceived = true; - [TestMethod] - public void RaiseTestResultShouldThrowExceptionIfDisposedIsAlreadyCalled() - { - var loggerEvents = GetDisposedLoggerEvents(); + // Enable events and verify that the events are received. + _loggerEvents.EnableEvents(); - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(new TestResult(new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")))); - }); - } + Assert.IsTrue(testResultReceived); + Assert.IsTrue(testMessageReceived); + } - [TestMethod] - public void RaiseTestRunMessageShouldThrowExceptionIfDisposeIsAlreadyCalled() - { - var loggerEvents = GetDisposedLoggerEvents(); + [TestMethod] + public void DisposeShouldNotThrowExceptionIfCalledMultipleTimes() + { + var loggerEvents = GetDisposedLoggerEvents(); + loggerEvents.Dispose(); + } - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error,"This is a string.")); - }); - } + [TestMethod] + public void RaiseTestResultShouldThrowExceptionIfDisposedIsAlreadyCalled() + { + var loggerEvents = GetDisposedLoggerEvents(); - [TestMethod] - public void CompleteTestRunShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); + Assert.ThrowsException(() => loggerEvents.RaiseTestResult(new TestResultEventArgs(new TestResult(new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName"))))); + } - Assert.ThrowsException(() => - { - loggerEvents.CompleteTestRun(null, true, false, null, null, new TimeSpan()); - }); - } + [TestMethod] + public void RaiseTestRunMessageShouldThrowExceptionIfDisposeIsAlreadyCalled() + { + var loggerEvents = GetDisposedLoggerEvents(); - [TestMethod] - public void EnableEventsShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); + Assert.ThrowsException(() => loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, "This is a string."))); + } - Assert.ThrowsException(() => - { - loggerEvents.EnableEvents(); - }); - } + [TestMethod] + public void CompleteTestRunShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); - [TestMethod] - public void TestRunMessageLoggerProxySendMessageShouldInvokeRegisteredEventHandler() + Assert.ThrowsException(() => loggerEvents.CompleteTestRun(null, true, false, null, null, null, new TimeSpan())); + } + + [TestMethod] + public void EnableEventsShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); + + Assert.ThrowsException(() => loggerEvents.EnableEvents()); + } + + [TestMethod] + public void TestRunMessageLoggerProxySendMessageShouldInvokeRegisteredEventHandler() + { + var receivedRunMessage = false; + using (_loggerEvents) { - var receivedRunMessage = false; - using (loggerEvents) - { - loggerEvents.TestRunMessage += (sender, e) => - { - receivedRunMessage = true; - }; - - testSessionMessageLogger.SendMessage(TestMessageLevel.Error,"This is a string."); - } - - Assert.IsTrue(receivedRunMessage); + _loggerEvents.TestRunMessage += (sender, e) => receivedRunMessage = true; + + _testSessionMessageLogger.SendMessage(TestMessageLevel.Error, "This is a string."); } - [TestMethod] - public void TestLoggerProxySendMessageShouldNotInvokeRegisterdEventHandlerIfAlreadyDisposed() - { - var receivedRunMessage = false; - loggerEvents.TestRunMessage += (sender, e) => - { - receivedRunMessage = true; - }; + Assert.IsTrue(receivedRunMessage); + } - // Dispose the logger events, send a message, and verify it is not received. - loggerEvents.Dispose(); - testSessionMessageLogger.SendMessage(TestMessageLevel.Error,"This is a string."); + [TestMethod] + public void TestLoggerProxySendMessageShouldNotInvokeRegisterdEventHandlerIfAlreadyDisposed() + { + var receivedRunMessage = false; + _loggerEvents.TestRunMessage += (sender, e) => receivedRunMessage = true; - Assert.IsFalse(receivedRunMessage); - } + // Dispose the logger events, send a message, and verify it is not received. + _loggerEvents.Dispose(); + _testSessionMessageLogger.SendMessage(TestMessageLevel.Error, "This is a string."); - /// - /// Exception should be thrown if event args passed is null. - /// - [TestMethod] - public void RaiseDiscoveryStartShouldThrowExceptionIfNullDiscoveryStartEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveryStart(null); - }); - } + Assert.IsFalse(receivedRunMessage); + } - /// - /// Exception should be thrown if discovered tests event args is null. - /// - [TestMethod] - public void RaiseDiscoveredTestsShouldThrowExceptionIfNullDiscoveredTestsEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveredTests(null); - }); - } + /// + /// Exception should be thrown if event args passed is null. + /// + [TestMethod] + public void RaiseDiscoveryStartShouldThrowExceptionIfNullDiscoveryStartEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseDiscoveryStart(null!)); + } - /// - /// Exception should be thrown if logger events are already disposed. - /// - [TestMethod] - public void RaiseDiscoveredTestsShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); - List testCases = new List { new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName") }; - DiscoveredTestsEventArgs discoveredTestsEventArgs = new DiscoveredTestsEventArgs(testCases); - - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveredTests(discoveredTestsEventArgs); - }); - } + /// + /// Exception should be thrown if discovered tests event args is null. + /// + [TestMethod] + public void RaiseDiscoveredTestsShouldThrowExceptionIfNullDiscoveredTestsEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseDiscoveredTests(null!)); + } - /// - /// Check for invocation to registered event handlers. - /// - [TestMethod] - public void RaiseDiscoveredTestsShouldInvokeRegisteredEventHandler() - { - bool discoveredTestsReceived = false; - DiscoveredTestsEventArgs receivedEventArgs = null; - EventWaitHandle waitHandle = new AutoResetEvent(false); - - List testCases = new List { new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName") }; - DiscoveredTestsEventArgs discoveredTestsEventArgs = new DiscoveredTestsEventArgs(testCases); - - // Register for the discovered tests event. - loggerEvents.DiscoveredTests += (sender, e) => - { - discoveredTestsReceived = true; - receivedEventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the discovered tests event. - loggerEvents.RaiseDiscoveredTests(discoveredTestsEventArgs); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - Assert.IsTrue(discoveredTestsReceived); - Assert.IsNotNull(receivedEventArgs); - Assert.AreEqual(receivedEventArgs, discoveredTestsEventArgs); - } + /// + /// Exception should be thrown if logger events are already disposed. + /// + [TestMethod] + public void RaiseDiscoveredTestsShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); + List testCases = [new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")]; + DiscoveredTestsEventArgs discoveredTestsEventArgs = new(testCases); - /// - /// Exception should be thrown if event args passed is null. - /// - [TestMethod] - public void RaiseDiscoveryCompleteShouldThrowExceptionIfNullDiscoveryCompleteEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveryComplete(null); - }); - } + Assert.ThrowsException(() => loggerEvents.RaiseDiscoveredTests(discoveredTestsEventArgs)); + } - /// - /// Exception should be thrown if logger events are already disposed. - /// - [TestMethod] - public void RaiseDiscoveryStartShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); - DiscoveryCriteria discoveryCriteria = new DiscoveryCriteria() { TestCaseFilter = "Name=Test1" }; - DiscoveryStartEventArgs discoveryStartEventArgs = new DiscoveryStartEventArgs(discoveryCriteria); - - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveryStart(discoveryStartEventArgs); - }); - } + /// + /// Check for invocation to registered event handlers. + /// + [TestMethod] + public void RaiseDiscoveredTestsShouldInvokeRegisteredEventHandler() + { + bool discoveredTestsReceived = false; + DiscoveredTestsEventArgs? receivedEventArgs = null; + EventWaitHandle waitHandle = new AutoResetEvent(false); + + List testCases = [new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")]; + DiscoveredTestsEventArgs discoveredTestsEventArgs = new(testCases); + + // Register for the discovered tests event. + _loggerEvents.DiscoveredTests += (sender, e) => + { + discoveredTestsReceived = true; + receivedEventArgs = e; + waitHandle.Set(); + }; + + _loggerEvents.EnableEvents(); + // Send the discovered tests event. + _loggerEvents.RaiseDiscoveredTests(discoveredTestsEventArgs); + + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + Assert.IsTrue(discoveredTestsReceived); + Assert.IsNotNull(receivedEventArgs); + Assert.AreEqual(receivedEventArgs, discoveredTestsEventArgs); + } - /// - /// Exception should be thrown if logger events are already disposed. - /// - [TestMethod] - public void RaiseDiscoveryCompleteShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); - DiscoveryCompleteEventArgs discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); + /// + /// Exception should be thrown if event args passed is null. + /// + [TestMethod] + public void RaiseDiscoveryCompleteShouldThrowExceptionIfNullDiscoveryCompleteEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseDiscoveryComplete(null!)); + } - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveryComplete(discoveryCompleteEventArgs); - }); - } + /// + /// Exception should be thrown if logger events are already disposed. + /// + [TestMethod] + public void RaiseDiscoveryStartShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); + DiscoveryCriteria discoveryCriteria = new() { TestCaseFilter = "Name=Test1" }; + DiscoveryStartEventArgs discoveryStartEventArgs = new(discoveryCriteria); - /// - /// Check for invocation to registered event handlers. - /// - [TestMethod] - public void RaiseDiscoveryStartShouldInvokeRegisteredEventHandler() - { - bool discoveryStartReceived = false; - DiscoveryStartEventArgs receivedEventArgs = null; - EventWaitHandle waitHandle = new AutoResetEvent(false); - - DiscoveryCriteria discoveryCriteria = new DiscoveryCriteria() { TestCaseFilter = "Name=Test1" }; - DiscoveryStartEventArgs discoveryStartEventArgs = new DiscoveryStartEventArgs(discoveryCriteria); - - // Register for the discovery start event. - loggerEvents.DiscoveryStart += (sender, e) => - { - discoveryStartReceived = true; - receivedEventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the discovery start event. - loggerEvents.RaiseDiscoveryStart(discoveryStartEventArgs); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - Assert.IsTrue(discoveryStartReceived); - Assert.IsNotNull(receivedEventArgs); - Assert.AreEqual(receivedEventArgs, discoveryStartEventArgs); - Assert.AreEqual("Name=Test1", receivedEventArgs.DiscoveryCriteria.TestCaseFilter); - } + Assert.ThrowsException(() => loggerEvents.RaiseDiscoveryStart(discoveryStartEventArgs)); + } - /// - /// Check for invocation to registered event handlers. - /// - [TestMethod] - public void RaiseDiscoveryCompleteShouldInvokeRegisteredEventHandler() - { - bool discoveryCompleteReceived = false; - DiscoveryCompleteEventArgs receivedEventArgs = null; - EventWaitHandle waitHandle = new AutoResetEvent(false); - - DiscoveryCompleteEventArgs discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); - - // Register for the discovery complete event. - loggerEvents.DiscoveryComplete += (sender, e) => - { - discoveryCompleteReceived = true; - receivedEventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the discovery complete event. - loggerEvents.RaiseDiscoveryComplete(discoveryCompleteEventArgs); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - Assert.IsTrue(discoveryCompleteReceived); - Assert.IsNotNull(receivedEventArgs); - Assert.AreEqual(receivedEventArgs, discoveryCompleteEventArgs); - } + /// + /// Exception should be thrown if logger events are already disposed. + /// + [TestMethod] + public void RaiseDiscoveryCompleteShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); + DiscoveryCompleteEventArgs discoveryCompleteEventArgs = new(2, false); - /// - /// Exception should be thrown if event args passed is null. - /// - [TestMethod] - public void RaiseTestRunStartShouldThrowExceptionIfNullTestRunStartEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestRunStart(null); - }); - } + Assert.ThrowsException(() => loggerEvents.RaiseDiscoveryComplete(discoveryCompleteEventArgs)); + } - /// - /// Exception should be thrown if event args passed is null. - /// - [TestMethod] - public void RaiseDiscoveryMessageShouldThrowExceptionIfNullTestRunMessageEventArgsIsPassed() - { - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveryMessage(null); - }); - } + /// + /// Check for invocation to registered event handlers. + /// + [TestMethod] + public void RaiseDiscoveryStartShouldInvokeRegisteredEventHandler() + { + bool discoveryStartReceived = false; + DiscoveryStartEventArgs? receivedEventArgs = null; + EventWaitHandle waitHandle = new AutoResetEvent(false); + + DiscoveryCriteria discoveryCriteria = new() { TestCaseFilter = "Name=Test1" }; + DiscoveryStartEventArgs discoveryStartEventArgs = new(discoveryCriteria); + + // Register for the discovery start event. + _loggerEvents.DiscoveryStart += (sender, e) => + { + discoveryStartReceived = true; + receivedEventArgs = e; + waitHandle.Set(); + }; + + _loggerEvents.EnableEvents(); + // Send the discovery start event. + _loggerEvents.RaiseDiscoveryStart(discoveryStartEventArgs); + + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + Assert.IsTrue(discoveryStartReceived); + Assert.IsNotNull(receivedEventArgs); + Assert.AreEqual(receivedEventArgs, discoveryStartEventArgs); + Assert.AreEqual("Name=Test1", receivedEventArgs.DiscoveryCriteria.TestCaseFilter); + } - /// - /// Exception should be thrown if logger events are already disposed. - /// - [TestMethod] - public void RaiseTestRunStartShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); - TestRunCriteria testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); - TestRunStartEventArgs testRunStartEventArgs = new TestRunStartEventArgs(testRunCriteria); - - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestRunStart(testRunStartEventArgs); - }); - } + /// + /// Check for invocation to registered event handlers. + /// + [TestMethod] + public void RaiseDiscoveryCompleteShouldInvokeRegisteredEventHandler() + { + bool discoveryCompleteReceived = false; + DiscoveryCompleteEventArgs? receivedEventArgs = null; + EventWaitHandle waitHandle = new AutoResetEvent(false); - /// - /// Exception should be thrown if logger events are already disposed. - /// - [TestMethod] - public void RaiseDiscoveryMessageShouldThrowExceptionIfAlreadyDisposed() - { - var loggerEvents = GetDisposedLoggerEvents(); - string message = "This is the test message"; - TestRunMessageEventArgs testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); - - Assert.ThrowsException(() => - { - loggerEvents.RaiseDiscoveryMessage(testRunMessageEventArgs); - }); - } + DiscoveryCompleteEventArgs discoveryCompleteEventArgs = new(2, false); - /// - /// Check for invocation to registered event handlers. - /// - [TestMethod] - public void RaiseTestRunStartShouldInvokeRegisteredEventHandler() + // Register for the discovery complete event. + _loggerEvents.DiscoveryComplete += (sender, e) => { - bool testRunStartReceived = false; - TestRunStartEventArgs receivedEventArgs = null; - EventWaitHandle waitHandle = new AutoResetEvent(false); - - TestRunCriteria testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); - TestRunStartEventArgs testRunStartEventArgs = new TestRunStartEventArgs(testRunCriteria); - - // Register for the test run start event. - loggerEvents.TestRunStart += (sender, e) => - { - testRunStartReceived = true; - receivedEventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the test run start event. - loggerEvents.RaiseTestRunStart(testRunStartEventArgs); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - Assert.IsTrue(testRunStartReceived); - Assert.IsNotNull(receivedEventArgs); - Assert.AreEqual(receivedEventArgs, testRunStartEventArgs); - Assert.AreEqual("Name=Test1", receivedEventArgs.TestRunCriteria.TestCaseFilter); - } + discoveryCompleteReceived = true; + receivedEventArgs = e; + waitHandle.Set(); + }; - /// - /// Check for invocation to registered event handlers. - /// - [TestMethod] - public void RaiseDiscoveryMessageShouldInvokeRegisteredEventHandler() - { - bool discoveryMessageReceived = false; - TestRunMessageEventArgs receivedEventArgs = null; - EventWaitHandle waitHandle = new AutoResetEvent(false); - - string message = "This is the test message"; - TestRunMessageEventArgs testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); - - // Register for the discovery message event. - loggerEvents.DiscoveryMessage += (sender, e) => - { - discoveryMessageReceived = true; - receivedEventArgs = e; - waitHandle.Set(); - }; - - loggerEvents.EnableEvents(); - // Send the discovery message event. - loggerEvents.RaiseDiscoveryMessage(testRunMessageEventArgs); - - var waitSuccess = waitHandle.WaitOne(500); - Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); - Assert.IsTrue(discoveryMessageReceived); - Assert.IsNotNull(receivedEventArgs); - Assert.AreEqual(receivedEventArgs, testRunMessageEventArgs); - Assert.AreEqual(message, receivedEventArgs.Message); - Assert.AreEqual(TestMessageLevel.Informational, receivedEventArgs.Level); - } + _loggerEvents.EnableEvents(); + // Send the discovery complete event. + _loggerEvents.RaiseDiscoveryComplete(discoveryCompleteEventArgs); - /// - /// Gets a disposed instance of the logger events. - /// - /// Disposed instance. - private InternalTestLoggerEvents GetDisposedLoggerEvents() - { - var loggerEvents = new InternalTestLoggerEvents(testSessionMessageLogger); - loggerEvents.Dispose(); + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + Assert.IsTrue(discoveryCompleteReceived); + Assert.IsNotNull(receivedEventArgs); + Assert.AreEqual(receivedEventArgs, discoveryCompleteEventArgs); + } - return loggerEvents; - } + /// + /// Exception should be thrown if event args passed is null. + /// + [TestMethod] + public void RaiseTestRunStartShouldThrowExceptionIfNullTestRunStartEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseTestRunStart(null!)); + } + + /// + /// Exception should be thrown if event args passed is null. + /// + [TestMethod] + public void RaiseDiscoveryMessageShouldThrowExceptionIfNullTestRunMessageEventArgsIsPassed() + { + Assert.ThrowsException(() => _loggerEvents.RaiseDiscoveryMessage(null!)); + } + + /// + /// Exception should be thrown if logger events are already disposed. + /// + [TestMethod] + public void RaiseTestRunStartShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); + TestRunCriteria testRunCriteria = new(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); + TestRunStartEventArgs testRunStartEventArgs = new(testRunCriteria); + + Assert.ThrowsException(() => loggerEvents.RaiseTestRunStart(testRunStartEventArgs)); + } + + /// + /// Exception should be thrown if logger events are already disposed. + /// + [TestMethod] + public void RaiseDiscoveryMessageShouldThrowExceptionIfAlreadyDisposed() + { + var loggerEvents = GetDisposedLoggerEvents(); + string message = "This is the test message"; + TestRunMessageEventArgs testRunMessageEventArgs = new(TestMessageLevel.Informational, message); + + Assert.ThrowsException(() => loggerEvents.RaiseDiscoveryMessage(testRunMessageEventArgs)); + } + + /// + /// Check for invocation to registered event handlers. + /// + [TestMethod] + public void RaiseTestRunStartShouldInvokeRegisteredEventHandler() + { + bool testRunStartReceived = false; + TestRunStartEventArgs? receivedEventArgs = null; + EventWaitHandle waitHandle = new AutoResetEvent(false); + + TestRunCriteria testRunCriteria = new(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); + TestRunStartEventArgs testRunStartEventArgs = new(testRunCriteria); + + // Register for the test run start event. + _loggerEvents.TestRunStart += (sender, e) => + { + testRunStartReceived = true; + receivedEventArgs = e; + waitHandle.Set(); + }; + + _loggerEvents.EnableEvents(); + // Send the test run start event. + _loggerEvents.RaiseTestRunStart(testRunStartEventArgs); + + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + Assert.IsTrue(testRunStartReceived); + Assert.IsNotNull(receivedEventArgs); + Assert.AreEqual(receivedEventArgs, testRunStartEventArgs); + Assert.AreEqual("Name=Test1", receivedEventArgs.TestRunCriteria.TestCaseFilter); + } + + /// + /// Check for invocation to registered event handlers. + /// + [TestMethod] + public void RaiseDiscoveryMessageShouldInvokeRegisteredEventHandler() + { + bool discoveryMessageReceived = false; + TestRunMessageEventArgs? receivedEventArgs = null; + EventWaitHandle waitHandle = new AutoResetEvent(false); + + string message = "This is the test message"; + TestRunMessageEventArgs testRunMessageEventArgs = new(TestMessageLevel.Informational, message); + + // Register for the discovery message event. + _loggerEvents.DiscoveryMessage += (sender, e) => + { + discoveryMessageReceived = true; + receivedEventArgs = e; + waitHandle.Set(); + }; + + _loggerEvents.EnableEvents(); + // Send the discovery message event. + _loggerEvents.RaiseDiscoveryMessage(testRunMessageEventArgs); + + var waitSuccess = waitHandle.WaitOne(500); + Assert.IsTrue(waitSuccess, "Event must be raised within timeout."); + Assert.IsTrue(discoveryMessageReceived); + Assert.IsNotNull(receivedEventArgs); + Assert.AreEqual(receivedEventArgs, testRunMessageEventArgs); + Assert.AreEqual(message, receivedEventArgs.Message); + Assert.AreEqual(TestMessageLevel.Informational, receivedEventArgs.Level); + } + + /// + /// Gets a disposed instance of the logger events. + /// + /// Disposed instance. + private InternalTestLoggerEvents GetDisposedLoggerEvents() + { + var loggerEvents = new InternalTestLoggerEvents(_testSessionMessageLogger); + loggerEvents.Dispose(); + + return loggerEvents; } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Logging/TestSessionMessageLoggerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Logging/TestSessionMessageLoggerTests.cs index 13d32e095d..12fa395398 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Logging/TestSessionMessageLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Logging/TestSessionMessageLoggerTests.cs @@ -1,66 +1,63 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Logging -{ - using System; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - [TestClass] - public class TestSessionMessageLoggerTests - { - private TestSessionMessageLogger testSessionMessageLogger; +using Microsoft.VisualStudio.TestTools.UnitTesting; - private TestRunMessageEventArgs currentEventArgs; +namespace Microsoft.TestPlatform.Common.UnitTests.Logging; - [TestInitialize] - public void TestInit() - { - this.testSessionMessageLogger = TestSessionMessageLogger.Instance; - } +[TestClass] +public class TestSessionMessageLoggerTests +{ + private readonly TestSessionMessageLogger _testSessionMessageLogger; + private TestRunMessageEventArgs? _currentEventArgs; - [TestCleanup] - public void TestCleanup() - { - TestSessionMessageLogger.Instance = null; - } + public TestSessionMessageLoggerTests() + { + _testSessionMessageLogger = TestSessionMessageLogger.Instance; + } - [TestMethod] - public void InstanceShouldReturnALoggerInstance() - { - Assert.IsNotNull(this.testSessionMessageLogger); - } + [TestCleanup] + public void TestCleanup() + { + TestSessionMessageLogger.Instance = null; + } - [TestMethod] - public void SendMessageShouldLogErrorMessages() - { - this.testSessionMessageLogger.TestRunMessage += OnMessage; + [TestMethod] + public void InstanceShouldReturnALoggerInstance() + { + Assert.IsNotNull(_testSessionMessageLogger); + } - var message = "Alert"; - this.testSessionMessageLogger.SendMessage(TestMessageLevel.Error, message); + [TestMethod] + public void SendMessageShouldLogErrorMessages() + { + _testSessionMessageLogger.TestRunMessage += OnMessage; - Assert.AreEqual(TestMessageLevel.Error, this.currentEventArgs.Level); - Assert.AreEqual(message, this.currentEventArgs.Message); - } + var message = "Alert"; + _testSessionMessageLogger.SendMessage(TestMessageLevel.Error, message); - [TestMethod] - public void SendMessageShouldLogErrorAsWarningIfSpecifiedSo() - { - this.testSessionMessageLogger.TestRunMessage += OnMessage; - this.testSessionMessageLogger.TreatTestAdapterErrorsAsWarnings = true; + Assert.AreEqual(TestMessageLevel.Error, _currentEventArgs!.Level); + Assert.AreEqual(message, _currentEventArgs.Message); + } - var message = "Alert"; - this.testSessionMessageLogger.SendMessage(TestMessageLevel.Error, message); + [TestMethod] + public void SendMessageShouldLogErrorAsWarningIfSpecifiedSo() + { + _testSessionMessageLogger.TestRunMessage += OnMessage; + _testSessionMessageLogger.TreatTestAdapterErrorsAsWarnings = true; - Assert.AreEqual(TestMessageLevel.Warning, this.currentEventArgs.Level); - Assert.AreEqual(message, this.currentEventArgs.Message); - } + var message = "Alert"; + _testSessionMessageLogger.SendMessage(TestMessageLevel.Error, message); - private void OnMessage(object sender, TestRunMessageEventArgs e) - { - this.currentEventArgs = e; - } + Assert.AreEqual(TestMessageLevel.Warning, _currentEventArgs!.Level); + Assert.AreEqual(message, _currentEventArgs.Message); + } + + private void OnMessage(object? sender, TestRunMessageEventArgs e) + { + _currentEventArgs = e; } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Microsoft.TestPlatform.Common.UnitTests.csproj b/test/Microsoft.TestPlatform.Common.UnitTests/Microsoft.TestPlatform.Common.UnitTests.csproj index 463037ec3e..85a7135592 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Microsoft.TestPlatform.Common.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Microsoft.TestPlatform.Common.UnitTests.csproj @@ -1,23 +1,15 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.Common.UnitTests - - - - - - @@ -27,5 +19,5 @@ - + diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Program.cs deleted file mode 100644 index c14da13e69..0000000000 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.Common.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 5f434531b6..0000000000 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestPlatform.Common.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("8a00286a-d8ea-4331-a5f5-cf76c6b7461c")] diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/RequestDataTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/RequestDataTests.cs index 7ed99a3a89..3767137f3e 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/RequestDataTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/RequestDataTests.cs @@ -1,69 +1,69 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests -{ - using System; +using System; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class RequestDataTests +namespace Microsoft.TestPlatform.Common.UnitTests; + +[TestClass] +public class RequestDataTests +{ + [TestMethod] + public void RequestDataShouldReturnValidMetricsCollector() { - [TestMethod] - public void RequestDataShouldReturnValidMetricsCollector() - { - var requestData = new RequestData(); - var metricsCollection = new MetricsCollection(); - requestData.MetricsCollection = metricsCollection; + var requestData = new RequestData(); + var metricsCollection = new MetricsCollection(); + requestData.MetricsCollection = metricsCollection; - Assert.AreEqual(metricsCollection, requestData.MetricsCollection); - } + Assert.AreEqual(metricsCollection, requestData.MetricsCollection); + } - [TestMethod] - public void RequestDataShouldReturnValidProtocolConfig() - { - var requestData = new RequestData(); - requestData.ProtocolConfig = new ProtocolConfig { Version = 2 }; + [TestMethod] + public void RequestDataShouldReturnValidProtocolConfig() + { + var requestData = new RequestData(); + requestData.ProtocolConfig = new ProtocolConfig { Version = 2 }; - Assert.AreEqual(2, requestData.ProtocolConfig.Version); - } + Assert.AreEqual(2, requestData.ProtocolConfig.Version); + } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void RequestDataShouldThrowArgumentNullExpectionOnNullMetricsCollection() - { - var requestData = new RequestData(); - requestData.MetricsCollection = null; - } + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void RequestDataShouldThrowArgumentNullExpectionOnNullMetricsCollection() + { + var requestData = new RequestData(); + requestData.MetricsCollection = null!; + } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void RequestDataShouldThrowArgumentNullExpectionOnNullProtocolConfig() - { - var requestData = new RequestData(); - requestData.ProtocolConfig = null; - } + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void RequestDataShouldThrowArgumentNullExpectionOnNullProtocolConfig() + { + var requestData = new RequestData(); + requestData.ProtocolConfig = null; + } - [TestMethod] - public void RequestDataShouldReturnIsTelemetryOptedInTrueIfTelemetryOptedIn() - { - var requestData = new RequestData(); - requestData.IsTelemetryOptedIn = true; + [TestMethod] + public void RequestDataShouldReturnIsTelemetryOptedInTrueIfTelemetryOptedIn() + { + var requestData = new RequestData(); + requestData.IsTelemetryOptedIn = true; - Assert.IsTrue(requestData.IsTelemetryOptedIn); - } + Assert.IsTrue(requestData.IsTelemetryOptedIn); + } - [TestMethod] - public void RequestDataShouldReturnIsTelemetryOptedInFalseIfTelemetryOptedOut() - { - var requestData = new RequestData(); - requestData.IsTelemetryOptedIn = false; + [TestMethod] + public void RequestDataShouldReturnIsTelemetryOptedInFalseIfTelemetryOptedOut() + { + var requestData = new RequestData(); + requestData.IsTelemetryOptedIn = false; - Assert.IsFalse(requestData.IsTelemetryOptedIn); - } + Assert.IsFalse(requestData.IsTelemetryOptedIn); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsManagerTests.cs index ef3b64032b..75bf473528 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsManagerTests.cs @@ -1,67 +1,66 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests +using System; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests; + +[TestClass] +public class RunSettingsManagerTests { - using System; + [TestCleanup] + public void TestCleanup() + { + RunSettingsManager.Instance = null; + } + + [TestMethod] + public void InstanceShouldReturnARunSettingsManagerInstance() + { + var instance = RunSettingsManager.Instance; + + Assert.IsNotNull(instance); + Assert.AreEqual(typeof(RunSettingsManager), instance.GetType()); + } - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void InstanceShouldReturnACachedValue() + { + var instance = RunSettingsManager.Instance; + var instance2 = RunSettingsManager.Instance; + + Assert.AreEqual(instance, instance2); + } - [TestClass] - public class RunSettingsManagerTests + [TestMethod] + public void ActiveRunSettingsShouldBeNonNullByDefault() { - [TestCleanup] - public void TestCleanup() - { - RunSettingsManager.Instance = null; - } - - [TestMethod] - public void InstanceShouldReturnARunSettingsManagerInstance() - { - var instance = RunSettingsManager.Instance; - - Assert.IsNotNull(instance); - Assert.AreEqual(typeof(RunSettingsManager), instance.GetType()); - } - - [TestMethod] - public void InstanceShouldReturnACachedValue() - { - var instance = RunSettingsManager.Instance; - var instance2 = RunSettingsManager.Instance; - - Assert.AreEqual(instance, instance2); - } - - [TestMethod] - public void ActiveRunSettingsShouldBeNonNullByDefault() - { - var instance = RunSettingsManager.Instance; - - Assert.IsNotNull(instance.ActiveRunSettings); - } - - [TestMethod] - public void SetActiveRunSettingsShouldThrowIfRunSettingsPassedIsNull() - { - var instance = RunSettingsManager.Instance; - - Assert.ThrowsException(() => instance.SetActiveRunSettings(null)); - } - - [TestMethod] - public void SetActiveRunSettingsShouldSetTheActiveRunSettingsProperty() - { - var instance = RunSettingsManager.Instance; - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(""); - - instance.SetActiveRunSettings(runSettings); - - Assert.AreEqual(runSettings, instance.ActiveRunSettings); - } + var instance = RunSettingsManager.Instance; + + Assert.IsNotNull(instance.ActiveRunSettings); + } + + [TestMethod] + public void SetActiveRunSettingsShouldThrowIfRunSettingsPassedIsNull() + { + var instance = RunSettingsManager.Instance; + + Assert.ThrowsException(() => instance.SetActiveRunSettings(null!)); + } + + [TestMethod] + public void SetActiveRunSettingsShouldSetTheActiveRunSettingsProperty() + { + var instance = RunSettingsManager.Instance; + + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(""); + + instance.SetActiveRunSettings(runSettings); + + Assert.AreEqual(runSettings, instance.ActiveRunSettings); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsTests.cs index 8688f16b7f..a21b3d16b4 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/RunSettingsTests.cs @@ -1,276 +1,272 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests +using System; +using System.Xml; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests; + +[TestClass] +public class RunSettingsTests { - using System; - using System.Xml; - - using ExtensionFramework; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class RunSettingsTests + [TestCleanup] + public void TestCleanup() { - [TestCleanup] - public void TestCleanup() - { - TestPluginCacheHelper.ResetExtensionsCache(); - TestSessionMessageLogger.Instance = null; - } + TestPluginCacheHelper.ResetExtensionsCache(); + TestSessionMessageLogger.Instance = null; + } - #region LoadSettingsXML Tests + #region LoadSettingsXML Tests - [TestMethod] - public void LoadSettingsXmlShouldThrowOnNullSettings() - { - var runSettings = new RunSettings(); - Assert.ThrowsException(() => runSettings.LoadSettingsXml(null)); - } + [TestMethod] + public void LoadSettingsXmlShouldThrowOnNullSettings() + { + var runSettings = new RunSettings(); + Assert.ThrowsException(() => runSettings.LoadSettingsXml(null!)); + } - [TestMethod] - public void LoadSettingsXmlShouldThrowOnEmptySettings() - { - var runSettings = new RunSettings(); - Assert.ThrowsException(() => runSettings.LoadSettingsXml(" ")); - } + [TestMethod] + public void LoadSettingsXmlShouldThrowOnEmptySettings() + { + var runSettings = new RunSettings(); + Assert.ThrowsException(() => runSettings.LoadSettingsXml(" ")); + } - [TestMethod] - public void LoadSettingsXmlShoulLoadAndInitializeSettingsXml() - { - var runSettings = new RunSettings(); - var emptyRunSettings = this.GetEmptyRunSettings(); + [TestMethod] + public void LoadSettingsXmlShoulLoadAndInitializeSettingsXml() + { + var runSettings = new RunSettings(); + var emptyRunSettings = GetEmptyRunSettings(); - runSettings.LoadSettingsXml(emptyRunSettings); + runSettings.LoadSettingsXml(emptyRunSettings); - // Not doing this because when we load the xml and write to string it converts it to a utf-16 format. - // So they do not exactly match. - // Assert.AreEqual(emptyRunSettings, runSettings.SettingsXml); + // Not doing this because when we load the xml and write to string it converts it to a utf-16 format. + // So they do not exactly match. + // Assert.AreEqual(emptyRunSettings, runSettings.SettingsXml); - var expectedRunSettings = "" + Environment.NewLine - + ""; - StringAssert.Contains(runSettings.SettingsXml, expectedRunSettings); - } + var expectedRunSettings = "" + Environment.NewLine + + ""; + StringAssert.Contains(runSettings.SettingsXml, expectedRunSettings); + } - [TestMethod] - public void LoadSettingsXmlShouldThrowOnInvalidSettings() - { - var runSettings = new RunSettings(); - var invalidSettings = this.GetInvalidRunSettings(); + [TestMethod] + public void LoadSettingsXmlShouldThrowOnInvalidSettings() + { + var runSettings = new RunSettings(); + var invalidSettings = GetInvalidRunSettings(); - Assert.ThrowsException( - () => runSettings.LoadSettingsXml(invalidSettings), - "An error occurred while loading the run settings."); - } + Assert.ThrowsException( + () => runSettings.LoadSettingsXml(invalidSettings), + "An error occurred while loading the run settings."); + } - #endregion + #endregion - #region InitializeSettingsProviders and GetSettings tests + #region InitializeSettingsProviders and GetSettings tests - [TestMethod] - public void InitializeSettingsProvidersShouldThrowOnNullSettings() - { - var runSettings = new RunSettings(); - Assert.ThrowsException(() => runSettings.InitializeSettingsProviders(null)); - } + [TestMethod] + public void InitializeSettingsProvidersShouldThrowOnNullSettings() + { + var runSettings = new RunSettings(); + Assert.ThrowsException(() => runSettings.InitializeSettingsProviders(null!)); + } - [TestMethod] - public void InitializeSettingsProvidersShouldWorkForEmptyRunSettings() - { - var runSettings = new RunSettings(); + [TestMethod] + public void InitializeSettingsProvidersShouldWorkForEmptyRunSettings() + { + var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetEmptyRunSettings()); + runSettings.InitializeSettingsProviders(GetEmptyRunSettings()); - Assert.IsNull(runSettings.GetSettings("RunSettings")); - } + Assert.IsNull(runSettings.GetSettings("RunSettings")); + } - [TestMethod] - public void InitializeSettingsProvidersShouldThrowIfNodeInRunSettingsDoesNotHaveAProvider() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); + [TestMethod] + public void InitializeSettingsProvidersShouldThrowIfNodeInRunSettingsDoesNotHaveAProvider() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); - var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetRunSettingsWithUndefinedSettingsNodes()); + var runSettings = new RunSettings(); + runSettings.InitializeSettingsProviders(GetRunSettingsWithUndefinedSettingsNodes()); - Action action = - () => runSettings.GetSettings("OrphanNode"); + Action action = + () => runSettings.GetSettings("OrphanNode"); - Assert.ThrowsException( - action, - "Settings Provider named '{0}' was not found. The settings can not be loaded.", - "OrphanNode"); - } + Assert.ThrowsException( + action, + "Settings Provider named '{0}' was not found. The settings can not be loaded.", + "OrphanNode"); + } - [TestMethod] - public void InitializeSettingsProvidersShouldThrowIfSettingsProviderLoadThrows() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); + [TestMethod] + public void InitializeSettingsProvidersShouldThrowIfSettingsProviderLoadThrows() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); - var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetRunSettingsWithBadSettingsNodes()); + var runSettings = new RunSettings(); + runSettings.InitializeSettingsProviders(GetRunSettingsWithBadSettingsNodes()); - Action action = - () => runSettings.GetSettings("BadSettings"); + Action action = + () => runSettings.GetSettings("BadSettings"); - Assert.ThrowsException( - action, - "An error occurred while initializing the settings provider named '{0}'", - "BadSettings"); - } + Assert.ThrowsException( + action, + "An error occurred while initializing the settings provider named '{0}'", + "BadSettings"); + } - [TestMethod] - public void InitializeSettingsProvidersShouldThrowIfInvalidRunSettingsIsPassed() - { - var runSettings = new RunSettings(); - Assert.ThrowsException( - () => runSettings.InitializeSettingsProviders(this.GetInvalidRunSettings()), - "An error occurred while loading the run settings."); - } + [TestMethod] + public void InitializeSettingsProvidersShouldThrowIfInvalidRunSettingsIsPassed() + { + var runSettings = new RunSettings(); + Assert.ThrowsException( + () => runSettings.InitializeSettingsProviders(GetInvalidRunSettings()), + "An error occurred while loading the run settings."); + } - [TestMethod] - public void InitializeSettingsProvidersMultipleTimesShouldThrowInvalidOperationException() - { - var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetEmptyRunSettings()); - Assert.ThrowsException( - () => runSettings.InitializeSettingsProviders(this.GetEmptyRunSettings()), - "The Run Settings have already been loaded."); - } + [TestMethod] + public void InitializeSettingsProvidersMultipleTimesShouldThrowInvalidOperationException() + { + var runSettings = new RunSettings(); + runSettings.InitializeSettingsProviders(GetEmptyRunSettings()); + Assert.ThrowsException( + () => runSettings.InitializeSettingsProviders(GetEmptyRunSettings()), + "The Run Settings have already been loaded."); + } - [TestMethod] - public void InitializeSettingsProvidersShouldLoadSettingsIntoASettingsProvider() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); + [TestMethod] + public void InitializeSettingsProvidersShouldLoadSettingsIntoASettingsProvider() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); - var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetRunSettingsWithRunConfigurationNode()); + var runSettings = new RunSettings(); + runSettings.InitializeSettingsProviders(GetRunSettingsWithRunConfigurationNode()); - var settingsProvider = runSettings.GetSettings("RunConfiguration"); + var settingsProvider = runSettings.GetSettings("RunConfiguration"); - Assert.IsNotNull(settingsProvider); - Assert.IsTrue(settingsProvider is RunConfigurationSettingsProvider); + Assert.IsNotNull(settingsProvider); + Assert.IsTrue(settingsProvider is RunConfigurationSettingsProvider); - // Also validate that the settings provider gets the right subtree. - Assert.AreEqual( - "x86", - (settingsProvider as RunConfigurationSettingsProvider).SettingsTree); - } + // Also validate that the settings provider gets the right subtree. + Assert.AreEqual( + "x86", + ((RunConfigurationSettingsProvider)settingsProvider).SettingsTree); + } - [TestMethod] - public void InitializeSettingsProvidersShouldLoadSettingsIntoMultipleSettingsProviders() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); + [TestMethod] + public void InitializeSettingsProvidersShouldLoadSettingsIntoMultipleSettingsProviders() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); - var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetRunSettingsWithRunConfigurationAndMSTestNode()); + var runSettings = new RunSettings(); + runSettings.InitializeSettingsProviders(GetRunSettingsWithRunConfigurationAndMsTestNode()); - var rcSettingsProvider = runSettings.GetSettings("RunConfiguration"); - var mstestSettingsProvider = runSettings.GetSettings("MSTest"); + var rcSettingsProvider = runSettings.GetSettings("RunConfiguration"); + var mstestSettingsProvider = runSettings.GetSettings("MSTest"); - Assert.IsNotNull(rcSettingsProvider); - Assert.IsTrue(rcSettingsProvider is RunConfigurationSettingsProvider); - Assert.AreEqual( - "x86", - (rcSettingsProvider as RunConfigurationSettingsProvider).SettingsTree); + Assert.IsNotNull(rcSettingsProvider); + Assert.IsTrue(rcSettingsProvider is RunConfigurationSettingsProvider); + Assert.AreEqual( + "x86", + ((RunConfigurationSettingsProvider)rcSettingsProvider).SettingsTree); - Assert.IsNotNull(mstestSettingsProvider); - Assert.IsTrue(mstestSettingsProvider is MSTestSettingsProvider); - Assert.AreEqual( - "true", - (mstestSettingsProvider as MSTestSettingsProvider).SettingsTree); - } + Assert.IsNotNull(mstestSettingsProvider); + Assert.IsTrue(mstestSettingsProvider is MsTestSettingsProvider); + Assert.AreEqual( + "true", + ((MsTestSettingsProvider)mstestSettingsProvider).SettingsTree); + } - [TestMethod] - public void InitializeSettingsProvidersShouldWarnOfDuplicateSettings() - { - string receivedWarningMessage = null; + [TestMethod] + public void InitializeSettingsProvidersShouldWarnOfDuplicateSettings() + { + string? receivedWarningMessage = null; - TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); - TestSessionMessageLogger.Instance.TestRunMessage += (object sender, TestRunMessageEventArgs e) => - { - receivedWarningMessage = e.Message; - }; + TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsTests)); + TestSessionMessageLogger.Instance.TestRunMessage += (object? sender, TestRunMessageEventArgs e) => receivedWarningMessage = e.Message; - var runSettings = new RunSettings(); - runSettings.InitializeSettingsProviders(this.GetRunSettingsWithDuplicateSettingsNodes()); + var runSettings = new RunSettings(); + runSettings.InitializeSettingsProviders(GetRunSettingsWithDuplicateSettingsNodes()); - Assert.IsNotNull(receivedWarningMessage); - Assert.AreEqual( - "Duplicate run settings section named 'RunConfiguration' found. Ignoring the duplicate settings.", - receivedWarningMessage); - } + Assert.IsNotNull(receivedWarningMessage); + Assert.AreEqual( + "Duplicate run settings section named 'RunConfiguration' found. Ignoring the duplicate settings.", + receivedWarningMessage); + } - #endregion + #endregion - #region GetSettings tests + #region GetSettings tests - [TestMethod] - public void GetSettingsShouldThrowIfSettingsNameIsNull() - { - var runSettings = new RunSettings(); + [TestMethod] + public void GetSettingsShouldThrowIfSettingsNameIsNull() + { + var runSettings = new RunSettings(); - Assert.ThrowsException(() => runSettings.GetSettings(null)); - } + Assert.ThrowsException(() => runSettings.GetSettings(null!)); + } - [TestMethod] - public void GetSettingsShouldThrowIfSettingsNameIsEmpty() - { - var runSettings = new RunSettings(); + [TestMethod] + public void GetSettingsShouldThrowIfSettingsNameIsEmpty() + { + var runSettings = new RunSettings(); - Assert.ThrowsException(() => runSettings.GetSettings(" ")); - } + Assert.ThrowsException(() => runSettings.GetSettings(" ")); + } - // The remaining GetSettings tests are covered in the InitializeSettingsProviders tests above. - #endregion + // The remaining GetSettings tests are covered in the InitializeSettingsProviders tests above. + #endregion - #region Private methods + #region Private methods - private string GetEmptyRunSettings() - { - return @" + private static string GetEmptyRunSettings() + { + return @" "; - } + } - private string GetRunSettingsWithUndefinedSettingsNodes() - { - return @" + private static string GetRunSettingsWithUndefinedSettingsNodes() + { + return @" "; - } + } - private string GetRunSettingsWithBadSettingsNodes() - { - return @" + private static string GetRunSettingsWithBadSettingsNodes() + { + return @" "; - } + } - private string GetRunSettingsWithRunConfigurationNode() - { - return @" + private static string GetRunSettingsWithRunConfigurationNode() + { + return @" x86 "; - } + } - private string GetRunSettingsWithRunConfigurationAndMSTestNode() - { - return @" + private static string GetRunSettingsWithRunConfigurationAndMsTestNode() + { + return @" x86 @@ -279,63 +275,62 @@ private string GetRunSettingsWithRunConfigurationAndMSTestNode() true "; - } + } - private string GetRunSettingsWithDuplicateSettingsNodes() - { - return @" + private static string GetRunSettingsWithDuplicateSettingsNodes() + { + return @" "; - } + } - private string GetInvalidRunSettings() - { - return @" + private static string GetInvalidRunSettings() + { + return @" "; - } + } - #endregion + #endregion - #region Testable Implementations + #region Testable Implementations - [SettingsName("RunConfiguration")] - private class RunConfigurationSettingsProvider : ISettingsProvider - { - public string SettingsTree { get; set; } + [SettingsName("RunConfiguration")] + private class RunConfigurationSettingsProvider : ISettingsProvider + { + public string? SettingsTree { get; set; } - public void Load(XmlReader reader) - { - reader.Read(); - this.SettingsTree = reader.ReadOuterXml(); - } + public void Load(XmlReader reader) + { + reader.Read(); + SettingsTree = reader.ReadOuterXml(); } + } - [SettingsName("MSTest")] - private class MSTestSettingsProvider : ISettingsProvider - { - public string SettingsTree { get; set; } + [SettingsName("MSTest")] + private class MsTestSettingsProvider : ISettingsProvider + { + public string? SettingsTree { get; set; } - public void Load(XmlReader reader) - { - reader.Read(); - this.SettingsTree = reader.ReadOuterXml(); - } + public void Load(XmlReader reader) + { + reader.Read(); + SettingsTree = reader.ReadOuterXml(); } + } - [SettingsName("BadSettings")] - private class BadSettingsProvider : ISettingsProvider + [SettingsName("BadSettings")] + private class BadSettingsProvider : ISettingsProvider + { + public void Load(XmlReader reader) { - public void Load(XmlReader reader) - { - throw new Exception(); - } + throw new Exception(); } - - #endregion } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/SettingsProvider/SettingsProviderExtensionManagerTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/SettingsProvider/SettingsProviderExtensionManagerTests.cs index 8269bd5cc1..bfb5225bc8 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/SettingsProvider/SettingsProviderExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/SettingsProvider/SettingsProviderExtensionManagerTests.cs @@ -1,240 +1,233 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.SettingsProvider +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.Common.UnitTests.SettingsProvider; + +[TestClass] +public class SettingsProviderExtensionManagerTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Xml; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using TestPlatform.Common.UnitTests.ExtensionFramework; - - [TestClass] - public class SettingsProviderExtensionManagerTests + [TestCleanup] + public void TestCleanup() { - [TestCleanup] - public void TestCleanup() - { - SettingsProviderExtensionManager.Destroy(); - } + SettingsProviderExtensionManager.Destroy(); + } - #region Constructor tests + #region Constructor tests - [TestMethod] - public void ConstructorShouldPopulateSettingsProviderMap() + [TestMethod] + public void ConstructorShouldPopulateSettingsProviderMap() + { + var extensions = GetMockExtensions("TestableSettings"); + var unfilteredExtensions = new List>> { - var extensions = this.GetMockExtensions("TestableSettings"); - var unfilteredExtensions = new List>> - { - new LazyExtension> - ( - new Mock().Object, - new Dictionary()) - }; - var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); - - Assert.IsNotNull(spm.SettingsProvidersMap); - Assert.AreEqual("TestableSettings", spm.SettingsProvidersMap.Keys.FirstOrDefault()); - } + new ( + new Mock().Object, + new Dictionary()) + }; + var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); + + Assert.IsNotNull(spm.SettingsProvidersMap); + Assert.AreEqual("TestableSettings", spm.SettingsProvidersMap.Keys.FirstOrDefault()); + } - [TestMethod] - public void ConstructorShouldLogWarningOnDuplicateSettingsProviderNames() + [TestMethod] + public void ConstructorShouldLogWarningOnDuplicateSettingsProviderNames() + { + var extensions = GetMockExtensions("TestableSettings", "TestableSettings"); + var unfilteredExtensions = new List>> { - var extensions = this.GetMockExtensions("TestableSettings", "TestableSettings"); - var unfilteredExtensions = new List>> - { - new LazyExtension> - ( - new Mock().Object, - new Dictionary()) - }; - var mockLogger = new Mock(); - var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, mockLogger.Object); - - mockLogger.Verify( - l => + new ( + new Mock().Object, + new Dictionary()) + }; + var mockLogger = new Mock(); + var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, mockLogger.Object); + + mockLogger.Verify( + l => l.SendMessage( TestMessageLevel.Error, "Duplicate settings provider named 'TestableSettings'. Ignoring the duplicate provider.")); - // Also validate the below. - Assert.IsNotNull(spm.SettingsProvidersMap); - Assert.AreEqual("TestableSettings", spm.SettingsProvidersMap.Keys.FirstOrDefault()); - } + // Also validate the below. + Assert.IsNotNull(spm.SettingsProvidersMap); + Assert.AreEqual("TestableSettings", spm.SettingsProvidersMap.Keys.FirstOrDefault()); + } - #endregion + #endregion - #region Create tests + #region Create tests - [TestMethod] - public void CreateShouldDiscoverSettingsProviderExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(SettingsProviderExtensionManagerTests)); + [TestMethod] + public void CreateShouldDiscoverSettingsProviderExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(SettingsProviderExtensionManagerTests)); - var extensionManager = SettingsProviderExtensionManager.Create(); + var extensionManager = SettingsProviderExtensionManager.Create(); - Assert.IsNotNull(extensionManager.SettingsProvidersMap); - Assert.IsTrue(extensionManager.SettingsProvidersMap.Count > 0); - } + Assert.IsNotNull(extensionManager.SettingsProvidersMap); + Assert.IsTrue(extensionManager.SettingsProvidersMap.Count > 0); + } - [TestMethod] - public void CreateShouldCacheDiscoveredExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(SettingsProviderExtensionManagerTests), () => { }); + [TestMethod] + public void CreateShouldCacheDiscoveredExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(SettingsProviderExtensionManagerTests), () => { }); - var extensionManager = SettingsProviderExtensionManager.Create(); - SettingsProviderExtensionManager.Create(); + var extensionManager = SettingsProviderExtensionManager.Create(); + SettingsProviderExtensionManager.Create(); - Assert.IsNotNull(extensionManager.SettingsProvidersMap); - Assert.IsTrue(extensionManager.SettingsProvidersMap.Count > 0); - } + Assert.IsNotNull(extensionManager.SettingsProvidersMap); + Assert.IsTrue(extensionManager.SettingsProvidersMap.Count > 0); + } - #endregion + #endregion - #region LoadAndInitialize tests + #region LoadAndInitialize tests - [TestMethod] - public void LoadAndInitializeShouldInitializeAllExtensions() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(SettingsProviderExtensionManagerTests)); + [TestMethod] + public void LoadAndInitializeShouldInitializeAllExtensions() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(SettingsProviderExtensionManagerTests)); - SettingsProviderExtensionManager.LoadAndInitializeAllExtensions(false); + SettingsProviderExtensionManager.LoadAndInitializeAllExtensions(false); - var settingsProviders = SettingsProviderExtensionManager.Create().SettingsProvidersMap.Values; + var settingsProviders = SettingsProviderExtensionManager.Create().SettingsProvidersMap.Values; - foreach (var provider in settingsProviders) - { - Assert.IsTrue(provider.IsExtensionCreated); - } + foreach (var provider in settingsProviders) + { + Assert.IsTrue(provider.IsExtensionCreated); } + } - #endregion + #endregion - #region GetSettingsProvider tests + #region GetSettingsProvider tests - [TestMethod] - public void GetSettingsProviderShouldThrowIfSettingsNameIsNullOrEmpty() + [TestMethod] + public void GetSettingsProviderShouldThrowIfSettingsNameIsNullOrEmpty() + { + var extensions = GetMockExtensions("TestableSettings"); + var unfilteredExtensions = new List>> { - var extensions = this.GetMockExtensions("TestableSettings"); - var unfilteredExtensions = new List>> - { - new LazyExtension> - ( - new Mock().Object, - new Dictionary()) - }; - var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); - - Assert.ThrowsException(() => spm.GetSettingsProvider(null)); - Assert.ThrowsException(() => spm.GetSettingsProvider(string.Empty)); - } + new ( + new Mock().Object, + new Dictionary()) + }; + var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); + + Assert.ThrowsException(() => spm.GetSettingsProvider(null!)); + Assert.ThrowsException(() => spm.GetSettingsProvider(string.Empty)); + } - [TestMethod] - public void GetSettingsProviderShouldReturnNullIfSettingsProviderWithSpecifiedNameIsNotFound() + [TestMethod] + public void GetSettingsProviderShouldReturnNullIfSettingsProviderWithSpecifiedNameIsNotFound() + { + var extensions = GetMockExtensions("TestableSettings"); + var unfilteredExtensions = new List>> { - var extensions = this.GetMockExtensions("TestableSettings"); - var unfilteredExtensions = new List>> - { - new LazyExtension> - ( - new Mock().Object, - new Dictionary()) - }; - var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); - - var sp = spm.GetSettingsProvider("RandomSettingsWhichDoesNotExist"); - - Assert.IsNull(sp); - } + new ( + new Mock().Object, + new Dictionary()) + }; + var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); + + var sp = spm.GetSettingsProvider("RandomSettingsWhichDoesNotExist"); - [TestMethod] - public void GetSettingsProviderShouldReturnSettingsProviderInstance() + Assert.IsNull(sp); + } + + [TestMethod] + public void GetSettingsProviderShouldReturnSettingsProviderInstance() + { + var extensions = GetMockExtensions("TestableSettings"); + var unfilteredExtensions = new List>> { - var extensions = this.GetMockExtensions("TestableSettings"); - var unfilteredExtensions = new List>> - { - new LazyExtension> - ( - new Mock().Object, - new Dictionary()) - }; - var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); - - var sp = spm.GetSettingsProvider("TestableSettings"); - - Assert.IsNotNull(sp); - Assert.IsNotNull(sp.Value); - } + new ( + new Mock().Object, + new Dictionary()) + }; + var spm = new TestableSettingsProviderManager(extensions, unfilteredExtensions, new Mock().Object); - #endregion + var sp = spm.GetSettingsProvider("TestableSettings"); - #region private methods + Assert.IsNotNull(sp); + Assert.IsNotNull(sp.Value); + } - private IEnumerable> GetMockExtensions(params string[] settingNames) - { - var settingsList = new List>(); + #endregion - foreach (var settingName in settingNames) - { - var mockSettingsProvider = new Mock(); - var metadata = new TestSettingsProviderMetadata(settingName); + #region private methods - var extension = - new LazyExtension( - mockSettingsProvider.Object, - metadata); + private static IEnumerable> GetMockExtensions(params string[] settingNames) + { + var settingsList = new List>(); + + foreach (var settingName in settingNames) + { + var mockSettingsProvider = new Mock(); + var metadata = new TestSettingsProviderMetadata(settingName); - settingsList.Add(extension); - } + var extension = + new LazyExtension( + mockSettingsProvider.Object, + metadata); - return settingsList; + settingsList.Add(extension); } - #endregion + return settingsList; + } - #region Testable Implementations + #endregion - private class TestableSettingsProviderManager : SettingsProviderExtensionManager - { - public TestableSettingsProviderManager( - IEnumerable> settingsProviders, - IEnumerable>> unfilteredSettingsProviders, - IMessageLogger logger) - : base(settingsProviders, unfilteredSettingsProviders, logger) - { - } - } + #region Testable Implementations - [SettingsName("Random")] - private class RandomSettingsProvider : ISettingsProvider + private class TestableSettingsProviderManager : SettingsProviderExtensionManager + { + public TestableSettingsProviderManager( + IEnumerable> settingsProviders, + IEnumerable>> unfilteredSettingsProviders, + IMessageLogger logger) + : base(settingsProviders, unfilteredSettingsProviders, logger) { - public void Load(XmlReader reader) - { - } } - - #endregion } - [TestClass] - public class TestSettingsProviderMetadataTests + [SettingsName("Random")] + private class RandomSettingsProvider : ISettingsProvider { - [TestMethod] - public void ConstructorShouldSetSettingsName() + public void Load(XmlReader reader) { - var metadata = new TestSettingsProviderMetadata("sample"); - Assert.AreEqual("sample", metadata.SettingsName); } } + + #endregion +} + +[TestClass] +public class TestSettingsProviderMetadataTests +{ + [TestMethod] + public void ConstructorShouldSetSettingsName() + { + var metadata = new TestSettingsProviderMetadata("sample"); + Assert.AreEqual("sample", metadata.SettingsName); + } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Telemetry/MetricsCollectionTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Telemetry/MetricsCollectionTests.cs index b66c2b355d..2f0e02dfed 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Telemetry/MetricsCollectionTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Telemetry/MetricsCollectionTests.cs @@ -1,60 +1,60 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Telemetry +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Common.UnitTests.Telemetry; + +[TestClass] +public class MetricsCollectionTests { - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly IMetricsCollection _metricsCollection; + + public MetricsCollectionTests() + { + _metricsCollection = new MetricsCollection(); + } + + [TestMethod] + public void AddShouldAddMetric() + { + _metricsCollection.Add("DummyMessage", "DummyValue"); + + Assert.IsTrue(_metricsCollection.Metrics.TryGetValue("DummyMessage", out var value)); + Assert.AreEqual("DummyValue", value); + } + + [TestMethod] + public void AddShouldUpdateMetricIfSameKeyIsPresentAlready() + { + _metricsCollection.Add("DummyMessage", "DummyValue"); + + Assert.IsTrue(_metricsCollection.Metrics.TryGetValue("DummyMessage", out var value)); + Assert.AreEqual("DummyValue", value); + + _metricsCollection.Add("DummyMessage", "newValue"); + + Assert.IsTrue(_metricsCollection.Metrics.TryGetValue("DummyMessage", out var newValue)); + Assert.AreEqual("newValue", newValue); + } + + [TestMethod] + public void MetricsShouldReturnValidMetricsIfValidItemsAreThere() + { + _metricsCollection.Add("DummyMessage", "DummyValue"); + _metricsCollection.Add("DummyMessage2", "DummyValue"); + + Assert.AreEqual(2, _metricsCollection.Metrics.Count); + Assert.IsTrue(_metricsCollection.Metrics.ContainsKey("DummyMessage")); + Assert.IsTrue(_metricsCollection.Metrics.ContainsKey("DummyMessage2")); + } - [TestClass] - public class MetricsCollectionTests + [TestMethod] + public void MetricsShouldReturnEmptyDictionaryIfMetricsIsEmpty() { - private IMetricsCollection metricsCollection; - - public MetricsCollectionTests() - { - this.metricsCollection = new MetricsCollection(); - } - - [TestMethod] - public void AddShouldAddMetric() - { - this.metricsCollection.Add("DummyMessage", "DummyValue"); - - Assert.IsTrue(this.metricsCollection.Metrics.TryGetValue("DummyMessage", out var value)); - Assert.AreEqual("DummyValue", value); - } - - [TestMethod] - public void AddShouldUpdateMetricIfSameKeyIsPresentAlready() - { - this.metricsCollection.Add("DummyMessage", "DummyValue"); - - Assert.IsTrue(this.metricsCollection.Metrics.TryGetValue("DummyMessage", out var value)); - Assert.AreEqual("DummyValue", value); - - this.metricsCollection.Add("DummyMessage", "newValue"); - - Assert.IsTrue(this.metricsCollection.Metrics.TryGetValue("DummyMessage", out var newValue)); - Assert.AreEqual("newValue", newValue); - } - - [TestMethod] - public void MetricsShouldReturnValidMetricsIfValidItemsAreThere() - { - this.metricsCollection.Add("DummyMessage", "DummyValue"); - this.metricsCollection.Add("DummyMessage2", "DummyValue"); - - Assert.AreEqual(2, this.metricsCollection.Metrics.Count); - Assert.IsTrue(this.metricsCollection.Metrics.ContainsKey("DummyMessage")); - Assert.IsTrue(this.metricsCollection.Metrics.ContainsKey("DummyMessage2")); - } - - [TestMethod] - public void MetricsShouldReturnEmptyDictionaryIfMetricsIsEmpty() - { - Assert.AreEqual(0, this.metricsCollection.Metrics.Count); - } + Assert.AreEqual(0, _metricsCollection.Metrics.Count); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/ExceptionUtilitiesTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/ExceptionUtilitiesTests.cs index bc4164e94b..13864a9ab4 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/ExceptionUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/ExceptionUtilitiesTests.cs @@ -1,63 +1,62 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.Utilities +using System; + +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.Utilities; + +[TestClass] +public class ExceptionUtilitiesTests { - using System; + [TestMethod] + public void GetExceptionMessageShouldReturnEmptyIfExceptionIsNull() + { + Assert.AreEqual(string.Empty, ExceptionUtilities.GetExceptionMessage(null)); + } - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void GetExceptionMessageShouldReturnExceptionMessage() + { + var exception = new ArgumentException("Some bad stuff"); + Assert.AreEqual(exception.Message, ExceptionUtilities.GetExceptionMessage(exception)); + } - [TestClass] - public class ExceptionUtilitiesTests + [TestMethod] + public void GetExceptionMessageShouldReturnExceptionMessageContainingAllExceptionMessages() { - [TestMethod] - public void GetExceptionMessageShouldReturnEmptyIfExceptionIsNull() - { - Assert.AreEqual(string.Empty, ExceptionUtilities.GetExceptionMessage(null)); - } + var innerException = new Exception("Bad stuff internally"); + var innerException2 = new Exception("Bad stuff internally 2", innerException); + var exception = new ArgumentException("Some bad stuff", innerException2); - [TestMethod] - public void GetExceptionMessageShouldReturnExceptionMessage() - { - var exception = new ArgumentException("Some bad stuff"); - Assert.AreEqual(exception.Message, ExceptionUtilities.GetExceptionMessage(exception)); - } + var message = ExceptionUtilities.GetExceptionMessage(exception); + StringAssert.Contains(message, exception.Message); + StringAssert.Contains(message, innerException.Message); + StringAssert.Contains(message, innerException.Message); + } + + [TestMethod] + public void GetExceptionMessageShouldReturnExceptionMessageContainingStackTrace() + { + var message = ExceptionUtilities.GetExceptionMessage(GetExceptionWithStackTrace()); + StringAssert.Contains(message, "Stack trace:"); + // this test is where it or + StringAssert.Contains(message, "ExceptionUtilitiesTests.GetExceptionWithStackTrace"); + } - [TestMethod] - public void GetExceptionMessageShouldReturnExceptionMessageContainingAllExceptionMessages() + private static Exception GetExceptionWithStackTrace() + { + try { var innerException = new Exception("Bad stuff internally"); var innerException2 = new Exception("Bad stuff internally 2", innerException); - var exception = new ArgumentException("Some bad stuff", innerException2); - - var message = ExceptionUtilities.GetExceptionMessage(exception); - StringAssert.Contains(message, exception.Message); - StringAssert.Contains(message, innerException.Message); - StringAssert.Contains(message, innerException.Message); + throw new ArgumentException("Some bad stuff", innerException2); } - - [TestMethod] - public void GetExceptionMessageShouldReturnExceptionMessageContainingStackTrace() - { - var message = ExceptionUtilities.GetExceptionMessage(GetExceptionWithStackTrace()); - StringAssert.Contains(message, "Stack trace:"); - // this test is where it or - StringAssert.Contains(message, "ExceptionUtilitiesTests.GetExceptionWithStackTrace"); - } - - private Exception GetExceptionWithStackTrace() + catch (Exception e) { - try - { - var innerException = new Exception("Bad stuff internally"); - var innerException2 = new Exception("Bad stuff internally 2", innerException); - throw new ArgumentException("Some bad stuff", innerException2); - } - catch (Exception e) - { - return e; - } + return e; } } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/FakesUtilitiesTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/FakesUtilitiesTests.cs index 4f86da5191..a26dbdcdc1 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/FakesUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/FakesUtilitiesTests.cs @@ -1,124 +1,124 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.Utilities +using System; +using System.IO; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.Utilities; + +[TestClass] +public class FakesUtilitiesTests { - using System; - using System.IO; - using System.Xml; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void FakesSettingsShouldThrowExceptionIfSourcesArePassedAsNull() + { + string runSettingsXml = @".netstandard,Version=5.0"; + Assert.ThrowsException(() => FakesUtilities.GenerateFakesSettingsForRunConfiguration(null!, runSettingsXml)); + } - [TestClass] - public class FakesUtilitiesTests + [TestMethod] + public void FakesSettingsShouldThrowExceptionIfRunSettingsIsPassedAsNull() { - [TestMethod] - public void FakesSettingsShouldThrowExceptionIfSourcesArePassedAsNull() - { - string runSettingsXml = @".netstandard,Version=5.0"; - Assert.ThrowsException(() => FakesUtilities.GenerateFakesSettingsForRunConfiguration(null, runSettingsXml)); - } + Assert.ThrowsException(() => FakesUtilities.GenerateFakesSettingsForRunConfiguration([], null!)); + } - [TestMethod] - public void FakesSettingsShouldThrowExceptionIfRunSettingsIsPassedAsNull() - { - Assert.ThrowsException(() => FakesUtilities.GenerateFakesSettingsForRunConfiguration(new string[] { }, null)); - } + [TestMethod] + public void FakesSettingsShouldBeNotGeneratedIfFakeConfiguratorAssemblyIsNotPresent() + { + string runSettingsXml = @""; + var generatedRunSettings = FakesUtilities.GenerateFakesSettingsForRunConfiguration([@"C:\temp\UT.dll"], runSettingsXml); + Assert.AreEqual(generatedRunSettings, runSettingsXml); + } - [TestMethod] - public void FakesSettingsShouldBeNotGeneratedIfFakeConfiguratorAssemblyIsNotPresent() + [TestMethod] + public void FakesDataCollectorSettingsShouldBeOverridden() + { + string runSettingsXml = @""; + var doc = new XmlDocument(); + using (var xmlReader = XmlReader.Create( + new StringReader(runSettingsXml), + new XmlReaderSettings() { CloseInput = true })) { - string runSettingsXml = @""; - var generatedRunSettings = FakesUtilities.GenerateFakesSettingsForRunConfiguration(new string[] {@"C:\temp\UT.dll" }, runSettingsXml); - Assert.AreEqual(generatedRunSettings, runSettingsXml); + doc.Load(xmlReader); } - [TestMethod] - public void FakesDataCollectorSettingsShouldBeOverridden() + var dataCollectorNode = new DataCollectorSettings() { - string runSettingsXml = @""; - var doc = new XmlDocument(); - using (var xmlReader = XmlReader.Create( - new StringReader(runSettingsXml), - new XmlReaderSettings() { CloseInput = true })) - { - doc.Load(xmlReader); - } + AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, + Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV1), + FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, + IsEnabled = true, + Configuration = doc.FirstChild as XmlElement + }; + XmlRunSettingsUtilities.InsertDataCollectorsNode(doc.CreateNavigator()!, dataCollectorNode); - var dataCollectorNode = new DataCollectorSettings() - { - AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, - Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV1), - FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, - IsEnabled = true, - Configuration = doc.FirstChild as XmlElement - }; - XmlRunSettingsUtilities.InsertDataCollectorsNode(doc.CreateNavigator(), dataCollectorNode); + var dataCollectorNode2 = new DataCollectorSettings() + { + AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, + Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV2), + FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, + IsEnabled = true, + Configuration = doc.FirstChild as XmlElement + }; + FakesUtilities.InsertOrReplaceFakesDataCollectorNode(doc, dataCollectorNode2); - var dataCollectorNode2 = new DataCollectorSettings() - { - AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, - Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV2), - FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, - IsEnabled = true, - Configuration = doc.FirstChild as XmlElement - }; - FakesUtilities.InsertOrReplaceFakesDataCollectorNode(doc, dataCollectorNode2); + Assert.IsFalse(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV1)); + Assert.IsTrue(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV2)); + } - Assert.IsFalse(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV1)); - Assert.IsTrue(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV2)); + [TestMethod] + public void FakesDataCollectorSettingsShouldBeInserted() + { + string runSettingsXml = @""; + var doc = new XmlDocument(); + using (var xmlReader = XmlReader.Create( + new StringReader(runSettingsXml), + new XmlReaderSettings() { CloseInput = true })) + { + doc.Load(xmlReader); } - [TestMethod] - public void FakesDataCollectorSettingsShouldBeInserted() + var dataCollectorNode2 = new DataCollectorSettings() { - string runSettingsXml = @""; - var doc = new XmlDocument(); - using (var xmlReader = XmlReader.Create( - new StringReader(runSettingsXml), - new XmlReaderSettings() { CloseInput = true })) - { - doc.Load(xmlReader); - } + AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, + Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV2), + FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, + IsEnabled = true, + Configuration = doc.FirstChild as XmlElement + }; + FakesUtilities.InsertOrReplaceFakesDataCollectorNode(doc, dataCollectorNode2); + Assert.IsTrue(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV2)); + } - var dataCollectorNode2 = new DataCollectorSettings() - { - AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, - Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV2), - FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, - IsEnabled = true, - Configuration = doc.FirstChild as XmlElement - }; - FakesUtilities.InsertOrReplaceFakesDataCollectorNode(doc, dataCollectorNode2); - Assert.IsTrue(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV2)); + [TestMethod] + public void OtherRunsettingsShouldNotBeChanged() + { + string runSettingsXml = @"FrameworkCore10"; + var doc = new XmlDocument(); + using (var xmlReader = XmlReader.Create( + new StringReader(runSettingsXml), + new XmlReaderSettings() { CloseInput = true })) + { + doc.Load(xmlReader); } - [TestMethod] - public void OtherRunsettingsShouldNotBeChanged() + var dataCollectorNode2 = new DataCollectorSettings() { - string runSettingsXml = @"FrameworkCore10"; - var doc = new XmlDocument(); - using (var xmlReader = XmlReader.Create( - new StringReader(runSettingsXml), - new XmlReaderSettings() { CloseInput = true })) - { - doc.Load(xmlReader); - } - - var dataCollectorNode2 = new DataCollectorSettings() - { - AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, - Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV2), - FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, - IsEnabled = true, - Configuration = doc.CreateElement("Configuration") - }; - FakesUtilities.InsertOrReplaceFakesDataCollectorNode(doc, dataCollectorNode2); - Assert.IsTrue(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV2)); - XmlNodeList nodes = doc.SelectNodes("//RunSettings/RunConfiguration/TargetFrameworkVersion"); - Assert.AreEqual("FrameworkCore10", nodes[0].InnerText); - } + AssemblyQualifiedName = FakesUtilities.FakesMetadata.DataCollectorAssemblyQualifiedName, + Uri = new Uri(FakesUtilities.FakesMetadata.DataCollectorUriV2), + FriendlyName = FakesUtilities.FakesMetadata.FriendlyName, + IsEnabled = true, + Configuration = doc.CreateElement("Configuration") + }; + FakesUtilities.InsertOrReplaceFakesDataCollectorNode(doc, dataCollectorNode2); + Assert.IsTrue(XmlRunSettingsUtilities.ContainsDataCollector(doc, FakesUtilities.FakesMetadata.DataCollectorUriV2)); + XmlNodeList nodes = doc.SelectNodes("//RunSettings/RunConfiguration/TargetFrameworkVersion")!; + Assert.AreEqual("FrameworkCore10", nodes[0]!.InnerText); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/InstallationContextTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/InstallationContextTests.cs index b952f86484..feff45ec63 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/InstallationContextTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/InstallationContextTests.cs @@ -1,69 +1,70 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Common.UnitTests.Utilities +using System.IO; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Common.UnitTests.Utilities; + +[TestClass] +public class InstallationContextTests { - using System.IO; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System.Linq; - - [TestClass] - public class InstallationContextTests - { - private Mock mockFileHelper; - private InstallationContext installationContext; + private readonly Mock _mockFileHelper; + private readonly InstallationContext _installationContext; - public InstallationContextTests() - { - this.mockFileHelper = new Mock(); - this.installationContext = new InstallationContext(this.mockFileHelper.Object); - } + public InstallationContextTests() + { + _mockFileHelper = new Mock(); + _installationContext = new InstallationContext(_mockFileHelper.Object); + } - [TestMethod] - public void TryGetVisualStudioDirectoryShouldReturnTrueIfVSIsFound() - { - this.mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(true); + [TestMethod] + public void TryGetVisualStudioDirectoryShouldReturnTrueIfVsIsFound() + { + _mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(true); - Assert.IsTrue(this.installationContext.TryGetVisualStudioDirectory(out string visualStudioDirectory), "VS Install Directory returned false"); + Assert.IsTrue(_installationContext.TryGetVisualStudioDirectory(out string visualStudioDirectory), "VS Install Directory returned false"); - Assert.IsTrue(Directory.Exists(visualStudioDirectory), "VS Install Directory doesn't exist"); - } + Assert.IsTrue(Directory.Exists(visualStudioDirectory), "VS Install Directory doesn't exist"); + } - [TestMethod] - public void TryGetVisualStudioDirectoryShouldReturnFalseIfVSIsNotFound() - { - this.mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(false); + [TestMethod] + public void TryGetVisualStudioDirectoryShouldReturnFalseIfVsIsNotFound() + { + _mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(false); - Assert.IsFalse(this.installationContext.TryGetVisualStudioDirectory(out string visualStudioDirectory), "VS Install Directory returned true"); + Assert.IsFalse(_installationContext.TryGetVisualStudioDirectory(out string visualStudioDirectory), "VS Install Directory returned true"); - Assert.IsTrue(string.IsNullOrEmpty(visualStudioDirectory), "VS Install Directory is not empty"); - } + Assert.IsTrue(string.IsNullOrEmpty(visualStudioDirectory), "VS Install Directory is not empty"); + } - [TestMethod] - public void GetVisualStudioPathShouldReturnPathToDevenvExecutable() - { - var devenvPath = this.installationContext.GetVisualStudioPath(@"C:\temp"); + [TestMethod] + public void GetVisualStudioPathShouldReturnPathToDevenvExecutable() + { + var devenvPath = _installationContext.GetVisualStudioPath(@"C:\temp"); - Assert.AreEqual(@"C:\temp\devenv.exe", devenvPath.Replace("/", "\\")); - } + Assert.AreEqual(@"C:\temp\devenv.exe", devenvPath.Replace("/", "\\")); + } - [TestMethod] - public void GetVisualStudioCommonLocationShouldReturnWellKnownLocations() + [TestMethod] + public void GetVisualStudioCommonLocationShouldReturnWellKnownLocations() + { + var expectedLocations = new[] { - var expectedLocations = new[] - { - @"C:\temp\PrivateAssemblies", - @"C:\temp\PublicAssemblies", - @"C:\temp\CommonExtensions\Microsoft\TestWindow", - @"C:\temp\CommonExtensions\Microsoft\TeamFoundation\Team Explorer", - @"C:\temp" - }; - var commonLocations = this.installationContext.GetVisualStudioCommonLocations(@"C:\temp").Select(p => p.Replace("/", "\\")).ToArray(); - - CollectionAssert.AreEquivalent(expectedLocations, commonLocations); - } + @"C:\temp\PrivateAssemblies", + @"C:\temp\PublicAssemblies", + @"C:\temp\CommonExtensions\Microsoft\TestWindow", + @"C:\temp\CommonExtensions\Microsoft\TeamFoundation\Team Explorer", + @"C:\temp" + }; + var commonLocations = _installationContext.GetVisualStudioCommonLocations(@"C:\temp").Select(p => p.Replace("/", "\\")).ToArray(); + + CollectionAssert.AreEquivalent(expectedLocations, commonLocations); } } diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/RunSettingsUtilitiesTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/RunSettingsUtilitiesTests.cs index 8b4a40cf10..f0b1133c56 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/RunSettingsUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/Utilities/RunSettingsUtilitiesTests.cs @@ -1,124 +1,118 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.Common.UnitTests.Utilities +using System.Xml; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.Common.UnitTests.Utilities; + +[TestClass] +public class RunSettingsUtilitiesTests { - using System; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using System.Xml; - using ExtensionFramework; - using System.Collections.Generic; - using Microsoft.TestPlatform.TestUtilities; - - [TestClass] - public class RunSettingsUtilitiesTests + [TestMethod] + public void CreateRunSettingsShouldReturnNullIfSettingsXmlIsNullorEmpty() + { + Assert.IsNull(RunSettingsUtilities.CreateAndInitializeRunSettings(null)); + } + + [TestMethod] + public void CreateRunSettingsShouldThrowExceptionWhenInvalidXmlStringIsPassed() + { + Assert.ThrowsException(() => RunSettingsUtilities.CreateAndInitializeRunSettings("abc")); + } + + [TestMethod] + public void CreateRunSettingsShouldReturnValidRunSettings() + { + TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsUtilitiesTests)); + string runsettings = @".\TestResultstrue"; + _ = RunSettingsUtilities.CreateAndInitializeRunSettings(runsettings); + Assert.AreEqual("true", DummyMsTestSetingsProvider.StringToVerify); + TestPluginCacheHelper.ResetExtensionsCache(); + } + + [TestMethod] + public void GetMaxCpuCountWithNullSettingXmlShouldReturnDefaultCpuCount() { - [TestMethod] - public void CreateRunSettingsShouldReturnNullIfSettingsXmlIsNullorEmpty() - { - Assert.IsNull(RunSettingsUtilities.CreateAndInitializeRunSettings(null)); - } - - [TestMethod] - public void CreateRunSettingsShouldThrowExceptionWhenInvalidXmlStringIsPassed() - { - Assert.ThrowsException(() => - { - RunSettingsUtilities.CreateAndInitializeRunSettings("abc"); - } - ); - } - - [TestMethod] - public void CreateRunSettingsShouldReturnValidRunSettings() - { - TestPluginCacheHelper.SetupMockExtensions(typeof(RunSettingsUtilitiesTests)); - string runsettings = @".\TestResultstrue"; - var result= RunSettingsUtilities.CreateAndInitializeRunSettings(runsettings); - Assert.AreEqual("true", DummyMsTestSetingsProvider.StringToVerify); - TestPluginCacheHelper.ResetExtensionsCache(); - } - - [TestMethod] - public void GetMaxCpuCountWithNullSettingXmlShouldReturnDefaultCpuCount() - { - string settingXml = null; - int expectedResult = Constants.DefaultCpuCount; - - int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); - - Assert.AreEqual(expectedResult, result); - } - - [TestMethod] - public void GetMaxCpuCountWithEmptySettingXmlShouldReturnDefaultCpuCount() - { - string settingXml = ""; - int expectedResult = Constants.DefaultCpuCount; - - int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); - - Assert.AreEqual(expectedResult, result); - } - - [TestMethod] - public void GetMaxCpuCountWithSettingXmlNotHavingCpuCountShouldReturnDefaultCpuCount() - { - string settingXml = @""; - int expectedResult = Constants.DefaultCpuCount; - - int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); - - Assert.AreEqual(expectedResult, result); - } - - [TestMethod] - public void GetMaxCpuCountWithSettingXmlCpuCountShouldReturnCorrectCpuCount() - { - string settingXml = @"5"; - int expectedResult = 5; - - int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); - - Assert.AreEqual(expectedResult, result); - } - - [TestMethod] - public void GetMaxCpuCountWithInvalidCpuCountShouldReturnDefaultCpuCount() - { - string settingXml = @"-10"; - int expectedResult = Constants.DefaultCpuCount; - - int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); - - Assert.AreEqual(expectedResult, result); - } - - [TestMethod] - public void GetTestAdaptersPaths() - { - string settingXml = @"C:\testadapterpath;D:\secondtestadapterpath"; - string[] expectedResult = new string[] { @"C:\testadapterpath", @"D:\secondtestadapterpath" }; - - string[] result = (string[])RunSettingsUtilities.GetTestAdaptersPaths(settingXml); - - CollectionAssert.AreEqual(expectedResult, result); - } + string? settingXml = null; + int expectedResult = Constants.DefaultCpuCount; + + int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); + + Assert.AreEqual(expectedResult, result); } - [SettingsName("DummyMSTest")] - public class DummyMsTestSetingsProvider : ISettingsProvider + [TestMethod] + public void GetMaxCpuCountWithEmptySettingXmlShouldReturnDefaultCpuCount() { - public void Load(XmlReader reader) - { - ValidateArg.NotNull(reader, nameof(reader)); - reader.Read(); - StringToVerify = reader.ReadOuterXml(); - } - - public static string StringToVerify = string.Empty; + string settingXml = ""; + int expectedResult = Constants.DefaultCpuCount; + + int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); + + Assert.AreEqual(expectedResult, result); } + + [TestMethod] + public void GetMaxCpuCountWithSettingXmlNotHavingCpuCountShouldReturnDefaultCpuCount() + { + string settingXml = @""; + int expectedResult = Constants.DefaultCpuCount; + + int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); + + Assert.AreEqual(expectedResult, result); + } + + [TestMethod] + public void GetMaxCpuCountWithSettingXmlCpuCountShouldReturnCorrectCpuCount() + { + string settingXml = @"5"; + int expectedResult = 5; + + int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); + + Assert.AreEqual(expectedResult, result); + } + + [TestMethod] + public void GetMaxCpuCountWithInvalidCpuCountShouldReturnDefaultCpuCount() + { + string settingXml = @"-10"; + int expectedResult = Constants.DefaultCpuCount; + + int result = RunSettingsUtilities.GetMaxCpuCount(settingXml); + + Assert.AreEqual(expectedResult, result); + } + + [TestMethod] + public void GetTestAdaptersPaths() + { + string settingXml = @"C:\testadapterpath;D:\secondtestadapterpath"; + string[] expectedResult = [@"C:\testadapterpath", @"D:\secondtestadapterpath"]; + + string[] result = (string[])RunSettingsUtilities.GetTestAdaptersPaths(settingXml); + + CollectionAssert.AreEqual(expectedResult, result); + } +} + +[SettingsName("DummyMSTest")] +public class DummyMsTestSetingsProvider : ISettingsProvider +{ + public void Load(XmlReader reader) + { + ValidateArg.NotNull(reader, nameof(reader)); + + reader.Read(); + StringToVerify = reader.ReadOuterXml(); + } + + public static string StringToVerify { get; private set; } = string.Empty; } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests.csproj b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests.csproj new file mode 100644 index 0000000000..2e7b972557 --- /dev/null +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests.csproj @@ -0,0 +1,13 @@ + + + + true + true + + + + net9.0;net48 + Exe + Microsoft.TestPlatform.CommunicationUtilities.PlatformTests + + diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketClientTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketClientTests.cs new file mode 100644 index 0000000000..e899a02567 --- /dev/null +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketClientTests.cs @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests; + +[TestClass] +[Ignore("Flaky tests")] +public class SocketClientTests : SocketTestsBase, IDisposable +{ + private readonly TcpListener _tcpListener; + + private readonly ICommunicationEndPoint _socketClient; + + private TcpClient? _tcpClient; + + public SocketClientTests() + { + _socketClient = new SocketClient(); + + var endpoint = new IPEndPoint(IPAddress.Loopback, 0); + _tcpListener = new TcpListener(endpoint); + } + + protected override TcpClient? Client => _tcpClient; + + public void Dispose() + { + _socketClient.Stop(); + // tcpClient.Close() calls tcpClient.Dispose(). + _tcpClient?.Close(); + GC.SuppressFinalize(this); + } + + [TestMethod] + public void SocketClientStartShouldConnectToLoopbackOnGivenPort() + { + var connectionInfo = StartLocalServer(); + + _socketClient.Start(connectionInfo); + + var acceptClientTask = _tcpListener.AcceptTcpClientAsync(); + Assert.IsTrue(acceptClientTask.Wait(Timeout)); + Assert.IsTrue(acceptClientTask.Result.Connected); + } + + [TestMethod] + [Ignore] + public void SocketClientStartShouldThrowIfServerIsNotListening() + { + var dummyConnectionInfo = "5345"; + + _socketClient.Start(dummyConnectionInfo); + + var exceptionThrown = false; + try + { + _socketClient.Start(dummyConnectionInfo); + } + catch (PlatformNotSupportedException) + { + // Thrown on unix + exceptionThrown = true; + } + catch (SocketException) + { + exceptionThrown = true; + } + + Assert.IsTrue(exceptionThrown); + } + + [TestMethod] + public void SocketClientStopShouldRaiseClientDisconnectedEventOnClientDisconnection() + { + var waitEvent = SetupClientDisconnect(out ICommunicationChannel? _); + + // Close the communication from client side + _socketClient.Stop(); + + Assert.IsTrue(waitEvent.WaitOne(Timeout)); + } + + [TestMethod] + public void SocketClientShouldRaiseClientDisconnectedEventIfConnectionIsBroken() + { + var waitEvent = SetupClientDisconnect(out ICommunicationChannel? _); + + // Close the communication from server side + _tcpClient?.GetStream().Dispose(); + // tcpClient.Close() calls tcpClient.Dispose(). + _tcpClient?.Close(); + Assert.IsTrue(waitEvent.WaitOne(Timeout)); + } + + [TestMethod] + public void SocketClientStopShouldStopCommunication() + { + var waitEvent = SetupClientDisconnect(out ICommunicationChannel? _); + + // Close the communication from socket client side + _socketClient.Stop(); + + // Validate that write on server side fails + waitEvent.WaitOne(Timeout); + Assert.ThrowsException(() => WriteData(Client!)); + } + + [TestMethod] + public void SocketClientStopShouldCloseChannel() + { + var waitEvent = SetupClientDisconnect(out ICommunicationChannel? channel); + + _socketClient.Stop(); + + waitEvent.WaitOne(Timeout); + Assert.ThrowsException(() => channel!.Send(Dummydata)); + } + + protected override ICommunicationChannel? SetupChannel(out ConnectedEventArgs? connectedEvent) + { + ICommunicationChannel? channel = null; + ConnectedEventArgs? serverConnectedEvent = null; + ManualResetEvent waitEvent = new(false); + _socketClient.Connected += (sender, eventArgs) => + { + serverConnectedEvent = eventArgs; + channel = eventArgs.Channel; + waitEvent.Set(); + }; + + var connectionInfo = StartLocalServer(); + _socketClient.Start(connectionInfo); + + var acceptClientTask = _tcpListener.AcceptTcpClientAsync(); + if (acceptClientTask.Wait(TimeSpan.FromMilliseconds(1000))) + { + _tcpClient = acceptClientTask.Result; + waitEvent.WaitOne(1000); + } + + connectedEvent = serverConnectedEvent; + return channel; + } + + private ManualResetEvent SetupClientDisconnect(out ICommunicationChannel? channel) + { + var waitEvent = new ManualResetEvent(false); + _socketClient.Disconnected += (s, e) => waitEvent.Set(); + channel = SetupChannel(out ConnectedEventArgs? _); + channel!.MessageReceived.Subscribe((sender, args) => + { + }); + return waitEvent; + } + + private string StartLocalServer() + { + _tcpListener.Start(); + + return ((IPEndPoint)_tcpListener.LocalEndpoint).ToString(); + } +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketCommunicationManagerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketCommunicationManagerTests.cs new file mode 100644 index 0000000000..7d352a6327 --- /dev/null +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketCommunicationManagerTests.cs @@ -0,0 +1,377 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests; + +[TestClass] +public class SocketCommunicationManagerTests : IDisposable +{ + private const string TestDiscoveryStartMessageWithNullPayload = "{\"MessageType\":\"TestDiscovery.Start\",\"Payload\":null}"; + + private const string TestDiscoveryStartMessageWithDummyPayload = "{\"MessageType\":\"TestDiscovery.Start\",\"Payload\":\"Dummy Payload\"}"; + + private const string TestDiscoveryStartMessageWithVersionAndPayload = "{\"Version\":2,\"MessageType\":\"TestDiscovery.Start\",\"Payload\":\"Dummy Payload\"}"; + + private const string DummyPayload = "Dummy Payload"; + + private readonly SocketCommunicationManager _communicationManager; + private readonly TcpClient _tcpClient; + private readonly TcpListener _tcpListener; + + public SocketCommunicationManagerTests() + { + _communicationManager = new SocketCommunicationManager(); + _tcpClient = new TcpClient(); + _tcpListener = new TcpListener(IPAddress.Loopback, 0); + } + + public void Dispose() + { + _tcpListener.Stop(); + // tcpClient.Close() calls tcpClient.Dispose(). + _tcpClient?.Close(); + _communicationManager.StopServer(); + _communicationManager.StopClient(); + GC.SuppressFinalize(this); + } + + #region Server tests + + [TestMethod] + public async Task HostServerShouldStartServerAndReturnPortNumber() + { + var port = _communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; + + Assert.IsTrue(port > 0); + await _tcpClient.ConnectAsync(IPAddress.Loopback, port); + Assert.IsTrue(_tcpClient.Connected); + } + + [TestMethod] + public async Task AcceptClientAsyncShouldWaitForClientConnection() + { + var clientConnected = false; + var waitEvent = new ManualResetEvent(false); + var port = _communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; + + var acceptClientTask = _communicationManager.AcceptClientAsync().ContinueWith( + (continuationTask, state) => + { + clientConnected = true; + waitEvent.Set(); + }, + null); + + await _tcpClient.ConnectAsync(IPAddress.Loopback, port); + Assert.IsTrue(_tcpClient.Connected); + Assert.IsTrue(waitEvent.WaitOne(1000) && clientConnected); + } + + [TestMethod] + public async Task WaitForClientConnectionShouldWaitUntilClientIsConnected() + { + var port = _communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; + _ = _communicationManager.AcceptClientAsync(); + await _tcpClient.ConnectAsync(IPAddress.Loopback, port); + + var clientConnected = _communicationManager.WaitForClientConnection(1000); + + Assert.IsTrue(_tcpClient.Connected); + Assert.IsTrue(clientConnected); + } + + [TestMethod] + public void WaitForClientConnectionShouldReturnFalseIfClientIsNotConnected() + { + _communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)); + _ = _communicationManager.AcceptClientAsync(); + + // Do not attempt the client to connect to server. Directly wait until timeout. + var clientConnected = _communicationManager.WaitForClientConnection(100); + + Assert.IsFalse(clientConnected); + } + + [TestMethod] + public void StopServerShouldCloseServer() + { + var port = _communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; + var acceptClientTask = _communicationManager.AcceptClientAsync(); + + _communicationManager.StopServer(); + + Assert.ThrowsException(() => _tcpClient.ConnectAsync(IPAddress.Loopback, port).Wait()); + } + + #endregion + + #region Client tests + + [TestMethod] + public async Task SetupClientAsyncShouldConnectToServer() + { + var port = StartServer(); + _ = _communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)); + + var client = await _tcpListener.AcceptTcpClientAsync(); + Assert.IsTrue(client.Connected); + } + + [TestMethod] + public async Task WaitForServerConnectionShouldWaitUntilClientIsConnected() + { + var port = StartServer(); + _ = _communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)); + await _tcpListener.AcceptTcpClientAsync(); + + var serverConnected = _communicationManager.WaitForServerConnection(1000); + + Assert.IsTrue(serverConnected); + } + + [TestMethod] + public void WaitForServerConnectionShouldReturnFalseIfClientIsNotConnected() + { + // There is no server listening on port 20000. + _ = _communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 20000)); + + var serverConnected = _communicationManager.WaitForServerConnection(100); + + Assert.IsFalse(serverConnected); + } + + [TestMethod] + public async Task StopClientShouldDisconnectClient() + { + // TODO: This won't throw on MacOS? No way to try it. + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + return; + } + + var client = await StartServerAndWaitForConnection(); + + _communicationManager.StopClient(); + + // Attempt to write on client socket should throw since it should have disconnected. + Assert.ThrowsException(() => WriteOnSocket(client.Client)); + } + + #endregion + + #region Message sender tests + + [TestMethod] + public async Task SendMessageShouldSendMessageWithoutAnyPayload() + { + var client = await StartServerAndWaitForConnection(); + + _communicationManager.SendMessage(MessageType.StartDiscovery); + + Assert.AreEqual(TestDiscoveryStartMessageWithNullPayload, ReadFromStream(client.GetStream())); + } + + [TestMethod] + public async Task SendMessageWithPayloadShouldSerializeAndSendThePayload() + { + var client = await StartServerAndWaitForConnection(); + + _communicationManager.SendMessage(MessageType.StartDiscovery, DummyPayload); + + Assert.AreEqual(TestDiscoveryStartMessageWithDummyPayload, ReadFromStream(client.GetStream())); + } + + [TestMethod] + public async Task SendMessageWithPayloadShouldSerializeAndSendThePayloadWithVersionStamped() + { + var client = await StartServerAndWaitForConnection(); + + _communicationManager.SendMessage(MessageType.StartDiscovery, DummyPayload, 2); + + Assert.AreEqual(TestDiscoveryStartMessageWithVersionAndPayload, ReadFromStream(client.GetStream())); + } + + [TestMethod] + public async Task SendMessageWithRawMessageShouldNotSerializeThePayload() + { + var client = await StartServerAndWaitForConnection(); + + _communicationManager.SendRawMessage(DummyPayload); + + Assert.AreEqual(DummyPayload, ReadFromStream(client.GetStream())); + } + + #endregion + + #region Message receiver tests + + [TestMethod] + public async Task ReceiveMessageShouldReadMessageTypeButNotDeserializeThePayload() + { + var client = await StartServerAndWaitForConnection(); + WriteToStream(client.GetStream(), TestDiscoveryStartMessageWithDummyPayload); + + var message = _communicationManager.ReceiveMessage(); + + Assert.AreEqual(MessageType.StartDiscovery, message?.MessageType); + // Payload property is present on the Message, but we don't populate it in the newer versions, + // instead we populate internal field with the rawMessage, and wait until Serializer.DeserializePayload(message) + // is called by the message consumer. This avoids deserializing the payload when we just want to route the message. + Assert.IsNull(message!.Payload); + } + + [TestMethod] + public async Task ReceiveMessageAsyncShouldReceiveDeserializedMessage() + { + var client = await StartServerAndWaitForConnection(); + WriteToStream(client.GetStream(), TestDiscoveryStartMessageWithVersionAndPayload); + + var message = await _communicationManager.ReceiveMessageAsync(CancellationToken.None); + var versionedMessage = (VersionedMessage)message!; + Assert.AreEqual(MessageType.StartDiscovery, versionedMessage.MessageType); + Assert.AreEqual(2, versionedMessage.Version); + // Payload property is present on the Message, but we don't populate it in the newer versions, + // instead we populate internal field with the rawMessage, and wait until Serializer.DeserializePayload(message) + // is called by the message consumer. This avoids deserializing the payload when we just want to route the message. + Assert.IsNull(versionedMessage.Payload); + } + + [TestMethod] + public async Task ReceiveRawMessageShouldNotDeserializeThePayload() + { + var client = await StartServerAndWaitForConnection(); + WriteToStream(client.GetStream(), DummyPayload); + + var message = _communicationManager.ReceiveRawMessage(); + + Assert.AreEqual(DummyPayload, message); + } + + [TestMethod] + public async Task ReceiveRawMessageAsyncShouldNotDeserializeThePayload() + { + var client = await StartServerAndWaitForConnection(); + WriteToStream(client.GetStream(), DummyPayload); + + var message = await _communicationManager.ReceiveRawMessageAsync(CancellationToken.None); + + Assert.AreEqual(DummyPayload, message); + } + #endregion + + [TestMethod] + public void SocketPollShouldNotHangServerClientCommunication() + { + // Measure the throughput with socket communication v1 (SocketCommunicationManager) + // implementation. + var server = new SocketCommunicationManager(); + var client = new SocketCommunicationManager(); + + int port = server.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; + client.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)).Wait(); + server.AcceptClientAsync().Wait(); + + server.WaitForClientConnection(1000); + client.WaitForServerConnection(1000); + + var clientThread = new Thread(() => SendData(client)); + clientThread.Start(); + + var dataReceived = 0; + while (dataReceived < 2048 * 5) + { + dataReceived += server.ReceiveRawMessageAsync(CancellationToken.None).Result!.Length; + Task.Delay(1000).Wait(); + } + + clientThread.Join(); + + Assert.IsTrue(true); + } + + [TestMethod] + public async Task ReceiveRawMessageNotConnectedSocketShouldReturnNull() + { + var peer = new SocketCommunicationManager(); + Assert.IsNull(peer.ReceiveRawMessage()); + Assert.IsNull(await peer.ReceiveRawMessageAsync(CancellationToken.None)); + } + + [TestMethod] + public async Task ReceiveMessageNotConnectedSocketShouldReturnNull() + { + var peer = new SocketCommunicationManager(); + Assert.IsNull(peer.ReceiveMessage()); + Assert.IsNull(await peer.ReceiveMessageAsync(CancellationToken.None)); + } + + private static void SendData(ICommunicationManager communicationManager) + { + // Having less than the buffer size in SocketConstants.BUFFERSIZE. + var dataBytes = new byte[2048]; + for (int i = 0; i < dataBytes.Length; i++) + { + dataBytes[i] = 0x65; + } + + var dataBytesStr = Encoding.UTF8.GetString(dataBytes); + + for (int i = 0; i < 5; i++) + { + communicationManager.SendRawMessage(dataBytesStr); + } + } + + private int StartServer() + { + _tcpListener.Start(); + + return ((IPEndPoint)_tcpListener.LocalEndpoint).Port; + } + + private async Task StartServerAndWaitForConnection() + { + var port = StartServer(); + _ = _communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)); + var client = await _tcpListener.AcceptTcpClientAsync(); + _communicationManager.WaitForServerConnection(1000); + + return client; + } + + private static void WriteOnSocket(Socket socket) + { + for (int i = 0; i < 10; i++) + { + socket.Send([0x1, 0x0]); + } + } + + private static string ReadFromStream(Stream stream) + { + using var reader = new BinaryReader(stream, Encoding.UTF8, true); + return reader.ReadString(); + } + + private static void WriteToStream(Stream stream, string data) + { + using var writer = new BinaryWriter(stream, Encoding.UTF8, true); + writer.Write(data); + writer.Flush(); + } +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketServerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketServerTests.cs new file mode 100644 index 0000000000..1c392218f3 --- /dev/null +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketServerTests.cs @@ -0,0 +1,175 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests; + +[TestClass] +[Ignore("Flaky")] +public class SocketServerTests : SocketTestsBase, IDisposable +{ + private readonly TcpClient _tcpClient; + private readonly string _defaultConnection = IPAddress.Loopback.ToString() + ":0"; + private readonly ICommunicationEndPoint _socketServer; + + public SocketServerTests() + { + _socketServer = new SocketServer(); + + _tcpClient = new TcpClient(); + } + + protected override TcpClient Client => _tcpClient; + + public void Dispose() + { + _socketServer.Stop(); + // tcpClient.Close() calls tcpClient.Dispose(). + _tcpClient?.Close(); + GC.SuppressFinalize(this); + } + + [TestMethod] + public async Task SocketServerStartShouldHostServer() + { + var connectionInfo = _socketServer.Start(_defaultConnection); + + Assert.IsFalse(string.IsNullOrEmpty(connectionInfo)); + await ConnectToServer(connectionInfo.GetIpEndPoint().Port); + Assert.IsTrue(_tcpClient.Connected); + } + + [TestMethod] + public void SocketServerStopShouldStopListening() + { + var connectionInfo = _socketServer.Start(_defaultConnection); + + _socketServer.Stop(); + + try + { + // This method throws ExtendedSocketException (which is private). It is not possible + // to use Assert.ThrowsException in this case. + ConnectToServer(connectionInfo.GetIpEndPoint().Port).GetAwaiter().GetResult(); + } + catch (SocketException) + { + } + } + + [TestMethod] + public void SocketServerStopShouldCloseClient() + { + ManualResetEvent waitEvent = new(false); + _socketServer.Disconnected += (s, e) => waitEvent.Set(); + SetupChannel(out ConnectedEventArgs? clientConnected); + + _socketServer.Stop(); + + waitEvent.WaitOne(); + Assert.ThrowsException(() => WriteData(_tcpClient)); + } + + [TestMethod] + public void SocketServerStopShouldRaiseClientDisconnectedEventOnClientDisconnection() + { + DisconnectedEventArgs? disconnected = null; + ManualResetEvent waitEvent = new(false); + _socketServer.Disconnected += (s, e) => + { + disconnected = e; + waitEvent.Set(); + }; + SetupChannel(out ConnectedEventArgs? clientConnected); + + _socketServer.Stop(); + + waitEvent.WaitOne(); + Assert.IsNotNull(disconnected); + Assert.IsNull(disconnected.Error); + } + + [TestMethod] + public void SocketServerStopShouldCloseChannel() + { + var waitEvent = new ManualResetEventSlim(false); + var channel = SetupChannel(out ConnectedEventArgs? clientConnected); + _socketServer.Disconnected += (s, e) => waitEvent.Set(); + + _socketServer.Stop(); + + waitEvent.Wait(); + Assert.ThrowsException(() => channel!.Send(Dummydata)); + } + + [TestMethod] + public void SocketServerShouldRaiseClientDisconnectedEventIfConnectionIsBroken() + { + DisconnectedEventArgs? clientDisconnected = null; + ManualResetEvent waitEvent = new(false); + _socketServer.Disconnected += (sender, eventArgs) => + { + clientDisconnected = eventArgs; + waitEvent.Set(); + }; + var channel = SetupChannel(out ConnectedEventArgs? clientConnected); + + channel!.MessageReceived.Subscribe((sender, args) => + { + }); + + // Close the client channel. Message loop should stop. + // tcpClient.Close() calls tcpClient.Dispose(). + _tcpClient?.Close(); + + Assert.IsTrue(waitEvent.WaitOne(1000)); + Assert.IsTrue(clientDisconnected!.Error is IOException); + } + + [TestMethod] + public async Task SocketEndpointShouldInitializeChannelOnServerConnection() + { + var channel = SetupChannel(out ConnectedEventArgs? _); + + await channel!.Send(Dummydata); + + Assert.AreEqual(Dummydata, ReadData(Client)); + } + + protected override ICommunicationChannel? SetupChannel(out ConnectedEventArgs? connectedEvent) + { + ICommunicationChannel? channel = null; + ConnectedEventArgs? clientConnectedEvent = null; + ManualResetEvent waitEvent = new(false); + _socketServer.Connected += (sender, eventArgs) => + { + clientConnectedEvent = eventArgs; + channel = eventArgs.Channel; + waitEvent.Set(); + }; + + var connectionInfo = _socketServer.Start(_defaultConnection); + var port = connectionInfo.GetIpEndPoint().Port; + ConnectToServer(port).GetAwaiter().GetResult(); + waitEvent.WaitOne(); + + connectedEvent = clientConnectedEvent; + return channel; + } + + private async Task ConnectToServer(int port) + { + await _tcpClient.ConnectAsync(IPAddress.Loopback, port); + } +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketTestsBase.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketTestsBase.cs new file mode 100644 index 0000000000..22fb46e655 --- /dev/null +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.Platform.UnitTests/SocketTestsBase.cs @@ -0,0 +1,60 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO; +using System.Net.Sockets; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests; + +[TestClass] +public abstract class SocketTestsBase +{ + protected const string Dummydata = "Dummy Data"; + protected const int Timeout = 10 * 1000; + + protected abstract TcpClient? Client { get; } + + [TestMethod] + public void SocketEndpointStartShouldRaiseServerConnectedEventOnServerConnection() + { + SetupChannel(out ConnectedEventArgs? connectedEventArgs); + + Assert.IsNotNull(connectedEventArgs); + } + + [TestMethod] + public void SocketEndpointShouldNotifyChannelOnDataAvailable() + { + var message = string.Empty; + ManualResetEvent waitForMessage = new(false); + SetupChannel(out ConnectedEventArgs? _)!.MessageReceived.Subscribe((s, e) => + { + message = e.Data; + waitForMessage.Set(); + }); + + WriteData(Client!); + + waitForMessage.WaitOne(); + Assert.AreEqual(Dummydata, message); + } + + protected static string ReadData(TcpClient client) + { + using BinaryReader reader = new(client.GetStream()); + return reader.ReadString(); + } + + protected static void WriteData(TcpClient client) + { + using BinaryWriter writer = new(client.GetStream()); + writer.Write(Dummydata); + } + + protected abstract ICommunicationChannel? SetupChannel(out ConnectedEventArgs? connectedEventArgs); +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests.csproj b/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests.csproj deleted file mode 100644 index b2ddb8c50a..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - ..\..\ - true - true - - - - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - Microsoft.TestPlatform.CommunicationUtilities.PlatformTests - true - - - - - - - - - diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/Program.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/Program.cs deleted file mode 100644 index a0ee0a2eb5..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketClientTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketClientTests.cs deleted file mode 100644 index 35f3907d41..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketClientTests.cs +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests -{ - using System; - using System.IO; - using System.Net; - using System.Net.Sockets; - using System.Threading; - - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class SocketClientTests : SocketTestsBase, IDisposable - { - private readonly TcpListener tcpListener; - - private readonly ICommunicationEndPoint socketClient; - - private TcpClient tcpClient; - - public SocketClientTests() - { - this.socketClient = new SocketClient(); - - var endpoint = new IPEndPoint(IPAddress.Loopback, 0); - this.tcpListener = new TcpListener(endpoint); - } - - protected override TcpClient Client => this.tcpClient; - - public void Dispose() - { - this.socketClient.Stop(); -#if NETFRAMEWORK - // tcpClient.Close() calls tcpClient.Dispose(). - this.tcpClient?.Close(); -#else - // tcpClient.Close() not available for netcoreapp1.0 - this.tcpClient?.Dispose(); -#endif - GC.SuppressFinalize(this); - } - - [TestMethod] - public void SocketClientStartShouldConnectToLoopbackOnGivenPort() - { - var connectionInfo = this.StartLocalServer(); - - this.socketClient.Start(connectionInfo); - - var acceptClientTask = this.tcpListener.AcceptTcpClientAsync(); - Assert.IsTrue(acceptClientTask.Wait(TIMEOUT)); - Assert.IsTrue(acceptClientTask.Result.Connected); - } - - [TestMethod] - [Ignore] - public void SocketClientStartShouldThrowIfServerIsNotListening() - { - var dummyConnectionInfo = "5345"; - - this.socketClient.Start(dummyConnectionInfo); - - var exceptionThrown = false; - try - { - this.socketClient.Start(dummyConnectionInfo); - } - catch (PlatformNotSupportedException) - { - // Thrown on unix - exceptionThrown = true; - } - catch (SocketException) - { - exceptionThrown = true; - } - - Assert.IsTrue(exceptionThrown); - } - - [TestMethod] - public void SocketClientStopShouldRaiseClientDisconnectedEventOnClientDisconnection() - { - var waitEvent = this.SetupClientDisconnect(out ICommunicationChannel _); - - // Close the communication from client side - this.socketClient.Stop(); - - Assert.IsTrue(waitEvent.WaitOne(TIMEOUT)); - } - - [TestMethod] - public void SocketClientShouldRaiseClientDisconnectedEventIfConnectionIsBroken() - { - var waitEvent = this.SetupClientDisconnect(out ICommunicationChannel _); - - // Close the communication from server side - this.tcpClient.GetStream().Dispose(); -#if NETFRAMEWORK - // tcpClient.Close() calls tcpClient.Dispose(). - this.tcpClient?.Close(); -#else - // tcpClient.Close() not available for netcoreapp1.0 - this.tcpClient?.Dispose(); -#endif - Assert.IsTrue(waitEvent.WaitOne(TIMEOUT)); - } - - [TestMethod] - public void SocketClientStopShouldStopCommunication() - { - var waitEvent = this.SetupClientDisconnect(out ICommunicationChannel _); - - // Close the communication from socket client side - this.socketClient.Stop(); - - // Validate that write on server side fails - waitEvent.WaitOne(TIMEOUT); - Assert.ThrowsException(() => WriteData(this.Client)); - } - - [TestMethod] - public void SocketClientStopShouldCloseChannel() - { - var waitEvent = this.SetupClientDisconnect(out ICommunicationChannel channel); - - this.socketClient.Stop(); - - waitEvent.WaitOne(TIMEOUT); - Assert.ThrowsException(() => channel.Send(DUMMYDATA)); - } - - protected override ICommunicationChannel SetupChannel(out ConnectedEventArgs connectedEvent) - { - ICommunicationChannel channel = null; - ConnectedEventArgs serverConnectedEvent = null; - ManualResetEvent waitEvent = new ManualResetEvent(false); - this.socketClient.Connected += (sender, eventArgs) => - { - serverConnectedEvent = eventArgs; - channel = eventArgs.Channel; - waitEvent.Set(); - }; - - var connectionInfo = this.StartLocalServer(); - this.socketClient.Start(connectionInfo); - - var acceptClientTask = this.tcpListener.AcceptTcpClientAsync(); - if (acceptClientTask.Wait(TimeSpan.FromMilliseconds(1000))) - { - this.tcpClient = acceptClientTask.Result; - waitEvent.WaitOne(1000); - } - - connectedEvent = serverConnectedEvent; - return channel; - } - - private ManualResetEvent SetupClientDisconnect(out ICommunicationChannel channel) - { - var waitEvent = new ManualResetEvent(false); - this.socketClient.Disconnected += (s, e) => { waitEvent.Set(); }; - channel = this.SetupChannel(out ConnectedEventArgs _); - channel.MessageReceived += (sender, args) => - { - }; - return waitEvent; - } - - private string StartLocalServer() - { - this.tcpListener.Start(); - - return ((IPEndPoint)this.tcpListener.LocalEndpoint).ToString(); - } - } -} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketCommunicationManagerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketCommunicationManagerTests.cs deleted file mode 100644 index 2f39dd1f73..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketCommunicationManagerTests.cs +++ /dev/null @@ -1,375 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests -{ - using System; - using System.IO; - using System.Net; - using System.Net.Sockets; - using System.Text; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class SocketCommunicationManagerTests : IDisposable - { - private const string TestDiscoveryStartMessageWithNullPayload = "{\"MessageType\":\"TestDiscovery.Start\",\"Payload\":null}"; - - private const string TestDiscoveryStartMessageWithDummyPayload = "{\"MessageType\":\"TestDiscovery.Start\",\"Payload\":\"Dummy Payload\"}"; - - private const string TestDiscoveryStartMessageWithVersionAndPayload = "{\"Version\":2,\"MessageType\":\"TestDiscovery.Start\",\"Payload\":\"Dummy Payload\"}"; - - private const string DummyPayload = "Dummy Payload"; - - private readonly SocketCommunicationManager communicationManager; - - private readonly TcpClient tcpClient; - - private readonly TcpListener tcpListener; - - public SocketCommunicationManagerTests() - { - this.communicationManager = new SocketCommunicationManager(); - this.tcpClient = new TcpClient(); - this.tcpListener = new TcpListener(IPAddress.Loopback, 0); - } - - public void Dispose() - { - this.tcpListener.Stop(); -#if NETFRAMEWORK - // tcpClient.Close() calls tcpClient.Dispose(). - this.tcpClient?.Close(); -#else - // tcpClient.Close() not available for netcoreapp1.0 - this.tcpClient?.Dispose(); -#endif - this.communicationManager.StopServer(); - this.communicationManager.StopClient(); - GC.SuppressFinalize(this); - } - - #region Server tests - - [TestMethod] - public async Task HostServerShouldStartServerAndReturnPortNumber() - { - var port = this.communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; - - Assert.IsTrue(port > 0); - await this.tcpClient.ConnectAsync(IPAddress.Loopback, port); - Assert.IsTrue(this.tcpClient.Connected); - } - - [TestMethod] - public async Task AcceptClientAsyncShouldWaitForClientConnection() - { - var clientConnected = false; - var waitEvent = new ManualResetEvent(false); - var port = this.communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; - - var acceptClientTask = this.communicationManager.AcceptClientAsync().ContinueWith( - (continuationTask, state) => - { - clientConnected = true; - waitEvent.Set(); - }, - null); - - await this.tcpClient.ConnectAsync(IPAddress.Loopback, port); - Assert.IsTrue(this.tcpClient.Connected); - Assert.IsTrue(waitEvent.WaitOne(1000) && clientConnected); - } - - [TestMethod] - public async Task WaitForClientConnectionShouldWaitUntilClientIsConnected() - { - var port = this.communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; - var acceptClientTask = this.communicationManager.AcceptClientAsync(); - await this.tcpClient.ConnectAsync(IPAddress.Loopback, port); - - var clientConnected = this.communicationManager.WaitForClientConnection(1000); - - Assert.IsTrue(this.tcpClient.Connected); - Assert.IsTrue(clientConnected); - } - - [TestMethod] - public void WaitForClientConnectionShouldReturnFalseIfClientIsNotConnected() - { - this.communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)); - var acceptClientTask = this.communicationManager.AcceptClientAsync(); - - // Do not attempt the client to connect to server. Directly wait until timeout. - var clientConnected = this.communicationManager.WaitForClientConnection(100); - - Assert.IsFalse(clientConnected); - } - - [TestMethod] - public void StopServerShouldCloseServer() - { - var port = this.communicationManager.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; - var acceptClientTask = this.communicationManager.AcceptClientAsync(); - - this.communicationManager.StopServer(); - - Assert.ThrowsException(() => this.tcpClient.ConnectAsync(IPAddress.Loopback, port).Wait()); - } - - #endregion - - #region Client tests - - [TestMethod] - public async Task SetupClientAsyncShouldConnectToServer() - { - var port = this.StartServer(); - - var setupClientTask = this.communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)); - - var client = await this.tcpListener.AcceptTcpClientAsync(); - Assert.IsTrue(client.Connected); - } - - [TestMethod] - public async Task WaitForServerConnectionShouldWaitUntilClientIsConnected() - { - var port = this.StartServer(); - var setupClientTask = this.communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)); - await this.tcpListener.AcceptTcpClientAsync(); - - var serverConnected = this.communicationManager.WaitForServerConnection(1000); - - Assert.IsTrue(serverConnected); - } - - [TestMethod] - public void WaitForServerConnectionShouldReturnFalseIfClientIsNotConnected() - { - // There is no server listening on port 20000. - var setupClientTask = this.communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 20000)); - - var serverConnected = this.communicationManager.WaitForServerConnection(100); - - Assert.IsFalse(serverConnected); - } - - [TestMethod] - public async Task StopClientShouldDisconnectClient() - { - var client = await this.StartServerAndWaitForConnection(); - - this.communicationManager.StopClient(); - - // Attempt to write on client socket should throw since it should have disconnected. - Assert.ThrowsException(() => this.WriteOnSocket(client.Client)); - } - - #endregion - - #region Message sender tests - - [TestMethod] - public async Task SendMessageShouldSendMessageWithoutAnyPayload() - { - var client = await this.StartServerAndWaitForConnection(); - - this.communicationManager.SendMessage(MessageType.StartDiscovery); - - Assert.AreEqual(TestDiscoveryStartMessageWithNullPayload, this.ReadFromStream(client.GetStream())); - } - - [TestMethod] - public async Task SendMessageWithPayloadShouldSerializeAndSendThePayload() - { - var client = await this.StartServerAndWaitForConnection(); - - this.communicationManager.SendMessage(MessageType.StartDiscovery, DummyPayload); - - Assert.AreEqual(TestDiscoveryStartMessageWithDummyPayload, this.ReadFromStream(client.GetStream())); - } - - [TestMethod] - public async Task SendMessageWithPayloadShouldSerializeAndSendThePayloadWithVersionStamped() - { - var client = await this.StartServerAndWaitForConnection(); - - this.communicationManager.SendMessage(MessageType.StartDiscovery, DummyPayload, 2); - - Assert.AreEqual(TestDiscoveryStartMessageWithVersionAndPayload, this.ReadFromStream(client.GetStream())); - } - - [TestMethod] - public async Task SendMessageWithRawMessageShouldNotSerializeThePayload() - { - var client = await this.StartServerAndWaitForConnection(); - - this.communicationManager.SendRawMessage(DummyPayload); - - Assert.AreEqual(DummyPayload, this.ReadFromStream(client.GetStream())); - } - - #endregion - - #region Message receiver tests - - [TestMethod] - public async Task ReceiveMessageShouldReceiveDeserializedMessage() - { - var client = await this.StartServerAndWaitForConnection(); - this.WriteToStream(client.GetStream(), TestDiscoveryStartMessageWithDummyPayload); - - var message = this.communicationManager.ReceiveMessage(); - - Assert.AreEqual(MessageType.StartDiscovery, message.MessageType); - Assert.AreEqual(DummyPayload, message.Payload); - } - - [TestMethod] - public async Task ReceiveMessageAsyncShouldReceiveDeserializedMessage() - { - var client = await this.StartServerAndWaitForConnection(); - this.WriteToStream(client.GetStream(), TestDiscoveryStartMessageWithVersionAndPayload); - - var message = await this.communicationManager.ReceiveMessageAsync(CancellationToken.None); - var versionedMessage = message as VersionedMessage; - Assert.AreEqual(MessageType.StartDiscovery, versionedMessage.MessageType); - Assert.AreEqual(DummyPayload, versionedMessage.Payload); - Assert.AreEqual(2, versionedMessage.Version); - } - - [TestMethod] - public async Task ReceiveRawMessageShouldNotDeserializeThePayload() - { - var client = await this.StartServerAndWaitForConnection(); - this.WriteToStream(client.GetStream(), DummyPayload); - - var message = this.communicationManager.ReceiveRawMessage(); - - Assert.AreEqual(DummyPayload, message); - } - - [TestMethod] - public async Task ReceiveRawMessageAsyncShouldNotDeserializeThePayload() - { - var client = await this.StartServerAndWaitForConnection(); - this.WriteToStream(client.GetStream(), DummyPayload); - - var message = await this.communicationManager.ReceiveRawMessageAsync(CancellationToken.None); - - Assert.AreEqual(DummyPayload, message); - } - #endregion - - [TestMethod] - public void SocketPollShouldNotHangServerClientCommunication() - { - // Measure the throughput with socket communication v1 (SocketCommunicationManager) - // implementation. - var server = new SocketCommunicationManager(); - var client = new SocketCommunicationManager(); - - int port = server.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; - client.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)).Wait(); - server.AcceptClientAsync().Wait(); - - server.WaitForClientConnection(1000); - client.WaitForServerConnection(1000); - - var clientThread = new Thread(() => SendData(client)); - clientThread.Start(); - - var dataReceived = 0; - while (dataReceived < 2048 * 5) - { - dataReceived += server.ReceiveRawMessageAsync(CancellationToken.None).Result.Length; - Task.Delay(1000).Wait(); - } - - clientThread.Join(); - - Assert.IsTrue(true); - } - - [TestMethod] - public async Task ReceiveRawMessageNotConnectedSocketShouldReturnNull() - { - var peer = new SocketCommunicationManager(); - Assert.IsNull(peer.ReceiveRawMessage()); - Assert.IsNull(await peer.ReceiveRawMessageAsync(CancellationToken.None)); - } - - [TestMethod] - public async Task ReceiveMessageNotConnectedSocketShouldReturnNull() - { - var peer = new SocketCommunicationManager(); - Assert.IsNull(peer.ReceiveMessage()); - Assert.IsNull(await peer.ReceiveMessageAsync(CancellationToken.None)); - } - - private static void SendData(ICommunicationManager communicationManager) - { - // Having less than the buffer size in SocketConstants.BUFFERSIZE. - var dataBytes = new byte[2048]; - for (int i = 0; i < dataBytes.Length; i++) - { - dataBytes[i] = 0x65; - } - - var dataBytesStr = Encoding.UTF8.GetString(dataBytes); - - for (int i = 0; i < 5; i++) - { - communicationManager.SendRawMessage(dataBytesStr); - } - } - - private int StartServer() - { - this.tcpListener.Start(); - - return ((IPEndPoint)this.tcpListener.LocalEndpoint).Port; - } - - private async Task StartServerAndWaitForConnection() - { - var port = this.StartServer(); - var setupClientTask = this.communicationManager.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)); - var client = await this.tcpListener.AcceptTcpClientAsync(); - this.communicationManager.WaitForServerConnection(1000); - - return client; - } - - private void WriteOnSocket(Socket socket) - { - for (int i = 0; i < 10; i++) - { - socket.Send(new byte[2] { 0x1, 0x0 }); - } - } - - private string ReadFromStream(Stream stream) - { - using (var reader = new BinaryReader(stream, Encoding.UTF8, true)) - { - return reader.ReadString(); - } - } - - private void WriteToStream(Stream stream, string data) - { - using (var writer = new BinaryWriter(stream, Encoding.UTF8, true)) - { - writer.Write(data); - writer.Flush(); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketServerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketServerTests.cs deleted file mode 100644 index d6ed36f694..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketServerTests.cs +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests -{ - using System; - using System.IO; - using System.Net; - using System.Net.Sockets; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class SocketServerTests : SocketTestsBase, IDisposable - { - private readonly TcpClient tcpClient; - private readonly string defaultConnection = IPAddress.Loopback.ToString() + ":0"; - private readonly ICommunicationEndPoint socketServer; - - public SocketServerTests() - { - this.socketServer = new SocketServer(); - - this.tcpClient = new TcpClient(); - } - - protected override TcpClient Client => this.tcpClient; - - public void Dispose() - { - this.socketServer.Stop(); -#if NETFRAMEWORK - // tcpClient.Close() calls tcpClient.Dispose(). - this.tcpClient?.Close(); -#else - // tcpClient.Close() not available for netcoreapp1.0 - this.tcpClient?.Dispose(); -#endif - GC.SuppressFinalize(this); - } - - [TestMethod] - public async Task SocketServerStartShouldHostServer() - { - var connectionInfo = this.socketServer.Start(this.defaultConnection); - - Assert.IsFalse(string.IsNullOrEmpty(connectionInfo)); - await this.ConnectToServer(connectionInfo.GetIPEndPoint().Port); - Assert.IsTrue(this.tcpClient.Connected); - } - - [TestMethod] - public void SocketServerStopShouldStopListening() - { - var connectionInfo = this.socketServer.Start(this.defaultConnection); - - this.socketServer.Stop(); - - try - { - // This method throws ExtendedSocketException (which is private). It is not possible - // to use Assert.ThrowsException in this case. - this.ConnectToServer(connectionInfo.GetIPEndPoint().Port).GetAwaiter().GetResult(); - } - catch (SocketException) - { - } - } - - [TestMethod] - public void SocketServerStopShouldCloseClient() - { - ManualResetEvent waitEvent = new ManualResetEvent(false); - this.socketServer.Disconnected += (s, e) => { waitEvent.Set(); }; - this.SetupChannel(out ConnectedEventArgs clientConnected); - - this.socketServer.Stop(); - - waitEvent.WaitOne(); - Assert.ThrowsException(() => WriteData(this.tcpClient)); - } - - [TestMethod] - public void SocketServerStopShouldRaiseClientDisconnectedEventOnClientDisconnection() - { - DisconnectedEventArgs disconnected = null; - ManualResetEvent waitEvent = new ManualResetEvent(false); - this.socketServer.Disconnected += (s, e) => - { - disconnected = e; - waitEvent.Set(); - }; - this.SetupChannel(out ConnectedEventArgs clientConnected); - - this.socketServer.Stop(); - - waitEvent.WaitOne(); - Assert.IsNotNull(disconnected); - Assert.IsNull(disconnected.Error); - } - - [TestMethod] - public void SocketServerStopShouldCloseChannel() - { - var waitEvent = new ManualResetEventSlim(false); - var channel = this.SetupChannel(out ConnectedEventArgs clientConnected); - this.socketServer.Disconnected += (s, e) => { waitEvent.Set(); }; - - this.socketServer.Stop(); - - waitEvent.Wait(); - Assert.ThrowsException(() => channel.Send(DUMMYDATA)); - } - - [TestMethod] - public void SocketServerShouldRaiseClientDisconnectedEventIfConnectionIsBroken() - { - DisconnectedEventArgs clientDisconnected = null; - ManualResetEvent waitEvent = new ManualResetEvent(false); - this.socketServer.Disconnected += (sender, eventArgs) => - { - clientDisconnected = eventArgs; - waitEvent.Set(); - }; - var channel = this.SetupChannel(out ConnectedEventArgs clientConnected); - - channel.MessageReceived += (sender, args) => - { - }; - - // Close the client channel. Message loop should stop. -#if NETFRAMEWORK - // tcpClient.Close() calls tcpClient.Dispose(). - this.tcpClient?.Close(); -#else - // tcpClient.Close() not available for netcoreapp1.0 - this.tcpClient?.Dispose(); -#endif - Assert.IsTrue(waitEvent.WaitOne(1000)); - Assert.IsTrue(clientDisconnected.Error is IOException); - } - - [TestMethod] - public async Task SocketEndpointShouldInitializeChannelOnServerConnection() - { - var channel = this.SetupChannel(out ConnectedEventArgs _); - - await channel.Send(DUMMYDATA); - - Assert.AreEqual(DUMMYDATA, ReadData(this.Client)); - } - - protected override ICommunicationChannel SetupChannel(out ConnectedEventArgs connectedEvent) - { - ICommunicationChannel channel = null; - ConnectedEventArgs clientConnectedEvent = null; - ManualResetEvent waitEvent = new ManualResetEvent(false); - this.socketServer.Connected += (sender, eventArgs) => - { - clientConnectedEvent = eventArgs; - channel = eventArgs.Channel; - waitEvent.Set(); - }; - - var connectionInfo = this.socketServer.Start(this.defaultConnection); - var port = connectionInfo.GetIPEndPoint().Port; - this.ConnectToServer(port).GetAwaiter().GetResult(); - waitEvent.WaitOne(); - - connectedEvent = clientConnectedEvent; - return channel; - } - - private async Task ConnectToServer(int port) - { - await this.tcpClient.ConnectAsync(IPAddress.Loopback, port); - } - } -} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketTestsBase.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketTestsBase.cs deleted file mode 100644 index 575b1e3100..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketTestsBase.cs +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.CommunicationUtilities.PlatformTests -{ - using System.IO; - using System.Net.Sockets; - using System.Threading; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public abstract class SocketTestsBase - { - protected const string DUMMYDATA = "Dummy Data"; - protected const int TIMEOUT = 10 * 1000; - - protected abstract TcpClient Client { get; } - - [TestMethod] - public void SocketEndpointStartShouldRaiseServerConnectedEventOnServerConnection() - { - this.SetupChannel(out ConnectedEventArgs connectedEventArgs); - - Assert.IsNotNull(connectedEventArgs); - } - - [TestMethod] - public void SocketEndpointShouldNotifyChannelOnDataAvailable() - { - var message = string.Empty; - ManualResetEvent waitForMessage = new ManualResetEvent(false); - this.SetupChannel(out ConnectedEventArgs _).MessageReceived += (s, e) => - { - message = e.Data; - waitForMessage.Set(); - }; - - WriteData(this.Client); - - waitForMessage.WaitOne(); - Assert.AreEqual(DUMMYDATA, message); - } - - protected static string ReadData(TcpClient client) - { - using (BinaryReader reader = new BinaryReader(client.GetStream())) - { - return reader.ReadString(); - } - } - - protected static void WriteData(TcpClient client) - { - using (BinaryWriter writer = new BinaryWriter(client.GetStream())) - { - writer.Write(DUMMYDATA); - } - } - - protected abstract ICommunicationChannel SetupChannel(out ConnectedEventArgs connectedEventArgs); - } -} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestHandlerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestHandlerTests.cs index 98c6473770..ee056f0d9d 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestHandlerTests.cs @@ -1,427 +1,404 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; + +using Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollection; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Newtonsoft.Json.Linq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class DataCollectionRequestHandlerTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.IO; - using System.Linq; - using System.Net; - - using Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; - using Microsoft.VisualStudio.TestPlatform.Common.DataCollection; - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Serialization; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - using Newtonsoft.Json.Linq; - using VisualStudio.TestPlatform.CoreUtilities.Helpers; - - using CommunicationUtilitiesResources = Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Resources.Resources; - using CoreUtilitiesConstants = Microsoft.VisualStudio.TestPlatform.CoreUtilities.Constants; - - [TestClass] - public class DataCollectionRequestHandlerTests + private readonly Mock _mockCommunicationManager; + private readonly Mock _mockMessageSink; + private readonly Mock _mockDataCollectionManager; + private readonly Mock _mockDataCollectionTestCaseEventHandler; + private readonly TestableDataCollectionRequestHandler _requestHandler; + private readonly Mock _mockDataSerializer; + private readonly Mock _mockFileHelper; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Message _afterTestRunEnd = new() { MessageType = MessageType.AfterTestRunEnd, Payload = "false" }; + private readonly Message _beforeTestRunStart = new() { - private Mock mockCommunicationManager; - private Mock mockMessageSink; - private Mock mockDataCollectionManager; - private Mock mockDataCollectionTestCaseEventHandler; - private TestableDataCollectionRequestHandler requestHandler; - private Mock mockDataSerializer; - private Mock mockFileHelper; - private Mock mockRequestData; - private Mock mockMetricsCollection; - private Message afterTestRunEnd = new Message() { MessageType = MessageType.AfterTestRunEnd, Payload = "false" }; - private Message beforeTestRunStart = new Message() - { - MessageType = MessageType.BeforeTestRunStart, - Payload = JToken.FromObject(new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }) - }; + MessageType = MessageType.BeforeTestRunStart, + Payload = JToken.FromObject(new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }) + }; - public DataCollectionRequestHandlerTests() - { - this.mockCommunicationManager = new Mock(); - this.mockMessageSink = new Mock(); - this.mockDataCollectionManager = new Mock(); - this.mockDataSerializer = new Mock(); - this.mockDataCollectionTestCaseEventHandler = new Mock(); - this.mockDataCollectionTestCaseEventHandler.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); - this.mockFileHelper = new Mock(); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData.Setup(r => r.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.requestHandler = new TestableDataCollectionRequestHandler(this.mockCommunicationManager.Object, this.mockMessageSink.Object, this.mockDataCollectionManager.Object, this.mockDataCollectionTestCaseEventHandler.Object, this.mockDataSerializer.Object, this.mockFileHelper.Object, this.mockRequestData.Object); - - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(this.beforeTestRunStart).Returns(this.afterTestRunEnd); - - this.mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(true); - } - - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); - } + public DataCollectionRequestHandlerTests() + { + _mockCommunicationManager = new Mock(); + _mockMessageSink = new Mock(); + _mockDataCollectionManager = new Mock(); + _mockDataSerializer = new Mock(); + _mockDataCollectionTestCaseEventHandler = new Mock(); + _mockDataCollectionTestCaseEventHandler.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); + _mockFileHelper = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData.Setup(r => r.MetricsCollection).Returns(_mockMetricsCollection.Object); + _requestHandler = new TestableDataCollectionRequestHandler(_mockCommunicationManager.Object, _mockMessageSink.Object, _mockDataCollectionManager.Object, _mockDataCollectionTestCaseEventHandler.Object, _mockDataSerializer.Object, _mockFileHelper.Object, _mockRequestData.Object); + + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(_beforeTestRunStart).Returns(_afterTestRunEnd); + + _mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(true); + } - [TestMethod] - public void CreateInstanceShouldThrowExceptionIfInstanceCommunicationManagerIsNull() - { - Assert.ThrowsException(() => - { - DataCollectionRequestHandler.Create(null, this.mockMessageSink.Object); - }); - } + [TestCleanup] + public void Cleanup() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); + } - [TestMethod] - public void CreateInstanceShouldThrowExceptinIfInstanceMessageSinkIsNull() - { - Assert.ThrowsException(() => - { - DataCollectionRequestHandler.Create(this.mockCommunicationManager.Object, null); - }); - } + [TestMethod] + public void CreateInstanceShouldThrowExceptionIfInstanceCommunicationManagerIsNull() + { + Assert.ThrowsException(() => DataCollectionRequestHandler.Create(null!, _mockMessageSink.Object)); + } - [TestMethod] - public void CreateInstanceShouldCreateInstance() - { - var result = DataCollectionRequestHandler.Create(this.mockCommunicationManager.Object, this.mockMessageSink.Object); + [TestMethod] + public void CreateInstanceShouldThrowExceptinIfInstanceMessageSinkIsNull() + { + Assert.ThrowsException(() => DataCollectionRequestHandler.Create(_mockCommunicationManager.Object, null!)); + } - Assert.AreEqual(result, DataCollectionRequestHandler.Instance); - } + [TestMethod] + public void CreateInstanceShouldCreateInstance() + { + var result = DataCollectionRequestHandler.Create(_mockCommunicationManager.Object, _mockMessageSink.Object); - [TestMethod] - public void InitializeCommunicationShouldInitializeCommunication() - { - this.requestHandler.InitializeCommunication(123); + Assert.AreEqual(result, DataCollectionRequestHandler.Instance); + } - this.mockCommunicationManager.Verify(x => x.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 123)), Times.Once); - } + [TestMethod] + public void InitializeCommunicationShouldInitializeCommunication() + { + _requestHandler.InitializeCommunication(123); - [TestMethod] - public void InitializeCommunicationShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.SetupClientAsync(It.IsAny())).Throws(); + _mockCommunicationManager.Verify(x => x.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 123)), Times.Once); + } - Assert.ThrowsException(() => - { - this.requestHandler.InitializeCommunication(123); - }); - } + [TestMethod] + public void InitializeCommunicationShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.SetupClientAsync(It.IsAny())).Throws(); - [TestMethod] - public void WaitForRequestSenderConnectionShouldInvokeCommunicationManager() - { - this.requestHandler.WaitForRequestSenderConnection(0); + Assert.ThrowsException(() => _requestHandler.InitializeCommunication(123)); + } - this.mockCommunicationManager.Verify(x => x.WaitForServerConnection(It.IsAny()), Times.Once); - } + [TestMethod] + public void WaitForRequestSenderConnectionShouldInvokeCommunicationManager() + { + _requestHandler.WaitForRequestSenderConnection(0); - [TestMethod] - public void WaitForRequestSenderConnectionShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.WaitForServerConnection(It.IsAny())).Throws(); + _mockCommunicationManager.Verify(x => x.WaitForServerConnection(It.IsAny()), Times.Once); + } - Assert.ThrowsException(() => - { - this.requestHandler.WaitForRequestSenderConnection(0); - }); - } + [TestMethod] + public void WaitForRequestSenderConnectionShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.WaitForServerConnection(It.IsAny())).Throws(); - [TestMethod] - public void SendDataCollectionMessageShouldSendMessageToCommunicationManager() - { - var message = new DataCollectionMessageEventArgs(TestMessageLevel.Error, "message"); + Assert.ThrowsException(() => _requestHandler.WaitForRequestSenderConnection(0)); + } - this.requestHandler.SendDataCollectionMessage(message); + [TestMethod] + public void SendDataCollectionMessageShouldSendMessageToCommunicationManager() + { + var message = new DataCollectionMessageEventArgs(TestMessageLevel.Error, "message"); - this.mockCommunicationManager.Verify(x => x.SendMessage(MessageType.DataCollectionMessage, message), Times.Once); - } + _requestHandler.SendDataCollectionMessage(message); - [TestMethod] - public void SendDataCollectionMessageShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.SendMessage(MessageType.DataCollectionMessage, It.IsAny())).Throws(); - var message = new DataCollectionMessageEventArgs(TestMessageLevel.Error, "message"); + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.DataCollectionMessage, message), Times.Once); + } - Assert.ThrowsException(() => - { - this.requestHandler.SendDataCollectionMessage(message); - }); - } + [TestMethod] + public void SendDataCollectionMessageShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.SendMessage(MessageType.DataCollectionMessage, It.IsAny())).Throws(); + var message = new DataCollectionMessageEventArgs(TestMessageLevel.Error, "message"); - [TestMethod] - public void CloseShouldCloseCommunicationChannel() - { - this.requestHandler.Close(); + Assert.ThrowsException(() => _requestHandler.SendDataCollectionMessage(message)); + } - this.mockCommunicationManager.Verify(x => x.StopClient(), Times.Once); - } + [TestMethod] + public void CloseShouldCloseCommunicationChannel() + { + _requestHandler.Close(); - [TestMethod] - public void CloseShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.StopClient()).Throws(); + _mockCommunicationManager.Verify(x => x.StopClient(), Times.Once); + } - Assert.ThrowsException(() => - { - this.requestHandler.Close(); - }); - } + [TestMethod] + public void CloseShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.StopClient()).Throws(); - [TestMethod] - public void DisposeShouldCloseCommunicationChannel() - { - this.requestHandler.Dispose(); + Assert.ThrowsException(() => _requestHandler.Close()); + } - this.mockCommunicationManager.Verify(x => x.StopClient(), Times.Once); - } + [TestMethod] + public void DisposeShouldCloseCommunicationChannel() + { + _requestHandler.Dispose(); - [TestMethod] - public void ProcessRequestsShouldProcessRequests() - { - var testHostLaunchedPayload = new TestHostLaunchedPayload(); - testHostLaunchedPayload.ProcessId = 1234; + _mockCommunicationManager.Verify(x => x.StopClient(), Times.Once); + } - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(this.beforeTestRunStart) - .Returns(new Message() { MessageType = MessageType.TestHostLaunched, Payload = JToken.FromObject(testHostLaunchedPayload) }) - .Returns(this.afterTestRunEnd); + [TestMethod] + public void ProcessRequestsShouldProcessRequests() + { + var testHostLaunchedPayload = new TestHostLaunchedPayload(); + testHostLaunchedPayload.ProcessId = 1234; - this.mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(true); - this.mockDataCollectionManager.Setup(x => x.TestHostLaunched(It.IsAny())); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.TestHostLaunched))) - .Returns(testHostLaunchedPayload); - var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunSTartPayload); + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(_beforeTestRunStart) + .Returns(new Message() { MessageType = MessageType.TestHostLaunched, Payload = JToken.FromObject(testHostLaunchedPayload) }) + .Returns(_afterTestRunEnd); - this.requestHandler.ProcessRequests(); + _mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(true); + _mockDataCollectionManager.Setup(x => x.TestHostLaunched(It.IsAny())); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.TestHostLaunched))) + .Returns(testHostLaunchedPayload); + var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunSTartPayload); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.InitializeCommunication(), Times.Once); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.WaitForRequestHandlerConnection(It.IsAny()), Times.Once); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.ProcessRequests(), Times.Once); + _requestHandler.ProcessRequests(); - // Verify SessionStarted events - this.mockDataCollectionManager.Verify(x => x.SessionStarted(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(x => x.SendMessage(MessageType.BeforeTestRunStartResult, It.IsAny()), Times.Once); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.InitializeCommunication(), Times.Once); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.WaitForRequestHandlerConnection(It.IsAny()), Times.Once); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.ProcessRequests(), Times.Once); - // Verify TestHostLaunched events - this.mockDataCollectionManager.Verify(x => x.TestHostLaunched(1234), Times.Once); + // Verify SessionStarted events + _mockDataCollectionManager.Verify(x => x.SessionStarted(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.BeforeTestRunStartResult, It.IsAny()), Times.Once); - // Verify AfterTestRun events. - this.mockDataCollectionManager.Verify(x => x.SessionEnded(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(x => x.SendMessage(MessageType.AfterTestRunEndResult, It.IsAny()), Times.Once); - } + // Verify TestHostLaunched events + _mockDataCollectionManager.Verify(x => x.TestHostLaunched(1234), Times.Once); - [TestMethod] - public void ProcessRequestsShouldDisposeDataCollectorsOnAfterTestRunEnd() - { - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.AfterTestRunEnd, Payload = "false" }); + // Verify AfterTestRun events. + _mockDataCollectionManager.Verify(x => x.SessionEnded(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.AfterTestRunEndResult, It.IsAny()), Times.Once); + } - this.requestHandler.ProcessRequests(); + [TestMethod] + public void ProcessRequestsShouldDisposeDataCollectorsOnAfterTestRunEnd() + { + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.AfterTestRunEnd, Payload = "false" }); - this.mockDataCollectionManager.Verify(x => x.Dispose()); - } + _requestHandler.ProcessRequests(); - [TestMethod] - public void ProcessRequestsShouldAddSourceDirectoryToTestPluginCache() - { - var testHostLaunchedPayload = new TestHostLaunchedPayload(); - testHostLaunchedPayload.ProcessId = 1234; + _mockDataCollectionManager.Verify(x => x.Dispose()); + } - var temp = Path.GetTempPath(); - string runSettings = ""; + [TestMethod] + public void ProcessRequestsShouldAddSourceDirectoryToTestPluginCache() + { + var testHostLaunchedPayload = new TestHostLaunchedPayload(); + testHostLaunchedPayload.ProcessId = 1234; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(this.beforeTestRunStart) - .Returns(new Message() { MessageType = MessageType.TestHostLaunched, Payload = JToken.FromObject(testHostLaunchedPayload) }) - .Returns(this.afterTestRunEnd); + var temp = Path.GetTempPath(); + string runSettings = ""; - this.mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(true); - this.mockDataCollectionManager.Setup(x => x.TestHostLaunched(It.IsAny())); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.TestHostLaunched))) - .Returns(testHostLaunchedPayload); - var beforeTestRunSTartPayload = new BeforeTestRunStartPayload - { - SettingsXml = runSettings, - Sources = new List - { - Path.Combine(temp, "dir1", "test1.dll"), - Path.Combine(temp, "dir2", "test2.dll"), - Path.Combine(temp, "dir3", "test3.dll") - } - }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunSTartPayload); - this.mockFileHelper.Setup(x => x.DirectoryExists($@"{temp}dir1")).Returns(true); - this.mockFileHelper.Setup(x => x.EnumerateFiles($@"{temp}dir1", SearchOption.AllDirectories, @"Collector.dll")).Returns(new List { Path.Combine(temp, "dir1", "abc.DataCollector.dll") }); - - this.requestHandler.ProcessRequests(); - - this.mockFileHelper.Verify(x => x.EnumerateFiles($@"{temp}dir1", SearchOption.AllDirectories, @"Collector.dll"), Times.Once); - Assert.IsTrue(TestPluginCache.Instance.GetExtensionPaths(@"Collector.dll").Contains(Path.Combine(temp, "dir1", "abc.DataCollector.dll"))); - } - - [TestMethod] - public void ProcessRequestsShouldThrowExceptionIfThrownByCommunicationManager() + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(_beforeTestRunStart) + .Returns(new Message() { MessageType = MessageType.TestHostLaunched, Payload = JToken.FromObject(testHostLaunchedPayload) }) + .Returns(_afterTestRunEnd); + + _mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(true); + _mockDataCollectionManager.Setup(x => x.TestHostLaunched(It.IsAny())); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.TestHostLaunched))) + .Returns(testHostLaunchedPayload); + var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { - this.mockCommunicationManager.Setup(x => x.ReceiveMessage()).Throws(); + SettingsXml = runSettings, + Sources = new List + { + Path.Combine(temp, "dir1", "test1.dll"), + Path.Combine(temp, "dir2", "test2.dll"), + Path.Combine(temp, "dir3", "test3.dll") + } + }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunSTartPayload); + _mockFileHelper.Setup(x => x.DirectoryExists($@"{temp}dir1")).Returns(true); + _mockFileHelper.Setup(x => x.EnumerateFiles($@"{temp}dir1", SearchOption.AllDirectories, @"Collector.dll")).Returns(new List { Path.Combine(temp, "dir1", "abc.DataCollector.dll") }); - Assert.ThrowsException(() => { this.requestHandler.ProcessRequests(); }); - } + _requestHandler.ProcessRequests(); - [TestMethod] - public void ProcessRequestsShouldInitializeTestCaseEventHandlerIfTestCaseLevelEventsAreEnabled() - { - var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunSTartPayload); + _mockFileHelper.Verify(x => x.EnumerateFiles($@"{temp}dir1", SearchOption.AllDirectories, @"Collector.dll"), Times.Once); + Assert.IsTrue(TestPluginCache.Instance.GetExtensionPaths(@"Collector.dll").Contains(Path.Combine(temp, "dir1", "abc.DataCollector.dll"))); + } - this.requestHandler.ProcessRequests(); + [TestMethod] + public void ProcessRequestsShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.ReceiveMessage()).Throws(); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.InitializeCommunication(), Times.Once); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.ProcessRequests(), Times.Once); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.WaitForRequestHandlerConnection(It.IsAny()), Times.Once); - } + Assert.ThrowsException(() => _requestHandler.ProcessRequests()); + } - [TestMethod] - public void ProcessRequestsShouldSetDefaultTimeoutIfNoEnvVarialbeSet() - { - var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunSTartPayload); + [TestMethod] + public void ProcessRequestsShouldInitializeTestCaseEventHandlerIfTestCaseLevelEventsAreEnabled() + { + var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunSTartPayload); - this.requestHandler.ProcessRequests(); + _requestHandler.ProcessRequests(); - this.mockDataCollectionTestCaseEventHandler.Verify(h => h.WaitForRequestHandlerConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)); - } + _mockDataCollectionTestCaseEventHandler.Verify(x => x.InitializeCommunication(), Times.Once); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.ProcessRequests(), Times.Once); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.WaitForRequestHandlerConnection(It.IsAny()), Times.Once); + } - [TestMethod] - public void ProcessRequestsShouldSetTimeoutBasedOnEnvVariable() - { - var timeout = 10; - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, timeout.ToString()); - var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunSTartPayload); + [TestMethod] + public void ProcessRequestsShouldSetDefaultTimeoutIfNoEnvVarialbeSet() + { + var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunSTartPayload); - this.requestHandler.ProcessRequests(); + _requestHandler.ProcessRequests(); - this.mockDataCollectionTestCaseEventHandler.Verify(h => h.WaitForRequestHandlerConnection(timeout * 1000)); - } + _mockDataCollectionTestCaseEventHandler.Verify(h => h.WaitForRequestHandlerConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)); + } - [TestMethod] - public void ProcessRequestsShouldNotInitializeTestCaseEventHandlerIfTestCaseLevelEventsAreNotEnabled() - { - this.mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(false); - var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunSTartPayload); + [TestMethod] + public void ProcessRequestsShouldSetTimeoutBasedOnEnvVariable() + { + var timeout = 10; + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, timeout.ToString(CultureInfo.InvariantCulture)); + var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunSTartPayload); - this.requestHandler.ProcessRequests(); + _requestHandler.ProcessRequests(); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.InitializeCommunication(), Times.Never); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.ProcessRequests(), Times.Never); - this.mockDataCollectionTestCaseEventHandler.Verify(x => x.WaitForRequestHandlerConnection(It.IsAny()), Times.Never); - } + _mockDataCollectionTestCaseEventHandler.Verify(h => h.WaitForRequestHandlerConnection(timeout * 1000)); + } - [TestMethod] - public void ProcessRequestsShouldReceiveCorrectPayloadInBeforeTestRunStart() - { - var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunStartPayload); - var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(this.afterTestRunEnd); - this.requestHandler.ProcessRequests(); - - this.mockDataSerializer.Verify(x => x.DeserializePayload(message), Times.Once); - } - - [TestMethod] - public void ProcessRequestShouldInitializeDataCollectorsWithCorrectSettings() - { - var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunStartPayload); - var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(this.afterTestRunEnd); - this.requestHandler.ProcessRequests(); - - this.mockDataCollectionManager.Verify(x => x.InitializeDataCollectors("settingsxml"), Times.Once); - } - - [TestMethod] - public void ProcessRequestShouldCallSessionStartWithCorrectTestSources() - { - var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" } }; - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunStartPayload); - var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(this.afterTestRunEnd); - this.requestHandler.ProcessRequests(); - - this.mockDataCollectionManager.Verify(x => x.SessionStarted(It.Is( - y => y.GetPropertyValue>("TestSources").Contains("test1.dll") && - y.GetPropertyValue>("TestSources").Contains("test2.dll")))); - } - - [TestMethod] - public void ProcessRequestShouldEnableTelemetry() - { - var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" }, IsTelemetryOptedIn = true }; - this.mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(false); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunStartPayload); - var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(this.afterTestRunEnd); - this.requestHandler.ProcessRequests(); - - this.mockRequestData.VerifySet(r => r.IsTelemetryOptedIn = true); - this.mockRequestData.VerifySet(r => r.MetricsCollection = It.IsAny()); - } - - [TestMethod] - public void ProcessRequestShouldNotEnableTelemetryIfTelemetryEnabled() - { - var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" }, IsTelemetryOptedIn = true }; - this.mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(true); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunStartPayload); - var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(this.afterTestRunEnd); - this.requestHandler.ProcessRequests(); - - this.mockRequestData.VerifySet(r => r.IsTelemetryOptedIn = It.IsAny(), Times.Never); - this.mockRequestData.VerifySet(r => r.MetricsCollection = It.IsAny(), Times.Never); - } - - [TestMethod] - public void ProcessRequestShouldNotEnableTelemetryIfTelemetryEnablingNotRequested() - { - var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" }, IsTelemetryOptedIn = false }; - this.mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(false); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) - .Returns(beforeTestRunStartPayload); - var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(this.afterTestRunEnd); - this.requestHandler.ProcessRequests(); - - this.mockRequestData.VerifySet(r => r.IsTelemetryOptedIn = It.IsAny(), Times.Never); - this.mockRequestData.VerifySet(r => r.MetricsCollection = It.IsAny(), Times.Never); - } + [TestMethod] + public void ProcessRequestsShouldNotInitializeTestCaseEventHandlerIfTestCaseLevelEventsAreNotEnabled() + { + _mockDataCollectionManager.Setup(x => x.SessionStarted(It.IsAny())).Returns(false); + var beforeTestRunSTartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunSTartPayload); + + _requestHandler.ProcessRequests(); + + _mockDataCollectionTestCaseEventHandler.Verify(x => x.InitializeCommunication(), Times.Never); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.ProcessRequests(), Times.Never); + _mockDataCollectionTestCaseEventHandler.Verify(x => x.WaitForRequestHandlerConnection(It.IsAny()), Times.Never); + } + + [TestMethod] + public void ProcessRequestsShouldReceiveCorrectPayloadInBeforeTestRunStart() + { + var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunStartPayload); + var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(_afterTestRunEnd); + _requestHandler.ProcessRequests(); + + _mockDataSerializer.Verify(x => x.DeserializePayload(message), Times.Once); + } + + [TestMethod] + public void ProcessRequestShouldInitializeDataCollectorsWithCorrectSettings() + { + var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunStartPayload); + var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(_afterTestRunEnd); + _requestHandler.ProcessRequests(); + + _mockDataCollectionManager.Verify(x => x.InitializeDataCollectors("settingsxml"), Times.Once); + } + + [TestMethod] + public void ProcessRequestShouldCallSessionStartWithCorrectTestSources() + { + var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" } }; + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunStartPayload); + var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(_afterTestRunEnd); + _requestHandler.ProcessRequests(); + + _mockDataCollectionManager.Verify(x => x.SessionStarted(It.Is( + y => y.GetPropertyValue>("TestSources")!.Contains("test1.dll") && + y.GetPropertyValue>("TestSources")!.Contains("test2.dll")))); + } + + [TestMethod] + public void ProcessRequestShouldEnableTelemetry() + { + var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" }, IsTelemetryOptedIn = true }; + _mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(false); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunStartPayload); + var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(_afterTestRunEnd); + _requestHandler.ProcessRequests(); + + _mockRequestData.VerifySet(r => r.IsTelemetryOptedIn = true); + _mockRequestData.VerifySet(r => r.MetricsCollection = It.IsAny()); + } + + [TestMethod] + public void ProcessRequestShouldNotEnableTelemetryIfTelemetryEnabled() + { + var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" }, IsTelemetryOptedIn = true }; + _mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(true); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunStartPayload); + var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(_afterTestRunEnd); + _requestHandler.ProcessRequests(); + + _mockRequestData.VerifySet(r => r.IsTelemetryOptedIn = It.IsAny(), Times.Never); + _mockRequestData.VerifySet(r => r.MetricsCollection = It.IsAny(), Times.Never); + } + + [TestMethod] + public void ProcessRequestShouldNotEnableTelemetryIfTelemetryEnablingNotRequested() + { + var beforeTestRunStartPayload = new BeforeTestRunStartPayload { SettingsXml = "settingsxml", Sources = new List { "test1.dll", "test2.dll" }, IsTelemetryOptedIn = false }; + _mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(false); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.Is(y => y.MessageType == MessageType.BeforeTestRunStart))) + .Returns(beforeTestRunStartPayload); + var message = new Message() { MessageType = MessageType.BeforeTestRunStart, Payload = JToken.FromObject(beforeTestRunStartPayload) }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(_afterTestRunEnd); + _requestHandler.ProcessRequests(); + + _mockRequestData.VerifySet(r => r.IsTelemetryOptedIn = It.IsAny(), Times.Never); + _mockRequestData.VerifySet(r => r.MetricsCollection = It.IsAny(), Times.Never); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestSenderTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestSenderTests.cs index 1e1c9cca49..311230f716 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestSenderTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionRequestSenderTests.cs @@ -1,77 +1,159 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class DataCollectionRequestSenderTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Common.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class DataCollectionRequestSenderTests + private readonly Mock _mockCommunicationManager; + private readonly DataCollectionRequestSender _requestSender; + private readonly Mock _mockDataSerializer; + + public DataCollectionRequestSenderTests() + { + _mockCommunicationManager = new Mock(); + _mockDataSerializer = new Mock(); + _requestSender = new DataCollectionRequestSender(_mockCommunicationManager.Object, _mockDataSerializer.Object); + } + + [TestMethod] + public void SendAfterTestRunEndAndGetResultShouldReturnAttachments() + { + var datacollectorUri = new Uri("my://custom/datacollector"); + var attachmentUri = new Uri("my://filename.txt"); + var displayName = "CustomDataCollector"; + var rawMessage1 = "rawMessage1"; + var rawMessage2 = "rawMessage2"; + var attachment = new AttachmentSet(datacollectorUri, displayName); + attachment.Attachments.Add(new UriDataAttachment(attachmentUri, "filename.txt")); + var invokedDataCollector = new InvokedDataCollector(datacollectorUri, displayName, typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())).Returns( + new AfterTestRunEndResult([attachment], new Collection() { invokedDataCollector }, new Dictionary())); + _mockCommunicationManager.SetupSequence(x => x.ReceiveRawMessage()).Returns(rawMessage1).Returns(rawMessage2); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage1)).Returns(new Message() { MessageType = MessageType.TelemetryEventMessage, Payload = null }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage2)).Returns(new Message() { MessageType = MessageType.AfterTestRunEndResult, Payload = null }); + + var result = _requestSender.SendAfterTestRunEndAndGetResult(null, false); + + Assert.IsNotNull(result); + Assert.IsNotNull(result.AttachmentSets); + Assert.IsNotNull(result.AttachmentSets); + Assert.IsNotNull(result.Metrics); + Assert.AreEqual(1, result.AttachmentSets.Count); + Assert.AreEqual(1, result.InvokedDataCollectors!.Count); + Assert.AreEqual(0, result.Metrics.Count); + Assert.IsNotNull(result.AttachmentSets[0]); + Assert.AreEqual(displayName, result.AttachmentSets[0].DisplayName); + Assert.AreEqual(datacollectorUri, result.AttachmentSets[0].Uri); + Assert.AreEqual(attachmentUri, result.AttachmentSets[0].Attachments[0].Uri); + Assert.IsNotNull(result.InvokedDataCollectors[0]); + Assert.AreEqual(datacollectorUri, result.InvokedDataCollectors[0].Uri); + Assert.AreEqual(invokedDataCollector.FilePath, result.InvokedDataCollectors[0].FilePath); + Assert.AreEqual(invokedDataCollector.AssemblyQualifiedName, result.InvokedDataCollectors[0].AssemblyQualifiedName); + } + + [TestMethod] + public void SendAfterTestRunEndAndGetResultShouldReturnAttachmentsAndPropagateTelemetry() + { + var datacollectorUri = new Uri("my://custom/datacollector"); + var attachmentUri = new Uri("my://filename.txt"); + var displayName = "CustomDataCollector"; + var rawMessage1 = "rawMessage1"; + var rawMessage2 = "rawMessage2"; + var attachment = new AttachmentSet(datacollectorUri, displayName); + attachment.Attachments.Add(new UriDataAttachment(attachmentUri, "filename.txt")); + var invokedDataCollector = new InvokedDataCollector(datacollectorUri, displayName, typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())).Returns( + new AfterTestRunEndResult([attachment], new Collection() { invokedDataCollector }, new Dictionary())); + _mockCommunicationManager.SetupSequence(x => x.ReceiveRawMessage()).Returns(rawMessage1).Returns(rawMessage2); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage1)).Returns(new Message() { MessageType = MessageType.TelemetryEventMessage, Payload = null }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage2)).Returns(new Message() { MessageType = MessageType.AfterTestRunEndResult, Payload = null }); + var handlerMock = new Mock(); + + var result = _requestSender.SendAfterTestRunEndAndGetResult(handlerMock.Object, false); + + Assert.IsNotNull(result); + Assert.IsNotNull(result.AttachmentSets); + Assert.IsNotNull(result.AttachmentSets); + Assert.IsNotNull(result.Metrics); + Assert.AreEqual(1, result.AttachmentSets.Count); + Assert.AreEqual(1, result.InvokedDataCollectors!.Count); + Assert.AreEqual(0, result.Metrics.Count); + Assert.IsNotNull(result.AttachmentSets[0]); + Assert.AreEqual(displayName, result.AttachmentSets[0].DisplayName); + Assert.AreEqual(datacollectorUri, result.AttachmentSets[0].Uri); + Assert.AreEqual(attachmentUri, result.AttachmentSets[0].Attachments[0].Uri); + Assert.IsNotNull(result.InvokedDataCollectors[0]); + Assert.AreEqual(datacollectorUri, result.InvokedDataCollectors[0].Uri); + Assert.AreEqual(invokedDataCollector.FilePath, result.InvokedDataCollectors[0].FilePath); + Assert.AreEqual(invokedDataCollector.AssemblyQualifiedName, result.InvokedDataCollectors[0].AssemblyQualifiedName); + + handlerMock.Verify(h => h.HandleRawMessage(rawMessage1)); + } + + [TestMethod] + public void SendAfterTestRunEndAndGetResultShouldNotReturnAttachmentsWhenRequestCancelled() + { + var attachmentSets = _requestSender.SendAfterTestRunEndAndGetResult(null, true); + + Assert.IsNull(attachmentSets); + } + + [TestMethod] + public void SendBeforeTestRunStartAndGetResultShouldSendBeforeTestRunStartMessageAndPayload() + { + var rawMessage = "rawMessage"; + var testSources = new List() { "test1.dll" }; + _mockCommunicationManager.Setup(x => x.ReceiveRawMessage()).Returns(rawMessage); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage)).Returns(new Message() { MessageType = MessageType.BeforeTestRunStartResult, Payload = null }); + _requestSender.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, true, null); + + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.BeforeTestRunStart, It.Is(p => p.SettingsXml == string.Empty && p.IsTelemetryOptedIn))); + } + + [TestMethod] + public void SendBeforeTestRunStartAndGetResultShouldSendRawMessageIfTelemetry() + { + var rawMessage1 = "rawMessage1"; + var rawMessage2 = "rawMessage2"; + var testSources = new List() { "test1.dll" }; + var handlerMock = new Mock(); + _mockCommunicationManager.SetupSequence(x => x.ReceiveRawMessage()).Returns(rawMessage1).Returns(rawMessage2); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage1)).Returns(new Message() { MessageType = MessageType.TelemetryEventMessage, Payload = null }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage2)).Returns(new Message() { MessageType = MessageType.BeforeTestRunStartResult, Payload = null }); + _requestSender.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, true, handlerMock.Object); + + handlerMock.Verify(x => x.HandleRawMessage(rawMessage1)); + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.BeforeTestRunStart, It.Is(p => p.SettingsXml == string.Empty && p.IsTelemetryOptedIn))); + } + + [TestMethod] + public void SendBeforeTestRunStartAndGetResultShouldNotSendRawMessageIfTelemetryAndNoHandler() { - private Mock mockCommunicationManager; - private DataCollectionRequestSender requestSender; - private Mock mockDataSerializer; - - public DataCollectionRequestSenderTests() - { - this.mockCommunicationManager = new Mock(); - this.mockDataSerializer = new Mock(); - this.requestSender = new DataCollectionRequestSender(this.mockCommunicationManager.Object, this.mockDataSerializer.Object); - } - - [TestMethod] - public void SendAfterTestRunEndAndGetResultShouldReturnAttachments() - { - var datacollectorUri = new Uri("my://custom/datacollector"); - var attachmentUri = new Uri("my://filename.txt"); - var displayName = "CustomDataCollector"; - var attachment = new AttachmentSet(datacollectorUri, displayName); - attachment.Attachments.Add(new UriDataAttachment(attachmentUri, "filename.txt")); - - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())).Returns( - new AfterTestRunEndResult(new Collection() { attachment }, new Dictionary())); - this.mockCommunicationManager.Setup(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.AfterTestRunEndResult, Payload = null }); - - var result = this.requestSender.SendAfterTestRunEndAndGetResult(null, false); - - Assert.IsNotNull(result); - Assert.IsNotNull(result.AttachmentSets); - Assert.IsNotNull(result.Metrics); - Assert.AreEqual(1, result.AttachmentSets.Count); - Assert.AreEqual(0, result.Metrics.Count); - Assert.IsNotNull(result.AttachmentSets[0]); - Assert.AreEqual(displayName, result.AttachmentSets[0].DisplayName); - Assert.AreEqual(datacollectorUri, result.AttachmentSets[0].Uri); - Assert.AreEqual(attachmentUri, result.AttachmentSets[0].Attachments[0].Uri); - } - - [TestMethod] - public void SendAfterTestRunEndAndGetResultShouldNotReturnAttachmentsWhenRequestCancelled() - { - var attachmentSets = this.requestSender.SendAfterTestRunEndAndGetResult(null, true); - - Assert.IsNull(attachmentSets); - } - - [TestMethod] - public void SendBeforeTestRunStartAndGetResultShouldSendBeforeTestRunStartMessageAndPayload() - { - var testSources = new List() { "test1.dll" }; - this.mockCommunicationManager.Setup(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.BeforeTestRunStartResult, Payload = null }); - this.requestSender.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, true, null); - - this.mockCommunicationManager.Verify(x => x.SendMessage(MessageType.BeforeTestRunStart, It.Is(p => p.SettingsXml == string.Empty && p.IsTelemetryOptedIn))); - } + var rawMessage1 = "rawMessage1"; + var rawMessage2 = "rawMessage2"; + var testSources = new List() { "test1.dll" }; + _mockCommunicationManager.SetupSequence(x => x.ReceiveRawMessage()).Returns(rawMessage1).Returns(rawMessage2); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage1)).Returns(new Message() { MessageType = MessageType.TelemetryEventMessage, Payload = null }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(rawMessage2)).Returns(new Message() { MessageType = MessageType.BeforeTestRunStartResult, Payload = null }); + _requestSender.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, true, null); + + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.BeforeTestRunStart, It.Is(p => p.SettingsXml == string.Empty && p.IsTelemetryOptedIn))); } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventHandlerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventHandlerTests.cs index 9955ae315b..15db3a0b47 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventHandlerTests.cs @@ -1,152 +1,146 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests +using System; +using System.Collections.ObjectModel; +using System.Net; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Newtonsoft.Json.Linq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class DataCollectionTestCaseEventHandlerTests { - using System; - using System.Collections.ObjectModel; - using System.Net; + private readonly Mock _mockCommunicationManager; + private readonly Mock _mockDataCollectionManager; + private readonly DataCollectionTestCaseEventHandler _requestHandler; + private readonly Mock _dataSerializer; + private readonly Mock _messageSink; + + public DataCollectionTestCaseEventHandlerTests() + { + _mockCommunicationManager = new Mock(); + _mockDataCollectionManager = new Mock(); + _dataSerializer = new Mock(); + _messageSink = new Mock(); + _requestHandler = new DataCollectionTestCaseEventHandler(_messageSink.Object, _mockCommunicationManager.Object, new Mock().Object, _dataSerializer.Object); + } + + [TestMethod] + public void InitializeShouldInitializeConnection() + { + _mockCommunicationManager.Setup(x => x.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, 1)); + _requestHandler.InitializeCommunication(); + + _mockCommunicationManager.Verify(x => x.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(x => x.AcceptClientAsync(), Times.Once); + } + + [TestMethod] + public void InitializeShouldThrowExceptionIfExceptionIsThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Throws(); + Assert.ThrowsException(() => _requestHandler.InitializeCommunication()); + } + + [TestMethod] + public void WaitForRequestHandlerConnectionShouldWaitForConnectionToBeCompleted() + { + _mockCommunicationManager.Setup(x => x.WaitForClientConnection(It.IsAny())).Returns(true); + + var result = _requestHandler.WaitForRequestHandlerConnection(10); + + Assert.IsTrue(result); + } + + [TestMethod] + public void WaitForRequestHandlerConnectionShouldThrowExceptionIfThrownByConnectionManager() + { + _mockCommunicationManager.Setup(x => x.WaitForClientConnection(It.IsAny())).Throws(); + + Assert.ThrowsException(() => _requestHandler.WaitForRequestHandlerConnection(10)); + } - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void CloseShouldStopServer() + { + _requestHandler.Close(); + + _mockCommunicationManager.Verify(x => x.StopServer(), Times.Once); + } + + [TestMethod] + public void CloseShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.StopServer()).Throws(); + + Assert.ThrowsException( + () => _requestHandler.Close()); + } + + [TestMethod] + public void CloseShouldNotThrowExceptionIfCommunicationManagerIsNull() + { + var requestHandler = new DataCollectionTestCaseEventHandler(_messageSink.Object, null!, new Mock().Object, _dataSerializer.Object); + + requestHandler.Close(); + + _mockCommunicationManager.Verify(x => x.StopServer(), Times.Never); + } - using Moq; + [TestMethod] + public void ProcessRequestsShouldProcessBeforeTestCaseStartEvent() + { + var message = new Message(); + message.MessageType = MessageType.DataCollectionTestStart; + message.Payload = JToken.FromObject(new TestCaseEndEventArgs()); + + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(new Message() { MessageType = MessageType.SessionEnd, Payload = "false" }); + + var requestHandler = new DataCollectionTestCaseEventHandler(_messageSink.Object, _mockCommunicationManager.Object, _mockDataCollectionManager.Object, _dataSerializer.Object); + _dataSerializer.Setup(x => x.DeserializePayload(message)).Returns(new TestCaseStartEventArgs()); + + requestHandler.ProcessRequests(); + + _mockDataCollectionManager.Verify(x => x.TestCaseStarted(It.IsAny()), Times.Once); + } - using Newtonsoft.Json.Linq; + [TestMethod] + public void ProcessRequestsShouldProcessAfterTestCaseCompleteEvent() + { + var message = new Message(); + message.MessageType = MessageType.DataCollectionTestEnd; + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + message.Payload = JToken.FromObject(new TestResultEventArgs(new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase))); + + _mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(new Message() { MessageType = MessageType.SessionEnd, Payload = "false" }); + + var requestHandler = new DataCollectionTestCaseEventHandler(_messageSink.Object, _mockCommunicationManager.Object, _mockDataCollectionManager.Object, _dataSerializer.Object); + _dataSerializer.Setup(x => x.DeserializePayload(message)).Returns(new TestCaseEndEventArgs()); + + requestHandler.ProcessRequests(); + + _mockDataCollectionManager.Verify(x => x.TestCaseEnded(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.DataCollectionTestEndResult, It.IsAny>())); + } - [TestClass] - public class DataCollectionTestCaseEventHandlerTests + [TestMethod] + public void ProcessRequestsShouldThrowExceptionIfThrownByCommunicationManager() { - private Mock mockCommunicationManager; - private Mock mockDataCollectionManager; - private DataCollectionTestCaseEventHandler requestHandler; - private Mock dataSerializer; - - public DataCollectionTestCaseEventHandlerTests() - { - this.mockCommunicationManager = new Mock(); - this.mockDataCollectionManager = new Mock(); - this.dataSerializer = new Mock(); - this.requestHandler = new DataCollectionTestCaseEventHandler(this.mockCommunicationManager.Object, new Mock().Object, this.dataSerializer.Object); - } - - [TestMethod] - public void InitializeShouldInitializeConnection() - { - this.mockCommunicationManager.Setup(x => x.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, 1)); - this.requestHandler.InitializeCommunication(); - - this.mockCommunicationManager.Verify(x => x.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(x => x.AcceptClientAsync(), Times.Once); - } - - [TestMethod] - public void InitializeShouldThrowExceptionIfExceptionIsThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Throws(); - Assert.ThrowsException(() => - { - this.requestHandler.InitializeCommunication(); - }); - } - - [TestMethod] - public void WaitForRequestHandlerConnectionShouldWaitForConnectionToBeCompleted() - { - this.mockCommunicationManager.Setup(x => x.WaitForClientConnection(It.IsAny())).Returns(true); - - var result = this.requestHandler.WaitForRequestHandlerConnection(10); - - Assert.IsTrue(result); - } - - [TestMethod] - public void WaitForRequestHandlerConnectionShouldThrowExceptionIfThrownByConnectionManager() - { - this.mockCommunicationManager.Setup(x => x.WaitForClientConnection(It.IsAny())).Throws(); - - Assert.ThrowsException(() => - { - this.requestHandler.WaitForRequestHandlerConnection(10); - }); - } - - [TestMethod] - public void CloseShouldStopServer() - { - this.requestHandler.Close(); - - this.mockCommunicationManager.Verify(x => x.StopServer(), Times.Once); - } - - [TestMethod] - public void CloseShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.StopServer()).Throws(); - - Assert.ThrowsException( - () => - { - this.requestHandler.Close(); - }); - } - - [TestMethod] - public void CloseShouldNotThrowExceptionIfCommunicationManagerIsNull() - { - var requestHandler = new DataCollectionTestCaseEventHandler(null, new Mock().Object, this.dataSerializer.Object); - - requestHandler.Close(); - - this.mockCommunicationManager.Verify(x => x.StopServer(), Times.Never); - } - - [TestMethod] - public void ProcessRequestsShouldProcessBeforeTestCaseStartEvent() - { - var message = new Message(); - message.MessageType = MessageType.DataCollectionTestStart; - message.Payload = JToken.FromObject(new TestCaseEndEventArgs()); - - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(new Message() { MessageType = MessageType.SessionEnd, Payload = "false" }); - - var requestHandler = new DataCollectionTestCaseEventHandler(this.mockCommunicationManager.Object, this.mockDataCollectionManager.Object, this.dataSerializer.Object); - - requestHandler.ProcessRequests(); - - this.mockDataCollectionManager.Verify(x => x.TestCaseStarted(It.IsAny()), Times.Once); - } - - [TestMethod] - public void ProcessRequestsShouldProcessAfterTestCaseCompleteEvent() - { - var message = new Message(); - message.MessageType = MessageType.DataCollectionTestEnd; - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - message.Payload = JToken.FromObject(new TestResultEventArgs(new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase))); - - this.mockCommunicationManager.SetupSequence(x => x.ReceiveMessage()).Returns(message).Returns(new Message() { MessageType = MessageType.SessionEnd, Payload = "false" }); - - var requestHandler = new DataCollectionTestCaseEventHandler(this.mockCommunicationManager.Object, this.mockDataCollectionManager.Object, this.dataSerializer.Object); - - requestHandler.ProcessRequests(); - - this.mockDataCollectionManager.Verify(x => x.TestCaseEnded(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(x => x.SendMessage(MessageType.DataCollectionTestEndResult, It.IsAny>())); - } - - [TestMethod] - public void ProcessRequestsShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.ReceiveMessage()).Throws(); + _mockCommunicationManager.Setup(x => x.ReceiveMessage()).Throws(); - Assert.ThrowsException(() => { this.requestHandler.ProcessRequests(); }); - } + Assert.ThrowsException(() => _requestHandler.ProcessRequests()); } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventSenderTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventSenderTests.cs index 3dbba20aef..7d1808ecc9 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventSenderTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/DataCollectionTestCaseEventSenderTests.cs @@ -1,141 +1,125 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests +using System; +using System.Collections.ObjectModel; +using System.Net; + +using Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Newtonsoft.Json.Linq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class DataCollectionTestCaseEventSenderTests { - using System; - using System.Collections.ObjectModel; - using System.Net; + private readonly DataCollectionTestCaseEventSender _dataCollectionTestCaseEventSender; + private readonly Mock _mockCommunicationManager; + private readonly TestCase _testCase = new("hello", new Uri("world://how"), "1.dll"); + + public DataCollectionTestCaseEventSenderTests() + { + _mockCommunicationManager = new Mock(); + _dataCollectionTestCaseEventSender = new TestableDataCollectionTestCaseEventSender(_mockCommunicationManager.Object, JsonDataSerializer.Instance); + } + + [TestMethod] + public void InitializeShouldInitializeCommunicationManager() + { + _dataCollectionTestCaseEventSender.InitializeCommunication(123); + + _mockCommunicationManager.Verify(x => x.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 123)), Times.Once); + } + + [TestMethod] + public void InitializeShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.SetupClientAsync(It.IsAny())).Throws(); + + Assert.ThrowsException(() => _dataCollectionTestCaseEventSender.InitializeCommunication(123)); + } + + [TestMethod] + public void WaitForRequestSenderConnectionShouldInvokeWaitForServerConnection() + { + _dataCollectionTestCaseEventSender.WaitForRequestSenderConnection(123); + + _mockCommunicationManager.Verify(x => x.WaitForServerConnection(It.IsAny()), Times.Once); + } + + [TestMethod] + public void WaitForRequestSenderConnectionShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.WaitForServerConnection(It.IsAny())).Throws(); - using Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; + Assert.ThrowsException(() => _dataCollectionTestCaseEventSender.WaitForRequestSenderConnection(123)); + } + + [TestMethod] + public void CloseShouldDisposeCommunicationManager() + { + _dataCollectionTestCaseEventSender.Close(); + + _mockCommunicationManager.Verify(x => x.StopClient(), Times.Once); + } + + [TestMethod] + public void CloseShouldThrowExceptionIfThrownByCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.StopClient()).Throws(); + + Assert.ThrowsException(() => _dataCollectionTestCaseEventSender.Close()); + } + + [TestMethod] + public void SendTestCaseStartShouldSendMessageThroughCommunicationManager() + { + _mockCommunicationManager.Setup(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.DataCollectionTestStartAck }); + var testcaseStartEventArgs = new TestCaseStartEventArgs(_testCase); + _dataCollectionTestCaseEventSender.SendTestCaseStart(testcaseStartEventArgs); - using Moq; + _mockCommunicationManager.Verify(x => x.SendMessage(MessageType.DataCollectionTestStart, testcaseStartEventArgs), Times.Once); + _mockCommunicationManager.Verify(x => x.ReceiveMessage(), Times.Once); + } + + [TestMethod] + public void SendTestCaseStartShouldThrowExceptionIfThrownByCommunicationManager() + { + var testcaseStartEventArgs = new TestCaseStartEventArgs(_testCase); + _mockCommunicationManager.Setup(x => x.SendMessage(MessageType.DataCollectionTestStart, testcaseStartEventArgs)).Throws(); - using Newtonsoft.Json.Linq; + Assert.ThrowsException(() => _dataCollectionTestCaseEventSender.SendTestCaseStart(testcaseStartEventArgs)); + } - [TestClass] - public class DataCollectionTestCaseEventSenderTests + [TestMethod] + public void SendTestCaseEndShouldReturnAttachments() { - private DataCollectionTestCaseEventSender dataCollectionTestCaseEventSender; - private Mock mockCommunicationManager; - private TestCase testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - - public DataCollectionTestCaseEventSenderTests() - { - this.mockCommunicationManager = new Mock(); - this.dataCollectionTestCaseEventSender = new TestableDataCollectionTestCaseEventSender(this.mockCommunicationManager.Object, JsonDataSerializer.Instance); - } - - [TestMethod] - public void InitializeShouldInitializeCommunicationManager() - { - this.dataCollectionTestCaseEventSender.InitializeCommunication(123); - - this.mockCommunicationManager.Verify(x => x.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 123)), Times.Once); - } - - [TestMethod] - public void InitializeShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.SetupClientAsync(It.IsAny())).Throws(); - - Assert.ThrowsException(() => - { - this.dataCollectionTestCaseEventSender.InitializeCommunication(123); - }); - } - - [TestMethod] - public void WaitForRequestSenderConnectionShouldInvokeWaitForServerConnection() - { - this.dataCollectionTestCaseEventSender.WaitForRequestSenderConnection(123); - - this.mockCommunicationManager.Verify(x => x.WaitForServerConnection(It.IsAny()), Times.Once); - } - - [TestMethod] - public void WaitForRequestSenderConnectionShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.WaitForServerConnection(It.IsAny())).Throws(); - - Assert.ThrowsException(() => - { - this.dataCollectionTestCaseEventSender.WaitForRequestSenderConnection(123); - }); - } - - [TestMethod] - public void CloseShouldDisposeCommunicationManager() - { - this.dataCollectionTestCaseEventSender.Close(); - - this.mockCommunicationManager.Verify(x => x.StopClient(), Times.Once); - } - - [TestMethod] - public void CloseShouldThrowExceptionIfThrownByCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.StopClient()).Throws(); - - Assert.ThrowsException(() => - { - this.dataCollectionTestCaseEventSender.Close(); - }); - } - - [TestMethod] - public void SendTestCaseStartShouldSendMessageThroughCommunicationManager() - { - this.mockCommunicationManager.Setup(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.DataCollectionTestStartAck }); - var testcaseStartEventArgs = new TestCaseStartEventArgs(this.testCase); - this.dataCollectionTestCaseEventSender.SendTestCaseStart(testcaseStartEventArgs); - - this.mockCommunicationManager.Verify(x => x.SendMessage(MessageType.DataCollectionTestStart, testcaseStartEventArgs), Times.Once); - this.mockCommunicationManager.Verify(x => x.ReceiveMessage(), Times.Once); - } - - [TestMethod] - public void SendTestCaseStartShouldThrowExceptionIfThrownByCommunicationManager() - { - var testcaseStartEventArgs = new TestCaseStartEventArgs(this.testCase); - this.mockCommunicationManager.Setup(x => x.SendMessage(MessageType.DataCollectionTestStart, testcaseStartEventArgs)).Throws(); - - Assert.ThrowsException(() => - { - this.dataCollectionTestCaseEventSender.SendTestCaseStart(testcaseStartEventArgs); - }); - } - - [TestMethod] - public void SendTestCaseEndShouldReturnAttachments() - { - var testCaseEndEventArgs = new TestCaseEndEventArgs(); - - var attachmentSet = new AttachmentSet(new Uri("my://attachment"), "displayname"); - this.mockCommunicationManager.Setup(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.DataCollectionTestEndResult, Payload = JToken.FromObject(new Collection() { attachmentSet }) }); - var attachments = this.dataCollectionTestCaseEventSender.SendTestCaseEnd(testCaseEndEventArgs); - - Assert.AreEqual(attachments[0].Uri, attachmentSet.Uri); - Assert.AreEqual(attachments[0].DisplayName, attachmentSet.DisplayName); - } - - [TestMethod] - public void SendTestCaseCompletedShouldThrowExceptionIfThrownByCommunicationManager() - { - var testCaseEndEventArgs = new TestCaseEndEventArgs(); - - this.mockCommunicationManager.Setup(x => x.SendMessage(MessageType.DataCollectionTestEnd, It.IsAny())).Throws(); - - Assert.ThrowsException(() => - { - this.dataCollectionTestCaseEventSender.SendTestCaseEnd(testCaseEndEventArgs); - }); - } + var testCaseEndEventArgs = new TestCaseEndEventArgs(); + + var attachmentSet = new AttachmentSet(new Uri("my://attachment"), "displayname"); + _mockCommunicationManager.Setup(x => x.ReceiveMessage()).Returns(new Message() { MessageType = MessageType.DataCollectionTestEndResult, Payload = JToken.FromObject(new Collection() { attachmentSet }) }); + var attachments = _dataCollectionTestCaseEventSender.SendTestCaseEnd(testCaseEndEventArgs)!; + + Assert.AreEqual(attachments[0].Uri, attachmentSet.Uri); + Assert.AreEqual(attachments[0].DisplayName, attachmentSet.DisplayName); + } + + [TestMethod] + public void SendTestCaseCompletedShouldThrowExceptionIfThrownByCommunicationManager() + { + var testCaseEndEventArgs = new TestCaseEndEventArgs(); + + _mockCommunicationManager.Setup(x => x.SendMessage(MessageType.DataCollectionTestEnd, It.IsAny())).Throws(); + + Assert.ThrowsException(() => _dataCollectionTestCaseEventSender.SendTestCaseEnd(testCaseEndEventArgs)); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/JsonDataSerializerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/JsonDataSerializerTests.cs index ee44f8eefa..fed8fb3d84 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/JsonDataSerializerTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/JsonDataSerializerTests.cs @@ -1,179 +1,263 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests +using System; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class JsonDataSerializerTests { - using System; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Newtonsoft.Json; - using Newtonsoft.Json.Serialization; - using VisualStudio.TestPlatform.ObjectModel; - using TestResult = VisualStudio.TestPlatform.ObjectModel.TestResult; - - [TestClass] - public class JsonDataSerializerTests + private readonly JsonDataSerializer _jsonDataSerializer; + + public JsonDataSerializerTests() { - private JsonDataSerializer jsonDataSerializer; + _jsonDataSerializer = JsonDataSerializer.Instance; + } - public JsonDataSerializerTests() + [TestMethod] + [DataRow(0)] + [DataRow(1)] + [DataRow(2)] + [DataRow(3)] + [DataRow(4)] + [DataRow(5)] + [DataRow(6)] + [DataRow(7)] + public void SerializePayloadShouldNotPickDefaultSettings(int version) + { + JsonConvert.DefaultSettings = () => new JsonSerializerSettings { - this.jsonDataSerializer = JsonDataSerializer.Instance; - } + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new SnakeCaseNamingStrategy() + }, + PreserveReferencesHandling = PreserveReferencesHandling.All, + }; - [TestMethod] - public void SerializePayloadShouldNotPickDefaultSettings() + var classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(null); + classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(classWithSelfReferencingLoop); + classWithSelfReferencingLoop.InfiniteReference!.InfiniteReference = classWithSelfReferencingLoop; + + string serializedPayload = _jsonDataSerializer.SerializePayload("dummy", classWithSelfReferencingLoop, version); + if (version <= 1) { - JsonConvert.DefaultSettings = () => new JsonSerializerSettings - { - ContractResolver = new DefaultContractResolver - { - NamingStrategy = new SnakeCaseNamingStrategy() - } - }; - - var classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(null); - classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(classWithSelfReferencingLoop); - classWithSelfReferencingLoop.InfiniteRefernce.InfiniteRefernce = classWithSelfReferencingLoop; - - string serializedPayload = this.jsonDataSerializer.SerializePayload("dummy", classWithSelfReferencingLoop); - Assert.AreEqual("{\"MessageType\":\"dummy\",\"Payload\":{\"InfiniteRefernce\":{}}}", serializedPayload); + Assert.AreEqual("{\"MessageType\":\"dummy\",\"Payload\":{\"InfiniteReference\":{}}}", serializedPayload); } - - [TestMethod] - public void DeserializeMessageShouldNotPickDefaultSettings() + else { - JsonConvert.DefaultSettings = () => new JsonSerializerSettings - { - ContractResolver = new DefaultContractResolver - { - NamingStrategy = new SnakeCaseNamingStrategy() - } - }; - - Message message = this.jsonDataSerializer.DeserializeMessage("{\"MessageType\":\"dummy\",\"Payload\":{\"InfiniteRefernce\":{}}}"); - Assert.AreEqual("dummy", message?.MessageType); + Assert.AreEqual($"{{\"Version\":{version},\"MessageType\":\"dummy\",\"Payload\":{{\"InfiniteReference\":{{}}}}}}", serializedPayload); } - [TestMethod] - public void SerializePayloadShouldSerializeAnObjectWithSelfReferencingLoop() + JsonConvert.DefaultSettings = null; + } + + [TestMethod] + public void DeserializeMessageShouldNotPickDefaultSettings() + { + JsonConvert.DefaultSettings = () => new JsonSerializerSettings { - var classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(null); - classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(classWithSelfReferencingLoop); - classWithSelfReferencingLoop.InfiniteRefernce.InfiniteRefernce = classWithSelfReferencingLoop; + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new SnakeCaseNamingStrategy() + }, + PreserveReferencesHandling = PreserveReferencesHandling.All, + }; + + Message message = _jsonDataSerializer.DeserializeMessage("{\"MessageType\":\"dummy\",\"Payload\":{\"InfiniteReference\":{}}}"); + Assert.AreEqual("dummy", message?.MessageType); + JsonConvert.DefaultSettings = null; + } - // This line should not throw exception - this.jsonDataSerializer.SerializePayload("dummy", classWithSelfReferencingLoop); - } - [TestMethod] - public void DeserializeShouldDeserializeAnObjectWhichHadSelfReferencingLoopBeforeSerialization() + [TestMethod] + [DataRow(0)] + [DataRow(1)] + [DataRow(2)] + [DataRow(3)] + [DataRow(4)] + [DataRow(5)] + [DataRow(6)] + [DataRow(7)] + + public void SerializePayloadIsUnaffectedByJsonConverterDefaultSettings(int version) + { + + Assert.IsNull(JsonConvert.DefaultSettings); + //todo: how to check feature flag + var completeArgs = new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero); + var payload = new TestRunCompletePayload { TestRunCompleteArgs = completeArgs }; + + JsonConvert.DefaultSettings = () => { - var classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(null); - classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(classWithSelfReferencingLoop); - classWithSelfReferencingLoop.InfiniteRefernce.InfiniteRefernce = classWithSelfReferencingLoop; + //restore the default settings to null + JsonConvert.DefaultSettings = null; + Assert.Fail("Should Not Access DefaultSettings"); + return new(); + }; - var json = this.jsonDataSerializer.SerializePayload("dummy", classWithSelfReferencingLoop); + var withDefaultSettingUpdated = JsonDataSerializer.Instance.SerializePayload(MessageType.ExecutionComplete, payload, version); - // This line should deserialize properly - var result = this.jsonDataSerializer.Deserialize(json, 1); + //restore the default settings to null + JsonConvert.DefaultSettings = null; + } - Assert.AreEqual(typeof(ClassWithSelfReferencingLoop), result.GetType()); - Assert.IsNull(result.InfiniteRefernce); - } + [TestMethod] + [DataRow(0)] + [DataRow(1)] + [DataRow(2)] + [DataRow(3)] + [DataRow(4)] + [DataRow(5)] + [DataRow(6)] + [DataRow(7)] + public void DeserializePayloadIsUnaffectedByJsonConverterDefaultSettings(int version) + { + + Assert.IsNull(JsonConvert.DefaultSettings, "If this is not null some other test didn't clean up its default setti0ngs"); - [TestMethod] - public void CloneShouldReturnNullForNull() + JsonConvert.DefaultSettings = () => { - var clonedTestCase = this.jsonDataSerializer.Clone(null); + //restore the default settings to null + JsonConvert.DefaultSettings = null; + Assert.Fail("Should Not Access DefaultSettings"); + return new(); + }; - Assert.IsNull(clonedTestCase); - } + // This line should deserialize properly + Message message = _jsonDataSerializer.DeserializeMessage($"{{\"Version\":\"{version}\",\"MessageType\":\"dummy\",\"Payload\":{{\"InfiniteReference\":{{}}}}}}"); - [TestMethod] - public void CloneShouldWorkForValueType() - { - var i = 2; - var clonedI = this.jsonDataSerializer.Clone(i); - Assert.AreEqual(clonedI, i); - } + //restore the default settings to null + JsonConvert.DefaultSettings = null; + } - [TestMethod] - public void CloneShouldCloneTestCaseObject() - { - var testCase = JsonDataSerializerTests.GetSampleTestCase(out var expectedTrait); - var clonedTestCase = this.jsonDataSerializer.Clone(testCase); + [TestMethod] + public void SerializePayloadShouldSerializeAnObjectWithSelfReferencingLoop() + { + var classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(null); + classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(classWithSelfReferencingLoop); + classWithSelfReferencingLoop.InfiniteReference!.InfiniteReference = classWithSelfReferencingLoop; - VerifyTestCaseClone(clonedTestCase, testCase, expectedTrait); - } + // This line should not throw exception + _jsonDataSerializer.SerializePayload("dummy", classWithSelfReferencingLoop); + } - [TestMethod] - public void CloneShouldCloneTestResultsObject() - { - var testCase = JsonDataSerializerTests.GetSampleTestCase(out var expectedTrait); + [TestMethod] + public void DeserializeShouldDeserializeAnObjectWhichHadSelfReferencingLoopBeforeSerialization() + { + var classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(null); + classWithSelfReferencingLoop = new ClassWithSelfReferencingLoop(classWithSelfReferencingLoop); + classWithSelfReferencingLoop.InfiniteReference!.InfiniteReference = classWithSelfReferencingLoop; - var testResult = new TestResult(testCase); + var json = _jsonDataSerializer.SerializePayload("dummy", classWithSelfReferencingLoop); - var startTime = DateTimeOffset.UtcNow; - testResult.StartTime = startTime; + // This line should deserialize properly + var result = _jsonDataSerializer.Deserialize(json, 1)!; - var clonedTestResult = this.jsonDataSerializer.Clone(testResult); + Assert.AreEqual(typeof(ClassWithSelfReferencingLoop), result.GetType()); + Assert.IsNull(result.InfiniteReference); + } - Assert.IsFalse(ReferenceEquals(testResult, clonedTestResult)); + [TestMethod] + public void CloneShouldReturnNullForNull() + { + var clonedTestCase = _jsonDataSerializer.Clone(null!); - Assert.AreEqual(testResult.StartTime, clonedTestResult.StartTime); + Assert.IsNull(clonedTestCase); + } - VerifyTestCaseClone(testResult.TestCase, clonedTestResult.TestCase, expectedTrait); - } + [TestMethod] + public void CloneShouldWorkForValueType() + { + var i = 2; + var clonedI = _jsonDataSerializer.Clone(i); - private static TestCase GetSampleTestCase(out Trait expectedTrait) - { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + Assert.AreEqual(clonedI, i); + } + + [TestMethod] + public void CloneShouldCloneTestCaseObject() + { + var testCase = GetSampleTestCase(out var expectedTrait); - expectedTrait = new Trait("TraitName1", "TraitValue1"); + var clonedTestCase = _jsonDataSerializer.Clone(testCase)!; - testCase.Traits.Add(expectedTrait); - return testCase; - } + VerifyTestCaseClone(clonedTestCase, testCase, expectedTrait); + } - private static void VerifyTestCaseClone(TestCase clonedTestCase, TestCase testCase, Trait expectedTrait) - { - Assert.IsFalse(ReferenceEquals(clonedTestCase, testCase)); + [TestMethod] + public void CloneShouldCloneTestResultsObject() + { + var testCase = GetSampleTestCase(out var expectedTrait); - Assert.AreEqual(testCase.FullyQualifiedName, clonedTestCase.FullyQualifiedName); - Assert.IsFalse(ReferenceEquals(testCase.FullyQualifiedName, clonedTestCase.FullyQualifiedName)); + var testResult = new TestResult(testCase); - Assert.AreEqual(testCase.ExecutorUri, clonedTestCase.ExecutorUri); - Assert.IsFalse(ReferenceEquals(testCase.ExecutorUri, clonedTestCase.ExecutorUri)); + var startTime = DateTimeOffset.UtcNow; + testResult.StartTime = startTime; - Assert.AreEqual(testCase.Source, clonedTestCase.Source); - Assert.IsFalse(ReferenceEquals(testCase.Source, clonedTestCase.Source)); + var clonedTestResult = _jsonDataSerializer.Clone(testResult)!; - Assert.AreEqual(1, clonedTestCase.Traits.Count()); + Assert.IsFalse(ReferenceEquals(testResult, clonedTestResult)); - foreach (var trait in clonedTestCase.Traits) - { - Assert.IsFalse(ReferenceEquals(expectedTrait, trait)); - Assert.AreEqual(expectedTrait.Name, trait.Name); - Assert.AreEqual(expectedTrait.Value, trait.Value); - } - } + Assert.AreEqual(testResult.StartTime, clonedTestResult.StartTime); + + VerifyTestCaseClone(testResult.TestCase, clonedTestResult.TestCase, expectedTrait); + } - public class ClassWithSelfReferencingLoop + private static TestCase GetSampleTestCase(out Trait expectedTrait) + { + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + + expectedTrait = new Trait("TraitName1", "TraitValue1"); + + testCase.Traits.Add(expectedTrait); + return testCase; + } + + private static void VerifyTestCaseClone(TestCase clonedTestCase, TestCase testCase, Trait expectedTrait) + { + Assert.IsFalse(ReferenceEquals(clonedTestCase, testCase)); + + Assert.AreEqual(testCase.FullyQualifiedName, clonedTestCase.FullyQualifiedName); + Assert.IsFalse(ReferenceEquals(testCase.FullyQualifiedName, clonedTestCase.FullyQualifiedName)); + + Assert.AreEqual(testCase.ExecutorUri, clonedTestCase.ExecutorUri); + Assert.IsFalse(ReferenceEquals(testCase.ExecutorUri, clonedTestCase.ExecutorUri)); + + Assert.AreEqual(testCase.Source, clonedTestCase.Source); + Assert.IsFalse(ReferenceEquals(testCase.Source, clonedTestCase.Source)); + + Assert.AreEqual(1, clonedTestCase.Traits.Count()); + + foreach (var trait in clonedTestCase.Traits) { - public ClassWithSelfReferencingLoop(ClassWithSelfReferencingLoop ir) - { - this.InfiniteRefernce = ir; - } + Assert.IsFalse(ReferenceEquals(expectedTrait, trait)); + Assert.AreEqual(expectedTrait.Name, trait.Name); + Assert.AreEqual(expectedTrait.Value, trait.Value); + } + } - public ClassWithSelfReferencingLoop InfiniteRefernce - { - get; - set; - } + public class ClassWithSelfReferencingLoop + { + public ClassWithSelfReferencingLoop(ClassWithSelfReferencingLoop? ir) + { + InfiniteReference = ir; } + + public ClassWithSelfReferencingLoop? InfiniteReference { get; set; } } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/LengthPrefixCommunicationChannelTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/LengthPrefixCommunicationChannelTests.cs index 21c23451cc..92d65f9115 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/LengthPrefixCommunicationChannelTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/LengthPrefixCommunicationChannelTests.cs @@ -1,170 +1,176 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.UnitTests -{ - using System; - using System.IO; - using System.Threading.Tasks; +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - [TestClass] - public class LengthPrefixCommunicationChannelTests : IDisposable - { - private const string DUMMYDATA = "Dummy Data"; +using Microsoft.VisualStudio.TestTools.UnitTesting; - private readonly ICommunicationChannel channel; +namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.UnitTests; - private readonly MemoryStream stream; +[TestClass] +public class LengthPrefixCommunicationChannelTests : IDisposable +{ + private const string Dummydata = "Dummy Data"; - private readonly BinaryReader reader; + private readonly ICommunicationChannel _channel; - private readonly BinaryWriter writer; + private readonly MemoryStream _stream; - public LengthPrefixCommunicationChannelTests() - { - this.stream = new MemoryStream(); - this.channel = new LengthPrefixCommunicationChannel(this.stream); + private readonly BinaryReader _reader; - this.reader = new BinaryReader(this.stream); - this.writer = new BinaryWriter(this.stream); - } + private readonly BinaryWriter _writer; - public void Dispose() - { - this.stream.Dispose(); + public LengthPrefixCommunicationChannelTests() + { + _stream = new MemoryStream(); + _channel = new LengthPrefixCommunicationChannel(_stream); - this.reader.Dispose(); - this.writer.Dispose(); - GC.SuppressFinalize(this); - } + _reader = new BinaryReader(_stream); + _writer = new BinaryWriter(_stream); + } - [TestMethod] - public async Task SendShouldWriteTheDataOnStream() - { - await this.channel.Send(DUMMYDATA); + public void Dispose() + { + _stream.Dispose(); - SeekToBeginning(this.stream); - Assert.AreEqual(DUMMYDATA, this.reader.ReadString()); - } + _reader.Dispose(); + _writer.Dispose(); + GC.SuppressFinalize(this); + } - [TestMethod] - public async Task SendShouldWriteInLengthPrefixedFormat() - { - await this.channel.Send(DUMMYDATA); + [TestMethod] + public async Task SendShouldWriteTheDataOnStream() + { + await _channel.Send(Dummydata); - SeekToBeginning(this.stream); - Assert.AreEqual(DUMMYDATA.Length, Read7BitEncodedInt(this.reader)); - } + SeekToBeginning(_stream); + Assert.AreEqual(Dummydata, _reader.ReadString()); + } - [TestMethod] - public async Task SendShouldBeAbleToWriteUnicodeData() - { - // Every day is a good day - var utf8Data = "日日是好日"; - await this.channel.Send(utf8Data); + [TestMethod] + public async Task SendShouldWriteInLengthPrefixedFormat() + { + await _channel.Send(Dummydata); - SeekToBeginning(this.stream); - Assert.AreEqual(utf8Data, this.reader.ReadString()); - } + SeekToBeginning(_stream); + Assert.AreEqual(Dummydata.Length, Read7BitEncodedInt(_reader)); + } - [TestMethod] - public async Task SendShouldFlushTheStream() - { - // A buffered stream doesn't immediately flush, it waits until buffer is filled in - using (var bufferedStream = new BufferedStream(this.stream, 2048)) - { - var communicationChannel = new LengthPrefixCommunicationChannel(bufferedStream); + [TestMethod] + public async Task SendShouldBeAbleToWriteUnicodeData() + { + // Every day is a good day + var utf8Data = "日日是好日"; + await _channel.Send(utf8Data); - await communicationChannel.Send("a"); + SeekToBeginning(_stream); + Assert.AreEqual(utf8Data, _reader.ReadString()); + } - SeekToBeginning(this.stream); - Assert.AreEqual("a", this.reader.ReadString()); - } - } + [TestMethod] + public async Task SendShouldFlushTheStream() + { + // A buffered stream doesn't immediately flush, it waits until buffer is filled in + using var bufferedStream = new BufferedStream(_stream, 2048); + var communicationChannel = new LengthPrefixCommunicationChannel(bufferedStream); - [TestMethod] - public void SendShouldThrowIfChannelIsDisconnected() - { - this.stream.Dispose(); + await communicationChannel.Send("a"); - Assert.ThrowsException(() => this.channel.Send(DUMMYDATA).Wait()); - } + SeekToBeginning(_stream); + Assert.AreEqual("a", _reader.ReadString()); + } - [TestMethod] - public async Task MessageReceivedShouldProvideDataOverStream() - { - var data = string.Empty; - this.channel.MessageReceived += (sender, messageEventArgs) => - { - data = messageEventArgs.Data; - }; - this.writer.Write(DUMMYDATA); - SeekToBeginning(this.stream); + [TestMethod] + public async Task MessageReceivedShouldProvideDataOverStream() + { + var data = string.Empty; + _channel.MessageReceived.Subscribe((sender, messageEventArgs) => data = messageEventArgs.Data); + _writer.Write(Dummydata); + SeekToBeginning(_stream); - await this.channel.NotifyDataAvailable(); + await _channel.NotifyDataAvailable(new CancellationToken()); - Assert.AreEqual(DUMMYDATA, data); - } + Assert.AreEqual(Dummydata, data); + } - [TestMethod] - public async Task NotifyDataAvailableShouldNotReadStreamIfNoListenersAreRegistered() - { - this.writer.Write(DUMMYDATA); - SeekToBeginning(this.stream); + [TestMethod] + public async Task NotifyDataAvailableShouldNotReadStreamIfNoListenersAreRegistered() + { + _writer.Write(Dummydata); + SeekToBeginning(_stream); - await this.channel.NotifyDataAvailable(); + await _channel.NotifyDataAvailable(new CancellationToken()); - // Data is read irrespective of listeners. See note in NotifyDataAvailable - // implementation. - Assert.AreEqual(0, this.stream.Position); - } + // Data is read irrespective of listeners. See note in NotifyDataAvailable + // implementation. + Assert.AreEqual(0, _stream.Position); + } - [TestMethod] - public void DisposeShouldNotCloseTheStream() - { - this.channel.Dispose(); + [TestMethod] + public void DisposeShouldNotCloseTheStream() + { + _channel.Dispose(); - // Should throw if stream is disposed. - Assert.IsTrue(this.stream.CanWrite); - } + // Should throw if stream is disposed. + Assert.IsTrue(_stream.CanWrite); + } - // TODO - // WriteFromMultilpleThreadShouldBeInSequence - private static void SeekToBeginning(Stream stream) - { - stream.Seek(0, SeekOrigin.Begin); - } + [TestMethod] + public async Task DoNotFailWhenWritingOnADisposedBaseStream() + { + // Dispose base stream + _stream.Dispose(); + await _channel.Send(Dummydata); + } + + [TestMethod] + public async Task DoNotFailWhenReadingFromADisposedBaseStream() + { + var data = string.Empty; + _channel.MessageReceived.Subscribe((sender, messageEventArgs) => data = messageEventArgs.Data); + // Dispose base stream + _stream.Dispose(); + await _channel.NotifyDataAvailable(new CancellationToken()); + } - private static int Read7BitEncodedInt(BinaryReader reader) + // TODO + // WriteFromMultilpleThreadShouldBeInSequence + private static void SeekToBeginning(Stream stream) + { + stream.Seek(0, SeekOrigin.Begin); + } + + private static int Read7BitEncodedInt(BinaryReader reader) + { + // Copied from BinaryReader.Read7BitEncodedInt + // https://referencesource.microsoft.com/#mscorlib/system/io/binaryreader.cs,f30b8b6e8ca06e0f + // Read out an Int32 7 bits at a time. The high bit + // of the byte when on means to continue reading more bytes. + int count = 0; + int shift = 0; + byte b; + do { - // Copied from BinaryReader.Read7BitEncodedInt - // https://referencesource.microsoft.com/#mscorlib/system/io/binaryreader.cs,f30b8b6e8ca06e0f - // Read out an Int32 7 bits at a time. The high bit - // of the byte when on means to continue reading more bytes. - int count = 0; - int shift = 0; - byte b; - do + // Check for a corrupted stream. Read a max of 5 bytes. + // In a future version, add a DataFormatException. + // 5 bytes max per Int32, shift += 7 + if (shift == 5 * 7) { - // Check for a corrupted stream. Read a max of 5 bytes. - // In a future version, add a DataFormatException. - // 5 bytes max per Int32, shift += 7 - if (shift == 5 * 7) - { - throw new FormatException("Format_Bad7BitInt32"); - } - - // ReadByte handles end of stream cases for us. - b = reader.ReadByte(); - count |= (b & 0x7F) << shift; - shift += 7; + throw new FormatException("Format_Bad7BitInt32"); } - while ((b & 0x80) != 0); - return count; + // ReadByte handles end of stream cases for us. + b = reader.ReadByte(); + count |= (b & 0x7F) << shift; + shift += 7; } + while ((b & 0x80) != 0); + + return count; } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.UnitTests.csproj b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.UnitTests.csproj index 77cbe1b6c6..5d883492d2 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Microsoft.TestPlatform.CommunicationUtilities.UnitTests.csproj @@ -1,23 +1,20 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.CommunicationUtilities.UnitTests - true - + - + diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestDiscoveryEventHandlerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestDiscoveryEventHandlerTests.cs index a80953beb7..05a8daa530 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestDiscoveryEventHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestDiscoveryEventHandlerTests.cs @@ -1,58 +1,57 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.ObjectModel +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.ObjectModel; + +[TestClass] +public class TestDiscoveryEventHandlerTests { - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class TestDiscoveryEventHandlerTests + private readonly Mock _mockClient; + private readonly TestDiscoveryEventHandler _testDiscoveryEventHandler; + + public TestDiscoveryEventHandlerTests() + { + _mockClient = new Mock(); + _testDiscoveryEventHandler = new TestDiscoveryEventHandler(_mockClient.Object); + } + + [TestMethod] + public void HandleDiscoveredTestShouldSendTestCasesToClient() + { + _testDiscoveryEventHandler.HandleDiscoveredTests(null!); + _mockClient.Verify(th => th.SendTestCases(null!), Times.Once); + } + + [TestMethod] + public void HandleDiscoveryCompleteShouldInformClient() { - private Mock mockClient; - private TestDiscoveryEventHandler testDiscoveryEventHandler; - - [TestInitialize] - public void InitializeTests() - { - this.mockClient = new Mock(); - this.testDiscoveryEventHandler = new TestDiscoveryEventHandler(this.mockClient.Object); - } - - [TestMethod] - public void HandleDiscoveredTestShouldSendTestCasesToClient() - { - this.testDiscoveryEventHandler.HandleDiscoveredTests(null); - this.mockClient.Verify(th => th.SendTestCases(null), Times.Once); - } - - [TestMethod] - public void HandleDiscoveryCompleteShouldInformClient() - { - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(0, false); - - this.testDiscoveryEventHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, null); - this.mockClient.Verify(th => th.DiscoveryComplete(discoveryCompleteEventArgs, null), Times.Once); - } - - [TestMethod] - public void HandleDiscoveryCompleteShouldNotSendASeparateTestFoundMessageToClient() - { - this.testDiscoveryEventHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(0, false), null); - - this.mockClient.Verify(th => th.SendTestCases(null), Times.Never); - } - - [TestMethod] - public void HandleDiscoveryMessageShouldSendMessageToClient() - { - this.testDiscoveryEventHandler.HandleLogMessage(TestMessageLevel.Informational, string.Empty); - - this.mockClient.Verify(th => th.SendLog(TestMessageLevel.Informational, string.Empty), Times.AtLeast(1)); - } + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(0, false); + + _testDiscoveryEventHandler.HandleDiscoveryComplete(discoveryCompleteEventArgs, null); + _mockClient.Verify(th => th.DiscoveryComplete(discoveryCompleteEventArgs, null), Times.Once); + } + + [TestMethod] + public void HandleDiscoveryCompleteShouldNotSendASeparateTestFoundMessageToClient() + { + _testDiscoveryEventHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(0, false), null); + + _mockClient.Verify(th => th.SendTestCases(null!), Times.Never); + } + + [TestMethod] + public void HandleDiscoveryMessageShouldSendMessageToClient() + { + _testDiscoveryEventHandler.HandleLogMessage(TestMessageLevel.Informational, string.Empty); + + _mockClient.Verify(th => th.SendLog(TestMessageLevel.Informational, string.Empty), Times.AtLeast(1)); } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestRunEventsHandlerTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestRunEventsHandlerTests.cs index cb3bff2154..58ba0c3bfd 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestRunEventsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/ObjectModel/TestRunEventsHandlerTests.cs @@ -1,48 +1,46 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.ObjectModel +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.EventHandlers; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.ObjectModel; + +[TestClass] +public class TestRunEventsHandlerTests { - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.EventHandlers; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly Mock _mockClient; + private readonly TestRunEventsHandler _testRunEventHandler; + + public TestRunEventsHandlerTests() + { + _mockClient = new Mock(); + _testRunEventHandler = new TestRunEventsHandler(_mockClient.Object); + } - using Moq; + [TestMethod] + public void HandleTestRunStatsChangeShouldSendTestRunStatisticsToClient() + { + _testRunEventHandler.HandleTestRunStatsChange(null!); + _mockClient.Verify(th => th.SendTestRunStatistics(null!), Times.Once); + } + + [TestMethod] + public void HandleTestRunCompleteShouldInformClient() + { + _testRunEventHandler.HandleTestRunComplete(null!, null!, null!, null!); + _mockClient.Verify(th => th.SendExecutionComplete(null!, null!, null!, null!), Times.Once); + } - [TestClass] - public class TestRunEventsHandlerTests + [TestMethod] + public void HandleTestRunMessageShouldSendMessageToClient() { - private Mock mockClient; - private TestRunEventsHandler testRunEventHandler; - - [TestInitialize] - public void InitializeTests() - { - this.mockClient = new Mock(); - this.testRunEventHandler = new TestRunEventsHandler(this.mockClient.Object); - } - - [TestMethod] - public void HandleTestRunStatsChangeShouldSendTestRunStatisticsToClient() - { - this.testRunEventHandler.HandleTestRunStatsChange(null); - this.mockClient.Verify(th => th.SendTestRunStatistics(null), Times.Once); - } - - [TestMethod] - public void HandleTestRunCompleteShouldInformClient() - { - this.testRunEventHandler.HandleTestRunComplete(null, null, null, null); - this.mockClient.Verify(th => th.SendExecutionComplete(null, null, null, null), Times.Once); - } - - [TestMethod] - public void HandleTestRunMessageShouldSendMessageToClient() - { - this.testRunEventHandler.HandleLogMessage(TestMessageLevel.Informational, string.Empty); - - this.mockClient.Verify(th => th.SendLog(TestMessageLevel.Informational, string.Empty), Times.AtLeast(1)); - } + _testRunEventHandler.HandleLogMessage(TestMessageLevel.Informational, string.Empty); + + _mockClient.Verify(th => th.SendLog(TestMessageLevel.Informational, string.Empty), Times.AtLeast(1)); } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Program.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Program.cs deleted file mode 100644 index f480e8b5e2..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index cbcdde9cd4..0000000000 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestPlatform.CommunicationUtilities.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5e3cbec8-e52e-4fb1-a0d2-01f75e33721d")] diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestCaseSerializationTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestCaseSerializationTests.cs index 7a276ea487..6205d5b415 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestCaseSerializationTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestCaseSerializationTests.cs @@ -1,277 +1,274 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.Serialization +using System; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.Serialization; + +[TestClass] +public class TestCaseSerializationTests { - using System; - using System.Linq; + private static readonly TestCase TestCase = new( + "sampleTestClass.sampleTestCase", + new Uri("executor://sampleTestExecutor"), + "sampleTest.dll") + { + CodeFilePath = "/user/src/testFile.cs", + DisplayName = "sampleTestCase", + Id = new Guid("be78d6fc-61b0-4882-9d07-40d796fd96ce"), + LineNumber = 999, + Traits = { new Trait("Priority", "0"), new Trait("Category", "unit") } + }; + + #region v1 Tests + + [TestMethod] + public void TestCaseJsonShouldContainAllPropertiesOnSerialization() + { + var json = Serialize(TestCase); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + dynamic properties = data["Properties"]; + + Assert.AreEqual("TestCase.FullyQualifiedName", properties[0]["Key"]["Id"].Value); + Assert.AreEqual("sampleTestClass.sampleTestCase", properties[0]["Value"].Value); + Assert.AreEqual("TestCase.ExecutorUri", properties[1]["Key"]["Id"].Value); + Assert.AreEqual("executor://sampleTestExecutor", properties[1]["Value"].Value); + Assert.AreEqual("TestCase.Source", properties[2]["Key"]["Id"].Value); + Assert.AreEqual("sampleTest.dll", properties[2]["Value"].Value); + Assert.AreEqual("TestCase.CodeFilePath", properties[3]["Key"]["Id"].Value); + Assert.AreEqual("/user/src/testFile.cs", properties[3]["Value"].Value); + Assert.AreEqual("TestCase.DisplayName", properties[4]["Key"]["Id"].Value); + Assert.AreEqual("sampleTestCase", properties[4]["Value"].Value); + Assert.AreEqual("TestCase.Id", properties[5]["Key"]["Id"].Value); + Assert.AreEqual("be78d6fc-61b0-4882-9d07-40d796fd96ce", properties[5]["Value"].Value); + Assert.AreEqual("TestCase.LineNumber", properties[6]["Key"]["Id"].Value); + Assert.AreEqual(999, properties[6]["Value"].Value); + + // Traits require special handling with TestPlatformContract resolver. It should be null without it. + Assert.AreEqual("TestObject.Traits", properties[7]["Key"]["Id"].Value); + Assert.IsNotNull(properties[7]["Value"]); + } - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void TestCaseObjectShouldContainAllPropertiesOnDeserialization() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"}," + + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"}," + + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}," + + "{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"/user/src/testFile.cs\"}," + + "{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestCase\"}," + + "{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"be78d6fc-61b0-4882-9d07-40d796fd96ce\"}," + + "{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":999}," + + "{\"Key\":{\"Id\":\"TestObject.Traits\",\"Label\":\"Traits\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"},\"Value\":[{\"Key\":\"Priority\",\"Value\":\"0\"},{\"Key\":\"Category\",\"Value\":\"unit\"}]}]}"; + var test = Deserialize(json); + + Assert.AreEqual(TestCase.CodeFilePath, test.CodeFilePath); + Assert.AreEqual(TestCase.DisplayName, test.DisplayName); + Assert.AreEqual(TestCase.ExecutorUri, test.ExecutorUri); + Assert.AreEqual(TestCase.FullyQualifiedName, test.FullyQualifiedName); + Assert.AreEqual(TestCase.LineNumber, test.LineNumber); + Assert.AreEqual(TestCase.Source, test.Source); + Assert.AreEqual(TestCase.Traits.First().Name, test.Traits.First().Name); + Assert.AreEqual(TestCase.Id, test.Id); + } + + [TestMethod] + public void TestCaseObjectShouldSerializeWindowsPathWithEscaping() + { + var test = new TestCase("a.b", new Uri("uri://x"), @"C:\Test\TestAssembly.dll"); + + var json = Serialize(test); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + dynamic properties = data["Properties"]; + Assert.AreEqual(@"TestCase.Source", properties[2]["Key"]["Id"].Value); + Assert.AreEqual(@"C:\Test\TestAssembly.dll", properties[2]["Value"].Value); + } + + [TestMethod] + public void TestCaseObjectShouldDeserializeEscapedWindowsPath() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"a.b\"}," + + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"uri://x\"}," + + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"C:\\\\Test\\\\TestAssembly.dll\"}]}"; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; + var test = Deserialize(json); + + Assert.AreEqual(@"C:\Test\TestAssembly.dll", test.Source); + } + + [TestMethod] + public void TestCaseObjectShouldSerializeTraitsWithSpecialCharacters() + { + var test = new TestCase("a.b", new Uri("uri://x"), @"/tmp/a.b.dll"); + test.Traits.Add("t", @"SDJDDHW>,:&^%//\\\\"); + + var json = Serialize(test); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + dynamic properties = data["Properties"]; + Assert.AreEqual(@"TestObject.Traits", properties[7]["Key"]["Id"].Value); + Assert.AreEqual("[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]", properties[7]["Value"].ToString(Formatting.None)); + } + + [TestMethod] + public void TestCasePropertiesShouldGetRegisteredAsPartOfDeserialization() + { + TestProperty.TryUnregister("DummyProperty", out var _); + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"a.b\"}," + + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"uri://x\"}," + + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"/tmp/a.b.dll\"}," + + "{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"}," + + "{\"Key\":{\"Id\":\"TestObject.Traits\",\"Label\":\"Traits\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"},\"Value\":[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]}]}"; + _ = Deserialize(json); + + VerifyDummyPropertyIsRegistered(); + } + + #endregion + + #region v2 Tests + + [TestMethod] + public void TestCaseJsonShouldContainAllPropertiesOnSerializationV2() + { + var json = Serialize(TestCase, 2); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + dynamic properties = data["Properties"]; + + // Traits require special handling with TestPlatformContract resolver. It should be null without it. + Assert.AreEqual("TestObject.Traits", properties[0]["Key"]["Id"].Value); + Assert.IsNotNull(properties[0]["Value"]); + + Assert.AreEqual("be78d6fc-61b0-4882-9d07-40d796fd96ce", data["Id"].Value); + Assert.AreEqual("sampleTestClass.sampleTestCase", data["FullyQualifiedName"].Value); + Assert.AreEqual("sampleTestCase", data["DisplayName"].Value); + Assert.AreEqual("sampleTest.dll", data["Source"].Value); + Assert.AreEqual("executor://sampleTestExecutor", data["ExecutorUri"].Value); + Assert.AreEqual("/user/src/testFile.cs", data["CodeFilePath"].Value); + Assert.AreEqual(999, data["LineNumber"].Value); + } + + [TestMethod] + public void TestCaseObjectShouldContainAllPropertiesOnDeserializationV2() + { + var json = "{\"Id\": \"be78d6fc-61b0-4882-9d07-40d796fd96ce\",\"FullyQualifiedName\": \"sampleTestClass.sampleTestCase\",\"DisplayName\": \"sampleTestCase\",\"ExecutorUri\": \"executor://sampleTestExecutor\",\"Source\": \"sampleTest.dll\",\"CodeFilePath\": \"/user/src/testFile.cs\", \"LineNumber\": 999," + + "\"Properties\": [{ \"Key\": { \"Id\": \"TestObject.Traits\", \"Label\": \"Traits\", \"Category\": \"\", \"Description\": \"\", \"Attributes\": 5, \"ValueType\": \"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"}, \"Value\": [{\"Key\": \"Priority\",\"Value\": \"0\"}, {\"Key\": \"Category\",\"Value\": \"unit\"}]}]}"; + + var test = Deserialize(json, 2); + + Assert.AreEqual(TestCase.CodeFilePath, test.CodeFilePath); + Assert.AreEqual(TestCase.DisplayName, test.DisplayName); + Assert.AreEqual(TestCase.ExecutorUri, test.ExecutorUri); + Assert.AreEqual(TestCase.FullyQualifiedName, test.FullyQualifiedName); + Assert.AreEqual(TestCase.LineNumber, test.LineNumber); + Assert.AreEqual(TestCase.Source, test.Source); + Assert.AreEqual(TestCase.Traits.First().Name, test.Traits.First().Name); + Assert.AreEqual(TestCase.Id, test.Id); + } + + [TestMethod] + public void TestCaseObjectShouldSerializeTraitsWithSpecialCharactersV2() + { + var test = new TestCase("a.b", new Uri("uri://x"), @"/tmp/a.b.dll"); + test.Traits.Add("t", @"SDJDDHW>,:&^%//\\\\"); + + var json = Serialize(test, 2); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + dynamic properties = data["Properties"]; + Assert.AreEqual(@"TestObject.Traits", properties[0]["Key"]["Id"].Value); + Assert.AreEqual("[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]", properties[0]["Value"].ToString(Formatting.None)); + } + + [TestMethod] + public void TestCaseObjectShouldSerializeWindowsPathWithEscapingV2() + { + var test = new TestCase("a.b", new Uri("uri://x"), @"C:\Test\TestAssembly.dll"); + + var json = Serialize(test, 2); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + Assert.AreEqual(@"C:\Test\TestAssembly.dll", data["Source"].Value); + } + + [TestMethod] + public void TestCaseObjectShouldDeserializeEscapedWindowsPathV2() + { + var json = "{\"Id\":\"4e35ed85-a5e8-946e-fb14-0d3de2304e74\",\"FullyQualifiedName\":\"a.b\",\"DisplayName\":\"a.b\",\"ExecutorUri\":\"uri://x\",\"Source\":\"C:\\\\Test\\\\TestAssembly.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]}"; + + var test = Deserialize(json, 2); + + Assert.AreEqual(@"C:\Test\TestAssembly.dll", test.Source); + } + + [TestMethod] + public void TestCasePropertiesShouldGetRegisteredAsPartOfDeserializationV2() + { + TestProperty.TryUnregister("DummyProperty", out var _); + var json = "{\"Id\": \"be78d6fc-61b0-4882-9d07-40d796fd96ce\",\"FullyQualifiedName\": \"sampleTestClass.sampleTestCase\",\"DisplayName\": \"sampleTestCase\",\"ExecutorUri\": \"executor://sampleTestExecutor\",\"Source\": \"sampleTest.dll\",\"CodeFilePath\": \"/user/src/testFile.cs\", \"LineNumber\": 999," + + "\"Properties\": [{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"}," + + "{ \"Key\": { \"Id\": \"TestObject.Traits\", \"Label\": \"Traits\", \"Category\": \"\", \"Description\": \"\", \"Attributes\": 5, \"ValueType\": \"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"}, \"Value\": [{\"Key\": \"Priority\",\"Value\": \"0\"}, {\"Key\": \"Category\",\"Value\": \"unit\"}]}]}"; + _ = Deserialize(json, 2); + + VerifyDummyPropertyIsRegistered(); + } + + #endregion + + #region Common Tests + + [TestMethod] + [DataRow(1)] + [DataRow(2)] + public void TestCaseObjectShouldDeserializeTraitsWithSpecialCharacters(int version) + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"a.b\"}," + + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"uri://x\"}," + + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"/tmp/a.b.dll\"}," + + "{\"Key\":{\"Id\":\"TestObject.Traits\",\"Label\":\"Traits\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"},\"Value\":[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]}]}"; + + var test = Deserialize(json, version); + + var traits = test.Traits.ToArray(); + Assert.AreEqual(1, traits.Length); + Assert.AreEqual(@"SDJDDHW>,:&^%//\\\\", traits[0].Value); + } + + #endregion + + private static string Serialize(T data, int version = 1) + { + return JsonDataSerializer.Instance.Serialize(data, version); + } + + private static T Deserialize(string json, int version = 1) + { + return JsonDataSerializer.Instance.Deserialize(json, version)!; + } - [TestClass] - public class TestCaseSerializationTests + private static void VerifyDummyPropertyIsRegistered() { - private static TestCase testCase = new TestCase( - "sampleTestClass.sampleTestCase", - new Uri("executor://sampleTestExecutor"), - "sampleTest.dll") - { - CodeFilePath = "/user/src/testFile.cs", - DisplayName = "sampleTestCase", - Id = new Guid("be78d6fc-61b0-4882-9d07-40d796fd96ce"), - LineNumber = 999, - Traits = { new Trait("Priority", "0"), new Trait("Category", "unit") } - }; - - #region v1 Tests - - [TestMethod] - public void TestCaseJsonShouldContainAllPropertiesOnSerialization() - { - var json = Serialize(testCase); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - dynamic properties = data["Properties"]; - - Assert.AreEqual("TestCase.FullyQualifiedName", properties[0]["Key"]["Id"].Value); - Assert.AreEqual("sampleTestClass.sampleTestCase", properties[0]["Value"].Value); - Assert.AreEqual("TestCase.ExecutorUri", properties[1]["Key"]["Id"].Value); - Assert.AreEqual("executor://sampleTestExecutor", properties[1]["Value"].Value); - Assert.AreEqual("TestCase.Source", properties[2]["Key"]["Id"].Value); - Assert.AreEqual("sampleTest.dll", properties[2]["Value"].Value); - Assert.AreEqual("TestCase.CodeFilePath", properties[3]["Key"]["Id"].Value); - Assert.AreEqual("/user/src/testFile.cs", properties[3]["Value"].Value); - Assert.AreEqual("TestCase.DisplayName", properties[4]["Key"]["Id"].Value); - Assert.AreEqual("sampleTestCase", properties[4]["Value"].Value); - Assert.AreEqual("TestCase.Id", properties[5]["Key"]["Id"].Value); - Assert.AreEqual("be78d6fc-61b0-4882-9d07-40d796fd96ce", properties[5]["Value"].Value); - Assert.AreEqual("TestCase.LineNumber", properties[6]["Key"]["Id"].Value); - Assert.AreEqual(999, properties[6]["Value"].Value); - - // Traits require special handling with TestPlatformContract resolver. It should be null without it. - Assert.AreEqual("TestObject.Traits", properties[7]["Key"]["Id"].Value); - Assert.IsNotNull(properties[7]["Value"]); - } - - [TestMethod] - public void TestCaseObjectShouldContainAllPropertiesOnDeserialization() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"}," - + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"}," - + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}," - + "{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"/user/src/testFile.cs\"}," - + "{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestCase\"}," - + "{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"be78d6fc-61b0-4882-9d07-40d796fd96ce\"}," - + "{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":999}," - + "{\"Key\":{\"Id\":\"TestObject.Traits\",\"Label\":\"Traits\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"},\"Value\":[{\"Key\":\"Priority\",\"Value\":\"0\"},{\"Key\":\"Category\",\"Value\":\"unit\"}]}]}"; - var test = Deserialize(json); - - Assert.AreEqual(testCase.CodeFilePath, test.CodeFilePath); - Assert.AreEqual(testCase.DisplayName, test.DisplayName); - Assert.AreEqual(testCase.ExecutorUri, test.ExecutorUri); - Assert.AreEqual(testCase.FullyQualifiedName, test.FullyQualifiedName); - Assert.AreEqual(testCase.LineNumber, test.LineNumber); - Assert.AreEqual(testCase.Source, test.Source); - Assert.AreEqual(testCase.Traits.First().Name, test.Traits.First().Name); - Assert.AreEqual(testCase.Id, test.Id); - } - - [TestMethod] - public void TestCaseObjectShouldSerializeWindowsPathWithEscaping() - { - var test = new TestCase("a.b", new Uri("uri://x"), @"C:\Test\TestAssembly.dll"); - - var json = Serialize(test); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - dynamic properties = data["Properties"]; - Assert.AreEqual(@"TestCase.Source", properties[2]["Key"]["Id"].Value); - Assert.AreEqual(@"C:\Test\TestAssembly.dll", properties[2]["Value"].Value); - } - - [TestMethod] - public void TestCaseObjectShouldDeserializeEscapedWindowsPath() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"a.b\"}," - + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"uri://x\"}," - + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"C:\\\\Test\\\\TestAssembly.dll\"}]}"; - - var test = Deserialize(json); - - Assert.AreEqual(@"C:\Test\TestAssembly.dll", test.Source); - } - - [TestMethod] - public void TestCaseObjectShouldSerializeTraitsWithSpecialCharacters() - { - var test = new TestCase("a.b", new Uri("uri://x"), @"/tmp/a.b.dll"); - test.Traits.Add("t", @"SDJDDHW>,:&^%//\\\\"); - - var json = Serialize(test); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - dynamic properties = data["Properties"]; - Assert.AreEqual(@"TestObject.Traits", properties[7]["Key"]["Id"].Value); - Assert.AreEqual("[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]", properties[7]["Value"].ToString(Formatting.None)); - } - - [TestMethod] - public void TestCasePropertiesShouldGetRegisteredAsPartOfDeserialization() - { - TestProperty.TryUnregister("DummyProperty", out var property); - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"a.b\"}," - + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"uri://x\"}," - + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"/tmp/a.b.dll\"}," - + "{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"}," - + "{\"Key\":{\"Id\":\"TestObject.Traits\",\"Label\":\"Traits\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"},\"Value\":[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]}]}"; - - var test = Deserialize(json); - - this.VerifyDummyPropertyIsRegistered(); - } - - #endregion - - #region v2 Tests - - [TestMethod] - public void TestCaseJsonShouldContainAllPropertiesOnSerializationV2() - { - var json = Serialize(testCase, 2); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - dynamic properties = data["Properties"]; - - // Traits require special handling with TestPlatformContract resolver. It should be null without it. - Assert.AreEqual("TestObject.Traits", properties[0]["Key"]["Id"].Value); - Assert.IsNotNull(properties[0]["Value"]); - - Assert.AreEqual("be78d6fc-61b0-4882-9d07-40d796fd96ce", data["Id"].Value); - Assert.AreEqual("sampleTestClass.sampleTestCase", data["FullyQualifiedName"].Value); - Assert.AreEqual("sampleTestCase", data["DisplayName"].Value); - Assert.AreEqual("sampleTest.dll", data["Source"].Value); - Assert.AreEqual("executor://sampleTestExecutor", data["ExecutorUri"].Value); - Assert.AreEqual("/user/src/testFile.cs", data["CodeFilePath"].Value); - Assert.AreEqual(999, data["LineNumber"].Value); - } - - [TestMethod] - public void TestCaseObjectShouldContainAllPropertiesOnDeserializationV2() - { - var json = "{\"Id\": \"be78d6fc-61b0-4882-9d07-40d796fd96ce\",\"FullyQualifiedName\": \"sampleTestClass.sampleTestCase\",\"DisplayName\": \"sampleTestCase\",\"ExecutorUri\": \"executor://sampleTestExecutor\",\"Source\": \"sampleTest.dll\",\"CodeFilePath\": \"/user/src/testFile.cs\", \"LineNumber\": 999," - + "\"Properties\": [{ \"Key\": { \"Id\": \"TestObject.Traits\", \"Label\": \"Traits\", \"Category\": \"\", \"Description\": \"\", \"Attributes\": 5, \"ValueType\": \"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"}, \"Value\": [{\"Key\": \"Priority\",\"Value\": \"0\"}, {\"Key\": \"Category\",\"Value\": \"unit\"}]}]}"; - - var test = Deserialize(json, 2); - - Assert.AreEqual(testCase.CodeFilePath, test.CodeFilePath); - Assert.AreEqual(testCase.DisplayName, test.DisplayName); - Assert.AreEqual(testCase.ExecutorUri, test.ExecutorUri); - Assert.AreEqual(testCase.FullyQualifiedName, test.FullyQualifiedName); - Assert.AreEqual(testCase.LineNumber, test.LineNumber); - Assert.AreEqual(testCase.Source, test.Source); - Assert.AreEqual(testCase.Traits.First().Name, test.Traits.First().Name); - Assert.AreEqual(testCase.Id, test.Id); - } - - [TestMethod] - public void TestCaseObjectShouldSerializeTraitsWithSpecialCharactersV2() - { - var test = new TestCase("a.b", new Uri("uri://x"), @"/tmp/a.b.dll"); - test.Traits.Add("t", @"SDJDDHW>,:&^%//\\\\"); - - var json = Serialize(test, 2); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - dynamic properties = data["Properties"]; - Assert.AreEqual(@"TestObject.Traits", properties[0]["Key"]["Id"].Value); - Assert.AreEqual("[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]", properties[0]["Value"].ToString(Formatting.None)); - } - - [TestMethod] - public void TestCaseObjectShouldSerializeWindowsPathWithEscapingV2() - { - var test = new TestCase("a.b", new Uri("uri://x"), @"C:\Test\TestAssembly.dll"); - - var json = Serialize(test, 2); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - Assert.AreEqual(@"C:\Test\TestAssembly.dll", data["Source"].Value); - } - - [TestMethod] - public void TestCaseObjectShouldDeserializeEscapedWindowsPathV2() - { - var json = "{\"Id\":\"4e35ed85-a5e8-946e-fb14-0d3de2304e74\",\"FullyQualifiedName\":\"a.b\",\"DisplayName\":\"a.b\",\"ExecutorUri\":\"uri://x\",\"Source\":\"C:\\\\Test\\\\TestAssembly.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]}"; - - var test = Deserialize(json, 2); - - Assert.AreEqual(@"C:\Test\TestAssembly.dll", test.Source); - } - - [TestMethod] - public void TestCasePropertiesShouldGetRegisteredAsPartOfDeserializationV2() - { - TestProperty.TryUnregister("DummyProperty", out var property); - var json = "{\"Id\": \"be78d6fc-61b0-4882-9d07-40d796fd96ce\",\"FullyQualifiedName\": \"sampleTestClass.sampleTestCase\",\"DisplayName\": \"sampleTestCase\",\"ExecutorUri\": \"executor://sampleTestExecutor\",\"Source\": \"sampleTest.dll\",\"CodeFilePath\": \"/user/src/testFile.cs\", \"LineNumber\": 999," - + "\"Properties\": [{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"}," - + "{ \"Key\": { \"Id\": \"TestObject.Traits\", \"Label\": \"Traits\", \"Category\": \"\", \"Description\": \"\", \"Attributes\": 5, \"ValueType\": \"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"}, \"Value\": [{\"Key\": \"Priority\",\"Value\": \"0\"}, {\"Key\": \"Category\",\"Value\": \"unit\"}]}]}"; - - var test = Deserialize(json, 2); - - this.VerifyDummyPropertyIsRegistered(); - } - - #endregion - - #region Common Tests - - [TestMethod] - [DataRow(1)] - [DataRow(2)] - public void TestCaseObjectShouldDeserializeTraitsWithSpecialCharacters(int version) - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"a.b\"}," - + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"uri://x\"}," - + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"/tmp/a.b.dll\"}," - + "{\"Key\":{\"Id\":\"TestObject.Traits\",\"Label\":\"Traits\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.Collections.Generic.KeyValuePair`2[[System.String],[System.String]][]\"},\"Value\":[{\"Key\":\"t\",\"Value\":\"SDJDDHW>,:&^%//\\\\\\\\\\\\\\\\\"}]}]}"; - - var test = Deserialize(json, version); - - var traits = test.Traits.ToArray(); - Assert.AreEqual(1, traits.Length); - Assert.AreEqual(@"SDJDDHW>,:&^%//\\\\", traits[0].Value); - } - - #endregion - - private static string Serialize(T data, int version = 1) - { - return JsonDataSerializer.Instance.Serialize(data, version); - } - - private static T Deserialize(string json, int version = 1) - { - return JsonDataSerializer.Instance.Deserialize(json, version); - } - - private void VerifyDummyPropertyIsRegistered() - { - var dummyProperty = TestProperty.Find("DummyProperty"); - Assert.IsNotNull(dummyProperty); - Assert.AreEqual("DummyPropertyLabel", dummyProperty.Label); - Assert.AreEqual("System.String", dummyProperty.ValueType); - Assert.AreEqual(5, (int)dummyProperty.Attributes); - } + var dummyProperty = TestProperty.Find("DummyProperty"); + Assert.IsNotNull(dummyProperty); + Assert.AreEqual("DummyPropertyLabel", dummyProperty.Label); + Assert.AreEqual("System.String", dummyProperty.ValueType); + Assert.AreEqual(5, (int)dummyProperty.Attributes); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestObjectConverterTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestObjectConverterTests.cs index 097c25d9d8..90b10ef588 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestObjectConverterTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestObjectConverterTests.cs @@ -1,170 +1,175 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.Serialization -{ - using System; - using System.Linq; +using System; +using System.Linq; + +using Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.Serialization; - [TestClass] - public class TestObjectConverterTests +[TestClass] +public class TestObjectConverterTests +{ + [TestMethod] + public void TestObjectJsonShouldContainOnlyProperties() { - [TestMethod] - public void TestObjectJsonShouldContainOnlyProperties() - { - var json = Serialize(new TestableTestObject()); + var json = Serialize(new TestableTestObject()); - Assert.AreEqual("{\"Properties\":[]}", json); - } + Assert.AreEqual("{\"Properties\":[]}", json); + } - [TestMethod] - public void TestObjectShouldCreateDefaultObjectOnDeserializationOfJsonWithEmptyProperties() - { - var test = Deserialize("{\"Properties\":[]}"); + [TestMethod] + public void TestObjectShouldCreateDefaultObjectOnDeserializationOfJsonWithEmptyProperties() + { + var test = Deserialize("{\"Properties\":[]}"); - Assert.IsNotNull(test); - Assert.AreEqual(0, test.Properties.Count()); - } + Assert.IsNotNull(test); + Assert.AreEqual(0, test.Properties.Count()); + } - [TestMethod] - public void TestCaseObjectShouldSerializeCustomProperties() + [TestMethod] + public void TestCaseObjectShouldSerializeCustomProperties() + { + var test = new TestableTestObject(); + var testProperty1 = TestProperty.Register("1", "label1", typeof(Guid), typeof(TestableTestObject)); + var testPropertyData1 = Guid.Parse("02048dfd-3da7-475d-a011-8dd1121855ec"); + var testProperty2 = TestProperty.Register("2", "label2", typeof(int), typeof(TestableTestObject)); + var testPropertyData2 = 29; + test.SetPropertyValue(testProperty1, testPropertyData1); + test.SetPropertyValue(testProperty2, testPropertyData2); + + var json = Serialize(test); + + // Use raw deserialization to validate basic properties + // Because properties are backed up by a ConcurrentDictionary we don't have control over the order of serialization + var expectedJsonWithKey1First = "{\"Properties\":[{\"Key\":{\"Id\":\"1\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Guid\"},\"Value\":\"02048dfd-3da7-475d-a011-8dd1121855ec\"},{\"Key\":{\"Id\":\"2\",\"Label\":\"label2\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Int32\"},\"Value\":29}]}"; + var expectedJsonWithKey2First = "{\"Properties\":[{\"Key\":{\"Id\":\"2\",\"Label\":\"label2\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Int32\"},\"Value\":29},{\"Key\":{\"Id\":\"1\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Guid\"},\"Value\":\"02048dfd-3da7-475d-a011-8dd1121855ec\"}]}"; + + if (json != expectedJsonWithKey1First && json != expectedJsonWithKey2First) { - var test = new TestableTestObject(); - var testProperty1 = TestProperty.Register("1", "label1", typeof(Guid), typeof(TestableTestObject)); - var testPropertyData1 = Guid.Parse("02048dfd-3da7-475d-a011-8dd1121855ec"); - var testProperty2 = TestProperty.Register("2", "label2", typeof(int), typeof(TestableTestObject)); - var testPropertyData2 = 29; - test.SetPropertyValue(testProperty1, testPropertyData1); - test.SetPropertyValue(testProperty2, testPropertyData2); - - var json = Serialize(test); - - // Use raw deserialization to validate basic properties - var expectedJson = "{\"Properties\":[{\"Key\":{\"Id\":\"1\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Guid\"},\"Value\":\"02048dfd-3da7-475d-a011-8dd1121855ec\"},{\"Key\":{\"Id\":\"2\",\"Label\":\"label2\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Int32\"},\"Value\":29}]}"; - Assert.AreEqual(expectedJson, json); + Assert.Fail($"Was expecting <{json}> to be either <{expectedJsonWithKey1First}> or <{expectedJsonWithKey2First}>."); } + } - [TestMethod] - public void TestObjectShouldSerializeStringArrayValueForProperty() - { - var test = new TestableTestObject(); - var testProperty1 = TestProperty.Register("11", "label1", typeof(string[]), typeof(TestableTestObject)); - var testPropertyData1 = new[] { "val1", "val2" }; - test.SetPropertyValue(testProperty1, testPropertyData1); + [TestMethod] + public void TestObjectShouldSerializeStringArrayValueForProperty() + { + var test = new TestableTestObject(); + var testProperty1 = TestProperty.Register("11", "label1", typeof(string[]), typeof(TestableTestObject)); + var testPropertyData1 = new[] { "val1", "val2" }; + test.SetPropertyValue(testProperty1, testPropertyData1); - var json = Serialize(test); + var json = Serialize(test); - var expectedJson = "{\"Properties\":[{\"Key\":{\"Id\":\"11\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String[]\"},\"Value\":[\"val1\",\"val2\"]}]}"; - Assert.AreEqual(expectedJson, json); - } + var expectedJson = "{\"Properties\":[{\"Key\":{\"Id\":\"11\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String[]\"},\"Value\":[\"val1\",\"val2\"]}]}"; + Assert.AreEqual(expectedJson, json); + } - [TestMethod] - public void TestObjectShouldSerializeDateTimeOffsetForProperty() - { - var test = new TestableTestObject(); - var testProperty1 = TestProperty.Register("12", "label1", typeof(DateTimeOffset), typeof(TestableTestObject)); - var testPropertyData1 = DateTimeOffset.MaxValue; - test.SetPropertyValue(testProperty1, testPropertyData1); + [TestMethod] + public void TestObjectShouldSerializeDateTimeOffsetForProperty() + { + var test = new TestableTestObject(); + var testProperty1 = TestProperty.Register("12", "label1", typeof(DateTimeOffset), typeof(TestableTestObject)); + var testPropertyData1 = DateTimeOffset.MaxValue; + test.SetPropertyValue(testProperty1, testPropertyData1); - var json = Serialize(test); + var json = Serialize(test); - var expectedJson = "{\"Properties\":[{\"Key\":{\"Id\":\"12\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"9999-12-31T23:59:59.9999999+00:00\"}]}"; - Assert.AreEqual(expectedJson, json); - } + var expectedJson = "{\"Properties\":[{\"Key\":{\"Id\":\"12\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"9999-12-31T23:59:59.9999999+00:00\"}]}"; + Assert.AreEqual(expectedJson, json); + } - [TestMethod] - public void TestObjectShouldDeserializeCustomProperties() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"13\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Guid\"},\"Value\":\"02048dfd-3da7-475d-a011-8dd1121855ec\"},{\"Key\":{\"Id\":\"2\",\"Label\":\"label2\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Int32\"},\"Value\":29}]}"; + [TestMethod] + public void TestObjectShouldDeserializeCustomProperties() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"13\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Guid\"},\"Value\":\"02048dfd-3da7-475d-a011-8dd1121855ec\"},{\"Key\":{\"Id\":\"2\",\"Label\":\"label2\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.Int32\"},\"Value\":29}]}"; - var test = Deserialize(json); + var test = Deserialize(json); - var properties = test.Properties.ToArray(); - Assert.AreEqual(2, properties.Length); - Assert.AreEqual(Guid.Parse("02048dfd-3da7-475d-a011-8dd1121855ec"), test.GetPropertyValue(properties[0])); - Assert.AreEqual(29, test.GetPropertyValue(properties[1])); - } + var properties = test.Properties.ToArray(); + Assert.AreEqual(2, properties.Length); + Assert.AreEqual(Guid.Parse("02048dfd-3da7-475d-a011-8dd1121855ec"), test.GetPropertyValue(properties.First(x => x.Label == "label1"))); + Assert.AreEqual(29, test.GetPropertyValue(properties.First(x => x.Label == "label2"))); + } - [TestMethod] - public void TestObjectShouldDeserializeNullValueForProperty() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"14\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null}]}"; + [TestMethod] + public void TestObjectShouldDeserializeNullValueForProperty() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"14\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null}]}"; - var test = Deserialize(json); + var test = Deserialize(json); - var properties = test.Properties.ToArray(); - Assert.AreEqual(1, properties.Length); - Assert.IsTrue(string.IsNullOrEmpty(test.GetPropertyValue(properties[0]).ToString())); - } + var properties = test.Properties.ToArray(); + Assert.AreEqual(1, properties.Length); + Assert.IsTrue(string.IsNullOrEmpty(test.GetPropertyValue(properties[0])!.ToString())); + } - [TestMethod] - public void TestObjectShouldDeserializeStringArrayValueForProperty() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"15\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String[]\"},\"Value\":[\"val1\", \"val2\"]}]}"; + [TestMethod] + public void TestObjectShouldDeserializeStringArrayValueForProperty() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"15\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String[]\"},\"Value\":[\"val1\", \"val2\"]}]}"; - var test = Deserialize(json); + var test = Deserialize(json); - var properties = test.Properties.ToArray(); - Assert.AreEqual(1, properties.Length); - CollectionAssert.AreEqual(new[] { "val1", "val2" }, (string[])test.GetPropertyValue(properties[0])); - } + var properties = test.Properties.ToArray(); + Assert.AreEqual(1, properties.Length); + CollectionAssert.AreEqual(new[] { "val1", "val2" }, (string[])test.GetPropertyValue(properties[0])!); + } - [TestMethod] - public void TestObjectShouldDeserializeDatetimeOffset() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"16\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"9999-12-31T23:59:59.9999999+00:00\"}]}"; + [TestMethod] + public void TestObjectShouldDeserializeDatetimeOffset() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"16\",\"Label\":\"label1\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"9999-12-31T23:59:59.9999999+00:00\"}]}"; - var test = Deserialize(json); + var test = Deserialize(json); - var properties = test.Properties.ToArray(); - Assert.AreEqual(1, properties.Length); - Assert.AreEqual(DateTimeOffset.MaxValue, test.GetPropertyValue(properties[0])); - } + var properties = test.Properties.ToArray(); + Assert.AreEqual(1, properties.Length); + Assert.AreEqual(DateTimeOffset.MaxValue, test.GetPropertyValue(properties[0])); + } - [TestMethod] - public void TestObjectShouldAddPropertyToTestPropertyStoreOnDeserialize() - { - var json = "{\"Properties\":[{\"Key\":{\"Id\":\"17\",\"Label\":\"label1\",\"Category\":\"c\",\"Description\":\"d\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"DummyValue\"}]}"; - - var test = Deserialize(json); - - var property = TestProperty.Find("17"); - Assert.IsNotNull(property); - Assert.AreEqual("17", property.Id); - Assert.AreEqual("label1", property.Label); - Assert.AreEqual("c", property.Category); - Assert.AreEqual("d", property.Description); - Assert.AreEqual(typeof(string), property.GetValueType()); - Assert.AreEqual(TestPropertyAttributes.None, property.Attributes); - Assert.AreEqual("DummyValue", test.GetPropertyValue(property)); - } + [TestMethod] + public void TestObjectShouldAddPropertyToTestPropertyStoreOnDeserialize() + { + var json = "{\"Properties\":[{\"Key\":{\"Id\":\"17\",\"Label\":\"label1\",\"Category\":\"c\",\"Description\":\"d\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"DummyValue\"}]}"; + + var test = Deserialize(json); + + var property = TestProperty.Find("17"); + Assert.IsNotNull(property); + Assert.AreEqual("17", property.Id); + Assert.AreEqual("label1", property.Label); + Assert.AreEqual("c", property.Category); + Assert.AreEqual("d", property.Description); + Assert.AreEqual(typeof(string), property.GetValueType()); + Assert.AreEqual(TestPropertyAttributes.None, property.Attributes); + Assert.AreEqual("DummyValue", test.GetPropertyValue(property)); + } - [TestMethod] - public void TestObjectSetPropertyValueShouldNotConvertIfValueMatchesPropertyDataType() - { - var property = TestProperty.Register("98", "p1", typeof(bool), typeof(TestObject)); - var testobj = new TestableTestObject(); + [TestMethod] + public void TestObjectSetPropertyValueShouldNotConvertIfValueMatchesPropertyDataType() + { + var property = TestProperty.Register("98", "p1", typeof(bool), typeof(TestObject)); + var testobj = new TestableTestObject(); - // This should not throw even if the runtime type of boolean where as specified - // type is object - testobj.SetPropertyValue(property, false); + // This should not throw even if the runtime type of boolean where as specified + // type is object + testobj.SetPropertyValue(property, false); - Assert.AreEqual(false, testobj.GetPropertyValue(property)); - } + Assert.AreEqual(false, testobj.GetPropertyValue(property)); + } - private static string Serialize(T data) - { - return JsonDataSerializer.Instance.Serialize(data); - } + private static string Serialize(T data) + { + return JsonDataSerializer.Instance.Serialize(data); + } - private static T Deserialize(string json) - { - return JsonDataSerializer.Instance.Deserialize(json); - } + private static T Deserialize(string json) + { + return JsonDataSerializer.Instance.Deserialize(json)!; } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestResultSerializationTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestResultSerializationTests.cs index 8f811846e5..087c01c46e 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestResultSerializationTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/Serialization/TestResultSerializationTests.cs @@ -1,312 +1,310 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.Serialization +using System; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Newtonsoft.Json.Linq; + +using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.Serialization; + +[TestClass] +public class TestResultSerializationTests { - using System; + private static readonly TestCase TestCase = new( + "sampleTestClass.sampleTestCase", + new Uri("executor://sampleTestExecutor"), + "sampleTest.dll"); + + private static readonly DateTimeOffset StartTime = new(new DateTime(2007, 3, 10, 0, 0, 0, DateTimeKind.Utc)); + private static readonly TestResult TestResult = new(TestCase) + { + // Attachments = ? + // Messages = ? + Outcome = TestOutcome.Passed, + ErrorMessage = "sampleError", + ErrorStackTrace = "sampleStackTrace", + DisplayName = "sampleTestResult", + ComputerName = "sampleComputerName", + Duration = TimeSpan.MaxValue, + StartTime = StartTime, + EndTime = DateTimeOffset.MaxValue + }; + + #region v1 serializer Tests (used with protocol 1 and accidentally with 3) + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultJsonShouldContainAllPropertiesOnSerialization(int version) + { + var json = Serialize(TestResult, version); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + dynamic properties = data["Properties"]; + Assert.AreEqual("TestResult.Outcome", properties[0]["Key"]["Id"].Value); + Assert.AreEqual(1, properties[0]["Value"].Value); + Assert.AreEqual("TestResult.ErrorMessage", properties[1]["Key"]["Id"].Value); + Assert.AreEqual("sampleError", properties[1]["Value"].Value); + Assert.AreEqual("TestResult.ErrorStackTrace", properties[2]["Key"]["Id"].Value); + Assert.AreEqual("sampleStackTrace", properties[2]["Value"].Value); + Assert.AreEqual("TestResult.DisplayName", properties[3]["Key"]["Id"].Value); + Assert.AreEqual("sampleTestResult", properties[3]["Value"].Value); + Assert.AreEqual("TestResult.ComputerName", properties[4]["Key"]["Id"].Value); + Assert.AreEqual("sampleComputerName", properties[4]["Value"].Value); + Assert.AreEqual("TestResult.Duration", properties[5]["Key"]["Id"].Value); + Assert.AreEqual("10675199.02:48:05.4775807", properties[5]["Value"].Value); + + // By default json.net converts DateTimes to current time zone + Assert.AreEqual("TestResult.StartTime", properties[6]["Key"]["Id"].Value); + Assert.AreEqual(StartTime.Year, ((DateTimeOffset)properties[6]["Value"].Value).Year); + Assert.AreEqual("TestResult.EndTime", properties[7]["Key"]["Id"].Value); + Assert.AreEqual(DateTimeOffset.MaxValue.Year, ((DateTimeOffset)properties[7]["Value"].Value).Year); + } + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultObjectShouldContainAllPropertiesOnDeserialization(int version) + { + var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}]},\"Attachments\":[],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome\"},\"Value\":1},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleError\"},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleStackTrace\"},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestResult\"},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleComputerName\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"10675199.02:48:05.4775807\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"2007-03-10T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"9999-12-31T23:59:59.9999999+00:00\"}]}"; + + var test = Deserialize(json, version); + + Assert.AreEqual(TestResult.TestCase.Id, test.TestCase.Id); + Assert.AreEqual(TestResult.Attachments.Count, test.Attachments.Count); + Assert.AreEqual(TestResult.Messages.Count, test.Messages.Count); + + Assert.AreEqual(TestResult.ComputerName, test.ComputerName); + Assert.AreEqual(TestResult.DisplayName, test.DisplayName); + Assert.AreEqual(TestResult.Duration, test.Duration); + Assert.AreEqual(TestResult.EndTime, test.EndTime); + Assert.AreEqual(TestResult.ErrorMessage, test.ErrorMessage); + Assert.AreEqual(TestResult.ErrorStackTrace, test.ErrorStackTrace); + Assert.AreEqual(TestResult.Outcome, test.Outcome); + Assert.AreEqual(TestResult.StartTime, test.StartTime); + } + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultObjectShouldSerializeAttachments(int version) + { + var result = new TestResult(TestCase); + result.StartTime = default; + result.EndTime = default; + result.Attachments.Add(new AttachmentSet(new Uri("http://dummyUri"), "sampleAttachment")); + var expectedJson = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"},{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; + + var json = Serialize(result, version); + + Assert.AreEqual(expectedJson, json); + } + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultObjectShouldDeserializeAttachments(int version) + { + var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Messages\":[],\"Properties\":[]}"; + + var result = Deserialize(json, version); + + Assert.AreEqual(1, result.Attachments.Count); + Assert.AreEqual(new Uri("http://dummyUri"), result.Attachments[0].Uri); + Assert.AreEqual("sampleAttachment", result.Attachments[0].DisplayName); + } + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultObjectShouldSerializeDefaultValues(int version) + { + var result = new TestResult(TestCase); + result.StartTime = default; + result.EndTime = default; + var expectedJson = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"},{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]},\"Attachments\":[],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; + + var json = Serialize(result, version); + + // Values that should be null: DisplayName, ErrorMessage, ErrorStackTrace + // Values that should be empty: ComputerName + Assert.AreEqual(expectedJson, json); + } + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultObjectShouldDeserializeDefaultValues(int version) + { + var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"},{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]},\"Attachments\":[],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; + + var result = Deserialize(json, version); + + Assert.AreEqual(0, result.Attachments.Count); + Assert.AreEqual(0, result.Messages.Count); + Assert.IsNull(result.DisplayName); + Assert.IsNull(result.ErrorMessage); + Assert.IsNull(result.ErrorStackTrace); + Assert.AreEqual(string.Empty, result.ComputerName); + } + + [TestMethod] + [DataRow(1)] + [DataRow(3)] + public void TestResultPropertiesShouldGetRegisteredAsPartOfDeserialization(int version) + { + TestProperty.TryUnregister("DummyProperty", out var _); + var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"}," + + "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"}," + + "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}," + + "{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null}," + + "{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"}," + + "{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"}," + + "{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]}," + + "\"Attachments\":[],\"Messages\":[]," + + "\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0}," + + "{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null}," + + "{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"}," + + "{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}," + + "{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"}," + + "{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; + _ = Deserialize(json, version); + + VerifyDummyPropertyIsRegistered(); + } - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; + #endregion - using Newtonsoft.Json.Linq; + #region v2 serializer Tests (used with protocol 2 and 4) - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + [TestMethod] + [DataRow(2)] + [DataRow(4)] + public void TestResultJsonShouldContainAllPropertiesOnSerializationV2(int version) + { + var json = Serialize(TestResult, version); + + // Use raw deserialization to validate basic properties + dynamic data = JObject.Parse(json); + + Assert.AreEqual(1, data["Outcome"].Value); + Assert.AreEqual("sampleError", data["ErrorMessage"].Value); + Assert.AreEqual("sampleStackTrace", data["ErrorStackTrace"].Value); + Assert.AreEqual("sampleTestResult", data["DisplayName"].Value); + Assert.AreEqual("sampleComputerName", data["ComputerName"].Value); + Assert.AreEqual("10675199.02:48:05.4775807", data["Duration"].Value); + + // By default json.net converts DateTimes to current time zone + Assert.AreEqual(StartTime.Year, ((DateTimeOffset)data["StartTime"].Value).Year); + Assert.AreEqual(DateTimeOffset.MaxValue.Year, ((DateTimeOffset)data["EndTime"].Value).Year); + } + + [TestMethod] + [DataRow(2)] + [DataRow(4)] + public void TestResultObjectShouldContainAllPropertiesOnDeserializationV2(int version) + { + var json = "{\"TestCase\":{\"Id\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\",\"FullyQualifiedName\":\"sampleTestClass.sampleTestCase\",\"DisplayName\":\"sampleTestClass.sampleTestCase\",\"ExecutorUri\":\"executor://sampleTestExecutor\",\"Source\":\"sampleTest.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]},\"Attachments\":[],\"Outcome\":1,\"ErrorMessage\":\"sampleError\",\"ErrorStackTrace\":\"sampleStackTrace\",\"DisplayName\":\"sampleTestResult\",\"Messages\":[],\"ComputerName\":\"sampleComputerName\",\"Duration\":\"10675199.02:48:05.4775807\",\"StartTime\":\"2007-03-10T00:00:00+00:00\",\"EndTime\":\"9999-12-31T23:59:59.9999999+00:00\",\"Properties\":[]}"; + + var test = Deserialize(json, version); + + Assert.AreEqual(TestResult.TestCase.Id, test.TestCase.Id); + Assert.AreEqual(TestResult.Attachments.Count, test.Attachments.Count); + Assert.AreEqual(TestResult.Messages.Count, test.Messages.Count); + + Assert.AreEqual(TestResult.ComputerName, test.ComputerName); + Assert.AreEqual(TestResult.DisplayName, test.DisplayName); + Assert.AreEqual(TestResult.Duration, test.Duration); + Assert.AreEqual(TestResult.EndTime, test.EndTime); + Assert.AreEqual(TestResult.ErrorMessage, test.ErrorMessage); + Assert.AreEqual(TestResult.ErrorStackTrace, test.ErrorStackTrace); + Assert.AreEqual(TestResult.Outcome, test.Outcome); + Assert.AreEqual(TestResult.StartTime, test.StartTime); + } + + [TestMethod] + [DataRow(2)] + [DataRow(4)] + public void TestResultObjectShouldSerializeAttachmentsV2(int version) + { + var result = new TestResult(TestCase); + result.StartTime = default; + result.EndTime = default; + result.Attachments.Add(new AttachmentSet(new Uri("http://dummyUri"), "sampleAttachment")); + var expectedJson = "{\"TestCase\":{\"Id\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\",\"FullyQualifiedName\":\"sampleTestClass.sampleTestCase\",\"DisplayName\":\"sampleTestClass.sampleTestCase\",\"ExecutorUri\":\"executor://sampleTestExecutor\",\"Source\":\"sampleTest.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Outcome\":0,\"ErrorMessage\":null,\"ErrorStackTrace\":null,\"DisplayName\":null,\"Messages\":[],\"ComputerName\":null,\"Duration\":\"00:00:00\",\"StartTime\":\"0001-01-01T00:00:00+00:00\",\"EndTime\":\"0001-01-01T00:00:00+00:00\",\"Properties\":[]}"; + + var json = Serialize(result, version); + + Assert.AreEqual(expectedJson, json); + } + + [TestMethod] + [DataRow(2)] + [DataRow(4)] + public void TestResultObjectShouldDeserializeAttachmentsV2(int version) + { + var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"}]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Messages\":[],\"Properties\":[]}"; + + var result = Deserialize(json, version); + + Assert.AreEqual(1, result.Attachments.Count); + Assert.AreEqual(new Uri("http://dummyUri"), result.Attachments[0].Uri); + Assert.AreEqual("sampleAttachment", result.Attachments[0].DisplayName); + } + + [TestMethod] + [DataRow(2)] + [DataRow(4)] + public void TestResultPropertiesShouldGetRegisteredAsPartOfDeserializationV2(int version) + { + TestProperty.TryUnregister("DummyProperty", out var _); + var json = "{\"TestCase\":{\"Id\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\",\"FullyQualifiedName\":\"sampleTestClass.sampleTestCase\",\"DisplayName\":\"sampleTestClass.sampleTestCase\",\"ExecutorUri\":\"executor://sampleTestExecutor\",\"Source\":\"sampleTest.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]},\"Attachments\":[],\"Outcome\":1,\"ErrorMessage\":\"sampleError\",\"ErrorStackTrace\":\"sampleStackTrace\",\"DisplayName\":\"sampleTestResult\",\"Messages\":[],\"ComputerName\":\"sampleComputerName\",\"Duration\":\"10675199.02:48:05.4775807\",\"StartTime\":\"2007-03-10T00:00:00+00:00\",\"EndTime\":\"9999-12-31T23:59:59.9999999+00:00\"," + + "\"Properties\":[{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"},]}"; + _ = Deserialize(json, version); + + VerifyDummyPropertyIsRegistered(); + } + + #endregion + + #region future + + [TestMethod] + public void TestResultSerializationShouldThrowWhenProvidedProtocolVersionDoesNotExist() + { + // this is to ensure that introducing a new version is a conscious choice and + // and that we don't fallback to version 1 as it happened with version 3, because the serializer + // only checked for version 2 + var version = int.MaxValue; + + Assert.ThrowsException(() => Serialize(TestResult, version)); + } + + #endregion + + private static string Serialize(T data, int version) + { + return JsonDataSerializer.Instance.Serialize(data, version); + } + + private static T Deserialize(string json, int version) + { + return JsonDataSerializer.Instance.Deserialize(json, version)!; + } - [TestClass] - public class TestResultSerializationTests + private static void VerifyDummyPropertyIsRegistered() { - private static TestCase testCase = new TestCase( - "sampleTestClass.sampleTestCase", - new Uri("executor://sampleTestExecutor"), - "sampleTest.dll"); - - private static DateTimeOffset startTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 0, DateTimeKind.Utc)); - private static TestResult testResult = new TestResult(testCase) - { - // Attachments = ? - // Messages = ? - Outcome = TestOutcome.Passed, - ErrorMessage = "sampleError", - ErrorStackTrace = "sampleStackTrace", - DisplayName = "sampleTestResult", - ComputerName = "sampleComputerName", - Duration = TimeSpan.MaxValue, - StartTime = startTime, - EndTime = DateTimeOffset.MaxValue - }; - - #region v1 serializer Tests (used with protocol 1 and accidentally with 3) - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultJsonShouldContainAllPropertiesOnSerialization(int version) - { - var json = Serialize(testResult, version); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - dynamic properties = data["Properties"]; - Assert.AreEqual("TestResult.Outcome", properties[0]["Key"]["Id"].Value); - Assert.AreEqual(1, properties[0]["Value"].Value); - Assert.AreEqual("TestResult.ErrorMessage", properties[1]["Key"]["Id"].Value); - Assert.AreEqual("sampleError", properties[1]["Value"].Value); - Assert.AreEqual("TestResult.ErrorStackTrace", properties[2]["Key"]["Id"].Value); - Assert.AreEqual("sampleStackTrace", properties[2]["Value"].Value); - Assert.AreEqual("TestResult.DisplayName", properties[3]["Key"]["Id"].Value); - Assert.AreEqual("sampleTestResult", properties[3]["Value"].Value); - Assert.AreEqual("TestResult.ComputerName", properties[4]["Key"]["Id"].Value); - Assert.AreEqual("sampleComputerName", properties[4]["Value"].Value); - Assert.AreEqual("TestResult.Duration", properties[5]["Key"]["Id"].Value); - Assert.AreEqual("10675199.02:48:05.4775807", properties[5]["Value"].Value); - - // By default json.net converts DateTimes to current time zone - Assert.AreEqual("TestResult.StartTime", properties[6]["Key"]["Id"].Value); - Assert.AreEqual(startTime.Year, ((DateTimeOffset)properties[6]["Value"].Value).Year); - Assert.AreEqual("TestResult.EndTime", properties[7]["Key"]["Id"].Value); - Assert.AreEqual(DateTimeOffset.MaxValue.Year, ((DateTimeOffset)properties[7]["Value"].Value).Year); - } - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultObjectShouldContainAllPropertiesOnDeserialization(int version) - { - var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}]},\"Attachments\":[],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome\"},\"Value\":1},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleError\"},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleStackTrace\"},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestResult\"},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleComputerName\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"10675199.02:48:05.4775807\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"2007-03-10T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"9999-12-31T23:59:59.9999999+00:00\"}]}"; - - var test = Deserialize(json, version); - - Assert.AreEqual(testResult.TestCase.Id, test.TestCase.Id); - Assert.AreEqual(testResult.Attachments.Count, test.Attachments.Count); - Assert.AreEqual(testResult.Messages.Count, test.Messages.Count); - - Assert.AreEqual(testResult.ComputerName, test.ComputerName); - Assert.AreEqual(testResult.DisplayName, test.DisplayName); - Assert.AreEqual(testResult.Duration, test.Duration); - Assert.AreEqual(testResult.EndTime, test.EndTime); - Assert.AreEqual(testResult.ErrorMessage, test.ErrorMessage); - Assert.AreEqual(testResult.ErrorStackTrace, test.ErrorStackTrace); - Assert.AreEqual(testResult.Outcome, test.Outcome); - Assert.AreEqual(testResult.StartTime, test.StartTime); - } - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultObjectShouldSerializeAttachments(int version) - { - var result = new TestResult(testCase); - result.StartTime = default; - result.EndTime = default; - result.Attachments.Add(new AttachmentSet(new Uri("http://dummyUri"), "sampleAttachment")); - var expectedJson = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"},{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; - - var json = Serialize(result, version); - - Assert.AreEqual(expectedJson, json); - } - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultObjectShouldDeserializeAttachments(int version) - { - var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Messages\":[],\"Properties\":[]}"; - - var result = Deserialize(json, version); - - Assert.AreEqual(1, result.Attachments.Count); - Assert.AreEqual(new Uri("http://dummyUri"), result.Attachments[0].Uri); - Assert.AreEqual("sampleAttachment", result.Attachments[0].DisplayName); - } - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultObjectShouldSerializeDefaultValues(int version) - { - var result = new TestResult(testCase); - result.StartTime = default; - result.EndTime = default; - var expectedJson = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"},{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]},\"Attachments\":[],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; - - var json = Serialize(result, version); - - // Values that should be null: DisplayName, ErrorMessage, ErrorStackTrace - // Values that should be empty: ComputerName - Assert.AreEqual(expectedJson, json); - } - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultObjectShouldDeserializeDefaultValues(int version) - { - var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"},{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]},\"Attachments\":[],\"Messages\":[],\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0},{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"},{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"},{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; - - var result = Deserialize(json, version); - - Assert.AreEqual(0, result.Attachments.Count); - Assert.AreEqual(0, result.Messages.Count); - Assert.IsNull(result.DisplayName); - Assert.IsNull(result.ErrorMessage); - Assert.IsNull(result.ErrorStackTrace); - Assert.AreEqual(string.Empty, result.ComputerName); - } - - [TestMethod] - [DataRow(1)] - [DataRow(3)] - public void TestResultPropertiesShouldGetRegisteredAsPartOfDeserialization(int version) - { - TestProperty.TryUnregister("DummyProperty", out var property); - var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"}," + - "{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"}," + - "{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"}," + - "{\"Key\":{\"Id\":\"TestCase.CodeFilePath\",\"Label\":\"File Path\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null}," + - "{\"Key\":{\"Id\":\"TestCase.DisplayName\",\"Label\":\"Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"}," + - "{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"}," + - "{\"Key\":{\"Id\":\"TestCase.LineNumber\",\"Label\":\"Line Number\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Int32\"},\"Value\":-1}]}," + - "\"Attachments\":[],\"Messages\":[]," + - "\"Properties\":[{\"Key\":{\"Id\":\"TestResult.Outcome\",\"Label\":\"Outcome\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome, Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"},\"Value\":0}," + - "{\"Key\":{\"Id\":\"TestResult.ErrorMessage\",\"Label\":\"Error Message\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ErrorStackTrace\",\"Label\":\"Error Stack Trace\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":null}," + - "{\"Key\":{\"Id\":\"TestResult.DisplayName\",\"Label\":\"TestResult Display Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":null},{\"Key\":{\"Id\":\"TestResult.ComputerName\",\"Label\":\"Computer Name\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"\"}," + - "{\"Key\":{\"Id\":\"TestResult.Duration\",\"Label\":\"Duration\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.TimeSpan\"},\"Value\":\"00:00:00\"},{\"Key\":{\"Id\":\"TestResult.StartTime\",\"Label\":\"Start Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}," + - "{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"}," + - "{\"Key\":{\"Id\":\"TestResult.EndTime\",\"Label\":\"End Time\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.DateTimeOffset\"},\"Value\":\"0001-01-01T00:00:00+00:00\"}]}"; - var test = Deserialize(json, version); - - this.VerifyDummyPropertyIsRegistered(); - } - - #endregion - - #region v2 serializer Tests (used with protocol 2 and 4) - - [TestMethod] - [DataRow(2)] - [DataRow(4)] - public void TestResultJsonShouldContainAllPropertiesOnSerializationV2(int version) - { - var json = Serialize(testResult, version); - - // Use raw deserialization to validate basic properties - dynamic data = JObject.Parse(json); - - Assert.AreEqual(1, data["Outcome"].Value); - Assert.AreEqual("sampleError", data["ErrorMessage"].Value); - Assert.AreEqual("sampleStackTrace", data["ErrorStackTrace"].Value); - Assert.AreEqual("sampleTestResult", data["DisplayName"].Value); - Assert.AreEqual("sampleComputerName", data["ComputerName"].Value); - Assert.AreEqual("10675199.02:48:05.4775807", data["Duration"].Value); - - // By default json.net converts DateTimes to current time zone - Assert.AreEqual(startTime.Year, ((DateTimeOffset)data["StartTime"].Value).Year); - Assert.AreEqual(DateTimeOffset.MaxValue.Year, ((DateTimeOffset)data["EndTime"].Value).Year); - } - - [TestMethod] - [DataRow(2)] - [DataRow(4)] - public void TestResultObjectShouldContainAllPropertiesOnDeserializationV2(int version) - { - var json = "{\"TestCase\":{\"Id\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\",\"FullyQualifiedName\":\"sampleTestClass.sampleTestCase\",\"DisplayName\":\"sampleTestClass.sampleTestCase\",\"ExecutorUri\":\"executor://sampleTestExecutor\",\"Source\":\"sampleTest.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]},\"Attachments\":[],\"Outcome\":1,\"ErrorMessage\":\"sampleError\",\"ErrorStackTrace\":\"sampleStackTrace\",\"DisplayName\":\"sampleTestResult\",\"Messages\":[],\"ComputerName\":\"sampleComputerName\",\"Duration\":\"10675199.02:48:05.4775807\",\"StartTime\":\"2007-03-10T00:00:00+00:00\",\"EndTime\":\"9999-12-31T23:59:59.9999999+00:00\",\"Properties\":[]}"; - - var test = Deserialize(json, version); - - Assert.AreEqual(testResult.TestCase.Id, test.TestCase.Id); - Assert.AreEqual(testResult.Attachments.Count, test.Attachments.Count); - Assert.AreEqual(testResult.Messages.Count, test.Messages.Count); - - Assert.AreEqual(testResult.ComputerName, test.ComputerName); - Assert.AreEqual(testResult.DisplayName, test.DisplayName); - Assert.AreEqual(testResult.Duration, test.Duration); - Assert.AreEqual(testResult.EndTime, test.EndTime); - Assert.AreEqual(testResult.ErrorMessage, test.ErrorMessage); - Assert.AreEqual(testResult.ErrorStackTrace, test.ErrorStackTrace); - Assert.AreEqual(testResult.Outcome, test.Outcome); - Assert.AreEqual(testResult.StartTime, test.StartTime); - } - - [TestMethod] - [DataRow(2)] - [DataRow(4)] - public void TestResultObjectShouldSerializeAttachmentsV2(int version) - { - var result = new TestResult(testCase); - result.StartTime = default; - result.EndTime = default; - result.Attachments.Add(new AttachmentSet(new Uri("http://dummyUri"), "sampleAttachment")); - var expectedJson = "{\"TestCase\":{\"Id\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\",\"FullyQualifiedName\":\"sampleTestClass.sampleTestCase\",\"DisplayName\":\"sampleTestClass.sampleTestCase\",\"ExecutorUri\":\"executor://sampleTestExecutor\",\"Source\":\"sampleTest.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Outcome\":0,\"ErrorMessage\":null,\"ErrorStackTrace\":null,\"DisplayName\":null,\"Messages\":[],\"ComputerName\":null,\"Duration\":\"00:00:00\",\"StartTime\":\"0001-01-01T00:00:00+00:00\",\"EndTime\":\"0001-01-01T00:00:00+00:00\",\"Properties\":[]}"; - - var json = Serialize(result, version); - - Assert.AreEqual(expectedJson, json); - } - - [TestMethod] - [DataRow(2)] - [DataRow(4)] - public void TestResultObjectShouldDeserializeAttachmentsV2(int version) - { - var json = "{\"TestCase\":{\"Properties\":[{\"Key\":{\"Id\":\"TestCase.FullyQualifiedName\",\"Label\":\"FullyQualifiedName\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.String\"},\"Value\":\"sampleTestClass.sampleTestCase\"},{\"Key\":{\"Id\":\"TestCase.ExecutorUri\",\"Label\":\"Executor Uri\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Uri\"},\"Value\":\"executor://sampleTestExecutor\"},{\"Key\":{\"Id\":\"TestCase.Source\",\"Label\":\"Source\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":0,\"ValueType\":\"System.String\"},\"Value\":\"sampleTest.dll\"},{\"Key\":{\"Id\":\"TestCase.Id\",\"Label\":\"Id\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":1,\"ValueType\":\"System.Guid\"},\"Value\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\"}]},\"Attachments\":[{\"Uri\":\"http://dummyUri\",\"DisplayName\":\"sampleAttachment\",\"Attachments\":[]}],\"Messages\":[],\"Properties\":[]}"; - - var result = Deserialize(json, version); - - Assert.AreEqual(1, result.Attachments.Count); - Assert.AreEqual(new Uri("http://dummyUri"), result.Attachments[0].Uri); - Assert.AreEqual("sampleAttachment", result.Attachments[0].DisplayName); - } - - [TestMethod] - [DataRow(2)] - [DataRow(4)] - public void TestResultPropertiesShouldGetRegisteredAsPartOfDeserializationV2(int version) - { - TestProperty.TryUnregister("DummyProperty", out var property); - var json = "{\"TestCase\":{\"Id\":\"28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b\",\"FullyQualifiedName\":\"sampleTestClass.sampleTestCase\",\"DisplayName\":\"sampleTestClass.sampleTestCase\",\"ExecutorUri\":\"executor://sampleTestExecutor\",\"Source\":\"sampleTest.dll\",\"CodeFilePath\":null,\"LineNumber\":-1,\"Properties\":[]},\"Attachments\":[],\"Outcome\":1,\"ErrorMessage\":\"sampleError\",\"ErrorStackTrace\":\"sampleStackTrace\",\"DisplayName\":\"sampleTestResult\",\"Messages\":[],\"ComputerName\":\"sampleComputerName\",\"Duration\":\"10675199.02:48:05.4775807\",\"StartTime\":\"2007-03-10T00:00:00+00:00\",\"EndTime\":\"9999-12-31T23:59:59.9999999+00:00\"," + - "\"Properties\":[{\"Key\":{\"Id\":\"DummyProperty\",\"Label\":\"DummyPropertyLabel\",\"Category\":\"\",\"Description\":\"\",\"Attributes\":5,\"ValueType\":\"System.String\"},\"Value\":\"dummyString\"},]}"; - - var test = Deserialize(json, version); - - this.VerifyDummyPropertyIsRegistered(); - } - - #endregion - - #region future - - [TestMethod] - public void TestResultSerializationShouldThrowWhenProvidedProtocolVersionDoesNotExist() - { - // this is to ensure that introducing a new version is a conscious choice and - // and that we don't fallback to version 1 as it happened with version 3, because the serializer - // only checked for version 2 - var version = int.MaxValue; - - Assert.ThrowsException(() => Serialize(testResult, version)); - } - - #endregion - - private static string Serialize(T data, int version) - { - return JsonDataSerializer.Instance.Serialize(data, version); - } - - private static T Deserialize(string json, int version) - { - return JsonDataSerializer.Instance.Deserialize(json, version); - } - - private void VerifyDummyPropertyIsRegistered() - { - var dummyProperty = TestProperty.Find("DummyProperty"); - Assert.IsNotNull(dummyProperty); - Assert.AreEqual("DummyPropertyLabel", dummyProperty.Label); - Assert.AreEqual("System.String", dummyProperty.ValueType); - Assert.AreEqual(5, (int)dummyProperty.Attributes); - } + var dummyProperty = TestProperty.Find("DummyProperty"); + Assert.IsNotNull(dummyProperty); + Assert.AreEqual("DummyPropertyLabel", dummyProperty.Label); + Assert.AreEqual("System.String", dummyProperty.ValueType); + Assert.AreEqual(5, (int)dummyProperty.Attributes); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/SocketCommunicationManagerTest.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/SocketCommunicationManagerTest.cs index 8fe31dca87..c8faff459a 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/SocketCommunicationManagerTest.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/SocketCommunicationManagerTest.cs @@ -1,12 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; - [TestClass] - public class SocketCommunicationManagerTest - { - } -} \ No newline at end of file +[TestClass] +public class SocketCommunicationManagerTest +{ +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TelemetryReporterTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TelemetryReporterTests.cs new file mode 100644 index 0000000000..4ed30047ee --- /dev/null +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TelemetryReporterTests.cs @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class TelemetryReporterTests +{ + private readonly Mock _requestData; + private readonly Mock _communicationManager; + private readonly Mock _dataSerializer; + private readonly ITelemetryReporter _telemetryReporter; + + public TelemetryReporterTests() + { + _requestData = new(); + _communicationManager = new(); + _dataSerializer = new(); + _telemetryReporter = new TelemetryReporter(_requestData.Object, _communicationManager.Object, _dataSerializer.Object); + } + + [TestMethod] + public void Report_ShouldDoNothing_IfTelemetryDisabled() + { + _requestData.Setup(r => r.IsTelemetryOptedIn).Returns(false); + TelemetryEvent telemetryEvent = new("name", new Dictionary()); + + _telemetryReporter.Report(telemetryEvent); + + _requestData.VerifyAll(); + _requestData.VerifyNoOtherCalls(); + _dataSerializer.VerifyAll(); + _dataSerializer.VerifyNoOtherCalls(); + _communicationManager.VerifyAll(); + _communicationManager.VerifyNoOtherCalls(); + } + + [TestMethod] + public void Report_ShouldSendMessage_IfTelemetryEnabled() + { + _requestData.Setup(r => r.IsTelemetryOptedIn).Returns(true); + TelemetryEvent telemetryEvent = new("name", new Dictionary()); + var rawMessage = "rawMessage"; + _dataSerializer.Setup(d => d.SerializePayload(MessageType.TelemetryEventMessage, telemetryEvent)).Returns(rawMessage); + + _telemetryReporter.Report(telemetryEvent); + + _communicationManager.Verify(c => c.SendRawMessage(rawMessage)); + _requestData.VerifyAll(); + _requestData.VerifyNoOtherCalls(); + _dataSerializer.VerifyAll(); + _dataSerializer.VerifyNoOtherCalls(); + _communicationManager.VerifyAll(); + _communicationManager.VerifyNoOtherCalls(); + } +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionRequestHandler.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionRequestHandler.cs index b613e78c21..acb0050e1b 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionRequestHandler.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionRequestHandler.cs @@ -1,22 +1,21 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles -{ - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; - /// - /// Testable class for DataCollectionRequestHandler since all constructors of DataCollectionRequestHandler are protected. - /// - internal class TestableDataCollectionRequestHandler : DataCollectionRequestHandler +/// +/// Testable class for DataCollectionRequestHandler since all constructors of DataCollectionRequestHandler are protected. +/// +internal class TestableDataCollectionRequestHandler : DataCollectionRequestHandler +{ + public TestableDataCollectionRequestHandler(ICommunicationManager communicationManager, IMessageSink messageSink, IDataCollectionManager dataCollectionManager, IDataCollectionTestCaseEventHandler dataCollectionTestCaseEventHandler, IDataSerializer dataSerializer, IFileHelper fIleHelper, IRequestData requestData) + : base(communicationManager, messageSink, dataCollectionManager, dataCollectionTestCaseEventHandler, dataSerializer, fIleHelper, requestData) { - public TestableDataCollectionRequestHandler(ICommunicationManager communicationManager, IMessageSink messageSink, IDataCollectionManager dataCollectionManager, IDataCollectionTestCaseEventHandler dataCollectionTestCaseEventHandler, IDataSerializer dataSerializer, IFileHelper fIleHelper, IRequestData requestData) - : base(communicationManager, messageSink, dataCollectionManager, dataCollectionTestCaseEventHandler, dataSerializer, fIleHelper, requestData) - { - } } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionTestCaseEventSender.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionTestCaseEventSender.cs index ce8b0cc4c8..3af9de7c98 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionTestCaseEventSender.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableDataCollectionTestCaseEventSender.cs @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles -{ - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; - internal class TestableDataCollectionTestCaseEventSender : DataCollectionTestCaseEventSender +internal class TestableDataCollectionTestCaseEventSender : DataCollectionTestCaseEventSender +{ + public TestableDataCollectionTestCaseEventSender(ICommunicationManager communicationManager, IDataSerializer dataSerializer) + : base(communicationManager, dataSerializer) { - public TestableDataCollectionTestCaseEventSender(ICommunicationManager communicationManager, IDataSerializer dataSerializer) - : base(communicationManager, dataSerializer) - { - } } } diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableTestObject.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableTestObject.cs index 2127043154..9f7bfb5a62 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableTestObject.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestDoubles/TestableTestObject.cs @@ -1,14 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles -{ - using System.Runtime.Serialization; +using System.Runtime.Serialization; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests.TestDoubles; - [DataContract] - internal class TestableTestObject : TestObject - { - } -} \ No newline at end of file +[DataContract] +internal class TestableTestObject : TestObject +{ +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestRequestSenderTests.cs b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestRequestSenderTests.cs index 5b40d4d776..8cdeb06831 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestRequestSenderTests.cs +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/TestRequestSenderTests.cs @@ -1,880 +1,940 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests; + +[TestClass] +public class TestRequestSenderTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Net.Sockets; - using System.Threading; - - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using VisualStudio.TestPlatform.CoreUtilities.Helpers; - using CommunicationUtilitiesResources = Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Resources.Resources; - - [TestClass] - public class TestRequestSenderTests - { - private const int DUMMYPROTOCOLVERSION = 42; - private const int DEFAULTPROTOCOLVERSION = 1; - private const int DUMMYNEGOTIATEDPROTOCOLVERSION = 41; - private static readonly string TimoutErrorMessage = "Failed to negotiate protocol, waiting for response timed out after 0 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; - - private readonly Mock mockServer; - private readonly Mock mockDataSerializer; - private readonly Mock mockChannel; - - private readonly List pathToAdditionalExtensions = new List { "Hello", "World" }; - private readonly Mock mockDiscoveryEventsHandler; - private readonly Mock mockExecutionEventsHandler; - private readonly TestRunCriteriaWithSources testRunCriteriaWithSources; - private TestHostConnectionInfo connectionInfo; - private ITestRequestSender testRequestSender; - private ConnectedEventArgs connectedEventArgs; - - public TestRequestSenderTests() - { - this.connectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":123", - Role = ConnectionRole.Client, - Transport = Transport.Sockets - }; - this.mockChannel = new Mock(); - this.mockServer = new Mock(); - this.mockDataSerializer = new Mock(); - this.testRequestSender = new TestableTestRequestSender(this.mockServer.Object, this.connectionInfo, this.mockDataSerializer.Object, new ProtocolConfig { Version = DUMMYPROTOCOLVERSION }); - - this.connectedEventArgs = new ConnectedEventArgs(this.mockChannel.Object); - this.mockDiscoveryEventsHandler = new Mock(); - this.mockExecutionEventsHandler = new Mock(); - this.testRunCriteriaWithSources = new TestRunCriteriaWithSources(new Dictionary>(), "runsettings", null, null); - } + private const int Dummyprotocolversion = 42; + private const int Defaultprotocolversion = 1; + private const int Dummynegotiatedprotocolversion = 41; + private static readonly string TimoutErrorMessage = "Failed to negotiate protocol, waiting for response timed out after 0 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; + + private readonly Mock _mockServer; + private readonly Mock _mockDataSerializer; + private readonly Mock _mockChannel; + + private readonly List _pathToAdditionalExtensions = ["Hello", "World"]; + private readonly Mock _mockDiscoveryEventsHandler; + private readonly Mock _mockExecutionEventsHandler; + private readonly TestRunCriteriaWithSources _testRunCriteriaWithSources; + private TestHostConnectionInfo _connectionInfo; + private readonly ITestRequestSender _testRequestSender; + private ConnectedEventArgs _connectedEventArgs; + + public TestRequestSenderTests() + { + _connectionInfo = new TestHostConnectionInfo + { + Endpoint = IPAddress.Loopback + ":123", + Role = ConnectionRole.Client, + Transport = Transport.Sockets + }; + _mockChannel = new Mock(); + _mockChannel.Setup(mc => mc.MessageReceived).Returns(new TrackableEvent()); + _mockServer = new Mock(); + _mockDataSerializer = new Mock(); + _testRequestSender = new TestableTestRequestSender(_mockServer.Object, _connectionInfo, _mockDataSerializer.Object, new ProtocolConfig { Version = Dummyprotocolversion }); + + _connectedEventArgs = new ConnectedEventArgs(_mockChannel.Object); + _mockDiscoveryEventsHandler = new Mock(); + _mockExecutionEventsHandler = new Mock(); + _testRunCriteriaWithSources = new TestRunCriteriaWithSources(new Dictionary>(), "runsettings", null, null!); + } - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); - } + [TestCleanup] + public void Cleanup() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); + } - [TestMethod] - public void InitializeCommunicationShouldHostServerAndAcceptClient() - { - var port = this.SetupFakeCommunicationChannel(); + [TestMethod] + public void InitializeCommunicationShouldHostServerAndAcceptClient() + { + var port = SetupFakeCommunicationChannel(); - Assert.AreEqual("123", port, "Correct port must be returned."); - } + Assert.AreEqual("123", port, "Correct port must be returned."); + } - [TestMethod] - public void WaitForRequestHandlerConnectionShouldWaitForClientToConnect() - { - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void WaitForRequestHandlerConnectionShouldWaitForClientToConnect() + { + SetupFakeCommunicationChannel(); - var connected = this.testRequestSender.WaitForRequestHandlerConnection(1, It.IsAny()); + var connected = _testRequestSender.WaitForRequestHandlerConnection(1, It.IsAny()); - Assert.IsTrue(connected); - } + Assert.IsTrue(connected); + } - [TestMethod] - public void WaitForRequestHandlerConnectionShouldNotConnectIfExceptionWasThrownByTcpLayer() - { - this.connectedEventArgs = new ConnectedEventArgs(new SocketException()); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void WaitForRequestHandlerConnectionShouldNotConnectIfExceptionWasThrownByTcpLayer() + { + _connectedEventArgs = new ConnectedEventArgs(new SocketException()); + SetupFakeCommunicationChannel(); - var connected = this.testRequestSender.WaitForRequestHandlerConnection(1, It.IsAny()); + var connected = _testRequestSender.WaitForRequestHandlerConnection(1, It.IsAny()); - Assert.IsFalse(connected); - } + Assert.IsFalse(connected); + } - [TestMethod] - public void WaitForRequestHandlerConnectionWithTimeoutShouldReturnImmediatelyWhenCancellationRequested() - { - var cancellationTokenSource = new CancellationTokenSource(); - cancellationTokenSource.Cancel(); + [TestMethod] + public void WaitForRequestHandlerConnectionWithTimeoutShouldReturnImmediatelyWhenCancellationRequested() + { + var cancellationTokenSource = new CancellationTokenSource(); + cancellationTokenSource.Cancel(); - var connectionTimeout = 5000; - var watch = System.Diagnostics.Stopwatch.StartNew(); - var connected = this.testRequestSender.WaitForRequestHandlerConnection(connectionTimeout, cancellationTokenSource.Token); - watch.Stop(); + var connectionTimeout = 5000; + var watch = System.Diagnostics.Stopwatch.StartNew(); + var connected = _testRequestSender.WaitForRequestHandlerConnection(connectionTimeout, cancellationTokenSource.Token); + watch.Stop(); - Assert.IsFalse(connected); - Assert.IsTrue(watch.ElapsedMilliseconds < connectionTimeout); - } + Assert.IsFalse(connected); + Assert.IsTrue(watch.ElapsedMilliseconds < connectionTimeout); + } - [TestMethod] - public void WaitForRequestHandlerConnectionWithTimeoutShouldReturnImmediatelyIfHostExitedUnexpectedly() - { - var cancellationTokenSource = new CancellationTokenSource(); - this.testRequestSender.OnClientProcessExit("DummyError"); + [TestMethod] + public void WaitForRequestHandlerConnectionWithTimeoutShouldReturnImmediatelyIfHostExitedUnexpectedly() + { + var cancellationTokenSource = new CancellationTokenSource(); + _testRequestSender.OnClientProcessExit("DummyError"); - var connectionTimeout = 5000; - var watch = System.Diagnostics.Stopwatch.StartNew(); - var connected = this.testRequestSender.WaitForRequestHandlerConnection(connectionTimeout, cancellationTokenSource.Token); - watch.Stop(); + var connectionTimeout = 5000; + var watch = System.Diagnostics.Stopwatch.StartNew(); + var connected = _testRequestSender.WaitForRequestHandlerConnection(connectionTimeout, cancellationTokenSource.Token); + watch.Stop(); - Assert.IsFalse(connected); - Assert.IsTrue(watch.ElapsedMilliseconds < connectionTimeout); - } + Assert.IsFalse(connected); + Assert.IsTrue(watch.ElapsedMilliseconds < connectionTimeout); + } - [TestMethod] - public void CloseShouldCallStopServerOnCommunicationManager() - { - this.testRequestSender.Close(); + [TestMethod] + public void CloseShouldCallStopServerOnCommunicationManager() + { + _testRequestSender.Close(); - this.mockServer.Verify(mc => mc.Stop(), Times.Once); - } + _mockServer.Verify(mc => mc.Stop(), Times.Once); + } - [TestMethod] - public void DisposeShouldCallStopServerOnCommunicationManager() - { - this.testRequestSender.Dispose(); + [TestMethod] + public void DisposeShouldCallStopServerOnCommunicationManager() + { + _testRequestSender.Dispose(); - this.mockServer.Verify(mc => mc.Stop(), Times.Once); - } + _mockServer.Verify(mc => mc.Stop(), Times.Once); + } - [TestMethod] - public void EndSessionShouldSendSessionEndMessage() - { - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void EndSessionShouldSendSessionEndMessage() + { + SetupFakeCommunicationChannel(); - this.testRequestSender.EndSession(); + _testRequestSender.EndSession(); - this.mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.SessionEnd), Times.Once); - this.mockChannel.Verify(c => c.Send(It.IsAny()), Times.Once); - } + _mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.SessionEnd), Times.Once); + _mockChannel.Verify(c => c.Send(It.IsAny()), Times.Once); + } - [TestMethod] - public void EndSessionShouldNotSendSessionEndMessageIfClientDisconnected() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); - this.RaiseClientDisconnectedEvent(); + [TestMethod] + public void EndSessionShouldNotSendSessionEndMessageIfClientDisconnected() + { + SetupFakeCommunicationChannel(); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); + RaiseClientDisconnectedEvent(); - this.testRequestSender.EndSession(); + _testRequestSender.EndSession(); - this.mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.SessionEnd), Times.Never); - } + _mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.SessionEnd), Times.Never); + } - [TestMethod] - public void EndSessionShouldNotSendSessionEndMessageIfTestHostProcessExited() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); - this.testRequestSender.OnClientProcessExit("Dummy Message"); + [TestMethod] + public void EndSessionShouldNotSendSessionEndMessageIfTestHostProcessExited() + { + SetupFakeCommunicationChannel(); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); + _testRequestSender.OnClientProcessExit("Dummy Message"); - this.testRequestSender.EndSession(); + _testRequestSender.EndSession(); - this.mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.SessionEnd), Times.Once); - } + _mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.SessionEnd), Times.Once); + } - [TestMethod] - public void EndSessionShouldNotSendTestRunCancelMessageIfClientDisconnected() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); - this.RaiseClientDisconnectedEvent(); + [TestMethod] + public void EndSessionShouldNotSendTestRunCancelMessageIfClientDisconnected() + { + SetupFakeCommunicationChannel(); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); + RaiseClientDisconnectedEvent(); - this.testRequestSender.SendTestRunCancel(); + _testRequestSender.SendTestRunCancel(); - this.mockChannel.Verify(mockChannel => mockChannel.Send(MessageType.CancelTestRun), Times.Never); - } + _mockChannel.Verify(mockChannel => mockChannel.Send(MessageType.CancelTestRun), Times.Never); + } - [TestMethod] - public void EndSessionShouldNotSendTestRunAbortMessageIfClientDisconnected() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); - this.RaiseClientDisconnectedEvent(); + [TestMethod] + public void EndSessionShouldNotSendTestRunAbortMessageIfClientDisconnected() + { + SetupFakeCommunicationChannel(); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); + RaiseClientDisconnectedEvent(); - this.testRequestSender.SendTestRunAbort(); + _testRequestSender.SendTestRunAbort(); - this.mockChannel.Verify(mockChannel => mockChannel.Send(MessageType.CancelTestRun), Times.Never); - } + _mockChannel.Verify(mockChannel => mockChannel.Send(MessageType.CancelTestRun), Times.Never); + } - [DataTestMethod] - [DataRow("")] - [DataRow(" ")] - [DataRow(null)] - public void OnClientProcessExitShouldSendErrorMessageIfStdErrIsEmpty(string stderr) - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + [DataTestMethod] + [DataRow("")] + [DataRow(" ")] + [DataRow(null)] + public void OnClientProcessExitShouldSendErrorMessageIfStdErrIsEmpty(string stderr) + { + SetupFakeCommunicationChannel(); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.testRequestSender.OnClientProcessExit(stderr); + _testRequestSender.OnClientProcessExit(stderr); - var expectedErrorMessage = "Reason: Test host process crashed"; - this.RaiseClientDisconnectedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.EndsWith(expectedErrorMessage))), Times.Once); - } + var expectedErrorMessage = "Reason: Test host process crashed"; + RaiseClientDisconnectedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.EndsWith(expectedErrorMessage))), Times.Once); + } - [TestMethod] - public void OnClientProcessExitShouldNotSendErrorMessageIfOperationNotStarted() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.OnClientProcessExit("Dummy Stderr"); + [TestMethod] + public void OnClientProcessExitShouldNotSendErrorMessageIfOperationNotStarted() + { + SetupFakeCommunicationChannel(); + _testRequestSender.OnClientProcessExit("Dummy Stderr"); - this.RaiseClientDisconnectedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Stderr"))), Times.Never); - } + RaiseClientDisconnectedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Stderr"))), Times.Never); + } - [TestMethod] - public void OnClientProcessExitShouldNotSendRawMessageIfOperationNotStarted() - { - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void OnClientProcessExitShouldNotSendRawMessageIfOperationNotStarted() + { + SetupFakeCommunicationChannel(); - this.testRequestSender.OnClientProcessExit("Dummy Stderr"); + _testRequestSender.OnClientProcessExit("Dummy Stderr"); - this.RaiseClientDisconnectedEvent(); - this.mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message.Contains("Dummy Stderr"))), Times.Never); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage(It.IsAny()), Times.Never); - } + RaiseClientDisconnectedEvent(); + _mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message!.Contains("Dummy Stderr"))), Times.Never); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage(It.IsAny()), Times.Never); + } - #region Version Check Tests + #region Version Check Tests - [TestMethod] - public void CheckVersionWithTestHostShouldSendHighestSupportedVersion() - { - this.SetupDeserializeMessage(MessageType.VersionCheck, 99); - this.SetupRaiseMessageReceivedOnCheckVersion(); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void CheckVersionWithTestHostShouldSendHighestSupportedVersion() + { + SetupDeserializeMessage(MessageType.VersionCheck, 99); + SetupRaiseMessageReceivedOnCheckVersion(); + SetupFakeCommunicationChannel(); - this.testRequestSender.CheckVersionWithTestHost(); + _testRequestSender.CheckVersionWithTestHost(); - this.mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.VersionCheck, DUMMYPROTOCOLVERSION), Times.Once); - this.mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); - } + _mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.VersionCheck, Dummyprotocolversion), Times.Once); + _mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); + } - [TestMethod] - public void CheckVersionWithTestHostShouldThrowIfTestHostVersionDoesNotMatch() - { - this.SetupDeserializeMessage(MessageType.ProtocolError, string.Empty); - this.SetupRaiseMessageReceivedOnCheckVersion(); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void CheckVersionWithTestHostShouldThrowIfTestHostVersionDoesNotMatch() + { + SetupDeserializeMessage(MessageType.ProtocolError, string.Empty); + SetupRaiseMessageReceivedOnCheckVersion(); + SetupFakeCommunicationChannel(); - Assert.ThrowsException(() => this.testRequestSender.CheckVersionWithTestHost()); - } + Assert.ThrowsException(() => _testRequestSender.CheckVersionWithTestHost()); + } - [TestMethod] - public void CheckVersionWithTestHostShouldThrowIfUnexpectedResponseIsReceived() - { - this.SetupDeserializeMessage(MessageType.TestCasesFound, string.Empty); - this.SetupRaiseMessageReceivedOnCheckVersion(); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void CheckVersionWithTestHostShouldThrowIfUnexpectedResponseIsReceived() + { + SetupDeserializeMessage(MessageType.TestCasesFound, string.Empty); + SetupRaiseMessageReceivedOnCheckVersion(); + SetupFakeCommunicationChannel(); - Assert.ThrowsException(() => this.testRequestSender.CheckVersionWithTestHost()); - } + Assert.ThrowsException(() => _testRequestSender.CheckVersionWithTestHost()); + } - [TestMethod] - public void CheckVersionWithTestHostShouldThrowIfProtocolNegotiationTimeouts() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "0"); + [TestMethod] + public void CheckVersionWithTestHostShouldThrowIfProtocolNegotiationTimeouts() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "0"); - this.SetupFakeCommunicationChannel(); + SetupFakeCommunicationChannel(); - var message = Assert.ThrowsException(() => this.testRequestSender.CheckVersionWithTestHost()).Message; + var message = Assert.ThrowsException(() => _testRequestSender.CheckVersionWithTestHost()).Message; - Assert.AreEqual(message, TestRequestSenderTests.TimoutErrorMessage); - } + Assert.AreEqual(message, TimoutErrorMessage); + } - #endregion + #endregion - #region Discovery Protocol Tests - [TestMethod] - public void InitializeDiscoveryShouldSendCommunicationMessageWithCorrectParameters() - { - this.SetupFakeCommunicationChannel(); + #region Discovery Protocol Tests + [TestMethod] + public void InitializeDiscoveryShouldSendCommunicationMessageWithCorrectParameters() + { + SetupFakeCommunicationChannel(); - this.testRequestSender.InitializeDiscovery(this.pathToAdditionalExtensions); + _testRequestSender.InitializeDiscovery(_pathToAdditionalExtensions); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.DiscoveryInitialize, this.pathToAdditionalExtensions, 1), Times.Once); - this.mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); - } + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.DiscoveryInitialize, _pathToAdditionalExtensions, 1), Times.Once); + _mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); + } - [TestMethod] - public void InitializeDiscoveryShouldSendCommunicationMessageWithCorrectParametersWithVersion() - { - this.SetupFakeChannelWithVersionNegotiation(DUMMYNEGOTIATEDPROTOCOLVERSION); + [TestMethod] + public void InitializeDiscoveryShouldSendCommunicationMessageWithCorrectParametersWithVersion() + { + SetupFakeChannelWithVersionNegotiation(); - this.testRequestSender.InitializeDiscovery(this.pathToAdditionalExtensions); + _testRequestSender.InitializeDiscovery(_pathToAdditionalExtensions); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.DiscoveryInitialize, this.pathToAdditionalExtensions, DUMMYNEGOTIATEDPROTOCOLVERSION), Times.Once); - } + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.DiscoveryInitialize, _pathToAdditionalExtensions, Dummynegotiatedprotocolversion), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldSendStartDiscoveryMessageOnChannel() - { - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestsShouldSendStartDiscoveryMessageOnChannel() + { + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.mockDataSerializer.Verify( - s => s.SerializePayload(MessageType.StartDiscovery, It.IsAny(), DEFAULTPROTOCOLVERSION), - Times.Once); - this.mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); - } + _mockDataSerializer.Verify( + s => s.SerializePayload(MessageType.StartDiscovery, It.IsAny(), Defaultprotocolversion), + Times.Once); + _mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldSendStartDiscoveryMessageOnChannelWithVersion() - { - this.SetupFakeChannelWithVersionNegotiation(DUMMYNEGOTIATEDPROTOCOLVERSION); + [TestMethod] + public void DiscoverTestsShouldSendStartDiscoveryMessageOnChannelWithVersion() + { + SetupFakeChannelWithVersionNegotiation(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.mockDataSerializer.Verify( - s => s.SerializePayload(MessageType.StartDiscovery, It.IsAny(), DUMMYNEGOTIATEDPROTOCOLVERSION), - Times.Once); - } + _mockDataSerializer.Verify( + s => s.SerializePayload(MessageType.StartDiscovery, It.IsAny(), Dummynegotiatedprotocolversion), + Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldNotifyRawMessageOnMessageReceived() - { - this.SetupDeserializeMessage(MessageType.TestMessage, new TestMessagePayload()); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestsShouldNotifyRawMessageOnMessageReceived() + { + SetupDeserializeMessage(MessageType.TestMessage, new TestMessagePayload()); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage("DummyData"), Times.Once); - } + RaiseMessageReceivedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage("DummyData"), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldNotifyDiscoveredTestsOnTestCasesFoundMessageReceived() - { - this.SetupDeserializeMessage>(MessageType.TestCasesFound, new TestCase[2]); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestsShouldNotifyDiscoveredTestsOnTestCasesFoundMessageReceived() + { + SetupDeserializeMessage>(MessageType.TestCasesFound, new TestCase[2]); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveredTests(It.Is>(t => t.Count() == 2))); - } + RaiseMessageReceivedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveredTests(It.Is>(t => t.Count() == 2))); + } - [TestMethod] - public void DiscoverTestsShouldNotifyDiscoveryCompleteOnCompleteMessageReceived() - { - var completePayload = new DiscoveryCompletePayload { TotalTests = 10, IsAborted = false }; - this.SetupDeserializeMessage(MessageType.DiscoveryComplete, completePayload); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestsShouldNotifyDiscoveryCompleteOnCompleteMessageReceived() + { + var completePayload = new DiscoveryCompletePayload { TotalTests = 10, IsAborted = false }; + SetupDeserializeMessage(MessageType.DiscoveryComplete, completePayload); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == false && dc.TotalCount == 10), null)); - } + RaiseMessageReceivedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == false && dc.TotalCount == 10), null)); + } - [TestMethod] - public void DiscoverTestsShouldStopServerOnCompleteMessageReceived() - { - var completePayload = new DiscoveryCompletePayload { TotalTests = 10, IsAborted = false }; - this.SetupDeserializeMessage(MessageType.DiscoveryComplete, completePayload); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestsShouldStopServerOnCompleteMessageReceived() + { + var completePayload = new DiscoveryCompletePayload { TotalTests = 10, IsAborted = false }; + SetupDeserializeMessage(MessageType.DiscoveryComplete, completePayload); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); + RaiseMessageReceivedEvent(); - this.mockServer.Verify(ms => ms.Stop()); - } + _mockServer.Verify(ms => ms.Stop()); + } - [TestMethod] - public void DiscoverTestShouldNotifyLogMessageOnTestMessageReceived() - { - var message = new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "Message1" }; - this.SetupDeserializeMessage(MessageType.TestMessage, message); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestShouldNotifyLogMessageOnTestMessageReceived() + { + var message = new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "Message1" }; + SetupDeserializeMessage(MessageType.TestMessage, message); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, "Message1")); - } + RaiseMessageReceivedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, "Message1")); + } - [TestMethod] - public void DiscoverTestShouldNotifyLogMessageIfExceptionThrownOnMessageReceived() - { - this.SetupExceptionOnMessageReceived(); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestShouldNotifyLogMessageIfExceptionThrownOnMessageReceived() + { + SetupExceptionOnMessageReceived(); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Message")))); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedMessage"), Times.Once); - } + RaiseMessageReceivedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Message")))); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedMessage"), Times.Once); + } - [TestMethod] - public void DiscoverTestShouldNotifyDiscoveryCompleteIfExceptionThrownOnMessageReceived() - { - this.SetupExceptionOnMessageReceived(); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void DiscoverTestShouldNotifyDiscoveryCompleteIfExceptionThrownOnMessageReceived() + { + SetupExceptionOnMessageReceived(); + SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == true && dc.TotalCount == -1), null)); - } + RaiseMessageReceivedEvent(); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == true && dc.TotalCount == -1), null)); + } - [TestMethod] - public void DiscoverTestsShouldNotAbortDiscoveryIfClientDisconnectedAndOperationIsComplete() - { - var completePayload = new DiscoveryCompletePayload { TotalTests = 10, IsAborted = false }; - this.SetupDeserializeMessage(MessageType.DiscoveryComplete, completePayload); - this.SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); - this.RaiseMessageReceivedEvent(); // Raise discovery complete + [TestMethod] + public void DiscoverTestsShouldNotAbortDiscoveryIfClientDisconnectedAndOperationIsComplete() + { + var completePayload = new DiscoveryCompletePayload { TotalTests = 10, IsAborted = false }; + SetupDeserializeMessage(MessageType.DiscoveryComplete, completePayload); + SetupFakeCommunicationChannel(); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); + RaiseMessageReceivedEvent(); // Raise discovery complete - this.RaiseClientDisconnectedEvent(); + RaiseClientDisconnectedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Never); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(-1, true), null), Times.Never); - } + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Never); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(-1, true), null), Times.Never); + } - [TestMethod] - public void DiscoverTestShouldNotifyLogMessageIfClientDisconnected() - { - // Expect default error message since we've not set any client exit message - var expectedErrorMessage = "Reason: Unable to communicate"; - this.SetupFakeCommunicationChannel(); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message.Contains(expectedErrorMessage)))) - .Returns("Serialized error"); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + [TestMethod] + public void DiscoverTestShouldNotifyLogMessageIfClientDisconnected() + { + // Expect default error message since we've not set any client exit message + var expectedErrorMessage = "Reason: Unable to communicate"; + SetupFakeCommunicationChannel(); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message!.Contains(expectedErrorMessage)))) + .Returns("Serialized error"); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - this.RaiseClientDisconnectedEvent(); + RaiseClientDisconnectedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains(expectedErrorMessage)))); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage(It.Is(s => !string.IsNullOrEmpty(s) && s.Equals("Serialized error"))), Times.Once); - } + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains(expectedErrorMessage)))); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage(It.Is(s => !string.IsNullOrEmpty(s) && s.Equals("Serialized error"))), Times.Once); + } - [TestMethod] - public void DiscoverTestShouldNotifyLogMessageIfClientDisconnectedWithClientExit() - { - this.SetupFakeCommunicationChannel(); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message.Contains("Dummy Stderr")))) - .Returns("Serialized Stderr"); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); - this.testRequestSender.OnClientProcessExit("Dummy Stderr"); + [TestMethod] + public void DiscoverTestShouldNotifyLogMessageIfClientDisconnectedWithClientExit() + { + SetupFakeCommunicationChannel(); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message!.Contains("Dummy Stderr")))) + .Returns("Serialized Stderr"); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); + _testRequestSender.OnClientProcessExit("Dummy Stderr"); - this.RaiseClientDisconnectedEvent(); + RaiseClientDisconnectedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Stderr"))), Times.Once); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage(It.Is(s => !string.IsNullOrEmpty(s) && s.Equals("Serialized Stderr"))), Times.Once); - } + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Stderr"))), Times.Once); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleRawMessage(It.Is(s => !string.IsNullOrEmpty(s) && s.Equals("Serialized Stderr"))), Times.Once); + } - [TestMethod] - public void DiscoverTestShouldNotifyDiscoveryCompleteIfClientDisconnected() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.DiscoverTests(new DiscoveryCriteria(), this.mockDiscoveryEventsHandler.Object); + [TestMethod] + public void DiscoverTestShouldNotifyDiscoveryCompleteIfClientDisconnectedBeforeDiscovery() + { + SetupFakeCommunicationChannel(); - this.RaiseClientDisconnectedEvent(); + RaiseClientDisconnectedEvent(); - this.mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == true && dc.TotalCount == -1), null)); - } + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - #endregion + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == true && dc.TotalCount == -1), null)); + } - #region Execution Protocol Tests + [TestMethod] + public void DiscoverTestShouldNotifyDiscoveryCompleteIfClientDisconnected() + { + SetupFakeCommunicationChannel(); + _testRequestSender.DiscoverTests(new DiscoveryCriteria(), _mockDiscoveryEventsHandler.Object); - [TestMethod] - public void InitializeExecutionShouldSendCommunicationMessageWithCorrectParameters() - { - this.SetupFakeCommunicationChannel(); + RaiseClientDisconnectedEvent(); - this.testRequestSender.InitializeExecution(this.pathToAdditionalExtensions); + _mockDiscoveryEventsHandler.Verify(eh => eh.HandleDiscoveryComplete(It.Is(dc => dc.IsAborted == true && dc.TotalCount == -1), null)); + } - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.ExecutionInitialize, this.pathToAdditionalExtensions, 1), Times.Once); - this.mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); - } + #endregion - [TestMethod] - public void InitializeExecutionShouldSendCommunicationMessageWithCorrectParametersWithVersion() - { - this.SetupFakeChannelWithVersionNegotiation(DUMMYNEGOTIATEDPROTOCOLVERSION); + #region Execution Protocol Tests - this.testRequestSender.InitializeExecution(this.pathToAdditionalExtensions); + [TestMethod] + public void InitializeExecutionShouldSendCommunicationMessageWithCorrectParameters() + { + SetupFakeCommunicationChannel(); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.ExecutionInitialize, this.pathToAdditionalExtensions, DUMMYNEGOTIATEDPROTOCOLVERSION), Times.Once); - } + _testRequestSender.InitializeExecution(_pathToAdditionalExtensions); - [TestMethod] - public void StartTestRunShouldSendStartTestExecutionWithSourcesOnChannel() - { - this.SetupFakeCommunicationChannel(); + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.ExecutionInitialize, _pathToAdditionalExtensions, 1), Times.Once); + _mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void InitializeExecutionShouldSendCommunicationMessageWithCorrectParametersWithVersion() + { + SetupFakeChannelWithVersionNegotiation(); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithSources, this.testRunCriteriaWithSources, DEFAULTPROTOCOLVERSION), Times.Once); - this.mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); - } + _testRequestSender.InitializeExecution(_pathToAdditionalExtensions); - [TestMethod] - public void StartTestRunShouldSendStartTestExecutionWithSourcesOnChannelWithVersion() - { - this.SetupFakeChannelWithVersionNegotiation(DUMMYNEGOTIATEDPROTOCOLVERSION); + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.ExecutionInitialize, _pathToAdditionalExtensions, Dummynegotiatedprotocolversion), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldSendStartTestExecutionWithSourcesOnChannel() + { + SetupFakeCommunicationChannel(); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithSources, this.testRunCriteriaWithSources, DUMMYNEGOTIATEDPROTOCOLVERSION), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunWithTestsShouldSendStartTestExecutionWithTestsOnChannel() - { - var runCriteria = new TestRunCriteriaWithTests(new TestCase[2], "runsettings", null, null); - this.SetupFakeCommunicationChannel(); + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithSources, _testRunCriteriaWithSources, Defaultprotocolversion), Times.Once); + _mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); + } - this.testRequestSender.StartTestRun(runCriteria, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldSendStartTestExecutionWithSourcesOnChannelWithVersion() + { + SetupFakeChannelWithVersionNegotiation(); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithTests, runCriteria, DEFAULTPROTOCOLVERSION), Times.Once); - this.mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunWithTestsShouldSendStartTestExecutionWithTestsOnChannelWithVersion() - { - var runCriteria = new TestRunCriteriaWithTests(new TestCase[2], "runsettings", null, null); - this.SetupFakeChannelWithVersionNegotiation(DUMMYNEGOTIATEDPROTOCOLVERSION); + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithSources, _testRunCriteriaWithSources, Dummynegotiatedprotocolversion), Times.Once); + } - this.testRequestSender.StartTestRun(runCriteria, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunWithTestsShouldSendStartTestExecutionWithTestsOnChannel() + { + var runCriteria = new TestRunCriteriaWithTests(new TestCase[2], "runsettings", null, null!); + SetupFakeCommunicationChannel(); - this.mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithTests, runCriteria, DUMMYNEGOTIATEDPROTOCOLVERSION), Times.Once); - } + _testRequestSender.StartTestRun(runCriteria, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotifyRawMessageOnMessageReceived() - { - this.SetupDeserializeMessage(MessageType.TestMessage, new TestMessagePayload()); - this.SetupFakeCommunicationChannel(); + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithTests, runCriteria, Defaultprotocolversion), Times.Once); + _mockChannel.Verify(mc => mc.Send(It.IsAny()), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunWithTestsShouldSendStartTestExecutionWithTestsOnChannelWithVersion() + { + var runCriteria = new TestRunCriteriaWithTests(new TestCase[2], "runsettings", null, null!); + SetupFakeChannelWithVersionNegotiation(); - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("DummyData"), Times.Once); - } + _testRequestSender.StartTestRun(runCriteria, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotifyTestRunStatsChangeOnRunStatsMessageReceived() - { - var testRunChangedArgs = new TestRunChangedEventArgs( - null, - new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult[2], - new TestCase[2]); - this.SetupDeserializeMessage(MessageType.TestRunStatsChange, testRunChangedArgs); - this.SetupFakeCommunicationChannel(); + _mockDataSerializer.Verify(d => d.SerializePayload(MessageType.StartTestExecutionWithTests, runCriteria, Dummynegotiatedprotocolversion), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldNotifyRawMessageOnMessageReceived() + { + SetupDeserializeMessage(MessageType.TestMessage, new TestMessagePayload()); + SetupFakeCommunicationChannel(); - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunStatsChange(testRunChangedArgs), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotifyExecutionCompleteOnRunCompleteMessageReceived() - { - var testRunCompletePayload = new TestRunCompletePayload - { - TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.MaxValue), - LastRunTests = new TestRunChangedEventArgs(null, null, null), - RunAttachments = new List() - }; - this.SetupDeserializeMessage(MessageType.ExecutionComplete, testRunCompletePayload); - this.SetupFakeCommunicationChannel(); - - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); - - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify( - eh => eh.HandleTestRunComplete( - testRunCompletePayload.TestRunCompleteArgs, - testRunCompletePayload.LastRunTests, - testRunCompletePayload.RunAttachments, - It.IsAny>()), - Times.Once); - } + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("DummyData"), Times.Once); + } - [TestMethod] - public void StartTestRunShouldStopServerOnRunCompleteMessageReceived() - { - var testRunCompletePayload = new TestRunCompletePayload - { - TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.MaxValue), - LastRunTests = new TestRunChangedEventArgs(null, null, null), - RunAttachments = new List() - }; - this.SetupDeserializeMessage(MessageType.ExecutionComplete, testRunCompletePayload); - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void StartTestRunShouldNotifyTestRunStatsChangeOnRunStatsMessageReceived() + { + var testRunChangedArgs = new TestRunChangedEventArgs( + null, + new VisualStudio.TestPlatform.ObjectModel.TestResult[2], + new TestCase[2]); + SetupDeserializeMessage(MessageType.TestRunStatsChange, testRunChangedArgs); + SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - this.RaiseMessageReceivedEvent(); + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunStatsChange(testRunChangedArgs), Times.Once); + } - this.mockServer.Verify(ms => ms.Stop()); - } + [TestMethod] + public void StartTestRunShouldNotifyExecutionCompleteOnRunCompleteMessageReceived() + { + var testRunCompletePayload = new TestRunCompletePayload + { + TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.MaxValue), + LastRunTests = new TestRunChangedEventArgs(null, null, null), + RunAttachments = new List() + }; + SetupDeserializeMessage(MessageType.ExecutionComplete, testRunCompletePayload); + SetupFakeCommunicationChannel(); + + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); + + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify( + eh => eh.HandleTestRunComplete( + testRunCompletePayload.TestRunCompleteArgs, + testRunCompletePayload.LastRunTests, + testRunCompletePayload.RunAttachments, + It.IsAny>()), + Times.Once); + } - [TestMethod] - public void StartTestRunShouldNotifyLogMessageOnTestMessageReceived() + [TestMethod] + public void StartTestRunShouldStopServerOnRunCompleteMessageReceived() + { + var testRunCompletePayload = new TestRunCompletePayload { - var testMessagePayload = new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "Dummy" }; - this.SetupDeserializeMessage(MessageType.TestMessage, testMessagePayload); - this.SetupFakeCommunicationChannel(); + TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.MaxValue), + LastRunTests = new TestRunChangedEventArgs(null, null, null), + RunAttachments = new List() + }; + SetupDeserializeMessage(MessageType.ExecutionComplete, testRunCompletePayload); + SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, "Dummy"), Times.Once); - } + RaiseMessageReceivedEvent(); - [TestMethod] - public void StartTestRunShouldNotifyLaunchWithDebuggerOnMessageReceived() - { - var launchMessagePayload = new TestProcessStartInfo(); - this.SetupDeserializeMessage(MessageType.LaunchAdapterProcessWithDebuggerAttached, launchMessagePayload); - this.SetupFakeCommunicationChannel(); + _mockServer.Verify(ms => ms.Stop()); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldNotifyLogMessageOnTestMessageReceived() + { + var testMessagePayload = new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "Dummy" }; + SetupDeserializeMessage(MessageType.TestMessage, testMessagePayload); + SetupFakeCommunicationChannel(); - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.LaunchProcessWithDebuggerAttached(launchMessagePayload), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldSendLaunchDebuggerAttachedCallbackOnMessageReceived() - { - var launchMessagePayload = new TestProcessStartInfo(); - this.SetupDeserializeMessage(MessageType.LaunchAdapterProcessWithDebuggerAttached, launchMessagePayload); - this.SetupFakeCommunicationChannel(); + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, "Dummy"), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldNotifyLaunchWithDebuggerOnMessageReceived() + { + var launchMessagePayload = new TestProcessStartInfo(); + SetupDeserializeMessage(MessageType.LaunchAdapterProcessWithDebuggerAttached, launchMessagePayload); + SetupFakeCommunicationChannel(); - this.RaiseMessageReceivedEvent(); - this.mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, It.IsAny(), 1), Times.Once); - this.mockChannel.Verify(c => c.Send(It.IsAny()), Times.AtLeastOnce); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldSendLaunchDebuggerAttachedCallbackOnMessageReceivedWithVersion() - { - var launchMessagePayload = new TestProcessStartInfo(); - this.SetupFakeChannelWithVersionNegotiation(DUMMYNEGOTIATEDPROTOCOLVERSION); - this.SetupDeserializeMessage(MessageType.LaunchAdapterProcessWithDebuggerAttached, launchMessagePayload); + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify(eh => eh.LaunchProcessWithDebuggerAttached(launchMessagePayload), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldSendLaunchDebuggerAttachedCallbackOnMessageReceived() + { + var launchMessagePayload = new TestProcessStartInfo(); + SetupDeserializeMessage(MessageType.LaunchAdapterProcessWithDebuggerAttached, launchMessagePayload); + SetupFakeCommunicationChannel(); - this.RaiseMessageReceivedEvent(); - this.mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, It.IsAny(), DUMMYNEGOTIATEDPROTOCOLVERSION), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotifyLogMessageIfExceptionIsThrownOnMessageReceived() - { - this.SetupExceptionOnMessageReceived(); - this.SetupFakeCommunicationChannel(); + RaiseMessageReceivedEvent(); + _mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, It.IsAny(), 1), Times.Once); + _mockChannel.Verify(c => c.Send(It.IsAny()), Times.AtLeastOnce); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldSendLaunchDebuggerAttachedCallbackOnMessageReceivedWithVersion() + { + var launchMessagePayload = new TestProcessStartInfo(); + SetupFakeChannelWithVersionNegotiation(); + SetupDeserializeMessage(MessageType.LaunchAdapterProcessWithDebuggerAttached, launchMessagePayload); - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Message"))), Times.Once); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedMessage"), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotifyExecutionCompleteIfExceptionIsThrownOnMessageReceived() - { - this.SetupExceptionOnMessageReceived(); - this.SetupFakeCommunicationChannel(); + RaiseMessageReceivedEvent(); + _mockDataSerializer.Verify(ds => ds.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, It.IsAny(), Dummynegotiatedprotocolversion), Times.Once); + } - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldNotifyLogMessageIfExceptionIsThrownOnMessageReceived() + { + SetupExceptionOnMessageReceived(); + SetupFakeCommunicationChannel(); - this.RaiseMessageReceivedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotNotifyExecutionCompleteIfClientDisconnectedAndOperationComplete() - { - var testRunCompletePayload = new TestRunCompletePayload - { - TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.MaxValue), - LastRunTests = new TestRunChangedEventArgs(null, null, null), - RunAttachments = new List() - }; - this.SetupDeserializeMessage(MessageType.ExecutionComplete, testRunCompletePayload); - this.SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); - this.RaiseMessageReceivedEvent(); // Raise test run complete - - this.RaiseClientDisconnectedEvent(); - - this.mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Never); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Never); - } + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains("Dummy Message"))), Times.Once); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedMessage"), Times.Once); + } - [TestMethod] - public void StartTestRunShouldNotifyErrorLogMessageIfClientDisconnected() - { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldNotifyExecutionCompleteIfExceptionIsThrownOnMessageReceived() + { + SetupExceptionOnMessageReceived(); + SetupFakeCommunicationChannel(); - this.RaiseClientDisconnectedEvent(); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - // Expect default error message since we've not set any client exit message - var expectedErrorMessage = "Reason: Unable to communicate"; - this.mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains(expectedErrorMessage))), Times.Once); - } + RaiseMessageReceivedEvent(); + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); + } - [TestMethod] - public void StartTestRunShouldNotifyErrorLogMessageIfClientDisconnectedWithClientExit() + [TestMethod] + public void StartTestRunShouldNotNotifyExecutionCompleteIfClientDisconnectedAndOperationComplete() + { + var testRunCompletePayload = new TestRunCompletePayload { - this.SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); - this.testRequestSender.OnClientProcessExit("Dummy Stderr"); + TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.MaxValue), + LastRunTests = new TestRunChangedEventArgs(null, null, null), + RunAttachments = new List() + }; + SetupDeserializeMessage(MessageType.ExecutionComplete, testRunCompletePayload); + SetupFakeCommunicationChannel(); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); + RaiseMessageReceivedEvent(); // Raise test run complete - this.RaiseClientDisconnectedEvent(); + RaiseClientDisconnectedEvent(); - var expectedErrorMessage = "Reason: Test host process crashed : Dummy Stderr"; - this.mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains(expectedErrorMessage))), Times.Once); - } + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Never); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Never); + } - [TestMethod] - public void StartTestRunShouldNotifyExecutionCompleteIfClientDisconnected() - { - this.SetupOperationAbortedPayload(); - this.SetupFakeCommunicationChannel(); - this.testRequestSender.StartTestRun(this.testRunCriteriaWithSources, this.mockExecutionEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldNotifyErrorLogMessageIfClientDisconnected() + { + SetupFakeCommunicationChannel(); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - this.RaiseClientDisconnectedEvent(); + RaiseClientDisconnectedEvent(); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); - this.mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); - } + // Expect default error message since we've not set any client exit message + var expectedErrorMessage = "Reason: Unable to communicate"; + _mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains(expectedErrorMessage))), Times.Once); + } - [TestMethod] - public void SendTestRunCancelShouldSendCancelTestRunMessage() - { - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void StartTestRunShouldNotifyErrorLogMessageIfClientDisconnectedWithClientExit() + { + SetupFakeCommunicationChannel(); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); + _testRequestSender.OnClientProcessExit("Dummy Stderr"); - this.testRequestSender.SendTestRunCancel(); + RaiseClientDisconnectedEvent(); - this.mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.CancelTestRun), Times.Once); - this.mockChannel.Verify(c => c.Send(It.IsAny()), Times.Once); - } + var expectedErrorMessage = "Reason: Test host process crashed : Dummy Stderr"; + _mockExecutionEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.Contains(expectedErrorMessage))), Times.Once); + } - [TestMethod] - public void SendTestRunAbortShouldSendAbortTestRunMessage() - { - this.SetupFakeCommunicationChannel(); + [TestMethod] + public void StartTestRunShouldNotifyExecutionCompleteIfClientDisconnectedBeforeRun() + { + SetupOperationAbortedPayload(); + SetupFakeCommunicationChannel(); - this.testRequestSender.SendTestRunAbort(); + RaiseClientDisconnectedEvent(); - this.mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.AbortTestRun), Times.Once); - this.mockChannel.Verify(c => c.Send(It.IsAny()), Times.Once); - } + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - #endregion + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); + } - private string SetupFakeCommunicationChannel(string connectionArgs = "123") - { - this.connectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":" + connectionArgs, - Role = ConnectionRole.Client, - Transport = Transport.Sockets - }; - - // Setup mock connected event and initialize communication channel - this.mockServer.Setup(mc => mc.Start(this.connectionInfo.Endpoint)) - .Returns(this.connectionInfo.Endpoint) - .Callback(() => this.mockServer.Raise(s => s.Connected += null, this.mockServer.Object, this.connectedEventArgs)); - - return this.testRequestSender.InitializeCommunication().ToString(); - } + [TestMethod] + public void StartTestRunWithTestsShouldNotifyExecutionCompleteIfClientDisconnectedBeforeRun() + { + var runCriteria = new TestRunCriteriaWithTests(new TestCase[2], "runsettings", null, null!); + SetupOperationAbortedPayload(); + SetupFakeCommunicationChannel(); - private void SetupFakeChannelWithVersionNegotiation(int protocolVersion) - { - // Sends a check version message to setup the negotiated protocol version. - // This method is only required in specific tests. - this.SetupDeserializeMessage(MessageType.VersionCheck, DUMMYNEGOTIATEDPROTOCOLVERSION); - this.SetupRaiseMessageReceivedOnCheckVersion(); - this.SetupFakeCommunicationChannel(); - this.testRequestSender.CheckVersionWithTestHost(); - this.ResetRaiseMessageReceivedOnCheckVersion(); - } + RaiseClientDisconnectedEvent(); - private void RaiseMessageReceivedEvent() - { - this.mockChannel.Raise( - c => c.MessageReceived += null, - this.mockChannel.Object, - new MessageReceivedEventArgs { Data = "DummyData" }); - } + _testRequestSender.StartTestRun(runCriteria, _mockExecutionEventsHandler.Object); - private void RaiseClientDisconnectedEvent() - { - this.mockServer.Raise( - s => s.Disconnected += null, - this.mockServer.Object, - new DisconnectedEventArgs { Error = new Exception("Dummy Message") }); - } + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); + } - private void SetupDeserializeMessage(string messageType, TPayload payload) - { - this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())) - .Returns(new Message { MessageType = messageType }); - this.mockDataSerializer.Setup(ds => ds.DeserializePayload(It.IsAny())) - .Returns(payload); - } + [TestMethod] + public async Task StartTestRunWithTestsShouldNotifyExecutionCompleteIfClientDisconnectedBeforeRunInAThreadSafeWay() + { + var runCriteria = new TestRunCriteriaWithTests(new TestCase[2], "runsettings", null, null!); + SetupOperationAbortedPayload(); + SetupFakeCommunicationChannel(); - private void SetupExceptionMessageSerialize() - { - // Serialize the exception message - this.mockDataSerializer - .Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message.Contains("Dummy Message")))) - .Returns("SerializedMessage"); - } + // Note: Even if the calls get invoked on separate threads, the request sender should send back the complete message just once. + var t1 = Task.Run(RaiseClientDisconnectedEvent); + var t2 = Task.Run(() => _testRequestSender.StartTestRun(runCriteria, _mockExecutionEventsHandler.Object)); - private void SetupOperationAbortedPayload() - { - // Serialize the execution aborted - this.mockDataSerializer - .Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.Is(p => p.TestRunCompleteArgs.IsAborted))) - .Returns("SerializedAbortedPayload"); - } + await Task.WhenAll(t1, t2); - private void SetupExceptionOnMessageReceived() - { - this.SetupExceptionMessageSerialize(); - this.SetupOperationAbortedPayload(); + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); + } - this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())) - .Callback(() => throw new Exception("Dummy Message")); - } + [TestMethod] + public void StartTestRunShouldNotifyExecutionCompleteIfClientDisconnected() + { + SetupOperationAbortedPayload(); + SetupFakeCommunicationChannel(); + _testRequestSender.StartTestRun(_testRunCriteriaWithSources, _mockExecutionEventsHandler.Object); - private void SetupRaiseMessageReceivedOnCheckVersion() - { - this.mockChannel.Setup(mc => mc.Send(It.IsAny())).Callback(this.RaiseMessageReceivedEvent); - } + RaiseClientDisconnectedEvent(); + + _mockExecutionEventsHandler.Verify(eh => eh.HandleTestRunComplete(It.Is(t => t.IsAborted), null, null, null), Times.Once); + _mockExecutionEventsHandler.Verify(eh => eh.HandleRawMessage("SerializedAbortedPayload"), Times.Once); + } + + [TestMethod] + public void SendTestRunCancelShouldSendCancelTestRunMessage() + { + SetupFakeCommunicationChannel(); + + _testRequestSender.SendTestRunCancel(); + + _mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.CancelTestRun), Times.Once); + _mockChannel.Verify(c => c.Send(It.IsAny()), Times.Once); + } + + [TestMethod] + public void SendTestRunAbortShouldSendAbortTestRunMessage() + { + SetupFakeCommunicationChannel(); + + _testRequestSender.SendTestRunAbort(); - private void ResetRaiseMessageReceivedOnCheckVersion() + _mockDataSerializer.Verify(ds => ds.SerializeMessage(MessageType.AbortTestRun), Times.Once); + _mockChannel.Verify(c => c.Send(It.IsAny()), Times.Once); + } + + #endregion + + private string SetupFakeCommunicationChannel(string connectionArgs = "123") + { + _connectionInfo = new TestHostConnectionInfo { - this.mockChannel.Reset(); - } + Endpoint = IPAddress.Loopback + ":" + connectionArgs, + Role = ConnectionRole.Client, + Transport = Transport.Sockets + }; - private class TestableTestRequestSender : TestRequestSender + // Setup mock connected event and initialize communication channel + _mockServer.Setup(mc => mc.Start(_connectionInfo.Endpoint)) + .Returns(_connectionInfo.Endpoint) + .Callback(() => _mockServer.Raise(s => s.Connected += null, _mockServer.Object, _connectedEventArgs)); + + return _testRequestSender.InitializeCommunication().ToString(CultureInfo.CurrentCulture); + } + + private void SetupFakeChannelWithVersionNegotiation() + { + // Sends a check version message to setup the negotiated protocol version. + // This method is only required in specific tests. + SetupDeserializeMessage(MessageType.VersionCheck, Dummynegotiatedprotocolversion); + SetupRaiseMessageReceivedOnCheckVersion(); + SetupFakeCommunicationChannel(); + _testRequestSender.CheckVersionWithTestHost(); + ResetRaiseMessageReceivedOnCheckVersion(); + + _mockChannel.Setup(mc => mc.MessageReceived).Returns(new TrackableEvent()); + } + + private void RaiseMessageReceivedEvent() + { + var eventArgs = new MessageReceivedEventArgs { Data = "DummyData" }; + _mockChannel.Object.MessageReceived.Notify(_mockChannel.Object, eventArgs, "TestRequestSenderTests.RaiseMessageReceivedEvent()"); + } + + private void RaiseClientDisconnectedEvent() + { + _mockServer.Raise( + s => s.Disconnected += null, + _mockServer.Object, + new DisconnectedEventArgs { Error = new Exception("Dummy Message") }); + } + + private void SetupDeserializeMessage(string messageType, TPayload payload) + { + _mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())) + .Returns(new Message { MessageType = messageType }); + _mockDataSerializer.Setup(ds => ds.DeserializePayload(It.IsAny())) + .Returns(payload); + } + + private void SetupExceptionMessageSerialize() + { + // Serialize the exception message + _mockDataSerializer + .Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.Is(p => p.Message!.Contains("Dummy Message")))) + .Returns("SerializedMessage"); + } + + private void SetupOperationAbortedPayload() + { + // Serialize the execution aborted + _mockDataSerializer + .Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.Is(p => p.TestRunCompleteArgs!.IsAborted))) + .Returns("SerializedAbortedPayload"); + } + + private void SetupExceptionOnMessageReceived() + { + SetupExceptionMessageSerialize(); + SetupOperationAbortedPayload(); + + _mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())) + .Callback(() => throw new Exception("Dummy Message")); + } + + private void SetupRaiseMessageReceivedOnCheckVersion() + { + _mockChannel.Setup(mc => mc.Send(It.IsAny())).Callback(RaiseMessageReceivedEvent); + } + + private void ResetRaiseMessageReceivedOnCheckVersion() + { + _mockChannel.Reset(); + } + + private class TestableTestRequestSender : TestRequestSender + { + public TestableTestRequestSender(ICommunicationEndPoint commEndpoint, TestHostConnectionInfo connectionInfo, IDataSerializer serializer, ProtocolConfig protocolConfig) + : base(commEndpoint, connectionInfo, serializer, protocolConfig, 0) { - public TestableTestRequestSender(ICommunicationEndPoint commEndpoint, TestHostConnectionInfo connectionInfo, IDataSerializer serializer, ProtocolConfig protocolConfig) - : base(commEndpoint, connectionInfo, serializer, protocolConfig, 0) - { - } } } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/FeatureFlag/FeatureFlagTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/FeatureFlag/FeatureFlagTests.cs new file mode 100644 index 0000000000..0ed6cce62a --- /dev/null +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/FeatureFlag/FeatureFlagTests.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CoreUtilities.UnitTests; + +[TestClass] +public class FeatureFlagTests +{ + [TestMethod] + public void SingletonAlwaysReturnsTheSameInstance() + { + Assert.IsTrue(ReferenceEquals(FeatureFlag.Instance, FeatureFlag.Instance)); + } +} diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/CommandLineArgumentsHelperTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/CommandLineArgumentsHelperTests.cs index d8b7e460f5..1b7ec113d6 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/CommandLineArgumentsHelperTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/CommandLineArgumentsHelperTests.cs @@ -1,143 +1,142 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers; + +[TestClass] +public class CommandLineArgumentsHelperTests { - using System.Collections.Generic; + [TestMethod] + public void GetArgumentsDictionaryShouldReturnDictionary() + { + var args = new List() { "--port", "12312", "--parentprocessid", "2312", "--testsourcepath", @"C:\temp\1.dll" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + Assert.AreEqual("12312", argsDictionary["--port"]); + Assert.AreEqual("2312", argsDictionary["--parentprocessid"]); + Assert.AreEqual(@"C:\temp\1.dll", argsDictionary["--testsourcepath"]); + } + + [TestMethod] + public void GetArgumentsDictionaryShouldIgnoreValuesWithoutPreceedingHypen() + { + var args = new List() { "port", "12312", "--parentprocessid", "2312", "--testsourcepath", @"C:\temp\1.dll" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + Assert.IsTrue(argsDictionary.Count == 2); + Assert.AreEqual("2312", argsDictionary["--parentprocessid"]); + Assert.AreEqual(@"C:\temp\1.dll", argsDictionary["--testsourcepath"]); + + args = ["--port", "12312", "--parentprocessid", "2312", "testsourcepath", @"C:\temp\1.dll"]; + argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + Assert.IsTrue(argsDictionary.Count == 2); + Assert.AreEqual("12312", argsDictionary["--port"]); + Assert.AreEqual("2312", argsDictionary["--parentprocessid"]); + } + + [TestMethod] + public void GetStringArgFromDictShouldReturnStringValueOrEmpty() + { + var args = new List() { "--port", "12312", "--parentprocessid", "2312", "--testsourcepath", @"C:\temp\1.dll" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + string? data = CommandLineArgumentsHelper.GetStringArgFromDict(argsDictionary, "--port"); + Assert.AreEqual("12312", data); + } + + [TestMethod] + public void GetStringArgFromDictShouldReturnNullIfValueIsNotPresent() + { + var args = new List() { "--hello", "--world" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + string? data = CommandLineArgumentsHelper.GetStringArgFromDict(argsDictionary, "--hello"); + + Assert.IsTrue(argsDictionary.Count == 2); + Assert.IsNull(data); + } + + [TestMethod] + public void GetStringArgFromDictShouldReturnEmptyStringIfKeyIsNotPresent() + { + var args = new List() { "--hello", "--world" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + string? data = CommandLineArgumentsHelper.GetStringArgFromDict(argsDictionary, "--port"); - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; - using Microsoft.VisualStudio.TestTools.UnitTesting; + Assert.IsTrue(argsDictionary.Count == 2); + Assert.AreEqual(string.Empty, data); + } - [TestClass] - public class CommandLineArgumentsHelperTests + [TestMethod] + public void GetArgumentsDictionaryShouldReturnEmptyDictionaryIfEmptyArgIsPassed() { - [TestMethod] - public void GetArgumentsDictionaryShouldReturnDictionary() - { - var args = new List() { "--port", "12312", "--parentprocessid", "2312", "--testsourcepath", @"C:\temp\1.dll" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - Assert.AreEqual("12312", argsDictionary["--port"]); - Assert.AreEqual("2312", argsDictionary["--parentprocessid"]); - Assert.AreEqual(@"C:\temp\1.dll", argsDictionary["--testsourcepath"]); - } - - [TestMethod] - public void GetArgumentsDictionaryShouldIgnoreValuesWithoutPreceedingHypen() - { - var args = new List() { "port", "12312", "--parentprocessid", "2312", "--testsourcepath", @"C:\temp\1.dll" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - Assert.IsTrue(argsDictionary.Count == 2); - Assert.AreEqual("2312", argsDictionary["--parentprocessid"]); - Assert.AreEqual(@"C:\temp\1.dll", argsDictionary["--testsourcepath"]); - - args = new List() { "--port", "12312", "--parentprocessid", "2312", "testsourcepath", @"C:\temp\1.dll" }; - argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - Assert.IsTrue(argsDictionary.Count == 2); - Assert.AreEqual("12312", argsDictionary["--port"]); - Assert.AreEqual("2312", argsDictionary["--parentprocessid"]); - } - - [TestMethod] - public void GetStringArgFromDictShouldReturnStringValueOrEmpty() - { - var args = new List() { "--port", "12312", "--parentprocessid", "2312", "--testsourcepath", @"C:\temp\1.dll" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - string data = CommandLineArgumentsHelper.GetStringArgFromDict(argsDictionary, "--port"); - Assert.AreEqual("12312", data); - } - - [TestMethod] - public void GetStringArgFromDictShouldReturnNullIfValueIsNotPresent() - { - var args = new List() { "--hello", "--world" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - string data = CommandLineArgumentsHelper.GetStringArgFromDict(argsDictionary, "--hello"); - - Assert.IsTrue(argsDictionary.Count == 2); - Assert.IsNull(data); - } - - [TestMethod] - public void GetStringArgFromDictShouldReturnEmptyStringIfKeyIsNotPresent() - { - var args = new List() { "--hello", "--world" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - string data = CommandLineArgumentsHelper.GetStringArgFromDict(argsDictionary, "--port"); - - Assert.IsTrue(argsDictionary.Count == 2); - Assert.AreEqual(string.Empty, data); - } - - [TestMethod] - public void GetArgumentsDictionaryShouldReturnEmptyDictionaryIfEmptyArgIsPassed() - { - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(null); - Assert.IsTrue(argsDictionary.Count == 0); - - argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(new string[] { }); - Assert.IsTrue(argsDictionary.Count == 0); - } - - [TestMethod] - public void GetArgumentsDictionaryShouldTreatValueAsNullIfTwoConsecutiveKeysArePassed() - { - var args = new List() { "--hello", "--world" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - Assert.IsTrue(argsDictionary.Count == 2); - Assert.IsNull(argsDictionary["--hello"]); - Assert.IsNull(argsDictionary["--world"]); - } - - [TestMethod] - public void GetIntArgFromDictShouldReturnZeroIfKeyIsNotPresent() - { - var args = new List() { "--hello", "--world" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - int data = CommandLineArgumentsHelper.GetIntArgFromDict(argsDictionary, "--port"); - - Assert.AreEqual(0, data); - } - - [TestMethod] - public void GetIntArgFromDictShouldReturnTheValueIfKeyIsPresent() - { - var args = new List() { "--port", "1000" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - int data = CommandLineArgumentsHelper.GetIntArgFromDict(argsDictionary, "--port"); - - Assert.AreEqual(1000, data); - } - - [TestMethod] - public void TryGetIntArgFromDictShouldReturnTrueIfKeyIsPresentAndTheValue() - { - var args = new List() { "--port", "59870" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - bool found = CommandLineArgumentsHelper.TryGetIntArgFromDict(argsDictionary, "--port", out var data); - - Assert.IsTrue(found); - Assert.AreEqual(59870, data); - } - - [TestMethod] - public void TryGetIntArgFromDictShouldReturnFalseIfKeyIsNotPresent() - { - var args = new List() { "--hello", "--world" }; - var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); - - bool found = CommandLineArgumentsHelper.TryGetIntArgFromDict(argsDictionary, "--port", out var data); - - Assert.IsFalse(found); - } + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(null); + Assert.IsTrue(argsDictionary.Count == 0); + + argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary([]); + Assert.IsTrue(argsDictionary.Count == 0); + } + + [TestMethod] + public void GetArgumentsDictionaryShouldTreatValueAsNullIfTwoConsecutiveKeysArePassed() + { + var args = new List() { "--hello", "--world" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + Assert.IsTrue(argsDictionary.Count == 2); + Assert.IsNull(argsDictionary["--hello"]); + Assert.IsNull(argsDictionary["--world"]); + } + + [TestMethod] + public void GetIntArgFromDictShouldReturnZeroIfKeyIsNotPresent() + { + var args = new List() { "--hello", "--world" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + int data = CommandLineArgumentsHelper.GetIntArgFromDict(argsDictionary, "--port"); + + Assert.AreEqual(0, data); + } + + [TestMethod] + public void GetIntArgFromDictShouldReturnTheValueIfKeyIsPresent() + { + var args = new List() { "--port", "1000" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + int data = CommandLineArgumentsHelper.GetIntArgFromDict(argsDictionary, "--port"); + + Assert.AreEqual(1000, data); + } + + [TestMethod] + public void TryGetIntArgFromDictShouldReturnTrueIfKeyIsPresentAndTheValue() + { + var args = new List() { "--port", "59870" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + + bool found = CommandLineArgumentsHelper.TryGetIntArgFromDict(argsDictionary, "--port", out var data); + + Assert.IsTrue(found); + Assert.AreEqual(59870, data); + } + + [TestMethod] + public void TryGetIntArgFromDictShouldReturnFalseIfKeyIsNotPresent() + { + var args = new List() { "--hello", "--world" }; + var argsDictionary = CommandLineArgumentsHelper.GetArgumentsDictionary(args.ToArray()); + bool found = CommandLineArgumentsHelper.TryGetIntArgFromDict(argsDictionary, "--port", out _); + + Assert.IsFalse(found); } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/DotnetHostHelperTest.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/DotnetHostHelperTest.cs index 10e27fa429..39ca505872 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/DotnetHostHelperTest.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/DotnetHostHelperTest.cs @@ -1,353 +1,525 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.Win32; + +using Moq; + +namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers; + +[TestClass] +public sealed class DotnetHostHelperTest : IDisposable { - using System; - using System.Collections.Generic; - using System.IO; - using System.Text; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.Win32; - using Moq; - - [TestClass] - public class DotnetHostHelperTest : IDisposable + private readonly Mock _fileHelper = new(); + private readonly Mock _processHelper = new(); + private readonly Mock _environmentHelper = new(); + private readonly Mock _windowsRegistrytHelper = new(); + private readonly Mock _environmentVariableHelper = new(); + private readonly MockMuxerHelper _muxerHelper = new(); + + [TestMethod] + public void GetDotnetPathByArchitecture_SameArchitecture() { - private readonly Mock fileHelper = new Mock(); - private readonly Mock processHelper = new Mock(); - private readonly Mock environmentHelper = new Mock(); - private readonly Mock windowsRegistrytHelper = new Mock(); - private readonly Mock environmentVariableHelper = new Mock(); - private readonly MockMuxerHelper muxerHelper = new MockMuxerHelper(); - - [TestMethod] - public void GetDotnetPathByArchitecture_SameArchitecture() + // Arrange + string finalMuxerPath = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.X64); + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + _environmentHelper.SetupGet(x => x.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + _environmentHelper.SetupGet(x => x.Architecture).Returns(PlatformArchitecture.X64); + _processHelper.Setup(x => x.GetCurrentProcessFileName()).Returns(finalMuxerPath); + _processHelper.Setup(x => x.GetCurrentProcessArchitecture()).Returns(PlatformArchitecture.X64); + + // Act & Assert + Assert.IsTrue(dotnetHostHelper.TryGetDotnetPathByArchitecture(PlatformArchitecture.X64, DotnetMuxerResolutionStrategy.Default, out string? muxerPath)); + Assert.AreEqual(finalMuxerPath, muxerPath); + } + + [DataTestMethod] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)")] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT")] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", true, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT", true, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", false)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT_ARM64")] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT")] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", false, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT_ARM64", true, DotnetMuxerResolutionStrategy.DotnetRootArchitecture)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT", true, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", false)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.Windows, "DOTNET_ROOT_X64")] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.Windows, "DOTNET_ROOT")] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", false, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.Windows, "DOTNET_ROOT_X64", true, DotnetMuxerResolutionStrategy.DotnetRootArchitecture)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.Windows, "DOTNET_ROOT", true, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.OSX, "DOTNET_ROOT_ARM64")] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.OSX, "DOTNET_ROOT")] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.OSX, "DOTNET_ROOT_ARM64", true, DotnetMuxerResolutionStrategy.DotnetRootArchitecture)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.OSX, "DOTNET_ROOT", true, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.OSX, "DOTNET_ROOT_X64")] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.OSX, "DOTNET_ROOT")] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.OSX, "DOTNET_ROOT_X64", true, DotnetMuxerResolutionStrategy.DotnetRootArchitecture)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.OSX, "DOTNET_ROOT", true, DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + public void GetDotnetPathByArchitecture_EnvVars(PlatformArchitecture targetArchitecture, + PlatformArchitecture platformArchitecture, + PlatformOperatingSystem platformSystem, + string envVar, + bool found = true, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + string dotnetRootX64 = _muxerHelper.RenameMuxerAndReturnPath(platformSystem, PlatformArchitecture.X64); + string dotnetRootArm64 = _muxerHelper.RenameMuxerAndReturnPath(platformSystem, PlatformArchitecture.ARM64); + string? dotnetRootX86 = platformSystem == PlatformOperatingSystem.Windows + ? _muxerHelper.RenameMuxerAndReturnPath(platformSystem, PlatformArchitecture.X86) + : null; + string dotnetRoot = _muxerHelper.RenameMuxerAndReturnPath(platformSystem, targetArchitecture); + Dictionary envVars = new() { - // Arrange - string finalMuxerPath = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.X64); - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - environmentHelper.SetupGet(x => x.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - environmentHelper.SetupGet(x => x.Architecture).Returns(PlatformArchitecture.X64); - processHelper.Setup(x => x.GetCurrentProcessFileName()).Returns(finalMuxerPath); - - // Act & Assert - Assert.IsTrue(dotnetHostHelper.TryGetDotnetPathByArchitecture(PlatformArchitecture.X64, out string muxerPath)); - Assert.AreEqual(finalMuxerPath, muxerPath); + { "DOTNET_ROOT_X64", dotnetRootX64 }, + { "DOTNET_ROOT_ARM64", dotnetRootArm64 }, + { "DOTNET_ROOT(x86)", dotnetRootX86 }, + { "DOTNET_ROOT", dotnetRoot }, + }; + + _environmentHelper.SetupGet(x => x.Architecture).Returns(platformArchitecture); + _environmentHelper.SetupGet(x => x.OperatingSystem).Returns(platformSystem); + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(envVar)).Returns(Path.GetDirectoryName(envVars[envVar])!); + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable("ProgramFiles")).Returns("notfound"); + _fileHelper.Setup(x => x.DirectoryExists(Path.GetDirectoryName(envVars[envVar])!)).Returns(true); + _fileHelper.Setup(x => x.Exists(envVars[envVar])).Returns(true); + if (found) + { + _fileHelper.Setup(x => x.GetStream(envVars[envVar]!, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(envVars[envVar]!)); } - [DataTestMethod] - [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)")] - [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT")] + // Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, strategy, out string? muxerPath)); + Assert.AreEqual(found ? envVars[envVar] : null, muxerPath); + } - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", false)] - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT_ARM64")] - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT")] + [DataTestMethod] + [DataRow("DOTNET_ROOT_ARM64", "DOTNET_ROOT", PlatformArchitecture.ARM64, PlatformArchitecture.X64)] + [DataRow("DOTNET_ROOT(x86)", "DOTNET_ROOT", PlatformArchitecture.X86, PlatformArchitecture.X64)] + [DataRow("DOTNET_ROOT_ARM64", "DOTNET_ROOT", PlatformArchitecture.ARM64, PlatformArchitecture.X64, DotnetMuxerResolutionStrategy.DotnetRootArchitecture | DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + [DataRow("DOTNET_ROOT(x86)", "DOTNET_ROOT", PlatformArchitecture.X86, PlatformArchitecture.X64, DotnetMuxerResolutionStrategy.DotnetRootArchitecture | DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess)] + public void GetDotnetPathByArchitecture_EnvVars_DirectoryNotExists_TryNext( + string notExists, + string nextEnv, + PlatformArchitecture targetAchitecture, + PlatformArchitecture platformArchitecture, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + string dotnetRootX64 = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.X64); + string dotnetRootArm64 = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.ARM64); + string dotnetRootX86 = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.X86); + string dotnetRoot = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, targetAchitecture); + Dictionary envVars = new() + { + { "DOTNET_ROOT_X64", dotnetRootX64 }, + { "DOTNET_ROOT_ARM64", dotnetRootArm64 }, + { "DOTNET_ROOT(x86)", dotnetRootX86 }, + { "DOTNET_ROOT", dotnetRoot }, + }; + + _environmentHelper.SetupGet(x => x.Architecture).Returns(platformArchitecture); + _environmentHelper.SetupGet(x => x.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(notExists)).Returns(Path.GetDirectoryName(envVars[notExists])!); + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(nextEnv)).Returns(Path.GetDirectoryName(envVars[nextEnv])!); + _fileHelper.Setup(x => x.DirectoryExists(Path.GetDirectoryName(envVars[nextEnv])!)).Returns(true); + _fileHelper.Setup(x => x.Exists(envVars[nextEnv])).Returns(true); + _fileHelper.Setup(x => x.GetStream(envVars[nextEnv], FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(envVars[nextEnv])); + + //Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.IsTrue(dotnetHostHelper.TryGetDotnetPathByArchitecture(targetAchitecture, strategy, out string? muxerPath)); + Assert.AreEqual(envVars[nextEnv], muxerPath); + } - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, PlatformOperatingSystem.Windows, "DOTNET_ROOT(x86)", false)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.Windows, "DOTNET_ROOT_X64")] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.Windows, "DOTNET_ROOT")] + [DataTestMethod] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, true)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X86, false)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, true, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X86, false, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + public void GetDotnetPathByArchitecture_GlobalInstallation_Windows( + PlatformArchitecture muxerArchitecture, + PlatformArchitecture targetArchitecture, + bool found, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + string dotnetMuxer = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, muxerArchitecture); + Mock installedVersionKey = new(); + Mock architectureSubKey = new(); + Mock nativeArchSubKey = new(); + installedVersionKey.Setup(x => x.OpenSubKey(It.IsAny())).Returns(architectureSubKey.Object); + architectureSubKey.Setup(x => x.OpenSubKey(It.IsAny())).Returns(nativeArchSubKey.Object); + nativeArchSubKey.Setup(x => x.GetValue(It.IsAny())).Returns(Path.GetDirectoryName(dotnetMuxer)!); + _windowsRegistrytHelper.Setup(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)).Returns(installedVersionKey.Object); + _fileHelper.Setup(x => x.Exists(dotnetMuxer)).Returns(true); + _fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); + + //Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, strategy, out string? muxerPath)); + Assert.AreEqual(found ? dotnetMuxer : null, muxerPath); + } - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.OSX, "DOTNET_ROOT_ARM64")] - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, PlatformOperatingSystem.OSX, "DOTNET_ROOT")] + [DataTestMethod] + [DataRow(true, false, false, false)] + [DataRow(false, true, false, false)] + [DataRow(false, false, true, false)] + [DataRow(false, false, false, true)] + [DataRow(true, false, false, false, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(false, true, false, false, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(false, false, true, false, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(false, false, false, true, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + public void GetDotnetPathByArchitecture_GlobalInstallation_NullSubkeys( + bool nullInstalledVersion, + bool nullArchitecture, + bool nullNative, + bool nullInstallLocation, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + Mock installedVersionKey = new(); + Mock architectureSubKey = new(); + Mock nativeArchSubKey = new(); + installedVersionKey.Setup(x => x.OpenSubKey(It.IsAny())) + .Returns(nullArchitecture ? null! : architectureSubKey.Object); + architectureSubKey.Setup(x => x.OpenSubKey(It.IsAny())) + .Returns(nullNative ? null! : nativeArchSubKey.Object); + nativeArchSubKey.Setup(x => x.GetValue(It.IsAny())) + .Returns(nullInstallLocation ? null! : ""); + _windowsRegistrytHelper.Setup(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)) + .Returns(nullInstalledVersion ? null! : installedVersionKey.Object); + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable("ProgramFiles")).Returns("notfound"); + + // Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.IsFalse(dotnetHostHelper.TryGetDotnetPathByArchitecture(PlatformArchitecture.X64, strategy, out string? muxerPath)); + } - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.OSX, "DOTNET_ROOT_X64")] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, PlatformOperatingSystem.OSX, "DOTNET_ROOT")] - public void GetDotnetPathByArchitecture_EnvVars(PlatformArchitecture targetArchitecture, - PlatformArchitecture platformArchitecture, - PlatformOperatingSystem platformSystem, - string envVar, - bool found = true) + [DataTestMethod] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_arm64", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location_x64", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_arm64", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location_x64", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_arm64", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_arm64", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.GlobalInstallationLocation)] + public void GetDotnetPathByArchitecture_GlobalInstallation_Unix( + PlatformArchitecture targetArchitecture, + string installLocation, + bool found, + PlatformOperatingSystem os, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + string dotnetMuxer = _muxerHelper.RenameMuxerAndReturnPath(os, targetArchitecture); + _environmentHelper.SetupGet(x => x.OperatingSystem).Returns(os); + _fileHelper.Setup(x => x.Exists(installLocation)).Returns(true); + _fileHelper.Setup(x => x.Exists(dotnetMuxer)).Returns(true); + _fileHelper.Setup(x => x.GetStream(installLocation, FileMode.Open, FileAccess.Read)).Returns(new MemoryStream(Encoding.UTF8.GetBytes(Path.GetDirectoryName(dotnetMuxer)!))); + if (found) { - // Arrange - string DOTNET_ROOT_X64 = muxerHelper.RenameMuxerAndReturnPath(platformSystem, PlatformArchitecture.X64); - string DOTNET_ROOT_ARM64 = muxerHelper.RenameMuxerAndReturnPath(platformSystem, PlatformArchitecture.ARM64); - string DOTNET_ROOT_X86 = null; - if (platformSystem == PlatformOperatingSystem.Windows) - { - DOTNET_ROOT_X86 = muxerHelper.RenameMuxerAndReturnPath(platformSystem, PlatformArchitecture.X86); - } - string DOTNET_ROOT = muxerHelper.RenameMuxerAndReturnPath(platformSystem, targetArchitecture); - Dictionary envVars = new Dictionary() - { - { "DOTNET_ROOT_X64" , DOTNET_ROOT_X64}, - { "DOTNET_ROOT_ARM64" , DOTNET_ROOT_ARM64}, - { "DOTNET_ROOT(x86)" , DOTNET_ROOT_X86}, - { "DOTNET_ROOT" , DOTNET_ROOT}, - }; - - environmentHelper.SetupGet(x => x.Architecture).Returns(platformArchitecture); - environmentHelper.SetupGet(x => x.OperatingSystem).Returns(platformSystem); - environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(envVar)).Returns(Path.GetDirectoryName(envVars[envVar])); - environmentVariableHelper.Setup(x => x.GetEnvironmentVariable("ProgramFiles")).Returns("notfound"); - fileHelper.Setup(x => x.DirectoryExists(Path.GetDirectoryName(envVars[envVar]))).Returns(true); - fileHelper.Setup(x => x.Exists(envVars[envVar])).Returns(true); - if (found) - { - fileHelper.Setup(x => x.GetStream(envVars[envVar], FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(envVars[envVar])); - } - - // Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, out string muxerPath)); - Assert.AreEqual(found ? envVars[envVar] : null, muxerPath); + _fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); } - [DataTestMethod] - [DataRow("DOTNET_ROOT_ARM64", "DOTNET_ROOT", PlatformArchitecture.ARM64, PlatformArchitecture.X64)] - [DataRow("DOTNET_ROOT(x86)", "DOTNET_ROOT", PlatformArchitecture.X86, PlatformArchitecture.X64)] - public void GetDotnetPathByArchitecture_EnvVars_DirectoryNotExists_TryNext(string notExists, string nextEnv, PlatformArchitecture targetAchitecture, PlatformArchitecture platformArchitecture) - { - // Arrange - string DOTNET_ROOT_X64 = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.X64); - string DOTNET_ROOT_ARM64 = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.ARM64); - string DOTNET_ROOT_X86 = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, PlatformArchitecture.X86); - string DOTNET_ROOT = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, targetAchitecture); - Dictionary envVars = new Dictionary() - { - { "DOTNET_ROOT_X64" , DOTNET_ROOT_X64}, - { "DOTNET_ROOT_ARM64" , DOTNET_ROOT_ARM64}, - { "DOTNET_ROOT(x86)" , DOTNET_ROOT_X86}, - { "DOTNET_ROOT" , DOTNET_ROOT}, - }; - - environmentHelper.SetupGet(x => x.Architecture).Returns(platformArchitecture); - environmentHelper.SetupGet(x => x.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(notExists)).Returns(Path.GetDirectoryName(envVars[notExists])); - environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(nextEnv)).Returns(Path.GetDirectoryName(envVars[nextEnv])); - fileHelper.Setup(x => x.DirectoryExists(Path.GetDirectoryName(envVars[nextEnv]))).Returns(true); - fileHelper.Setup(x => x.Exists(envVars[nextEnv])).Returns(true); - fileHelper.Setup(x => x.GetStream(envVars[nextEnv], FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(envVars[nextEnv])); - - //Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.IsTrue(dotnetHostHelper.TryGetDotnetPathByArchitecture(targetAchitecture, out string muxerPath)); - Assert.AreEqual(envVars[nextEnv], muxerPath); - } + //Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, strategy, out string? muxerPath)); + Assert.AreEqual(found ? dotnetMuxer : null, muxerPath); + } - [DataTestMethod] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, true)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X86, false)] - public void GetDotnetPathByArchitecture_GlobalInstallation_Windows(PlatformArchitecture muxerArchitecture, PlatformArchitecture targetArchitecture, bool found) + [DataTestMethod] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, "ProgramFiles(x86)", "dotnet", true)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "ProgramFiles", @"dotnet\x64", true)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "ProgramFiles", "dotnet", true)] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X86, "ProgramFiles", "dotnet", true)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "ProgramFiles", "dotnet", false)] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, "ProgramFiles(x86)", "dotnet", true, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "ProgramFiles", @"dotnet\x64", true, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "ProgramFiles", "dotnet", true, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X86, "ProgramFiles", "dotnet", true, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "ProgramFiles", "dotnet", false, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [TestCategory("Windows")] + public void GetDotnetPathByArchitecture_DefaultInstallation_Win( + PlatformArchitecture targetArchitecture, + PlatformArchitecture platformArchitecture, + string envVar, + string subfolder, + bool found, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + string dotnetMuxer = _muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, targetArchitecture, subfolder); + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(envVar)).Returns(dotnetMuxer.Replace(Path.Combine(subfolder, "dotnet.exe"), string.Empty)); + _environmentHelper.Setup(x => x.Architecture).Returns(platformArchitecture); + if (found) { - // Arrange - string dotnetMuxer = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, muxerArchitecture); - Mock installedVersionKey = new Mock(); - Mock architectureSubKey = new Mock(); - Mock nativeArchSubKey = new Mock(); - installedVersionKey.Setup(x => x.OpenSubKey(It.IsAny())).Returns(architectureSubKey.Object); - architectureSubKey.Setup(x => x.OpenSubKey(It.IsAny())).Returns(nativeArchSubKey.Object); - nativeArchSubKey.Setup(x => x.GetValue(It.IsAny())).Returns(Path.GetDirectoryName(dotnetMuxer)); - this.windowsRegistrytHelper.Setup(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)).Returns(installedVersionKey.Object); - this.fileHelper.Setup(x => x.Exists(dotnetMuxer)).Returns(true); - this.fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); - - //Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, out string muxerPath)); - Assert.AreEqual(found ? dotnetMuxer : null, muxerPath); + _fileHelper.Setup(x => x.Exists(dotnetMuxer)).Returns(true); + _fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(new MemoryStream(Encoding.UTF8.GetBytes(Path.GetDirectoryName(dotnetMuxer)!))); + _fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); } - [DataTestMethod] - [DataRow(true, false, false, false)] - [DataRow(false, true, false, false)] - [DataRow(false, false, true, false)] - [DataRow(false, false, false, true)] - public void GetDotnetPathByArchitecture_GlobalInstallation_NullSubkeys(bool nullInstalledVersion, bool nullArchitecture, bool nullNative, bool nullInstallLocation) + //Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, strategy, out string? muxerPath)); + Assert.AreEqual(found ? dotnetMuxer : null, muxerPath); + } + +#pragma warning disable MSTEST0042 // duplicate data row - TODO: Look more into it + [DataTestMethod] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "/usr/local/share/dotnet/x64", "", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", true, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", false, PlatformOperatingSystem.OSX)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "/usr/local/share/dotnet/x64", "", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", true, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", false, PlatformOperatingSystem.OSX, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "/usr/share/dotnet/x64", "", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "/usr/share/dotnet/x64", "", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] + [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix, DotnetMuxerResolutionStrategy.DefaultInstallationLocation)] +#pragma warning restore MSTEST0042 + public void GetDotnetPathByArchitecture_DefaultInstallation_Unix( + PlatformArchitecture targetArchitecture, + PlatformArchitecture platformArchitecture, + string expectedFolder, + string subfolder, + bool found, + PlatformOperatingSystem os, + DotnetMuxerResolutionStrategy strategy = DotnetMuxerResolutionStrategy.Default) + { + // Arrange + string dotnetMuxer = _muxerHelper.RenameMuxerAndReturnPath(os, targetArchitecture, subfolder); + _environmentHelper.SetupGet(x => x.OperatingSystem).Returns(os); + _environmentHelper.Setup(x => x.Architecture).Returns(platformArchitecture); + string expectedMuxerPath = Path.Combine(expectedFolder, "dotnet"); + _fileHelper.Setup(x => x.Exists(expectedMuxerPath)).Returns(true); + _fileHelper.Setup(x => x.GetStream(expectedMuxerPath, FileMode.Open, FileAccess.Read)).Returns(new MemoryStream(Encoding.UTF8.GetBytes(Path.GetDirectoryName(dotnetMuxer)!))); + if (found) { - // Arrange - Mock installedVersionKey = new Mock(); - Mock architectureSubKey = new Mock(); - Mock nativeArchSubKey = new Mock(); - installedVersionKey.Setup(x => x.OpenSubKey(It.IsAny())).Returns(nullArchitecture ? null : architectureSubKey.Object); - architectureSubKey.Setup(x => x.OpenSubKey(It.IsAny())).Returns(nullNative ? null : nativeArchSubKey.Object); - nativeArchSubKey.Setup(x => x.GetValue(It.IsAny())).Returns(nullInstallLocation ? null : ""); - this.windowsRegistrytHelper.Setup(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)).Returns(nullInstalledVersion ? null : installedVersionKey.Object); - this.environmentVariableHelper.Setup(x => x.GetEnvironmentVariable("ProgramFiles")).Returns("notfound"); - - //Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.IsFalse(dotnetHostHelper.TryGetDotnetPathByArchitecture(PlatformArchitecture.X64, out string muxerPath)); + _fileHelper.Setup(x => x.GetStream(expectedMuxerPath, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); } - [DataTestMethod] - [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_arm64", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location_x64", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.OSX)] - - [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_arm64", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.X64, "/etc/dotnet/install_location", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.ARM64, "/etc/dotnet/install_location_x64", false, PlatformOperatingSystem.Unix)] - public void GetDotnetPathByArchitecture_GlobalInstallation_Unix(PlatformArchitecture targetArchitecture, string install_location, bool found, PlatformOperatingSystem os) + //Act & Assert + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, strategy, out string? muxerPath)); + Assert.AreEqual(found ? expectedMuxerPath : null, muxerPath); + } + + [TestMethod] + public void GetDotnetPathByArchitecture_Strategies() + { + foreach (DotnetMuxerResolutionStrategy strategy in Enum.GetValues(typeof(DotnetMuxerResolutionStrategy))) { // Arrange - string dotnetMuxer = muxerHelper.RenameMuxerAndReturnPath(os, targetArchitecture); - this.environmentHelper.SetupGet(x => x.OperatingSystem).Returns(os); - this.fileHelper.Setup(x => x.Exists(install_location)).Returns(true); - this.fileHelper.Setup(x => x.Exists(dotnetMuxer)).Returns(true); - this.fileHelper.Setup(x => x.GetStream(install_location, FileMode.Open, FileAccess.Read)).Returns(new MemoryStream(Encoding.UTF8.GetBytes(Path.GetDirectoryName(dotnetMuxer)))); - if (found) + _environmentHelper.Reset(); + _fileHelper.Reset(); + _windowsRegistrytHelper.Reset(); + _environmentVariableHelper.Reset(); + _processHelper.Reset(); + + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable("ProgramFiles")).Returns("notfound"); + var dotnetHostHelper = new DotnetHostHelper(_fileHelper.Object, _environmentHelper.Object, _windowsRegistrytHelper.Object, _environmentVariableHelper.Object, _processHelper.Object); + dotnetHostHelper.TryGetDotnetPathByArchitecture(PlatformArchitecture.X64, strategy, out string? _); + + // Assert + switch (strategy) { - this.fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); - } + case DotnetMuxerResolutionStrategy.DotnetRootArchitecture: + // Assert env vars + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT_X64"), Times.Once); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT"), Times.Never); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable(It.IsAny()), Times.Once); - //Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, out string muxerPath)); - Assert.AreEqual(found ? dotnetMuxer : null, muxerPath); - } + // Assert local installation + _windowsRegistrytHelper.Verify(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32), Times.Never); - [DataTestMethod] - [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X64, "ProgramFiles(x86)", "dotnet", true)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "ProgramFiles", @"dotnet\x64", true)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "ProgramFiles", "dotnet", true)] - [DataRow(PlatformArchitecture.X86, PlatformArchitecture.X86, "ProgramFiles", "dotnet", true)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "ProgramFiles", "dotnet", false)] - [TestCategory("Windows")] - public void GetDotnetPathByArchitecture_DefaultInstallation_Win(PlatformArchitecture targetArchitecture, PlatformArchitecture platformArchitecture, string envVar, string subfolder, bool found) - { - // Arrange - string dotnetMuxer = muxerHelper.RenameMuxerAndReturnPath(PlatformOperatingSystem.Windows, targetArchitecture, subfolder); - this.environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(envVar)).Returns(dotnetMuxer.Replace(Path.Combine(subfolder, "dotnet.exe"), string.Empty)); - this.environmentHelper.Setup(x => x.Architecture).Returns(platformArchitecture); - if (found) - { - this.fileHelper.Setup(x => x.Exists(dotnetMuxer)).Returns(true); - this.fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(new MemoryStream(Encoding.UTF8.GetBytes(Path.GetDirectoryName(dotnetMuxer)))); - this.fileHelper.Setup(x => x.GetStream(dotnetMuxer, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); - } + // Assert default installation folder + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("ProgramFiles"), Times.Never); - //Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, out string muxerPath)); - Assert.AreEqual(found ? dotnetMuxer : null, muxerPath); - } + break; + case DotnetMuxerResolutionStrategy.DotnetRootArchitectureLess: + // Assert env vars + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT_X64"), Times.Never); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT"), Times.Once); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable(It.IsAny()), Times.Once); - [DataTestMethod] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "/usr/local/share/dotnet/x64", "", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", true, PlatformOperatingSystem.OSX)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/local/share/dotnet", "", false, PlatformOperatingSystem.OSX)] - - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.ARM64, "/usr/share/dotnet/x64", "", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.ARM64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix)] - [DataRow(PlatformArchitecture.X64, PlatformArchitecture.X64, "/usr/share/dotnet", "", false, PlatformOperatingSystem.Unix)] - public void GetDotnetPathByArchitecture_DefaultInstallation_Unix(PlatformArchitecture targetArchitecture, PlatformArchitecture platformArchitecture, string expectedFolder, string subfolder, bool found, PlatformOperatingSystem os) - { - // Arrange - string dotnetMuxer = muxerHelper.RenameMuxerAndReturnPath(os, targetArchitecture, subfolder); - this.environmentHelper.SetupGet(x => x.OperatingSystem).Returns(os); - this.environmentHelper.Setup(x => x.Architecture).Returns(platformArchitecture); - string expectedMuxerPath = Path.Combine(expectedFolder, "dotnet"); - this.fileHelper.Setup(x => x.Exists(expectedMuxerPath)).Returns(true); - this.fileHelper.Setup(x => x.GetStream(expectedMuxerPath, FileMode.Open, FileAccess.Read)).Returns(new MemoryStream(Encoding.UTF8.GetBytes(Path.GetDirectoryName(dotnetMuxer)))); - if (found) - { - this.fileHelper.Setup(x => x.GetStream(expectedMuxerPath, FileMode.Open, FileAccess.Read)).Returns(File.OpenRead(dotnetMuxer)); - } + // Assert local installation + _windowsRegistrytHelper.Verify(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32), Times.Never); - //Act & Assert - var dotnetHostHelper = new DotnetHostHelper(fileHelper.Object, environmentHelper.Object, windowsRegistrytHelper.Object, environmentVariableHelper.Object, processHelper.Object); - Assert.AreEqual(found, dotnetHostHelper.TryGetDotnetPathByArchitecture(targetArchitecture, out string muxerPath)); - Assert.AreEqual(found ? expectedMuxerPath : null, muxerPath); - } + // Assert default installation folder + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("ProgramFiles"), Times.Never); - public void Dispose() => this.muxerHelper.Dispose(); + break; + case DotnetMuxerResolutionStrategy.GlobalInstallationLocation: + // Assert env vars + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT_X64"), Times.Never); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT"), Times.Never); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable(It.IsAny()), Times.Never); + // Assert local installation + _windowsRegistrytHelper.Verify(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32), Times.Once); - class MockMuxerHelper : IDisposable - { - private static string DotnetMuxerWinX86 = "TestAssets/dotnetWinX86.exe"; - private static string DotnetMuxerWinX64 = "TestAssets/dotnetWinX64.exe"; - private static string DotnetMuxerWinArm64 = "TestAssets/dotnetWinArm64.exe"; - private static string DotnetMuxerMacArm64 = "TestAssets/dotnetMacArm64"; - private static string DotnetMuxerMacX64 = "TestAssets/dotnetMacX64"; - private readonly List muxers = new List(); - - public MockMuxerHelper() - { - Assert.IsTrue(File.Exists(DotnetMuxerWinX86)); - Assert.IsTrue(File.Exists(DotnetMuxerWinX64)); - Assert.IsTrue(File.Exists(DotnetMuxerWinArm64)); - Assert.IsTrue(File.Exists(DotnetMuxerMacArm64)); - Assert.IsTrue(File.Exists(DotnetMuxerMacX64)); + // Assert default installation folder + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("ProgramFiles"), Times.Never); + + break; + case DotnetMuxerResolutionStrategy.DefaultInstallationLocation: + // Assert env vars + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT_X64"), Times.Never); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT"), Times.Never); + + // Assert local installation + _windowsRegistrytHelper.Verify(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32), Times.Never); + + // Assert default installation folder + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("ProgramFiles"), Times.Once); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable(It.IsAny()), Times.Once); + + break; + case DotnetMuxerResolutionStrategy.Default: + + // Assert env vars + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT_X64"), Times.Once); + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_ROOT"), Times.Once); + + // Assert local installation + _windowsRegistrytHelper.Verify(x => x.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32), Times.Once); + + // Assert default installation folder + _environmentVariableHelper.Verify(x => x.GetEnvironmentVariable("ProgramFiles"), Times.Once); + + break; + default: + throw new NotImplementedException(); } + } + } + + public void Dispose() => _muxerHelper.Dispose(); + + private class MockMuxerHelper : IDisposable + { + private static readonly string DotnetMuxerWinX86 = "TestAssets/dotnetWinX86.exe"; + private static readonly string DotnetMuxerWinX64 = "TestAssets/dotnetWinX64.exe"; + private static readonly string DotnetMuxerWinArm64 = "TestAssets/dotnetWinArm64.exe"; + private static readonly string DotnetMuxerMacArm64 = "TestAssets/dotnetMacArm64"; + private static readonly string DotnetMuxerMacX64 = "TestAssets/dotnetMacX64"; + private readonly List _muxers = new(); + + public MockMuxerHelper() + { + Assert.IsTrue(File.Exists(DotnetMuxerWinX86)); + Assert.IsTrue(File.Exists(DotnetMuxerWinX64)); + Assert.IsTrue(File.Exists(DotnetMuxerWinArm64)); + Assert.IsTrue(File.Exists(DotnetMuxerMacArm64)); + Assert.IsTrue(File.Exists(DotnetMuxerMacX64)); + } - public string RenameMuxerAndReturnPath(PlatformOperatingSystem platform, PlatformArchitecture architecture, string subfolder = "") + public string RenameMuxerAndReturnPath(PlatformOperatingSystem platform, PlatformArchitecture architecture, string subfolder = "") + { + string tmpDirectory = Path.GetTempPath(); + string muxerPath; + switch (platform) { - string tmpDirectory = Path.GetTempPath(); - string muxerPath; - switch (platform) - { - case PlatformOperatingSystem.Windows: + case PlatformOperatingSystem.Windows: + { + muxerPath = Path.Combine(tmpDirectory, Guid.NewGuid().ToString("N"), subfolder, "dotnet.exe"); + Directory.CreateDirectory(Path.GetDirectoryName(muxerPath)!); + if (architecture == PlatformArchitecture.ARM64) + { + File.Copy(DotnetMuxerWinArm64, muxerPath); + break; + } + else if (architecture == PlatformArchitecture.X64) { - muxerPath = Path.Combine(tmpDirectory, Guid.NewGuid().ToString("N"), subfolder, "dotnet.exe"); - Directory.CreateDirectory(Path.GetDirectoryName(muxerPath)); - if (architecture == PlatformArchitecture.ARM64) - { - File.Copy(DotnetMuxerWinArm64, muxerPath); - break; - } - else if (architecture == PlatformArchitecture.X64) - { - File.Copy(DotnetMuxerWinX64, muxerPath); - break; - } - else if (architecture == PlatformArchitecture.X86) - { - File.Copy(DotnetMuxerWinX86, muxerPath); - break; - } - - throw new NotSupportedException($"Unsupported architecture '{architecture}'"); + File.Copy(DotnetMuxerWinX64, muxerPath); + break; + } + else if (architecture == PlatformArchitecture.X86) + { + File.Copy(DotnetMuxerWinX86, muxerPath); + break; } - case PlatformOperatingSystem.OSX: + + throw new NotSupportedException($"Unsupported architecture '{architecture}'"); + } + case PlatformOperatingSystem.OSX: + { + muxerPath = Path.Combine(tmpDirectory, Guid.NewGuid().ToString("N"), subfolder, "dotnet"); + Directory.CreateDirectory(Path.GetDirectoryName(muxerPath)!); + if (architecture == PlatformArchitecture.ARM64) { - muxerPath = Path.Combine(tmpDirectory, Guid.NewGuid().ToString("N"), subfolder, "dotnet"); - Directory.CreateDirectory(Path.GetDirectoryName(muxerPath)); - if (architecture == PlatformArchitecture.ARM64) - { - File.Copy(DotnetMuxerMacArm64, muxerPath); - break; - } - else if (architecture == PlatformArchitecture.X64) - { - File.Copy(DotnetMuxerMacX64, muxerPath); - break; - } - - throw new NotSupportedException($"Unsupported architecture '{architecture}'"); + File.Copy(DotnetMuxerMacArm64, muxerPath); + break; } - case PlatformOperatingSystem.Unix: + else if (architecture == PlatformArchitecture.X64) { - muxerPath = Path.Combine(tmpDirectory, Guid.NewGuid().ToString("N"), subfolder, "dotnet"); - Directory.CreateDirectory(Path.GetDirectoryName(muxerPath)); - File.WriteAllText(muxerPath, "not supported"); + File.Copy(DotnetMuxerMacX64, muxerPath); break; } - default: - throw new NotSupportedException($"Unsupported OS '{platform}'"); - } - muxers.Add(muxerPath); - return muxerPath; + throw new NotSupportedException($"Unsupported architecture '{architecture}'"); + } + case PlatformOperatingSystem.Unix: + { + muxerPath = Path.Combine(tmpDirectory, Guid.NewGuid().ToString("N"), subfolder, "dotnet"); + Directory.CreateDirectory(Path.GetDirectoryName(muxerPath)!); + File.WriteAllText(muxerPath, "not supported"); + break; + } + default: + throw new NotSupportedException($"Unsupported OS '{platform}'"); } - public void Dispose() + _muxers.Add(muxerPath); + return muxerPath; + } + + public void Dispose() + { + foreach (var muxer in _muxers) { - foreach (var muxer in muxers) - { - Directory.Delete(Path.GetDirectoryName(muxer), true); - } + Directory.Delete(Path.GetDirectoryName(muxer)!, true); } } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/EnvironmentHelperTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/EnvironmentHelperTests.cs index 35124678e4..b5fe8e8b27 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/EnvironmentHelperTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/EnvironmentHelperTests.cs @@ -1,63 +1,64 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers; + +[TestClass] +public class EnvironmentHelperTests { - using System; + private static readonly int DefaultTimeout = 90; + [TestCleanup] + public void Cleanup() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); + } + + [TestMethod] + public void GetConnectionTimeoutShouldReturnDefaultValue() + { + Assert.AreEqual(DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); + } + + [TestMethod] + public void GetConnectionTimeoutShouldReturnEnvVariableValueIfSet() + { + var val = 100; + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, val.ToString(CultureInfo.CurrentCulture)); + Assert.AreEqual(val, EnvironmentHelper.GetConnectionTimeout()); + } + + [TestMethod] + public void GetConnectionTimeoutShouldReturnDefaultOnNegativeValue() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "-1"); + Assert.AreEqual(DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); + } - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void GetConnectionTimeoutShouldReturnZeroOnEnvVariableValueZero() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "0"); + Assert.AreEqual(0, EnvironmentHelper.GetConnectionTimeout()); + } + + [TestMethod] + public void GetConnectionTimeoutShouldReturnDefaultOnEnvVariableValueDecimal() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "10.4"); + Assert.AreEqual(DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); + } - [TestClass] - public class EnvironmentHelperTests + [TestMethod] + public void GetConnectionTimeoutShouldReturnDefaultOnInvalidValue() { - private static readonly int DefaultTimeout = 90; - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); - } - - [TestMethod] - public void GetConnectionTimeoutShouldReturnDefaultValue() - { - Assert.AreEqual(EnvironmentHelperTests.DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); - } - - [TestMethod] - public void GetConnectionTimeoutShouldReturnEnvVariableValueIfSet() - { - var val = 100; - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, val.ToString()); - Assert.AreEqual(val, EnvironmentHelper.GetConnectionTimeout()); - } - - [TestMethod] - public void GetConnectionTimeoutShouldReturnDefaultOnNegativeValue() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "-1"); - Assert.AreEqual(EnvironmentHelperTests.DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); - } - - [TestMethod] - public void GetConnectionTimeoutShouldReturnZeroOnEnvVariableValueZero() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "0"); - Assert.AreEqual(0, EnvironmentHelper.GetConnectionTimeout()); - } - - [TestMethod] - public void GetConnectionTimeoutShouldReturnDefaultOnEnvVariableValueDecimal() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "10.4"); - Assert.AreEqual(EnvironmentHelperTests.DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); - } - - [TestMethod] - public void GetConnectionTimeoutShouldReturnDefaultOnInvalidValue() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "InvalidValue"); - Assert.AreEqual(EnvironmentHelperTests.DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); - } + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "InvalidValue"); + Assert.AreEqual(DefaultTimeout, EnvironmentHelper.GetConnectionTimeout()); } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/FileHelperTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/FileHelperTests.cs index a7660bb127..5a80646144 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/FileHelperTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Helpers/FileHelperTests.cs @@ -1,41 +1,37 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Helpers; + +[TestClass] +public class FileHelperTests { - using System.IO; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using VisualStudio.TestPlatform.Utilities.Helpers; + private readonly FileHelper _fileHelper; + private readonly string _tempFile; - [TestClass] - public class FileHelperTests + public FileHelperTests() { - private readonly FileHelper fileHelper; - private readonly string tempFile; - - public FileHelperTests() - { - this.tempFile = Path.GetTempFileName(); - File.AppendAllText(this.tempFile, "Some content.."); - this.fileHelper = new FileHelper(); - } + _tempFile = Path.GetTempFileName(); + File.AppendAllText(_tempFile, "Some content.."); + _fileHelper = new FileHelper(); + } - [TestCleanup] - public void Cleanup() - { - File.Delete(this.tempFile); - } + [TestCleanup] + public void Cleanup() + { + File.Delete(_tempFile); + } - [TestMethod] - public void GetStreamShouldAbleToGetTwoStreamSimultanouslyIfFileAccessIsRead() - { - using (var stream1 = this.fileHelper.GetStream(this.tempFile, FileMode.Open, FileAccess.Read)) - { - using (var stream2 = - this.fileHelper.GetStream(this.tempFile, FileMode.Open, FileAccess.Read)) - { - } - } - } + [TestMethod] + public void GetStreamShouldAbleToGetTwoStreamSimultanouslyIfFileAccessIsRead() + { + using var stream1 = _fileHelper.GetStream(_tempFile, FileMode.Open, FileAccess.Read); + using var stream2 = + _fileHelper.GetStream(_tempFile, FileMode.Open, FileAccess.Read); } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Microsoft.TestPlatform.CoreUtilities.UnitTests.csproj b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Microsoft.TestPlatform.CoreUtilities.UnitTests.csproj index 04479c1fae..c0f492aed2 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Microsoft.TestPlatform.CoreUtilities.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Microsoft.TestPlatform.CoreUtilities.UnitTests.csproj @@ -1,37 +1,15 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.CoreUtilities.UnitTests - - - 4.3.0 - - - 4.3.0 - - - 4.3.0 - - - 4.3.0 - - - - - - - - @@ -40,5 +18,5 @@ PreserveNewest - + diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Output/OutputExtensionsTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Output/OutputExtensionsTests.cs index 3e73efdfcb..59a8006b64 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Output/OutputExtensionsTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Output/OutputExtensionsTests.cs @@ -1,159 +1,154 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Output +using System; + +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CoreUtilities.UnitTests.Output; + +[TestClass] +public class OutputExtensionsTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Moq; - using System; + private readonly Mock _mockOutput; + private ConsoleColor _color; + private readonly ConsoleColor _previousColor; + private readonly ConsoleColor _newColor; - [TestClass] - public class OutputExtensionsTests + public OutputExtensionsTests() { - private Mock mockOutput; - private ConsoleColor color; - private ConsoleColor previousColor; - private ConsoleColor newColor; + // Setting Console.ForegroundColor to newColor which will be used to determine whether + // test command output is redirecting to file or writing to console. + // If command output is redirecting to file, then Console.ForegroundColor can't be modified. + // So that tests which assert Console.ForegroundColor should not run. + _previousColor = Console.ForegroundColor; + _newColor = _previousColor == ConsoleColor.Gray + ? ConsoleColor.Black + : ConsoleColor.Blue; + Console.ForegroundColor = _newColor; + + _mockOutput = new Mock(); + _color = Console.ForegroundColor; + _mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback(() => _color = Console.ForegroundColor); + } - public OutputExtensionsTests() - { - // Setting Console.ForegroundColor to newColor which will be used to determine whether - // test command output is redirecting to file or writing to console. - // If command output is redirecting to file, then Console.ForegroundColor can't be modified. - // So that tests which assert Console.ForegroundColor should not run. - this.previousColor = Console.ForegroundColor; - this.newColor = previousColor == ConsoleColor.Gray - ? ConsoleColor.Black - : ConsoleColor.Blue; - Console.ForegroundColor = this.newColor; - - this.mockOutput = new Mock(); - this.color = Console.ForegroundColor; - this.mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback(() => - { - this.color = Console.ForegroundColor; - }); - } + [TestCleanup] + public void CleanUp() + { + Console.ForegroundColor = _previousColor; + } - [TestCleanup] - public void CleanUp() - { - Console.ForegroundColor = previousColor; - } + [TestMethod] + public void OutputErrorForSimpleMessageShouldOutputTheMessageString() + { + _mockOutput.Object.Error(false, "HelloError", null); + _mockOutput.Verify(o => o.WriteLine("HelloError", OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void OutputErrorForSimpleMessageShouldOutputTheMessageString() - { - this.mockOutput.Object.Error(false, "HelloError", null); - this.mockOutput.Verify(o => o.WriteLine("HelloError", OutputLevel.Error), Times.Once()); - } + [TestMethod] + public void OutputErrorForSimpleMessageShouldOutputTheMessageStringWithPrefixIfSet() + { + _mockOutput.Object.Error(true, "HelloError", null); + _mockOutput.Verify(o => o.WriteLine("Error: HelloError", OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void OutputErrorForSimpleMessageShouldOutputTheMessageStringWithPrefixIfSet() + [TestMethod] + public void OutputErrorForSimpleMessageShouldSetConsoleColorToRed() + { + if (CanNotSetConsoleForegroundColor()) { - this.mockOutput.Object.Error(true, "HelloError", null); - this.mockOutput.Verify(o => o.WriteLine("Error: HelloError", OutputLevel.Error), Times.Once()); + return; } - [TestMethod] - public void OutputErrorForSimpleMessageShouldSetConsoleColorToRed() - { - if (CanNotSetConsoleForegroundColor()) - { - return; - } + _mockOutput.Object.Error(false, "HelloError", null); + Assert.IsTrue(_color == ConsoleColor.Red, "Console color not set."); + } - this.mockOutput.Object.Error(false, "HelloError", null); - Assert.IsTrue(this.color == ConsoleColor.Red, "Console color not set."); - } + [TestMethod] + public void OutputErrorForMessageWithParamsShouldOutputFormattedMessage() + { + _mockOutput.Object.Error(false, "HelloError {0} {1}", "Foo", "Bar"); + _mockOutput.Verify(o => o.WriteLine("HelloError Foo Bar", OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void OutputErrorForMessageWithParamsShouldOutputFormattedMessage() - { - this.mockOutput.Object.Error(false, "HelloError {0} {1}", "Foo", "Bar"); - this.mockOutput.Verify(o => o.WriteLine("HelloError Foo Bar", OutputLevel.Error), Times.Once()); - } + [TestMethod] + public void OutputWarningForSimpleMessageShouldOutputTheMessageString() + { + _mockOutput.Object.Warning(false, "HelloWarning", null); + _mockOutput.Verify(o => o.WriteLine("HelloWarning", OutputLevel.Warning), Times.Once()); + } - [TestMethod] - public void OutputWarningForSimpleMessageShouldOutputTheMessageString() + [TestMethod] + public void OutputWarningForSimpleMessageShouldSetConsoleColorToYellow() + { + if (CanNotSetConsoleForegroundColor()) { - this.mockOutput.Object.Warning(false, "HelloWarning", null); - this.mockOutput.Verify(o => o.WriteLine("HelloWarning", OutputLevel.Warning), Times.Once()); + return; } - [TestMethod] - public void OutputWarningForSimpleMessageShouldSetConsoleColorToYellow() - { - if (CanNotSetConsoleForegroundColor()) - { - return; - } + _mockOutput.Object.Warning(false, "HelloWarning", null); + Assert.IsTrue(_color == ConsoleColor.Yellow); + } - this.mockOutput.Object.Warning(false, "HelloWarning", null); - Assert.IsTrue(this.color == ConsoleColor.Yellow); - } + [TestMethod] + public void OutputWarningForMessageWithParamsShouldOutputFormattedMessage() + { + _mockOutput.Object.Warning(false, "HelloWarning {0} {1}", "Foo", "Bar"); + _mockOutput.Verify(o => o.WriteLine("HelloWarning Foo Bar", OutputLevel.Warning), Times.Once()); + } - [TestMethod] - public void OutputWarningForMessageWithParamsShouldOutputFormattedMessage() - { - this.mockOutput.Object.Warning(false, "HelloWarning {0} {1}", "Foo", "Bar"); - this.mockOutput.Verify(o => o.WriteLine("HelloWarning Foo Bar", OutputLevel.Warning), Times.Once()); - } + [TestMethod] + public void OutputInformationForSimpleMessageShouldOutputTheMessageString() + { + _mockOutput.Object.Information(false, ConsoleColor.Green, "HelloInformation", null); + _mockOutput.Verify(o => o.WriteLine("HelloInformation", OutputLevel.Information), Times.Once()); + } - [TestMethod] - public void OutputInformationForSimpleMessageShouldOutputTheMessageString() + [TestMethod] + public void OutputInformationForSimpleMessageShouldSetConsoleColorToGivenColor() + { + if (CanNotSetConsoleForegroundColor()) { - this.mockOutput.Object.Information(false, ConsoleColor.Green, "HelloInformation", null); - this.mockOutput.Verify(o => o.WriteLine("HelloInformation", OutputLevel.Information), Times.Once()); + return; } - [TestMethod] - public void OutputInformationForSimpleMessageShouldSetConsoleColorToGivenColor() - { - if (CanNotSetConsoleForegroundColor()) - { - return; - } + _mockOutput.Object.Information(false, ConsoleColor.Green, "HelloInformation", null); + Assert.IsTrue(_color == ConsoleColor.Green); + } - this.mockOutput.Object.Information(false, ConsoleColor.Green, "HelloInformation", null); - Assert.IsTrue(this.color == ConsoleColor.Green); - } + [TestMethod] + public void OutputInformationForMessageWithParamsShouldOutputFormattedMessage() + { + _mockOutput.Object.Information(false, "HelloInformation {0} {1}", "Foo", "Bar"); + _mockOutput.Verify(o => o.WriteLine("HelloInformation Foo Bar", OutputLevel.Information), Times.Once()); + } - [TestMethod] - public void OutputInformationForMessageWithParamsShouldOutputFormattedMessage() + [TestMethod] + public void OutputInformationShouldNotChangeConsoleOutputColor() + { + if (CanNotSetConsoleForegroundColor()) { - this.mockOutput.Object.Information(false, "HelloInformation {0} {1}", "Foo", "Bar"); - this.mockOutput.Verify(o => o.WriteLine("HelloInformation Foo Bar", OutputLevel.Information), Times.Once()); + return; } - [TestMethod] - public void OutputInformationShouldNotChangeConsoleOutputColor() - { - if (CanNotSetConsoleForegroundColor()) - { - return; - } - - ConsoleColor color1 = Console.ForegroundColor, color2 = Console.ForegroundColor == ConsoleColor.Red ? ConsoleColor.Black : ConsoleColor.Red; - this.mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback(() => - { - color2 = Console.ForegroundColor; - }); - - this.mockOutput.Object.Information(false, "HelloInformation {0} {1}", "Foo", "Bar"); - this.mockOutput.Verify(o => o.WriteLine("HelloInformation Foo Bar", OutputLevel.Information), Times.Once()); - Assert.IsTrue(color1 == color2); - } + ConsoleColor color1 = Console.ForegroundColor, color2 = Console.ForegroundColor == ConsoleColor.Red ? ConsoleColor.Black : ConsoleColor.Red; + _mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback(() => color2 = Console.ForegroundColor); - private bool CanNotSetConsoleForegroundColor() + _mockOutput.Object.Information(false, "HelloInformation {0} {1}", "Foo", "Bar"); + _mockOutput.Verify(o => o.WriteLine("HelloInformation Foo Bar", OutputLevel.Information), Times.Once()); + Assert.IsTrue(color1 == color2); + } + + private bool CanNotSetConsoleForegroundColor() + { + if (Console.ForegroundColor != _newColor) { - if (Console.ForegroundColor != this.newColor) - { - Assert.Inconclusive("Can't set Console foreground color. Might be because process output redirect to file."); - return true; - } - return false; + Assert.Inconclusive("Can't set Console foreground color. Might be because process output redirect to file."); + return true; } + return false; } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Program.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Program.cs deleted file mode 100644 index 8383a433b0..0000000000 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Program.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace TestPlatform.CoreUtilities.UnitTests -{ - /// - /// Main entry point for the command line runner. - /// - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 3b803ea111..0000000000 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestPlatform.CoreUtilities.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("83eaf11c-3fd7-49da-8673-9e81cc2bac66")] diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Tracing/EqtTraceTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Tracing/EqtTraceTests.cs index 825c8ad96f..f9e38311d2 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Tracing/EqtTraceTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Tracing/EqtTraceTests.cs @@ -1,187 +1,185 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CoreUtilities.UnitTests -{ +using System; #if NETFRAMEWORK - using System.Diagnostics; +using System.Diagnostics; #endif - using System.IO; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using System; +using System.IO; - [TestClass] - public class EqtTraceTests - { - private static string dirPath = null; - private static string logFile = null; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CoreUtilities.UnitTests; - [ClassInitialize] - public static void Init(TestContext testContext) +[TestClass] +public class EqtTraceTests +{ + private static string? s_dirPath; + private static string? s_logFile; + + [ClassInitialize] + public static void Init(TestContext _) + { + // Set DoNotInitailize to false. + EqtTrace.DoNotInitailize = false; + s_dirPath = Path.Combine(Path.GetTempPath(), "TraceUT"); + try { - // Set DoNotInitailize to false. - EqtTrace.DoNotInitailize = false; - dirPath = Path.Combine(Path.GetTempPath(), "TraceUT"); - try - { - Directory.CreateDirectory(dirPath); - logFile = Path.Combine(dirPath, "trace.log"); - } - catch(Exception ex) - { - Console.WriteLine(ex.Message); - } - - EqtTrace.InitializeTrace(logFile, PlatformTraceLevel.Off); + Directory.CreateDirectory(s_dirPath); + s_logFile = Path.Combine(s_dirPath, "trace.log"); } - - [TestMethod] - public void CheckInitializeLogFileTest() + catch (Exception ex) { - Assert.AreEqual(logFile, EqtTrace.LogFile, "Expected log file to be {0}", logFile); + Console.WriteLine(ex.Message); } - [TestMethod] - public void CheckIfTraceStateIsVerboseEnabled() - { + EqtTrace.InitializeTrace(s_logFile, PlatformTraceLevel.Off); + } + + [TestMethod] + public void CheckInitializeLogFileTest() + { + Assert.AreEqual(s_logFile, EqtTrace.LogFile, "Expected log file to be {0}", s_logFile); + } + + [TestMethod] + public void CheckIfTraceStateIsVerboseEnabled() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Verbose; + EqtTrace.TraceLevel = TraceLevel.Verbose; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; + EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; #endif - Assert.IsTrue(EqtTrace.IsVerboseEnabled, "Expected trace state to be verbose actual state {0}", EqtTrace.IsVerboseEnabled); - } + Assert.IsTrue(EqtTrace.IsVerboseEnabled, "Expected trace state to be verbose actual state {0}", EqtTrace.IsVerboseEnabled); + } - [TestMethod] - public void CheckIfTraceStateIsErrorEnabled() - { + [TestMethod] + public void CheckIfTraceStateIsErrorEnabled() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Error; + EqtTrace.TraceLevel = TraceLevel.Error; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Error; + EqtTrace.TraceLevel = PlatformTraceLevel.Error; #endif - Assert.IsTrue(EqtTrace.IsErrorEnabled, "Expected trace state to be error actual state {0}", EqtTrace.IsErrorEnabled); - } + Assert.IsTrue(EqtTrace.IsErrorEnabled, "Expected trace state to be error actual state {0}", EqtTrace.IsErrorEnabled); + } - [TestMethod] - public void CheckIfTraceStateIsInfoEnabled() - { + [TestMethod] + public void CheckIfTraceStateIsInfoEnabled() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Info; + EqtTrace.TraceLevel = TraceLevel.Info; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Info; + EqtTrace.TraceLevel = PlatformTraceLevel.Info; #endif - Assert.IsTrue(EqtTrace.IsInfoEnabled, "Expected trace state to be info actual state {0}", EqtTrace.IsInfoEnabled); - } + Assert.IsTrue(EqtTrace.IsInfoEnabled, "Expected trace state to be info actual state {0}", EqtTrace.IsInfoEnabled); + } - [TestMethod] - public void CheckIfTraceStateIsWarningEnabled() - { + [TestMethod] + public void CheckIfTraceStateIsWarningEnabled() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Warning; + EqtTrace.TraceLevel = TraceLevel.Warning; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Warning; + EqtTrace.TraceLevel = PlatformTraceLevel.Warning; #endif - Assert.IsTrue(EqtTrace.IsWarningEnabled, "Expected trace state to be warning actual state {0}", EqtTrace.IsWarningEnabled); - } + Assert.IsTrue(EqtTrace.IsWarningEnabled, "Expected trace state to be warning actual state {0}", EqtTrace.IsWarningEnabled); + } - [TestMethod] - public void TraceShouldWriteError() - { + [TestMethod] + public void TraceShouldWriteError() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Error; + EqtTrace.TraceLevel = TraceLevel.Error; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Error; + EqtTrace.TraceLevel = PlatformTraceLevel.Error; #endif - EqtTrace.Error(new NotImplementedException()); - Assert.IsNotNull(ReadLogFile(), "Expected error message"); - } + EqtTrace.Error(new NotImplementedException()); + Assert.IsNotNull(ReadLogFile(), "Expected error message"); + } - [TestMethod] - public void TraceShouldWriteWarning() - { + [TestMethod] + public void TraceShouldWriteWarning() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Warning; + EqtTrace.TraceLevel = TraceLevel.Warning; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Warning; + EqtTrace.TraceLevel = PlatformTraceLevel.Warning; #endif - EqtTrace.Warning("Dummy Warning Message"); - Assert.IsTrue(ReadLogFile().Contains("Dummy Warning Message"), "Expected Warning message"); - } + EqtTrace.Warning("Dummy Warning Message"); + Assert.IsTrue(ReadLogFile().Contains("Dummy Warning Message"), "Expected Warning message"); + } - [TestMethod] - public void TraceShouldWriteVerbose() - { + [TestMethod] + public void TraceShouldWriteVerbose() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Verbose; + EqtTrace.TraceLevel = TraceLevel.Verbose; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; + EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; #endif - EqtTrace.Verbose("Dummy Verbose Message"); - Assert.IsTrue(ReadLogFile().Contains("Dummy Verbose Message"), "Expected Verbose message"); - } + EqtTrace.Verbose("Dummy Verbose Message"); + Assert.IsTrue(ReadLogFile().Contains("Dummy Verbose Message"), "Expected Verbose message"); + } - [TestMethod] - public void TraceShouldWriteInfo() - { + [TestMethod] + public void TraceShouldWriteInfo() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Info; + EqtTrace.TraceLevel = TraceLevel.Info; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Info; + EqtTrace.TraceLevel = PlatformTraceLevel.Info; #endif - EqtTrace.Info("Dummy Info Message"); - Assert.IsTrue(ReadLogFile().Contains("Dummy Info Message"), "Expected Info message"); - } + EqtTrace.Info("Dummy Info Message"); + Assert.IsTrue(ReadLogFile().Contains("Dummy Info Message"), "Expected Info message"); + } - [TestMethod] - public void TraceShouldNotWriteVerboseIfTraceLevelIsInfo() - { + [TestMethod] + public void TraceShouldNotWriteVerboseIfTraceLevelIsInfo() + { #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Info; + EqtTrace.TraceLevel = TraceLevel.Info; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Info; + EqtTrace.TraceLevel = PlatformTraceLevel.Info; #endif - EqtTrace.Info("Dummy Info Message"); - EqtTrace.Verbose("Unexpected Dummy Verbose Message"); + EqtTrace.Info("Dummy Info Message"); + EqtTrace.Verbose("Unexpected Dummy Verbose Message"); - var logFileContent = ReadLogFile(); - Assert.IsFalse(logFileContent.Contains("Unexpected Dummy Verbose Message"), "Verbose message not expected"); - Assert.IsTrue(logFileContent.Contains("Dummy Info Message"), "Expected Info message"); - } + var logFileContent = ReadLogFile(); + Assert.IsFalse(logFileContent.Contains("Unexpected Dummy Verbose Message"), "Verbose message not expected"); + Assert.IsTrue(logFileContent.Contains("Dummy Info Message"), "Expected Info message"); + } - [TestMethod] - public void TraceShouldNotWriteIfDoNotInitializationIsSetToTrue() - { - EqtTrace.DoNotInitailize = true; + [TestMethod] + public void TraceShouldNotWriteIfDoNotInitializationIsSetToTrue() + { + EqtTrace.DoNotInitailize = true; #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Info; + EqtTrace.TraceLevel = TraceLevel.Info; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Info; + EqtTrace.TraceLevel = PlatformTraceLevel.Info; #endif - EqtTrace.Info("Dummy Info Message: TraceShouldNotWriteIfDoNotInitializationIsSetToTrue"); - Assert.IsFalse(ReadLogFile().Contains("Dummy Info Message: TraceShouldNotWriteIfDoNotInitializationIsSetToTrue"), "Did not expect Dummy Info message"); - } + EqtTrace.Info("Dummy Info Message: TraceShouldNotWriteIfDoNotInitializationIsSetToTrue"); + Assert.IsFalse(ReadLogFile().Contains("Dummy Info Message: TraceShouldNotWriteIfDoNotInitializationIsSetToTrue"), "Did not expect Dummy Info message"); + } - private string ReadLogFile() + private static string ReadLogFile() + { + string? log = null; + try { - string log = null; - try - { - using (var fs = new FileStream(logFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - { - using (var sr = new StreamReader(fs)) - { - log = sr.ReadToEnd(); - } - } - } - catch(Exception ex) - { - Console.WriteLine(ex.Message); - } - - return log; + using var fs = new FileStream(s_logFile!, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + using var sr = new StreamReader(fs); + log = sr.ReadToEnd(); } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + Assert.IsNotNull(log); + return log; } } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/JobQueueTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/JobQueueTests.cs index 5cb90ddbcb..b986d94fcc 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/JobQueueTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/JobQueueTests.cs @@ -1,536 +1,477 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CoreUtilities.UnitTests -{ - using System; - using System.Collections.Generic; - using System.Diagnostics.CodeAnalysis; - using System.Threading; +using System; +using System.Collections.Generic; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestPlatform.CoreUtilities.UnitTests; - [TestClass] - public class JobQueueTests +[TestClass] +public class JobQueueTests +{ + [TestMethod] + public void ConstructorThrowsWhenNullProcessHandlerIsProvided() { - [TestMethod] - public void ConstructorThrowsWhenNullProcessHandlerIsProvided() - { - JobQueue jobQueue = null; - Assert.ThrowsException(() => - { - jobQueue = new JobQueue(null, "dp", int.MaxValue, int.MaxValue, false, (message) => { }); - }); + JobQueue? jobQueue = null; + Assert.ThrowsException(() => jobQueue = new JobQueue(null!, "dp", int.MaxValue, int.MaxValue, false, (message) => { })); - if (jobQueue != null) - { - jobQueue.Dispose(); - } + if (jobQueue != null) + { + jobQueue.Dispose(); } + } - [TestMethod] - public void ThrowsWhenNullEmptyOrWhiteSpaceDisplayNameIsProvided() - { - JobQueue jobQueue = null; - Assert.ThrowsException(() => - { - jobQueue = new JobQueue(GetEmptyProcessHandler(), null, int.MaxValue, int.MaxValue, false, (message) => { }); - }); - Assert.ThrowsException(() => - { - jobQueue = new JobQueue(GetEmptyProcessHandler(), "", int.MaxValue, int.MaxValue, false, (message) => { }); - }); - Assert.ThrowsException(() => - { - jobQueue = new JobQueue(GetEmptyProcessHandler(), " ", int.MaxValue, int.MaxValue, false, (message) => { }); - }); + [TestMethod] + public void ThrowsWhenNullEmptyOrWhiteSpaceDisplayNameIsProvided() + { + JobQueue? jobQueue = null; + Assert.ThrowsException(() => jobQueue = new JobQueue(GetEmptyProcessHandler(), null!, int.MaxValue, int.MaxValue, false, (message) => { })); + Assert.ThrowsException(() => jobQueue = new JobQueue(GetEmptyProcessHandler(), "", int.MaxValue, int.MaxValue, false, (message) => { })); + Assert.ThrowsException(() => jobQueue = new JobQueue(GetEmptyProcessHandler(), " ", int.MaxValue, int.MaxValue, false, (message) => { })); - if (jobQueue != null) - { - jobQueue.Dispose(); - } + if (jobQueue != null) + { + jobQueue.Dispose(); } + } + + [TestMethod] + public void JobsCanBeAddedToTheQueueAndAreProcessedInTheOrderReceived() + { + // Setup the job process handler to keep track of the jobs. + var jobsProcessed = new List(); + Action processHandler = (job) => jobsProcessed.Add(job); + + // Setup Test Data. + var job1 = 1; + var job2 = 2; + var job3 = 3; - [TestMethod] - public void JobsCanBeAddedToTheQueueAndAreProcessedInTheOrderReceived() + // Queue the jobs and verify they are processed in the order added. + using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) { - // Setup the job process handler to keep track of the jobs. - var jobsProcessed = new List(); - Action processHandler = (job) => - { - jobsProcessed.Add(job); - }; + queue.QueueJob(job1, 0); + queue.QueueJob(job2, 0); + queue.QueueJob(job3, 0); + } - // Setup Test Data. - var job1 = 1; - var job2 = 2; - var job3 = 3; + Assert.AreEqual(job1, jobsProcessed[0]); + Assert.AreEqual(job2, jobsProcessed[1]); + Assert.AreEqual(job3, jobsProcessed[2]); + } - // Queue the jobs and verify they are processed in the order added. - using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) - { - queue.QueueJob(job1, 0); - queue.QueueJob(job2, 0); - queue.QueueJob(job3, 0); - } + [TestMethod] + public void JobsAreProcessedOnABackgroundThread() + { + // Setup the job process handler to keep track of the jobs. + var jobsProcessed = new List(); + Action processHandler = job => jobsProcessed.Add(Environment.CurrentManagedThreadId); - Assert.AreEqual(job1, jobsProcessed[0]); - Assert.AreEqual(job2, jobsProcessed[1]); - Assert.AreEqual(job3, jobsProcessed[2]); + // Queue the jobs and verify they are processed on a background thread. + using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) + { + queue.QueueJob("dp", 0); } - [TestMethod] - public void JobsAreProcessedOnABackgroundThread() - { - // Setup the job process handler to keep track of the jobs. - var jobsProcessed = new List(); - Action processHandler = (job) => - { - jobsProcessed.Add(Thread.CurrentThread.ManagedThreadId); - }; + Assert.AreNotEqual(Environment.CurrentManagedThreadId, jobsProcessed[0]); + } - // Queue the jobs and verify they are processed on a background thread. - using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) - { - queue.QueueJob("dp", 0); - } + [TestMethod] + public void ThrowsWhenQueuingAfterDisposed() + { + var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.Dispose(); - Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, jobsProcessed[0]); - } + Assert.ThrowsException(() => queue.QueueJob("dp", 0)); + } - [TestMethod] - public void ThrowsWhenQueuingAfterDisposed() - { - var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); - queue.Dispose(); + [TestMethod] + public void ThrowsWhenResumingAfterDisposed() + { + var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.Dispose(); - Assert.ThrowsException(() => - { - queue.QueueJob("dp", 0); - }); - } + Assert.ThrowsException(() => queue.Resume()); + } - [TestMethod] - public void ThrowsWhenResumingAfterDisposed() - { - var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); - queue.Dispose(); + [TestMethod] + public void ThrowsWhenPausingAfterDisposed() + { + var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.Dispose(); - Assert.ThrowsException(() => - { - queue.Resume(); - }); - } + Assert.ThrowsException(() => queue.Pause()); + } - [TestMethod] - public void ThrowsWhenPausingAfterDisposed() - { - var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); - queue.Dispose(); + [TestMethod] + public void ThrowsWhenFlushingAfterDisposed() + { + var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.Dispose(); - Assert.ThrowsException(() => - { - queue.Pause(); - }); - } + Assert.ThrowsException(() => queue.Flush()); + } - [TestMethod] - public void ThrowsWhenFlushingAfterDisposed() - { - var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); - queue.Dispose(); + [TestMethod] + public void DisposeDoesNotThrowWhenCalledTwice() + { + var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.Dispose(); + queue.Dispose(); + } - Assert.ThrowsException(() => - { - queue.Flush(); - }); - } + [TestMethod] + public void OncePausedNoFurtherJobsAreProcessedUntilResumeIsCalled() + { + // Setup the job process handler to keep track of the jobs it is called with. + List processedJobs = new(); + Action processHandler = job => processedJobs.Add(job); - [TestMethod] - [SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Justification = "queue is required to be disposed twice.")] - public void DisposeDoesNotThrowWhenCalledTwice() + // Queue the jobs after paused and verify they are not processed until resumed. + using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) { - var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); - queue.Dispose(); - queue.Dispose(); - } + queue.Pause(); + queue.QueueJob("dp", 0); + queue.QueueJob("dp", 0); + queue.QueueJob("dp", 0); - [TestMethod] - public void OncePausedNoFurtherJobsAreProcessedUntilResumeIsCalled() - { - // Setup the job process handler to keep track of the jobs it is called with. - List processedJobs = new List(); - Action processHandler = (job) => - { - processedJobs.Add(job); - }; + // Allow other threads to execute and verify no jobs processed because the queue is paused. + Thread.Sleep(0); + Assert.AreEqual(0, processedJobs.Count); - // Queue the jobs after paused and verify they are not processed until resumed. - using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) - { - queue.Pause(); - queue.QueueJob("dp", 0); - queue.QueueJob("dp", 0); - queue.QueueJob("dp", 0); + queue.Resume(); + } - // Allow other threads to execute and verify no jobs processed because the queue is paused. - Thread.Sleep(0); - Assert.AreEqual(0, processedJobs.Count); + Assert.AreEqual(3, processedJobs.Count); + } - queue.Resume(); - } + [TestMethod] + public void ThrowsWhenBeingDisposedWhileQueueIsPaused() + { + using var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.Pause(); - Assert.AreEqual(3, processedJobs.Count); - } + Assert.ThrowsException(() => queue.Dispose()); - [TestMethod] - public void ThrowsWhenBeingDisposedWhileQueueIsPaused() - { - using (var queue = new JobQueue(GetEmptyProcessHandler(), "dp", int.MaxValue, int.MaxValue, false, (message) => { })) - { - queue.Pause(); + queue.Resume(); + } - Assert.ThrowsException(() => - { - queue.Dispose(); - }); + [TestMethod] + public void FlushMethodWaitsForAllJobsToBeProcessedBeforeReturning() + { + // Setup the job process handler to keep track of the jobs it has processed. + var jobsProcessed = 0; + Action processHandler = job => jobsProcessed++; - queue.Resume(); - } - } + // Queue several jobs and verify they have been processed when wait returns. + using var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { }); + queue.QueueJob("dp", 0); + queue.QueueJob("dp", 0); + queue.QueueJob("dp", 0); - [TestMethod] - public void FlushMethodWaitsForAllJobsToBeProcessedBeforeReturning() - { - // Setup the job process handler to keep track of the jobs it has processed. - var jobsProcessed = 0; - Action processHandler = (job) => - { - jobsProcessed++; - }; + queue.Flush(); - // Queue several jobs and verify they have been processed when wait returns. - using (var queue = new JobQueue(processHandler, "dp", int.MaxValue, int.MaxValue, false, (message) => { })) - { - queue.QueueJob("dp", 0); - queue.QueueJob("dp", 0); - queue.QueueJob("dp", 0); + Assert.AreEqual(3, jobsProcessed); + } - queue.Flush(); + [TestMethod] + public void TestBlockAtEnqueueDueToLength() + { + ManualResetEvent allowJobProcessingHandlerToProceed = new(false); + AutoResetEvent jobProcessed = new(false); - Assert.AreEqual(3, jobsProcessed); + // process handler for the jobs in queue. It blocks on a job till the queue gets full and the handler sets the + // event allowHandlerToProceed. + Action processHandler = job => + { + allowJobProcessingHandlerToProceed.WaitOne(); + if (string.Equals(job, "job11", StringComparison.OrdinalIgnoreCase)) + { + jobProcessed.Set(); } - } + }; - [TestMethod] - public void TestBlockAtEnqueueDueToLength() + using JobQueueWrapper queue = new(processHandler, 5, int.MaxValue, true, allowJobProcessingHandlerToProceed); + // run the same thing multiple times to ensure that the queue isn't in a erroneous state after being blocked. + for (int i = 0; i < 10; i++) { - ManualResetEvent allowJobProcessingHandlerToProceed = new ManualResetEvent(false); - AutoResetEvent jobProcessed = new AutoResetEvent(false); + queue.QueueJob("job1", 0); + queue.QueueJob("job2", 0); + queue.QueueJob("job3", 0); + queue.QueueJob("job4", 0); + queue.QueueJob("job5", 0); + + // At this point only 5 jobs have been queued. Even if all are still in queue, still the need to block shouldn't have + // risen. So queue.enteredBlockingMethod would be false. + Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method at a wrong time."); + + queue.QueueJob("job6", 0); + queue.QueueJob("job7", 0); + queue.QueueJob("job8", 0); + queue.QueueJob("job9", 0); + queue.QueueJob("job10", 0); + queue.QueueJob("job11", 0); + + // By this point surely the queue would have blocked at least once, hence setting queue.enteredBlockingMethod true. + Assert.IsTrue(queue.IsEnqueueBlocked, "Did not enter the over-ridden blocking method"); + + // We wait till all jobs are finished, so that for the next iteration the queue is in a deterministic state. + jobProcessed.WaitOne(); + + // queue.enteredBlockingMethod is set to false to check it again in next iteration. Also + // allowJobProcessingHandlerToProceed is reset to block the handler again in next iteration. + queue.IsEnqueueBlocked = false; + allowJobProcessingHandlerToProceed.Reset(); + + // if we reach here it means that the queue was successfully blocked at some point in between job6 and job11 + // and subsequently unblocked. + } + } - // process handler for the jobs in queue. It blocks on a job till the queue gets full and the handler sets the - // event allowHandlerToProceed. - Action processHandler = (job) => - { - allowJobProcessingHandlerToProceed.WaitOne(); - if (job.Equals("job11", StringComparison.OrdinalIgnoreCase)) - { - jobProcessed.Set(); - } - }; - - using (JobQueueWrapper queue = new JobQueueWrapper(processHandler, 5, int.MaxValue, true, allowJobProcessingHandlerToProceed)) + [TestMethod] + public void TestBlockAtEnqueueDueToSize() + { + ManualResetEvent allowJobProcessingHandlerToProceed = new(false); + AutoResetEvent jobProcessed = new(false); + + // process handler for the jobs in queue. It blocks on a job till the queue gets full and the handler sets the + // event allowHandlerToProceed. + Action processHandler = job => + { + allowJobProcessingHandlerToProceed.WaitOne(); + if (string.Equals(job, "job11", StringComparison.OrdinalIgnoreCase)) { - // run the same thing multiple times to ensure that the queue isn't in a erroneous state after being blocked. - for (int i = 0; i < 10; i++) - { - queue.QueueJob("job1", 0); - queue.QueueJob("job2", 0); - queue.QueueJob("job3", 0); - queue.QueueJob("job4", 0); - queue.QueueJob("job5", 0); - - // At this point only 5 jobs have been queued. Even if all are still in queue, still the need to block shouldn't have - // risen. So queue.enteredBlockingMethod would be false. - Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method at a wrong time."); - - queue.QueueJob("job6", 0); - queue.QueueJob("job7", 0); - queue.QueueJob("job8", 0); - queue.QueueJob("job9", 0); - queue.QueueJob("job10", 0); - queue.QueueJob("job11", 0); - - // By this point surely the queue would have blocked at least once, hence setting queue.enteredBlockingMethod true. - Assert.IsTrue(queue.IsEnqueueBlocked, "Did not enter the over-ridden blocking method"); - - // We wait till all jobs are finished, so that for the next iteration the queue is in a deterministic state. - jobProcessed.WaitOne(); - - // queue.enteredBlockingMethod is set to false to check it again in next iteration. Also - // allowJobProcessingHandlerToProceed is reset to block the handler again in next iteration. - queue.IsEnqueueBlocked = false; - allowJobProcessingHandlerToProceed.Reset(); - - // if we reach here it means that the queue was successfully blocked at some point in between job6 and job11 - // and subsequently unblocked. - } + jobProcessed.Set(); } - } + }; - [TestMethod] - public void TestBlockAtEnqueueDueToSize() + using JobQueueWrapper queue = new(processHandler, int.MaxValue, 40, true, allowJobProcessingHandlerToProceed); + // run the same thing multiple times to ensure that the queue isn't in a erroneous state after being blocked. + for (int i = 0; i < 10; i++) { - ManualResetEvent allowJobProcessingHandlerToProceed = new ManualResetEvent(false); - AutoResetEvent jobProcessed = new AutoResetEvent(false); + queue.QueueJob("job1", 8); + queue.QueueJob("job2", 8); + queue.QueueJob("job3", 8); + queue.QueueJob("job4", 8); + queue.QueueJob("job5", 8); + + // At this point exactly 80 bytes have been queued. Even if all are still in queue, still the need to block shouldn't + // have risen. So queue.enteredBlockingMethod would be false. + Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method at a wrong time."); + + queue.QueueJob("job6", 8); + queue.QueueJob("job7", 8); + queue.QueueJob("job8", 8); + queue.QueueJob("job9", 8); + queue.QueueJob("job10", 10); + queue.QueueJob("job11", 10); + + // By this point surely the queue would have blocked at least once, hence setting queue.enteredBlockingMethod true. + Assert.IsTrue(queue.IsEnqueueBlocked, "Did not enter the over-ridden blocking method"); + + // We wait till all jobs are finished, so that for the next iteration the queue is in a deterministic state. + jobProcessed.WaitOne(); + + // queue.enteredBlockingMethod is set to false to check it again in next iteration. Also + // allowJobProcessingHandlerToProceed is reset to block the handler again in next iteration. + queue.IsEnqueueBlocked = false; + allowJobProcessingHandlerToProceed.Reset(); + + // if we reach here it means that the queue was successfully blocked at some point in between job6 and job11 + // and subsequently unblocked. + } + } - // process handler for the jobs in queue. It blocks on a job till the queue gets full and the handler sets the - // event allowHandlerToProceed. - Action processHandler = (job) => - { - allowJobProcessingHandlerToProceed.WaitOne(); - if (job.Equals("job11", StringComparison.OrdinalIgnoreCase)) - { - jobProcessed.Set(); - } - }; - - using (JobQueueWrapper queue = new JobQueueWrapper(processHandler, int.MaxValue, 40, true, allowJobProcessingHandlerToProceed)) + [TestMethod] + public void TestBlockingDisabled() + { + ManualResetEvent allowJobProcessingHandlerToProceed = new(false); + AutoResetEvent jobProcessed = new(false); + + // process handler for the jobs in queue. It blocks on a job till the test method sets the + // event allowHandlerToProceed. + Action processHandler = job => + { + allowJobProcessingHandlerToProceed.WaitOne(); + if (string.Equals(job, "job5", StringComparison.OrdinalIgnoreCase)) { - // run the same thing multiple times to ensure that the queue isn't in a erroneous state after being blocked. - for (int i = 0; i < 10; i++) - { - queue.QueueJob("job1", 8); - queue.QueueJob("job2", 8); - queue.QueueJob("job3", 8); - queue.QueueJob("job4", 8); - queue.QueueJob("job5", 8); - - // At this point exactly 80 bytes have been queued. Even if all are still in queue, still the need to block shouldn't - // have risen. So queue.enteredBlockingMethod would be false. - Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method at a wrong time."); - - queue.QueueJob("job6", 8); - queue.QueueJob("job7", 8); - queue.QueueJob("job8", 8); - queue.QueueJob("job9", 8); - queue.QueueJob("job10", 10); - queue.QueueJob("job11", 10); - - // By this point surely the queue would have blocked at least once, hence setting queue.enteredBlockingMethod true. - Assert.IsTrue(queue.IsEnqueueBlocked, "Did not enter the over-ridden blocking method"); - - // We wait till all jobs are finished, so that for the next iteration the queue is in a deterministic state. - jobProcessed.WaitOne(); - - // queue.enteredBlockingMethod is set to false to check it again in next iteration. Also - // allowJobProcessingHandlerToProceed is reset to block the handler again in next iteration. - queue.IsEnqueueBlocked = false; - allowJobProcessingHandlerToProceed.Reset(); - - // if we reach here it means that the queue was successfully blocked at some point in between job6 and job11 - // and subsequently unblocked. - } + jobProcessed.Set(); } - } + }; - [TestMethod] - public void TestBlockingDisabled() + using JobQueueWrapper queue = new(processHandler, 2, int.MaxValue, false, allowJobProcessingHandlerToProceed); + // run the same thing multiple times to ensure that the queue isn't in a erroneous state after first run. + for (int i = 0; i < 10; i++) { - ManualResetEvent allowJobProcessingHandlerToProceed = new ManualResetEvent(false); - AutoResetEvent jobProcessed = new AutoResetEvent(false); + queue.QueueJob("job1", 0); + queue.QueueJob("job2", 0); - // process handler for the jobs in queue. It blocks on a job till the test method sets the - // event allowHandlerToProceed. - Action processHandler = (job) => - { - allowJobProcessingHandlerToProceed.WaitOne(); - if (job.Equals("job5", StringComparison.OrdinalIgnoreCase)) - { - jobProcessed.Set(); - } - }; - - using (JobQueueWrapper queue = new JobQueueWrapper(processHandler, 2, int.MaxValue, false, allowJobProcessingHandlerToProceed)) - { - // run the same thing multiple times to ensure that the queue isn't in a erroneous state after first run. - for (int i = 0; i < 10; i++) - { - queue.QueueJob("job1", 0); - queue.QueueJob("job2", 0); - - // At this point only 2 jobs have been queued. Even if all are still in queue, still the need to block shouldn't have - // risen. So queue.enteredBlockingMethod would be false regardless of the blocking disabled or not. - Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method at a wrong time."); + // At this point only 2 jobs have been queued. Even if all are still in queue, still the need to block shouldn't have + // risen. So queue.enteredBlockingMethod would be false regardless of the blocking disabled or not. + Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method at a wrong time."); - queue.QueueJob("job3", 0); - queue.QueueJob("job4", 0); - queue.QueueJob("job5", 0); + queue.QueueJob("job3", 0); + queue.QueueJob("job4", 0); + queue.QueueJob("job5", 0); - // queue.enteredBlockingMethod should still be false as the queue should not have blocked. - Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method though blocking is disabled."); + // queue.enteredBlockingMethod should still be false as the queue should not have blocked. + Assert.IsFalse(queue.IsEnqueueBlocked, "Entered the over-ridden blocking method though blocking is disabled."); - // allow handlers to proceed. - allowJobProcessingHandlerToProceed.Set(); + // allow handlers to proceed. + allowJobProcessingHandlerToProceed.Set(); - // We wait till all jobs are finished, so that for the next iteration the queue is in a deterministic state. - jobProcessed.WaitOne(); + // We wait till all jobs are finished, so that for the next iteration the queue is in a deterministic state. + jobProcessed.WaitOne(); - // queue.enteredBlockingMethod is set to false to check it again in next iteration. Also - // allowJobProcessingHandlerToProceed is reset to allow blocking the handler again in next iteration. - queue.IsEnqueueBlocked = false; - allowJobProcessingHandlerToProceed.Reset(); + // queue.enteredBlockingMethod is set to false to check it again in next iteration. Also + // allowJobProcessingHandlerToProceed is reset to allow blocking the handler again in next iteration. + queue.IsEnqueueBlocked = false; + allowJobProcessingHandlerToProceed.Reset(); - // if we reach here it means that the queue was never blocked. - } - } + // if we reach here it means that the queue was never blocked. } + } - [TestMethod] - public void TestLargeTestResultCanBeLoadedWithBlockingEnabled() - { - var jobProcessed = new AutoResetEvent(false); + [TestMethod] + public void TestLargeTestResultCanBeLoadedWithBlockingEnabled() + { + var jobProcessed = new AutoResetEvent(false); - // process handler for the jobs in queue. - Action processHandler = (job) => - { - jobProcessed.Set(); - }; + // process handler for the jobs in queue. + Action processHandler = (job) => jobProcessed.Set(); - using (JobQueueNonBlocking queue = new JobQueueNonBlocking(processHandler)) - { - // run the same thing multiple times to ensure that the queue isn't in a erroneous state after first run. - for (var i = 0; i < 10; i++) - { - // we try to enqueue a job of size greater than bound on the queue. It should be queued without blocking as - // we check whether or not the queue size has exceeded the limit before actually queuing. - queue.QueueJob("job1", 8); - - // if queue.EnteredBlockingMethod is true, the enqueuing entered the overridden blocking method. This was not - // intended. - Assert.IsFalse(queue.EnteredBlockingMethod, "Entered the over-ridden blocking method."); - jobProcessed.WaitOne(); - } - } + using JobQueueNonBlocking queue = new(processHandler); + // run the same thing multiple times to ensure that the queue isn't in a erroneous state after first run. + for (var i = 0; i < 10; i++) + { + // we try to enqueue a job of size greater than bound on the queue. It should be queued without blocking as + // we check whether or not the queue size has exceeded the limit before actually queuing. + queue.QueueJob("job1", 8); + + // if queue.EnteredBlockingMethod is true, the enqueuing entered the overridden blocking method. This was not + // intended. + Assert.IsFalse(queue.EnteredBlockingMethod, "Entered the over-ridden blocking method."); + jobProcessed.WaitOne(); } + } + + [TestMethod] + [Timeout(60000)] + public void TestDisposeUnblocksBlockedThreads() + { + var allowJobProcessingHandlerToProceed = new ManualResetEvent(false); - [TestMethod] - [Timeout(60000)] - public void TestDisposeUnblocksBlockedThreads() + using var gotBlocked = new ManualResetEvent(false); + var job1Running = new ManualResetEvent(false); + + // process handler for the jobs in queue. It blocks on a job till the test method sets the + // event allowHandlerToProceed. + Action processHandler = job => { - var allowJobProcessingHandlerToProceed = new ManualResetEvent(false); + if (string.Equals(job, "job1", StringComparison.OrdinalIgnoreCase)) + job1Running.Set(); - using (var gotBlocked = new ManualResetEvent(false)) - { - var job1Running = new ManualResetEvent(false); - - // process handler for the jobs in queue. It blocks on a job till the test method sets the - // event allowHandlerToProceed. - Action processHandler = (job) => - { - if (job.Equals("job1", StringComparison.OrdinalIgnoreCase)) - job1Running.Set(); - - allowJobProcessingHandlerToProceed.WaitOne(); - }; - - var jobQueue = new JobQueueWrapper(processHandler, 1, int.MaxValue, true, gotBlocked); - - var queueThread = new Thread( - source => - { - jobQueue.QueueJob("job1", 0); - job1Running.WaitOne(); - jobQueue.QueueJob("job2", 0); - jobQueue.QueueJob("job3", 0); - allowJobProcessingHandlerToProceed.Set(); - }); - queueThread.Start(); - - gotBlocked.WaitOne(); - jobQueue.Dispose(); - queueThread.Join(); - } - } + allowJobProcessingHandlerToProceed.WaitOne(); + }; - #region Implementation + var jobQueue = new JobQueueWrapper(processHandler, 1, int.MaxValue, true, gotBlocked); - /// - /// a class that inherits from job queue and over rides the WaitForQueueToEmpty to allow for checking that blocking and - /// unblocking work as expected. - /// - internal class JobQueueWrapper : JobQueue - { - public JobQueueWrapper(Action processJob, - int maxNoOfStringsQueueCanHold, - int maxNoOfBytesQueueCanHold, - bool isBoundsEnabled, - ManualResetEvent queueGotBlocked) - : base(processJob, "foo", maxNoOfStringsQueueCanHold, maxNoOfBytesQueueCanHold, isBoundsEnabled, (message) => { }) + var queueThread = new Thread( + source => { - this.IsEnqueueBlocked = false; - this.queueGotBlocked = queueGotBlocked; - } + jobQueue.QueueJob("job1", 0); + job1Running.WaitOne(); + jobQueue.QueueJob("job2", 0); + jobQueue.QueueJob("job3", 0); + allowJobProcessingHandlerToProceed.Set(); + }); + queueThread.Start(); - protected override bool WaitForQueueToGetEmpty() - { - this.IsEnqueueBlocked = true; - this.queueGotBlocked.Set(); - return base.WaitForQueueToGetEmpty(); - } + gotBlocked.WaitOne(); + jobQueue.Dispose(); + queueThread.Join(); + } - /// - /// Specifies whether enQueue was blocked or not. - /// - public bool IsEnqueueBlocked - { - get; - set; - } + #region Implementation + + /// + /// a class that inherits from job queue and over rides the WaitForQueueToEmpty to allow for checking that blocking and + /// unblocking work as expected. + /// + internal class JobQueueWrapper : JobQueue + { + public JobQueueWrapper(Action processJob, + int maxNoOfStringsQueueCanHold, + int maxNoOfBytesQueueCanHold, + bool isBoundsEnabled, + ManualResetEvent queueGotBlocked) + : base(processJob, "foo", maxNoOfStringsQueueCanHold, maxNoOfBytesQueueCanHold, isBoundsEnabled, (message) => { }) + { + IsEnqueueBlocked = false; + _queueGotBlocked = queueGotBlocked; + } - private ManualResetEvent queueGotBlocked; + protected override bool WaitForQueueToGetEmpty() + { + IsEnqueueBlocked = true; + _queueGotBlocked.Set(); + return base.WaitForQueueToGetEmpty(); } /// - /// a class that inherits from job queue and over rides the WaitForQueueToEmpty to simply setting a boolean to tell - /// whether or not the queue entered the blocking method during the enqueue process. + /// Specifies whether enQueue was blocked or not. /// - internal class JobQueueNonBlocking : JobQueue + public bool IsEnqueueBlocked { - public JobQueueNonBlocking(Action processHandler) - : base(processHandler, "foo", 1, 5, true, (message) => { }) - { - EnteredBlockingMethod = false; - } + get; + set; + } - public bool EnteredBlockingMethod { get; private set; } + private readonly ManualResetEvent _queueGotBlocked; + } - protected override bool WaitForQueueToGetEmpty() - { - EnteredBlockingMethod = true; - return true; - } + /// + /// a class that inherits from job queue and over rides the WaitForQueueToEmpty to simply setting a boolean to tell + /// whether or not the queue entered the blocking method during the enqueue process. + /// + internal class JobQueueNonBlocking : JobQueue + { + public JobQueueNonBlocking(Action processHandler) + : base(processHandler, "foo", 1, 5, true, (message) => { }) + { + EnteredBlockingMethod = false; } - #endregion - - #region Utility Methods + public bool EnteredBlockingMethod { get; private set; } - /// - /// Returns a job processing handler which does nothing. - /// - /// Type of job the handler processes. - /// Job processing handler which does nothing. - private static Action GetEmptyProcessHandler() + protected override bool WaitForQueueToGetEmpty() { - Action handler = (job) => - { - }; - - return handler; + EnteredBlockingMethod = true; + return true; } + } + + #endregion + + #region Utility Methods - #endregion + /// + /// Returns a job processing handler which does nothing. + /// + /// Type of job the handler processes. + /// Job processing handler which does nothing. + private static Action GetEmptyProcessHandler() + { + Action handler = (job) => + { + }; + + return handler; } + + #endregion } diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/TimeSpanParserTests.cs b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/TimeSpanParserTests.cs index 471a0bbe69..7b145b99d6 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/TimeSpanParserTests.cs +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/Utilities/TimeSpanParserTests.cs @@ -1,87 +1,87 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CoreUtilities.UnitTests -{ - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; +using System; - [TestClass] - public class TimeSpanParserTests - { - [TestMethod] - // core use cases - [DataRow("5400000")] - [DataRow("5400000ms")] - [DataRow("5400s")] - [DataRow("90m")] - [DataRow("1.5h")] - [DataRow("0.0625d")] +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CoreUtilities.UnitTests; + +[TestClass] +public class TimeSpanParserTests +{ + [TestMethod] + // core use cases + [DataRow("5400000")] + [DataRow("5400000ms")] + [DataRow("5400s")] + [DataRow("90m")] + [DataRow("1.5h")] + [DataRow("0.0625d")] - // with space for parsing from xml - [DataRow("5400000 ms")] - [DataRow("5400 s")] - [DataRow("90 m")] - [DataRow("1.5 h")] - [DataRow("0.0625 d")] + // with space for parsing from xml + [DataRow("5400000 ms")] + [DataRow("5400 s")] + [DataRow("90 m")] + [DataRow("1.5 h")] + [DataRow("0.0625 d")] - // nice to haves - [DataRow("5400000MS")] - [DataRow("5400000millisecond")] - [DataRow("5400000milliseconds")] - [DataRow("5400000mil")] - [DataRow("5400000milisecond")] - [DataRow("5400000miliseconds")] - [DataRow("5400000mils")] - [DataRow("5400000millis")] - [DataRow("5400000millisecs")] - [DataRow("5400000milisecs")] - [DataRow("5400S")] - [DataRow("5400second")] - [DataRow("5400seconds")] - [DataRow("5400sec")] - [DataRow("5400secs")] - [DataRow("90M")] - [DataRow("90minute")] - [DataRow("90minutes")] - [DataRow("90min")] - [DataRow("90mins")] - [DataRow("1.5H")] - [DataRow("1.5hour")] - [DataRow("1.5hours")] - [DataRow("1.5hrs")] - [DataRow("1.5hr")] - [DataRow("0.0625D")] - [DataRow("0.0625day")] - [DataRow("0.0625days")] - public void Parses90Minutes(string time) - { - Assert.IsTrue(TimeSpanParser.TryParse(time, out var t)); - Assert.AreEqual(TimeSpan.FromMinutes(90), t); - } + // nice to haves + [DataRow("5400000MS")] + [DataRow("5400000millisecond")] + [DataRow("5400000milliseconds")] + [DataRow("5400000mil")] + [DataRow("5400000milisecond")] + [DataRow("5400000miliseconds")] + [DataRow("5400000mils")] + [DataRow("5400000millis")] + [DataRow("5400000millisecs")] + [DataRow("5400000milisecs")] + [DataRow("5400S")] + [DataRow("5400second")] + [DataRow("5400seconds")] + [DataRow("5400sec")] + [DataRow("5400secs")] + [DataRow("90M")] + [DataRow("90minute")] + [DataRow("90minutes")] + [DataRow("90min")] + [DataRow("90mins")] + [DataRow("1.5H")] + [DataRow("1.5hour")] + [DataRow("1.5hours")] + [DataRow("1.5hrs")] + [DataRow("1.5hr")] + [DataRow("0.0625D")] + [DataRow("0.0625day")] + [DataRow("0.0625days")] + public void Parses90Minutes(string time) + { + Assert.IsTrue(TimeSpanParser.TryParse(time, out var t)); + Assert.AreEqual(TimeSpan.FromMinutes(90), t); + } - [TestMethod] - [DataRow(null)] - [DataRow("")] - [DataRow(" ")] - [DataRow("\n")] - [DataRow("\t")] - public void ReturnsEmptyTimeSpanOnNullOrWhiteSpace(string time) - { - Assert.IsTrue(TimeSpanParser.TryParse(time, out var t)); - Assert.AreEqual(TimeSpan.Zero, t); - } + [TestMethod] + [DataRow(null)] + [DataRow("")] + [DataRow(" ")] + [DataRow("\n")] + [DataRow("\t")] + public void ReturnsEmptyTimeSpanOnNullOrWhiteSpace(string time) + { + Assert.IsTrue(TimeSpanParser.TryParse(time, out var t)); + Assert.AreEqual(TimeSpan.Zero, t); + } - [TestMethod] - [DataRow("09808asf")] - [DataRow("asfsadf")] - [DataRow("min")] - [DataRow("ms")] - [DataRow("1.1.1")] - public void ReturnsFalseForInvalidInput(string time) - { - Assert.IsFalse(TimeSpanParser.TryParse(time, out var _)); - } + [TestMethod] + [DataRow("09808asf")] + [DataRow("asfsadf")] + [DataRow("min")] + [DataRow("ms")] + [DataRow("1.1.1")] + public void ReturnsFalseForInvalidInput(string time) + { + Assert.IsFalse(TimeSpanParser.TryParse(time, out var _)); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/FrameworkHandleTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/FrameworkHandleTests.cs index 033c571c21..cf3eb8bb4f 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/FrameworkHandleTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/FrameworkHandleTests.cs @@ -1,106 +1,156 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter -{ - using System; +using System; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; - using Moq; +namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter; - [TestClass] - public class FrameworkHandleTests +[TestClass] +public class FrameworkHandleTests +{ + [TestMethod] + public void EnableShutdownAfterTestRunShoudBeFalseByDefault() { - [TestMethod] - public void EnableShutdownAfterTestRunShoudBeFalseByDefault() - { - var tec = GetTestExecutionContext(); - var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null); + var tec = GetTestExecutionContext(); + var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null!); - Assert.IsFalse(frameworkHandle.EnableShutdownAfterTestRun); - } + Assert.IsFalse(frameworkHandle.EnableShutdownAfterTestRun); + } - [TestMethod] - public void EnableShutdownAfterTestRunShoudBeSetAppropriately() - { - var tec = GetTestExecutionContext(); - var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null); + [TestMethod] + public void EnableShutdownAfterTestRunShoudBeSetAppropriately() + { + var tec = GetTestExecutionContext(); + var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null!); - frameworkHandle.EnableShutdownAfterTestRun = true; + frameworkHandle.EnableShutdownAfterTestRun = true; - Assert.IsTrue(frameworkHandle.EnableShutdownAfterTestRun); - } + Assert.IsTrue(frameworkHandle.EnableShutdownAfterTestRun); + } - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldThrowIfObjectIsDisposed() - { - var tec = GetTestExecutionContext(); - var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null); - frameworkHandle.Dispose(); + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldThrowIfObjectIsDisposed() + { + var tec = GetTestExecutionContext(); + var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null!); + frameworkHandle.Dispose(); - Assert.ThrowsException(() => frameworkHandle.LaunchProcessWithDebuggerAttached(null, null, null, null)); - } + Assert.ThrowsException(() => frameworkHandle.LaunchProcessWithDebuggerAttached(null!, null!, null!, null!)); + } + + [TestMethod] + [Ignore("TODO: Enable method once we fix the \"IsDebug\" in TestExecutionContext")] + public void LaunchProcessWithDebuggerAttachedShouldThrowIfNotInDebugContext() + { + var tec = GetTestExecutionContext(); + var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null!); - // TODO: Enable method once we fix the "IsDebug" in TestExecutionContext - // [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldThrowIfNotInDebugContext() + var isExceptionThrown = false; + try { - var tec = GetTestExecutionContext(); - var frameworkHandle = new FrameworkHandle(null, new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), tec, null); - - var isExceptionThrown = false; - try - { - frameworkHandle.LaunchProcessWithDebuggerAttached(null, null, null, null); - } - catch (InvalidOperationException exception) - { - isExceptionThrown = true; - Assert.AreEqual("This operation is not allowed in the context of a non-debug run.", exception.Message); - } - - Assert.IsTrue(isExceptionThrown); + frameworkHandle.LaunchProcessWithDebuggerAttached(null!, null, null, null); } - - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldCallRunEventsHandler() + catch (InvalidOperationException exception) { - var tec = GetTestExecutionContext(); - tec.IsDebug = true; - var mockTestRunEventsHandler = new Mock(); + isExceptionThrown = true; + Assert.AreEqual("This operation is not allowed in the context of a non-debug run.", exception.Message); + } - var frameworkHandle = new FrameworkHandle( - null, - new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), - tec, - mockTestRunEventsHandler.Object); + Assert.IsTrue(isExceptionThrown); + } - frameworkHandle.LaunchProcessWithDebuggerAttached(null, null, null, null); + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldCallRunEventsHandler() + { + var tec = GetTestExecutionContext(); + tec.IsDebug = true; + var mockTestRunEventsHandler = new Mock(); - mockTestRunEventsHandler.Verify(mt => - mt.LaunchProcessWithDebuggerAttached(It.IsAny()), Times.Once); - } + var frameworkHandle = new FrameworkHandle( + null, + new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), + tec, + mockTestRunEventsHandler.Object); - private static TestExecutionContext GetTestExecutionContext() - { - var tec = new TestExecutionContext( - frequencyOfRunStatsChangeEvent: 100, - runStatsChangeEventTimeout: TimeSpan.MaxValue, - inIsolation: false, - keepAlive: false, - isDataCollectionEnabled: false, - areTestCaseLevelEventsRequired: false, - hasTestRun: false, - isDebug: false, - testCaseFilter: string.Empty, - filterOptions: null); - return tec; - } + frameworkHandle.LaunchProcessWithDebuggerAttached(null!, null, null, null); + + mockTestRunEventsHandler.Verify(mt => + mt.LaunchProcessWithDebuggerAttached(It.IsAny()), Times.Once); + } + + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldSetCurrentDirectoryWhenWorkingDirectoryIsNull() + { + var tec = GetTestExecutionContext(); + tec.IsDebug = true; + var mockTestRunEventsHandler = new Mock(); + TestProcessStartInfo? capturedProcessInfo = null; + + mockTestRunEventsHandler + .Setup(mt => mt.LaunchProcessWithDebuggerAttached(It.IsAny())) + .Callback(info => capturedProcessInfo = info) + .Returns(1234); + + var frameworkHandle = new FrameworkHandle( + null, + new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), + tec, + mockTestRunEventsHandler.Object); + + frameworkHandle.LaunchProcessWithDebuggerAttached("test.exe", null, null, null); + + Assert.IsNotNull(capturedProcessInfo); + Assert.AreEqual(Environment.CurrentDirectory, capturedProcessInfo.WorkingDirectory); + } + + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldUseProvidedWorkingDirectory() + { + var tec = GetTestExecutionContext(); + tec.IsDebug = true; + var mockTestRunEventsHandler = new Mock(); + TestProcessStartInfo? capturedProcessInfo = null; + var expectedWorkingDirectory = "/custom/path"; + + mockTestRunEventsHandler + .Setup(mt => mt.LaunchProcessWithDebuggerAttached(It.IsAny())) + .Callback(info => capturedProcessInfo = info) + .Returns(1234); + + var frameworkHandle = new FrameworkHandle( + null, + new TestRunCache(100, TimeSpan.MaxValue, (s, r, ip) => { }), + tec, + mockTestRunEventsHandler.Object); + + frameworkHandle.LaunchProcessWithDebuggerAttached("test.exe", expectedWorkingDirectory, null, null); + + Assert.IsNotNull(capturedProcessInfo); + Assert.AreEqual(expectedWorkingDirectory, capturedProcessInfo.WorkingDirectory); + } + + private static TestExecutionContext GetTestExecutionContext() + { + var tec = new TestExecutionContext( + frequencyOfRunStatsChangeEvent: 100, + runStatsChangeEventTimeout: TimeSpan.MaxValue, + inIsolation: false, + keepAlive: false, + isDataCollectionEnabled: false, + areTestCaseLevelEventsRequired: false, + hasTestRun: false, + isDebug: false, + testCaseFilter: string.Empty, + filterOptions: null); + return tec; } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/RunContextTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/RunContextTests.cs index 88a2b62a5c..8f9e3a1a42 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/RunContextTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/RunContextTests.cs @@ -1,66 +1,62 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter -{ - using System.Collections.Generic; +using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.Common.Filtering; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using MSTest.TestFramework.AssertExtensions; +using Microsoft.VisualStudio.TestPlatform.Common.Filtering; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class RunContextTests - { - private RunContext runContext; +namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter; - [TestInitialize] - public void TestInit() - { - this.runContext = new RunContext(); - } +[TestClass] +public class RunContextTests +{ + private readonly RunContext _runContext; - [TestMethod] - public void GetTestCaseFilterShouldReturnNullIfFilterExpressionIsNull() - { - this.runContext.FilterExpressionWrapper = null; + public RunContextTests() + { + _runContext = new RunContext(); + } - Assert.IsNull(this.runContext.GetTestCaseFilter(null, (s) => { return null; })); - } + [TestMethod] + public void GetTestCaseFilterShouldReturnNullIfFilterExpressionIsNull() + { + _runContext.FilterExpressionWrapper = null; - /// - /// If only property value passed, consider property key and operation defaults. - /// - [TestMethod] - public void GetTestCaseFilterShouldNotThrowIfPropertyValueOnlyPassed() - { - this.runContext.FilterExpressionWrapper = new FilterExpressionWrapper("Infinity"); + Assert.IsNull(_runContext.GetTestCaseFilter(null, s => null)); + } - var filter = this.runContext.GetTestCaseFilter(new List{ "FullyQualifiedName" }, (s) => { return null; }); + /// + /// If only property value passed, consider property key and operation defaults. + /// + [TestMethod] + public void GetTestCaseFilterShouldNotThrowIfPropertyValueOnlyPassed() + { + _runContext.FilterExpressionWrapper = new FilterExpressionWrapper("Infinity"); + + var filter = _runContext.GetTestCaseFilter(new List { "FullyQualifiedName" }, s => null); - Assert.IsNotNull(filter); - } + Assert.IsNotNull(filter); + } - [TestMethod] - public void GetTestCaseFilterShouldNotThrowOnInvalidProperties() - { - this.runContext.FilterExpressionWrapper = new FilterExpressionWrapper("highlyunlikelyproperty=unused"); + [TestMethod] + public void GetTestCaseFilterShouldNotThrowOnInvalidProperties() + { + _runContext.FilterExpressionWrapper = new FilterExpressionWrapper("highlyunlikelyproperty=unused"); - var filter = this.runContext.GetTestCaseFilter(new List { "TestCategory" }, (s) => { return null; }); + var filter = _runContext.GetTestCaseFilter(new List { "TestCategory" }, s => null); - Assert.IsNotNull(filter); - } + Assert.IsNotNull(filter); + } - [TestMethod] - public void GetTestCaseFilterShouldReturnTestCaseFilter() - { - this.runContext.FilterExpressionWrapper = new FilterExpressionWrapper("TestCategory=Important"); - var filter = this.runContext.GetTestCaseFilter(new List { "TestCategory" }, (s) => { return null; }); + [TestMethod] + public void GetTestCaseFilterShouldReturnTestCaseFilter() + { + _runContext.FilterExpressionWrapper = new FilterExpressionWrapper("TestCategory=Important"); + var filter = _runContext.GetTestCaseFilter(new List { "TestCategory" }, s => null); - Assert.IsNotNull(filter); - Assert.AreEqual("TestCategory=Important", filter.TestCaseFilterValue); - } + Assert.IsNotNull(filter); + Assert.AreEqual("TestCategory=Important", filter.TestCaseFilterValue); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/TestExecutionRecorderTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/TestExecutionRecorderTests.cs index 1754bf621d..be223b219a 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/TestExecutionRecorderTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Adapter/TestExecutionRecorderTests.cs @@ -1,227 +1,223 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; +using Moq; - using TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations; +using TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations; - [TestClass] - public class TestExecutionRecorderTests - { - private TestableTestRunCache testableTestRunCache; - private Mock mockTestCaseEventsHandler; - private TestExecutionRecorder testRecorder, testRecorderWithTestEventsHandler; - private TestCase testCase; - private Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult testResult; +namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter; - [TestInitialize] - public void TestInit() - { - this.testableTestRunCache = new TestableTestRunCache(); - this.testRecorder = new TestExecutionRecorder(null, this.testableTestRunCache); +[TestClass] +public class TestExecutionRecorderTests +{ + private readonly TestableTestRunCache _testableTestRunCache; + private readonly Mock _mockTestCaseEventsHandler; + private readonly TestExecutionRecorder _testRecorder, _testRecorderWithTestEventsHandler; + private readonly TestCase _testCase; + private readonly Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult _testResult; - this.testCase = new TestCase("A.C.M", new Uri("executor://dummy"), "A"); - this.testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(this.testCase); + public TestExecutionRecorderTests() + { + _testableTestRunCache = new TestableTestRunCache(); + _testRecorder = new TestExecutionRecorder(null, _testableTestRunCache); - this.mockTestCaseEventsHandler = new Mock(); - testRecorderWithTestEventsHandler = new TestExecutionRecorder(this.mockTestCaseEventsHandler.Object, this.testableTestRunCache); + _testCase = new TestCase("A.C.M", new Uri("executor://dummy"), "A"); + _testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(_testCase); - } + _mockTestCaseEventsHandler = new Mock(); + _testRecorderWithTestEventsHandler = new TestExecutionRecorder(_mockTestCaseEventsHandler.Object, _testableTestRunCache); - [TestMethod] - public void AttachmentsShouldReturnEmptyListByDefault() - { - var attachments = this.testRecorder.Attachments; + } - Assert.IsNotNull(attachments); - Assert.AreEqual(0, attachments.Count); - } + [TestMethod] + public void AttachmentsShouldReturnEmptyListByDefault() + { + var attachments = _testRecorder.Attachments; - [TestMethod] - public void RecordStartShouldUpdateTestRunCache() - { - this.testRecorder.RecordStart(this.testCase); - Assert.IsTrue(this.testableTestRunCache.TestStartedList.Contains(this.testCase)); - } + Assert.IsNotNull(attachments); + Assert.AreEqual(0, attachments.Count); + } - [TestMethod] - public void RecordResultShouldUpdateTestRunCache() - { - this.testRecorder.RecordResult(this.testResult); - Assert.IsTrue(this.testableTestRunCache.TestResultList.Contains(this.testResult)); - } + [TestMethod] + public void RecordStartShouldUpdateTestRunCache() + { + _testRecorder.RecordStart(_testCase); + Assert.IsTrue(_testableTestRunCache.TestStartedList.Contains(_testCase)); + } - [TestMethod] - public void RecordEndShouldUpdateTestRunCache() - { - this.testRecorder.RecordEnd(this.testCase, TestOutcome.Passed); - Assert.IsTrue(this.testableTestRunCache.TestCompletedList.Contains(this.testCase)); - } + [TestMethod] + public void RecordResultShouldUpdateTestRunCache() + { + _testRecorder.RecordResult(_testResult); + Assert.IsTrue(_testableTestRunCache.TestResultList.Contains(_testResult)); + } - [TestMethod] - public void RecordAttachmentsShouldAddToAttachmentSet() - { - var attachmentSet = new List { new AttachmentSet(new Uri("attachment://dummy"), "attachment") }; + [TestMethod] + public void RecordEndShouldUpdateTestRunCache() + { + _testRecorder.RecordEnd(_testCase, TestOutcome.Passed); + Assert.IsTrue(_testableTestRunCache.TestCompletedList.Contains(_testCase)); + } - this.testRecorder.RecordAttachments(attachmentSet); + [TestMethod] + public void RecordAttachmentsShouldAddToAttachmentSet() + { + var attachmentSet = new List { new(new Uri("attachment://dummy"), "attachment") }; - var attachments = testRecorder.Attachments; + _testRecorder.RecordAttachments(attachmentSet); - Assert.IsNotNull(attachments); - CollectionAssert.AreEqual(attachmentSet, attachments); - } + var attachments = _testRecorder.Attachments; - [TestMethod] - public void RecordAttachmentsShouldAddToAttachmentSetForMultipleAttachments() - { - var attachmentSet = new List - { - new AttachmentSet(new Uri("attachment://dummy"), "attachment"), - new AttachmentSet(new Uri("attachment://infinite"), "infinity") - }; + Assert.IsNotNull(attachments); + CollectionAssert.AreEqual(attachmentSet, attachments); + } - this.testRecorder.RecordAttachments(attachmentSet); + [TestMethod] + public void RecordAttachmentsShouldAddToAttachmentSetForMultipleAttachments() + { + var attachmentSet = new List + { + new(new Uri("attachment://dummy"), "attachment"), + new(new Uri("attachment://infinite"), "infinity") + }; - var attachments = this.testRecorder.Attachments; + _testRecorder.RecordAttachments(attachmentSet); - Assert.IsNotNull(attachments); - CollectionAssert.AreEqual(attachmentSet, attachments); + var attachments = _testRecorder.Attachments; - var newAttachmentSet = new AttachmentSet(new Uri("attachment://median"), "mid"); - attachmentSet.Add(newAttachmentSet); + Assert.IsNotNull(attachments); + CollectionAssert.AreEqual(attachmentSet, attachments); - this.testRecorder.RecordAttachments(new List { newAttachmentSet }); + var newAttachmentSet = new AttachmentSet(new Uri("attachment://median"), "mid"); + attachmentSet.Add(newAttachmentSet); - attachments = this.testRecorder.Attachments; + _testRecorder.RecordAttachments(new List { newAttachmentSet }); - Assert.IsNotNull(attachments); - CollectionAssert.AreEqual(attachmentSet, attachments); - } + attachments = _testRecorder.Attachments; - #region TestCaseResult caching tests. - [TestMethod] - public void RecordStartShouldInvokeSendTestCaseStart() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); + Assert.IsNotNull(attachments); + CollectionAssert.AreEqual(attachmentSet, attachments); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseStart(this.testCase), Times.Once); - } + #region TestCaseResult caching tests. + [TestMethod] + public void RecordStartShouldInvokeSendTestCaseStart() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); - [TestMethod] - public void RecordEndShouldInovkeTestCaseEndEventOnlyIfTestCaseStartWasCalledBefore() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseStart(_testCase), Times.Once); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Once); - } + [TestMethod] + public void RecordEndShouldInovkeTestCaseEndEventOnlyIfTestCaseStartWasCalledBefore() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); - [TestMethod] - public void RecordEndShouldNotInovkeTestCaseEndEventIfTestCaseStartWasNotCalledBefore() - { - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Once); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Never); - } + [TestMethod] + public void RecordEndShouldNotInovkeTestCaseEndEventIfTestCaseStartWasNotCalledBefore() + { + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); - [TestMethod] - public void RecordEndShouldNotInvokeTestCaseEndEventInCaseOfAMissingTestCaseStartInDataDrivenScenario() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Failed); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Never); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Once); - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Failed), Times.Never); - } + [TestMethod] + public void RecordEndShouldNotInvokeTestCaseEndEventInCaseOfAMissingTestCaseStartInDataDrivenScenario() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Failed); - [TestMethod] - public void RecordEndShouldInvokeSendTestCaseEndMultipleTimesInDataDrivenScenario() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Once); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Failed), Times.Never); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Exactly(2)); - } + [TestMethod] + public void RecordEndShouldInvokeSendTestCaseEndMultipleTimesInDataDrivenScenario() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); - [TestMethod] - public void RecordStartAndRecordEndShouldIgnoreRedundantTestCaseStartAndTestCaseEnd() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Exactly(2)); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseStart(this.testCase), Times.Exactly(1)); - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Exactly(1)); - } + [TestMethod] + public void RecordStartAndRecordEndShouldIgnoreRedundantTestCaseStartAndTestCaseEnd() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); - [TestMethod] - public void RecordResultShouldPublishTestResultIfRecordStartAndRecordEndEventsAreNotPublished() - { - this.testRecorderWithTestEventsHandler.RecordResult(this.testResult); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseStart(_testCase), Times.Exactly(1)); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Exactly(1)); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestResult(this.testResult), Times.Once); - } + [TestMethod] + public void RecordResultShouldPublishTestResultIfRecordStartAndRecordEndEventsAreNotPublished() + { + _testRecorderWithTestEventsHandler.RecordResult(_testResult); - [TestMethod] - public void RecordResultShouldPublishTestCaseResultEventIfTestCaseStartAndTestCaseEndEventsArePublished() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); - this.testRecorderWithTestEventsHandler.RecordResult(this.testResult); + _mockTestCaseEventsHandler.Verify(x => x.SendTestResult(_testResult), Times.Once); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestResult(testResult), Times.Once); - } + [TestMethod] + public void RecordResultShouldPublishTestCaseResultEventIfTestCaseStartAndTestCaseEndEventsArePublished() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); + _testRecorderWithTestEventsHandler.RecordResult(_testResult); - [TestMethod] - public void RecordResultShouldFlushIfRecordEndWasCalledBefore() - { - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, TestOutcome.Passed); - this.testRecorderWithTestEventsHandler.RecordResult(this.testResult); + _mockTestCaseEventsHandler.Verify(x => x.SendTestResult(_testResult), Times.Once); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Once); - Assert.IsTrue(this.testableTestRunCache.TestResultList.Contains(this.testResult)); - } + [TestMethod] + public void RecordResultShouldFlushIfRecordEndWasCalledBefore() + { + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, TestOutcome.Passed); + _testRecorderWithTestEventsHandler.RecordResult(_testResult); - [TestMethod] - public void RecordResultShouldSendTestCaseEndEventAndFlushIfRecordEndWasCalledAfterRecordResult() - { - this.testResult.Outcome = TestOutcome.Passed; - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordResult(this.testResult); - this.testRecorderWithTestEventsHandler.RecordEnd(this.testCase, this.testResult.Outcome); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Once); + Assert.IsTrue(_testableTestRunCache.TestResultList.Contains(_testResult)); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Once); - Assert.IsTrue(this.testableTestRunCache.TestResultList.Contains(this.testResult)); - } + [TestMethod] + public void RecordResultShouldSendTestCaseEndEventAndFlushIfRecordEndWasCalledAfterRecordResult() + { + _testResult.Outcome = TestOutcome.Passed; + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordResult(_testResult); + _testRecorderWithTestEventsHandler.RecordEnd(_testCase, _testResult.Outcome); - [TestMethod] - public void RecordResultShouldSendTestCaseEndEventIfRecordEndWasNotCalled() - { - this.testResult.Outcome = TestOutcome.Passed; - this.testRecorderWithTestEventsHandler.RecordStart(this.testCase); - this.testRecorderWithTestEventsHandler.RecordResult(this.testResult); + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Once); + Assert.IsTrue(_testableTestRunCache.TestResultList.Contains(_testResult)); + } - this.mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(this.testCase, TestOutcome.Passed), Times.Once); - Assert.IsTrue(this.testableTestRunCache.TestResultList.Contains(this.testResult)); - } + [TestMethod] + public void RecordResultShouldSendTestCaseEndEventIfRecordEndWasNotCalled() + { + _testResult.Outcome = TestOutcome.Passed; + _testRecorderWithTestEventsHandler.RecordStart(_testCase); + _testRecorderWithTestEventsHandler.RecordResult(_testResult); - #endregion + _mockTestCaseEventsHandler.Verify(x => x.SendTestCaseEnd(_testCase, TestOutcome.Passed), Times.Once); + Assert.IsTrue(_testableTestRunCache.TestResultList.Contains(_testResult)); } -} \ No newline at end of file + + #endregion +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/DataCollectorAttachmentProcessorAppDomainTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/DataCollectorAttachmentProcessorAppDomainTests.cs new file mode 100644 index 0000000000..ca3ebea968 --- /dev/null +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/DataCollectorAttachmentProcessorAppDomainTests.cs @@ -0,0 +1,300 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if NETFRAMEWORK + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.TestRunAttachmentsProcessing; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollectorAttachmentProcessorAppDomainTests; + +[TestClass] +public class DataCollectorAttachmentProcessorAppDomainTests +{ + private readonly Mock _loggerMock = new(); + internal static string SomeState = "deafultState"; + + [TestMethod] + public async Task DataCollectorAttachmentProcessorAppDomain_ShouldBeIsolated() + { + // arrange + var invokedDataCollector = new InvokedDataCollector(new Uri("datacollector://AppDomainSample"), "AppDomainSample", typeof(AppDomainSampleDataCollector).AssemblyQualifiedName, typeof(AppDomainSampleDataCollector).Assembly.Location, true); + var attachmentSet = new AttachmentSet(new Uri("datacollector://AppDomainSample"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\sample"), "sample")); + Collection attachments = new() { attachmentSet }; + var doc = new XmlDocument(); + doc.LoadXml(""); + + // act + using DataCollectorAttachmentProcessorAppDomain dcap = new(invokedDataCollector, _loggerMock.Object); + Assert.IsTrue(dcap.LoadSucceded); + await dcap.ProcessAttachmentSetsAsync(doc.DocumentElement, attachments, new Progress((int report) => { }), _loggerMock.Object, CancellationToken.None); + + //Assert + // If the processor runs in another AppDomain the static state is not shared and should not change. + Assert.AreEqual("deafultState", SomeState); + } + + [TestMethod] + public async Task DataCollectorAttachmentProcessorAppDomain_ShouldCancel() + { + // arrange + var invokedDataCollector = new InvokedDataCollector(new Uri("datacollector://AppDomainSample"), "AppDomainSample", typeof(AppDomainSampleDataCollector).AssemblyQualifiedName, typeof(AppDomainSampleDataCollector).Assembly.Location, true); + var attachmentSet = new AttachmentSet(new Uri("datacollector://AppDomainSample"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\sample"), "sample")); + Collection attachments = new() { attachmentSet }; + var doc = new XmlDocument(); + doc.LoadXml("5000"); + CancellationTokenSource cts = new(); + + // act + using DataCollectorAttachmentProcessorAppDomain dcap = new(invokedDataCollector, _loggerMock.Object); + Assert.IsTrue(dcap.LoadSucceded); + + Task runProcessing = dcap.ProcessAttachmentSetsAsync(doc.DocumentElement, attachments, new Progress((int report) => cts.Cancel()), _loggerMock.Object, cts.Token); + + //assert + await Assert.ThrowsExceptionAsync(async () => await runProcessing); + } + + [TestMethod] + public async Task DataCollectorAttachmentProcessorAppDomain_ShouldReturnCorrectAttachments() + { + // arrange + var invokedDataCollector = new InvokedDataCollector(new Uri("datacollector://AppDomainSample"), "AppDomainSample", typeof(AppDomainSampleDataCollector).AssemblyQualifiedName, typeof(AppDomainSampleDataCollector).Assembly.Location, true); + var attachmentSet = new AttachmentSet(new Uri("datacollector://AppDomainSample"), "AppDomainSample"); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\sample"), "sample")); + Collection attachments = new() { attachmentSet }; + var doc = new XmlDocument(); + doc.LoadXml(""); + + // act + using DataCollectorAttachmentProcessorAppDomain dcap = new(invokedDataCollector, _loggerMock.Object); + Assert.IsTrue(dcap.LoadSucceded); + + var attachmentsResult = await dcap.ProcessAttachmentSetsAsync(doc.DocumentElement, attachments, new Progress(), _loggerMock.Object, CancellationToken.None); + var firstAttachmentSet = attachmentsResult.First(); + + // assert + // We return same instance but we're marshaling so we expected different pointers + Assert.AreNotSame(attachmentSet, firstAttachmentSet); + + Assert.AreEqual(attachmentSet.DisplayName, firstAttachmentSet.DisplayName); + Assert.AreEqual(attachmentSet.Uri, firstAttachmentSet.Uri); + Assert.AreEqual(attachmentSet.Attachments.Count, attachmentsResult.Count); + Assert.AreEqual(attachmentSet.Attachments[0].Description, firstAttachmentSet.Attachments[0].Description); + Assert.AreEqual(attachmentSet.Attachments[0].Uri, firstAttachmentSet.Attachments[0].Uri); + Assert.AreEqual(attachmentSet.Attachments[0].Uri, firstAttachmentSet.Attachments[0].Uri); + } + + [TestMethod] + public async Task DataCollectorAttachmentProcessorAppDomain_ShouldReportProgressCorrectly() + { + // arrange + var invokedDataCollector = new InvokedDataCollector(new Uri("datacollector://AppDomainSample"), "AppDomainSample", typeof(AppDomainSampleDataCollector).AssemblyQualifiedName, typeof(AppDomainSampleDataCollector).Assembly.Location, true); + var attachmentSet = new AttachmentSet(new Uri("datacollector://AppDomainSample"), "AppDomainSample"); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\sample"), "sample")); + Collection attachments = new() { attachmentSet }; + var doc = new XmlDocument(); + doc.LoadXml(""); + + // act + var progress = new CustomProgress(); + using DataCollectorAttachmentProcessorAppDomain dcap = new(invokedDataCollector, _loggerMock.Object); + Assert.IsTrue(dcap.LoadSucceded); + + var attachmentsResult = await dcap.ProcessAttachmentSetsAsync( + doc.DocumentElement, + attachments, + progress, + _loggerMock.Object, + CancellationToken.None); + + // assert + progress.CountdownEvent.Wait(new CancellationTokenSource(10000).Token); + Assert.AreEqual(10, progress.Progress[0]); + Assert.AreEqual(50, progress.Progress[1]); + Assert.AreEqual(100, progress.Progress[2]); + } + + [TestMethod] + public async Task DataCollectorAttachmentProcessorAppDomain_ShouldLogCorrectly() + { + // arrange + var invokedDataCollector = new InvokedDataCollector(new Uri("datacollector://AppDomainSample"), "AppDomainSample", typeof(AppDomainSampleDataCollector).AssemblyQualifiedName, typeof(AppDomainSampleDataCollector).Assembly.Location, true); + var attachmentSet = new AttachmentSet(new Uri("datacollector://AppDomainSample"), "AppDomainSample"); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\sample"), "sample")); + Collection attachments = new() { attachmentSet }; + var doc = new XmlDocument(); + doc.LoadXml(""); + CountdownEvent countdownEvent = new(3); + List> messages = new(); + _loggerMock.Setup(x => x.SendMessage(It.IsAny(), It.IsAny())).Callback((TestMessageLevel messageLevel, string message) + => + { + countdownEvent.Signal(); + messages.Add(new Tuple(messageLevel, message)); + }); + + // act + using DataCollectorAttachmentProcessorAppDomain dcap = new(invokedDataCollector, _loggerMock.Object); + Assert.IsTrue(dcap.LoadSucceded); + + var attachmentsResult = await dcap.ProcessAttachmentSetsAsync(doc.DocumentElement, attachments, new Progress(), _loggerMock.Object, CancellationToken.None); + + // assert + countdownEvent.Wait(new CancellationTokenSource(10000).Token); + Assert.AreEqual(3, messages.Count); + Assert.AreEqual(TestMessageLevel.Informational, messages[0].Item1); + Assert.AreEqual("Info", messages[0].Item2); + Assert.AreEqual(TestMessageLevel.Warning, messages[1].Item1); + Assert.AreEqual("Warning", messages[1].Item2); + Assert.AreEqual(TestMessageLevel.Error, messages[2].Item1); + Assert.AreEqual($"line1{Environment.NewLine}line2{Environment.NewLine}line3", messages[2].Item2); + } + + [TestMethod] + public void DataCollectorAttachmentProcessorAppDomain_ShouldReportFailureDuringExtensionCreation() + { + // arrange + var invokedDataCollector = new InvokedDataCollector(new Uri("datacollector://AppDomainSampleFailure"), "AppDomainSampleFailure", typeof(AppDomainSampleDataCollectorFailure).AssemblyQualifiedName, typeof(AppDomainSampleDataCollectorFailure).Assembly.Location, true); + var attachmentSet = new AttachmentSet(new Uri("datacollector://AppDomainSampleFailure"), "AppDomainSampleFailure"); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\sample"), "sample")); + Collection attachments = new() { attachmentSet }; + var doc = new XmlDocument(); + doc.LoadXml(""); + using ManualResetEventSlim errorReportEvent = new(); + _loggerMock.Setup(x => x.SendMessage(It.IsAny(), It.IsAny())).Callback((TestMessageLevel messageLevel, string message) + => + { + if (messageLevel == TestMessageLevel.Error) + { + Assert.IsTrue(message.Contains("System.Exception: Failed to create the extension")); + errorReportEvent.Set(); + } + }); + + // act + using DataCollectorAttachmentProcessorAppDomain dcap = new(invokedDataCollector, _loggerMock.Object); + + //assert + errorReportEvent.Wait(new CancellationTokenSource(10000).Token); + Assert.IsFalse(dcap.LoadSucceded); + } + + [DataCollectorFriendlyName("AppDomainSample")] + [DataCollectorTypeUri("datacollector://AppDomainSample")] + [DataCollectorAttachmentProcessor(typeof(AppDomainDataCollectorAttachmentProcessor))] + public class AppDomainSampleDataCollector : DataCollector + { + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + + } + } + + public class AppDomainDataCollectorAttachmentProcessor : IDataCollectorAttachmentProcessor + { + public bool SupportsIncrementalProcessing => false; + + public IEnumerable GetExtensionUris() => new[] { new Uri("datacollector://AppDomainSample") }; + + public async Task> ProcessAttachmentSetsAsync(XmlElement configurationElement, ICollection attachments, IProgress progressReporter, IMessageLogger logger, CancellationToken cancellationToken) + { + SomeState = "Updated shared state"; + + var timeout = configurationElement.InnerText; + if (!string.IsNullOrEmpty(timeout)) + { + progressReporter.Report(100); + + DateTime expire = DateTime.UtcNow + TimeSpan.FromMilliseconds(int.Parse(timeout, CultureInfo.CurrentCulture)); + while (true) + { + if (DateTime.UtcNow > expire) + { + cancellationToken.ThrowIfCancellationRequested(); + } + +#pragma warning disable CA2016 // Forward the 'CancellationToken' parameter to methods + await Task.Delay(1000); +#pragma warning restore CA2016 // Forward the 'CancellationToken' parameter to methods + } + } + + progressReporter.Report(10); + progressReporter.Report(50); + progressReporter.Report(100); + + logger.SendMessage(TestMessageLevel.Informational, "Info"); + logger.SendMessage(TestMessageLevel.Warning, "Warning"); + logger.SendMessage(TestMessageLevel.Error, $"line1{Environment.NewLine}line2\nline3"); + + return attachments; + } + } + + [DataCollectorFriendlyName("AppDomainSampleFailure")] + [DataCollectorTypeUri("datacollector://AppDomainSampleFailure")] + [DataCollectorAttachmentProcessor(typeof(AppDomainDataCollectorAttachmentProcessorFailure))] + public class AppDomainSampleDataCollectorFailure : DataCollector + { + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + + } + } + + public class AppDomainDataCollectorAttachmentProcessorFailure : IDataCollectorAttachmentProcessor + { + public AppDomainDataCollectorAttachmentProcessorFailure() + { + throw new Exception("Failed to create the extension"); + } + + public bool SupportsIncrementalProcessing => false; + + public IEnumerable GetExtensionUris() => throw new NotImplementedException(); + + public Task> ProcessAttachmentSetsAsync(XmlElement configurationElement, ICollection attachments, IProgress progressReporter, IMessageLogger logger, CancellationToken cancellationToken) + => throw new NotImplementedException(); + } + + public class CustomProgress : IProgress + { + public List Progress { get; set; } = new List(); + public CountdownEvent CountdownEvent { get; set; } = new CountdownEvent(3); + + public void Report(int value) + { + Progress.Add(value); + CountdownEvent.Signal(); + } + } +} + +#endif diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingManagerTests.cs index a51adcc7d6..54bb5e48e6 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/AttachmentsProcessing/TestRunAttachmentsProcessingManagerTests.cs @@ -1,416 +1,388 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestRunAttachmentsProcessing +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.TestRunAttachmentsProcessing; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestRunAttachmentsProcessing; + +[TestClass] +public class TestRunAttachmentsProcessingManagerTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.TestRunAttachmentsProcessing; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class TestRunAttachmentsProcessingManagerTests + private const string Uri1 = "datacollector://microsoft/some1/1.0"; + private const string Uri2 = "datacollector://microsoft/some2/2.0"; + private const string Uri3 = "datacollector://microsoft/some3/2.0"; + + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockEventSource; + private readonly Mock _mockAttachmentHandler1; + private readonly Mock _mockAttachmentHandler2; + private readonly Mock _mockDataCollectorAttachmentsProcessorsFactory; + private readonly Mock _mockEventsHandler; + private readonly TestRunAttachmentsProcessingManager _manager; + private readonly CancellationTokenSource _cancellationTokenSource; + + public TestRunAttachmentsProcessingManagerTests() { - private const string uri1 = "datacollector://microsoft/some1/1.0"; - private const string uri2 = "datacollector://microsoft/some2/2.0"; - private const string uri3 = "datacollector://microsoft/some3/2.0"; - - private readonly Mock mockRequestData; - private readonly Mock mockMetricsCollection; - private readonly Mock mockEventSource; - private readonly Mock mockAttachmentHandler1; - private readonly Mock mockAttachmentHandler2; - private readonly Mock mockEventsHandler; - private readonly TestRunAttachmentsProcessingManager manager; - private readonly CancellationTokenSource cancellationTokenSource; - - public TestRunAttachmentsProcessingManagerTests() - { - mockRequestData = new Mock(); - mockMetricsCollection = new Mock(); - mockRequestData.Setup(r => r.MetricsCollection).Returns(mockMetricsCollection.Object); - - mockEventSource = new Mock(); - mockAttachmentHandler1 = new Mock(); - mockAttachmentHandler2 = new Mock(); - mockEventsHandler = new Mock(); - - mockAttachmentHandler1.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(uri1) }); - mockAttachmentHandler2.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(uri2) }); - - manager = new TestRunAttachmentsProcessingManager(mockEventSource.Object, mockAttachmentHandler1.Object, mockAttachmentHandler2.Object); - - cancellationTokenSource = new CancellationTokenSource(); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfNoAttachmentsOnInput() - { - // arrange - List inputAttachments = new List(); - - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); - - // assert - VerifyCompleteEvent(false, false); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingComplete(It.Is(a => !a.IsCanceled), It.Is>(c => c.Count == 0))); - mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); - mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStart(0)); - mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStop(0)); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - - VerifyMetrics(inputCount: 0, outputCount: 0); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnNoAttachments_IfNoAttachmentsOnInput() - { - // arrange - List inputAttachments = new List(); - - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); - - // assert - Assert.AreEqual(0, result.Count); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - - VerifyMetrics(inputCount: 0, outputCount: 0); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1NotProcessedAttachmentThroughEventsHandler_If1NotRelatedAttachmentOnInput() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri3), "uri3_input") - }; - - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); - - // assert - VerifyCompleteEvent(false, false, inputAttachments[0]); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); - mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - - VerifyMetrics(inputCount: 1, outputCount: 1); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1NotProcessedAttachment_If1NotRelatedAttachmentOnInput() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri3), "uri3_input") - }; - - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); - - // assert - Assert.AreEqual(1, result.Count); - Assert.IsTrue(result.Contains(inputAttachments[0])); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - - VerifyMetrics(inputCount: 1, outputCount: 1); - } + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData.Setup(r => r.MetricsCollection).Returns(_mockMetricsCollection.Object); + + _mockEventSource = new Mock(); + _mockAttachmentHandler1 = new Mock(); + _mockAttachmentHandler1.Setup(x => x.SupportsIncrementalProcessing).Returns(true); + _mockAttachmentHandler2 = new Mock(); + _mockAttachmentHandler2.Setup(x => x.SupportsIncrementalProcessing).Returns(true); + _mockEventsHandler = new Mock(); + _mockDataCollectorAttachmentsProcessorsFactory = new Mock(); + + _mockAttachmentHandler1.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(Uri1) }); + _mockAttachmentHandler2.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(Uri2) }); + _mockDataCollectorAttachmentsProcessorsFactory.Setup(p => p.Create(It.IsAny(), It.IsAny())) + .Returns([ + new( "friendlyNameA", _mockAttachmentHandler1.Object ), + new( "friendlyNameB" ,_mockAttachmentHandler2.Object ) + ]); + + _manager = new TestRunAttachmentsProcessingManager(_mockEventSource.Object, _mockDataCollectorAttachmentsProcessorsFactory.Object); + + _cancellationTokenSource = new CancellationTokenSource(); + } - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1ProcessedAttachmentThroughEventsHandler_IfRelatedAttachmentOnInput() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfNoAttachmentsOnInput() + { + // arrange + List inputAttachments = new(); + + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + VerifyCompleteEvent(false, false); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingComplete(It.Is(a => !a.IsCanceled), It.Is>(c => c.Count == 0))); + _mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); + _mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStart(0)); + _mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStop(0)); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + VerifyMetrics(inputCount: 0, outputCount: 0); + } - List outputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnNoAttachments_IfNoAttachmentsOnInput() + { + // arrange + List inputAttachments = new(); - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachments); + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); + // assert + Assert.AreEqual(0, result.Count); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - // assert - VerifyCompleteEvent(false, false, outputAttachments[0]); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); - mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + VerifyMetrics(inputCount: 0, outputCount: 0); + } - VerifyMetrics(inputCount: 1, outputCount: 1); - } + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1NotProcessedAttachmentThroughEventsHandler_If1NotRelatedAttachmentOnInput() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri3), "uri3_input")]; + + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + VerifyCompleteEvent(false, false, inputAttachments[0]); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); + _mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + VerifyMetrics(inputCount: 1, outputCount: 1); + } - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1ProcessedAttachment_IfRelatedAttachmentOnInput() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1NotProcessedAttachment_If1NotRelatedAttachmentOnInput() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri3), "uri3_input")]; - List outputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachments); + // assert + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.Contains(inputAttachments[0])); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); + VerifyMetrics(inputCount: 1, outputCount: 1); + } - // assert - Assert.AreEqual(1, result.Count); - Assert.IsTrue(result.Contains(outputAttachments[0])); - mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStart(1)); - mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStop(1)); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1ProcessedAttachmentThroughEventsHandler_IfRelatedAttachmentOnInput() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; - VerifyMetrics(inputCount: 1, outputCount: 1); - } + List outputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_output")]; - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfRelatedAttachmentOnInputButHandlerThrowsException() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachments); - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Throws(new Exception("exception message")); + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); + // assert + VerifyCompleteEvent(false, false, outputAttachments[0]); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); + _mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - // assert - VerifyCompleteEvent(false, true, inputAttachments[0]); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); - mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Error, "exception message"), Times.Once); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + VerifyMetrics(inputCount: 1, outputCount: 1); + } - VerifyMetrics(inputCount: 1, outputCount: 1, status: "Failed"); - } + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturn1ProcessedAttachment_IfRelatedAttachmentOnInput() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_IfRelatedAttachmentOnInputButHandlerThrowsException() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + List outputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_output")]; - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Throws(new Exception("exception message")); + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachments); - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); - // assert - Assert.AreEqual(1, result.Count); - Assert.IsTrue(result.Contains(inputAttachments[0])); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + // assert + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.Contains(outputAttachments[0])); + _mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStart(1)); + _mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStop(1)); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - VerifyMetrics(inputCount: 1, outputCount: 1, status: "Failed"); - } + VerifyMetrics(inputCount: 1, outputCount: 1); + } - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfOperationIsCancelled() - { - // arrange - cancellationTokenSource.Cancel(); - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfRelatedAttachmentOnInputButHandlerThrowsException() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); + var exceptionToThrow = new Exception("exception message"); + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Throws(exceptionToThrow); - // assert - VerifyCompleteEvent(true, false, inputAttachments[0]); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); - VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); - } + // assert + VerifyCompleteEvent(false, false, inputAttachments[0]); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); + _mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Error, exceptionToThrow.ToString()), Times.Once); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Once); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_IfOperationIsCancelled() - { - // arrange - cancellationTokenSource.Cancel(); - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + VerifyMetrics(inputCount: 1, outputCount: 1); + } - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_IfRelatedAttachmentOnInputButHandlerThrowsException() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; - // assert - Assert.AreEqual(1, result.Count); - Assert.IsTrue(result.Contains(inputAttachments[0])); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Throws(new Exception("exception message")); - VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); - } + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProcessedAttachmentsThroughEventsHandler_IfRelatedAttachmentsOnInput() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input1"), - new AttachmentSet(new Uri(uri1), "uri1_input2"), - new AttachmentSet(new Uri(uri2), "uri2_input1"), - new AttachmentSet(new Uri(uri2), "uri2_input2"), - new AttachmentSet(new Uri(uri3), "uri3_input1"), - }; - - List outputAttachmentsForHandler1 = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + // assert + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.Contains(inputAttachments[0])); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Once); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - List outputAttachmentsForHandler2 = new List - { - new AttachmentSet(new Uri(uri2), "uri2_output") - }; + VerifyMetrics(inputCount: 1, outputCount: 1); + } - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler1); - mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler2); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfOperationIsCancelled() + { + // arrange + _cancellationTokenSource.Cancel(); + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; + + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + VerifyCompleteEvent(true, false, inputAttachments[0]); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); + } - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_IfOperationIsCancelled() + { + // arrange + _cancellationTokenSource.Cancel(); + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; + + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); + + // assert + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.Contains(inputAttachments[0])); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); + } - // assert - VerifyCompleteEvent(false, false, inputAttachments[4], outputAttachmentsForHandler1.First(), outputAttachmentsForHandler2.First()); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); - mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[0]) && c.Contains(inputAttachments[1])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[2]) && c.Contains(inputAttachments[3])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProcessedAttachmentsThroughEventsHandler_IfRelatedAttachmentsOnInput() + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input1"), + new AttachmentSet(new Uri(Uri1), "uri1_input2"), + new AttachmentSet(new Uri(Uri2), "uri2_input1"), + new AttachmentSet(new Uri(Uri2), "uri2_input2"), + new AttachmentSet(new Uri(Uri3), "uri3_input1") + ]; + + List outputAttachmentsForHandler1 = [new AttachmentSet(new Uri(Uri1), "uri1_output")]; + + List outputAttachmentsForHandler2 = [new AttachmentSet(new Uri(Uri2), "uri2_output")]; + + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(null!, It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler1); + _mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(null!, It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler2); + + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + VerifyCompleteEvent(false, false, inputAttachments[4], outputAttachmentsForHandler1.First(), outputAttachmentsForHandler2.First()); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Never); + _mockEventsHandler.Verify(h => h.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[0]) && c.Contains(inputAttachments[1])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[2]) && c.Contains(inputAttachments[3])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + + VerifyMetrics(inputCount: 5, outputCount: 3); + } - VerifyMetrics(inputCount: 5, outputCount: 3); - } + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProcessedAttachments_IfRelatedAttachmentsOnInput() + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input1"), + new AttachmentSet(new Uri(Uri1), "uri1_input2"), + new AttachmentSet(new Uri(Uri2), "uri2_input1"), + new AttachmentSet(new Uri(Uri2), "uri2_input2"), + new AttachmentSet(new Uri(Uri3), "uri3_input1") + ]; + + List outputAttachmentsForHandler1 = [new AttachmentSet(new Uri(Uri1), "uri1_output")]; + + List outputAttachmentsForHandler2 = [new AttachmentSet(new Uri(Uri2), "uri2_output")]; + + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler1); + _mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler2); + + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); + + // assert + Assert.AreEqual(3, result.Count); + Assert.IsTrue(result.Contains(inputAttachments[4])); + Assert.IsTrue(result.Contains(outputAttachmentsForHandler1[0])); + Assert.IsTrue(result.Contains(outputAttachmentsForHandler2[0])); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[0]) && c.Contains(inputAttachments[1])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[2]) && c.Contains(inputAttachments[3])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + + VerifyMetrics(inputCount: 5, outputCount: 3); + } - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProcessedAttachments_IfRelatedAttachmentsOnInput() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input1"), - new AttachmentSet(new Uri(uri1), "uri1_input2"), - new AttachmentSet(new Uri(uri2), "uri2_input1"), - new AttachmentSet(new Uri(uri2), "uri2_input2"), - new AttachmentSet(new Uri(uri3), "uri3_input1"), - }; - - List outputAttachmentsForHandler1 = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfOperationCancelled() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; - List outputAttachmentsForHandler2 = new List - { - new AttachmentSet(new Uri(uri2), "uri2_output") - }; - - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler1); - mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).ReturnsAsync(outputAttachmentsForHandler2); - - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); - - // assert - Assert.AreEqual(3, result.Count); - Assert.IsTrue(result.Contains(inputAttachments[4])); - Assert.IsTrue(result.Contains(outputAttachmentsForHandler1[0])); - Assert.IsTrue(result.Contains(outputAttachmentsForHandler2[0])); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[0]) && c.Contains(inputAttachments[1])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 2 && c.Contains(inputAttachments[2]) && c.Contains(inputAttachments[3])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - - VerifyMetrics(inputCount: 5, outputCount: 3); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsThroughEventsHandler_IfOperationCancelled() + ICollection outputAttachments = new List { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + new(new Uri(Uri1), "uri1_output") + }; - ICollection outputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + var innerTaskCompletionSource = new TaskCompletionSource(); - var innerTaskCompletionSource = new TaskCompletionSource(); + CountdownEvent expectedProgress = new(4); + _mockEventsHandler.Setup(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny())).Callback((TestRunAttachmentsProcessingProgressEventArgs _) => expectedProgress.Signal()); - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns((ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((string configElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => { try { for (int i = 0; i < 100; ++i) { - Task.Delay(100).Wait(); Console.WriteLine($"Iteration: {i}"); logger.SendMessage(TestMessageLevel.Informational, $"Iteration: {i}"); @@ -419,8 +391,7 @@ public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsT if (i == 3) { - cancellationTokenSource.Cancel(); - Task.Delay(500).Wait(); + _cancellationTokenSource.Cancel(); } } } @@ -432,50 +403,65 @@ public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachmentsT return Task.FromResult(outputAttachments); }); - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, cancellationTokenSource.Token); - Console.WriteLine("Attachments processing done"); - await innerTaskCompletionSource.Task; - - // assert - VerifyCompleteEvent(true, false, inputAttachments[0]); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Exactly(4)); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 1)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 2)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 3)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 4)))); - mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Informational, "Attachments processing was cancelled.")); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - - VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_IfOperationCancelled() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input") - }; + ManualResetEventSlim attachmentProcessingComplete = new(false); + _mockEventsHandler.Setup(h => h.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.IsAny>())) + .Callback((TestRunAttachmentsProcessingCompleteEventArgs _, IEnumerable _) => attachmentProcessingComplete.Set()); + + ManualResetEventSlim handleLogMessage = new(false); + _mockEventsHandler.Setup(h => h.HandleLogMessage(TestMessageLevel.Informational, "Attachments processing was cancelled.")) + .Callback((TestMessageLevel _, string _) => handleLogMessage.Set()); + + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + Console.WriteLine("Attachments processing done"); + await innerTaskCompletionSource.Task; + + // Wait to drain all progress events + Assert.IsTrue(expectedProgress.Wait(TimeSpan.FromMinutes(1)), "expectedProgress not signaled"); + + // Wait for the HandleTestRunAttachmentsProcessingComplete + Assert.IsTrue(attachmentProcessingComplete.Wait(TimeSpan.FromMinutes(1)), "attachmentProcessingComplete not signaled"); + + // Wait for the HandleLogMessage + Assert.IsTrue(handleLogMessage.Wait(TimeSpan.FromMinutes(1)), "handleLogMessage not signaled"); + + // assert + VerifyCompleteEvent(true, false, inputAttachments[0]); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Exactly(4)); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 1)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 2)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 3)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgs(a, 4)))); + _mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Informational, "Attachments processing was cancelled.")); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); + } - ICollection outputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_IfOperationCancelled() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input")]; - var innerTaskCompletionSource = new TaskCompletionSource(); + ICollection outputAttachments = new List + { + new(new Uri(Uri1), "uri1_output") + }; - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns((ICollection i1, IProgress p, IMessageLogger logger, CancellationToken cancellation) => + var innerTaskCompletionSource = new TaskCompletionSource(); + + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress p, IMessageLogger logger, CancellationToken cancellation) => { try { for (int i = 0; i < 1000; ++i) { - Task.Delay(100).Wait(); + Task.Delay(200, cancellation).Wait(cancellation); Console.WriteLine($"Iteration: {i}"); logger.SendMessage(TestMessageLevel.Informational, $"Iteration: {i}"); @@ -483,8 +469,8 @@ public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_ if (i == 3) { - cancellationTokenSource.Cancel(); - Task.Delay(500).Wait(); + _cancellationTokenSource.Cancel(); + Task.Delay(1000, cancellation).Wait(cancellation); } } } @@ -496,56 +482,57 @@ public async Task ProcessTestRunAttachmentsAsync_ShouldReturnInitialAttachments_ return Task.FromResult(outputAttachments); }); - // act - var result = await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, cancellationTokenSource.Token); - Console.WriteLine("Attachments processing done"); - await innerTaskCompletionSource.Task; - - // assert - Assert.IsNotNull(result); - Assert.AreEqual(1, result.Count); - Assert.IsTrue(result.Contains(inputAttachments[0])); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), cancellationTokenSource.Token)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); - - VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProperlySendProgressEvents_IfHandlersPropagesEvents() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input"), - new AttachmentSet(new Uri(uri2), "uri2_input") - }; + // act + var result = await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _cancellationTokenSource.Token); + Console.WriteLine("Attachments processing done"); + await innerTaskCompletionSource.Task; + + // assert + Assert.IsNotNull(result); + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.Contains(inputAttachments[0])); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), _cancellationTokenSource.Token)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + VerifyMetrics(inputCount: 1, outputCount: 1, status: "Canceled"); + } - ICollection outputAttachments1 = new List - { - new AttachmentSet(new Uri(uri1), "uri1_output") - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProperlySendProgressEvents_IfHandlersPropagesEvents() + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input"), + new AttachmentSet(new Uri(Uri2), "uri2_input") + ]; + + ICollection outputAttachments1 = new List + { + new(new Uri(Uri1), "uri1_output") + }; - ICollection outputAttachments2 = new List - { - new AttachmentSet(new Uri(uri2), "uri2_output") - }; + ICollection outputAttachments2 = new List + { + new(new Uri(Uri2), "uri2_output") + }; - var innerTaskCompletionSource = new TaskCompletionSource(); + var innerTaskCompletionSource = new TaskCompletionSource(); - int counter = 0; - mockEventsHandler.Setup(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny())).Callback(() => - { - counter++; - if(counter == 6) - { - innerTaskCompletionSource.TrySetResult(null); - } - }); + int counter = 0; + _mockEventsHandler.Setup(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny())).Callback(() => + { + counter++; + if (counter == 6) + { + innerTaskCompletionSource.TrySetResult(null); + } + }); - mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns((ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(null!, It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => { progress.Report(25); progress.Report(50); @@ -555,7 +542,8 @@ public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProperlySendProgres return Task.FromResult(outputAttachments1); }); - mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns((ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + _mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(null!, It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => { progress.Report(50); logger.SendMessage(TestMessageLevel.Informational, "info"); @@ -563,63 +551,299 @@ public async Task ProcessTestRunAttachmentsAsync_ShouldReturnProperlySendProgres return Task.FromResult(outputAttachments2); }); - // act - await manager.ProcessTestRunAttachmentsAsync(mockRequestData.Object, inputAttachments, mockEventsHandler.Object, CancellationToken.None); - - // assert - await innerTaskCompletionSource.Task; - VerifyCompleteEvent(false, false, outputAttachments1.First(), outputAttachments2.First()); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Exactly(6)); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 25, uri1)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 50, uri1)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 75, uri1)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 100, uri1)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 2, 50, uri2)))); - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 2, 100, uri2)))); - mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); - mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), CancellationToken.None)); - mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[1])), It.IsAny>(), It.IsAny(), CancellationToken.None)); - - mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Informational, "info")); - mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Error, "error")); - - VerifyMetrics(inputCount: 2, outputCount: 2); - } - - private void VerifyMetrics(int inputCount, int outputCount, string status = "Completed") + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, CancellationToken.None); + + // assert + await innerTaskCompletionSource.Task; + VerifyCompleteEvent(false, false, outputAttachments1.First(), outputAttachments2.First()); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.IsAny()), Times.Exactly(6)); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 25, Uri1)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 50, Uri1)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 75, Uri1)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 1, 100, Uri1)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 2, 50, Uri2)))); + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingProgress(It.Is(a => VerifyProgressArgsForTwoHandlers(a, 2, 100, Uri2)))); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris()); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[0])), It.IsAny>(), It.IsAny(), CancellationToken.None)); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(inputAttachments[1])), It.IsAny>(), It.IsAny(), CancellationToken.None)); + + _mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Informational, "info")); + _mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Error, "error")); + + VerifyMetrics(inputCount: 2, outputCount: 2); + } + + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldNotFailIfRunsettingsIsNull() + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input"), + new AttachmentSet(new Uri(Uri2), "uri2_input") + ]; + ICollection outputAttachments = new List { - mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStart(inputCount)); - mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStop(outputCount)); + new(new Uri(Uri2), "uri2_output") + }; + _mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + { + // assert + Assert.IsNull(configurationElement); + return Task.FromResult(outputAttachments); + }); - mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.NumberOfAttachmentsSentForProcessing, inputCount)); - mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.NumberOfAttachmentsAfterProcessing, outputCount)); - mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.AttachmentsProcessingState, status)); - mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing, It.IsAny())); - } + // act + await _manager.ProcessTestRunAttachmentsAsync(null, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); - private void VerifyCompleteEvent(bool isCanceled, bool containsError, params AttachmentSet[] expectedSets) - { - mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingComplete( - It.Is(a => a.IsCanceled == isCanceled && (a.Error != null) == containsError), - It.Is>(c => c.Count == expectedSets.Length && expectedSets.All(e => c.Contains(e))))); - } + // assert + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())); + } + + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public async Task ProcessTestRunAttachmentsAsync_ShouldFlowCorrectDataCollectorConfiguration(bool withConfig) + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input"), + new AttachmentSet(new Uri(Uri2), "uri2_input") + ]; + + List invokedDataCollectors = + [ + new InvokedDataCollector(new Uri(Uri1), withConfig ? "friendlyNameA" : "friendlyNameB", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) + ]; + + string runSettingsXml = + $@" + + + + + + Value + + + + + +"; + + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + { + // assert + if (withConfig) + { + Assert.IsNotNull(configurationElement); + Assert.AreEqual("Value", configurationElement.InnerXml); + } + else + { + Assert.IsNull(configurationElement); + } + + ICollection outputAttachments = new List + { + new(new Uri(Uri2), "uri2_output") + }; + return Task.FromResult(outputAttachments); + }); + + // act + await _manager.ProcessTestRunAttachmentsAsync(runSettingsXml, _mockRequestData.Object, inputAttachments, invokedDataCollectors, _mockEventsHandler.Object, _cancellationTokenSource.Token); - private bool VerifyProgressArgs(TestRunAttachmentsProcessingProgressEventArgs args, int progress) + // assert + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())); + } + + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldNotConsumeAttachmentsIfProcessorFails() + { + // arrange + List inputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input_1")]; + inputAttachments[0].Attachments.Add(UriDataAttachment.CreateFrom("file1", "Sample1")); + inputAttachments[0].Attachments.Add(UriDataAttachment.CreateFrom("file2", "Sample2")); + inputAttachments[0].Attachments.Add(UriDataAttachment.CreateFrom("file3", "Sample3")); + + + _mockAttachmentHandler1.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(Uri1) }); + _mockAttachmentHandler2.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(Uri1) }); + + bool firstProcessorFailed = false; + + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + { + try + { + throw new Exception("Processor exception"); + } + catch + { + firstProcessorFailed = true; + throw; + } + }); + + ICollection output = new List { - Assert.AreEqual(1, args.CurrentAttachmentProcessorIndex); - Assert.AreEqual(2, args.AttachmentProcessorsCount); - Assert.AreEqual(1, args.CurrentAttachmentProcessorUris.Count); - Assert.AreEqual(uri1, args.CurrentAttachmentProcessorUris.First().AbsoluteUri); - return progress == args.CurrentAttachmentProcessorProgress; - } - - private bool VerifyProgressArgsForTwoHandlers(TestRunAttachmentsProcessingProgressEventArgs args, long handlerIndex, long progress, string uri) + new(new Uri(Uri1), "uri1_input_1") + }; + output.Single().Attachments.Add(UriDataAttachment.CreateFrom("file4", "Merged")); + + _mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + { + // assert + Assert.IsTrue(firstProcessorFailed); + Assert.AreEqual(1, i1.Count); + Assert.AreEqual(3, i1.Single().Attachments.Count); + for (int i = 0; i < i1.Single().Attachments.Count; i++) + { + Assert.AreEqual(inputAttachments.Single().Attachments[i], i1.Single().Attachments[i]); + } + + return Task.FromResult(output); + }); + + // act + await _manager.ProcessTestRunAttachmentsAsync(null, _mockRequestData.Object, inputAttachments, new List(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Once()); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Once()); + VerifyCompleteEvent(false, false, output.ToArray()); + } + + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldNotConsumeAttachmentsIfAllProcessorsFail() + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input_1") + ]; + inputAttachments[0].Attachments.Add(UriDataAttachment.CreateFrom("file1", "Sample1")); + inputAttachments[0].Attachments.Add(UriDataAttachment.CreateFrom("file2", "Sample2")); + inputAttachments[0].Attachments.Add(UriDataAttachment.CreateFrom("file3", "Sample3")); + + + _mockAttachmentHandler1.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(Uri1) }); + _mockAttachmentHandler2.Setup(h => h.GetExtensionUris()).Returns(new[] { new Uri(Uri1) }); + + bool firstProcessorFailed = false; + _mockAttachmentHandler1.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + { + try + { + throw new Exception("Processor exception"); + } + catch + { + firstProcessorFailed = true; + throw; + } + }); + + bool secondProcessorFailed = false; + _mockAttachmentHandler2.Setup(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((XmlElement configurationElement, ICollection i1, IProgress progress, IMessageLogger logger, CancellationToken cancellation) => + { + try + { + // assert + Assert.IsTrue(firstProcessorFailed); + Assert.AreEqual(1, i1.Count); + Assert.AreEqual(3, i1.Single().Attachments.Count); + for (int i = 0; i < i1.Single().Attachments.Count; i++) + { + Assert.AreEqual(inputAttachments.Single().Attachments[i], i1.Single().Attachments[i]); + } + throw new Exception("Processor exception"); + } + catch + { + secondProcessorFailed = true; + throw; + } + }); + + // act + await _manager.ProcessTestRunAttachmentsAsync(null, _mockRequestData.Object, inputAttachments, new List(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + Assert.IsTrue(firstProcessorFailed && secondProcessorFailed); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Once()); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Once()); + VerifyCompleteEvent(false, false, inputAttachments.ToArray()); + } + + [TestMethod] + public async Task ProcessTestRunAttachmentsAsync_ShouldSkipAttachmentProcessorIfDoesNotSupportIncrementalProcessing() + { + // arrange + var inputAttachments = new List { - return progress == args.CurrentAttachmentProcessorProgress && - args.CurrentAttachmentProcessorIndex == handlerIndex && - args.CurrentAttachmentProcessorUris.First().AbsoluteUri == uri && - args.AttachmentProcessorsCount == 2; - } + new(new Uri(Uri1), "uri1_input"), + new(new Uri(Uri2), "uri2_input") + }; + _mockAttachmentHandler1.Setup(x => x.SupportsIncrementalProcessing).Returns(false); + + // act + await _manager.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, inputAttachments, Array.Empty(), _mockEventsHandler.Object, _cancellationTokenSource.Token); + + // assert + // We expect that first attachment is still returned as-is because not processed. + VerifyCompleteEvent(false, false, inputAttachments.First()); + _mockAttachmentHandler1.Verify(h => h.GetExtensionUris(), Times.Never); + _mockAttachmentHandler1.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Never); + + _mockAttachmentHandler2.Verify(h => h.GetExtensionUris(), Times.Once); + _mockAttachmentHandler2.Verify(h => h.ProcessAttachmentSetsAsync(It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny()), Times.Once); + + _mockEventsHandler.Verify(h => h.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } + + private void VerifyMetrics(int inputCount, int outputCount, string status = "Completed") + { + _mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStart(inputCount)); + _mockEventSource.Verify(s => s.TestRunAttachmentsProcessingStop(outputCount)); + + _mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.NumberOfAttachmentsSentForProcessing, inputCount)); + _mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.NumberOfAttachmentsAfterProcessing, outputCount)); + _mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.AttachmentsProcessingState, status)); + _mockMetricsCollection.Verify(m => m.Add(TelemetryDataConstants.TimeTakenInSecForAttachmentsProcessing, It.IsAny())); + } + + private void VerifyCompleteEvent(bool isCanceled, bool containsError, params AttachmentSet[] expectedSets) + { + _mockEventsHandler.Verify(h => h.HandleTestRunAttachmentsProcessingComplete( + It.Is(a => a.IsCanceled == isCanceled && a.Error != null == containsError), + It.Is>(c => c.Count == expectedSets.Length && expectedSets.All(e => c.Contains(e))))); + } + + private static bool VerifyProgressArgs(TestRunAttachmentsProcessingProgressEventArgs args, int progress) + { + Assert.AreEqual(1, args.CurrentAttachmentProcessorIndex); + Assert.AreEqual(2, args.AttachmentProcessorsCount); + Assert.AreEqual(1, args.CurrentAttachmentProcessorUris.Count); + Assert.AreEqual(Uri1, args.CurrentAttachmentProcessorUris.First().AbsoluteUri); + return progress == args.CurrentAttachmentProcessorProgress; + } + + private static bool VerifyProgressArgsForTwoHandlers(TestRunAttachmentsProcessingProgressEventArgs args, long handlerIndex, long progress, string uri) + { + return progress == args.CurrentAttachmentProcessorProgress && + args.CurrentAttachmentProcessorIndex == handlerIndex && + args.CurrentAttachmentProcessorUris.First().AbsoluteUri == uri && + args.AttachmentProcessorsCount == 2; } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyDiscoveryManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyDiscoveryManagerTests.cs index 667147dd02..4e0c03058d 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyDiscoveryManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyDiscoveryManagerTests.cs @@ -1,169 +1,159 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.TesthostProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class InProcessProxyDiscoveryManagerTests { - using System; - using System.IO; - using System.Collections.Generic; - using System.Linq; - using System.Threading; - - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.TesthostProtocol; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class InProcessProxyDiscoveryManagerTests + private readonly Mock _mockTestHostManagerFactory; + private InProcessProxyDiscoveryManager _inProcessProxyDiscoveryManager; + private readonly Mock _mockDiscoveryManager; + private readonly Mock _mockTestHostManager; + + public InProcessProxyDiscoveryManagerTests() + { + _mockTestHostManagerFactory = new Mock(); + _mockDiscoveryManager = new Mock(); + _mockTestHostManager = new Mock(); + _mockTestHostManagerFactory.Setup(o => o.GetDiscoveryManager()).Returns(_mockDiscoveryManager.Object); + _inProcessProxyDiscoveryManager = new InProcessProxyDiscoveryManager(_mockTestHostManager.Object, _mockTestHostManagerFactory.Object); + } + + [TestMethod] + public void DiscoverTestsShouldCallInitialize() + { + var manualResetEvent = new ManualResetEvent(false); + _mockDiscoveryManager.Setup(o => o.Initialize(Array.Empty(), null)).Callback( + () => manualResetEvent.Set()); + + var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); + _inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, null!); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "DiscoverTests should call Initialize"); + } + + [TestMethod] + public void DiscoverTestsShouldUpdateTestPluginCacheWithExtensionsReturnByTestHost() + { + var manualResetEvent = new ManualResetEvent(false); + _mockDiscoveryManager.Setup(o => o.Initialize(Array.Empty(), null)).Callback( + () => manualResetEvent.Set()); + + var path = Path.Combine(Path.GetTempPath(), "DiscoveryDummy.dll"); + _mockTestHostManager.Setup(o => o.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List { path }); + var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + expectedResult.Add(path); + var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); + + _inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, null!); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "DiscoverTests should call Initialize"); + CollectionAssert.AreEquivalent(expectedResult, TestPluginCache.Instance.GetExtensionPaths(string.Empty)); + } + + [TestMethod] + public void DiscoverTestsShouldCallDiscoveryManagerDiscoverTests() + { + var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); + var mockTestDiscoveryEventsHandler = new Mock(); + var manualResetEvent = new ManualResetEvent(false); + + _mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( + () => manualResetEvent.Set()); + + _inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.DiscoverTests should get called"); + } + + [TestMethod] + public void DiscoverTestsShouldCatchExceptionAndCallHandleDiscoveryComplete() + { + var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); + var mockTestDiscoveryEventsHandler = new Mock(); + var manualResetEvent = new ManualResetEvent(false); + + _mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( + () => throw new Exception()); + + mockTestDiscoveryEventsHandler.Setup(o => o.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())).Callback( + () => manualResetEvent.Set()); + + _inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "ITestDiscoveryEventsHandler.HandleDiscoveryComplete should get called"); + } + + [TestMethod] + public void AbortShouldCallDiscoveryManagerAbort() { - private Mock mockTestHostManagerFactory; - private InProcessProxyDiscoveryManager inProcessProxyDiscoveryManager; - private Mock mockDiscoveryManager; - private Mock mockTestHostManager; - - public InProcessProxyDiscoveryManagerTests() - { - this.mockTestHostManagerFactory = new Mock(); - this.mockDiscoveryManager = new Mock(); - this.mockTestHostManager = new Mock(); - this.mockTestHostManagerFactory.Setup(o => o.GetDiscoveryManager()).Returns(this.mockDiscoveryManager.Object); - this.inProcessProxyDiscoveryManager = new InProcessProxyDiscoveryManager(this.mockTestHostManager.Object, this.mockTestHostManagerFactory.Object); - } - - [TestCleanup] - public void TestCleanup() - { - this.mockDiscoveryManager = null; - this.mockTestHostManagerFactory = null; - this.inProcessProxyDiscoveryManager = null; - this.mockTestHostManager = null; - } - - [TestMethod] - public void DiscoverTestsShouldCallInitialize() - { - var manualResetEvent = new ManualResetEvent(false); - this.mockDiscoveryManager.Setup(o => o.Initialize(Enumerable.Empty(), null)).Callback( - () => manualResetEvent.Set()); - - var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); - this.inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, null); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "DiscoverTests should call Initialize"); - } - - [TestMethod] - public void DiscoverTestsShouldUpdateTestPluginCacheWithExtensionsReturnByTestHost() - { - var manualResetEvent = new ManualResetEvent(false); - this.mockDiscoveryManager.Setup(o => o.Initialize(Enumerable.Empty(), null)).Callback( - () => manualResetEvent.Set()); - - var path = Path.Combine(Path.GetTempPath(), "DiscoveryDummy.dll"); - this.mockTestHostManager.Setup(o => o.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List { path }); - var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - expectedResult.Add(path); - var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); - - this.inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, null); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "DiscoverTests should call Initialize"); - CollectionAssert.AreEquivalent(expectedResult, TestPluginCache.Instance.GetExtensionPaths(string.Empty)); - } - - [TestMethod] - public void DiscoverTestsShouldCallDiscoveryManagerDiscoverTests() - { - var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); - var mockTestDiscoveryEventsHandler = new Mock(); - var manualResetEvent = new ManualResetEvent(false); - - this.mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( - () => manualResetEvent.Set()); - - this.inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.DiscoverTests should get called"); - } - - [TestMethod] - public void DiscoverTestsShouldCatchExceptionAndCallHandleDiscoveryComplete() - { - var discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); - var mockTestDiscoveryEventsHandler = new Mock(); - var manualResetEvent = new ManualResetEvent(false); - - this.mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( - () => throw new Exception()); - - mockTestDiscoveryEventsHandler.Setup(o => o.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())).Callback( - () => manualResetEvent.Set()); - - this.inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "ITestDiscoveryEventsHandler.HandleDiscoveryComplete should get called"); - } - - [TestMethod] - public void AbortShouldCallDiscoveryManagerAbort() - { - var manualResetEvent = new ManualResetEvent(false); - - this.mockDiscoveryManager.Setup(o => o.Abort()).Callback( - () => manualResetEvent.Set()); - - this.inProcessProxyDiscoveryManager.Abort(); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.Abort should get called"); - } - - [TestMethod] - public void DiscoverTestRunShouldAllowRuntimeProviderToUpdateAdapterSource() - { - var inputSources = new List { "test.dll" }; - var discoveryCriteria = new DiscoveryCriteria(inputSources, 1, string.Empty); - var mockTestDiscoveryEventsHandler = new Mock(); - var manualResetEvent = new ManualResetEvent(false); - - this.mockTestHostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)).Returns(discoveryCriteria.Sources); - this.mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( - () => manualResetEvent.Set()); + var manualResetEvent = new ManualResetEvent(false); + + _mockDiscoveryManager.Setup(o => o.Abort()).Callback( + () => manualResetEvent.Set()); - this.inProcessProxyDiscoveryManager = new InProcessProxyDiscoveryManager(this.mockTestHostManager.Object, this.mockTestHostManagerFactory.Object); - this.inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.DiscoverTests should get called"); - this.mockTestHostManager.Verify(hm => hm.GetTestSources(inputSources), Times.Once); - } + _inProcessProxyDiscoveryManager.Abort(); - [TestMethod] - public void DiscoverTestRunShouldUpdateTestSourcesIfSourceDiffersFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var inputSource = new List { "inputPackage.appxrecipe" }; + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.Abort should get called"); + } + + [TestMethod] + public void DiscoverTestRunShouldAllowRuntimeProviderToUpdateAdapterSource() + { + var inputSources = new List { "test.dll" }; + var discoveryCriteria = new DiscoveryCriteria(inputSources, 1, string.Empty); + var mockTestDiscoveryEventsHandler = new Mock(); + var manualResetEvent = new ManualResetEvent(false); + + _mockTestHostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)).Returns(discoveryCriteria.Sources); + _mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( + () => manualResetEvent.Set()); + + _inProcessProxyDiscoveryManager = new InProcessProxyDiscoveryManager(_mockTestHostManager.Object, _mockTestHostManagerFactory.Object); + _inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.DiscoverTests should get called"); + _mockTestHostManager.Verify(hm => hm.GetTestSources(inputSources), Times.Once); + } + + [TestMethod] + public void DiscoverTestRunShouldUpdateTestSourcesIfSourceDiffersFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var inputSource = new List { "inputPackage.appxrecipe" }; - var discoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); - var mockTestDiscoveryEventsHandler = new Mock(); - var manualResetEvent = new ManualResetEvent(false); + var discoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); + var mockTestDiscoveryEventsHandler = new Mock(); + var manualResetEvent = new ManualResetEvent(false); - this.mockTestHostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)).Returns(actualSources); + _mockTestHostManager.Setup(hm => hm.GetTestSources(discoveryCriteria.Sources)).Returns(actualSources); - this.mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( - () => manualResetEvent.Set()); + _mockDiscoveryManager.Setup(o => o.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object)).Callback( + () => manualResetEvent.Set()); - this.inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + _inProcessProxyDiscoveryManager.DiscoverTests(discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.DiscoverTests should get called"); + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IDiscoveryManager.DiscoverTests should get called"); - // AdapterSourceMap should contain updated testSources. - Assert.AreEqual(actualSources.FirstOrDefault(), discoveryCriteria.AdapterSourceMap.FirstOrDefault().Value.FirstOrDefault()); - Assert.AreEqual(inputSource.FirstOrDefault(), discoveryCriteria.Package); - } + // AdapterSourceMap should contain updated testSources. + Assert.AreEqual(actualSources.FirstOrDefault(), discoveryCriteria.AdapterSourceMap.FirstOrDefault().Value.FirstOrDefault()); + Assert.AreEqual(inputSource.FirstOrDefault(), discoveryCriteria.Package); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyexecutionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyexecutionManagerTests.cs index f4f2ad00ff..4122e2cbdc 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyexecutionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/InProcessProxyexecutionManagerTests.cs @@ -1,206 +1,197 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.TesthostProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class InProcessProxyExecutionManagerTests { - using System; - using System.IO; - using System.Collections.Generic; - using System.Linq; - using System.Threading; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.TesthostProtocol; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class InProcessProxyExecutionManagerTests + private readonly Mock _mockTestHostManagerFactory; + private InProcessProxyExecutionManager _inProcessProxyExecutionManager; + private readonly Mock _mockExecutionManager; + private readonly Mock _mockTestHostManager; + + public InProcessProxyExecutionManagerTests() { - private Mock mockTestHostManagerFactory; - private InProcessProxyExecutionManager inProcessProxyExecutionManager; - private Mock mockExecutionManager; - private Mock mockTestHostManager; - - public InProcessProxyExecutionManagerTests() - { - this.mockTestHostManagerFactory = new Mock(); - this.mockExecutionManager = new Mock(); - this.mockTestHostManager = new Mock(); - this.mockTestHostManagerFactory.Setup(o => o.GetExecutionManager()).Returns(this.mockExecutionManager.Object); - this.inProcessProxyExecutionManager = new InProcessProxyExecutionManager(this.mockTestHostManager.Object, this.mockTestHostManagerFactory.Object); - } - - [TestCleanup] - public void TestCleanup() - { - this.mockExecutionManager = null; - this.mockTestHostManagerFactory = null; - this.inProcessProxyExecutionManager = null; - this.mockTestHostManager = null; - } - - - [TestMethod] - public void StartTestRunShouldCallInitialize() - { - var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); - var mockTestMessageEventHandler = new Mock(); - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); - - this.mockExecutionManager.Verify(o => o.Initialize(Enumerable.Empty(), It.IsAny()), Times.Once, "StartTestRun should call Initialize if not already initialized"); - } - - [TestMethod] - public void StartTestRunShouldUpdateTestPlauginCacheWithExtensionsReturnByTestHost() - { - var path = Path.Combine(Path.GetTempPath(), "dummy.dll"); - this.mockTestHostManager.Setup(o => o.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List { path }); - var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - expectedResult.Add(path); - - var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); - - CollectionAssert.AreEquivalent(expectedResult, TestPluginCache.Instance.GetExtensionPaths(string.Empty)); - } - - [TestMethod] - public void StartTestRunShouldCallExecutionManagerStartTestRunWithAdapterSourceMap() - { - var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); - var manualResetEvent = new ManualResetEvent(true); - - this.mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.AdapterSourceMap, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null)).Callback( - () => manualResetEvent.Set()); - - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); - - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); - } - - [TestMethod] - public void StartTestRunShouldAllowRuntimeProviderToUpdateAdapterSource() - { - var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); + _mockTestHostManagerFactory = new Mock(); + _mockExecutionManager = new Mock(); + _mockTestHostManager = new Mock(); + _mockTestHostManagerFactory.Setup(o => o.GetExecutionManager()).Returns(_mockExecutionManager.Object); + _inProcessProxyExecutionManager = new InProcessProxyExecutionManager(_mockTestHostManager.Object, _mockTestHostManagerFactory.Object); + } - this.mockTestHostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources)).Returns(testRunCriteria.Sources); + [TestMethod] + public void StartTestRunShouldCallInitialize() + { + var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); + var mockTestMessageEventHandler = new Mock(); + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); + _mockExecutionManager.Verify(o => o.Initialize(Array.Empty(), It.IsAny()), Times.Once, "StartTestRun should call Initialize if not already initialized"); + } - this.mockTestHostManager.Verify(hm => hm.GetTestSources(testRunCriteria.Sources), Times.Once); - } + [TestMethod] + public void StartTestRunShouldUpdateTestPlauginCacheWithExtensionsReturnByTestHost() + { + var path = Path.Combine(Path.GetTempPath(), "dummy.dll"); + _mockTestHostManager.Setup(o => o.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List { path }); + var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + expectedResult.Add(path); - [TestMethod] - public void StartTestRunShouldCallExecutionManagerStartTestRunWithTestCase() - { - var testRunCriteria = new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), "s.dll") }, - frequencyOfRunStatsChangeEvent: 10); - var manualResetEvent = new ManualResetEvent(true); + var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - this.mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.Tests, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null)).Callback( - () => manualResetEvent.Set()); + CollectionAssert.AreEquivalent(expectedResult, TestPluginCache.Instance.GetExtensionPaths(string.Empty)); + } - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); + [TestMethod] + public void StartTestRunShouldCallExecutionManagerStartTestRunWithAdapterSourceMap() + { + var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); + var manualResetEvent = new ManualResetEvent(true); - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); - } + _mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.AdapterSourceMap!, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null!)).Callback( + () => manualResetEvent.Set()); - [TestMethod] - public void StartTestRunShouldUpdateTestCaseSourceIfTestCaseSourceDiffersFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var inputSource = new List { "inputPackage.appxrecipe" }; + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - var testRunCriteria = new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), inputSource.FirstOrDefault()) }, - frequencyOfRunStatsChangeEvent: 10); - var manualResetEvent = new ManualResetEvent(false); + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); + } - this.mockTestHostManager.Setup(hm => hm.GetTestSources(inputSource)).Returns(actualSources); + [TestMethod] + public void StartTestRunShouldAllowRuntimeProviderToUpdateAdapterSource() + { + var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); - this.mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.Tests, inputSource.FirstOrDefault(), testRunCriteria.TestRunSettings, It.IsAny(), null, null)) - .Callback(() => manualResetEvent.Set()); + _mockTestHostManager.Setup(hm => hm.GetTestSources(testRunCriteria.Sources!)).Returns(testRunCriteria.Sources!); - this.inProcessProxyExecutionManager = new InProcessProxyExecutionManager(this.mockTestHostManager.Object, this.mockTestHostManagerFactory.Object); + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); + _mockTestHostManager.Verify(hm => hm.GetTestSources(testRunCriteria.Sources!), Times.Once); + } - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); - this.mockExecutionManager.Verify(o => o.StartTestRun(testRunCriteria.Tests, inputSource.FirstOrDefault(), testRunCriteria.TestRunSettings, It.IsAny(), null, null)); - this.mockTestHostManager.Verify(hm => hm.GetTestSources(inputSource), Times.Once); - Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests.FirstOrDefault().Source); - } + [TestMethod] + public void StartTestRunShouldCallExecutionManagerStartTestRunWithTestCase() + { + var testRunCriteria = new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), "s.dll") }, + frequencyOfRunStatsChangeEvent: 10); + var manualResetEvent = new ManualResetEvent(true); - [TestMethod] - public void StartTestRunShouldNotUpdateTestCaseSourceIfTestCaseSourceDiffersFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var testRunCriteria = new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), actualSources.FirstOrDefault()) }, - frequencyOfRunStatsChangeEvent: 10); - var manualResetEvent = new ManualResetEvent(false); + _mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.Tests!, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null!)).Callback( + () => manualResetEvent.Set()); - this.mockTestHostManager.Setup(hm => hm.GetTestSources(actualSources)).Returns(actualSources); + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - this.mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.Tests, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null)) - .Callback(() => manualResetEvent.Set()); + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); + } - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null); + [TestMethod] + public void StartTestRunShouldUpdateTestCaseSourceIfTestCaseSourceDiffersFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var inputSource = new List { "inputPackage.appxrecipe" }; - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); - this.mockExecutionManager.Verify(o => o.StartTestRun(testRunCriteria.Tests, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null)); - this.mockTestHostManager.Verify(hm => hm.GetTestSources(actualSources)); - Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests.FirstOrDefault().Source); - } + var testRunCriteria = new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), inputSource.First()) }, + frequencyOfRunStatsChangeEvent: 10); + var manualResetEvent = new ManualResetEvent(false); - [TestMethod] - public void StartTestRunShouldCatchExceptionAndCallHandleRunComplete() - { - var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); - var mockTestRunEventsHandler = new Mock(); - var manualResetEvent = new ManualResetEvent(true); + _mockTestHostManager.Setup(hm => hm.GetTestSources(inputSource)).Returns(actualSources); - this.mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.AdapterSourceMap, null, testRunCriteria.TestRunSettings, It.IsAny(), null, mockTestRunEventsHandler.Object)).Callback( - () => throw new Exception()); + _mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.Tests!, inputSource.FirstOrDefault(), testRunCriteria.TestRunSettings, It.IsAny(), null, null!)) + .Callback(() => manualResetEvent.Set()); - mockTestRunEventsHandler.Setup(o => o.HandleTestRunComplete(It.IsAny(), null, null, null)).Callback( - () => manualResetEvent.Set()); + _inProcessProxyExecutionManager = new InProcessProxyExecutionManager(_mockTestHostManager.Object, _mockTestHostManagerFactory.Object); - this.inProcessProxyExecutionManager.StartTestRun(testRunCriteria, mockTestRunEventsHandler.Object); + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - Assert.IsTrue(manualResetEvent.WaitOne(5000), "ITestRunEventsHandler.HandleTestRunComplete should get called"); - } + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); + _mockExecutionManager.Verify(o => o.StartTestRun(testRunCriteria.Tests!, inputSource.FirstOrDefault(), testRunCriteria.TestRunSettings, It.IsAny(), null, null!)); + _mockTestHostManager.Verify(hm => hm.GetTestSources(inputSource), Times.Once); + Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests!.FirstOrDefault()?.Source); + } - [TestMethod] - public void AbortShouldCallExecutionManagerAbort() - { - var manualResetEvent = new ManualResetEvent(true); + [TestMethod] + public void StartTestRunShouldNotUpdateTestCaseSourceIfTestCaseSourceDiffersFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var testRunCriteria = new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), actualSources.First()) }, + frequencyOfRunStatsChangeEvent: 10); + var manualResetEvent = new ManualResetEvent(false); - this.mockExecutionManager.Setup(o => o.Abort(It.IsAny())).Callback( - () => manualResetEvent.Set()); + _mockTestHostManager.Setup(hm => hm.GetTestSources(actualSources)).Returns(actualSources); - this.inProcessProxyExecutionManager.Abort(It.IsAny()); + _mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.Tests!, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null!)) + .Callback(() => manualResetEvent.Set()); - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.Abort should get called"); - } + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, null!); - [TestMethod] - public void CancelShouldCallExecutionManagerCancel() - { - var manualResetEvent = new ManualResetEvent(true); + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.StartTestRun should get called"); + _mockExecutionManager.Verify(o => o.StartTestRun(testRunCriteria.Tests!, null, testRunCriteria.TestRunSettings, It.IsAny(), null, null!)); + _mockTestHostManager.Verify(hm => hm.GetTestSources(actualSources)); + Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests!.FirstOrDefault()?.Source); + } + + [TestMethod] + public void StartTestRunShouldCatchExceptionAndCallHandleRunComplete() + { + var testRunCriteria = new TestRunCriteria(new List { "source.dll" }, 10); + var mockTestRunEventsHandler = new Mock(); + var manualResetEvent = new ManualResetEvent(true); + + _mockExecutionManager.Setup(o => o.StartTestRun(testRunCriteria.AdapterSourceMap!, null, testRunCriteria.TestRunSettings, It.IsAny(), null, mockTestRunEventsHandler.Object)).Callback( + () => throw new Exception()); + + mockTestRunEventsHandler.Setup(o => o.HandleTestRunComplete(It.IsAny(), null, null, null)).Callback( + () => manualResetEvent.Set()); + + _inProcessProxyExecutionManager.StartTestRun(testRunCriteria, mockTestRunEventsHandler.Object); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IInternalTestRunEventsHandler.HandleTestRunComplete should get called"); + } + + [TestMethod] + public void AbortShouldCallExecutionManagerAbort() + { + var manualResetEvent = new ManualResetEvent(true); + + _mockExecutionManager.Setup(o => o.Abort(It.IsAny())).Callback( + () => manualResetEvent.Set()); + + _inProcessProxyExecutionManager.Abort(It.IsAny()); + + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.Abort should get called"); + } + + [TestMethod] + public void CancelShouldCallExecutionManagerCancel() + { + var manualResetEvent = new ManualResetEvent(true); - this.mockExecutionManager.Setup(o => o.Cancel(It.IsAny())).Callback( - () => manualResetEvent.Set()); + _mockExecutionManager.Setup(o => o.Cancel(It.IsAny())).Callback( + () => manualResetEvent.Set()); - this.inProcessProxyExecutionManager.Cancel(It.IsAny()); + _inProcessProxyExecutionManager.Cancel(It.IsAny()); - Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.Abort should get called"); - } + Assert.IsTrue(manualResetEvent.WaitOne(5000), "IExecutionManager.Abort should get called"); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/DiscoveryDataAggregatorTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/DiscoveryDataAggregatorTests.cs new file mode 100644 index 0000000000..9b466e9a54 --- /dev/null +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/DiscoveryDataAggregatorTests.cs @@ -0,0 +1,428 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client.Parallel; + +[TestClass] +public class DiscoveryDataAggregatorTests +{ + [TestMethod] + public void AggregateShouldAggregateAbortedCorrectly() + { + var aggregator = new DiscoveryDataAggregator(); + + aggregator.Aggregate(new(totalTests: 5, isAborted: false)); + Assert.IsFalse(aggregator.IsAborted, "Aborted must be false"); + + aggregator.Aggregate(new(totalTests: 5, isAborted: true)); + Assert.IsTrue(aggregator.IsAborted, "Aborted must be true"); + + aggregator.Aggregate(new(totalTests: 5, isAborted: false)); + Assert.IsTrue(aggregator.IsAborted, "Aborted must be true"); + + Assert.AreEqual(-1, aggregator.TotalTests, "Aggregator shouldn't count tests if one host aborts"); + } + + [TestMethod] + public void AggregateShouldAggregateTotalTestsCorrectly() + { + var aggregator = new DiscoveryDataAggregator(); + aggregator.Aggregate(new(totalTests: 2, isAborted: false)); + Assert.AreEqual(2, aggregator.TotalTests, "Aggregated totalTests count does not match"); + + aggregator.Aggregate(new(totalTests: 5, isAborted: false)); + Assert.AreEqual(7, aggregator.TotalTests, "Aggregated totalTests count does not match"); + + aggregator.Aggregate(new(totalTests: 3, isAborted: false)); + Assert.AreEqual(10, aggregator.TotalTests, "Aggregated totalTests count does not match"); + } + + [TestMethod] + public void AggregateDiscoveryDataMetricsShouldAggregateMetricsCorrectly() + { + var aggregator = new DiscoveryDataAggregator(); + + aggregator.AggregateMetrics(null); + + var runMetrics = aggregator.GetMetrics(); + Assert.AreEqual(0, runMetrics.Count); + } + + [TestMethod] + public void AggregateDiscoveryDataMetricsShouldAddTotalTestsDiscovered() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.TotalTestsDiscovered] = 2, + }; + + aggregator.AggregateMetrics(metrics); + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TotalTestsDiscovered, out var value)); + Assert.AreEqual(4, Convert.ToInt32(value, CultureInfo.CurrentCulture)); + } + + [TestMethod] + public void AggregateDiscoveryDataMetricsShouldAddTimeTakenToDiscoverTests() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter] = .02091, + }; + + aggregator.AggregateMetrics(metrics); + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter, out var value)); + Assert.AreEqual(.04182, value); + } + + [TestMethod] + public void AggregateDiscoveryDataMetricsShouldAddTimeTakenByAllAdapters() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.TimeTakenInSecByAllAdapters] = .02091, + }; + + aggregator.AggregateMetrics(metrics); + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenInSecByAllAdapters, out var value)); + Assert.AreEqual(.04182, value); + } + + [TestMethod] + public void AggregateDiscoveryDataMetricsShouldAddTimeTakenToLoadAdapters() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.TimeTakenToLoadAdaptersInSec] = .02091, + }; + + aggregator.AggregateMetrics(metrics); + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToLoadAdaptersInSec, out var value)); + Assert.AreEqual(.04182, value); + } + + [TestMethod] + public void AggregateDiscoveryDataMetricsShouldNotAggregateDiscoveryState() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.DiscoveryState] = "Completed", + }; + + aggregator.AggregateMetrics(metrics); + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.DiscoveryState, out _)); + } + + [TestMethod] + public void GetAggregatedDiscoveryDataMetricsShouldReturnEmptyIfMetricAggregatorIsEmpty() + { + var aggregator = new DiscoveryDataAggregator(); + + aggregator.AggregateMetrics(new Dictionary()); + var runMetrics = aggregator.GetMetrics(); + + Assert.AreEqual(0, runMetrics.Count); + } + + [TestMethod] + public void GetAggregatedDiscoveryDataMetricsShouldReturnEmptyIfMetricsIsNull() + { + var aggregator = new DiscoveryDataAggregator(); + + aggregator.AggregateMetrics(null); + var runMetrics = aggregator.GetMetrics(); + + Assert.AreEqual(0, runMetrics.Count); + } + + [TestMethod] + public void GetDiscoveryDataMetricsShouldAddTotalAdaptersUsedIfMetricsIsNotEmpty() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.TotalTestsByAdapter] = 2, + }; + + aggregator.AggregateMetrics(metrics); + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests, out var value)); + Assert.AreEqual(1, value); + } + + [TestMethod] + public void GetDiscoveryDataMetricsShouldAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() + { + var aggregator = new DiscoveryDataAggregator(); + + var metrics = new Dictionary + { + [TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + "executor:MSTestV1"] = .02091, + [TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + "executor:MSTestV2"] = .02091, + }; + + aggregator.AggregateMetrics(metrics); + + var runMetrics = aggregator.GetMetrics(); + + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery, out var value)); + Assert.AreEqual(2, value); + } + + [TestMethod] + public void GetDiscoveryDataMetricsShouldNotAddTotalAdaptersUsedIfMetricsIsEmpty() + { + var aggregator = new DiscoveryDataAggregator(); + + aggregator.AggregateMetrics(new Dictionary()); + + var runMetrics = aggregator.GetMetrics(); + Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests, out _)); + } + + [TestMethod] + public void GetDiscoveryDataMetricsShouldNotAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() + { + var aggregator = new DiscoveryDataAggregator(); + + aggregator.AggregateMetrics(new Dictionary()); + + var runMetrics = aggregator.GetMetrics(); + Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery, out _)); + } + + [DataTestMethod] + [DataRow(DiscoveryStatus.FullyDiscovered)] + [DataRow(DiscoveryStatus.PartiallyDiscovered)] + [DataRow(DiscoveryStatus.NotDiscovered)] + public void MarkSourcesWithStatusWhenSourcesIsNullDoesNothing(DiscoveryStatus discoveryStatus) + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + + // Act + dataAggregator.MarkSourcesWithStatus(null, discoveryStatus); + + // Assert + Assert.AreEqual(0, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered).Count); + Assert.AreEqual(0, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered).Count); + Assert.AreEqual(0, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered).Count); + } + + [DataTestMethod] + [DataRow(DiscoveryStatus.FullyDiscovered)] + [DataRow(DiscoveryStatus.PartiallyDiscovered)] + [DataRow(DiscoveryStatus.NotDiscovered)] + public void MarkSourcesWithStatusIgnoresNullSources(DiscoveryStatus discoveryStatus) + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + var sources = new[] { "a", null, "b" }; + + // Sanity check + Assert.AreEqual(0, dataAggregator.GetSourcesWithStatus(discoveryStatus).Count); + + // Act + dataAggregator.MarkSourcesWithStatus(sources, discoveryStatus); + + // Assert + CollectionAssert.AreEquivalent(new[] { "a", "b" }, dataAggregator.GetSourcesWithStatus(discoveryStatus)); + } + + [DataTestMethod] + [DataRow(DiscoveryStatus.FullyDiscovered)] + [DataRow(DiscoveryStatus.PartiallyDiscovered)] + public void MarkSourcesWithStatusWhenSourceAddedAndStatusDifferentFromNotDiscoveredLogsWarning(DiscoveryStatus discoveryStatus) + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + + // Act + dataAggregator.MarkSourcesWithStatus(new[] { "a" }, discoveryStatus); + + // Assert + CollectionAssert.AreEquivalent(new[] { "a" }, dataAggregator.GetSourcesWithStatus(discoveryStatus)); + } + + [DataTestMethod] + [DataRow(DiscoveryStatus.NotDiscovered)] + [DataRow(DiscoveryStatus.PartiallyDiscovered)] + public void MarkSourcesWithStatusWhenSourceStatusWasFullyDiscoveredAndIsDowngradedLogsWarning(DiscoveryStatus discoveryStatus) + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + dataAggregator.MarkSourcesWithStatus(new[] { "a" }, DiscoveryStatus.FullyDiscovered); + + // Act + dataAggregator.MarkSourcesWithStatus(new[] { "a" }, discoveryStatus); + + // Assert + CollectionAssert.AreEquivalent(new[] { "a" }, dataAggregator.GetSourcesWithStatus(discoveryStatus)); + } + + [TestMethod] + public void MarkSourcesWithStatusWhenSourceStatusWasPartiallyDiscoveredAndIsDowngradedLogsWarning() + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + dataAggregator.MarkSourcesWithStatus(new[] { "a" }, DiscoveryStatus.PartiallyDiscovered); + + // Act + dataAggregator.MarkSourcesWithStatus(new[] { "a" }, DiscoveryStatus.NotDiscovered); + + // Assert + CollectionAssert.AreEquivalent(new[] { "a" }, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered)); + } + + [TestMethod] + public void MarkSourcesBasedOnDiscoveredTestCasesHandlesTestCasesFromMultipleSources() + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + var testCases = new TestCase[] + { + new() { Source = "a" }, + new() { Source = "a" }, + new() { Source = "a" }, + new() { Source = "b" }, + new() { Source = "c" }, + }; + + // Act + dataAggregator.MarkSourcesBasedOnDiscoveredTestCases(null, testCases); + + // Assert + CollectionAssert.AreEquivalent(new[] { "a", "b" }, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + CollectionAssert.AreEquivalent(new[] { "c" }, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered)); + } + + [TestMethod] + public void MarkSourcesBasedOnDiscoveredTestCasesReuseLastDiscoveredSource() + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + string? previousSource = null; + previousSource = dataAggregator.MarkSourcesBasedOnDiscoveredTestCases(previousSource, new TestCase[] { new() { Source = "a" } }); + + // Act + _ = dataAggregator.MarkSourcesBasedOnDiscoveredTestCases(previousSource, new TestCase[] { new() { Source = "b" }, }); + + // Assert + CollectionAssert.AreEquivalent(new[] { "a" }, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + CollectionAssert.AreEquivalent(new[] { "b" }, dataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered)); + } + + [DataTestMethod] + [DataRow(DiscoveryStatus.FullyDiscovered)] + [DataRow(DiscoveryStatus.PartiallyDiscovered)] + [DataRow(DiscoveryStatus.NotDiscovered)] + public void GetSourcesWithStatusWhenEmptyDictionaryReturnsEmptyList(DiscoveryStatus discoveryStatus) + { + var instanceSources = new DiscoveryDataAggregator().GetSourcesWithStatus(discoveryStatus); + Assert.AreEqual(0, instanceSources.Count); + } + + [TestMethod] + public void GetSourcesWithStatusCorrectlyFiltersSources() + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + var notDiscoveredSources = new[] + { + "not1", + "not2", + "not3", + }; + var partiallyDiscoveredSources = new[] + { + "partially1", + "partially2", + "partially3", + "partially4", + }; + var fullyDiscoveredSources = new[] + { + "fully1", + "fully2", + "fully3", + "fully4", + "fully5", + }; + + dataAggregator.MarkSourcesWithStatus(notDiscoveredSources, DiscoveryStatus.NotDiscovered); + + dataAggregator.MarkSourcesWithStatus(partiallyDiscoveredSources, DiscoveryStatus.NotDiscovered); + dataAggregator.MarkSourcesWithStatus(partiallyDiscoveredSources, DiscoveryStatus.PartiallyDiscovered); + + dataAggregator.MarkSourcesWithStatus(fullyDiscoveredSources, DiscoveryStatus.NotDiscovered); + dataAggregator.MarkSourcesWithStatus(fullyDiscoveredSources, DiscoveryStatus.FullyDiscovered); + + // Act + var actualFullyDiscovered = dataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered); + var actualPartiallyDiscovered = dataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered); + var actualNotDiscovered = dataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered); + + // Assert + CollectionAssert.AreEquivalent(fullyDiscoveredSources, actualFullyDiscovered); + CollectionAssert.AreEquivalent(partiallyDiscoveredSources, actualPartiallyDiscovered); + CollectionAssert.AreEquivalent(notDiscoveredSources, actualNotDiscovered); + } + + [TestMethod] + public void TryAggregateIsMessageSentOnlyReportsOnceEvenWhenRunningInParallel() + { + // Arrange + var dataAggregator = new DiscoveryDataAggregator(); + var concurrentBag = new ConcurrentBag(); + + // Act + System.Threading.Tasks.Parallel.For(0, 100, _ => concurrentBag.Add(dataAggregator.TryAggregateIsMessageSent())); + + // Assert + Assert.AreEqual(1, concurrentBag.Count(b => b)); + } +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryDataAggregatorTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryDataAggregatorTests.cs deleted file mode 100644 index c8d1e1ec8a..0000000000 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryDataAggregatorTests.cs +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace TestPlatform.CrossPlatEngine.UnitTests.Client.Parallel -{ - using System; - using System.Collections.Generic; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ParallelDiscoveryDataAggregatorTests - { - [TestMethod] - public void AggregateShouldAggregateAbortedCorrectly() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - aggregator.Aggregate(totalTests: 5, isAborted: false); - Assert.IsFalse(aggregator.IsAborted, "Aborted must be false"); - - aggregator.Aggregate(totalTests: 5, isAborted: true); - Assert.IsTrue(aggregator.IsAborted, "Aborted must be true"); - - aggregator.Aggregate(totalTests: 5, isAborted: false); - Assert.IsTrue(aggregator.IsAborted, "Aborted must be true"); - - Assert.AreEqual(-1, aggregator.TotalTests, "Aggregator shouldn't count tests if one host aborts"); - } - - [TestMethod] - public void AggregateShouldAggregateTotalTestsCorrectly() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - aggregator.Aggregate(totalTests: 2, isAborted: false); - Assert.AreEqual(2, aggregator.TotalTests, "Aggregated totalTests count does not match"); - - aggregator.Aggregate(totalTests: 5, isAborted: false); - Assert.AreEqual(7, aggregator.TotalTests, "Aggregated totalTests count does not match"); - - aggregator.Aggregate(totalTests: 3, isAborted: false); - Assert.AreEqual(10, aggregator.TotalTests, "Aggregated totalTests count does not match"); - } - - [TestMethod] - public void AggregateDiscoveryDataMetricsShouldAggregateMetricsCorrectly() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - aggregator.AggregateDiscoveryDataMetrics(null); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - Assert.AreEqual(0, runMetrics.Count); - } - - [TestMethod] - public void AggregateDiscoveryDataMetricsShouldAddTotalTestsDiscovered() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TotalTestsDiscovered, 2); - - aggregator.AggregateDiscoveryDataMetrics(dict); - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TotalTestsDiscovered, out var value)); - Assert.AreEqual(4, Convert.ToInt32(value)); - } - - [TestMethod] - public void AggregateDiscoveryDataMetricsShouldAddTimeTakenToDiscoverTests() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter, .02091); - - aggregator.AggregateDiscoveryDataMetrics(dict); - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter, out var value)); - Assert.AreEqual(.04182, value); - } - - [TestMethod] - public void AggregateDiscoveryDataMetricsShouldAddTimeTakenByAllAdapters() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenInSecByAllAdapters, .02091); - - aggregator.AggregateDiscoveryDataMetrics(dict); - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenInSecByAllAdapters, out var value)); - Assert.AreEqual(.04182, value); - } - - [TestMethod] - public void AggregateDiscoveryDataMetricsShouldAddTimeTakenToLoadAdapters() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenToLoadAdaptersInSec, .02091); - - aggregator.AggregateDiscoveryDataMetrics(dict); - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToLoadAdaptersInSec, out var value)); - Assert.AreEqual(.04182, value); - } - - [TestMethod] - public void AggregateDiscoveryDataMetricsShouldNotAggregateDiscoveryState() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.DiscoveryState, "Completed"); - - aggregator.AggregateDiscoveryDataMetrics(dict); - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.DiscoveryState, out var value)); - } - - [TestMethod] - public void GetAggregatedDiscoveryDataMetricsShouldReturnEmptyIfMetricAggregatorIsEmpty() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - - aggregator.AggregateDiscoveryDataMetrics(dict); - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.AreEqual(0, runMetrics.Count); - } - - [TestMethod] - public void GetAggregatedDiscoveryDataMetricsShouldReturnEmptyIfMetricsIsNull() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - - aggregator.AggregateDiscoveryDataMetrics(null); - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.AreEqual(0, runMetrics.Count); - } - - [TestMethod] - public void GetDiscoveryDataMetricsShouldAddTotalAdaptersUsedIfMetricsIsNotEmpty() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TotalTestsByAdapter, 2); - - aggregator.AggregateDiscoveryDataMetrics(dict); - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests, out var value)); - Assert.AreEqual(1, value); - } - - [TestMethod] - public void GetDiscoveryDataMetricsShouldAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + "executor:MSTestV1", .02091); - dict.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + "executor:MSTestV2", .02091); - - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery, out var value)); - Assert.AreEqual(2, value); - } - - [TestMethod] - public void GetDiscoveryDataMetricsShouldNotAddTotalAdaptersUsedIfMetricsIsEmpty() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - var dict = new Dictionary(); - - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests, out var value)); - } - - [TestMethod] - public void GetDiscoveryDataMetricsShouldNotAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() - { - var aggregator = new ParallelDiscoveryDataAggregator(); - var dict = new Dictionary(); - - aggregator.AggregateDiscoveryDataMetrics(dict); - - var runMetrics = aggregator.GetAggregatedDiscoveryDataMetrics(); - - Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery, out var value)); - } - } -} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryEventsHandlerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryEventsHandlerTests.cs index 4ba1536d27..7baa430ab8 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryEventsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelDiscoveryEventsHandlerTests.cs @@ -1,206 +1,222 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client -{ - using System.Collections.Generic; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class ParallelDiscoveryEventsHandlerTests - { - private ParallelDiscoveryEventsHandler parallelDiscoveryEventsHandler; +using System.Collections.Generic; - private Mock mockProxyDiscoveryManager; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; - private Mock mockTestDiscoveryEventsHandler; +using Moq; - private Mock mockParallelProxyDiscoveryManager; +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; - private Mock mockDataSerializer; +[TestClass] +public class ParallelDiscoveryEventsHandlerTests +{ + private readonly ParallelDiscoveryEventsHandler _parallelDiscoveryEventsHandler; + private readonly Mock _mockProxyDiscoveryManager; + private readonly Mock _mockTestDiscoveryEventsHandler; + private readonly Mock _mockParallelProxyDiscoveryManager; + private readonly Mock _mockDataSerializer; + private readonly Mock _mockRequestData; + private readonly int _protocolVersion = 1; + + public ParallelDiscoveryEventsHandlerTests() + { + _mockProxyDiscoveryManager = new Mock(); + _mockTestDiscoveryEventsHandler = new Mock(); + _mockParallelProxyDiscoveryManager = new Mock(); + _mockDataSerializer = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(new ProtocolConfig { Version = _protocolVersion }); + + _parallelDiscoveryEventsHandler = new ParallelDiscoveryEventsHandler(_mockRequestData.Object, _mockProxyDiscoveryManager.Object, + _mockTestDiscoveryEventsHandler.Object, _mockParallelProxyDiscoveryManager.Object, + new DiscoveryDataAggregator(), _mockDataSerializer.Object); + } - private Mock mockRequestData; + [TestMethod] + public void HandleDiscoveryCompleteShouldNotCallLastChunkResultsIfNotPresent() + { + int totalTests = 10; + bool aborted = false; + _mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(false); - [TestInitialize] - public void TestInit() - { - this.mockProxyDiscoveryManager = new Mock(); - this.mockTestDiscoveryEventsHandler = new Mock(); - this.mockParallelProxyDiscoveryManager = new Mock(); - this.mockDataSerializer = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); - this.parallelDiscoveryEventsHandler = new ParallelDiscoveryEventsHandler(this.mockRequestData.Object, mockProxyDiscoveryManager.Object, - this.mockTestDiscoveryEventsHandler.Object, this.mockParallelProxyDiscoveryManager.Object, - new ParallelDiscoveryDataAggregator(), this.mockDataSerializer.Object); - } + _parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); - [TestMethod] - public void HandleDiscoveryCompleteShouldNotCallLastChunkResultsIfNotPresent() - { - int totalTests = 10; - bool aborted = false; - this.mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(false); + // Raw message must be sent + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); - var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(null), Times.Never); - this.parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); + _mockParallelProxyDiscoveryManager.Verify(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted), Times.Once); + } - // Raw message must be sent - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); + [TestMethod] + public void HandleDiscoveryCompleteShouldCallLastChunkResultsIfPresent() + { + string payload = "Tests"; + int totalTests = 10; + bool aborted = false; + var lastChunk = new List(); + + _mockDataSerializer.Setup(mds => mds.SerializePayload(MessageType.TestCasesFound, lastChunk, _protocolVersion)) + .Returns(payload); + + _mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, lastChunk, aborted)).Returns(false); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(null), Times.Never); + var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); - this.mockParallelProxyDiscoveryManager.Verify(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, null, aborted), Times.Once); - } + _parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, lastChunk); - [TestMethod] - public void HandleDiscoveryCompleteShouldCallLastChunkResultsIfPresent() - { - string payload = "Tests"; - int totalTests = 10; - bool aborted = false; - var lastChunk = new List(); + // Raw message must be sent + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); - this.mockDataSerializer.Setup(mds => mds.SerializePayload(MessageType.TestCasesFound, lastChunk)) - .Returns(payload); + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(lastChunk), Times.Once); - this.mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, lastChunk, aborted)).Returns(false); + _mockParallelProxyDiscoveryManager.Verify(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted), Times.Once); + } - var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); + [TestMethod] + public void HandleDiscoveryCompleteShouldCollectMetrics() + { + string payload = "DiscoveryComplete"; + int totalTests = 10; + bool aborted = false; - this.parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, lastChunk); + _mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(true); - // Raw message must be sent - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); + _mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.DiscoveryComplete)).Returns(payload); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(lastChunk), Times.Once); + var mockMetricsCollector = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - this.mockParallelProxyDiscoveryManager.Verify(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, null, aborted), Times.Once); - } + var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); - [TestMethod] - public void HandleDiscoveryCompleteShouldCollectMetrics() - { - string payload = "DiscoveryComplete"; - int totalTests = 10; - bool aborted = false; + // Act. + _parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); - this.mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(true); + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.DiscoveryState, It.IsAny()), Times.Once); + } - this.mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.DiscoveryComplete)).Returns(payload); + [TestMethod] + public void HandleDiscoveryCompleteShouldCallTestDiscoveryCompleteOnActualHandlerIfParallelManagerReturnsCompleteAsTrue() + { + string payload = "DiscoveryComplete"; + int totalTests = 10; + bool aborted = false; - var mockMetricsCollector = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + _mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(true); - var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); + _mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.DiscoveryComplete)).Returns(payload); - // Act. - this.parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); + // Act + var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.DiscoveryState, It.IsAny()), Times.Once); - } + _parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); - [TestMethod] - public void HandleDiscoveryCompleteShouldCallTestDiscoveryCompleteOnActualHandlerIfParallelManagerReturnsCompleteAsTrue() - { - string payload = "DiscoveryComplete"; - int totalTests = 10; - bool aborted = false; + // Verify + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(null), Times.Never); - this.mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(true); + _mockParallelProxyDiscoveryManager.Verify(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted), Times.Once); - this.mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.DiscoveryComplete)).Returns(payload); + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Once); - // Act - var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveryComplete(It.IsAny(), null), Times.Once); + } - this.parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); + [TestMethod] + public void HandleDiscoveryCompleteShouldCallConvertToRawMessageAndSendOnceIfDiscoveryIsComplete() + { + string payload = "DiscoveryComplete"; + int totalTests = 10; + bool aborted = false; - // Verify - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(null), Times.Never); + _mockParallelProxyDiscoveryManager.Setup(mp => mp.HandlePartialDiscoveryComplete( + _mockProxyDiscoveryManager.Object, totalTests, null, aborted)).Returns(true); - this.mockParallelProxyDiscoveryManager.Verify(mp => mp.HandlePartialDiscoveryComplete( - this.mockProxyDiscoveryManager.Object, totalTests, null, aborted), Times.Once); + _mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.DiscoveryComplete)).Returns(payload); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Once); + // Act + var discoveryCompleteEventsArgs = new DiscoveryCompleteEventArgs(totalTests, aborted); + _parallelDiscoveryEventsHandler.HandleDiscoveryComplete(discoveryCompleteEventsArgs, null); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveryComplete(It.IsAny(), null), Times.Once); - } + // Verify + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Once); + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveryComplete(It.IsAny(), null), Times.Once); + } - [TestMethod] - public void HandleDiscoveryTestsShouldJustPassOnTheEventToDiscoveryEventsHandler() - { - var tests = new List(); - this.parallelDiscoveryEventsHandler.HandleDiscoveredTests(tests); + [TestMethod] + public void HandleDiscoveryTestsShouldJustPassOnTheEventToDiscoveryEventsHandler() + { + var tests = new List(); + _parallelDiscoveryEventsHandler.HandleDiscoveredTests(tests); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(tests), Times.Once); - } + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleDiscoveredTests(tests), Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldSendTestCasesFoundRawMessageToDiscoveryEventsHandler() - { - string payload = "Tests"; - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.TestCasesFound, Payload = payload }); + [TestMethod] + public void HandleRawMessageShouldSendTestCasesFoundRawMessageToDiscoveryEventsHandler() + { + string payload = "Tests"; + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.TestCasesFound, Payload = payload }); - this.parallelDiscoveryEventsHandler.HandleRawMessage(payload); + _parallelDiscoveryEventsHandler.HandleRawMessage(payload); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); - } + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldNotSendDiscoveryCompleteEventRawMessageToDiscoveryEventsHandler() - { - string payload = "DiscoveryComplete"; - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.DiscoveryComplete, Payload = payload }); + [TestMethod] + public void HandleRawMessageShouldNotSendDiscoveryCompleteEventRawMessageToDiscoveryEventsHandler() + { + string payload = "DiscoveryComplete"; + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.DiscoveryComplete, Payload = payload }); - this.parallelDiscoveryEventsHandler.HandleRawMessage(payload); + _parallelDiscoveryEventsHandler.HandleRawMessage(payload); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); - } + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); + } - [TestMethod] - public void HandleRawMessageShouldSendLoggerRawMessageToDiscoveryEventsHandler() - { - string payload = "LogMessage"; - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.TestMessage, Payload = payload }); + [TestMethod] + public void HandleRawMessageShouldSendLoggerRawMessageToDiscoveryEventsHandler() + { + string payload = "LogMessage"; + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.TestMessage, Payload = payload }); - this.parallelDiscoveryEventsHandler.HandleRawMessage(payload); + _parallelDiscoveryEventsHandler.HandleRawMessage(payload); - this.mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); - } + _mockTestDiscoveryEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); + } - [TestMethod] - public void HandleLogMessageShouldJustPassOnTheEventToDiscoveryEventsHandler() - { - string log = "Hello"; - this.parallelDiscoveryEventsHandler.HandleLogMessage(TestMessageLevel.Error, log); + [TestMethod] + public void HandleLogMessageShouldJustPassOnTheEventToDiscoveryEventsHandler() + { + string log = "Hello"; + _parallelDiscoveryEventsHandler.HandleLogMessage(TestMessageLevel.Error, log); - this.mockTestDiscoveryEventsHandler.Verify(mt => - mt.HandleLogMessage(TestMessageLevel.Error, log), Times.Once); - } + _mockTestDiscoveryEventsHandler.Verify(mt => + mt.HandleLogMessage(TestMessageLevel.Error, log), Times.Once); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelOperationManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelOperationManagerTests.cs index 2f0ce2fc4e..42cd47010f 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelOperationManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelOperationManagerTests.cs @@ -1,188 +1,277 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client -{ - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - - [TestClass] - public class ParallelOperationManagerTests - { - private MockParallelOperationManager proxyParallelManager; - - [TestInitialize] - public void InitializeTests() - { - Func sampleCreator = - () => - { - return new SampleConcurrentClass(); - }; - - this.proxyParallelManager = new MockParallelOperationManager(sampleCreator, 2, true); - } - - [TestMethod] - public void AbstractProxyParallelManagerShouldCreateCorrectNumberOfConcurrentObjects() - { - var createdSampleClasses = new List(); - Func sampleCreator = - () => - { - var sample = new SampleConcurrentClass(); - createdSampleClasses.Add(sample); - return sample; - }; - - this.proxyParallelManager = new MockParallelOperationManager(sampleCreator, 3, true); - - Assert.AreEqual(3, createdSampleClasses.Count, "Number of Concurrent Objects created should be 3"); - } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; - [TestMethod] - public void AbstractProxyParallelManagerShouldUpdateToCorrectNumberOfConcurrentObjects() - { - var createdSampleClasses = new List(); - Func sampleCreator = - () => - { - var sample = new SampleConcurrentClass(); - createdSampleClasses.Add(sample); - return sample; - }; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using FluentAssertions; - this.proxyParallelManager = new MockParallelOperationManager(sampleCreator, 1, true); +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; - Assert.AreEqual(1, createdSampleClasses.Count, "Number of Concurrent Objects created should be 1"); +[TestClass] +public class ParallelOperationManagerTests +{ + [TestMethod] + public void OperationManagerShouldRunOnlyMaximumParallelLevelOfWorkInParallelEvenWhenThereAreMoreWorkloads() + { + // Arrange + Func createNewManager = (_, _2) => new SampleManager(); + var maxParallelLevel = 3; + var parallelOperationManager = new ParallelOperationManager(createNewManager, maxParallelLevel); - this.proxyParallelManager.UpdateParallelLevel(4); + // Create more workloads than our parallel level so we can observe that the maximum parallel level is reached but not more + var workloads = Enumerable.Range(1, maxParallelLevel + 2) + .Select(i => new ProviderSpecificWorkload(new SampleWorkload { Id = i }, provider: null!)) + .ToList(); + var eventHandler = new SampleHandler(); - Assert.AreEqual(4, createdSampleClasses.Count, "Number of Concurrent Objects created should be 4"); - } + List workerCounts = new(); - [TestMethod] - public void DoActionOnConcurrentObjectsShouldCallAllObjects() + Func getEventHandler = (handler, _) => handler; + Action runWorkload = (manager, _, _, _, _) => { - var createdSampleClasses = new List(); - Func sampleCreator = - () => - { - var sample = new SampleConcurrentClass(); - createdSampleClasses.Add(sample); - return sample; - }; - - this.proxyParallelManager = new MockParallelOperationManager(sampleCreator, 4, true); - - Assert.AreEqual(4, createdSampleClasses.Count, "Number of Concurrent Objects created should be 4"); - - int count = 0; - this.proxyParallelManager.DoActionOnAllConcurrentObjects( - (sample) => - { - count++; - Assert.IsTrue(createdSampleClasses.Contains(sample), "Called object must be in the created list."); - // Make sure action is not called on same object multiple times - createdSampleClasses.Remove(sample); - }); - - Assert.AreEqual(4, count, "Number of Concurrent Objects called should be 4"); - - Assert.AreEqual(0, createdSampleClasses.Count, "All concurrent objects must be called."); - } + // Every time we run a workload check how many slots are occupied, + // we should see 3 slots at max, because that is our max parallel level, we should NOT see 4 or more: + // This is what the data should be: + // - At the start we schedule as much work as we can, workloads 1, 2, 3 + // are started and grab a slot. + // We only update the slot count after scheduling all the work up to the max parallel level, + // so when we reach this method, all the slots are already occupied, so for workloads 1, 2, 3 we record 3, 3, 3. + // - Workload 1 finishes and leaves the slot, 4 starts and grabs a slot, 2, 3, 4 are now running we record 3. + // - workload 2 finishes and leaves the slot, 5 starts and grabs a slot, 3, 4, 5 are now running we record 3. + // - workload 2 finishes and leaves the slot, 5 starts and grabs a slot, 3, 4, 5 are now running we record 3. + // - workload 3 finishes and leaves the slot, there is no more work to do so we don't grab any additional slot. Just 4, 5 are now running we record 2. + // - workload 4 finishes and leaves the slot, there is no more work to do so we don't grab any additional slot. Just 5 is now running we record 1. + + workerCounts.Add(parallelOperationManager.OccupiedSlotCount); + + System.Threading.Thread.Sleep(100); + + // Tell the operation manager that we are done, and it should move to the next piece of work. + // Normally the operation manager would get this notification via the handler because the work we do + // is asynchronous, but here we know that we are already done so we just tell the operation manager directly + // and pass on the current manager that is done. + parallelOperationManager.RunNextWork(manager); + }; + Func initializeWorkload = (_, _, _) => + Task.Run(() => System.Threading.Thread.Sleep(100)); + + // Act + parallelOperationManager.StartWork(workloads, eventHandler, getEventHandler, initializeWorkload, runWorkload); + + // Assert + workerCounts.Should().BeEquivalentTo(new[] { 3, 3, 3, 2, 1 }); + } - [TestMethod] - public void AddManagerShouldAddAManagerWithHandlerInConcurrentManagerList() - { - // At the beginning it should be equal to parallel level - Assert.AreEqual(2, this.proxyParallelManager.GetConcurrentManagersCount()); + [TestMethod] + public void OperationManagerShouldCreateOnlyAsManyParallelWorkersAsThereAreWorkloadsWhenTheAmountOfWorkloadsIsSmallerThanMaxParallelLevel() + { + // Arrange + Func createNewManager = (_, _2) => new SampleManager(); + var maxParallelLevel = 10; + var parallelOperationManager = new ParallelOperationManager(createNewManager, maxParallelLevel); - this.proxyParallelManager.AddManager(new SampleConcurrentClass(true), new SampleHandlerClass()); + // Create less workloads than our parallel level so we can observe that only as many slots are created as there are workloads. + var workloads = Enumerable.Range(1, 2) + .Select(i => new ProviderSpecificWorkload(new SampleWorkload { Id = i }, provider: null!)) + .ToList(); + var eventHandler = new SampleHandler(); - Assert.AreEqual(3, this.proxyParallelManager.GetConcurrentManagersCount()); - Assert.AreEqual(1, this.proxyParallelManager.GetConcurrentManagerInstances().Count(m => m.CheckValue)); - } + List workerCounts = new(); - [TestMethod] - public void RemoveManagerShouldRemoveAManagerFromConcurrentManagerList() + Func getEventHandler = (handler, _) => handler; + Action runWorkload = (manager, _, _, _, _) => { - var manager = new SampleConcurrentClass(true); - this.proxyParallelManager.AddManager(manager, new SampleHandlerClass()); + // See comments in test above for explanation. + workerCounts.Add(parallelOperationManager.OccupiedSlotCount); + System.Threading.Thread.Sleep(100); - Assert.AreEqual(3, this.proxyParallelManager.GetConcurrentManagersCount()); + parallelOperationManager.RunNextWork(manager); + }; + Func initializeWorkload = (_, _, _) => + Task.Run(() => System.Threading.Thread.Sleep(100)); - this.proxyParallelManager.RemoveManager(manager); + // Act + parallelOperationManager.StartWork(workloads, eventHandler, getEventHandler, initializeWorkload, runWorkload); - Assert.AreEqual(2, this.proxyParallelManager.GetConcurrentManagersCount()); - Assert.AreEqual(0, this.proxyParallelManager.GetConcurrentManagerInstances().Count(m => m.CheckValue)); - } - - [TestMethod] - public void UpdateHandlerForManagerShouldAddNewHandlerIfNotexist() - { - var manager = new SampleConcurrentClass(true); - this.proxyParallelManager.UpdateHandlerForManager(manager, new SampleHandlerClass()); + // Assert + workerCounts.Should().BeEquivalentTo(new[] { 2, 1 }); + } - Assert.AreEqual(3, this.proxyParallelManager.GetConcurrentManagersCount()); - Assert.AreEqual(1, this.proxyParallelManager.GetConcurrentManagerInstances().Count(m => m.CheckValue)); - } - [TestMethod] - public void UpdateHandlerForManagerShouldUpdateHandlerForGivenManager() + [TestMethod] + public void OperationManagerShouldCreateAsManyMaxParallelLevel() + { + // Arrange + Func createNewManager = (_, _2) => new SampleManager(); + var maxParallelLevel = 10; + var parallelOperationManager = new ParallelOperationManager(createNewManager, maxParallelLevel); + + // Create less workloads than our parallel level so we can observe that only as many slots are created as there are workloads. + var workloads = Enumerable.Range(1, 2) + .Select(i => new ProviderSpecificWorkload(new SampleWorkload { Id = i }, provider: null!)) + .ToList(); + var eventHandler = new SampleHandler(); + + List workerCounts = new(); + List availableWorkerCounts = new(); + + Func getEventHandler = (handler, _) => handler; + Action runWorkload = (manager, _, _, _, _) => { - var manager = new SampleConcurrentClass(true); - this.proxyParallelManager.AddManager(manager, new SampleHandlerClass()); - - // For current handler the value of variable CheckValue should be false; - Assert.IsFalse(this.proxyParallelManager.GetHandlerForGivenManager(manager).CheckValue); - - var newHandler = new SampleHandlerClass(true); - - // Update manager with new handler - this.proxyParallelManager.UpdateHandlerForManager(manager, newHandler); - - // It should not add new manager but update the current one - Assert.AreEqual(3, this.proxyParallelManager.GetConcurrentManagersCount()); - Assert.IsTrue(this.proxyParallelManager.GetHandlerForGivenManager(manager).CheckValue); - } + // See comments in test above for explanation. + workerCounts.Add(parallelOperationManager.OccupiedSlotCount); + availableWorkerCounts.Add(parallelOperationManager.AvailableSlotCount); + System.Threading.Thread.Sleep(100); + + parallelOperationManager.RunNextWork(manager); + }; + Func initializeWorkload = (_, _, _) => + Task.Run(() => System.Threading.Thread.Sleep(100)); + + // Act + parallelOperationManager.StartWork(workloads, eventHandler, getEventHandler, initializeWorkload, runWorkload); + + // Assert + workerCounts.Should().BeEquivalentTo(new[] { 2, 1 }); + // We create 10 slots, because that is the max parallel level, when we observe, there are 2 workloads running, + // and then 1 workload running, so we see 8 and 9 (10 - 2, and 10 - 1). + availableWorkerCounts.Should().BeEquivalentTo(new[] { 8, 9 }); + } - private class MockParallelOperationManager : ParallelOperationManager + [TestMethod] + public void OperationManagerMovesToTheNextWorkloadOnlyWhenRunNextWorkIsCalled() + { + // Arrange + Func createNewManager = (_, _2) => new SampleManager(); + var maxParallelLevel = 2; + var parallelOperationManager = new ParallelOperationManager(createNewManager, maxParallelLevel); + + // Create more workloads than our parallel level so we can observe that when one workload is finished, calling RunNextWork will move on + // to the next workload. + var workloads = Enumerable.Range(1, maxParallelLevel + 3) + .Select(i => new ProviderSpecificWorkload(new SampleWorkload { Id = i }, provider: null!)) + .ToList(); + var eventHandler = new SampleHandler(); + + List workloadsProcessed = new(); + + Func getEventHandler = (handler, _) => handler; + Action runWorkload = (manager, _, workload, _, _) => { - public MockParallelOperationManager(Func createNewClient, int parallelLevel, bool sharedHosts) : - base(createNewClient, parallelLevel, sharedHosts) - { - } + // See comments in test above for explanation. + System.Threading.Thread.Sleep(100); - public void DoActionOnAllConcurrentObjects(Action action) + workloadsProcessed.Add(workload.Id); + // Only move to next when we run the first workload. Meaning we process 1, 2, and then 3, but not 4 and 5. + if (workload.Id == 1) { - this.DoActionOnAllManagers(action, false); + parallelOperationManager.RunNextWork(manager); } - } + }; + Func initializeWorkload = (_, _, _) => + Task.Run(() => System.Threading.Thread.Sleep(100)); + + // Act + parallelOperationManager.StartWork(workloads, eventHandler, getEventHandler, initializeWorkload, runWorkload); + + // Assert + // We start by scheduling 2 workloads (1 and 2) becuase that is the max parallel level. + // Then we call next and go to 3. After that, we don't call next anymore which means we are done, + // even though we did not process workloads 4 and 5. + // (e.g. In real life Abort was called so the handler won't call RunNextWork, because we don't want to run the remaining sources, + // and all the sources that are currently running be aborted by calling Abort on each manager via DoActionOnAllManagers.) + workloadsProcessed.Should().BeEquivalentTo(new[] { 1, 2, 3 }); + } - private class SampleConcurrentClass + [TestMethod] + public void OperationManagerRunsAnOperationOnAllActiveManagersWhenDoActionOnAllManagersIsCalled() + { + // Arrange + var createdManagers = new List(); + // Store the managers we created so we can inspect them later and see if Abort was called on them. + Func createNewManager = (_, _2) => { - public bool IsDisposeCalled = false; - public bool CheckValue; - public SampleConcurrentClass(bool value=false) + var manager = new SampleManager(); + createdManagers.Add(manager); + return manager; + }; + + var maxParallelLevel = 2; + // Create more workloads than the parallel level so we can go past max parallel level of active workers and simulate that we + // are aborting in the middle of a run. + var workloads = Enumerable.Range(1, maxParallelLevel + 3) + .Select(i => new ProviderSpecificWorkload(new SampleWorkload { Id = i }, provider: null!)) + .ToList(); + + var parallelOperationManager = new ParallelOperationManager(createNewManager, maxParallelLevel); + var eventHandler = new SampleHandler(); + + Func getEventHandler = (handler, _) => handler; + Action runWorkload = (manager, _, workload, _, _) => + { + // See comments in test above for explanation. + + // Make workload 1 fast, we want to put this in state where 2 and 3 are running and we call abort on them. + if (workload.Id != 1) { - this.CheckValue = value; + System.Threading.Thread.Sleep(100); } - } - private class SampleHandlerClass - { - public bool CheckValue; - public SampleHandlerClass(bool value=false) + // Only move to next when we run the first workload. Meaning we process 1, 2, and then 3, but not 4 and 5. + if (workload.Id == 1) { - this.CheckValue = value; + parallelOperationManager.RunNextWork(manager); } + }; + Func initializeWorkload = (_, _, _) => + Task.Run(() => System.Threading.Thread.Sleep(100)); + + // Start the work, so we process workload 1 and then move to 2. + parallelOperationManager.StartWork(workloads, eventHandler, getEventHandler, initializeWorkload, runWorkload); + // Act + parallelOperationManager.DoActionOnAllManagers(manager => manager.Abort(), doActionsInParallel: true); + + // Assert + // When we aborted workload 1 was already processed, and 2, and 3 were active. + // We should see that the first manager did not call abort, but second and third called abort, + // and there were no more managers created because we stopped calling next after 1 was done. + createdManagers.Select(manager => manager.AbortCalled).Should().BeEquivalentTo(new[] { false, true, true }); + } + + /// + /// Represents a manager that is responsible for processing a single given workload. Normally this would be a testhost. + /// + private class SampleManager + { + public bool AbortCalled { get; private set; } + + public void Abort() + { + AbortCalled = true; } } + + /// + /// Represents a handler, in our tests it does nothing, because we are not running any "async" work + /// so we don't need a handler to call us back when processing one workload is done and we can progress to next + /// workload. + /// + private class SampleHandler + { + + } + + // Represents a workload, normally this would be a test dll, or a collection of testcases from a single dll that + // are supposed to run on 1 testhost. + private class SampleWorkload + { + public int Id { get; set; } + } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyDiscoveryManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyDiscoveryManagerTests.cs index d9f85b420b..37cfb2764d 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyDiscoveryManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyDiscoveryManagerTests.cs @@ -1,295 +1,407 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ParallelProxyDiscoveryManagerTests { - using System; - using System.Collections.Generic; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class ParallelProxyDiscoveryManagerTests + private const int Timeout10Seconds = 10 * 1000; + private readonly Queue> _preCreatedMockManagers; + private readonly List> _usedMockManagers; + private readonly Func _createMockManager; + private readonly Mock _mockEventHandler; + private readonly List _sources = ["1.dll", "2.dll"]; + private readonly DiscoveryCriteria _discoveryCriteriaWith2Sources; + private readonly List _runtimeProviders; + private int _createMockManagerCalled; + private readonly List _processedSources; + private readonly ManualResetEventSlim _discoveryCompleted; + private readonly Mock _mockRequestData; + private readonly DiscoveryDataAggregator _dataAggregator; + + public ParallelProxyDiscoveryManagerTests() { - private const int taskTimeout = 15 * 1000; // In milliseconds. - private List> createdMockManagers; - private Func proxyManagerFunc; - private Mock mockHandler; - private List sources = new List() { "1.dll", "2.dll" }; - private DiscoveryCriteria testDiscoveryCriteria; - private bool proxyManagerFuncCalled; - private List processedSources; - private ManualResetEventSlim discoveryCompleted; - private Mock mockRequestData; - - public ParallelProxyDiscoveryManagerTests() + _processedSources = new List(); + _preCreatedMockManagers = new Queue>( + new List>{ + // have at least as many of them as you have test dlls + // they will be dequeued when we "create" a non-parallel + // manager. The setup adds callback for handler to complete + // the discovery. + new(), + new(), + new(), + new(), + new(), + }); + _usedMockManagers = new List>(); + _createMockManager = (_, _2) => { - this.processedSources = new List(); - this.createdMockManagers = new List>(); - this.proxyManagerFunc = () => - { - this.proxyManagerFuncCalled = true; - var manager = new Mock(); - this.createdMockManagers.Add(manager); - return manager.Object; - }; - this.mockHandler = new Mock(); - this.testDiscoveryCriteria = new DiscoveryCriteria(sources, 100, null); - this.discoveryCompleted = new ManualResetEventSlim(false); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); - } + // We create the manager at the last possible + // moment now, not when we create the parallel proxy manager class + // so rather than creating the class here, and adding the mock setup + // that allows the tests to complete. We instead pre-create a bunch of managers + // and then grab and setup the ones we need, and only assert on the used ones. + _createMockManagerCalled++; + var manager = _preCreatedMockManagers.Dequeue(); + _usedMockManagers.Add(manager); + return manager.Object; + }; + _mockEventHandler = new Mock(); + _discoveryCriteriaWith2Sources = new DiscoveryCriteria(_sources, 100, null); + _runtimeProviders = new List { + new(typeof(ITestRuntimeProvider), false, "", [ + new() { Source = _sources[0], Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + new() { Source = _sources[1], Architecture = Architecture.X86, Framework = Framework.DefaultFramework } + ]) + }; + + // This event is Set by callback from _mockEventHandler in SetupDiscoveryManager + _discoveryCompleted = new ManualResetEventSlim(false); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(new ProtocolConfig()); + _dataAggregator = new(); + } + + [TestMethod] + public void CreatingAndInitializingProxyExecutionManagerDoesNothingUntilThereIsActualWorkToDo() + { + InvokeAndVerifyInitialize(3); + } + + [TestMethod] + public void CreatingAndInitializingProxyExecutionManagerDoesNothingUntilThereIsActualWorkToDoButItKeepsSkipDefaultAdaptersValueFalse() + { + InvokeAndVerifyInitialize(3, skipDefaultAdapters: false); + } + + + [TestMethod] + public void CreatingAndInitializingProxyExecutionManagerDoesNothingUntilThereIsActualWorkToDoButItKeepsSkipDefaultAdaptersValueTrue() + { + InvokeAndVerifyInitialize(3, skipDefaultAdapters: true); + } - [TestMethod] - public void InitializeShouldCallAllConcurrentManagersOnce() + [TestMethod] + public void AbortShouldCallAllConcurrentManagersOnce() + { + var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(_mockRequestData.Object, _createMockManager, dataAggregator: new(), parallelLevel: 1000, _runtimeProviders); + + // Starting parallel discovery will create 2 proxy managers, which we will then promptly abort. + parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, new Mock().Object); + + parallelDiscoveryManager.Abort(); + + Assert.AreEqual(2, _usedMockManagers.Count, "Number of Concurrent Managers created should be equal to the number of sources that should run"); + _usedMockManagers.ForEach(dm => dm.Verify(m => m.Abort(), Times.Once)); + } + + [TestMethod] + public void DiscoverTestsShouldProcessAllSources() + { + // Testcase filter should be passed to all parallel discovery criteria. + _discoveryCriteriaWith2Sources.TestCaseFilter = "Name~Test"; + var parallelDiscoveryManager = SetupDiscoveryManager(_createMockManager, 2, false); + + var task = Task.Run(() => parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object)); + var discoveryCompleted = _discoveryCompleted.Wait(Timeout10Seconds); + + if (task.IsCompleted) { - InvokeAndVerifyInitialize(3); + // If the work is done, either there is output, + // or an exception that we want to "receive" to + // fail our test. + task.GetAwaiter().GetResult(); } - - [TestMethod] - public void InitializeShouldCallAllConcurrentManagersWithFalseFlagIfSkipDefaultAdaptersIsFalse() + else { - InvokeAndVerifyInitialize(3, false); + // We don't want to await the result because we + // completed or timed out on the event above. } + Assert.IsTrue(discoveryCompleted, "Test discovery not completed."); + Assert.AreEqual(_sources.Count, _processedSources.Count, "All Sources must be processed."); + AssertMissingAndDuplicateSources(_processedSources); + } - [TestMethod] - public void InitializeShouldCallAllConcurrentManagersWithTrueFlagIfSkipDefaultAdaptersIsTrue() - { - InvokeAndVerifyInitialize(3, true); - } + [TestMethod] + public void HandlePartialDiscoveryCompleteShouldReturnTrueIfDiscoveryWasAbortedBeforeBeingStartedWithEventHandler() + { + var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(_mockRequestData.Object, _createMockManager, dataAggregator: new(), parallelLevel: 1, new List()); + var proxyDiscovermanager = new ProxyDiscoveryManager(_mockRequestData.Object, new Mock().Object, new Mock().Object); - [TestMethod] - public void AbortShouldCallAllConcurrentManagersOnce() - { - var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(this.mockRequestData.Object, this.proxyManagerFunc, 4, false); + parallelDiscoveryManager.Abort(_mockEventHandler.Object); + bool isPartialDiscoveryComplete = parallelDiscoveryManager.HandlePartialDiscoveryComplete(proxyDiscovermanager, 20, new List(), isAborted: false); - parallelDiscoveryManager.Abort(); + Assert.IsTrue(isPartialDiscoveryComplete); + } - Assert.AreEqual(4, createdMockManagers.Count, "Number of Concurrent Managers created should be 4"); - createdMockManagers.ForEach(dm => dm.Verify(m => m.Abort(), Times.Once)); - } + [TestMethod] + public void HandlePartialDiscoveryCompleteShouldReturnTrueIfDiscoveryWasAbortedAfterBeingStartedWithEventHandler() + { + var discoveryManagerMock = new Mock(); + _preCreatedMockManagers.Enqueue(discoveryManagerMock); + var parallelDiscoveryManager = SetupDiscoveryManager((_, _2) => discoveryManagerMock.Object, 1, true); + var proxyDiscovermanager = new ProxyDiscoveryManager(_mockRequestData.Object, new Mock().Object, new Mock().Object); - [TestMethod] - public void DiscoverTestsShouldProcessAllSources() - { - // Testcase filter should be passed to all parallel discovery criteria. - this.testDiscoveryCriteria.TestCaseFilter = "Name~Test"; - var parallelDiscoveryManager = this.SetupDiscoveryManager(this.proxyManagerFunc, 2, false); + parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object); + parallelDiscoveryManager.Abort(_mockEventHandler.Object); + bool isPartialDiscoveryComplete = parallelDiscoveryManager.HandlePartialDiscoveryComplete(proxyDiscovermanager, 20, new List(), isAborted: false); - Task.Run(() => - { - parallelDiscoveryManager.DiscoverTests(this.testDiscoveryCriteria, this.mockHandler.Object); - }); + Assert.IsTrue(isPartialDiscoveryComplete); + } - Assert.IsTrue(this.discoveryCompleted.Wait(ParallelProxyDiscoveryManagerTests.taskTimeout), "Test discovery not completed."); - Assert.AreEqual(sources.Count, processedSources.Count, "All Sources must be processed."); - AssertMissingAndDuplicateSources(processedSources); - } + [TestMethod] + public void HandlePartialDiscoveryCompleteShouldReturnTrueIfDiscoveryWasAbortedBeforeBeingStarted() + { + var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(_mockRequestData.Object, _createMockManager, dataAggregator: new(), parallelLevel: 1, new List()); + var proxyDiscovermanager = new ProxyDiscoveryManager(_mockRequestData.Object, new Mock().Object, new Mock().Object); - /// - /// Create ParallelProxyDiscoveryManager with parallel level 1 and two source, - /// Abort in any source should not stop discovery for other sources. - /// - [TestMethod] - public void DiscoveryTestsShouldProcessAllSourcesOnDiscoveryAbortsForAnySource() - { - // Since the hosts are aborted, total aggregated tests sent across will be -1 - var discoveryManagerMock = new Mock(); - this.createdMockManagers.Add(discoveryManagerMock); - var parallelDiscoveryManager = this.SetupDiscoveryManager(() => discoveryManagerMock.Object, 1, true, totalTests: -1); + parallelDiscoveryManager.Abort(); + bool isPartialDiscoveryComplete = parallelDiscoveryManager.HandlePartialDiscoveryComplete(proxyDiscovermanager, 20, new List(), isAborted: false); - Task.Run(() => - { - parallelDiscoveryManager.DiscoverTests(this.testDiscoveryCriteria, this.mockHandler.Object); - }); + Assert.IsTrue(isPartialDiscoveryComplete); + } - Assert.IsTrue(this.discoveryCompleted.Wait(ParallelProxyDiscoveryManagerTests.taskTimeout), "Test discovery not completed."); - Assert.AreEqual(2, processedSources.Count, "All Sources must be processed."); - } + [TestMethod] + public void HandlePartialDiscoveryCompleteShouldReturnTrueIfDiscoveryWasAbortedAfterBeingStarted() + { + var discoveryManagerMock = new Mock(); + _preCreatedMockManagers.Enqueue(discoveryManagerMock); + var parallelDiscoveryManager = SetupDiscoveryManager((_, _2) => discoveryManagerMock.Object, 1, true); + var proxyDiscovermanager = new ProxyDiscoveryManager(_mockRequestData.Object, new Mock().Object, new Mock().Object); - /// - /// Create ParallelProxyDiscoveryManager with parallel level 1 and two sources, - /// Overall discovery should stop, if aborting was requested - /// - [TestMethod] - public void DiscoveryTestsShouldStopDiscoveryIfAbortionWasRequested() - { - // Since the hosts are aborted, total aggregated tests sent across will be -1 - var discoveryManagerMock = new Mock(); - this.createdMockManagers.Add(discoveryManagerMock); - var parallelDiscoveryManager = this.SetupDiscoveryManager(() => discoveryManagerMock.Object, 1, true, totalTests: -1); + parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object); + parallelDiscoveryManager.Abort(); + bool isPartialDiscoveryComplete = parallelDiscoveryManager.HandlePartialDiscoveryComplete(proxyDiscovermanager, 20, new List(), isAborted: false); - Task.Run(() => - { - parallelDiscoveryManager.DiscoverTests(this.testDiscoveryCriteria, this.mockHandler.Object); - parallelDiscoveryManager.Abort(); - }); + Assert.IsTrue(isPartialDiscoveryComplete); + } - Assert.IsTrue(this.discoveryCompleted.Wait(taskTimeout), "Test discovery not completed."); - Assert.AreEqual(1, processedSources.Count, "One source should be processed."); - } + [TestMethod] + public void DiscoveryTestsShouldStopDiscoveryIfAbortionWasRequested() + { + // Since the hosts are aborted, total aggregated tests sent across will be -1 + var discoveryManagerMock = new Mock(); + _preCreatedMockManagers.Enqueue(discoveryManagerMock); + var parallelDiscoveryManager = SetupDiscoveryManager((_, _2) => discoveryManagerMock.Object, 1, true); - [TestMethod] - public void DiscoveryTestsShouldProcessAllSourceIfOneDiscoveryManagerIsStarved() + Task.Run(() => { - // Ensure that second discovery manager never starts. Expect 10 total tests. - // Override DiscoveryComplete since overall aborted should be true - var parallelDiscoveryManager = this.SetupDiscoveryManager(this.proxyManagerFunc, 2, false, totalTests: 10); - this.createdMockManagers[1].Reset(); - this.createdMockManagers[1].Setup(dm => dm.DiscoverTests(It.IsAny(), It.IsAny())) - .Throws(); - this.mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) - .Callback>((t, l) => { this.discoveryCompleted.Set(); }); - - Task.Run(() => - { - parallelDiscoveryManager.DiscoverTests(this.testDiscoveryCriteria, this.mockHandler.Object); - }); + parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object); + parallelDiscoveryManager.Abort(); + }); - // Processed sources should be 1 since the 2nd source is never discovered - Assert.IsTrue(this.discoveryCompleted.Wait(ParallelProxyDiscoveryManagerTests.taskTimeout), "Test discovery not completed."); - Assert.AreEqual(1, processedSources.Count, "All Sources must be processed."); - } + Assert.IsTrue(_discoveryCompleted.Wait(Timeout10Seconds), "Test discovery not completed."); + Assert.AreEqual(1, _processedSources.Count, "One source should be processed."); + } + + [TestMethod] + public void DiscoveryTestsShouldStopDiscoveryIfAbortionWithEventHandlerWasRequested() + { + // Since the hosts are aborted, total aggregated tests sent across will be -1 + var discoveryManagerMock = new Mock(); + _preCreatedMockManagers.Enqueue(discoveryManagerMock); + var parallelDiscoveryManager = SetupDiscoveryManager((_, _2) => discoveryManagerMock.Object, 1, true); - [TestMethod] - public void DiscoveryTestsShouldCatchExceptionAndHandleLogMessageOfError() + Task.Run(() => { - // Ensure that second discovery manager never starts. Expect 10 total tests. - // Override DiscoveryComplete since overall aborted should be true - var parallelDiscoveryManager = this.SetupDiscoveryManager(this.proxyManagerFunc, 2, false, totalTests: 10); - this.createdMockManagers[1].Reset(); - this.createdMockManagers[1].Setup(dm => dm.DiscoverTests(It.IsAny(), It.IsAny())) - .Throws(); - this.mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) - .Callback>((t, l) => { this.discoveryCompleted.Set(); }); - - Task.Run(() => - { - parallelDiscoveryManager.DiscoverTests(this.testDiscoveryCriteria, this.mockHandler.Object); - }); + parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object); + parallelDiscoveryManager.Abort(_mockEventHandler.Object); + }); - // Processed sources should be 1 since the 2nd source is never discovered - Assert.IsTrue(this.discoveryCompleted.Wait(ParallelProxyDiscoveryManagerTests.taskTimeout), "Test discovery not completed."); - mockHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + Assert.IsTrue(_discoveryCompleted.Wait(Timeout10Seconds), "Test discovery not completed."); + Assert.AreEqual(1, _processedSources.Count, "One source should be processed."); + } - [TestMethod] - public void DiscoveryTestsShouldCatchExceptionAndHandleRawMessageOfTestMessage() - { - // Ensure that second discovery manager never starts. Expect 10 total tests. - // Override DiscoveryComplete since overall aborted should be true - var parallelDiscoveryManager = this.SetupDiscoveryManager(this.proxyManagerFunc, 2, false, totalTests: 10); - this.createdMockManagers[1].Reset(); - this.createdMockManagers[1].Setup(dm => dm.DiscoverTests(It.IsAny(), It.IsAny())) - .Throws(); - this.mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) - .Callback>((t, l) => { this.discoveryCompleted.Set(); }); - - Task.Run(() => - { - parallelDiscoveryManager.DiscoverTests(this.testDiscoveryCriteria, this.mockHandler.Object); - }); + [TestMethod] + public void DiscoveryTestsShouldProcessAllSourceIfOneDiscoveryManagerIsStarved() + { + // Ensure that second discovery manager never starts. Expect 10 total tests. + // Override DiscoveryComplete since overall aborted should be true + var parallelDiscoveryManager = SetupDiscoveryManager(_createMockManager, 2, false); + var secondMockManager = _preCreatedMockManagers.ToArray()[1]; + secondMockManager.Reset(); + secondMockManager.Setup(dm => dm.DiscoverTests(It.IsAny(), It.IsAny())) + .Throws(); + _mockEventHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) + .Callback>((t, l) => _discoveryCompleted.Set()); + + Task.Run(() => parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object)); + + // Processed sources should be 1 since the 2nd source is never discovered + Assert.IsTrue(_discoveryCompleted.Wait(Timeout10Seconds), "Test discovery not completed."); + Assert.AreEqual(1, _processedSources.Count, "All Sources must be processed."); + } - // Processed sources should be 1 since the 2nd source is never discovered - Assert.IsTrue(this.discoveryCompleted.Wait(ParallelProxyDiscoveryManagerTests.taskTimeout), "Test discovery not completed."); - mockHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage)))); - } + [TestMethod] + public void DiscoveryTestsShouldCatchExceptionAndHandleLogMessageOfError() + { + // Ensure that second discovery manager never starts. Expect 10 total tests. + // Override DiscoveryComplete since overall aborted should be true + var parallelDiscoveryManager = SetupDiscoveryManager(_createMockManager, 2, false); + var secondMockManager = _preCreatedMockManagers.ToArray()[1]; + secondMockManager.Reset(); + secondMockManager.Setup(dm => dm.DiscoverTests(It.IsAny(), It.IsAny())) + .Throws(); + _mockEventHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) + .Callback>((t, l) => _discoveryCompleted.Set()); + + Task.Run(() => parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object)); + + // Processed sources should be 1 since the 2nd source is never discovered + Assert.IsTrue(_discoveryCompleted.Wait(Timeout10Seconds), "Test discovery not completed."); + _mockEventHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - [TestMethod] - public void HandlePartialDiscoveryCompleteShouldCreateANewProxyDiscoveryManagerIfIsAbortedIsTrue() - { - this.proxyManagerFuncCalled = false; - var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(this.mockRequestData.Object, this.proxyManagerFunc, 1, false); - var proxyDiscovermanager = new ProxyDiscoveryManager(this.mockRequestData.Object, new Mock().Object, new Mock().Object); + [TestMethod] + public void DiscoveryTestsShouldCatchExceptionAndHandleRawMessageOfTestMessage() + { + // Ensure that second discovery manager never starts. Expect 10 total tests. + // Override DiscoveryComplete since overall aborted should be true + var parallelDiscoveryManager = SetupDiscoveryManager(_createMockManager, 2, false); + var secondMockManager = _preCreatedMockManagers.ToArray()[1]; + secondMockManager.Reset(); + secondMockManager.Setup(dm => dm.DiscoverTests(It.IsAny(), It.IsAny())) + .Throws(); + _mockEventHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) + .Callback>((t, l) => _discoveryCompleted.Set()); + + Task.Run(() => parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object)); + + // Processed sources should be 1 since the 2nd source is never discovered + Assert.IsTrue(_discoveryCompleted.Wait(Timeout10Seconds), "Test discovery not completed."); + _mockEventHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage)))); + } - parallelDiscoveryManager.HandlePartialDiscoveryComplete(proxyDiscovermanager, 20, new List(), isAborted: true); + [TestMethod] + public void HandlePartialDiscoveryCompleteShouldCreateANewProxyDiscoveryManagerIfIsAbortedIsTrue() + { + var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(_mockRequestData.Object, _createMockManager, dataAggregator: new(), parallelLevel: 1, _runtimeProviders); - Assert.IsTrue(this.proxyManagerFuncCalled); - } + // Trigger discover tests, this will create a manager by calling the _createMockManager func + // which dequeues it to _usedMockManagers. + parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object); + var completedManager = _usedMockManagers[0]; - private IParallelProxyDiscoveryManager SetupDiscoveryManager(Func getProxyManager, int parallelLevel, bool abortDiscovery, int totalTests = 20) - { - var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(this.mockRequestData.Object, getProxyManager, parallelLevel, false); - this.SetupDiscoveryTests(this.processedSources, abortDiscovery); + // act + // Tell the manager that completedManager finished work, and that it should progress to next work + parallelDiscoveryManager.HandlePartialDiscoveryComplete(completedManager.Object, 20, new List(), isAborted: true); - // Setup a complete handler for parallel discovery manager - this.mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) - .Callback>( - (discoveryCompleteEventArgs, lastChunk) => { this.discoveryCompleted.Set(); }); + // assert + // We created 2 managers 1 for the original work and another one + // when we called HandlePartialDiscoveryComplete and it moved on to the next piece of work. + Assert.AreEqual(2, _createMockManagerCalled); + } - return parallelDiscoveryManager; - } + [TestMethod] + public void DiscoveryTestsWithCompletionMarksAllSourcesAsFullyDiscovered() + { + _discoveryCriteriaWith2Sources.TestCaseFilter = "Name~Test"; + var parallelDiscoveryManager = SetupDiscoveryManager(_createMockManager, 2, false); + + Task.Run(() => parallelDiscoveryManager.DiscoverTests(_discoveryCriteriaWith2Sources, _mockEventHandler.Object)); - private void SetupDiscoveryTests(List processedSources, bool isAbort) + Assert.IsTrue(_discoveryCompleted.Wait(Timeout10Seconds), "Test discovery not completed."); + Assert.AreEqual(_sources.Count, _processedSources.Count, "All Sources must be processed."); + CollectionAssert.AreEquivalent(_sources, _dataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + Assert.AreEqual(0, _dataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered).Count); + Assert.AreEqual(0, _dataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered).Count); + } + + private ParallelProxyDiscoveryManager SetupDiscoveryManager(Func getProxyManager, int parallelLevel, bool abortDiscovery) + { + var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(_mockRequestData.Object, getProxyManager, dataAggregator: new(), parallelLevel, _runtimeProviders); + SetupDiscoveryTests(_processedSources, abortDiscovery); + + // Setup a complete handler for parallel discovery manager + _mockEventHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)) + .Callback>( + (discoveryCompleteEventArgs, lastChunk) => _discoveryCompleted.Set()); + + return parallelDiscoveryManager; + } + + private void SetupDiscoveryTests(List processedSources, bool isAbort) + { + var syncObject = new object(); + // This setups callbacks for the handler the we pass through. + // We pick up those managers in the _createMockManager func, + // and return them. + foreach (var manager in _preCreatedMockManagers.ToArray()) { - var syncObject = new object(); - foreach (var manager in this.createdMockManagers) - { - manager.Setup(m => m.DiscoverTests(It.IsAny(), It.IsAny())). - Callback( - (criteria, handler) => + manager.Setup(m => m.DiscoverTests(It.IsAny(), It.IsAny())). + Callback( + (criteria, handler) => + { + lock (syncObject) { - lock (syncObject) - { - processedSources.AddRange(criteria.Sources); - } + processedSources.AddRange(criteria.Sources); + } - Task.Delay(100).Wait(); + _dataAggregator.MarkSourcesWithStatus(criteria.Sources, DiscoveryStatus.FullyDiscovered); - Assert.AreEqual(this.testDiscoveryCriteria.TestCaseFilter, criteria.TestCaseFilter); - handler.HandleDiscoveryComplete(isAbort ? new DiscoveryCompleteEventArgs(-1, isAbort) : new DiscoveryCompleteEventArgs(10, isAbort), null); - }); - } + Task.Delay(100).Wait(); + + Assert.AreEqual(_discoveryCriteriaWith2Sources.TestCaseFilter, criteria.TestCaseFilter); + handler.HandleDiscoveryComplete(isAbort ? new DiscoveryCompleteEventArgs(-1, isAbort) : new DiscoveryCompleteEventArgs(10, isAbort), null); + }); } + } - private void AssertMissingAndDuplicateSources(List processedSources) + private void AssertMissingAndDuplicateSources(List processedSources) + { + foreach (var source in _sources) { - foreach (var source in this.sources) - { - bool matchFound = false; + bool matchFound = false; - foreach (var processedSrc in processedSources) + foreach (var processedSrc in processedSources) + { + if (processedSrc.Equals(source)) { - if (processedSrc.Equals(source)) + if (matchFound) { - if (matchFound) - { - Assert.Fail("Concurrency issue detected: Source['{0}'] got processed twice", processedSrc); - } - - matchFound = true; + Assert.Fail("Concurrency issue detected: Source['{0}'] got processed twice", processedSrc); } - } - Assert.IsTrue(matchFound, "Concurrency issue detected: Source['{0}'] did NOT get processed at all", source); + matchFound = true; + } } + + Assert.IsTrue(matchFound, "Concurrency issue detected: Source['{0}'] did NOT get processed at all", source); } + } - private void InvokeAndVerifyInitialize(int concurrentManagersCount, bool skipDefaultAdapters = false) - { - var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(this.mockRequestData.Object, this.proxyManagerFunc, concurrentManagersCount, false); + private void InvokeAndVerifyInitialize(int maxParallelLevel, bool skipDefaultAdapters = false) + { + var parallelDiscoveryManager = new ParallelProxyDiscoveryManager(_mockRequestData.Object, _createMockManager, dataAggregator: new(), maxParallelLevel, new List()); - // Action - parallelDiscoveryManager.Initialize(skipDefaultAdapters); + // Action + parallelDiscoveryManager.Initialize(skipDefaultAdapters); - // Verify - Assert.AreEqual(concurrentManagersCount, createdMockManagers.Count, $"Number of Concurrent Managers created should be {concurrentManagersCount}"); - createdMockManagers.ForEach(dm => dm.Verify(m => m.Initialize(skipDefaultAdapters), Times.Once)); - } + // Verify + Assert.AreEqual(0, _usedMockManagers.Count, $"No managers are pre-created until there is work for them."); + _usedMockManagers.ForEach(dm => dm.Verify(m => m.Initialize(skipDefaultAdapters), Times.Once)); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyExecutionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyExecutionManagerTests.cs index 78b7376bcf..2ac3486f2f 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyExecutionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelProxyExecutionManagerTests.cs @@ -1,379 +1,391 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ParallelProxyExecutionManagerTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class ParallelProxyExecutionManagerTests + private static readonly int Timeout3Seconds = 3 * 1000; // In milliseconds + + private readonly List> _usedMockManagers; + private readonly Func _createMockManager; + private readonly Mock _mockEventHandler; + + private readonly List _sources; + private readonly List _processedSources; + private readonly TestRunCriteria _testRunCriteriaWith2Sources; + private readonly List _runtimeProviders; + private readonly List _testCases; + private readonly List _processedTestCases; + private readonly TestRunCriteria _testRunCriteriaWithTestsFrom3Dlls; + + private int _createMockManagerCalled; + private readonly ManualResetEventSlim _executionCompleted; + private readonly Queue> _preCreatedMockManagers; + private readonly Mock _mockRequestData; + + public ParallelProxyExecutionManagerTests() { - private static readonly int taskTimeout = 15 * 1000; // In milliseconds - - private List> createdMockManagers; - private Func proxyManagerFunc; - private Mock mockHandler; - private Mock mockTestHostManager; + _executionCompleted = new ManualResetEventSlim(false); + _preCreatedMockManagers = new Queue>( + new List> + { + new(), + new(), + new(), + new(), + }); + _usedMockManagers = new List>(); + _createMockManager = (_, _2) => + { + _createMockManagerCalled++; + var manager = _preCreatedMockManagers.Dequeue(); + _usedMockManagers.Add(manager); + return manager.Object; + }; + _mockEventHandler = new Mock(); + + // Configure sources + _sources = new List() { "1.dll", "2.dll" }; + _processedSources = new List(); + _testRunCriteriaWith2Sources = new TestRunCriteria(_sources, 100, false, string.Empty, TimeSpan.MaxValue, null, "Name~Test", new FilterOptions() { FilterRegEx = @"^[^\s\(]+" }); + _runtimeProviders = new List { + new(typeof(ITestRuntimeProvider), false, "", [ + new() { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + new() { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + // For testcases on the bottom. + new() { Source = "3.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework } + ]) + }; + + // Configure testcases + _testCases = CreateTestCases(); + _processedTestCases = new List(); + _testRunCriteriaWithTestsFrom3Dlls = new TestRunCriteria(_testCases, 100); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(new ProtocolConfig()); + } - private Mock mockRequestSender; + [TestMethod] + public void NoManagersArePreCreatedUntilThereIsWorkForThem() + { + InvokeAndVerifyInitialize(3); + } - private Mock mockDataCollectionManager; - private List sources; - private List processedSources; - private TestRunCriteria testRunCriteriaWithSources; - private List testCases; - private List processedTestCases; - private TestRunCriteria testRunCriteriaWithTests; + [TestMethod] + public void NoManagersArePreCreatedUntilThereIsWorkForThemButSkipDefaultAdaptersValueFalseIsKept() + { + InvokeAndVerifyInitialize(3, skipDefaultAdapters: false); + } - private bool proxyManagerFuncCalled; - private ManualResetEventSlim executionCompleted; - private Mock mockRequestData; + [TestMethod] + public void NoManagersArePreCreatedUntilThereIsWorkForThemButSkipDefaultAdaptersValueTrueIsKept() + { + InvokeAndVerifyInitialize(3, skipDefaultAdapters: true); + } - public ParallelProxyExecutionManagerTests() - { - this.executionCompleted = new ManualResetEventSlim(false); - this.createdMockManagers = new List>(); - this.proxyManagerFunc = () => - { - this.proxyManagerFuncCalled = true; - var manager = new Mock(); - createdMockManagers.Add(manager); - return manager.Object; - }; - this.mockHandler = new Mock(); - - // Configure sources - this.sources = new List() { "1.dll", "2.dll" }; - this.processedSources = new List(); - this.testRunCriteriaWithSources = new TestRunCriteria(sources, 100, false, string.Empty, TimeSpan.MaxValue, null, "Name~Test", new FilterOptions() { FilterRegEx = @"^[^\s\(]+" }); - - // Configure testcases - this.testCases = CreateTestCases(); - this.processedTestCases = new List(); - this.testRunCriteriaWithTests = new TestRunCriteria(this.testCases, 100); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); - } + [TestMethod] + public void AbortShouldCallAllConcurrentManagersOnce() + { + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, _createMockManager, parallelLevel: 1000, _runtimeProviders); - [TestMethod] - public void InitializeShouldCallAllConcurrentManagersOnce() - { - InvokeAndVerifyInitialize(3); - } + // Starting parallel run will create 2 proxy managers, which we will then promptly abort. + parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, new Mock().Object); + parallelExecutionManager.Abort(It.IsAny()); - [TestMethod] - public void InitializeShouldCallAllConcurrentManagersWithFalseFlagIfSkipDefaultAdaptersIsFalse() - { - InvokeAndVerifyInitialize(3, false); - } + Assert.AreEqual(2, _usedMockManagers.Count, "Number of Concurrent Managers created should be equal to the amount of dlls that run"); + _usedMockManagers.ForEach(em => em.Verify(m => m.Abort(It.IsAny()), Times.Once)); + } - [TestMethod] - public void InitializeShouldCallAllConcurrentManagersWithTrueFlagIfSkipDefaultAdaptersIsTrue() - { - InvokeAndVerifyInitialize(3, true); - } + [TestMethod] + public void CancelShouldCallAllConcurrentManagersOnce() + { + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, _createMockManager, 4, _runtimeProviders); - [TestMethod] - public void AbortShouldCallAllConcurrentManagersOnce() - { - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, this.proxyManagerFunc, 4); + // Starting parallel run will create 2 proxy managers, which we will then promptly cancel. + parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, new Mock().Object); + parallelExecutionManager.Cancel(It.IsAny()); - parallelExecutionManager.Abort(It.IsAny()); + Assert.AreEqual(2, _usedMockManagers.Count, "Number of Concurrent Managers created should be equal to the amount of dlls that run"); + _usedMockManagers.ForEach(em => em.Verify(m => m.Cancel(It.IsAny()), Times.Once)); + } - Assert.AreEqual(4, createdMockManagers.Count, "Number of Concurrent Managers created should be 4"); - createdMockManagers.ForEach(em => em.Verify(m => m.Abort(It.IsAny()), Times.Once)); - } + [TestMethod] + public void StartTestRunShouldProcessAllSources() + { + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2); - [TestMethod] - public void CancelShouldCallAllConcurrentManagersOnce() - { - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, this.proxyManagerFunc, 4); + parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object); - parallelExecutionManager.Cancel(It.IsAny()); + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + Assert.AreEqual(_sources.Count, _processedSources.Count, "All Sources must be processed."); + AssertMissingAndDuplicateSources(_processedSources); + } - Assert.AreEqual(4, createdMockManagers.Count, "Number of Concurrent Managers created should be 4"); - createdMockManagers.ForEach(em => em.Verify(m => m.Cancel(It.IsAny()), Times.Once)); - } - [TestMethod] - public void StartTestRunShouldProcessAllSources() - { - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2); - parallelExecutionManager.StartTestRun(testRunCriteriaWithSources, this.mockHandler.Object); + [TestMethod] + public void StartTestRunShouldProcessAllTestCases() + { + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 3, setupTestCases: true); - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(this.sources.Count, processedSources.Count, "All Sources must be processed."); - AssertMissingAndDuplicateSources(processedSources); - } + parallelExecutionManager.StartTestRun(_testRunCriteriaWithTestsFrom3Dlls, _mockEventHandler.Object); + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + Assert.AreEqual(_testCases.Count, _processedTestCases.Count, "All Tests must be processed."); + AssertMissingAndDuplicateTestCases(_testCases, _processedTestCases); + } + [TestMethod] + public void StartTestRunWithSourcesShouldNotSendCompleteUntilAllSourcesAreProcessed() + { + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2); - [TestMethod] - public void StartTestRunShouldProcessAllTestCases() - { - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 3, setupTestCases: true); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - parallelExecutionManager.StartTestRun(this.testRunCriteriaWithTests, this.mockHandler.Object); + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + Assert.AreEqual(_sources.Count, _processedSources.Count, "All Sources must be processed."); + AssertMissingAndDuplicateSources(_processedSources); + } - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(this.testCases.Count, processedTestCases.Count, "All Tests must be processed."); - AssertMissingAndDuplicateTestCases(this.testCases, processedTestCases); - } + [TestMethod] + public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfDataCollectionEnabled() + { + var completeArgs = new TestRunCompleteEventArgs(null, isCanceled: false, isAborted: false, null, null, null, TimeSpan.Zero); + var mockTestHostManager = new Mock(); + var mockRequestSender = new Mock(); + var mockDataCollectionManager = new Mock(); + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2, setupTestCases: true); + + // Trigger discover tests, this will create a manager by calling the _createMockManager func + // which dequeues it to _usedMockManagers. + parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object); + var completedManager = _usedMockManagers[0]; + + // act + // Tell the manager that completedManager finished work, and that it should progress to next work + parallelExecutionManager.HandlePartialRunComplete(completedManager.Object, completeArgs, null!, null!, null!); + + // assert + // We created 2 managers 1 for the original work and another one + // when we called HandlePartialDiscoveryComplete and it moved on to the next piece of work. + Assert.AreEqual(2, _createMockManagerCalled); + } - [TestMethod] - public void StartTestRunWithSourcesShouldNotSendCompleteUntilAllSourcesAreProcessed() - { - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2); + [TestMethod] + public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfIsAbortedIsTrue() + { + var completeArgs = new TestRunCompleteEventArgs(null, true, true, null, null, null, TimeSpan.Zero); + var mockTestHostManager = new Mock(); + var mockRequestSender = new Mock(); + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2, setupTestCases: true); + + // Trigger discover tests, this will create a manager by calling the _createMockManager func + // which dequeues it to _usedMockManagers. + parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object); + var completedManager = _usedMockManagers[0]; + + // act + // Tell the manager that completedManager finished work, and that it should progress to next work + parallelExecutionManager.HandlePartialRunComplete(completedManager.Object, completeArgs, null, null, null); + + // assert + // We created 2 managers 1 for the original work and another one + // when we called HandlePartialDiscoveryComplete and it moved on to the next piece of work. + Assert.AreEqual(2, _createMockManagerCalled); + } - Task.Run(() => - { - parallelExecutionManager.StartTestRun(testRunCriteriaWithSources, this.mockHandler.Object); - }); + [TestMethod] + public void StartTestRunWithTestsShouldNotSendCompleteUntilAllTestsAreProcessed() + { + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 3, setupTestCases: true); - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(this.sources.Count, this.processedSources.Count, "All Sources must be processed."); - AssertMissingAndDuplicateSources(this.processedSources); - } + var task = Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWithTestsFrom3Dlls, _mockEventHandler.Object)); - [TestMethod] - public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfDataCollectionEnabled() - { - var completeArgs = new TestRunCompleteEventArgs(null, true, true, null, null, TimeSpan.Zero); - this.mockTestHostManager = new Mock(); - this.mockRequestSender = new Mock(); - this.mockDataCollectionManager = new Mock(); - var proxyDataCollectionManager = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2, setupTestCases: true); - - this.proxyManagerFuncCalled = false; - parallelExecutionManager.HandlePartialRunComplete(proxyDataCollectionManager, completeArgs, null, null, null); - Assert.IsTrue(this.proxyManagerFuncCalled); - } + bool executionCompleted = _executionCompleted.Wait(Timeout3Seconds); - [TestMethod] - public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfDataCollectionEnabledAndCreatorWithDataCollection() + if (task.IsCompleted) { - var completeArgs = new TestRunCompleteEventArgs(null, true, true, null, null, TimeSpan.Zero); - this.mockTestHostManager = new Mock(); - this.mockRequestSender = new Mock(); - this.mockDataCollectionManager = new Mock(); - var proxyDataCollectionManager = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); - var managers = new List>(); - this.proxyManagerFunc = () => - { - this.proxyManagerFuncCalled = true; - var manager = new Mock(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); - managers.Add(manager); - return manager.Object; - }; - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2, setupTestCases: true); - - this.proxyManagerFuncCalled = false; - parallelExecutionManager.HandlePartialRunComplete(proxyDataCollectionManager, completeArgs, null, null, null); - Assert.IsTrue(this.proxyManagerFuncCalled); - - var handler = parallelExecutionManager.GetHandlerForGivenManager(managers.Last().Object); - Assert.IsTrue(handler is ParallelDataCollectionEventsHandler); + // Receive any exception if some happened + // Don't await if not completed, to avoid hanging the test. + task.GetAwaiter().GetResult(); } - [TestMethod] - public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfIsAbortedIsTrue() - { - var completeArgs = new TestRunCompleteEventArgs(null, true, true, null, null, TimeSpan.Zero); - this.mockTestHostManager = new Mock(); - this.mockRequestSender = new Mock(); - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2, setupTestCases: true); - - this.proxyManagerFuncCalled = false; - var proxyExecutionManagerManager = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object); - parallelExecutionManager.HandlePartialRunComplete(proxyExecutionManagerManager, completeArgs, null, null, null); - Assert.IsTrue(this.proxyManagerFuncCalled); - } + Assert.IsTrue(executionCompleted, "Test run not completed."); + Assert.AreEqual(_testCases.Count, _processedTestCases.Count, "All Tests must be processed."); + AssertMissingAndDuplicateTestCases(_testCases, _processedTestCases); + } - [TestMethod] - public void StartTestRunWithTestsShouldNotSendCompleteUntilAllTestsAreProcessed() - { - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 3, setupTestCases: true); + [TestMethod] + public void StartTestRunShouldNotProcessAllSourcesOnExecutionCancelsForAnySource() + { + var executionManagerMock = new Mock(); + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, (_, _2) => executionManagerMock.Object, 1, _runtimeProviders); + _preCreatedMockManagers.Enqueue(executionManagerMock); + SetupMockManagers(_processedSources, isCanceled: true, isAborted: false); + SetupHandleTestRunComplete(_executionCompleted); - Task.Run(() => - { - parallelExecutionManager.StartTestRun(this.testRunCriteriaWithTests, this.mockHandler.Object); - }); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(this.testCases.Count, processedTestCases.Count, "All Tests must be processed."); - AssertMissingAndDuplicateTestCases(this.testCases, processedTestCases); - } + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + Assert.AreEqual(1, _processedSources.Count, "Abort should stop all sources execution."); + } - [TestMethod] - public void StartTestRunShouldNotProcessAllSourcesOnExecutionCancelsForAnySource() - { - var executionManagerMock = new Mock(); - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, () => executionManagerMock.Object, 1); - this.createdMockManagers.Add(executionManagerMock); - this.SetupMockManagers(this.processedSources, isCanceled: true, isAborted: false); - SetupHandleTestRunComplete(this.executionCompleted); + [TestMethod] + public void StartTestRunShouldNotProcessAllSourcesOnExecutionAborted() + { + var executionManagerMock = new Mock(); + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, (_, _2) => executionManagerMock.Object, 1, _runtimeProviders); + _preCreatedMockManagers.Enqueue(executionManagerMock); + SetupMockManagers(_processedSources, isCanceled: false, isAborted: false); + SetupHandleTestRunComplete(_executionCompleted); - Task.Run(() => { parallelExecutionManager.StartTestRun(this.testRunCriteriaWithSources, this.mockHandler.Object); }); + parallelExecutionManager.Abort(It.IsAny()); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(1, this.processedSources.Count, "Abort should stop all sources execution."); - } + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + Assert.AreEqual(1, _processedSources.Count, "Abort should stop all sources execution."); + } - [TestMethod] - public void StartTestRunShouldNotProcessAllSourcesOnExecutionAborted() - { - var executionManagerMock = new Mock(); - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, () => executionManagerMock.Object, 1); - this.createdMockManagers.Add(executionManagerMock); - this.SetupMockManagers(this.processedSources, isCanceled: false, isAborted: false); - SetupHandleTestRunComplete(this.executionCompleted); + [TestMethod] + public void StartTestRunShouldProcessAllSourcesOnExecutionAbortsForAnySource() + { + var executionManagerMock = new Mock(); + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, (_, _2) => executionManagerMock.Object, 1, _runtimeProviders); + _preCreatedMockManagers.Enqueue(executionManagerMock); + SetupMockManagers(_processedSources, isCanceled: false, isAborted: true); + SetupHandleTestRunComplete(_executionCompleted); - parallelExecutionManager.Abort(It.IsAny()); - Task.Run(() => { parallelExecutionManager.StartTestRun(this.testRunCriteriaWithSources, this.mockHandler.Object); }); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(1, this.processedSources.Count, "Abort should stop all sources execution."); - } + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); - [TestMethod] - public void StartTestRunShouldProcessAllSourcesOnExecutionAbortsForAnySource() - { - var executionManagerMock = new Mock(); - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, () => executionManagerMock.Object, 1); - this.createdMockManagers.Add(executionManagerMock); - this.SetupMockManagers(processedSources, isCanceled: false, isAborted: true); - SetupHandleTestRunComplete(this.executionCompleted); + Assert.AreEqual(2, _processedSources.Count, "Abort should stop all sources execution."); + } - Task.Run(() => { parallelExecutionManager.StartTestRun(this.testRunCriteriaWithSources, this.mockHandler.Object); }); + [TestMethod] + public void StartTestRunShouldProcessAllSourceIfOneDiscoveryManagerIsStarved() + { + // Ensure that second discovery manager never starts. Expect 10 total tests. + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2); + var mockManagers = _preCreatedMockManagers.ToArray(); + mockManagers[1].Reset(); + mockManagers[1].Setup(em => em.StartTestRun(It.IsAny(), It.IsAny())) + .Throws(); + + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); + + // Processed sources should be 1 since the 2nd source is never discovered + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + Assert.AreEqual(1, _processedSources.Count, "All Sources must be processed."); + } - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(2, this.processedSources.Count, "Abort should stop all sources execution."); - } + [TestMethod] + public void StartTestRunShouldCatchExceptionAndHandleLogMessageOfError() + { + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2); + var mockManagers = _preCreatedMockManagers.ToArray(); + mockManagers[1].Reset(); + mockManagers[1].Setup(em => em.StartTestRun(It.IsAny(), It.IsAny())) + .Throws(); - [TestMethod] - public void StartTestRunShouldProcessAllSourceIfOneDiscoveryManagerIsStarved() - { - // Ensure that second discovery manager never starts. Expect 10 total tests. - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2); - this.createdMockManagers[1].Reset(); - this.createdMockManagers[1].Setup(em => em.StartTestRun(It.IsAny(), It.IsAny())) - .Throws(); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - Task.Run(() => - { - parallelExecutionManager.StartTestRun(this.testRunCriteriaWithSources, this.mockHandler.Object); - }); + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + _mockEventHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - // Processed sources should be 1 since the 2nd source is never discovered - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - Assert.AreEqual(1, this.processedSources.Count, "All Sources must be processed."); - } + [TestMethod] + public void StartTestRunShouldCatchExceptionAndHandleRawMessageOfTestMessage() + { + var parallelExecutionManager = SetupExecutionManager(_createMockManager, 2); + var mockManagers = _preCreatedMockManagers.ToArray(); + mockManagers[1].Reset(); + mockManagers[1].Setup(em => em.StartTestRun(It.IsAny(), It.IsAny())) + .Throws(); - [TestMethod] - public void StartTestRunShouldCatchExceptionAndHandleLogMessageOfError() - { - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2); - this.createdMockManagers[1].Reset(); - this.createdMockManagers[1].Setup(em => em.StartTestRun(It.IsAny(), It.IsAny())) - .Throws(); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - Task.Run(() => - { - parallelExecutionManager.StartTestRun(this.testRunCriteriaWithSources, this.mockHandler.Object); - }); + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); + _mockEventHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage)))); + } - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - mockHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + [TestMethod] + public void StartTestRunShouldAggregateRunData() + { + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, _createMockManager, 2, _runtimeProviders); + var syncObject = new object(); - [TestMethod] - public void StartTestRunShouldCatchExceptionAndHandleRawMessageOfTestMessage() + foreach (var manager in _preCreatedMockManagers) { - var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2); - this.createdMockManagers[1].Reset(); - this.createdMockManagers[1].Setup(em => em.StartTestRun(It.IsAny(), It.IsAny())) - .Throws(); + manager.Setup(m => m.StartTestRun(It.IsAny(), It.IsAny())). + Callback( + (criteria, handler) => + { + lock (syncObject) + { + _processedSources.AddRange(criteria.Sources!); + } - Task.Run(() => - { - parallelExecutionManager.StartTestRun(this.testRunCriteriaWithSources, this.mockHandler.Object); - }); + Task.Delay(100).Wait(); + var stats = new Dictionary + { + { TestOutcome.Passed, 3 }, + { TestOutcome.Failed, 2 } + }; + var runAttachments = new Collection + { + new(new Uri("hello://x/"), "Hello") + }; + var executorUris = new List() { "hello1" }; + bool isCanceled = false; + bool isAborted = false; + TimeSpan timespan = TimeSpan.FromMilliseconds(100); + + if (string.Equals(criteria.Sources?.FirstOrDefault(), "2.dll")) + { + isCanceled = true; + isAborted = true; + timespan = TimeSpan.FromMilliseconds(200); + } - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); - mockHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage)))); + var completeArgs = new TestRunCompleteEventArgs(new + TestRunStatistics(5, stats), isCanceled, isAborted, null, runAttachments, new Collection(), timespan); + handler.HandleTestRunComplete(completeArgs, null, runAttachments, executorUris); + }); } - [TestMethod] - public void StartTestRunShouldAggregateRunData() - { - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, this.proxyManagerFunc, 2); - var syncObject = new object(); - - foreach (var manager in createdMockManagers) - { - manager.Setup(m => m.StartTestRun(It.IsAny(), It.IsAny())). - Callback( - (criteria, handler) => - { - lock (syncObject) - { - this.processedSources.AddRange(criteria.Sources); - } - - Task.Delay(100).Wait(); - var stats = new Dictionary(); - stats.Add(TestOutcome.Passed, 3); - stats.Add(TestOutcome.Failed, 2); - var runAttachments = new Collection(); - runAttachments.Add(new AttachmentSet(new Uri("hello://x/"), "Hello")); - var executorUris = new List() { "hello1" }; - bool isCanceled = false; - bool isAborted = false; - TimeSpan timespan = TimeSpan.FromMilliseconds(100); - - if (string.Equals(criteria.Sources?.FirstOrDefault(), "2.dll")) - { - isCanceled = true; - isAborted = true; - timespan = TimeSpan.FromMilliseconds(200); - } - - var completeArgs = new TestRunCompleteEventArgs(new - TestRunStatistics(5, stats), isCanceled, isAborted, null, runAttachments, timespan); - handler.HandleTestRunComplete(completeArgs, null, runAttachments, executorUris); - }); - } - - Exception assertException = null; - this.mockHandler.Setup(m => m.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())).Callback - , ICollection>( + Exception? assertException = null; + _mockEventHandler.Setup(m => m.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())).Callback + , ICollection>( (completeArgs, runChangedArgs, runAttachments, executorUris) => { try @@ -387,10 +399,10 @@ public void StartTestRunShouldAggregateRunData() Assert.IsTrue(completeArgs.IsAborted, "Aborted value must be OR of all values"); Assert.IsTrue(completeArgs.IsCanceled, "Canceled value must be OR of all values"); - Assert.AreEqual(10, completeArgs.TestRunStatistics.ExecutedTests, + Assert.AreEqual(10, completeArgs.TestRunStatistics!.ExecutedTests, "Stats must be aggregated properly"); - Assert.AreEqual(6, completeArgs.TestRunStatistics.Stats[TestOutcome.Passed], + Assert.AreEqual(6, completeArgs.TestRunStatistics.Stats![TestOutcome.Passed], "Stats must be aggregated properly"); Assert.AreEqual(4, completeArgs.TestRunStatistics.Stats[TestOutcome.Failed], "Stats must be aggregated properly"); @@ -401,174 +413,170 @@ public void StartTestRunShouldAggregateRunData() } finally { - this.executionCompleted.Set(); + _executionCompleted.Set(); } }); - Task.Run(() => - { - parallelExecutionManager.StartTestRun(testRunCriteriaWithSources, this.mockHandler.Object); - }); + Task.Run(() => parallelExecutionManager.StartTestRun(_testRunCriteriaWith2Sources, _mockEventHandler.Object)); - Assert.IsTrue(this.executionCompleted.Wait(taskTimeout), "Test run not completed."); + // If you are debugging this, maybe it is good idea to set this timeout higher. + Assert.IsTrue(_executionCompleted.Wait(Timeout3Seconds), "Test run not completed."); - Assert.IsNull(assertException, assertException?.ToString()); - Assert.AreEqual(sources.Count, this.processedSources.Count, "All Sources must be processed."); - AssertMissingAndDuplicateSources(this.processedSources); - } + Assert.IsNull(assertException, assertException?.ToString()); + Assert.AreEqual(_sources.Count, _processedSources.Count, "All Sources must be processed."); + AssertMissingAndDuplicateSources(_processedSources); + } + + private ParallelProxyExecutionManager SetupExecutionManager(Func proxyManagerFunc, int parallelLevel) + { + return SetupExecutionManager(proxyManagerFunc, parallelLevel, false); + } + + private ParallelProxyExecutionManager SetupExecutionManager(Func proxyManagerFunc, int parallelLevel, bool setupTestCases) + { + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, proxyManagerFunc, parallelLevel, _runtimeProviders); - private ParallelProxyExecutionManager SetupExecutionManager(Func proxyManagerFunc, int parallelLevel) + if (setupTestCases) { - return this.SetupExecutionManager(proxyManagerFunc, parallelLevel, false); + SetupMockManagersForTestCase(_processedTestCases, _testRunCriteriaWithTestsFrom3Dlls); } - - private ParallelProxyExecutionManager SetupExecutionManager(Func proxyManagerFunc, int parallelLevel, bool setupTestCases) + else { - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, proxyManagerFunc, parallelLevel); + SetupMockManagers(_processedSources); + } - if (setupTestCases) - { - SetupMockManagersForTestCase(this.processedTestCases, this.testRunCriteriaWithTests); - } - else - { - this.SetupMockManagers(this.processedSources); - } + SetupHandleTestRunComplete(_executionCompleted); + return parallelExecutionManager; + } - this.SetupHandleTestRunComplete(this.executionCompleted); - return parallelExecutionManager; - } + private void SetupHandleTestRunComplete(ManualResetEventSlim completeEvent) + { + _mockEventHandler.Setup(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback, ICollection>( + (testRunCompleteArgs, testRunChangedEventArgs, attachmentSets, executorUris) => completeEvent.Set()); + } - private void SetupHandleTestRunComplete(ManualResetEventSlim completeEvent) + private void AssertMissingAndDuplicateSources(List processedSources) + { + foreach (var source in _sources) { - this.mockHandler.Setup(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback, ICollection>( - (testRunCompleteArgs, testRunChangedEventArgs, attachmentSets, executorUris) => { completeEvent.Set(); }); - } + var matchFound = false; - private void AssertMissingAndDuplicateSources(List processedSources) - { - foreach (var source in this.sources) + foreach (var processedSrc in processedSources) { - var matchFound = false; - - foreach (var processedSrc in processedSources) + if (processedSrc.Equals(source)) { - if (processedSrc.Equals(source)) + if (matchFound) { - if (matchFound) - { - Assert.Fail("Concurrreny issue detected: Source['{0}'] got processed twice", processedSrc); - } - - matchFound = true; + Assert.Fail("Concurrreny issue detected: Source['{0}'] got processed twice", processedSrc); } - } - Assert.IsTrue(matchFound, "Concurrency issue detected: Source['{0}'] did NOT get processed at all", source); + matchFound = true; + } } - } - private static TestRunCompleteEventArgs CreateTestRunCompleteArgs(bool isCanceled = false, bool isAborted = false) - { - return new TestRunCompleteEventArgs( - new TestRunStatistics(new Dictionary()), - isCanceled, - isAborted, - null, - null, - TimeSpan.FromMilliseconds(1)); + Assert.IsTrue(matchFound, "Concurrency issue detected: Source['{0}'] did NOT get processed at all", source); } + } - private static void AssertMissingAndDuplicateTestCases(List tests, List processedTestCases) + private static TestRunCompleteEventArgs CreateTestRunCompleteArgs(bool isCanceled = false, bool isAborted = false) + { + return new TestRunCompleteEventArgs( + new TestRunStatistics(new Dictionary()), + isCanceled, + isAborted, + null, + null, + null, + TimeSpan.FromMilliseconds(1)); + } + + private static void AssertMissingAndDuplicateTestCases(List tests, List processedTestCases) + { + foreach (var test in tests) { - foreach (var test in tests) - { - bool matchFound = false; + bool matchFound = false; - foreach (var processedTest in processedTestCases) + foreach (var processedTest in processedTestCases) + { + if (processedTest.FullyQualifiedName.Equals(test.FullyQualifiedName)) { - if (processedTest.FullyQualifiedName.Equals(test.FullyQualifiedName)) - { - if (matchFound) - Assert.Fail("Concurrency issue detected: Test['{0}'] got processed twice", test.FullyQualifiedName); - matchFound = true; - } + if (matchFound) + Assert.Fail("Concurrency issue detected: Test['{0}'] got processed twice", test.FullyQualifiedName); + matchFound = true; } - - Assert.IsTrue(matchFound, "Concurrency issue detected: Test['{0}'] did NOT get processed at all", - test.FullyQualifiedName); } + + Assert.IsTrue(matchFound, "Concurrency issue detected: Test['{0}'] did NOT get processed at all", + test.FullyQualifiedName); } + } - private void SetupMockManagersForTestCase(List processedTestCases, TestRunCriteria testRunCriteria) + private void SetupMockManagersForTestCase(List processedTestCases, TestRunCriteria testRunCriteria) + { + var syncObject = new object(); + foreach (var manager in _preCreatedMockManagers) { - var syncObject = new object(); - foreach (var manager in createdMockManagers) - { - manager.Setup(m => m.StartTestRun(It.IsAny(), It.IsAny())). - Callback( - (criteria, handler) => + manager.Setup(m => m.StartTestRun(It.IsAny(), It.IsAny())). + Callback( + (criteria, handler) => + { + lock (syncObject) { - lock (syncObject) - { - processedTestCases.AddRange(criteria.Tests); - } + processedTestCases.AddRange(criteria.Tests!); + } - Task.Delay(100).Wait(); + Task.Delay(100).Wait(); - // Duplicated testRunCriteria should match the actual one. - Assert.AreEqual(testRunCriteria, criteria, "Mismatch in testRunCriteria"); - handler.HandleTestRunComplete(CreateTestRunCompleteArgs(), null, null, null); - }); - } + // Duplicated testRunCriteria should match the actual one. + Assert.AreEqual(testRunCriteria, criteria, "Mismatch in testRunCriteria"); + handler.HandleTestRunComplete(CreateTestRunCompleteArgs(), null, null, null); + }); } + } - private static List CreateTestCases() - { - TestCase tc1 = new TestCase("dll1.class1.test1", new Uri("hello://x/"), "1.dll"); - TestCase tc21 = new TestCase("dll2.class21.test21", new Uri("hello://x/"), "2.dll"); - TestCase tc22 = new TestCase("dll2.class21.test22", new Uri("hello://x/"), "2.dll"); - TestCase tc31 = new TestCase("dll3.class31.test31", new Uri("hello://x/"), "3.dll"); - TestCase tc32 = new TestCase("dll3.class31.test32", new Uri("hello://x/"), "3.dll"); - - var tests = new List() { tc1, tc21, tc22, tc31, tc32 }; - return tests; - } + private static List CreateTestCases() + { + TestCase tc1 = new("dll1.class1.test1", new Uri("hello://x/"), "1.dll"); + TestCase tc21 = new("dll2.class21.test21", new Uri("hello://x/"), "2.dll"); + TestCase tc22 = new("dll2.class21.test22", new Uri("hello://x/"), "2.dll"); + TestCase tc31 = new("dll3.class31.test31", new Uri("hello://x/"), "3.dll"); + TestCase tc32 = new("dll3.class31.test32", new Uri("hello://x/"), "3.dll"); + + var tests = new List() { tc1, tc21, tc22, tc31, tc32 }; + return tests; + } - private void SetupMockManagers(List processedSources, bool isCanceled = false, bool isAborted = false) + private void SetupMockManagers(List processedSources, bool isCanceled = false, bool isAborted = false) + { + var syncObject = new object(); + foreach (var manager in _preCreatedMockManagers) { - var syncObject = new object(); - foreach (var manager in createdMockManagers) - { - manager.Setup(m => m.StartTestRun(It.IsAny(), It.IsAny())). - Callback( - (criteria, handler) => + manager.Setup(m => m.StartTestRun(It.IsAny(), It.IsAny())). + Callback( + (criteria, handler) => + { + lock (syncObject) { - lock (syncObject) - { - processedSources.AddRange(criteria.Sources); - } - Task.Delay(100).Wait(); - - // Duplicated testRunCriteria should match the actual one. - Assert.AreEqual(testRunCriteriaWithSources, criteria, "Mismatch in testRunCriteria"); - handler.HandleTestRunComplete(CreateTestRunCompleteArgs(isCanceled, isAborted), null, null, null); - }); - } + processedSources.AddRange(criteria.Sources!); + } + Task.Delay(100).Wait(); + + handler.HandleTestRunComplete(CreateTestRunCompleteArgs(isCanceled, isAborted), null, null, null); + }); } + } - private void InvokeAndVerifyInitialize(int concurrentManagersCount, bool skipDefaultAdapters = false) - { - var parallelExecutionManager = new ParallelProxyExecutionManager(this.mockRequestData.Object, proxyManagerFunc, concurrentManagersCount); + private void InvokeAndVerifyInitialize(int parallelLevel, bool skipDefaultAdapters = false) + { + var parallelExecutionManager = new ParallelProxyExecutionManager(_mockRequestData.Object, _createMockManager, parallelLevel, _runtimeProviders); - parallelExecutionManager.Initialize(skipDefaultAdapters); + parallelExecutionManager.Initialize(skipDefaultAdapters); - Assert.AreEqual(concurrentManagersCount, createdMockManagers.Count, $"Number of Concurrent Managers created should be {concurrentManagersCount}"); - createdMockManagers.ForEach(em => em.Verify(m => m.Initialize(skipDefaultAdapters), Times.Once)); - } + Assert.AreEqual(0, _usedMockManagers.Count, $"No concurrent managers should be pre-created, until there is work for them"); + _usedMockManagers.ForEach(em => em.Verify(m => m.Initialize(skipDefaultAdapters), Times.Once)); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunDataAggregatorTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunDataAggregatorTests.cs index 75be8e2a8c..61d6b8b17c 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunDataAggregatorTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunDataAggregatorTests.cs @@ -1,407 +1,458 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client.Parallel +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client.Parallel; + +[TestClass] +public class ParallelRunDataAggregatorTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ParallelRunDataAggregatorTests + [TestMethod] + public void ParallelRunDataAggregatorConstructorShouldInitializeAggregatorVars() { - [TestMethod] - public void ParallelRunDataAggregatorConstructorShouldInitializeAggregatorVars() - { - var aggregator = new ParallelRunDataAggregator(); + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.Zero, "Timespan must be initialized to zero."); + Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.Zero, "Timespan must be initialized to zero."); - Assert.IsNotNull(aggregator.Exceptions, "Exceptions list must not be null"); - Assert.IsNotNull(aggregator.ExecutorUris, "ExecutorUris list must not be null"); - Assert.IsNotNull(aggregator.RunCompleteArgsAttachments, "RunCompleteArgsAttachments list must not be null"); - Assert.IsNotNull(aggregator.RunContextAttachments, "RunContextAttachments list must not be null"); + Assert.IsNotNull(aggregator.Exceptions, "Exceptions list must not be null"); + Assert.IsNotNull(aggregator.ExecutorUris, "ExecutorUris list must not be null"); + Assert.IsNotNull(aggregator.RunCompleteArgsAttachments, "RunCompleteArgsAttachments list must not be null"); + Assert.IsNotNull(aggregator.RunContextAttachments, "RunContextAttachments list must not be null"); - Assert.AreEqual(0, aggregator.Exceptions.Count, "Exceptions List must be initialized as empty list."); - Assert.AreEqual(0, aggregator.ExecutorUris.Count, "Exceptions List must be initialized as empty list."); - Assert.AreEqual(0, aggregator.RunCompleteArgsAttachments.Count, "RunCompleteArgsAttachments List must be initialized as empty list."); - Assert.AreEqual(0, aggregator.RunContextAttachments.Count, "RunContextAttachments List must be initialized as empty list"); + Assert.AreEqual(0, aggregator.Exceptions.Count, "Exceptions List must be initialized as empty list."); + Assert.AreEqual(0, aggregator.ExecutorUris.Count, "Exceptions List must be initialized as empty list."); + Assert.AreEqual(0, aggregator.RunCompleteArgsAttachments.Count, "RunCompleteArgsAttachments List must be initialized as empty list."); + Assert.AreEqual(0, aggregator.RunContextAttachments.Count, "RunContextAttachments List must be initialized as empty list"); - Assert.IsFalse(aggregator.IsAborted, "Aborted must be false by default"); + Assert.IsFalse(aggregator.IsAborted, "Aborted must be false by default"); - Assert.IsFalse(aggregator.IsCanceled, "Canceled must be false by default"); - } + Assert.IsFalse(aggregator.IsCanceled, "Canceled must be false by default"); + } + + [TestMethod] + public void AggregateShouldAggregateRunCompleteAttachmentsCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void AggregateShouldAggregateRunCompleteAttachmentsCorrectly() + var attachmentSet1 = new Collection { - var aggregator = new ParallelRunDataAggregator(); + new(new Uri("x://hello1"), "hello1") + }; - var attachmentSet1 = new Collection(); - attachmentSet1.Add(new AttachmentSet(new Uri("x://hello1"), "hello1")); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, attachmentSet1, null, null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, attachmentSet1); + Assert.AreEqual(1, aggregator.RunCompleteArgsAttachments.Count, "RunCompleteArgsAttachments List must have data."); - Assert.AreEqual(1, aggregator.RunCompleteArgsAttachments.Count, "RunCompleteArgsAttachments List must have data."); + var attachmentSet2 = new Collection + { + new(new Uri("x://hello2"), "hello2") + }; - var attachmentSet2 = new Collection(); - attachmentSet2.Add(new AttachmentSet(new Uri("x://hello2"), "hello2")); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, attachmentSet2, null, null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, attachmentSet2); + Assert.AreEqual(2, aggregator.RunCompleteArgsAttachments.Count, "RunCompleteArgsAttachments List must have aggregated data."); + } - Assert.AreEqual(2, aggregator.RunCompleteArgsAttachments.Count, "RunCompleteArgsAttachments List must have aggregated data."); - } + [TestMethod] + public void AggregateShouldAggregateRunContextAttachmentsCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void AggregateShouldAggregateRunContextAttachmentsCorrectly() + var attachmentSet1 = new Collection { - var aggregator = new ParallelRunDataAggregator(); + new(new Uri("x://hello1"), "hello1") + }; - var attachmentSet1 = new Collection(); - attachmentSet1.Add(new AttachmentSet(new Uri("x://hello1"), "hello1")); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, attachmentSet1, null, null, null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, attachmentSet1, null); + Assert.AreEqual(1, aggregator.RunContextAttachments.Count, "RunContextAttachments List must have data."); - Assert.AreEqual(1, aggregator.RunContextAttachments.Count, "RunContextAttachments List must have data."); + var attachmentSet2 = new Collection + { + new(new Uri("x://hello2"), "hello2") + }; - var attachmentSet2 = new Collection(); - attachmentSet2.Add(new AttachmentSet(new Uri("x://hello2"), "hello2")); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, attachmentSet2, null, null, null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, attachmentSet2, null); + Assert.AreEqual(2, aggregator.RunContextAttachments.Count, "RunContextAttachments List must have aggregated data."); + } - Assert.AreEqual(2, aggregator.RunContextAttachments.Count, "RunContextAttachments List must have aggregated data."); - } + [TestMethod] + public void AggregateShouldAggregateInvokedCollectorsCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void AggregateShouldAggregateAbortedAndCanceledCorrectly() + var invokedDataCollectors = new Collection() { - var aggregator = new ParallelRunDataAggregator(); + new(new Uri("datacollector://sample"),"sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location,false) + }; + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null, invokedDataCollectors, null); + Assert.AreEqual(1, aggregator.InvokedDataCollectors.Count, "InvokedDataCollectors List must have data."); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + var invokedDataCollectors2 = new Collection() + { + new(new Uri("datacollector://sample2"),"sample2", typeof(int).AssemblyQualifiedName!, typeof(int).Assembly.Location,false) + }; + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null, invokedDataCollectors2, null); + Assert.AreEqual(2, aggregator.InvokedDataCollectors.Count, "InvokedDataCollectors List must have aggregated data."); + + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null, invokedDataCollectors, null); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null, invokedDataCollectors2, null); + + Assert.AreEqual(2, aggregator.InvokedDataCollectors.Count, "InvokedDataCollectors List must have aggregated data."); + Assert.AreEqual(invokedDataCollectors[0].AssemblyQualifiedName, aggregator.InvokedDataCollectors[0].AssemblyQualifiedName); + Assert.AreEqual(invokedDataCollectors[0].FilePath, aggregator.InvokedDataCollectors[0].FilePath); + Assert.AreEqual(invokedDataCollectors[0].Uri, aggregator.InvokedDataCollectors[0].Uri); + Assert.AreEqual(invokedDataCollectors2[0].AssemblyQualifiedName, aggregator.InvokedDataCollectors[1].AssemblyQualifiedName); + Assert.AreEqual(invokedDataCollectors2[0].FilePath, aggregator.InvokedDataCollectors[1].FilePath); + Assert.AreEqual(invokedDataCollectors2[0].Uri, aggregator.InvokedDataCollectors[1].Uri); + } - Assert.IsFalse(aggregator.IsAborted, "Aborted must be false"); + [TestMethod] + public void AggregateShouldAggregateAbortedAndCanceledCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - Assert.IsFalse(aggregator.IsCanceled, "Canceled must be false"); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: true, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + Assert.IsFalse(aggregator.IsAborted, "Aborted must be false"); - Assert.IsTrue(aggregator.IsAborted, "Aborted must be true"); + Assert.IsFalse(aggregator.IsCanceled, "Canceled must be false"); - Assert.IsFalse(aggregator.IsCanceled, "Canceled must still be false"); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: true, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: true, runContextAttachments: null, - runCompleteArgsAttachments: null); + Assert.IsTrue(aggregator.IsAborted, "Aborted must be true"); - Assert.IsTrue(aggregator.IsAborted, "Aborted must continue be true"); + Assert.IsFalse(aggregator.IsCanceled, "Canceled must still be false"); - Assert.IsTrue(aggregator.IsCanceled, "Canceled must be true"); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: true, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + Assert.IsTrue(aggregator.IsAborted, "Aborted must continue be true"); - Assert.IsTrue(aggregator.IsAborted, "Aborted must continue be true"); + Assert.IsTrue(aggregator.IsCanceled, "Canceled must be true"); - Assert.IsTrue(aggregator.IsCanceled, "Canceled must continue be true"); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - } + Assert.IsTrue(aggregator.IsAborted, "Aborted must continue be true"); - [TestMethod] - public void AggregateShouldAggregateTimeSpanCorrectly() - { - var aggregator = new ParallelRunDataAggregator(); + Assert.IsTrue(aggregator.IsCanceled, "Canceled must continue be true"); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + } - Assert.AreEqual(TimeSpan.Zero, aggregator.ElapsedTime, "Timespan must be zero"); + [TestMethod] + public void AggregateShouldAggregateTimeSpanCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(100), isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - Assert.AreEqual(TimeSpan.FromMilliseconds(100), aggregator.ElapsedTime, "Timespan must be 100ms"); + Assert.AreEqual(TimeSpan.Zero, aggregator.ElapsedTime, "Timespan must be zero"); + aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(100), isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(200), isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + Assert.AreEqual(TimeSpan.FromMilliseconds(100), aggregator.ElapsedTime, "Timespan must be 100ms"); - Assert.AreEqual(TimeSpan.FromMilliseconds(200), aggregator.ElapsedTime, "Timespan should be Max of all 200ms"); - aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(150), isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(200), isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - Assert.AreEqual(TimeSpan.FromMilliseconds(200), aggregator.ElapsedTime, "Timespan should be Max of all i.e. 200ms"); - } + Assert.AreEqual(TimeSpan.FromMilliseconds(200), aggregator.ElapsedTime, "Timespan should be Max of all 200ms"); - [TestMethod] - public void AggregateShouldAggregateExceptionsCorrectly() - { - var aggregator = new ParallelRunDataAggregator(); + aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(150), isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregator.Aggregate(null, null, exception: null, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + Assert.AreEqual(TimeSpan.FromMilliseconds(200), aggregator.ElapsedTime, "Timespan should be Max of all i.e. 200ms"); + } - Assert.IsNull(aggregator.GetAggregatedException(), "Aggregated exception must be null"); + [TestMethod] + public void AggregateShouldAggregateExceptionsCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - var exception1 = new NotImplementedException(); - aggregator.Aggregate(null, null, exception: exception1, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + aggregator.Aggregate(null, null, exception: null, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - var aggregatedException = aggregator.GetAggregatedException() as AggregateException; - Assert.IsNotNull(aggregatedException, "Aggregated exception must NOT be null"); - Assert.IsNotNull(aggregatedException.InnerExceptions, "Inner exception list must NOT be null"); - Assert.AreEqual(1, aggregatedException.InnerExceptions.Count, "Inner exception list must have one element"); - Assert.AreEqual(exception1, aggregatedException.InnerExceptions[0], "Inner exception must be the one set."); + Assert.IsNull(aggregator.GetAggregatedException(), "Aggregated exception must be null"); - var exception2 = new NotSupportedException(); - aggregator.Aggregate(null, null, exception: exception2, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, - runCompleteArgsAttachments: null); + var exception1 = new NotImplementedException(); + aggregator.Aggregate(null, null, exception: exception1, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregatedException = aggregator.GetAggregatedException() as AggregateException; - Assert.IsNotNull(aggregatedException, "Aggregated exception must NOT be null"); - Assert.IsNotNull(aggregatedException.InnerExceptions, "Inner exception list must NOT be null"); - Assert.AreEqual(2, aggregatedException.InnerExceptions.Count, "Inner exception list must have one element"); - Assert.AreEqual(exception2, aggregatedException.InnerExceptions[1], "Inner exception must be the one set."); - } + var aggregatedException = aggregator.GetAggregatedException() as AggregateException; + Assert.IsNotNull(aggregatedException, "Aggregated exception must NOT be null"); + Assert.IsNotNull(aggregatedException.InnerExceptions, "Inner exception list must NOT be null"); + Assert.AreEqual(1, aggregatedException.InnerExceptions.Count, "Inner exception list must have one element"); + Assert.AreEqual(exception1, aggregatedException.InnerExceptions[0], "Inner exception must be the one set."); - [TestMethod] - public void AggregateShouldAggregateExecutorUrisCorrectly() - { - var aggregator = new ParallelRunDataAggregator(); + var exception2 = new NotSupportedException(); + aggregator.Aggregate(null, null, exception: exception2, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null, + runCompleteArgsAttachments: null, invokedDataCollectors: null, discoveredExtensions: null); - aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null); + aggregatedException = aggregator.GetAggregatedException() as AggregateException; + Assert.IsNotNull(aggregatedException, "Aggregated exception must NOT be null"); + Assert.IsNotNull(aggregatedException.InnerExceptions, "Inner exception list must NOT be null"); + Assert.AreEqual(2, aggregatedException.InnerExceptions.Count, "Inner exception list must have one element"); + Assert.AreEqual(exception2, aggregatedException.InnerExceptions[1], "Inner exception must be the one set."); + } - Assert.AreEqual(0, aggregator.ExecutorUris.Count, "ExecutorUris List must not have data."); + [TestMethod] + public void AggregateShouldAggregateExecutorUrisCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - var uri1 = "x://hello1"; - aggregator.Aggregate(null, new List() { uri1 }, null, TimeSpan.Zero, false, false, null, null); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null, null, null); - Assert.AreEqual(1, aggregator.ExecutorUris.Count, "ExecutorUris List must have data."); - Assert.IsTrue(aggregator.ExecutorUris.Contains(uri1), "ExecutorUris List must have correct data."); + Assert.AreEqual(0, aggregator.ExecutorUris.Count, "ExecutorUris List must not have data."); - var uri2 = "x://hello2"; - aggregator.Aggregate(null, new List() { uri2 }, null, TimeSpan.Zero, false, false, null, null); + var uri1 = "x://hello1"; + aggregator.Aggregate(null, new List() { uri1 }, null, TimeSpan.Zero, false, false, null, null, null, null); - Assert.AreEqual(2, aggregator.ExecutorUris.Count, "ExecutorUris List must have aggregated data."); - Assert.IsTrue(aggregator.ExecutorUris.Contains(uri2), "ExecutorUris List must have correct data."); - } + Assert.AreEqual(1, aggregator.ExecutorUris.Count, "ExecutorUris List must have data."); + Assert.IsTrue(aggregator.ExecutorUris.Contains(uri1), "ExecutorUris List must have correct data."); - [TestMethod] - public void AggregateShouldAggregateRunStatsCorrectly() - { - var aggregator = new ParallelRunDataAggregator(); - - aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null); - - var runStats = aggregator.GetAggregatedRunStats(); - Assert.AreEqual(0, runStats.ExecutedTests, "RunStats must not have data."); - - var stats1 = new Dictionary(); - stats1.Add(TestOutcome.Passed, 2); - stats1.Add(TestOutcome.Failed, 3); - stats1.Add(TestOutcome.Skipped, 1); - stats1.Add(TestOutcome.NotFound, 4); - stats1.Add(TestOutcome.None, 2); - - aggregator.Aggregate(new TestRunStatistics(12, stats1), null, null, TimeSpan.Zero, false, false, null, null); - - runStats = aggregator.GetAggregatedRunStats(); - Assert.AreEqual(12, runStats.ExecutedTests, "RunStats must have aggregated data."); - Assert.AreEqual(2, runStats.Stats[TestOutcome.Passed], "RunStats must have aggregated data."); - Assert.AreEqual(3, runStats.Stats[TestOutcome.Failed], "RunStats must have aggregated data."); - Assert.AreEqual(1, runStats.Stats[TestOutcome.Skipped], "RunStats must have aggregated data."); - Assert.AreEqual(4, runStats.Stats[TestOutcome.NotFound], "RunStats must have aggregated data."); - Assert.AreEqual(2, runStats.Stats[TestOutcome.None], "RunStats must have aggregated data."); - - - var stats2 = new Dictionary(); - stats2.Add(TestOutcome.Passed, 3); - stats2.Add(TestOutcome.Failed, 2); - stats2.Add(TestOutcome.Skipped, 2); - stats2.Add(TestOutcome.NotFound, 1); - stats2.Add(TestOutcome.None, 3); - - aggregator.Aggregate(new TestRunStatistics(11, stats2), null, null, TimeSpan.Zero, false, false, null, null); - - runStats = aggregator.GetAggregatedRunStats(); - Assert.AreEqual(23, runStats.ExecutedTests, "RunStats must have aggregated data."); - Assert.AreEqual(5, runStats.Stats[TestOutcome.Passed], "RunStats must have aggregated data."); - Assert.AreEqual(5, runStats.Stats[TestOutcome.Failed], "RunStats must have aggregated data."); - Assert.AreEqual(3, runStats.Stats[TestOutcome.Skipped], "RunStats must have aggregated data."); - Assert.AreEqual(5, runStats.Stats[TestOutcome.NotFound], "RunStats must have aggregated data."); - Assert.AreEqual(5, runStats.Stats[TestOutcome.None], "RunStats must have aggregated data."); - } - - [TestMethod] - public void AggregateRunDataMetricsShouldAggregateMetricsCorrectly() - { - var aggregator = new ParallelRunDataAggregator(); + var uri2 = "x://hello2"; + aggregator.Aggregate(null, new List() { uri2 }, null, TimeSpan.Zero, false, false, null, null, null, null); - aggregator.AggregateRunDataMetrics(null); + Assert.AreEqual(2, aggregator.ExecutorUris.Count, "ExecutorUris List must have aggregated data."); + Assert.IsTrue(aggregator.ExecutorUris.Contains(uri2), "ExecutorUris List must have correct data."); + } - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - Assert.AreEqual(0, runMetrics.Count); - } + [TestMethod] + public void AggregateShouldAggregateRunStatsCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void AggregateRunDataMetricsShouldAddTotalTestsRun() - { - var aggregator = new ParallelRunDataAggregator(); + aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null, null, null); - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TotalTestsRanByAdapter, 2); + var runStats = aggregator.GetAggregatedRunStats(); + Assert.AreEqual(0, runStats.ExecutedTests, "RunStats must not have data."); - aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + var stats1 = new Dictionary + { + { TestOutcome.Passed, 2 }, + { TestOutcome.Failed, 3 }, + { TestOutcome.Skipped, 1 }, + { TestOutcome.NotFound, 4 }, + { TestOutcome.None, 2 } + }; - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + aggregator.Aggregate(new TestRunStatistics(12, stats1), null, null, TimeSpan.Zero, false, false, null, null, null, null); - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TotalTestsRanByAdapter, out var value)); - Assert.AreEqual(4, Convert.ToInt32(value)); - } + runStats = aggregator.GetAggregatedRunStats(); + Assert.AreEqual(12, runStats.ExecutedTests, "RunStats must have aggregated data."); + Assert.AreEqual(2, runStats.Stats![TestOutcome.Passed], "RunStats must have aggregated data."); + Assert.AreEqual(3, runStats.Stats[TestOutcome.Failed], "RunStats must have aggregated data."); + Assert.AreEqual(1, runStats.Stats[TestOutcome.Skipped], "RunStats must have aggregated data."); + Assert.AreEqual(4, runStats.Stats[TestOutcome.NotFound], "RunStats must have aggregated data."); + Assert.AreEqual(2, runStats.Stats[TestOutcome.None], "RunStats must have aggregated data."); - [TestMethod] - public void AggregateRunDataMetricsShouldAddTimeTakenToRunTests() + + var stats2 = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); + { TestOutcome.Passed, 3 }, + { TestOutcome.Failed, 2 }, + { TestOutcome.Skipped, 2 }, + { TestOutcome.NotFound, 1 }, + { TestOutcome.None, 3 } + }; + + aggregator.Aggregate(new TestRunStatistics(11, stats2), null, null, TimeSpan.Zero, false, false, null, null, null, null); + + runStats = aggregator.GetAggregatedRunStats(); + Assert.AreEqual(23, runStats.ExecutedTests, "RunStats must have aggregated data."); + Assert.AreEqual(5, runStats.Stats![TestOutcome.Passed], "RunStats must have aggregated data."); + Assert.AreEqual(5, runStats.Stats[TestOutcome.Failed], "RunStats must have aggregated data."); + Assert.AreEqual(3, runStats.Stats[TestOutcome.Skipped], "RunStats must have aggregated data."); + Assert.AreEqual(5, runStats.Stats[TestOutcome.NotFound], "RunStats must have aggregated data."); + Assert.AreEqual(5, runStats.Stats[TestOutcome.None], "RunStats must have aggregated data."); + } - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, .02091); + [TestMethod] + public void AggregateRunDataMetricsShouldAggregateMetricsCorrectly() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(null); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.AreEqual(0, runMetrics.Count); + } - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, out var value)); - Assert.AreEqual(.04182, value); - } + [TestMethod] + public void AggregateRunDataMetricsShouldAddTotalTestsRun() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void AggregateRunDataMetricsShouldAddTimeTakenByAllAdapters() + var dict = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); + { TelemetryDataConstants.TotalTestsRanByAdapter, 2 } + }; - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, .02091); + aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TotalTestsRanByAdapter, out var value)); + Assert.AreEqual(4, Convert.ToInt32(value, CultureInfo.InvariantCulture)); + } - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, out var value)); - Assert.AreEqual(.04182, value); - } + [TestMethod] + public void AggregateRunDataMetricsShouldAddTimeTakenToRunTests() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void AggregateRunDataMetricsShouldNotAggregateRunState() + var dict = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); + { TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, .02091 } + }; - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.RunState, "Completed"); + aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, out var value)); + Assert.AreEqual(.04182, value); + } - Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.RunState, out var value)); - } + [TestMethod] + public void AggregateRunDataMetricsShouldAddTimeTakenByAllAdapters() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void GetAggregatedRunDataMetricsShouldReturnEmptyIfMetricAggregatorIsEmpty() + var dict = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); + { TelemetryDataConstants.TimeTakenByAllAdaptersInSec, .02091 } + }; + + aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(dict); - var dict = new Dictionary(); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - aggregator.AggregateRunDataMetrics(dict); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, out var value)); + Assert.AreEqual(.04182, value); + } - Assert.AreEqual(0, runMetrics.Count); - } + [TestMethod] + public void AggregateRunDataMetricsShouldNotAggregateRunState() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void GetAggregatedRunDataMetricsShouldReturnEmptyIfMetricsIsNull() + var dict = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); + { TelemetryDataConstants.RunState, "Completed" } + }; - var dict = new Dictionary(); + aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(null); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.RunState, out _)); + } - Assert.AreEqual(0, runMetrics.Count); - } + [TestMethod] + public void GetAggregatedRunDataMetricsShouldReturnEmptyIfMetricAggregatorIsEmpty() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void GetRunDataMetricsShouldAddTotalAdaptersUsedIfMetricsIsNotEmpty() - { - var aggregator = new ParallelRunDataAggregator(); + var dict = new Dictionary(); - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TotalTestsRanByAdapter, 2); + aggregator.AggregateRunDataMetrics(dict); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + Assert.AreEqual(0, runMetrics.Count); + } + + [TestMethod] + public void GetAggregatedRunDataMetricsShouldReturnEmptyIfMetricsIsNull() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); + _ = new Dictionary(); + + aggregator.AggregateRunDataMetrics(null); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.AreEqual(0, runMetrics.Count); + } - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, out var value)); - Assert.AreEqual(1, value); - } + [TestMethod] + public void GetRunDataMetricsShouldAddTotalAdaptersUsedIfMetricsIsNotEmpty() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void GetRunDataMetricsShouldAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() + var dict = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); + { TelemetryDataConstants.TotalTestsRanByAdapter, 2 } + }; - var dict = new Dictionary(); - dict.Add(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter + "executor:MSTestV1", .02091); - dict.Add(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter + "executor:MSTestV2", .02091); + aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, out var value)); + Assert.AreEqual(1, value); + } - Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, out var value)); - Assert.AreEqual(2, value); - } + [TestMethod] + public void GetRunDataMetricsShouldAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); - [TestMethod] - public void GetRunDataMetricsShouldNotAddTotalAdaptersUsedIfMetricsIsEmpty() + var dict = new Dictionary { - var aggregator = new ParallelRunDataAggregator(); - var dict = new Dictionary(); + { TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter + "executor:MSTestV1", .02091 }, + { TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter + "executor:MSTestV2", .02091 } + }; - aggregator.AggregateRunDataMetrics(dict); + aggregator.AggregateRunDataMetrics(dict); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); - Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, out var value)); - } + Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, out var value)); + Assert.AreEqual(2, value); + } - [TestMethod] - public void GetRunDataMetricsShouldNotAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() - { - var aggregator = new ParallelRunDataAggregator(); - var dict = new Dictionary(); + [TestMethod] + public void GetRunDataMetricsShouldNotAddTotalAdaptersUsedIfMetricsIsEmpty() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); + var dict = new Dictionary(); + + aggregator.AggregateRunDataMetrics(dict); - aggregator.AggregateRunDataMetrics(dict); + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, out _)); + } + + [TestMethod] + public void GetRunDataMetricsShouldNotAddNumberOfAdapterDiscoveredIfMetricsIsEmpty() + { + var aggregator = new ParallelRunDataAggregator(Constants.EmptyRunSettings); + var dict = new Dictionary(); - var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + aggregator.AggregateRunDataMetrics(dict); - Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, out var value)); - } + var runMetrics = aggregator.GetAggregatedRunDataMetrics(); + Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, out _)); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunEventsHandlerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunEventsHandlerTests.cs index 11e65f0c84..8fead4e48b 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunEventsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/Parallel/ParallelRunEventsHandlerTests.cs @@ -1,204 +1,200 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ParallelRunEventsHandlerTests { - using System; - using System.Collections.Generic; - - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class ParallelRunEventsHandlerTests + private readonly ParallelRunEventsHandler _parallelRunEventsHandler; + private readonly Mock _mockProxyExecutionManager; + private readonly Mock _mockTestRunEventsHandler; + private readonly Mock _mockParallelProxyExecutionManager; + private readonly Mock _mockDataSerializer; + private readonly Mock _mockRequestData; + private readonly int _protocolVersion; + + public ParallelRunEventsHandlerTests() { - private ParallelRunEventsHandler parallelRunEventsHandler; - - private Mock mockProxyExecutionManager; - - private Mock mockTestRunEventsHandler; - - private Mock mockParallelProxyExecutionManager; - - private Mock mockDataSerializer; - - private Mock mockRequestData; - - [TestInitialize] - public void TestInit() - { - this.mockProxyExecutionManager = new Mock(); - this.mockTestRunEventsHandler = new Mock(); - this.mockParallelProxyExecutionManager = new Mock(); - this.mockDataSerializer = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); - - this.parallelRunEventsHandler = new ParallelRunEventsHandler(this.mockRequestData.Object, this.mockProxyExecutionManager.Object, - this.mockTestRunEventsHandler.Object, this.mockParallelProxyExecutionManager.Object, - new ParallelRunDataAggregator(), this.mockDataSerializer.Object); - } + _mockProxyExecutionManager = new Mock(); + _mockTestRunEventsHandler = new Mock(); + _mockParallelProxyExecutionManager = new Mock(); + _mockDataSerializer = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _protocolVersion = 0; + _mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(new ProtocolConfig { Version = _protocolVersion }); + + _parallelRunEventsHandler = new ParallelRunEventsHandler(_mockRequestData.Object, _mockProxyExecutionManager.Object, + _mockTestRunEventsHandler.Object, _mockParallelProxyExecutionManager.Object, + new ParallelRunDataAggregator(Constants.EmptyRunSettings), _mockDataSerializer.Object); + } - [TestMethod] - public void HandleRawMessageShouldSendStatsChangeRawMessageToRunEventsHandler() - { - string payload = "RunStats"; - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.TestRunStatsChange, Payload = payload }); + [TestMethod] + public void HandleRawMessageShouldSendStatsChangeRawMessageToRunEventsHandler() + { + string payload = "RunStats"; + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.TestRunStatsChange, Payload = payload }); - this.parallelRunEventsHandler.HandleRawMessage(payload); + _parallelRunEventsHandler.HandleRawMessage(payload); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); - } + _mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldSendLoggerRawMessageToRunEventsHandler() - { - string payload = "LogMessage"; - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.TestMessage, Payload = payload }); + [TestMethod] + public void HandleRawMessageShouldSendLoggerRawMessageToRunEventsHandler() + { + string payload = "LogMessage"; + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.TestMessage, Payload = payload }); - this.parallelRunEventsHandler.HandleRawMessage(payload); + _parallelRunEventsHandler.HandleRawMessage(payload); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); - } + _mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldNotSendRunCompleteEventRawMessageToRunEventsHandler() - { - string payload = "ExecComplete"; - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) - .Returns(new Message() { MessageType = MessageType.ExecutionComplete, Payload = payload }); + [TestMethod] + public void HandleRawMessageShouldNotSendRunCompleteEventRawMessageToRunEventsHandler() + { + string payload = "ExecComplete"; + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())) + .Returns(new Message() { MessageType = MessageType.ExecutionComplete, Payload = payload }); - this.parallelRunEventsHandler.HandleRawMessage(payload); + _parallelRunEventsHandler.HandleRawMessage(payload); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); - } + _mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); + } - [TestMethod] - public void HandleLogMessageShouldJustPassOnTheEventToRunEventsHandler() - { - string log = "Hello"; - this.parallelRunEventsHandler.HandleLogMessage(TestMessageLevel.Error, log); + [TestMethod] + public void HandleLogMessageShouldJustPassOnTheEventToRunEventsHandler() + { + string log = "Hello"; + _parallelRunEventsHandler.HandleLogMessage(TestMessageLevel.Error, log); - this.mockTestRunEventsHandler.Verify(mt => - mt.HandleLogMessage(TestMessageLevel.Error, log), Times.Once); - } + _mockTestRunEventsHandler.Verify(mt => + mt.HandleLogMessage(TestMessageLevel.Error, log), Times.Once); + } - [TestMethod] - public void HandleRunStatsChangeShouldJustPassOnTheEventToRunEventsHandler() - { - var eventArgs = new TestRunChangedEventArgs(null, null, null); - this.parallelRunEventsHandler.HandleTestRunStatsChange(eventArgs); + [TestMethod] + public void HandleRunStatsChangeShouldJustPassOnTheEventToRunEventsHandler() + { + var eventArgs = new TestRunChangedEventArgs(null, null, null); + _parallelRunEventsHandler.HandleTestRunStatsChange(eventArgs); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(eventArgs), Times.Once); - } + _mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(eventArgs), Times.Once); + } - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldJustPassOnTheEventToRunEventsHandler() - { - var testProcessStartInfo = new TestProcessStartInfo(); - this.parallelRunEventsHandler.LaunchProcessWithDebuggerAttached(testProcessStartInfo); + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldJustPassOnTheEventToRunEventsHandler() + { + var testProcessStartInfo = new TestProcessStartInfo(); + _parallelRunEventsHandler.LaunchProcessWithDebuggerAttached(testProcessStartInfo); - this.mockTestRunEventsHandler.Verify(mt => mt.LaunchProcessWithDebuggerAttached(testProcessStartInfo), Times.Once); - } + _mockTestRunEventsHandler.Verify(mt => mt.LaunchProcessWithDebuggerAttached(testProcessStartInfo), Times.Once); + } - [TestMethod] - public void HandleRunCompleteShouldNotCallLastChunkResultsIfNotPresent() - { - var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.Zero); + [TestMethod] + public void HandleRunCompleteShouldNotCallLastChunkResultsIfNotPresent() + { + var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.Zero); - this.mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(false); + _mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(false); - this.parallelRunEventsHandler.HandleTestRunComplete(completeArgs, null, null, null); + _parallelRunEventsHandler.HandleTestRunComplete(completeArgs, null, null, null); - // Raw message must be sent - this.mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); + // Raw message must be sent + _mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Never); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(null), Times.Never); + _mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(null), Times.Never); - this.mockParallelProxyExecutionManager.Verify(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null), Times.Once); - } + _mockParallelProxyExecutionManager.Verify(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null), Times.Once); + } - [TestMethod] - public void HandleRunCompleteShouldCallLastChunkResultsIfPresent() - { - string payload = "RunStats"; - var lastChunk = new TestRunChangedEventArgs(null, null, null); - var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.Zero); + [TestMethod] + public void HandleRunCompleteShouldCallLastChunkResultsIfPresent() + { + string payload = "RunStats"; + var lastChunk = new TestRunChangedEventArgs(null, null, null); + var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.Zero); - this.mockDataSerializer.Setup(mds => mds.SerializePayload(MessageType.TestRunStatsChange, lastChunk)) - .Returns(payload); + _mockDataSerializer.Setup(mds => mds.SerializePayload(MessageType.TestRunStatsChange, lastChunk, _protocolVersion)) + .Returns(payload); - this.mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(false); + _mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(false); - this.parallelRunEventsHandler.HandleTestRunComplete(completeArgs, lastChunk, null, null); + _parallelRunEventsHandler.HandleTestRunComplete(completeArgs, lastChunk, null, null); - // Raw message must be sent - this.mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); + // Raw message must be sent + _mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(payload), Times.Once); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(lastChunk), Times.Once); + _mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(lastChunk), Times.Once); - this.mockParallelProxyExecutionManager.Verify(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null), Times.Once); - } + _mockParallelProxyExecutionManager.Verify(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null), Times.Once); + } - [TestMethod] - public void HandleRunCompleteShouldCallTestRunCompleteOnActualHandlerIfParallelMaangerReturnsCompleteAsTrue() - { - string payload = "ExecComplete"; - var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.Zero); + [TestMethod] + public void HandleRunCompleteShouldCallTestRunCompleteOnActualHandlerIfParallelMaangerReturnsCompleteAsTrue() + { + string payload = "ExecComplete"; + var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.Zero); - this.mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(true); + _mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(true); - this.mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.ExecutionComplete)).Returns(payload); + _mockDataSerializer.Setup(mds => mds.SerializeMessage(MessageType.ExecutionComplete)).Returns(payload); - this.parallelRunEventsHandler.HandleTestRunComplete(completeArgs, null, null, null); + _parallelRunEventsHandler.HandleTestRunComplete(completeArgs, null, null, null); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(null), Times.Never); + _mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunStatsChange(null), Times.Never); - this.mockParallelProxyExecutionManager.Verify(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null), Times.Once); + _mockParallelProxyExecutionManager.Verify(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null), Times.Once); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Once); + _mockTestRunEventsHandler.Verify(mt => mt.HandleRawMessage(It.IsAny()), Times.Once); - this.mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>()), Times.Once); - } + _mockTestRunEventsHandler.Verify(mt => mt.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>()), Times.Once); + } - [TestMethod] - public void HandleRunCompleteShouldCollectMetrics() - { - var mockMetricsCollector = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + [TestMethod] + public void HandleRunCompleteShouldCollectMetrics() + { + var mockMetricsCollector = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.Zero); + var completeArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.Zero); - this.mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( - this.mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(true); + _mockParallelProxyExecutionManager.Setup(mp => mp.HandlePartialRunComplete( + _mockProxyExecutionManager.Object, completeArgs, null, null, null)).Returns(true); - // Act - this.parallelRunEventsHandler.HandleTestRunComplete(completeArgs, null, null, null); + // Act + _parallelRunEventsHandler.HandleTestRunComplete(completeArgs, null, null, null); - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.RunState, It.IsAny()), Times.Once); - } + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.RunState, It.IsAny()), Times.Once); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyBaseManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyBaseManagerTests.cs index 64f5ace172..f9483d82bb 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyBaseManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyBaseManagerTests.cs @@ -1,125 +1,130 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Net; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ProxyBaseManagerTests { - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System.Collections.Generic; - using System.Net; - using System.Threading; - using System.Threading.Tasks; - - [TestClass] - public class ProxyBaseManagerTests + private const int Clientprocessexitwait = 10 * 1000; + private readonly ProtocolConfig _protocolConfig = new() { Version = 2 }; + private readonly Mock _mockRequestData; + private readonly Mock _mockFileHelper; + private readonly DiscoveryDataAggregator _discoveryDataAggregator; + + protected readonly Mock _mockTestHostManager; + + private Mock? _mockCommunicationEndpoint; + private ITestRequestSender? _testRequestSender; + + protected Mock _mockDataSerializer; + protected Mock _mockChannel; + + public ProxyBaseManagerTests() { - private const int CLIENTPROCESSEXITWAIT = 10 * 1000; - private Mock mockCommunicationEndpoint; - private ITestRequestSender testRequestSender; - - ProtocolConfig protocolConfig = new ProtocolConfig { Version = 2 }; - private readonly Mock mockRequestData; - protected readonly Mock mockTestHostManager; - protected Mock mockDataSerializer; - protected Mock mockChannel; - private Mock mockFileHelper; - - public ProxyBaseManagerTests() - { - this.mockTestHostManager = new Mock(); - this.mockDataSerializer = new Mock(); - this.mockRequestData = new Mock(); - this.mockChannel = new Mock(); - this.mockFileHelper = new Mock(); - - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new Mock().Object); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(null)).Returns(new Message()); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(string.Empty)).Returns(new Message()); - this.mockTestHostManager.SetupGet(th => th.Shared).Returns(true); - this.mockTestHostManager.Setup( - m => m.GetTestHostProcessStartInfo( - It.IsAny>(), - It.IsAny>(), - It.IsAny())) - .Returns(new TestProcessStartInfo()); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) - .Callback( - () => - { - this.mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty)); - }) - .Returns(Task.FromResult(true)); - } - - private void SetupAndInitializeTestRequestSender() - { - var connectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":0", - Role = ConnectionRole.Client, - Transport = Transport.Sockets - }; - this.mockCommunicationEndpoint = new Mock(); - this.mockDataSerializer = new Mock(); - this.testRequestSender = new TestRequestSender(this.mockCommunicationEndpoint.Object, connectionInfo, this.mockDataSerializer.Object, this.protocolConfig, CLIENTPROCESSEXITWAIT); - this.mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => - { - this.mockCommunicationEndpoint.Raise( - s => s.Connected += null, - this.mockCommunicationEndpoint.Object, - new ConnectedEventArgs(this.mockChannel.Object)); - }); - this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, this.protocolConfig.Version); - - this.testRequestSender.InitializeCommunication(); - } - - public void SetupChannelMessage(string messageType, string returnMessageType, TPayload returnPayload) - { - this.mockChannel.Setup(mc => mc.Send(It.Is(s => s.Contains(messageType)))) - .Callback(() => this.mockChannel.Raise(c => c.MessageReceived += null, this.mockChannel.Object, new MessageReceivedEventArgs { Data = messageType })); + _mockTestHostManager = new Mock(); + _mockDataSerializer = new Mock(); + _mockRequestData = new Mock(); + _mockChannel = new Mock(); + _mockChannel.Setup(mc => mc.MessageReceived).Returns(new TrackableEvent()); + _mockFileHelper = new Mock(); + _discoveryDataAggregator = new(); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny())).Returns(messageType); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny(), It.IsAny())).Returns(messageType); - this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.Is(s => s.Equals(messageType)))).Returns(new Message { MessageType = returnMessageType }); - this.mockDataSerializer.Setup(ds => ds.DeserializePayload(It.Is(m => m.MessageType.Equals(messageType)))).Returns(returnPayload); - } + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new Mock().Object); + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(null!)).Returns(new Message()); + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(string.Empty)).Returns(new Message()); + _mockTestHostManager.SetupGet(th => th.Shared).Returns(true); + _mockTestHostManager.Setup( + m => m.GetTestHostProcessStartInfo( + It.IsAny>(), + It.IsAny>(), + It.IsAny())) + .Returns(new TestProcessStartInfo()); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) + .Callback( + () => _mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty))) + .Returns(Task.FromResult(true)); + } - public void RaiseMessageReceived(string data) + [MemberNotNull(nameof(_testRequestSender), nameof(_testRequestSender))] + private void SetupAndInitializeTestRequestSender() + { + var connectionInfo = new TestHostConnectionInfo { - this.mockChannel.Raise(c => c.MessageReceived += null, this.mockChannel.Object, - new MessageReceivedEventArgs { Data = data }); - } + Endpoint = IPAddress.Loopback + ":0", + Role = ConnectionRole.Client, + Transport = Transport.Sockets + }; + _mockCommunicationEndpoint = new Mock(); + _testRequestSender = new TestRequestSender(_mockCommunicationEndpoint.Object, connectionInfo, _mockDataSerializer.Object, _protocolConfig, Clientprocessexitwait); + _mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => _mockCommunicationEndpoint.Raise( + s => s.Connected += null, + _mockCommunicationEndpoint.Object, + new ConnectedEventArgs(_mockChannel.Object))); + SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, _protocolConfig.Version); - protected ProxyDiscoveryManager GetProxyDiscoveryManager() - { - this.SetupAndInitializeTestRequestSender(); - var testDiscoveryManager = new ProxyDiscoveryManager( - mockRequestData.Object, - testRequestSender, - mockTestHostManager.Object, - mockDataSerializer.Object, - this.mockFileHelper.Object); - - return testDiscoveryManager; - } - - internal ProxyExecutionManager GetProxyExecutionManager() - { - this.SetupAndInitializeTestRequestSender(); - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - var testExecutionManager = new ProxyExecutionManager(mockRequestData.Object, testRequestSender, - mockTestHostManager.Object, mockDataSerializer.Object, this.mockFileHelper.Object); + _testRequestSender.InitializeCommunication(); + } + + public void SetupChannelMessage(string messageType, string returnMessageType, TPayload returnPayload) + { + _mockChannel.Setup(mc => mc.Send(It.Is(s => s.Contains(messageType)))) + .Callback(() => _mockChannel.Object.MessageReceived.Notify(_mockChannel.Object, new MessageReceivedEventArgs { Data = messageType }, "ProxyBaseManagerTests.SetupChannelMessage()")); + + _mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny())).Returns(messageType); + _mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny(), It.IsAny())).Returns(messageType); + _mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.Is(s => s.Equals(messageType)))).Returns(new Message { MessageType = returnMessageType }); + _mockDataSerializer.Setup(ds => ds.DeserializePayload(It.Is(m => string.Equals(m.MessageType, messageType)))).Returns(returnPayload); + } + + public void RaiseMessageReceived(string data) + { + _mockChannel.Object.MessageReceived.Notify(_mockChannel.Object, + new MessageReceivedEventArgs { Data = data }, + "ProxyBaseManagerTests.RaiseMessageReceived()"); + } + + protected ProxyDiscoveryManager GetProxyDiscoveryManager() + { + SetupAndInitializeTestRequestSender(); + var testDiscoveryManager = new ProxyDiscoveryManager( + _mockRequestData.Object, + _testRequestSender, + _mockTestHostManager.Object, + Framework.DefaultFramework, + _discoveryDataAggregator, + _mockDataSerializer.Object, + _mockFileHelper.Object); + + return testDiscoveryManager; + } + + internal ProxyExecutionManager GetProxyExecutionManager() + { + SetupAndInitializeTestRequestSender(); + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + var testExecutionManager = new ProxyExecutionManager(_mockRequestData.Object, _testRequestSender, + _mockTestHostManager.Object, Framework.DefaultFramework, _mockDataSerializer.Object, _mockFileHelper.Object); - return testExecutionManager; - } + return testExecutionManager; } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyDiscoveryManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyDiscoveryManagerTests.cs index 5133483580..b78ab647f8 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyDiscoveryManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyDiscoveryManagerTests.cs @@ -1,519 +1,529 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ProxyDiscoveryManagerTests : ProxyBaseManagerTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class ProxyDiscoveryManagerTests : ProxyBaseManagerTests + private readonly DiscoveryCriteria _discoveryCriteria; + private readonly DiscoveryDataAggregator _discoveryDataAggregator; + private readonly Mock _mockRequestSender; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockFileHelper; + private readonly ProxyDiscoveryManager _discoveryManager; + + public ProxyDiscoveryManagerTests() { - //private const int CLIENTPROCESSEXITWAIT = 10 * 1000; - - private readonly DiscoveryCriteria discoveryCriteria; + _mockRequestSender = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockFileHelper = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _discoveryDataAggregator = new(); + _discoveryManager = new ProxyDiscoveryManager( + _mockRequestData.Object, + _mockRequestSender.Object, + _mockTestHostManager.Object, + Framework.DefaultFramework, + _discoveryDataAggregator, + _mockDataSerializer.Object, + _mockFileHelper.Object); + _discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); + } - private ProxyDiscoveryManager testDiscoveryManager; + [TestMethod] + public void DiscoverTestsShouldNotInitializeExtensionsOnNoExtensions() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - private Mock mockRequestSender; + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - //private Mock mockDataSerializer; + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); - private Mock mockRequestData; + _mockRequestSender.Verify(s => s.InitializeDiscovery(It.IsAny>()), Times.Never); + } - private Mock mockMetricsCollection; - private Mock mockFileHelper; + [TestMethod] + public void DiscoverTestsShouldNotInitializeExtensionsOnCommunicationFailure() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - public ProxyDiscoveryManagerTests() - { - this.mockRequestSender = new Mock(); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockFileHelper = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.testDiscoveryManager = new ProxyDiscoveryManager( - this.mockRequestData.Object, - this.mockRequestSender.Object, - this.mockTestHostManager.Object, - this.mockDataSerializer.Object, - this.mockFileHelper.Object); - this.discoveryCriteria = new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty); - } + Mock mockTestDiscoveryEventHandler = new(); - [TestMethod] - public void DiscoverTestsShouldNotInitializeExtensionsOnNoExtensions() - { - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventHandler.Object); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Never); + } - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); + [TestMethod] + public void DiscoverTestsShouldAllowRuntimeProviderToUpdateAdapterSource() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - this.mockRequestSender.Verify(s => s.InitializeDiscovery(It.IsAny>()), Times.Never); - } + _mockTestHostManager.Setup(hm => hm.GetTestSources(_discoveryCriteria.Sources)).Returns(_discoveryCriteria.Sources); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - [TestMethod] - public void DiscoverTestsShouldNotInitializeExtensionsOnCommunicationFailure() - { - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + Mock mockTestDiscoveryEventHandler = new(); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventHandler.Object); - Mock mockTestDiscoveryEventHandler = new Mock(); + _mockTestHostManager.Verify(hm => hm.GetTestSources(_discoveryCriteria.Sources), Times.Once); + } - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventHandler.Object); + [TestMethod] + public void DiscoverTestsShouldUpdateTestSourcesIfSourceDiffersFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var inputSource = new List { "inputPackage.appxrecipe" }; - this.mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Never); - } + var localDiscoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); - [TestMethod] - public void DiscoverTestsShouldAllowRuntimeProviderToUpdateAdapterSource() - { - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + _mockTestHostManager.Setup(hm => hm.GetTestSources(localDiscoveryCriteria.Sources)).Returns(actualSources); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(hm => hm.GetTestSources(this.discoveryCriteria.Sources)).Returns(this.discoveryCriteria.Sources); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + Mock mockTestDiscoveryEventHandler = new(); - Mock mockTestDiscoveryEventHandler = new Mock(); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, mockTestDiscoveryEventHandler.Object); - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventHandler.Object); + Assert.IsNotNull(localDiscoveryCriteria.Package); + // AdapterSourceMap should contain updated testSources. + Assert.AreEqual(actualSources.FirstOrDefault(), localDiscoveryCriteria.AdapterSourceMap.FirstOrDefault().Value.FirstOrDefault()); + Assert.AreEqual(inputSource.FirstOrDefault(), localDiscoveryCriteria.Package); + } - this.mockTestHostManager.Verify(hm => hm.GetTestSources(this.discoveryCriteria.Sources), Times.Once); - } + [TestMethod] + public void DiscoverTestsShouldNotUpdateTestSourcesIfSourceDoNotDifferFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var inputSource = new List { "actualSource.dll" }; - [TestMethod] - public void DiscoverTestsShouldUpdateTestSourcesIfSourceDiffersFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var inputSource = new List { "inputPackage.appxrecipe" }; + var localDiscoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); - var localDiscoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); + _mockTestHostManager.Setup(hm => hm.GetTestSources(localDiscoveryCriteria.Sources)).Returns(actualSources); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(hm => hm.GetTestSources(localDiscoveryCriteria.Sources)).Returns(actualSources); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + Mock mockTestDiscoveryEventHandler = new(); - Mock mockTestDiscoveryEventHandler = new Mock(); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, mockTestDiscoveryEventHandler.Object); - this.testDiscoveryManager.DiscoverTests(localDiscoveryCriteria, mockTestDiscoveryEventHandler.Object); + Assert.IsNull(localDiscoveryCriteria.Package); + // AdapterSourceMap should contain updated testSources. + Assert.AreEqual(actualSources.FirstOrDefault(), localDiscoveryCriteria.AdapterSourceMap.FirstOrDefault().Value.FirstOrDefault()); + } - Assert.IsNotNull(localDiscoveryCriteria.Package); - // AdapterSourceMap should contain updated testSources. - Assert.AreEqual(actualSources.FirstOrDefault(), localDiscoveryCriteria.AdapterSourceMap.FirstOrDefault().Value.FirstOrDefault()); - Assert.AreEqual(inputSource.FirstOrDefault(), localDiscoveryCriteria.Package); - } + [TestMethod] + public void DiscoverTestsShouldNotSendDiscoveryRequestIfCommunicationFails() + { + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) + .Callback( + () => _mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty))) + .Returns(Task.FromResult(false)); - [TestMethod] - public void DiscoverTestsShouldNotUpdateTestSourcesIfSourceDoNotDifferFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var inputSource = new List { "actualSource.dll" }; + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - var localDiscoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - this.mockTestHostManager.Setup(hm => hm.GetTestSources(localDiscoveryCriteria.Sources)).Returns(actualSources); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + Mock mockTestDiscoveryEventHandler = new(); - Mock mockTestDiscoveryEventHandler = new Mock(); + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventHandler.Object); - this.testDiscoveryManager.DiscoverTests(localDiscoveryCriteria, mockTestDiscoveryEventHandler.Object); + _mockRequestSender.Verify(s => s.DiscoverTests(It.IsAny(), It.IsAny()), Times.Never); + } - Assert.IsNull(localDiscoveryCriteria.Package); - // AdapterSourceMap should contain updated testSources. - Assert.AreEqual(actualSources.FirstOrDefault(), localDiscoveryCriteria.AdapterSourceMap.FirstOrDefault().Value.FirstOrDefault()); - } + [TestMethod] + public void DiscoverTestsShouldInitializeExtensionsIfPresent() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - [TestMethod] - public void DiscoverTestsShouldNotSendDiscoveryRequestIfCommunicationFails() + try { - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) - .Callback( - () => - { - this.mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty)); - }) - .Returns(Task.FromResult(false)); - - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + var extensions = new[] { "c:\\e1.dll", "c:\\e2.dll" }; - Mock mockTestDiscoveryEventHandler = new Mock(); + // Setup Mocks. + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(extensions); + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "c:\\e1.dll", "c:\\e2.dll" }); - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventHandler.Object); + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); - this.mockRequestSender.Verify(s => s.DiscoverTests(It.IsAny(), It.IsAny()), Times.Never); + // Also verify that we have waited for client connection. + _mockRequestSender.Verify(s => s.InitializeDiscovery(extensions), Times.Once); } - - [TestMethod] - public void DiscoverTestsShouldInitializeExtensionsIfPresent() + finally { - // Make sure TestPlugincache is refreshed. TestPluginCache.Instance = null; + } + } - try - { - var extensions = new[] { "c:\\e1.dll", "c:\\e2.dll" }; - - // Setup Mocks. - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(extensions); - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "c:\\e1.dll", "c:\\e2.dll" }); + [TestMethod] + public void DiscoverTestsShouldInitializeExtensionsWithExistingExtensionsOnly() + { + var inputExtensions = new[] { "abc.TestAdapter.dll", "def.TestAdapter.dll", "xyz.TestAdapter.dll" }; + var expectedOutputPaths = new[] { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }; - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(inputExtensions); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => extensions.Select(extension => Path.GetFileName(extension))); - // Also verify that we have waited for client connection. - this.mockRequestSender.Verify(s => s.InitializeDiscovery(extensions), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } - } + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns((string extensionPath) => !extensionPath.Contains("def.TestAdapter.dll")); - [TestMethod] - public void DiscoverTestsShouldInitializeExtensionsWithExistingExtensionsOnly() - { - var inputExtensions = new[] { "abc.TestAdapter.dll", "def.TestAdapter.dll", "xyz.TestAdapter.dll" }; - var expectedOutputPaths = new[] { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }; + _mockFileHelper.Setup(fh => fh.Exists("def.TestAdapter.dll")).Returns(false); + _mockFileHelper.Setup(fh => fh.Exists("xyz.TestAdapter.dll")).Returns(true); - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(inputExtensions); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => - { - return extensions.Select(extension => { return Path.GetFileName(extension); }); - }); + var mockTestDiscoveryEventHandler = new Mock(); + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventHandler.Object); - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns((string extensionPath) => - { - return !extensionPath.Contains("def.TestAdapter.dll"); - }); + _mockRequestSender.Verify(s => s.InitializeDiscovery(expectedOutputPaths), Times.Once); + } - this.mockFileHelper.Setup(fh => fh.Exists("def.TestAdapter.dll")).Returns(false); - this.mockFileHelper.Setup(fh => fh.Exists("xyz.TestAdapter.dll")).Returns(true); + [TestMethod] + public void DiscoverTestsShouldQueryTestHostManagerForExtensions() + { + TestPluginCache.Instance = null; + try + { + TestPluginCacheHelper.SetupMockAdditionalPathExtensions(["c:\\e1.dll"]); + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "he1.dll", "c:\\e1.dll" }); - var mockTestDiscoveryEventHandler = new Mock(); - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventHandler.Object); + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); - this.mockRequestSender.Verify(s => s.InitializeDiscovery(expectedOutputPaths), Times.Once); + _mockRequestSender.Verify(s => s.InitializeDiscovery(new[] { "he1.dll", "c:\\e1.dll" }), Times.Once); } - - [TestMethod] - public void DiscoverTestsShouldQueryTestHostManagerForExtensions() + finally { TestPluginCache.Instance = null; - try - { - TestPluginCacheHelper.SetupMockAdditionalPathExtensions(new[] { "c:\\e1.dll" }); - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "he1.dll", "c:\\e1.dll" }); - - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); - - this.mockRequestSender.Verify(s => s.InitializeDiscovery(new[] { "he1.dll", "c:\\e1.dll" }), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } } + } - [TestMethod] - public void DiscoverTestsShouldPassAdapterToTestHostManagerFromTestPluginCacheExtensions() + [TestMethod] + public void DiscoverTestsShouldPassAdapterToTestHostManagerFromTestPluginCacheExtensions() + { + // We are updating extension with test adapter only to make it easy to test. + // In product code it filter out test adapter from extension + TestPluginCache.Instance.UpdateExtensions(new List { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }, false); + try { - // We are updating extension with test adapter only to make it easy to test. - // In product code it filter out test adapter from extension - TestPluginCache.Instance.UpdateExtensions(new List { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }, false); - try - { - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); - this.mockTestHostManager.Verify(th => th.GetTestPlatformExtensions(It.IsAny>(), expectedResult), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } + _mockTestHostManager.Verify(th => th.GetTestPlatformExtensions(It.IsAny>(), expectedResult), Times.Once); } - - [TestMethod] - public void DiscoverTestsShouldNotInitializeDefaultAdaptersIfSkipDefaultAdaptersIsTrue() + finally { - InvokeAndVerifyDiscoverTests(true); + TestPluginCache.Instance = null; } + } - [TestMethod] - public void DiscoverTestsShouldInitializeDefaultAdaptersIfSkipDefaultAdaptersIsFalse() - { - InvokeAndVerifyDiscoverTests(false); - } + [TestMethod] + public void DiscoverTestsShouldNotInitializeDefaultAdaptersIfSkipDefaultAdaptersIsTrue() + { + InvokeAndVerifyDiscoverTests(true); + } - [TestMethod] - public void DiscoverTestsShouldNotIntializeTestHost() - { - // Setup mocks. - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + [TestMethod] + public void DiscoverTestsShouldInitializeDefaultAdaptersIfSkipDefaultAdaptersIsFalse() + { + InvokeAndVerifyDiscoverTests(false); + } - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); + [TestMethod] + public void DiscoverTestsShouldNotIntializeTestHost() + { + // Setup mocks. + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); - this.mockTestHostManager.Verify(thl => thl.LaunchTestHostAsync(It.IsAny(), It.IsAny()), Times.Once); - } + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); - [TestMethod] - public void DiscoverTestsShouldCatchExceptionAndCallHandleDiscoveryComplete() - { - // Setup mocks. - Mock mockTestDiscoveryEventsHandler = new Mock(); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + _mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); + _mockTestHostManager.Verify(thl => thl.LaunchTestHostAsync(It.IsAny(), It.IsAny()), Times.Once); + } - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + [TestMethod] + public void DiscoverTestsShouldCatchExceptionAndCallHandleDiscoveryComplete() + { + // Setup mocks. + Mock mockTestDiscoveryEventsHandler = new(); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - // Verify - mockTestDiscoveryEventsHandler.Verify(s => s.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())); - mockTestDiscoveryEventsHandler.Verify(s => s.HandleRawMessage(It.IsAny())); - mockTestDiscoveryEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny())); - } + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - [TestMethod] - public void DiscoverTestsShouldCatchExceptionAndCallHandleRawMessageOfDiscoveryComplete() - { - // Setup mocks. - Mock mockTestDiscoveryEventsHandler = new Mock(); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + // Verify + mockTestDiscoveryEventsHandler.Verify(s => s.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())); + mockTestDiscoveryEventsHandler.Verify(s => s.HandleRawMessage(It.IsAny())); + mockTestDiscoveryEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny())); + } - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.DiscoveryComplete, It.IsAny())).Returns(MessageType.DiscoveryComplete); + [TestMethod] + public void DiscoverTestsShouldCatchExceptionAndCallHandleRawMessageOfDiscoveryComplete() + { + // Setup mocks. + Mock mockTestDiscoveryEventsHandler = new(); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.DiscoveryComplete, It.IsAny())).Returns(MessageType.DiscoveryComplete); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + { + var messageType = rawMessage.Contains(MessageType.DiscoveryComplete) ? MessageType.DiscoveryComplete : MessageType.TestMessage; + var message = new Message { - var messageType = rawMessage.Contains(MessageType.DiscoveryComplete) ? MessageType.DiscoveryComplete : MessageType.TestMessage; - var message = new Message - { - MessageType = messageType - }; + MessageType = messageType + }; - return message; - }); + return message; + }); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - // Verify - mockTestDiscoveryEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.DiscoveryComplete))), Times.Once); - } + // Verify + mockTestDiscoveryEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.DiscoveryComplete))), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldCatchExceptionAndCallHandleRawMessageOfTestMessage() - { - // Setup mocks. - Mock mockTestDiscoveryEventsHandler = new Mock(); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void DiscoverTestsShouldCatchExceptionAndCallHandleRawMessageOfTestMessage() + { + // Setup mocks. + Mock mockTestDiscoveryEventsHandler = new(); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.DiscoveryComplete, It.IsAny())).Returns(MessageType.DiscoveryComplete); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.DiscoveryComplete, It.IsAny())).Returns(MessageType.DiscoveryComplete); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + { + var messageType = rawMessage.Contains(MessageType.DiscoveryComplete) ? MessageType.DiscoveryComplete : MessageType.TestMessage; + var message = new Message { - var messageType = rawMessage.Contains(MessageType.DiscoveryComplete) ? MessageType.DiscoveryComplete : MessageType.TestMessage; - var message = new Message - { - MessageType = messageType - }; + MessageType = messageType + }; - return message; - }); + return message; + }); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - // Verify - mockTestDiscoveryEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage))), Times.Once); - } + // Verify + mockTestDiscoveryEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage))), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldCatchExceptionAndCallHandleLogMessageOfError() - { - // Setup mocks. - Mock mockTestDiscoveryEventsHandler = new Mock(); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void DiscoverTestsShouldCatchExceptionAndCallHandleLogMessageOfError() + { + // Setup mocks. + Mock mockTestDiscoveryEventsHandler = new(); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - // Verify - mockTestDiscoveryEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + // Verify + mockTestDiscoveryEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldInitiateServerDiscoveryLoop() - { - // Setup mocks. - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + [TestMethod] + public void DiscoverTestsShouldInitiateServerDiscoveryLoop() + { + // Setup mocks. + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); - // Assert. - this.mockRequestSender.Verify(s => s.DiscoverTests(It.IsAny(), this.testDiscoveryManager), Times.Once); - } + // Assert. + _mockRequestSender.Verify(s => s.DiscoverTests(It.IsAny(), _discoveryManager), Times.Once); + } - [TestMethod] - public void DiscoverTestsCloseTestHostIfRawMessageIsOfTypeDiscoveryComplete() - { - Mock mockTestDiscoveryEventsHandler = new Mock(); + [TestMethod] + public void DiscoverTestsCloseTestHostIfRawMessageIsOfTypeDiscoveryComplete() + { + Mock mockTestDiscoveryEventsHandler = new(); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.DiscoveryComplete, It.IsAny())).Returns(MessageType.DiscoveryComplete); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.DiscoveryComplete, It.IsAny())).Returns(MessageType.DiscoveryComplete); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + { + var messageType = rawMessage.Contains(MessageType.DiscoveryComplete) ? MessageType.DiscoveryComplete : MessageType.TestMessage; + var message = new Message { - var messageType = rawMessage.Contains(MessageType.DiscoveryComplete) ? MessageType.DiscoveryComplete : MessageType.TestMessage; - var message = new Message - { - MessageType = messageType - }; + MessageType = messageType + }; - return message; - }); + return message; + }); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - // Verify - this.mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Once); - } + // Verify + _mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldNotCloseTestHostIfRawMessageIsNotOfTypeDiscoveryComplete() - { - Mock mockTestDiscoveryEventsHandler = new Mock(); + [TestMethod] + public void DiscoverTestsShouldNotCloseTestHostIfRawMessageIsNotOfTypeDiscoveryComplete() + { + Mock mockTestDiscoveryEventsHandler = new(); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => + { + var message = new Message { - var message = new Message - { - MessageType = MessageType.DiscoveryInitialize - }; + MessageType = MessageType.DiscoveryInitialize + }; - return message; - }); + return message; + }); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - // Verify - this.mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Never); - } + // Verify + _mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Never); + } - [TestMethod] - public void DiscoveryManagerShouldPassOnHandleDiscoveredTests() - { - Mock mockTestDiscoveryEventsHandler = new Mock(); - var testCases = new List() { new TestCase("x.y.z", new Uri("x://y"), "x.dll") }; + [TestMethod] + public void DiscoveryTestsMarksAllSourcesAsNotDiscovered() + { + // Arrange + Mock mockTestDiscoveryEventsHandler = new(); + var inputSource = new List { "source1.dll", "source2.dll", "source3.dll" }; - this.testDiscoveryManager = this.GetProxyDiscoveryManager(); - this.SetupChannelMessage(MessageType.StartDiscovery, MessageType.TestCasesFound, testCases); + var localDiscoveryCriteria = new DiscoveryCriteria(inputSource, 1, string.Empty); - var completePayload = new DiscoveryCompletePayload() - { - IsAborted = false, - LastDiscoveredTests = null, - TotalTests = 1 - }; - var completeMessage = new Message() { MessageType = MessageType.DiscoveryComplete, Payload = null }; - mockTestDiscoveryEventsHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( - () => - { - this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())).Returns(completeMessage); - this.mockDataSerializer.Setup(ds => ds.DeserializePayload(completeMessage)).Returns(completePayload); - }); - - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - - // Verify - mockTestDiscoveryEventsHandler.Verify(mtdeh => mtdeh.HandleDiscoveredTests(It.IsAny>()), Times.AtLeastOnce); - } + // Act + _discoveryManager.DiscoverTests(localDiscoveryCriteria, mockTestDiscoveryEventsHandler.Object); - [TestMethod] - public void DiscoveryManagerShouldPassOnHandleLogMessage() - { - Mock mockTestDiscoveryEventsHandler = new Mock(); + // Assert + CollectionAssert.AreEquivalent(inputSource, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered)); + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered).Count); + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered).Count); + } - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => - { - var message = new Message - { - MessageType = MessageType.TestMessage - }; + [TestMethod] + public void DiscoveryManagerShouldPassOnHandleDiscoveredTests() + { + Mock mockTestDiscoveryEventsHandler = new(); + var testCases = new List() { new("eventHandler.y.z", new Uri("eventHandler://y"), "eventHandler.dll") }; + + var discoveryManager = GetProxyDiscoveryManager(); + SetupChannelMessage(MessageType.StartDiscovery, MessageType.TestCasesFound, testCases); + SetupChannelMessage(MessageType.TestMessage, MessageType.TestMessage, string.Empty); - return message; + var completePayload = new DiscoveryCompletePayload() + { + IsAborted = false, + LastDiscoveredTests = null, + TotalTests = 1 + }; + var completeMessage = new Message() { MessageType = MessageType.DiscoveryComplete, Payload = null }; + mockTestDiscoveryEventsHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( + () => + { + _mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())).Returns(completeMessage); + _mockDataSerializer.Setup(ds => ds.DeserializePayload(completeMessage)).Returns(completePayload); }); - // Act. - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - // Verify - mockTestDiscoveryEventsHandler.Verify(mtdeh => mtdeh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once); - } + // Verify + mockTestDiscoveryEventsHandler.Verify(mtdeh => mtdeh.HandleDiscoveredTests(It.IsAny>()), Times.AtLeastOnce); + } - [TestMethod] - public void AbortShouldSendTestDiscoveryCancelIfCommunicationSuccessful() + [TestMethod] + public void DiscoveryManagerShouldPassOnHandleLogMessage() + { + Mock mockTestDiscoveryEventsHandler = new(); + + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => { - var mockTestDiscoveryEventsHandler = new Mock(); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + var message = new Message + { + MessageType = MessageType.TestMessage + }; - Mock mockTestRunEventsHandler = new Mock(); + return message; + }); - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + // Act. + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); - this.testDiscoveryManager.Abort(); + // Verify + mockTestDiscoveryEventsHandler.Verify(mtdeh => mtdeh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once); + } - this.mockRequestSender.Verify(s => s.EndSession(), Times.Once); - } + [TestMethod] + public void AbortShouldSendTestDiscoveryCancelIfCommunicationSuccessful() + { + var mockTestDiscoveryEventsHandler = new Mock(); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - [TestMethod] - public void StartTestRunShouldAttemptToTakeProxyFromPoolIfProxyIsNull() - { - var testSessionInfo = new TestSessionInfo(); + Mock mockTestRunEventsHandler = new(); + + _discoveryManager.DiscoverTests(_discoveryCriteria, mockTestDiscoveryEventsHandler.Object); + + _discoveryManager.Abort(); + + _mockRequestSender.Verify(s => s.EndSession(), Times.Once); + } + + [TestMethod] + public void StartTestRunShouldAttemptToTakeProxyFromPoolIfProxyIsNull() + { + var testSessionInfo = new TestSessionInfo(); - Func + Func proxyOperationManagerCreator = ( string source, ProxyDiscoveryManager proxyDiscoveryManager) => @@ -521,115 +531,268 @@ public void StartTestRunShouldAttemptToTakeProxyFromPoolIfProxyIsNull() var proxyOperationManager = TestSessionPool.Instance.TryTakeProxy( testSessionInfo, source, - discoveryCriteria.RunSettings); + _discoveryCriteria.RunSettings, + _mockRequestData.Object); - return proxyOperationManager; + return proxyOperationManager!; }; - var testDiscoveryManager = new ProxyDiscoveryManager( - testSessionInfo, - proxyOperationManagerCreator); + var testDiscoveryManager = new ProxyDiscoveryManager( + testSessionInfo, + proxyOperationManagerCreator); - var mockTestSessionPool = new Mock(); - TestSessionPool.Instance = mockTestSessionPool.Object; + var mockTestSessionPool = new Mock(); + TestSessionPool.Instance = mockTestSessionPool.Object; - try - { - var mockProxyOperationManager = new Mock( - this.mockRequestData.Object, - this.mockRequestSender.Object, - this.mockTestHostManager.Object); - mockTestSessionPool.Setup( + try + { + var mockProxyOperationManager = new Mock( + _mockRequestData.Object, + _mockRequestSender.Object, + _mockTestHostManager.Object, + null); + mockTestSessionPool.Setup( tsp => tsp.TryTakeProxy( testSessionInfo, It.IsAny(), - It.IsAny())) - .Returns(mockProxyOperationManager.Object); + It.IsAny(), + _mockRequestData.Object)) + .Returns(mockProxyOperationManager.Object); - testDiscoveryManager.Initialize(true); - testDiscoveryManager.DiscoverTests( - discoveryCriteria, - new Mock().Object); + testDiscoveryManager.Initialize(true); + testDiscoveryManager.DiscoverTests( + _discoveryCriteria, + new Mock().Object); - mockTestSessionPool.Verify( - tsp => tsp.TryTakeProxy( - testSessionInfo, - It.IsAny(), - It.IsAny()), - Times.Once); - } - finally - { - TestSessionPool.Instance = null; - } + mockTestSessionPool.Verify( + tsp => tsp.TryTakeProxy( + testSessionInfo, + It.IsAny(), + It.IsAny(), + _mockRequestData.Object), + Times.Once); + } + finally + { + TestSessionPool.Instance = null; } + } + + [TestMethod] + public void HandleDiscoveredTestsMarksDiscoveryStatus() + { + // Arrange + var localDiscoveryCriteria = new DiscoveryCriteria(new[] { "a" }, 1, string.Empty); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, new Mock().Object); - private void InvokeAndVerifyDiscoverTests(bool skipDefaultAdapters) + // Marks 'a' as partially discovered + _discoveryManager.HandleDiscoveredTests(new TestCase[] { - TestPluginCache.Instance = null; - TestPluginCache.Instance.DefaultExtensionPaths = new List { "default1.dll", "default2.dll" }; - TestPluginCache.Instance.UpdateExtensions(new List { "filterTestAdapter.dll" }, false); - TestPluginCache.Instance.UpdateExtensions(new List { "unfilter.dll" }, true); + new() { Source = "a" }, + }); - try - { - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => extensions); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - var expectedResult = TestPluginCache.Instance.GetExtensionPaths(TestPlatformConstants.TestAdapterEndsWithPattern, skipDefaultAdapters); + // Act + _discoveryManager.HandleDiscoveredTests(new TestCase[] + { + new() { Source = "b" }, + new() { Source = "c" }, + new() { Source = "c" }, + new() { Source = "d" }, + }); + + // Assert + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered).Count); + CollectionAssert.AreEquivalent( + new List { "d" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered)); + CollectionAssert.AreEquivalent( + new List { "a", "b", "c" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + } - this.testDiscoveryManager.Initialize(skipDefaultAdapters); - this.testDiscoveryManager.DiscoverTests(this.discoveryCriteria, null); + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void HandleDiscoveryCompleteWhenAbortedNoPastDiscoveryAndNoLastCunkNotifiesWithCorrectDiscovery(bool trueIsEmptyFalseIsNull) + { + // Arrange + var localDiscoveryCriteria = new DiscoveryCriteria(new[] { "a", "b" }, 1, string.Empty); + var eventHandler = new Mock(); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, eventHandler.Object); + + var lastChunk = trueIsEmptyFalseIsNull + ? Enumerable.Empty() + : null; + + // Act + _discoveryManager.HandleDiscoveryComplete(new(-1, true), lastChunk); + + // Assert + CollectionAssert.AreEquivalent( + new[] { "a", "b" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered)); + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered).Count); + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered).Count); + } - this.mockRequestSender.Verify(s => s.InitializeDiscovery(expectedResult), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } - } + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void HandleDiscoveryCompleteWhenAbortedPastDiscoveryAndNoLastCunkNotifiesWithCorrectDiscovery(bool trueIsEmptyFalseIsNull) + { + // Arrange + var localDiscoveryCriteria = new DiscoveryCriteria(new[] { "a" }, 1, string.Empty); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, new Mock().Object); - //private void SetupAndInitializeTestRequestSender() - //{ - // var connectionInfo = new TestHostConnectionInfo - // { - // Endpoint = IPAddress.Loopback + ":0", - // Role = ConnectionRole.Client, - // Transport = Transport.Sockets - // }; - - // this.mockCommunicationEndpoint = new Mock(); - // this.mockDataSerializer = new Mock(); - // this.testRequestSender = new TestRequestSender(this.mockCommunicationEndpoint.Object, connectionInfo, this.mockDataSerializer.Object, this.protocolConfig, CLIENTPROCESSEXITWAIT); - // this.mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => - // { - // this.mockCommunicationEndpoint.Raise( - // s => s.Connected += null, - // this.mockCommunicationEndpoint.Object, - // new ConnectedEventArgs(this.mockChannel.Object)); - // }); - // this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, this.protocolConfig.Version); - // this.testRequestSender.InitializeCommunication(); - - // this.testDiscoveryManager = new ProxyDiscoveryManager( - // this.mockRequestData.Object, - // this.testRequestSender, - // this.mockTestHostManager.Object, - // this.mockDataSerializer.Object, - // this.testableClientConnectionTimeout); - //} - - //private void SetupChannelMessage(string messageType, string returnMessageType, TPayload returnPayload) - //{ - // this.mockChannel.Setup(mc => mc.Send(It.Is(s => s.Contains(messageType)))) - // .Callback(() => this.mockChannel.Raise(c => c.MessageReceived += null, this.mockChannel.Object, new MessageReceivedEventArgs { Data = messageType })); - - // this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny())).Returns(messageType); - // this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny(), It.IsAny())).Returns(messageType); - // this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.Is(s => s.Equals(messageType)))) - // .Returns(new Message { MessageType = returnMessageType }); - // this.mockDataSerializer.Setup(ds => ds.DeserializePayload(It.Is(m => m.MessageType.Equals(messageType)))) - // .Returns(returnPayload); - //} + _discoveryManager.HandleDiscoveredTests(new TestCase[] + { + new() { Source = "a" }, + new() { Source = "b" }, + }); + + var lastChunk = trueIsEmptyFalseIsNull + ? Enumerable.Empty() + : null; + + // Act + _discoveryManager.HandleDiscoveryComplete(new(-1, true), lastChunk); + + // Assert + CollectionAssert.AreEquivalent( + new[] { "a" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + CollectionAssert.AreEquivalent( + new[] { "b" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered)); + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered).Count); } + + [TestMethod] + public void HandleDiscoveryCompleteWhenAbortedNoPastDiscoveryAndLastCunkNotifiesWithCorrectDiscovery() + { + // Arrange + var localDiscoveryCriteria = new DiscoveryCriteria(new[] { "a", "b" }, 1, string.Empty); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, new Mock().Object); + + var lastChunk = new TestCase[] + { + new() { Source = "c" }, + new() { Source = "d" }, + }; + + // Act + _discoveryManager.HandleDiscoveryComplete(new(-1, true), lastChunk); + + // Assert + CollectionAssert.AreEquivalent( + new[] { "c" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + CollectionAssert.AreEquivalent( + new[] { "d" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered)); + CollectionAssert.AreEquivalent( + new[] { "a", "b" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered)); + } + + [TestMethod] + public void HandleDiscoveryCompleteWhenAbortedPastDiscoveryAndLastCunkNotifiesWithCorrectDiscovery() + { + // Arrange + var localDiscoveryCriteria = new DiscoveryCriteria(new[] { "a" }, 1, string.Empty); + _discoveryManager.DiscoverTests(localDiscoveryCriteria, new Mock().Object); + + _discoveryManager.HandleDiscoveredTests(new TestCase[] + { + new() { Source = "a" }, + new() { Source = "b" }, + }); + + var lastChunk = new TestCase[] + { + new() { Source = "c" }, + new() { Source = "d" }, + }; + + // Act + _discoveryManager.HandleDiscoveryComplete(new(-1, true), lastChunk); + + // Assert + CollectionAssert.AreEquivalent( + new[] { "a", "b", "c" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.FullyDiscovered)); + CollectionAssert.AreEquivalent( + new[] { "d" }, + _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.PartiallyDiscovered)); + Assert.AreEqual(0, _discoveryDataAggregator.GetSourcesWithStatus(DiscoveryStatus.NotDiscovered).Count); + } + + private void InvokeAndVerifyDiscoverTests(bool skipDefaultAdapters) + { + TestPluginCache.Instance = null; + // It's ok to use Instance. because on nulls, instance is re-instantiated. + TestPluginCache.Instance!.DefaultExtensionPaths = new List { "default1.dll", "default2.dll" }; + TestPluginCache.Instance.UpdateExtensions(new List { "filterTestAdapter.dll" }, false); + TestPluginCache.Instance.UpdateExtensions(new List { "unfilter.dll" }, true); + + try + { + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => extensions); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + var expectedResult = TestPluginCache.Instance.GetExtensionPaths(TestPlatformConstants.TestAdapterEndsWithPattern, skipDefaultAdapters); + + _discoveryManager.Initialize(skipDefaultAdapters); + _discoveryManager.DiscoverTests(_discoveryCriteria, null!); + + _mockRequestSender.Verify(s => s.InitializeDiscovery(expectedResult), Times.Once); + } + finally + { + TestPluginCache.Instance = null; + } + } + + //private void SetupAndInitializeTestRequestSender() + //{ + // var connectionInfo = new TestHostConnectionInfo + // { + // Endpoint = IPAddress.Loopback + ":0", + // Role = ConnectionRole.Client, + // Transport = Transport.Sockets + // }; + + // this.mockCommunicationEndpoint = new Mock(); + // this.mockDataSerializer = new Mock(); + // this.testRequestSender = new TestRequestSender(this.mockCommunicationEndpoint.Object, connectionInfo, this.mockDataSerializer.Object, this.protocolConfig, CLIENTPROCESSEXITWAIT); + // this.mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => + // { + // this.mockCommunicationEndpoint.Raise( + // s => s.Connected += null, + // this.mockCommunicationEndpoint.Object, + // new ConnectedEventArgs(this.mockChannel.Object)); + // }); + // this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, this.protocolConfig.Version); + // this.testRequestSender.InitializeCommunication(); + + // this.testDiscoveryManager = new ProxyDiscoveryManager( + // this.mockRequestData.Object, + // this.testRequestSender, + // this.mockTestHostManager.Object, + // this.mockDataSerializer.Object, + // this.testableClientConnectionTimeout); + //} + + //private void SetupChannelMessage(string messageType, string returnMessageType, TPayload returnPayload) + //{ + // this.mockChannel.Setup(mc => mc.Send(It.Is(s => s.Contains(messageType)))) + // .Callback(() => this.mockChannel.Raise(c => c.MessageReceived += null, this.mockChannel.Object, new MessageReceivedEventArgs { Data = messageType })); + + // this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny())).Returns(messageType); + // this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny(), It.IsAny())).Returns(messageType); + // this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.Is(s => s.Equals(messageType)))) + // .Returns(new Message { MessageType = returnMessageType }); + // this.mockDataSerializer.Setup(ds => ds.DeserializePayload(It.Is(m => m.MessageType.Equals(messageType)))) + // .Returns(returnPayload); + //} } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerTests.cs index dfe854a27e..286c193f53 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerTests.cs @@ -1,754 +1,746 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using CrossPlatEngineResources = Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ProxyExecutionManagerTests : ProxyBaseManagerTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Net; - using System.Threading; - using System.Threading.Tasks; + private readonly Mock _mockRequestSender; + private readonly Mock _mockTestRunCriteria; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockFileHelper; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private ProxyExecutionManager _testExecutionManager; - using Moq; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; + //private Mock mockDataSerializer; - using CrossPlatEngineResources = Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; + public ProxyExecutionManagerTests() + { + _mockRequestSender = new Mock(); + _mockTestRunCriteria = new Mock(new List { "source.dll" }, 10); + //this.mockDataSerializer = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockFileHelper = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + + _testExecutionManager = new ProxyExecutionManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, Framework.DefaultFramework, _mockDataSerializer.Object, _mockFileHelper.Object); + + //this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(null)).Returns(new Message()); + //this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(string.Empty)).Returns(new Message()); + } - [TestClass] - public class ProxyExecutionManagerTests : ProxyBaseManagerTests + [TestMethod] + public void StartTestRunShouldNotInitializeExtensionsOnNoExtensions() { - private readonly Mock mockRequestSender; + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - private readonly Mock mockTestRunCriteria; + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - private readonly Mock mockRequestData; + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - private Mock mockMetricsCollection; + _mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Never); + } - private Mock mockFileHelper; + [TestMethod] + public void StartTestRunShouldAllowRuntimeProviderToUpdateAdapterSource() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - private ProxyExecutionManager testExecutionManager; + _mockTestHostManager.Setup(hm => hm.GetTestSources(_mockTestRunCriteria.Object.Sources!)).Returns(_mockTestRunCriteria.Object.Sources!); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - //private Mock mockDataSerializer; + Mock mockTestRunEventsHandler = new(); - public ProxyExecutionManagerTests() - { - this.mockRequestSender = new Mock(); - this.mockTestRunCriteria = new Mock(new List { "source.dll" }, 10); - //this.mockDataSerializer = new Mock(); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockFileHelper = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - - this.testExecutionManager = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.mockFileHelper.Object); - - //this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(null)).Returns(new Message()); - //this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(string.Empty)).Returns(new Message()); - } + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotInitializeExtensionsOnNoExtensions() - { - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + _mockTestHostManager.Verify(hm => hm.GetTestSources(_mockTestRunCriteria.Object.Sources!), Times.Once); + } - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + [TestMethod] + public void StartTestRunShouldUpdateTestCaseSourceIfTestCaseSourceDiffersFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var inputSource = new List { "inputPackage.appxrecipe" }; - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); + var testRunCriteria = new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), inputSource.First()) }, + frequencyOfRunStatsChangeEvent: 10); - this.mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Never); - } + _mockTestHostManager.Setup(hm => hm.GetTestSources(inputSource)).Returns(actualSources); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + Mock mockTestRunEventsHandler = new(); - [TestMethod] - public void StartTestRunShouldAllowRuntimeProviderToUpdateAdapterSource() - { - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + _testExecutionManager.StartTestRun(testRunCriteria, mockTestRunEventsHandler.Object); + + _mockTestHostManager.Verify(hm => hm.GetTestSources(inputSource), Times.Once); + Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests!.FirstOrDefault()?.Source); + } - this.mockTestHostManager.Setup(hm => hm.GetTestSources(this.mockTestRunCriteria.Object.Sources)).Returns(this.mockTestRunCriteria.Object.Sources); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + [TestMethod] + public void StartTestRunShouldNotUpdateTestCaseSourceIfTestCaseSourceDoNotDifferFromTestHostManagerSource() + { + var actualSources = new List { "actualSource.dll" }; + var inputSource = new List { "actualSource.dll" }; - Mock mockTestRunEventsHandler = new Mock(); + var testRunCriteria = new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), inputSource.First()) }, + frequencyOfRunStatsChangeEvent: 10); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _mockTestHostManager.Setup(hm => hm.GetTestSources(inputSource)).Returns(actualSources); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + Mock mockTestRunEventsHandler = new(); - this.mockTestHostManager.Verify(hm => hm.GetTestSources(this.mockTestRunCriteria.Object.Sources), Times.Once); - } + _testExecutionManager.StartTestRun(testRunCriteria, mockTestRunEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldUpdateTestCaseSourceIfTestCaseSourceDiffersFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var inputSource = new List { "inputPackage.appxrecipe" }; + _mockTestHostManager.Verify(hm => hm.GetTestSources(inputSource), Times.Once); + Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests!.FirstOrDefault()?.Source); + } - var testRunCriteria = new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), inputSource.FirstOrDefault()) }, - frequencyOfRunStatsChangeEvent: 10); + [TestMethod] + public void StartTestRunShouldNotInitializeExtensionsOnCommunicationFailure() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - this.mockTestHostManager.Setup(hm => hm.GetTestSources(inputSource)).Returns(actualSources); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - Mock mockTestRunEventsHandler = new Mock(); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.testExecutionManager.StartTestRun(testRunCriteria, mockTestRunEventsHandler.Object); + Mock mockTestRunEventsHandler = new(); - this.mockTestHostManager.Verify(hm => hm.GetTestSources(inputSource), Times.Once); - Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests.FirstOrDefault().Source); - } + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - [TestMethod] - public void StartTestRunShouldNotUpdateTestCaseSourceIfTestCaseSourceDoNotDifferFromTestHostManagerSource() - { - var actualSources = new List { "actualSource.dll" }; - var inputSource = new List { "actualSource.dll" }; + _mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Never); + } - var testRunCriteria = new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), inputSource.FirstOrDefault()) }, - frequencyOfRunStatsChangeEvent: 10); + [TestMethod] + public void StartTestRunShouldInitializeExtensionsIfPresent() + { + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - this.mockTestHostManager.Setup(hm => hm.GetTestSources(inputSource)).Returns(actualSources); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new List()); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - Mock mockTestRunEventsHandler = new Mock(); + try + { + var extensions = new List() { "C:\\foo.dll" }; + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(x => x.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())) + .Returns(extensions); - this.testExecutionManager.StartTestRun(testRunCriteria, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - this.mockTestHostManager.Verify(hm => hm.GetTestSources(inputSource), Times.Once); - Assert.AreEqual(actualSources.FirstOrDefault(), testRunCriteria.Tests.FirstOrDefault().Source); + // Also verify that we have waited for client connection. + _mockRequestSender.Verify(s => s.InitializeExecution(extensions), Times.Once); } - - [TestMethod] - public void StartTestRunShouldNotInitializeExtensionsOnCommunicationFailure() + finally { - // Make sure TestPlugincache is refreshed. TestPluginCache.Instance = null; + } + } - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - - Mock mockTestRunEventsHandler = new Mock(); + [TestMethod] + public void StartTestRunShouldQueryTestHostManagerForExtensions() + { + TestPluginCache.Instance = null; + try + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "he1.dll", "c:\\e1.dll" }); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - this.mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Never); + _mockRequestSender.Verify(s => s.InitializeExecution(new[] { "he1.dll", "c:\\e1.dll" }), Times.Once); } - - [TestMethod] - public void StartTestRunShouldInitializeExtensionsIfPresent() + finally { - // Make sure TestPlugincache is refreshed. TestPluginCache.Instance = null; + } + } - try - { - var extensions = new List() { "C:\\foo.dll" }; - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(x => x.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())) - .Returns(extensions); + [TestMethod] + public void StartTestRunShouldPassAdapterToTestHostManagerFromTestPluginCacheExtensions() + { + // We are updating extension with testadapter only to make it easy to test. + // In product code it filter out testadapter from extension + TestPluginCache.Instance.UpdateExtensions(new List { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }, false); + try + { + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - // Also verify that we have waited for client connection. - this.mockRequestSender.Verify(s => s.InitializeExecution(extensions), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } + _mockTestHostManager.Verify(th => th.GetTestPlatformExtensions(It.IsAny>(), expectedResult), Times.Once); } - - [TestMethod] - public void StartTestRunShouldQueryTestHostManagerForExtensions() + finally { TestPluginCache.Instance = null; - try - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "he1.dll", "c:\\e1.dll" }); - - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); - - this.mockRequestSender.Verify(s => s.InitializeExecution(new[] { "he1.dll", "c:\\e1.dll" }), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } } + } - [TestMethod] - public void StartTestRunShouldPassAdapterToTestHostManagerFromTestPluginCacheExtensions() - { - // We are updating extension with testadapter only to make it easy to test. - // In product code it filter out testadapter from extension - TestPluginCache.Instance.UpdateExtensions(new List { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }, false); - try - { - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - var expectedResult = TestPluginCache.Instance.GetExtensionPaths(string.Empty); + [TestMethod] + public void StartTestRunShouldNotInitializeDefaultAdaptersIfSkipDefaultAdaptersIsTrue() + { + InvokeAndVerifyStartTestRun(true); + } - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); + [TestMethod] + public void StartTestRunShouldInitializeDefaultAdaptersIfSkipDefaultAdaptersIsFalse() + { + InvokeAndVerifyStartTestRun(false); + } - this.mockTestHostManager.Verify(th => th.GetTestPlatformExtensions(It.IsAny>(), expectedResult), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } - } + [TestMethod] + public void StartTestRunShouldIntializeTestHost() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - [TestMethod] - public void StartTestRunShouldNotInitializeDefaultAdaptersIfSkipDefaultAdaptersIsTrue() - { - InvokeAndVerifyStartTestRun(true); - } + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - [TestMethod] - public void StartTestRunShouldInitializeDefaultAdaptersIfSkipDefaultAdaptersIsFalse() - { - InvokeAndVerifyStartTestRun(false); - } + _mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); + _mockTestHostManager.Verify(thl => thl.LaunchTestHostAsync(It.IsAny(), It.IsAny()), Times.Once); + } - [TestMethod] - public void StartTestRunShouldIntializeTestHost() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + [TestMethod] + public void StartTestRunShouldNotSendStartTestRunRequestIfCommunicationFails() + { + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) + .Callback( + () => _mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty))) + .Returns(Task.FromResult(false)); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); - this.mockTestHostManager.Verify(thl => thl.LaunchTestHostAsync(It.IsAny(), It.IsAny()), Times.Once); - } + // Make sure TestPlugincache is refreshed. + TestPluginCache.Instance = null; - [TestMethod] - public void StartTestRunShouldNotSendStartTestRunRequestIfCommunicationFails() - { - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) - .Callback( - () => - { - this.mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty)); - }) - .Returns(Task.FromResult(false)); + Mock mockTestRunEventsHandler = new(); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - // Make sure TestPlugincache is refreshed. - TestPluginCache.Instance = null; + _mockRequestSender.Verify(s => s.StartTestRun(It.IsAny(), It.IsAny()), Times.Never); + } - Mock mockTestRunEventsHandler = new Mock(); + [TestMethod] + public void StartTestRunShouldInitializeExtensionsIfTestHostIsNotShared() + { + TestPluginCache.Instance = null; + _mockTestHostManager.SetupGet(th => th.Shared).Returns(false); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "x.dll" }); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - this.mockRequestSender.Verify(s => s.StartTestRun(It.IsAny(), It.IsAny()), Times.Never); - } + _mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Once); + } - [TestMethod] - public void StartTestRunShouldInitializeExtensionsIfTestHostIsNotShared() - { - TestPluginCache.Instance = null; - this.mockTestHostManager.SetupGet(th => th.Shared).Returns(false); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns(new[] { "x.dll" }); + [TestMethod] + public void StartTestRunShouldInitializeExtensionsWithExistingExtensionsOnly() + { + TestPluginCache.Instance = null; + TestPluginCache.Instance!.UpdateExtensions(new List { "abc.TestAdapter.dll", "def.TestAdapter.dll", "xyz.TestAdapter.dll" }, false); + var expectedOutputPaths = new[] { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }; - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); + _mockTestHostManager.SetupGet(th => th.Shared).Returns(false); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => extensions.Select(extension => Path.GetFileName(extension))); - this.mockRequestSender.Verify(s => s.InitializeExecution(It.IsAny>()), Times.Once); - } + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns((string extensionPath) => !extensionPath.Contains("def.TestAdapter.dll")); - [TestMethod] - public void StartTestRunShouldInitializeExtensionsWithExistingExtensionsOnly() - { - TestPluginCache.Instance = null; - TestPluginCache.Instance.UpdateExtensions(new List { "abc.TestAdapter.dll", "def.TestAdapter.dll", "xyz.TestAdapter.dll" }, false); - var expectedOutputPaths = new[] { "abc.TestAdapter.dll", "xyz.TestAdapter.dll" }; + _mockFileHelper.Setup(fh => fh.Exists("def.TestAdapter.dll")).Returns(false); + _mockFileHelper.Setup(fh => fh.Exists("xyz.TestAdapter.dll")).Returns(true); - this.mockTestHostManager.SetupGet(th => th.Shared).Returns(false); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => - { - return extensions.Select(extension => { return Path.GetFileName(extension); }); - }); + var mockTestRunEventsHandler = new Mock(); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns((string extensionPath) => - { - return !extensionPath.Contains("def.TestAdapter.dll"); - }); + _mockRequestSender.Verify(s => s.InitializeExecution(expectedOutputPaths), Times.Once); + } - this.mockFileHelper.Setup(fh => fh.Exists("def.TestAdapter.dll")).Returns(false); - this.mockFileHelper.Setup(fh => fh.Exists("xyz.TestAdapter.dll")).Returns(true); + [TestMethod] + public void SetupChannelShouldThrowExceptionIfClientConnectionTimeout() + { + string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - var mockTestRunEventsHandler = new Mock(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - this.mockRequestSender.Verify(s => s.InitializeExecution(expectedOutputPaths), Times.Once); - } + Assert.ThrowsException(() => _testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings)); + } - [TestMethod] - public void SetupChannelShouldThrowExceptionIfClientConnectionTimeout() - { - string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + [TestMethod] + public void SetupChannelShouldThrowExceptionWithOneSourceIfTestHostExitedBeforeConnectionIsEstablished() + { + string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)).Callback(() => _mockTestHostManager.Raise(t => t.HostExited += null, new HostProviderEventArgs("I crashed!"))); - Assert.ThrowsException(() => this.testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings)); - } + Assert.AreEqual(string.Format(CultureInfo.CurrentCulture, CrossPlatEngineResources.Resources.TestHostExitedWithError, "source.dll", "I crashed!"), Assert.ThrowsException(() => _testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings)).Message); + } - [TestMethod] - public void SetupChannelShouldThrowExceptionIfTestHostExitedBeforeConnectionIsEstablished() - { - string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + [TestMethod] + public void SetupChannelShouldThrowExceptionWithAllSourcesIfTestHostExitedBeforeConnectionIsEstablished() + { + string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)).Callback(() => { this.mockTestHostManager.Raise(t => t.HostExited += null, new HostProviderEventArgs("I crashed!")); }); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)).Callback(() => _mockTestHostManager.Raise(t => t.HostExited += null, new HostProviderEventArgs("I crashed!"))); - Assert.AreEqual(string.Format(CrossPlatEngineResources.Resources.TestHostExitedWithError, "I crashed!"), Assert.ThrowsException(() => this.testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings)).Message); - } + Assert.AreEqual(string.Format(CultureInfo.CurrentCulture, CrossPlatEngineResources.Resources.TestHostExitedWithError, string.Join("', '", ["source1.dll", "source2.dll"]), "I crashed!"), Assert.ThrowsException(() => _testExecutionManager.SetupChannel(new List { "source1.dll", "source2.dll" }, runsettings)).Message); + } - [TestMethod] - public void StartTestRunShouldCatchExceptionAndCallHandleTestRunComplete() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void StartTestRunShouldCatchExceptionAndCallHandleTestRunComplete() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleTestRunComplete(It.Is(t => t.IsAborted == true), null, null, null)); - } + mockTestRunEventsHandler.Verify(s => s.HandleTestRunComplete(It.Is(t => t.IsAborted == true), null, null, null)); + } - [TestMethod] - public void StartTestRunShouldCatchExceptionAndCallHandleRawMessageOfTestRunComplete() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void StartTestRunShouldCatchExceptionAndCallHandleRawMessageOfTestRunComplete() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.IsAny())).Returns(MessageType.ExecutionComplete); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.IsAny())).Returns(MessageType.ExecutionComplete); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + { + var messageType = rawMessage.Contains(MessageType.ExecutionComplete) ? MessageType.ExecutionComplete : MessageType.TestMessage; + var message = new Message { - var messageType = rawMessage.Contains(MessageType.ExecutionComplete) ? MessageType.ExecutionComplete : MessageType.TestMessage; - var message = new Message - { - MessageType = messageType - }; + MessageType = messageType + }; - return message; - }); + return message; + }); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.ExecutionComplete))), Times.Once); - } + mockTestRunEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.ExecutionComplete))), Times.Once); + } - [TestMethod] - public void StartTestRunShouldCatchExceptionAndCallHandleRawMessageOfTestMessage() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void StartTestRunShouldCatchExceptionAndCallHandleRawMessageOfTestMessage() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.IsAny())).Returns(MessageType.ExecutionComplete); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.IsAny())).Returns(MessageType.ExecutionComplete); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + { + var messageType = rawMessage.Contains(MessageType.ExecutionComplete) ? MessageType.ExecutionComplete : MessageType.TestMessage; + var message = new Message { - var messageType = rawMessage.Contains(MessageType.ExecutionComplete) ? MessageType.ExecutionComplete : MessageType.TestMessage; - var message = new Message - { - MessageType = messageType - }; + MessageType = messageType + }; - return message; - }); + return message; + }); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage)))); - } + mockTestRunEventsHandler.Verify(s => s.HandleRawMessage(It.Is(str => str.Contains(MessageType.TestMessage)))); + } - [TestMethod] - public void StartTestRunShouldCatchExceptionAndCallHandleLogMessageOfError() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void StartTestRunShouldCatchExceptionAndCallHandleLogMessageOfError() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - [TestMethod] - public void StartTestRunShouldCatchExceptionAndCallHandleRawMessageAndHandleLogMessage() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + [TestMethod] + public void StartTestRunShouldCatchExceptionAndCallHandleRawMessageAndHandleLogMessage() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleRawMessage(It.IsAny())); - mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny())); - } + mockTestRunEventsHandler.Verify(s => s.HandleRawMessage(It.IsAny())); + mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.IsAny())); + } - [TestMethod] - public void StartTestRunForCancelRequestShouldHandleLogMessageWithProperErrorMessage() - { - Mock mockTestRunEventsHandler = new Mock(); - this.testExecutionManager.Cancel(mockTestRunEventsHandler.Object); + [TestMethod] + public void StartTestRunForCancelRequestShouldHandleLogMessageWithProperErrorMessage() + { + Mock mockTestRunEventsHandler = new(); + _testExecutionManager.Cancel(mockTestRunEventsHandler.Object); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, "Cancelling the operation as requested.")); - } + mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, "Cancelling the operation as requested.")); + } - [TestMethod] - public void StartTestRunForAnExceptionDuringLaunchOfTestShouldHandleLogMessageWithProperErrorMessage() - { - Mock mockTestRunEventsHandler = new Mock(); - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Throws(new Exception("DummyException")); + [TestMethod] + public void StartTestRunForAnExceptionDuringLaunchOfTestShouldHandleLogMessageWithProperErrorMessage() + { + Mock mockTestRunEventsHandler = new(); + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Throws(new Exception("DummyException")); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.Is(str => str.StartsWith("Failed to launch testhost with error: System.Exception: DummyException")))); - } + mockTestRunEventsHandler.Verify(s => s.HandleLogMessage(TestMessageLevel.Error, It.Is(str => str.StartsWith("Failed to launch testhost with error: System.Exception: DummyException")))); + } - [TestMethod] - public void StartTestRunShouldInitiateTestRunForSourcesThroughTheServer() - { - TestRunCriteriaWithSources testRunCriteriaPassed = null; - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.StartTestRun(It.IsAny(), this.testExecutionManager)) - .Callback( - (TestRunCriteriaWithSources criteria, ITestRunEventsHandler sink) => - { - testRunCriteriaPassed = criteria; - }); - - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); - - Assert.IsNotNull(testRunCriteriaPassed); - CollectionAssert.AreEqual(this.mockTestRunCriteria.Object.AdapterSourceMap.Keys, testRunCriteriaPassed.AdapterSourceMap.Keys); - CollectionAssert.AreEqual(this.mockTestRunCriteria.Object.AdapterSourceMap.Values, testRunCriteriaPassed.AdapterSourceMap.Values); - Assert.AreEqual(this.mockTestRunCriteria.Object.FrequencyOfRunStatsChangeEvent, testRunCriteriaPassed.TestExecutionContext.FrequencyOfRunStatsChangeEvent); - Assert.AreEqual(this.mockTestRunCriteria.Object.RunStatsChangeEventTimeout, testRunCriteriaPassed.TestExecutionContext.RunStatsChangeEventTimeout); - Assert.AreEqual(this.mockTestRunCriteria.Object.TestRunSettings, testRunCriteriaPassed.RunSettings); - } + [TestMethod] + public void StartTestRunShouldInitiateTestRunForSourcesThroughTheServer() + { + TestRunCriteriaWithSources? testRunCriteriaPassed = null; + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.StartTestRun(It.IsAny(), _testExecutionManager)) + .Callback( + (TestRunCriteriaWithSources criteria, IInternalTestRunEventsHandler sink) => testRunCriteriaPassed = criteria); + + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); + + Assert.IsNotNull(testRunCriteriaPassed); + CollectionAssert.AreEqual(_mockTestRunCriteria.Object.AdapterSourceMap!.Keys, testRunCriteriaPassed.AdapterSourceMap.Keys); + CollectionAssert.AreEqual(_mockTestRunCriteria.Object.AdapterSourceMap.Values, testRunCriteriaPassed.AdapterSourceMap.Values); + Assert.AreEqual(_mockTestRunCriteria.Object.FrequencyOfRunStatsChangeEvent, testRunCriteriaPassed.TestExecutionContext!.FrequencyOfRunStatsChangeEvent); + Assert.AreEqual(_mockTestRunCriteria.Object.RunStatsChangeEventTimeout, testRunCriteriaPassed.TestExecutionContext.RunStatsChangeEventTimeout); + Assert.AreEqual(_mockTestRunCriteria.Object.TestRunSettings, testRunCriteriaPassed.RunSettings); + } - [TestMethod] - public void StartTestRunShouldInitiateTestRunForTestsThroughTheServer() - { - TestRunCriteriaWithTests testRunCriteriaPassed = null; - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.mockRequestSender.Setup(s => s.StartTestRun(It.IsAny(), this.testExecutionManager)) - .Callback( - (TestRunCriteriaWithTests criteria, ITestRunEventsHandler sink) => - { - testRunCriteriaPassed = criteria; - }); - var runCriteria = new Mock( - new List { new TestCase("A.C.M", new System.Uri("executor://dummy"), "source.dll") }, - 10); - - this.testExecutionManager.StartTestRun(runCriteria.Object, null); - - Assert.IsNotNull(testRunCriteriaPassed); - CollectionAssert.AreEqual(runCriteria.Object.Tests.ToList(), testRunCriteriaPassed.Tests.ToList()); - Assert.AreEqual( - runCriteria.Object.FrequencyOfRunStatsChangeEvent, - testRunCriteriaPassed.TestExecutionContext.FrequencyOfRunStatsChangeEvent); - Assert.AreEqual( - runCriteria.Object.RunStatsChangeEventTimeout, - testRunCriteriaPassed.TestExecutionContext.RunStatsChangeEventTimeout); - Assert.AreEqual( - runCriteria.Object.TestRunSettings, - testRunCriteriaPassed.RunSettings); - } + [TestMethod] + public void StartTestRunShouldInitiateTestRunForTestsThroughTheServer() + { + TestRunCriteriaWithTests? testRunCriteriaPassed = null; + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.StartTestRun(It.IsAny(), _testExecutionManager)) + .Callback( + (TestRunCriteriaWithTests criteria, IInternalTestRunEventsHandler sink) => testRunCriteriaPassed = criteria); + var runCriteria = new Mock( + new List { new("A.C.M", new Uri("executor://dummy"), "source.dll") }, + 10); + + _testExecutionManager.StartTestRun(runCriteria.Object, null!); + + Assert.IsNotNull(testRunCriteriaPassed); + CollectionAssert.AreEqual(runCriteria.Object.Tests!.ToList(), testRunCriteriaPassed.Tests.ToList()); + Assert.AreEqual( + runCriteria.Object.FrequencyOfRunStatsChangeEvent, + testRunCriteriaPassed.TestExecutionContext!.FrequencyOfRunStatsChangeEvent); + Assert.AreEqual( + runCriteria.Object.RunStatsChangeEventTimeout, + testRunCriteriaPassed.TestExecutionContext.RunStatsChangeEventTimeout); + Assert.AreEqual( + runCriteria.Object.TestRunSettings, + testRunCriteriaPassed.RunSettings); + } - [TestMethod] - public void CloseShouldSignalToServerSessionEndIfTestHostWasLaunched() - { - string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + [TestMethod] + public void CloseShouldSignalToServerSessionEndIfTestHostWasLaunched() + { + string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings); + _testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings); - this.testExecutionManager.Close(); + _testExecutionManager.Close(); - this.mockRequestSender.Verify(s => s.EndSession(), Times.Once); - } + _mockRequestSender.Verify(s => s.EndSession(), Times.Once); + } - [TestMethod] - public void CloseShouldNotSendSignalToServerSessionEndIfTestHostWasNotLaunched() - { - this.testExecutionManager.Close(); + [TestMethod] + public void CloseShouldNotSendSignalToServerSessionEndIfTestHostWasNotLaunched() + { + _testExecutionManager.Close(); - this.mockRequestSender.Verify(s => s.EndSession(), Times.Never); - } + _mockRequestSender.Verify(s => s.EndSession(), Times.Never); + } - [TestMethod] - public void CloseShouldSignalServerSessionEndEachTime() - { - string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + [TestMethod] + public void CloseShouldSignalServerSessionEndEachTime() + { + string runsettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - this.testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings); + _testExecutionManager.SetupChannel(new List { "source.dll" }, runsettings); - this.testExecutionManager.Close(); - this.testExecutionManager.Close(); + _testExecutionManager.Close(); + _testExecutionManager.Close(); - this.mockRequestSender.Verify(s => s.EndSession(), Times.Exactly(2)); - } + _mockRequestSender.Verify(s => s.EndSession(), Times.Exactly(2)); + } - [TestMethod] - public void CancelShouldNotSendSendTestRunCancelIfCommunicationFails() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + [TestMethod] + public void CancelShouldNotSendSendTestRunCancelIfCommunicationFails() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - this.testExecutionManager.Cancel(It.IsAny()); + _testExecutionManager.Cancel(It.IsAny()); - this.mockRequestSender.Verify(s => s.SendTestRunCancel(), Times.Never); - } + _mockRequestSender.Verify(s => s.SendTestRunCancel(), Times.Never); + } - [TestMethod] - public void AbortShouldSendTestRunAbortIfCommunicationSuccessful() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + [TestMethod] + public void AbortShouldSendTestRunAbortIfCommunicationSuccessful() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - this.testExecutionManager.Abort(It.IsAny()); + _testExecutionManager.Abort(It.IsAny()); - this.mockRequestSender.Verify(s => s.SendTestRunAbort(), Times.Once); - } + _mockRequestSender.Verify(s => s.SendTestRunAbort(), Times.Once); + } - [TestMethod] - public void AbortShouldNotSendTestRunAbortIfCommunicationFails() - { - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + [TestMethod] + public void AbortShouldNotSendTestRunAbortIfCommunicationFails() + { + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - Mock mockTestRunEventsHandler = new Mock(); + Mock mockTestRunEventsHandler = new(); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - this.testExecutionManager.Abort(It.IsAny()); + _testExecutionManager.Abort(It.IsAny()); - this.mockRequestSender.Verify(s => s.SendTestRunAbort(), Times.Never); - } + _mockRequestSender.Verify(s => s.SendTestRunAbort(), Times.Never); + } - [TestMethod] - public void ExecuteTestsCloseTestHostIfRawMessageIfOfTypeExecutionComplete() - { - Mock mockTestRunEventsHandler = new Mock(); + [TestMethod] + public void ExecuteTestsCloseTestHostIfRawMessageIfOfTypeExecutionComplete() + { + Mock mockTestRunEventsHandler = new(); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); - this.mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.IsAny())).Returns(MessageType.ExecutionComplete); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.TestMessage, It.IsAny())).Returns(MessageType.TestMessage); + _mockDataSerializer.Setup(ds => ds.SerializePayload(MessageType.ExecutionComplete, It.IsAny())).Returns(MessageType.ExecutionComplete); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => + { + var messageType = rawMessage.Contains(MessageType.ExecutionComplete) ? MessageType.ExecutionComplete : MessageType.TestMessage; + var message = new Message { - var messageType = rawMessage.Contains(MessageType.ExecutionComplete) ? MessageType.ExecutionComplete : MessageType.TestMessage; - var message = new Message - { - MessageType = messageType - }; + MessageType = messageType + }; - return message; - }); + return message; + }); - // Act. - this.testExecutionManager.StartTestRun(mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + // Act. + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - // Verify - this.mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Once); - } + // Verify + _mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Once); + } - [TestMethod] - public void ExecuteTestsShouldNotCloseTestHostIfRawMessageIsNotOfTypeExecutionComplete() - { - Mock mockTestRunEventsHandler = new Mock(); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + [TestMethod] + public void ExecuteTestsShouldNotCloseTestHostIfRawMessageIsNotOfTypeExecutionComplete() + { + Mock mockTestRunEventsHandler = new(); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => + { + var message = new Message { - var message = new Message - { - MessageType = MessageType.ExecutionInitialize - }; + MessageType = MessageType.ExecutionInitialize + }; + + return message; + }); + + // Act. + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); - return message; + // Verify + _mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Never); + } + + [TestMethod] + public void ExecutionManagerShouldPassOnTestRunStatsChange() + { + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + Mock mockTestRunEventsHandler = new(); + var runCriteria = new Mock( + new List { new("A.C.M", new Uri("executor://dummy"), "source.dll") }, + 10); + var testRunChangedArgs = new TestRunChangedEventArgs(null, null, null); + + _testExecutionManager = GetProxyExecutionManager(); + + var completePayload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = null, + RunAttachments = null, + TestRunCompleteArgs = null + }; + var completeMessage = new Message() { MessageType = MessageType.ExecutionComplete, Payload = null }; + SetupChannelMessage(MessageType.StartTestExecutionWithTests, MessageType.TestRunStatsChange, testRunChangedArgs); + + mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + () => + { + _mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())).Returns(completeMessage); + _mockDataSerializer.Setup(ds => ds.DeserializePayload(completeMessage)).Returns(completePayload); + _mockDataSerializer.Setup(ds => ds.SerializeMessage(It.IsAny())) + .Returns(MessageType.SessionEnd); + RaiseMessageReceived(MessageType.ExecutionComplete); }); - // Act. - this.testExecutionManager.StartTestRun(mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + var waitHandle = new AutoResetEvent(false); + mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())).Callback(() => waitHandle.Set()); - // Verify - this.mockTestHostManager.Verify(mthm => mthm.CleanTestHostAsync(It.IsAny()), Times.Never); - } + // Act. + _testExecutionManager.StartTestRun(runCriteria.Object, mockTestRunEventsHandler.Object); + waitHandle.WaitOne(); - [TestMethod] - public void ExecutionManagerShouldPassOnTestRunStatsChange() - { - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - Mock mockTestRunEventsHandler = new Mock(); - var runCriteria = new Mock( - new List { new TestCase("A.C.M", new System.Uri("executor://dummy"), "source.dll") }, - 10); - var testRunChangedArgs = new TestRunChangedEventArgs(null, null, null); + // Verify + mockTestRunEventsHandler.Verify(mtdeh => mtdeh.HandleTestRunStatsChange(It.IsAny()), Times.Once); + } - this.testExecutionManager = this.GetProxyExecutionManager(); + [TestMethod] + public void ExecutionManagerShouldPassOnHandleLogMessage() + { + Mock mockTestRunEventsHandler = new(); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); - var completePayload = new TestRunCompletePayload() + _mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => + { + var message = new Message { - ExecutorUris = null, - LastRunTests = null, - RunAttachments = null, - TestRunCompleteArgs = null + MessageType = MessageType.TestMessage }; - var completeMessage = new Message() { MessageType = MessageType.ExecutionComplete, Payload = null }; - this.SetupChannelMessage(MessageType.StartTestExecutionWithTests, MessageType.TestRunStatsChange, testRunChangedArgs); - - mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - () => - { - this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())).Returns(completeMessage); - this.mockDataSerializer.Setup(ds => ds.DeserializePayload(completeMessage)).Returns(completePayload); - this.mockDataSerializer.Setup(ds => ds.SerializeMessage(It.IsAny())) - .Returns(MessageType.SessionEnd); - this.RaiseMessageReceived(MessageType.ExecutionComplete); - }); - - var waitHandle = new AutoResetEvent(false); - mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())).Callback(() => waitHandle.Set()); - - // Act. - this.testExecutionManager.StartTestRun(runCriteria.Object, mockTestRunEventsHandler.Object); - waitHandle.WaitOne(); - - // Verify - mockTestRunEventsHandler.Verify(mtdeh => mtdeh.HandleTestRunStatsChange(It.IsAny()), Times.Once); - } - [TestMethod] - public void ExecutionManagerShouldPassOnHandleLogMessage() - { - Mock mockTestRunEventsHandler = new Mock(); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(false); + return message; + }); - this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(It.IsAny())).Returns(() => - { - var message = new Message - { - MessageType = MessageType.TestMessage - }; + // Act. + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + + // Verify + mockTestRunEventsHandler.Verify(mtdeh => mtdeh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once); + } - return message; + [TestMethod] + public void ExecutionManagerShouldPassOnLaunchProcessWithDebuggerAttached() + { + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + Mock mockTestRunEventsHandler = new(); + var runCriteria = new Mock( + new List { new("A.C.M", new Uri("executor://dummy"), "source.dll") }, + 10); + var payload = new TestProcessStartInfo(); + + _testExecutionManager = GetProxyExecutionManager(); + + var completePayload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = null, + RunAttachments = null, + TestRunCompleteArgs = null + }; + var completeMessage = new Message() { MessageType = MessageType.ExecutionComplete, Payload = null }; + SetupChannelMessage(MessageType.StartTestExecutionWithTests, + MessageType.LaunchAdapterProcessWithDebuggerAttached, payload); + + mockTestRunEventsHandler.Setup(mh => mh.LaunchProcessWithDebuggerAttached(It.IsAny())).Callback( + () => + { + _mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())).Returns(completeMessage); + _mockDataSerializer.Setup(ds => ds.DeserializePayload(completeMessage)).Returns(completePayload); + _mockDataSerializer.Setup(ds => ds.SerializeMessage(It.IsAny())) + .Returns(MessageType.SessionEnd); + RaiseMessageReceived(MessageType.ExecutionComplete); }); - // Act. - this.testExecutionManager.StartTestRun(mockTestRunCriteria.Object, mockTestRunEventsHandler.Object); + var waitHandle = new AutoResetEvent(false); + mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())).Callback(() => waitHandle.Set()); - // Verify - mockTestRunEventsHandler.Verify(mtdeh => mtdeh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once); - } + _testExecutionManager.StartTestRun(runCriteria.Object, mockTestRunEventsHandler.Object); - [TestMethod] - public void ExecutionManagerShouldPassOnLaunchProcessWithDebuggerAttached() - { - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - Mock mockTestRunEventsHandler = new Mock(); - var runCriteria = new Mock( - new List { new TestCase("A.C.M", new System.Uri("executor://dummy"), "source.dll") }, - 10); - var payload = new TestProcessStartInfo(); - - this.testExecutionManager = this.GetProxyExecutionManager(); + waitHandle.WaitOne(); - var completePayload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = null, - RunAttachments = null, - TestRunCompleteArgs = null - }; - var completeMessage = new Message() { MessageType = MessageType.ExecutionComplete, Payload = null }; - this.SetupChannelMessage(MessageType.StartTestExecutionWithTests, - MessageType.LaunchAdapterProcessWithDebuggerAttached, payload); - - mockTestRunEventsHandler.Setup(mh => mh.LaunchProcessWithDebuggerAttached(It.IsAny())).Callback( - () => - { - this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny())).Returns(completeMessage); - this.mockDataSerializer.Setup(ds => ds.DeserializePayload(completeMessage)).Returns(completePayload); - this.mockDataSerializer.Setup(ds => ds.SerializeMessage(It.IsAny())) - .Returns(MessageType.SessionEnd); - this.RaiseMessageReceived(MessageType.ExecutionComplete); - }); - - var waitHandle = new AutoResetEvent(false); - mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())).Callback(() => waitHandle.Set()); - - this.testExecutionManager.StartTestRun(runCriteria.Object, mockTestRunEventsHandler.Object); - - waitHandle.WaitOne(); - - // Verify - mockTestRunEventsHandler.Verify(mtdeh => mtdeh.LaunchProcessWithDebuggerAttached(It.IsAny()), Times.Once); - } + // Verify + mockTestRunEventsHandler.Verify(mtdeh => mtdeh.LaunchProcessWithDebuggerAttached(It.IsAny()), Times.Once); + } - [TestMethod] - public void StartTestRunShouldAttemptToTakeProxyFromPoolIfProxyIsNull() - { - var testSessionInfo = new TestSessionInfo(); + [TestMethod] + public void StartTestRunShouldAttemptToTakeProxyFromPoolIfProxyIsNull() + { + var testSessionInfo = new TestSessionInfo(); - Func + Func proxyOperationManagerCreator = ( string source, ProxyExecutionManager proxyExecutionManager) => @@ -756,117 +748,84 @@ public void StartTestRunShouldAttemptToTakeProxyFromPoolIfProxyIsNull() var proxyOperationManager = TestSessionPool.Instance.TryTakeProxy( testSessionInfo, source, - string.Empty); + string.Empty, + _mockRequestData.Object); - return proxyOperationManager; + return proxyOperationManager!; }; - var testExecutionManager = new ProxyExecutionManager( - testSessionInfo, - proxyOperationManagerCreator, - false); + var testExecutionManager = new ProxyExecutionManager( + testSessionInfo, + proxyOperationManagerCreator, + false); - var mockTestSessionPool = new Mock(); - TestSessionPool.Instance = mockTestSessionPool.Object; + var mockTestSessionPool = new Mock(); + TestSessionPool.Instance = mockTestSessionPool.Object; - try - { - var mockProxyOperationManager = new Mock( - this.mockRequestData.Object, - this.mockRequestSender.Object, - this.mockTestHostManager.Object); - mockTestSessionPool.Setup( + try + { + var mockProxyOperationManager = new Mock( + _mockRequestData.Object, + _mockRequestSender.Object, + _mockTestHostManager.Object, + null); + mockTestSessionPool.Setup( tsp => tsp.TryTakeProxy( testSessionInfo, It.IsAny(), - It.IsAny())) - .Returns(mockProxyOperationManager.Object); + It.IsAny(), + _mockRequestData.Object)) + .Returns(mockProxyOperationManager.Object); - testExecutionManager.Initialize(true); - testExecutionManager.StartTestRun( - this.mockTestRunCriteria.Object, - new Mock().Object); + testExecutionManager.Initialize(true); + testExecutionManager.StartTestRun( + _mockTestRunCriteria.Object, + new Mock().Object); - mockTestSessionPool.Verify( - tsp => tsp.TryTakeProxy( - testSessionInfo, - It.IsAny(), - It.IsAny()), - Times.Once); - } - finally - { - TestSessionPool.Instance = null; - } + mockTestSessionPool.Verify( + tsp => tsp.TryTakeProxy( + testSessionInfo, + It.IsAny(), + It.IsAny(), + _mockRequestData.Object), + Times.Once); } - - private void SignalEvent(ManualResetEvent manualResetEvent) + finally { - // Wait for the 100 ms. - Task.Delay(200).Wait(); - - manualResetEvent.Set(); + TestSessionPool.Instance = null; } + } - private void InvokeAndVerifyStartTestRun(bool skipDefaultAdapters) - { - TestPluginCache.Instance = null; - TestPluginCache.Instance.DefaultExtensionPaths = new List { "default1.dll", "default2.dll" }; - TestPluginCache.Instance.UpdateExtensions(new List { "filterTestAdapter.dll" }, false); - TestPluginCache.Instance.UpdateExtensions(new List { "unfilter.dll" }, true); + private static void SignalEvent(ManualResetEvent manualResetEvent) + { + // Wait for the 100 ms. + Task.Delay(200).Wait(); - try - { - this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - this.mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => extensions); - this.mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); - var expectedResult = TestPluginCache.Instance.GetExtensionPaths(TestPlatformConstants.TestAdapterEndsWithPattern, skipDefaultAdapters); + manualResetEvent.Set(); + } - this.testExecutionManager.Initialize(skipDefaultAdapters); - this.testExecutionManager.StartTestRun(this.mockTestRunCriteria.Object, null); + private void InvokeAndVerifyStartTestRun(bool skipDefaultAdapters) + { + TestPluginCache.Instance = null; + TestPluginCache.Instance!.DefaultExtensionPaths = new List { "default1.dll", "default2.dll" }; + TestPluginCache.Instance.UpdateExtensions(new List { "filterTestAdapter.dll" }, false); + TestPluginCache.Instance.UpdateExtensions(new List { "unfilter.dll" }, true); - this.mockRequestSender.Verify(s => s.InitializeExecution(expectedResult), Times.Once); - } - finally - { - TestPluginCache.Instance = null; - } - } + try + { + _mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + _mockTestHostManager.Setup(th => th.GetTestPlatformExtensions(It.IsAny>(), It.IsAny>())).Returns((IEnumerable sources, IEnumerable extensions) => extensions); + _mockRequestSender.Setup(s => s.WaitForRequestHandlerConnection(It.IsAny(), It.IsAny())).Returns(true); + var expectedResult = TestPluginCache.Instance.GetExtensionPaths(TestPlatformConstants.TestAdapterEndsWithPattern, skipDefaultAdapters); + + _testExecutionManager.Initialize(skipDefaultAdapters); + _testExecutionManager.StartTestRun(_mockTestRunCriteria.Object, null!); - //private void SetupReceiveRawMessageAsyncAndDeserializeMessageAndInitialize() - //{ - // var connectionInfo = new TestHostConnectionInfo - // { - // Endpoint = IPAddress.Loopback + ":0", - // Role = ConnectionRole.Client, - // Transport = Transport.Sockets - // }; - // this.mockCommunicationEndpoint = new Mock(); - // this.mockDataSerializer = new Mock(); - // this.testRequestSender = new TestRequestSender(this.mockCommunicationEndpoint.Object, connectionInfo, this.mockDataSerializer.Object, this.protocolConfig, CLIENTPROCESSEXITWAIT); - // this.mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => - // { - // this.mockCommunicationEndpoint.Raise( - // s => s.Connected += null, - // this.mockCommunicationEndpoint.Object, - // new ConnectedEventArgs(this.mockChannel.Object)); - // }); - // this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, this.protocolConfig.Version); - - // this.testRequestSender.InitializeCommunication(); - - // this.testExecutionManager = new ProxyExecutionManager(this.mockRequestData.Object, this.testRequestSender, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.clientConnectionTimeout); - //} - - //private void SetupChannelMessage(string messageType, string returnMessageType, TPayload returnPayload) - //{ - // this.mockChannel.Setup(mc => mc.Send(It.Is(s => s.Contains(messageType)))) - // .Callback(() => this.mockChannel.Raise(c => c.MessageReceived += null, this.mockChannel.Object, new MessageReceivedEventArgs { Data = messageType })); - - // this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny())).Returns(messageType); - // this.mockDataSerializer.Setup(ds => ds.SerializePayload(It.Is(s => s.Equals(messageType)), It.IsAny(), It.IsAny())).Returns(messageType); - // this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.Is(s => s.Equals(messageType)))).Returns(new Message { MessageType = returnMessageType }); - // this.mockDataSerializer.Setup(ds => ds.DeserializePayload(It.Is(m => m.MessageType.Equals(messageType)))).Returns(returnPayload); - //} + _mockRequestSender.Verify(s => s.InitializeExecution(expectedResult), Times.Once); + } + finally + { + TestPluginCache.Instance = null; + } } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerWithDataCollectionTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerWithDataCollectionTests.cs index b8e2819084..eaf3784085 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerWithDataCollectionTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyExecutionManagerWithDataCollectionTests.cs @@ -1,232 +1,228 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ProxyExecutionManagerWithDataCollectionTests { - using System; - using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class ProxyExecutionManagerWithDataCollectionTests + private readonly ProxyExecutionManager _testExecutionManager; + private readonly Mock _mockTestHostManager; + private readonly Mock _mockRequestSender; + private readonly Mock _mockDataCollectionManager; + private readonly Mock _mockProcessHelper; + private readonly ProxyExecutionManagerWithDataCollection _proxyExecutionManager; + private readonly Mock _mockDataSerializer; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockFileHelper; + + public ProxyExecutionManagerWithDataCollectionTests() { - private ProxyExecutionManager testExecutionManager; - - private Mock mockTestHostManager; - - private Mock mockRequestSender; - - private Mock mockDataCollectionManager; - - private Mock mockProcessHelper; + _mockTestHostManager = new Mock(); + _mockRequestSender = new Mock(); + _mockDataSerializer = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockFileHelper = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _testExecutionManager = new ProxyExecutionManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, Framework.DefaultFramework, _mockDataSerializer.Object, _mockFileHelper.Object); + _mockDataCollectionManager = new Mock(); + _mockProcessHelper = new Mock(); + _proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, Framework.DefaultFramework, _mockDataCollectionManager.Object); + } - private ProxyExecutionManagerWithDataCollection proxyExecutionManager; + [TestMethod] + public void InitializeShouldInitializeDataCollectionProcessIfDataCollectionIsEnabled() + { + _proxyExecutionManager.Initialize(false); - private Mock mockDataSerializer; + _mockDataCollectionManager.Verify(dc => dc.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } - private Mock mockRequestData; + [TestMethod] + public void InitializeShouldThrowExceptionIfThrownByDataCollectionManager() + { + _mockDataCollectionManager.Setup(x => x.Initialize()).Throws(); - private Mock mockMetricsCollection; + Assert.ThrowsException(() => _proxyExecutionManager.Initialize(false)); + } - private Mock mockFileHelper; + [TestMethod] + public void InitializeShouldCallAfterTestRunIfExceptionIsThrownWhileCreatingDataCollectionProcess() + { + _mockDataCollectionManager.Setup(dc => dc.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Throws(new Exception("MyException")); - [TestInitialize] - public void TestInit() - { - this.mockTestHostManager = new Mock(); - this.mockRequestSender = new Mock(); - this.mockDataSerializer = new Mock(); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockFileHelper = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.testExecutionManager = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.mockFileHelper.Object); - this.mockDataCollectionManager = new Mock(); - this.mockProcessHelper = new Mock(); - this.proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); - } + Assert.ThrowsException(() => _proxyExecutionManager.Initialize(false)); - [TestMethod] - public void InitializeShouldInitializeDataCollectionProcessIfDataCollectionIsEnabled() - { - this.proxyExecutionManager.Initialize(false); + _mockDataCollectionManager.Verify(dc => dc.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + _mockDataCollectionManager.Verify(dc => dc.AfterTestRunEnd(It.IsAny(), It.IsAny()), Times.Once); + } - mockDataCollectionManager.Verify(dc => dc.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + [TestMethod] + public void InitializeShouldSaveExceptionMessagesIfThrownByDataCollectionProcess() + { + var mockRequestSender = new Mock(); + var testSources = new List() { "abc.dll", "efg.dll" }; + mockRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, It.IsAny(), It.IsAny())).Throws(new Exception("MyException")); + mockRequestSender.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); + + var mockDataCollectionLauncher = new Mock(); + var proxyDataCollectonManager = new ProxyDataCollectionManager(_mockRequestData.Object, string.Empty, testSources, mockRequestSender.Object, _mockProcessHelper.Object, mockDataCollectionLauncher.Object); + + var proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, Framework.DefaultFramework, proxyDataCollectonManager); + proxyExecutionManager.Initialize(false); + Assert.IsNotNull(proxyExecutionManager.DataCollectionRunEventsHandler.Messages); + Assert.AreEqual(TestMessageLevel.Error, proxyExecutionManager.DataCollectionRunEventsHandler.Messages[0].Item1); + StringAssert.Contains(proxyExecutionManager.DataCollectionRunEventsHandler.Messages[0].Item2, "MyException"); + } - [TestMethod] - public void InitializeShouldThrowExceptionIfThrownByDataCollectionManager() - { - this.mockDataCollectionManager.Setup(x => x.Initialize()).Throws(); + [TestMethod] + public void UpdateTestProcessStartInfoShouldUpdateDataCollectionPortArg() + { + _mockDataCollectionManager.Setup(x => x.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Returns(DataCollectionParameters.CreateDefaultParameterInstance()); - Assert.ThrowsException(() => - { - this.proxyExecutionManager.Initialize(false); - }); - } + var testProcessStartInfo = new TestProcessStartInfo(); + testProcessStartInfo.Arguments = string.Empty; - [TestMethod] - public void InitializeShouldCallAfterTestRunIfExceptionIsThrownWhileCreatingDataCollectionProcess() - { - mockDataCollectionManager.Setup(dc => dc.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Throws(new Exception("MyException")); + var proxyExecutionManager = new TestableProxyExecutionManagerWithDataCollection(_mockRequestSender.Object, _mockTestHostManager.Object, _mockDataCollectionManager.Object); + proxyExecutionManager.UpdateTestProcessStartInfoWrapper(testProcessStartInfo); - Assert.ThrowsException(() => - { - this.proxyExecutionManager.Initialize(false); - }); + Assert.IsTrue(testProcessStartInfo.Arguments.Contains("--datacollectionport 0")); + } - mockDataCollectionManager.Verify(dc => dc.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - mockDataCollectionManager.Verify(dc => dc.AfterTestRunEnd(It.IsAny(), It.IsAny()), Times.Once); - } + [TestMethod] + public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgTrueIfTelemetryOptedIn() + { + var mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); - [TestMethod] - public void InitializeShouldSaveExceptionMessagesIfThrownByDataCollectionProcess() - { - var mockRequestSender = new Mock(); - var testSources = new List() { "abc.dll", "efg.dll" }; - mockRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, It.IsAny(), It.IsAny())).Throws(new Exception("MyException")); - mockRequestSender.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); - - var mockDataCollectionLauncher = new Mock(); - var proxyDataCollectonManager = new ProxyDataCollectionManager(this.mockRequestData.Object, string.Empty, testSources, mockRequestSender.Object, this.mockProcessHelper.Object, mockDataCollectionLauncher.Object); - - var proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, proxyDataCollectonManager); - proxyExecutionManager.Initialize(false); - Assert.IsNotNull(proxyExecutionManager.DataCollectionRunEventsHandler.Messages); - Assert.AreEqual(TestMessageLevel.Error, proxyExecutionManager.DataCollectionRunEventsHandler.Messages[0].Item1); - StringAssert.Contains(proxyExecutionManager.DataCollectionRunEventsHandler.Messages[0].Item2, "MyException"); - } + _mockDataCollectionManager.Setup(x => x.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Returns(DataCollectionParameters.CreateDefaultParameterInstance()); - [TestMethod] - public void UpdateTestProcessStartInfoShouldUpdateDataCollectionPortArg() - { - this.mockDataCollectionManager.Setup(x => x.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Returns(DataCollectionParameters.CreateDefaultParameterInstance()); + var testProcessStartInfo = new TestProcessStartInfo(); + testProcessStartInfo.Arguments = string.Empty; - var testProcessStartInfo = new TestProcessStartInfo(); - testProcessStartInfo.Arguments = string.Empty; + var proxyExecutionManager = new TestableProxyExecutionManagerWithDataCollection(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, _mockDataCollectionManager.Object); - var proxyExecutionManager = new TestableProxyExecutionManagerWithDataCollection(this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); - proxyExecutionManager.UpdateTestProcessStartInfoWrapper(testProcessStartInfo); + // Act. + proxyExecutionManager.UpdateTestProcessStartInfoWrapper(testProcessStartInfo); - Assert.IsTrue(testProcessStartInfo.Arguments.Contains("--datacollectionport 0")); - } + // Verify. + Assert.IsTrue(testProcessStartInfo.Arguments.Contains("--telemetryoptedin true")); + } - [TestMethod] - public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgTrueIfTelemetryOptedIn() - { - var mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); + [TestMethod] + public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgFalseIfTelemetryOptedOut() + { + var mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(false); - this.mockDataCollectionManager.Setup(x => x.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Returns(DataCollectionParameters.CreateDefaultParameterInstance()); + _mockDataCollectionManager.Setup(x => x.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Returns(DataCollectionParameters.CreateDefaultParameterInstance()); - var testProcessStartInfo = new TestProcessStartInfo(); - testProcessStartInfo.Arguments = string.Empty; + var testProcessStartInfo = new TestProcessStartInfo(); + testProcessStartInfo.Arguments = string.Empty; - var proxyExecutionManager = new TestableProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); + var proxyExecutionManager = new TestableProxyExecutionManagerWithDataCollection(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, _mockDataCollectionManager.Object); - // Act. - proxyExecutionManager.UpdateTestProcessStartInfoWrapper(testProcessStartInfo); + // Act. + proxyExecutionManager.UpdateTestProcessStartInfoWrapper(testProcessStartInfo); - // Verify. - Assert.IsTrue(testProcessStartInfo.Arguments.Contains("--telemetryoptedin true")); - } + // Verify. + Assert.IsTrue(testProcessStartInfo.Arguments.Contains("--telemetryoptedin false")); + } - [TestMethod] - public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgFalseIfTelemetryOptedOut() + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldUpdateEnvironmentVariables() + { + // Setup + var mockRunEventsHandler = new Mock(); + TestProcessStartInfo? launchedStartInfo = null; + mockRunEventsHandler.Setup(runHandler => runHandler.LaunchProcessWithDebuggerAttached(It.IsAny())).Callback + ((TestProcessStartInfo startInfo) => launchedStartInfo = startInfo); + var proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, Framework.DefaultFramework, _mockDataCollectionManager.Object); + var mockTestRunCriteria = new Mock(new List { "source.dll" }, 10); + var testProcessStartInfo = new TestProcessStartInfo { - var mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(false); - - this.mockDataCollectionManager.Setup(x => x.BeforeTestRunStart(It.IsAny(), It.IsAny(), It.IsAny())).Returns(DataCollectionParameters.CreateDefaultParameterInstance()); - - var testProcessStartInfo = new TestProcessStartInfo(); - testProcessStartInfo.Arguments = string.Empty; + Arguments = string.Empty, + EnvironmentVariables = new Dictionary + { + {"variable1", "value1" }, + {"variable2", "value2" } + } + }; - var proxyExecutionManager = new TestableProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); + string raw1 = JsonDataSerializer.Instance.SerializePayload(MessageType.TelemetryEventMessage, new TelemetryEvent("aaa", new Dictionary())); + string raw2 = JsonDataSerializer.Instance.SerializePayload(MessageType.TelemetryEventMessage, new TelemetryEvent("aaa", new Dictionary())); - // Act. - proxyExecutionManager.UpdateTestProcessStartInfoWrapper(testProcessStartInfo); + proxyExecutionManager.DataCollectionRunEventsHandler.HandleRawMessage(raw1); + proxyExecutionManager.DataCollectionRunEventsHandler.HandleRawMessage(raw2); - // Verify. - Assert.IsTrue(testProcessStartInfo.Arguments.Contains("--telemetryoptedin false")); - } + // Act. + proxyExecutionManager.StartTestRun(mockTestRunCriteria.Object, mockRunEventsHandler.Object); + proxyExecutionManager.LaunchProcessWithDebuggerAttached(testProcessStartInfo); - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldUpdateEnvironmentVariables() + // Verify. + Assert.IsTrue(launchedStartInfo != null, "Failed to get the start info"); + foreach (var envVaribale in testProcessStartInfo.EnvironmentVariables) { - // Setup - var mockRunEventsHandler = new Mock(); - TestProcessStartInfo launchedStartInfo = null; - mockRunEventsHandler.Setup(runHandler => runHandler.LaunchProcessWithDebuggerAttached(It.IsAny())).Callback - ((TestProcessStartInfo startInfo) => { launchedStartInfo = startInfo; }); - var proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); - var mockTestRunCriteria = new Mock(new List { "source.dll" }, 10); - var testProcessStartInfo = new TestProcessStartInfo - { - Arguments = string.Empty, - EnvironmentVariables = new Dictionary - { - {"variable1", "value1" }, - {"variable2", "value2" } - } - }; - - // Act. - proxyExecutionManager.StartTestRun(mockTestRunCriteria.Object, mockRunEventsHandler.Object); - proxyExecutionManager.LaunchProcessWithDebuggerAttached(testProcessStartInfo); - - // Verify. - Assert.IsTrue(launchedStartInfo != null, "Failed to get the start info"); - foreach (var envVaribale in testProcessStartInfo.EnvironmentVariables) - { - Assert.AreEqual(envVaribale.Value, launchedStartInfo.EnvironmentVariables[envVaribale.Key], $"Expected environment variable {envVaribale.Key} : {envVaribale.Value} not found"); - } + Assert.AreEqual(envVaribale.Value, launchedStartInfo.EnvironmentVariables![envVaribale.Key], $"Expected environment variable {envVaribale.Key} : {envVaribale.Value} not found"); } - [TestMethod] - public void TestHostManagerHostLaunchedTriggerShouldSendTestHostLaunchedEvent() - { - var proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object); + mockRunEventsHandler.Verify(r => r.HandleRawMessage(raw1)); + mockRunEventsHandler.Verify(r => r.HandleRawMessage(raw2)); + Assert.AreEqual(0, proxyExecutionManager.DataCollectionRunEventsHandler.RawMessages.Count); + } - this.mockTestHostManager.Raise(x => x.HostLaunched += null, new HostProviderEventArgs("launched", 0, 1234)); + [TestMethod] + public void TestHostManagerHostLaunchedTriggerShouldSendTestHostLaunchedEvent() + { + var proxyExecutionManager = new ProxyExecutionManagerWithDataCollection(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, Framework.DefaultFramework, _mockDataCollectionManager.Object); - this.mockDataCollectionManager.Verify(x => x.TestHostLaunched(It.IsAny())); - } + _mockTestHostManager.Raise(x => x.HostLaunched += null, new HostProviderEventArgs("launched", 0, 1234)); + + _mockDataCollectionManager.Verify(x => x.TestHostLaunched(It.IsAny())); } +} - internal class TestableProxyExecutionManagerWithDataCollection : ProxyExecutionManagerWithDataCollection +internal class TestableProxyExecutionManagerWithDataCollection : ProxyExecutionManagerWithDataCollection +{ + public TestableProxyExecutionManagerWithDataCollection(ITestRequestSender testRequestSender, ITestRuntimeProvider testHostManager, IProxyDataCollectionManager proxyDataCollectionManager) : base(new RequestData { MetricsCollection = new NoOpMetricsCollection() }, testRequestSender, testHostManager, Framework.DefaultFramework, proxyDataCollectionManager) { - public TestableProxyExecutionManagerWithDataCollection(ITestRequestSender testRequestSender, ITestRuntimeProvider testHostManager, IProxyDataCollectionManager proxyDataCollectionManager) : base(new RequestData { MetricsCollection = new NoOpMetricsCollection() }, testRequestSender, testHostManager, proxyDataCollectionManager) - { - } + } - public TestableProxyExecutionManagerWithDataCollection(IRequestData requestData, ITestRequestSender testRequestSender, ITestRuntimeProvider testHostManager, IProxyDataCollectionManager proxyDataCollectionManager) : base(requestData, testRequestSender, testHostManager, proxyDataCollectionManager) - { - } + public TestableProxyExecutionManagerWithDataCollection(IRequestData requestData, ITestRequestSender testRequestSender, ITestRuntimeProvider testHostManager, IProxyDataCollectionManager proxyDataCollectionManager) : base(requestData, testRequestSender, testHostManager, Framework.DefaultFramework, proxyDataCollectionManager) + { + } - public TestProcessStartInfo UpdateTestProcessStartInfoWrapper(TestProcessStartInfo testProcessStartInfo) - { - return this.UpdateTestProcessStartInfo(testProcessStartInfo); - } + public TestProcessStartInfo UpdateTestProcessStartInfoWrapper(TestProcessStartInfo testProcessStartInfo) + { + return UpdateTestProcessStartInfo(testProcessStartInfo); + } - public override TestProcessStartInfo UpdateTestProcessStartInfo(TestProcessStartInfo testProcessStartInfo) - { - return base.UpdateTestProcessStartInfo(testProcessStartInfo); - } + public override TestProcessStartInfo UpdateTestProcessStartInfo(TestProcessStartInfo testProcessStartInfo) + { + return base.UpdateTestProcessStartInfo(testProcessStartInfo); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyOperationManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyOperationManagerTests.cs index c1d95923f2..a38583a79e 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyOperationManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyOperationManagerTests.cs @@ -1,566 +1,599 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Client +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.Net; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ProxyOperationManagerTests : ProxyBaseManagerTests { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Globalization; - using System.Linq; - using System.Net; - using System.Threading; - using System.Threading.Tasks; + private const int Clientprocessexitwait = 10 * 1000; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private static readonly int ConnectionTimeout = EnvironmentHelper.DefaultConnectionTimeout * 1000; + private static readonly string DefaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + private static readonly string TimoutErrorMessage = + "vstest.console process failed to connect to testhost process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; - using Moq; + private readonly ProxyOperationManager _testOperationManager; + private readonly Mock _mockRequestSender; + private readonly Mock _mockRequestData; - [TestClass] - public class ProxyOperationManagerTests : ProxyBaseManagerTests + private Mock? _mockProcessHelper; + private Mock? _mockRunsettingHelper; + private Mock? _mockWindowsRegistry; + private Mock? _mockEnvironmentVariableHelper; + private Mock? _mockFileHelper; + private Mock? _mockEnvironment; + + public ProxyOperationManagerTests() { - private const int CLIENTPROCESSEXITWAIT = 10 * 1000; + _mockRequestSender = new Mock(); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(true); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new Mock().Object); + _testOperationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object); + } - private readonly ProxyOperationManager testOperationManager; + [TestCleanup] + public void Cleanup() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); + } - private readonly Mock mockRequestSender; + [TestMethod] + public void SetupChannelShouldLaunchTestHost() + { + var expectedStartInfo = new TestProcessStartInfo(); + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); + _mockTestHostManager.Setup( + th => th.GetTestHostProcessStartInfo(Array.Empty(), It.IsAny>(), It.IsAny())) + .Returns(expectedStartInfo); - private Mock mockProcessHelper; + _testOperationManager.SetupChannel([], DefaultRunSettings); - private Mock mockRunsettingHelper; + _mockTestHostManager.Verify(thl => thl.LaunchTestHostAsync(It.Is(si => si == expectedStartInfo), It.IsAny()), Times.Once); + } - private Mock mockWindowsRegistry; + [TestMethod] + public void SetupChannelShouldCreateTimestampedLogFileForHost() + { + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); + EqtTrace.InitializeTrace("log.txt", PlatformTraceLevel.Verbose); + + _testOperationManager.SetupChannel([], DefaultRunSettings); + + _mockTestHostManager.Verify( + th => + th.GetTestHostProcessStartInfo( + It.IsAny>(), + It.IsAny>(), + It.Is( + t => t.LogFile!.Contains("log.host." + DateTime.Now.ToString("yy-MM-dd", CultureInfo.CurrentCulture)) + && t.LogFile.Contains("_" + Environment.CurrentManagedThreadId + ".txt")))); +#if NETFRAMEWORK + EqtTrace.TraceLevel = TraceLevel.Off; +#else + EqtTrace.TraceLevel = PlatformTraceLevel.Off; +#endif + } - private Mock mockEnvironmentVariableHelper; + [TestMethod] + [DataRow("Dummy", true, false, false)] + [DataRow(ProxyOperationManager.DefaultTesthostFriendlyName, true, true, true)] + [DataRow(ProxyOperationManager.DotnetTesthostFriendlyName, true, true, true)] + public void SetupChannelOutcomeShouldTakeTesthostSessionSupportIntoAccount( + string testhostFriendlyName, + bool isTestSessionEnabled, + bool expectedCompatibilityCheckResult, + bool expectedSetupResult) + { + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); - private Mock mockFileHelper; + var testOperationManager = new TestableProxyOperationManager( + _mockRequestData.Object, + _mockRequestSender.Object, + _mockTestHostManager.Object) + { + IsTestSessionEnabled = isTestSessionEnabled, + TesthostFriendlyName = testhostFriendlyName + }; - private Mock mockEnvironment; + Assert.IsTrue(testOperationManager.IsTesthostCompatibleWithTestSessions() == expectedCompatibilityCheckResult); + Assert.IsTrue(testOperationManager.SetupChannel([], DefaultRunSettings) == expectedSetupResult); + } - private Mock mockRequestData; + [TestMethod] + public void SetupChannelShouldAddRunnerProcessIdForTestHost() + { + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); - private int connectionTimeout = EnvironmentHelper.DefaultConnectionTimeout * 1000; + _testOperationManager.SetupChannel([], DefaultRunSettings); - private string defaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif - private static readonly string TimoutErrorMessage = - "vstest.console process failed to connect to testhost process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; + _mockTestHostManager.Verify( + th => + th.GetTestHostProcessStartInfo( + It.IsAny>(), + It.IsAny>(), + It.Is(t => t.RunnerProcessId.Equals(pid)))); + } - public ProxyOperationManagerTests() - { - this.mockRequestSender = new Mock(); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(connectionTimeout, It.IsAny())).Returns(true); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new Mock().Object); - this.testOperationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object); - } + [TestMethod] + public void SetupChannelShouldAddCorrectTraceLevelForTestHost() + { +#if NETFRAMEWORK + EqtTrace.TraceLevel = TraceLevel.Info; +#else + EqtTrace.TraceLevel = PlatformTraceLevel.Info; +#endif - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); - } + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); + _testOperationManager.SetupChannel([], DefaultRunSettings); - [TestMethod] - public void SetupChannelShouldLaunchTestHost() - { - var expectedStartInfo = new TestProcessStartInfo(); - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); - this.mockTestHostManager.Setup( - th => th.GetTestHostProcessStartInfo(Enumerable.Empty(), It.IsAny>(), It.IsAny())) - .Returns(expectedStartInfo); + _mockTestHostManager.Verify( + th => + th.GetTestHostProcessStartInfo( + It.IsAny>(), + It.IsAny>(), + It.Is(t => t.TraceLevel == (int)PlatformTraceLevel.Info))); + } - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + [TestMethod] + public void SetupChannelShouldSetupServerForCommunication() + { + _testOperationManager.SetupChannel([], DefaultRunSettings); - this.mockTestHostManager.Verify(thl => thl.LaunchTestHostAsync(It.Is(si => si == expectedStartInfo), It.IsAny()), Times.Once); - } + _mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); + } - [TestMethod] - public void SetupChannelShouldCreateTimestampedLogFileForHost() + [TestMethod] + public void SetupChannelShouldCallHostServerIfRunnerIsServer() + { + var connectionInfo = new TestHostConnectionInfo { - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); - EqtTrace.InitializeTrace("log.txt", PlatformTraceLevel.Verbose); - - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); - - this.mockTestHostManager.Verify( - th => - th.GetTestHostProcessStartInfo( - It.IsAny>(), - It.IsAny>(), - It.Is( - t => t.LogFile.Contains("log.host." + DateTime.Now.ToString("yy-MM-dd")) - && t.LogFile.Contains("_" + Thread.CurrentThread.ManagedThreadId + ".txt")))); -#if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Off; -#else - EqtTrace.TraceLevel = PlatformTraceLevel.Off; -#endif - } + Endpoint = IPAddress.Loopback + ":0", + Role = ConnectionRole.Host, + Transport = Transport.Sockets + }; + ProtocolConfig protocolConfig = new() { Version = 2 }; + var mockCommunicationServer = new Mock(); - [TestMethod] - public void SetupChannelShouldAddRunnerProcessIdForTestHost() - { - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); + mockCommunicationServer.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(IPAddress.Loopback + ":123").Callback( + () => mockCommunicationServer.Raise(s => s.Connected += null, mockCommunicationServer.Object, new ConnectedEventArgs(_mockChannel.Object))); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + var testRequestSender = new TestRequestSender(mockCommunicationServer.Object, connectionInfo, _mockDataSerializer.Object, protocolConfig, Clientprocessexitwait); + SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, protocolConfig.Version); - this.mockTestHostManager.Verify( - th => - th.GetTestHostProcessStartInfo( - It.IsAny>(), - It.IsAny>(), - It.Is(t => t.RunnerProcessId.Equals(Process.GetCurrentProcess().Id)))); - } + _mockTestHostManager.Setup(thm => thm.GetTestHostConnectionInfo()).Returns(connectionInfo); - [TestMethod] - public void SetupChannelShouldAddCorrectTraceLevelForTestHost() - { -#if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Info; -#else - EqtTrace.TraceLevel = PlatformTraceLevel.Info; -#endif + var localTestOperationManager = new TestableProxyOperationManager(_mockRequestData.Object, testRequestSender, _mockTestHostManager.Object); - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(123); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + localTestOperationManager.SetupChannel([], DefaultRunSettings); - this.mockTestHostManager.Verify( - th => - th.GetTestHostProcessStartInfo( - It.IsAny>(), - It.IsAny>(), - It.Is(t => t.TraceLevel == (int)PlatformTraceLevel.Info))); - } + mockCommunicationServer.Verify(s => s.Start(IPAddress.Loopback.ToString() + ":0"), Times.Once); + } - [TestMethod] - public void SetupChannelShouldSetupServerForCommunication() + [TestMethod] + public void SetupChannelShouldCallSetupClientIfRunnerIsClient() + { + var connectionInfo = new TestHostConnectionInfo { - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + Endpoint = IPAddress.Loopback + ":124", + Role = ConnectionRole.Host, + Transport = Transport.Sockets + }; + ProtocolConfig protocolConfig = new() { Version = 2 }; + var mockCommunicationEndpoint = new Mock(); + mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => mockCommunicationEndpoint.Raise( + s => s.Connected += null, + mockCommunicationEndpoint.Object, + new ConnectedEventArgs(_mockChannel.Object))); - this.mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); - } + SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, protocolConfig.Version); + var testRequestSender = new TestRequestSender(mockCommunicationEndpoint.Object, connectionInfo, _mockDataSerializer.Object, new ProtocolConfig { Version = 2 }, Clientprocessexitwait); - [TestMethod] - public void SetupChannelShouldCallHostServerIfRunnerIsServer() - { - var connectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":0", - Role = ConnectionRole.Host, - Transport = Transport.Sockets - }; - ProtocolConfig protocolConfig = new ProtocolConfig { Version = 2 }; - var mockCommunicationServer = new Mock(); + _mockTestHostManager.Setup(thm => thm.GetTestHostConnectionInfo()).Returns(connectionInfo); - mockCommunicationServer.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(IPAddress.Loopback + ":123").Callback( - () => { mockCommunicationServer.Raise(s => s.Connected += null, mockCommunicationServer.Object, new ConnectedEventArgs(this.mockChannel.Object)); }); + var localTestOperationManager = new TestableProxyOperationManager(_mockRequestData.Object, testRequestSender, _mockTestHostManager.Object); - var testRequestSender = new TestRequestSender(mockCommunicationServer.Object, connectionInfo, mockDataSerializer.Object, protocolConfig, CLIENTPROCESSEXITWAIT); - this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, protocolConfig.Version); + localTestOperationManager.SetupChannel([], DefaultRunSettings); - this.mockTestHostManager.Setup(thm => thm.GetTestHostConnectionInfo()).Returns(connectionInfo); + mockCommunicationEndpoint.Verify(s => s.Start(It.IsAny()), Times.Once); + } - var localTestOperationManager = new TestableProxyOperationManager(this.mockRequestData.Object, testRequestSender, this.mockTestHostManager.Object); + [TestMethod] + public void SetupChannelShouldNotInitializeIfConnectionIsAlreadyInitialized() + { + _testOperationManager.SetupChannel([], DefaultRunSettings); + _testOperationManager.SetupChannel([], DefaultRunSettings); - localTestOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + _mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); + } - mockCommunicationServer.Verify(s => s.Start(IPAddress.Loopback.ToString() + ":0"), Times.Once); - } + [TestMethod] + public void SetupChannelShouldWaitForTestHostConnection() + { + _testOperationManager.SetupChannel([], DefaultRunSettings); - [TestMethod] - public void SetupChannelShouldCallSetupClientIfRunnerIsClient() - { - var connectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":124", - Role = ConnectionRole.Host, - Transport = Transport.Sockets - }; - ProtocolConfig protocolConfig = new ProtocolConfig { Version = 2 }; - var mockCommunicationEndpoint = new Mock(); - mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() => - { - mockCommunicationEndpoint.Raise( - s => s.Connected += null, - mockCommunicationEndpoint.Object, - new ConnectedEventArgs(this.mockChannel.Object)); - }); - - this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, protocolConfig.Version); - var testRequestSender = new TestRequestSender(mockCommunicationEndpoint.Object, connectionInfo, mockDataSerializer.Object, new ProtocolConfig { Version = 2 }, CLIENTPROCESSEXITWAIT); - - this.mockTestHostManager.Setup(thm => thm.GetTestHostConnectionInfo()).Returns(connectionInfo); - - var localTestOperationManager = new TestableProxyOperationManager(this.mockRequestData.Object, testRequestSender, this.mockTestHostManager.Object); - - localTestOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); - - mockCommunicationEndpoint.Verify(s => s.Start(It.IsAny()), Times.Once); - } + _mockRequestSender.Verify(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny()), Times.Once); + } - [TestMethod] - public void SetupChannelShouldNotInitializeIfConnectionIsAlreadyInitialized() - { - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + [TestMethod] + public void SetupChannelShouldNotWaitForTestHostConnectionIfConnectionIsInitialized() + { + _testOperationManager.SetupChannel([], DefaultRunSettings); + _testOperationManager.SetupChannel([], DefaultRunSettings); - this.mockRequestSender.Verify(s => s.InitializeCommunication(), Times.Once); - } + _mockRequestSender.Verify(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny()), Times.Exactly(1)); + } - [TestMethod] - public void SetupChannelShouldWaitForTestHostConnection() - { - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + [TestMethod] + public void SetupChannelShouldHonorTimeOutSetByUser() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "100"); - this.mockRequestSender.Verify(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny()), Times.Once); - } + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(100000, It.IsAny())).Returns(true); + _testOperationManager.SetupChannel([], DefaultRunSettings); - [TestMethod] - public void SetupChannelShouldNotWaitForTestHostConnectionIfConnectionIsInitialized() - { - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + _mockRequestSender.Verify(rs => rs.WaitForRequestHandlerConnection(100000, It.IsAny()), Times.Exactly(1)); + } - this.mockRequestSender.Verify(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny()), Times.Exactly(1)); - } + [TestMethod] + public void SetupChannelShouldThrowIfWaitForTestHostConnectionTimesOut() + { + SetupTestHostLaunched(true); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(false); - [TestMethod] - public void SetupChannelShouldHonorTimeOutSetByUser() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "100"); + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(100000, It.IsAny())).Returns(true); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + var message = Assert.ThrowsException(() => operationManager.SetupChannel([], DefaultRunSettings)).Message; + Assert.AreEqual(message, TimoutErrorMessage); + } - this.mockRequestSender.Verify(rs => rs.WaitForRequestHandlerConnection(100000, It.IsAny()), Times.Exactly(1)); - } + [TestMethod] + public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelled() + { + SetupTestHostLaunched(true); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(false); - [TestMethod] - public void SetupChannelShouldThrowIfWaitForTestHostConnectionTimesOut() - { - SetupTestHostLaunched(true); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(false); + var cancellationTokenSource = new CancellationTokenSource(); + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, cancellationTokenSource); - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object); + cancellationTokenSource.Cancel(); + var message = Assert.ThrowsException(() => operationManager.SetupChannel([], DefaultRunSettings)).Message; + Equals("Canceling the operation as requested.", message); + } - var message = Assert.ThrowsException(() => operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings)).Message; - Assert.AreEqual(message, ProxyOperationManagerTests.TimoutErrorMessage); - } + [TestMethod] + public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelledDuringLaunchOfTestHost() + { + SetupTestHostLaunched(true); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(false); - [TestMethod] - public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelled() - { - SetupTestHostLaunched(true); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(false); + _mockTestHostManager.Setup(rs => rs.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Callback(() => Task.Run(() => throw new OperationCanceledException())); - var cancellationTokenSource = new CancellationTokenSource(); - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, cancellationTokenSource); + var cancellationTokenSource = new CancellationTokenSource(); + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, cancellationTokenSource); - cancellationTokenSource.Cancel(); - var message = Assert.ThrowsException(() => operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings)).Message; - StringAssert.Equals("Canceling the operation as requested.", message); - } + var message = Assert.ThrowsException(() => operationManager.SetupChannel([], DefaultRunSettings)).Message; + Equals("Canceling the operation as requested.", message); + } - [TestMethod] - public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelledDuringLaunchOfTestHost() - { - SetupTestHostLaunched(true); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(false); + [TestMethod] + public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelledPostHostLaunchDuringWaitForHandlerConnection() + { + SetupTestHostLaunched(true); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(false); - this.mockTestHostManager.Setup(rs => rs.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Callback(() => Task.Run(() => { throw new OperationCanceledException(); })); + var cancellationTokenSource = new CancellationTokenSource(); + _mockTestHostManager.Setup(rs => rs.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Callback(() => cancellationTokenSource.Cancel()); + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object, cancellationTokenSource); - var cancellationTokenSource = new CancellationTokenSource(); - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, cancellationTokenSource); + var message = Assert.ThrowsException(() => operationManager.SetupChannel([], DefaultRunSettings)).Message; + Equals("Canceling the operation as requested.", message); + } - var message = Assert.ThrowsException(() => operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings)).Message; - StringAssert.Equals("Canceling the operation as requested.", message); - } + [TestMethod] + public void SetupChannelShouldThrowIfLaunchTestHostFails() + { + SetupTestHostLaunched(false); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(true); - [TestMethod] - public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelledPostHostLaunchDuringWaitForHandlerConnection() - { - SetupTestHostLaunched(true); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(false); + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object); - var cancellationTokenSource = new CancellationTokenSource(); - this.mockTestHostManager.Setup(rs => rs.LaunchTestHostAsync(It.IsAny(), It.IsAny())).Callback(() => cancellationTokenSource.Cancel()); - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, cancellationTokenSource); + var message = Assert.ThrowsException(() => operationManager.SetupChannel([], DefaultRunSettings)).Message; + Assert.AreEqual(message, Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources.Resources.InitializationFailed); + } - var message = Assert.ThrowsException(() => operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings)).Message; - StringAssert.Equals("Canceling the operation as requested.", message); - } + [TestMethod] + public void SetupChannelShouldCheckVersionWithTestHost() + { + _testOperationManager.SetupChannel([], DefaultRunSettings); + _mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Once); + } - [TestMethod] - public void SetupChannelShouldThrowIfLaunchTestHostFails() - { - SetupTestHostLaunched(false); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(true); + [TestMethod] + public void SetupChannelShouldThrowExceptionIfVersionCheckFails() + { + // Make the version check fail + _mockRequestSender.Setup(rs => rs.CheckVersionWithTestHost()).Throws(new TestPlatformException("Version check failed")); + Assert.ThrowsException(() => _testOperationManager.SetupChannel([], DefaultRunSettings)); + } - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object); + [TestMethod] + public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredFalseShouldNotCheckVersionWithTestHost() + { + SetUpMocksForDotNetTestHost(); + var testHostManager = new TestableDotnetTestHostManager(false, _mockProcessHelper.Object, _mockFileHelper.Object, _mockEnvironment.Object, _mockRunsettingHelper.Object, _mockWindowsRegistry.Object, _mockEnvironmentVariableHelper.Object); + testHostManager.Initialize(new NullMessageLogger(), DefaultRunSettings); - var message = Assert.ThrowsException(() => operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings)).Message; - Assert.AreEqual(message, string.Format(CultureInfo.CurrentUICulture, Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources.Resources.InitializationFailed)); - } + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, testHostManager); - [TestMethod] - public void SetupChannelShouldCheckVersionWithTestHost() - { - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); - this.mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Once); - } + operationManager.SetupChannel([], DefaultRunSettings); - [TestMethod] - public void SetupChannelShouldThrowExceptionIfVersionCheckFails() - { - // Make the version check fail - this.mockRequestSender.Setup(rs => rs.CheckVersionWithTestHost()).Throws(new TestPlatformException("Version check failed")); - Assert.ThrowsException(() => this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings)); - } + _mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Never); + } - [TestMethod] - public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredFalseShouldNotCheckVersionWithTestHost() - { - this.SetUpMocksForDotNetTestHost(); - var testHostManager = new TestableDotnetTestHostManager(false, this.mockProcessHelper.Object, this.mockFileHelper.Object, this.mockEnvironment.Object, this.mockRunsettingHelper.Object, this.mockWindowsRegistry.Object, this.mockEnvironmentVariableHelper.Object); - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, testHostManager); + [TestMethod] + public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredTrueShouldCheckVersionWithTestHost() + { + SetUpMocksForDotNetTestHost(); + var testHostManager = new TestableDotnetTestHostManager(true, _mockProcessHelper.Object, _mockFileHelper.Object, _mockEnvironment.Object, _mockRunsettingHelper.Object, _mockWindowsRegistry.Object, _mockEnvironmentVariableHelper.Object); + testHostManager.Initialize(new NullMessageLogger(), DefaultRunSettings); + var operationManager = new TestableProxyOperationManager(_mockRequestData.Object, _mockRequestSender.Object, testHostManager); - operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + operationManager.SetupChannel([], DefaultRunSettings); - this.mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Never); - } + _mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Once); + } - [TestMethod] - public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredTrueShouldCheckVersionWithTestHost() - { - this.SetUpMocksForDotNetTestHost(); - var testHostManager = new TestableDotnetTestHostManager(true, this.mockProcessHelper.Object, this.mockFileHelper.Object, this.mockEnvironment.Object, this.mockRunsettingHelper.Object, this.mockWindowsRegistry.Object, this.mockEnvironmentVariableHelper.Object); - var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, testHostManager); + [TestMethod] + public void CloseShouldEndSessionIfHostWasLaunched() + { + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(true); + _testOperationManager.SetupChannel([], DefaultRunSettings); - operationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + _testOperationManager.Close(); - this.mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Once); - } + _mockRequestSender.Verify(rs => rs.EndSession(), Times.Once); + } - [TestMethod] - public void CloseShouldEndSessionIfHostWasLaunched() - { - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(true); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + [TestMethod] + public void CloseShouldNotEndSessionIfHostLaucnhedFailed() + { + _testOperationManager.Close(); - this.testOperationManager.Close(); + _mockRequestSender.Verify(rs => rs.EndSession(), Times.Never); + } - this.mockRequestSender.Verify(rs => rs.EndSession(), Times.Once); - } + [TestMethod] + public void CloseShouldAlwaysCleanTestHost() + { + _testOperationManager.Close(); - [TestMethod] - public void CloseShouldNotEndSessionIfHostLaucnhedFailed() - { - this.testOperationManager.Close(); + _mockTestHostManager.Verify(th => th.CleanTestHostAsync(It.IsAny()), Times.Once); + } - this.mockRequestSender.Verify(rs => rs.EndSession(), Times.Never); - } + [TestMethod] + public void CloseShouldResetChannelInitialization() + { + SetupWaitForTestHostExit(); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(true); + _testOperationManager.SetupChannel([], DefaultRunSettings); - [TestMethod] - public void CloseShouldAlwaysCleanTestHost() - { - this.testOperationManager.Close(); + _testOperationManager.Close(); - this.mockTestHostManager.Verify(th => th.CleanTestHostAsync(It.IsAny()), Times.Once); - } + _testOperationManager.SetupChannel([], DefaultRunSettings); + _mockTestHostManager.Verify(th => th.LaunchTestHostAsync(It.IsAny(), It.IsAny()), Times.Exactly(2)); + } - [TestMethod] - public void CloseShouldResetChannelInitialization() - { - this.SetupWaitForTestHostExit(); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(true); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + [TestMethod] + public void CloseShouldTerminateTesthostProcessIfWaitTimesout() + { + // Ensure testhost start returns a dummy process id + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(ConnectionTimeout, It.IsAny())).Returns(true); + _testOperationManager.SetupChannel([], DefaultRunSettings); - this.testOperationManager.Close(); + _testOperationManager.Close(); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); - this.mockTestHostManager.Verify(th => th.LaunchTestHostAsync(It.IsAny(), It.IsAny()), Times.Exactly(2)); - } + _mockTestHostManager.Verify(th => th.CleanTestHostAsync(It.IsAny()), Times.Once); + } - [TestMethod] - public void CloseShouldTerminateTesthostProcessIfWaitTimesout() - { - // Ensure testhost start returns a dummy process id - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny())).Returns(true); - this.testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + [TestMethod] + public void CloseShouldNotThrowIfEndSessionFails() + { + _mockRequestSender.Setup(rs => rs.EndSession()).Throws(); - this.testOperationManager.Close(); + _testOperationManager.Close(); + } - this.mockTestHostManager.Verify(th => th.CleanTestHostAsync(It.IsAny()), Times.Once); - } + private void SetupWaitForTestHostExit() + { + // Raise host exited when end session is called + _mockRequestSender.Setup(rs => rs.EndSession()) + .Callback(() => _mockTestHostManager.Raise(t => t.HostExited += null, new HostProviderEventArgs(string.Empty))); + } - [TestMethod] - public void CloseShouldNotThrowIfEndSessionFails() - { - this.mockRequestSender.Setup(rs => rs.EndSession()).Throws(); + private void SetupTestHostLaunched(bool launchStatus) + { + // Raise host exited when end session is called + _mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) + .Callback(() => _mockTestHostManager.Raise(t => t.HostLaunched += null, new HostProviderEventArgs(string.Empty))) + .Returns(Task.FromResult(launchStatus)); + } - this.testOperationManager.Close(); - } + [TestMethod] + public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgTrueIfTelemetryOptedIn() + { + TestProcessStartInfo receivedTestProcessInfo = new(); + var mockRequestData = new Mock(); - private void SetupWaitForTestHostExit() - { - // Raise host exited when end session is called - this.mockRequestSender.Setup(rs => rs.EndSession()) - .Callback(() => this.mockTestHostManager.Raise(t => t.HostExited += null, new HostProviderEventArgs(string.Empty))); - } + mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); - private void SetupTestHostLaunched(bool launchStatus) - { - // Raise host exited when end session is called - this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny(), It.IsAny())) - .Callback(() => this.mockTestHostManager.Raise(t => t.HostLaunched += null, new HostProviderEventArgs(string.Empty))) - .Returns(Task.FromResult(launchStatus)); - } + var testOperationManager = new TestableProxyOperationManager(mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object); - [TestMethod] - public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgTrueIfTelemetryOptedIn() - { - TestProcessStartInfo receivedTestProcessInfo = new TestProcessStartInfo(); - var mockRequestData = new Mock(); + _mockTestHostManager + .Setup(tm => tm.LaunchTestHostAsync(It.IsAny(), It.IsAny())) + .Callback( + (testProcessStartInfo, cancellationToken) => receivedTestProcessInfo = testProcessStartInfo) + .Returns(Task.FromResult(true)); - mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); + // Act. + testOperationManager.SetupChannel([], DefaultRunSettings); - var testOperationManager = new TestableProxyOperationManager(mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object); + // Verify. + Assert.IsTrue(receivedTestProcessInfo.Arguments!.Contains("--telemetryoptedin true")); + } - this.mockTestHostManager - .Setup(tm => tm.LaunchTestHostAsync(It.IsAny(), It.IsAny())) - .Callback( - (testProcessStartInfo, cancellationToken) => - { - receivedTestProcessInfo = testProcessStartInfo; - }) - .Returns(Task.FromResult(true)); + [TestMethod] + public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgFalseIfTelemetryOptedOut() + { + TestProcessStartInfo receivedTestProcessInfo = new(); + var mockRequestData = new Mock(); - // Act. - testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(false); - // Verify. - Assert.IsTrue(receivedTestProcessInfo.Arguments.Contains("--telemetryoptedin true")); - } + var testOperationManager = new TestableProxyOperationManager(mockRequestData.Object, _mockRequestSender.Object, _mockTestHostManager.Object); - [TestMethod] - public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgFalseIfTelemetryOptedOut() - { - TestProcessStartInfo receivedTestProcessInfo = new TestProcessStartInfo(); - var mockRequestData = new Mock(); + _mockTestHostManager + .Setup(tm => tm.LaunchTestHostAsync(It.IsAny(), It.IsAny())) + .Callback( + (testProcessStartInfo, cancellationToken) => receivedTestProcessInfo = testProcessStartInfo) + .Returns(Task.FromResult(true)); - mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(false); + // Act. + testOperationManager.SetupChannel([], DefaultRunSettings); - var testOperationManager = new TestableProxyOperationManager(mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object); + // Verify. + Assert.IsTrue(receivedTestProcessInfo.Arguments!.Contains("--telemetryoptedin false")); + } - this.mockTestHostManager - .Setup(tm => tm.LaunchTestHostAsync(It.IsAny(), It.IsAny())) - .Callback( - (testProcessStartInfo, cancellationToken) => - { - receivedTestProcessInfo = testProcessStartInfo; - }) - .Returns(Task.FromResult(true)); + [MemberNotNull(nameof(_mockProcessHelper), nameof(_mockFileHelper), nameof(_mockEnvironment), nameof(_mockRunsettingHelper), nameof(_mockWindowsRegistry), nameof(_mockEnvironmentVariableHelper))] + private void SetUpMocksForDotNetTestHost() + { + _mockProcessHelper = new Mock(); + _mockFileHelper = new Mock(); + _mockEnvironment = new Mock(); + _mockRunsettingHelper = new Mock(); + _mockWindowsRegistry = new Mock(); + _mockEnvironmentVariableHelper = new Mock(); + + _mockRunsettingHelper.SetupGet(r => r.IsDefaultTargetArchitecture).Returns(true); + _mockProcessHelper.Setup( + ph => + ph.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>())) + .Callback, Action, Action, Action>( + (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => + { + var process = Process.GetCurrentProcess(); + + errorCallback(process, string.Empty); + exitCallback(process); + }).Returns(Process.GetCurrentProcess()); + } - // Act. - testOperationManager.SetupChannel(Enumerable.Empty(), this.defaultRunSettings); + private class TestableProxyOperationManager : ProxyOperationManager + { + public TestableProxyOperationManager(IRequestData requestData, + ITestRequestSender requestSender, + ITestRuntimeProvider testHostManager) : base(requestData, requestSender, testHostManager, Framework.DefaultFramework) + { + } - // Verify. - Assert.IsTrue(receivedTestProcessInfo.Arguments.Contains("--telemetryoptedin false")); + public TestableProxyOperationManager( + IRequestData requestData, + ITestRequestSender requestSender, + ITestRuntimeProvider testHostManager, + CancellationTokenSource cancellationTokenSource) : base(requestData, requestSender, testHostManager, Framework.DefaultFramework) + { + CancellationTokenSource = cancellationTokenSource; } - private void SetUpMocksForDotNetTestHost() + public string TesthostFriendlyName { get; set; } = "Dummy"; + + internal override string ReadTesthostFriendlyName() { - this.mockProcessHelper = new Mock(); - this.mockFileHelper = new Mock(); - this.mockEnvironment = new Mock(); - this.mockRunsettingHelper = new Mock(); - this.mockWindowsRegistry = new Mock(); - this.mockEnvironmentVariableHelper = new Mock(); - - this.mockRunsettingHelper.SetupGet(r => r.IsDefaultTargetArchitecture).Returns(true); - this.mockProcessHelper.Setup( - ph => - ph.LaunchProcess( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>())) - .Callback, Action, Action, Action>( - (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => - { - var process = Process.GetCurrentProcess(); - - errorCallback(process, string.Empty); - exitCallback(process); - }).Returns(Process.GetCurrentProcess()); + return TesthostFriendlyName; } + } + + private class TestableDotnetTestHostManager : DotnetTestHostManager + { + private readonly bool _isVersionCheckRequired; - private class TestableProxyOperationManager : ProxyOperationManager + public TestableDotnetTestHostManager( + bool checkRequired, + IProcessHelper processHelper, + IFileHelper fileHelper, + IEnvironment environment, + IRunSettingsHelper runsettingHelper, + IWindowsRegistryHelper windowsRegistryHelper, + IEnvironmentVariableHelper environmentVariableHelper) : base( + processHelper, + fileHelper, + new DotnetHostHelper(fileHelper, environment, windowsRegistryHelper, environmentVariableHelper, processHelper), + environment, + runsettingHelper, + windowsRegistryHelper, + environmentVariableHelper) { - public TestableProxyOperationManager(IRequestData requestData, - ITestRequestSender requestSender, - ITestRuntimeProvider testHostManager) : base(requestData, requestSender, testHostManager) - { - } - - public TestableProxyOperationManager( - IRequestData requestData, - ITestRequestSender requestSender, - ITestRuntimeProvider testHostManager, - CancellationTokenSource cancellationTokenSource) : base(requestData, requestSender, testHostManager) - { - this.CancellationTokenSource = cancellationTokenSource; - } + _isVersionCheckRequired = checkRequired; } - private class TestableDotnetTestHostManager : DotnetTestHostManager + internal override bool IsVersionCheckRequired => _isVersionCheckRequired; + + public override TestProcessStartInfo GetTestHostProcessStartInfo( + IEnumerable sources, + IDictionary? environmentVariables, + TestRunnerConnectionInfo connectionInfo) { - private bool isVersionCheckRequired; - - public TestableDotnetTestHostManager( - bool checkRequired, - IProcessHelper processHelper, - IFileHelper fileHelper, - IEnvironment environment, - IRunSettingsHelper runsettingHelper, - IWindowsRegistryHelper windowsRegistryHelper, - IEnvironmentVariableHelper environmentVariableHelper) : base( - processHelper, - fileHelper, - new DotnetHostHelper(fileHelper, environment, windowsRegistryHelper, environmentVariableHelper, processHelper), - environment, - runsettingHelper, - windowsRegistryHelper, - environmentVariableHelper) - { - this.isVersionCheckRequired = checkRequired; - } - - internal override bool IsVersionCheckRequired => this.isVersionCheckRequired; - - public override TestProcessStartInfo GetTestHostProcessStartInfo( - IEnumerable sources, - IDictionary environmentVariables, - TestRunnerConnectionInfo connectionInfo) - { - return new TestProcessStartInfo(); - } + return new TestProcessStartInfo(); } } } + +internal class NullMessageLogger : IMessageLogger +{ + public void SendMessage(TestMessageLevel testMessageLevel, string message) + { + } +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyTestSessionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyTestSessionManagerTests.cs index d8764eb2c3..853bfa8486 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyTestSessionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Client/ProxyTestSessionManagerTests.cs @@ -1,335 +1,612 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.Client -{ - using System; - using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.Client; + +[TestClass] +public class ProxyTestSessionManagerTests +{ + private readonly IList _fakeTestSources = new List() { @"C:\temp\FakeTestAsset.dll" }; + private readonly Dictionary _fakeTestSourcesToRuntimeProviderMap; + private readonly IList _fakeTestMultipleSources = new List() { + @"C:\temp\FakeTestAsset1.dll", + @"C:\temp\FakeTestAsset2.dll", + @"C:\temp\FakeTestAsset3.dll", + @"C:\temp\FakeTestAsset4.dll", + @"C:\temp\FakeTestAsset5.dll", + @"C:\temp\FakeTestAsset6.dll", + @"C:\temp\FakeTestAsset7.dll", + @"C:\temp\FakeTestAsset8.dll", + }; + private readonly string _runSettingsNoEnvVars = @" + + + + "; + private readonly string _runSettingsOneEnvVar = @" + + + + Test1 + + + "; + private readonly string _runSettingsTwoEnvVars = @" + + + + Test1 + Test2 + + + "; + private readonly string _runSettingsTwoEnvVarsAndDataCollectors = @" + + + + Test1 + Test2 + + + + + + + + "; + private readonly string _fakeRunSettings = "FakeRunSettings"; + private readonly ProtocolConfig _protocolConfig = new() { Version = 1 }; + private readonly Mock _mockEventsHandler; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + + public ProxyTestSessionManagerTests() + { + TestSessionPool.Instance = null; + + var metrics = new Dictionary(); + + _mockEventsHandler = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + + _mockEventsHandler.Setup( + e => e.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + + Assert.IsTrue(eventArgs.Metrics.ContainsKey(TelemetryDataConstants.TestSessionId)); + Assert.IsTrue(eventArgs.Metrics.ContainsKey(TelemetryDataConstants.TestSessionState)); + Assert.IsTrue( + eventArgs.Metrics.ContainsKey(TelemetryDataConstants.TestSessionSpawnedTesthostCount) + && (int)eventArgs.Metrics[TelemetryDataConstants.TestSessionSpawnedTesthostCount] > 0); + Assert.IsTrue(eventArgs.Metrics.ContainsKey(TelemetryDataConstants.TestSessionTesthostSpawnTimeInSec)); + }); + + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(_protocolConfig); + _mockMetricsCollection.Setup(mc => mc.Metrics).Returns(metrics); + _mockMetricsCollection.Setup(mc => mc.Add(It.IsAny(), It.IsAny())) + .Callback((string metric, object value) => metrics.Add(metric, value)); + + _fakeTestSourcesToRuntimeProviderMap = new Dictionary + { + [_fakeTestSources[0]] = new TestRuntimeProviderInfo(typeof(ITestRuntimeProvider), false, _fakeRunSettings, [ + new() + { + Source = _fakeTestSources[0], + Architecture = Architecture.X86, + Framework = Framework.DefaultFramework + } + ]) + }; + } + + [TestMethod] + public void StartSessionShouldSucceedIfCalledOnlyOnce() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // First call to StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + testSessionCriteria.Sources!, + testSessionCriteria.RunSettings), + Times.Once); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // Second call to StartSession should fail. + Assert.IsFalse(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + testSessionCriteria.Sources!, + testSessionCriteria.RunSettings), + Times.Once); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void StartSessionShouldSucceedWhenCalledWithMultipleSources() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestMultipleSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // First call to StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(_fakeTestMultipleSources.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void StartSessionShouldFailIfProxyCreatorIsNull() + { + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, null!); + + Assert.IsFalse(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Never); + } + + [TestMethod] + public void StartSessionShouldFailIfSetupChannelReturnsFalse() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(false); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // Call fails because SetupChannel returns false. + Assert.IsFalse(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + It.IsAny()), + Times.Once); + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Never); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Never); + } + + [TestMethod] + public void StartSessionShouldNotFailIfSetupChannelReturnsFalseButTheProxyDisposalPolicyAllowsFailures() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.SetupSequence(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true) + .Returns(false) + .Returns(false) + .Returns(false) + .Returns(false) + .Returns(false) + .Returns(false) + .Returns(false); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestMultipleSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + proxyManager.DisposalPolicy = ProxyDisposalOnCreationFailPolicy.AllowProxySetupFailures; + + // Call fails because SetupChannel returns false. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + It.IsAny()), + Times.Exactly(_fakeTestMultipleSources.Count)); + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Never); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void StartSessionShouldStillFailIfSetupChannelReturnsFalseAndTheProxyDisposalPolicyAllowsFailuresButNoTesthostIsSpawned() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(false); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + proxyManager.DisposalPolicy = ProxyDisposalOnCreationFailPolicy.AllowProxySetupFailures; + + // Call fails because SetupChannel returns false. + Assert.IsFalse(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + It.IsAny()), + Times.Exactly(_fakeTestSources.Count)); + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Never); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Never); + } + + [TestMethod] + public void StartSessionShouldFailIfSetupChannelThrowsException() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Throws(new TestPlatformException("Dummy exception.")); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // Call fails because SetupChannel returns false. + Assert.IsFalse(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + It.IsAny()), + Times.Once); + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Never); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Never); + } + + [TestMethod] + public void StartSessionShouldFailIfAddSessionFails() + { + var mockTestSessionPool = new Mock(); + mockTestSessionPool.Setup(tsp => tsp.AddSession(It.IsAny(), It.IsAny())) + .Returns(false); + TestSessionPool.Instance = mockTestSessionPool.Object; + + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // Call to StartSession should fail because AddSession fails. + Assert.IsFalse(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + testSessionCriteria.Sources!, + testSessionCriteria.RunSettings), + Times.Once); + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Once); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Never); + } - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void StopSessionShouldSucceedIfCalledOnlyOnce() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + testSessionCriteria.Sources!, + testSessionCriteria.RunSettings), + Times.Once); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // First call to StopSession should succeed. + _mockMetricsCollection.Object.Metrics.Clear(); + Assert.IsTrue(proxyManager.StopSession(_mockRequestData.Object)); + + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Once); + CheckStopSessionTelemetry(true); + + // Second call to StopSession should fail. + _mockMetricsCollection.Object.Metrics.Clear(); + Assert.IsFalse(proxyManager.StopSession(_mockRequestData.Object)); + + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Once); + CheckStopSessionTelemetry(false); + } - using Moq; + [TestMethod] + public void StopSessionShouldSucceedWhenCalledWithMultipleSources() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); + + var testSessionCriteria = CreateTestSession(_fakeTestMultipleSources, _fakeRunSettings); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // First call to StopSession should succeed. + _mockMetricsCollection.Object.Metrics.Clear(); + Assert.IsTrue(proxyManager.StopSession(_mockRequestData.Object)); + + mockProxyOperationManager.Verify(pom => pom.Close(), Times.Exactly(testSessionCriteria.Sources.Count)); + CheckStopSessionTelemetry(true); + } - [TestClass] - public class ProxyTestSessionManagerTests + [TestMethod] + public void DequeueProxyShouldSucceedIfIdentificationCriteriaAreMet() { - private readonly IList fakeTestSources = new List() { @"C:\temp\FakeTestAsset.dll" }; - private readonly IList fakeTestMultipleSources = new List() { - @"C:\temp\FakeTestAsset1.dll", + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _runSettingsNoEnvVars); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // First call to DequeueProxy fails because of source mismatch. + Assert.ThrowsException(() => proxyManager.DequeueProxy( @"C:\temp\FakeTestAsset2.dll", - @"C:\temp\FakeTestAsset3.dll", - @"C:\temp\FakeTestAsset4.dll", - @"C:\temp\FakeTestAsset5.dll", - @"C:\temp\FakeTestAsset6.dll", - @"C:\temp\FakeTestAsset7.dll", - @"C:\temp\FakeTestAsset8.dll", - }; - private readonly string fakeRunSettings = "FakeRunSettings"; - private Mock mockEventsHandler; + testSessionCriteria.RunSettings)); - [TestInitialize] - public void TestInitialize() - { - TestSessionPool.Instance = null; + // Second call to DequeueProxy fails because of runsettings mismatch. + Assert.ThrowsException(() => proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + _runSettingsOneEnvVar)); - this.mockEventsHandler = new Mock(); + // Third call to DequeueProxy succeeds. + Assert.AreEqual(proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + testSessionCriteria.RunSettings), + mockProxyOperationManager.Object); - this.mockEventsHandler.Setup(e => e.HandleStartTestSessionComplete(It.IsAny())) - .Callback((TestSessionInfo tsi) => { }); - } + // Fourth call to DequeueProxy fails because proxy became unavailable following successful deque. + Assert.ThrowsException(() => proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + testSessionCriteria.RunSettings)); + } - [TestMethod] - public void StartSessionShouldSucceedIfCalledOnlyOnce() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // First call to StartSession should succeed. - Assert.IsTrue(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - testSessionCriteria.Sources, - testSessionCriteria.RunSettings), - Times.Once); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - - // Second call to StartSession should fail. - Assert.IsFalse(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - testSessionCriteria.Sources, - testSessionCriteria.RunSettings), - Times.Once); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void StartSessionShouldSucceedWhenCalledWithMultipleSources() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestMultipleSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // First call to StartSession should succeed. - Assert.IsTrue(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - It.IsAny>(), - testSessionCriteria.RunSettings), - Times.Exactly(this.fakeTestMultipleSources.Count)); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void StartSessionShouldFailIfProxyCreatorIsNull() - { - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, null); + [TestMethod] + public void DequeueProxyTwoConsecutiveTimesWithEnqueueShouldBeSuccessful() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _runSettingsTwoEnvVars); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // Call to DequeueProxy succeeds. + Assert.AreEqual(proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + testSessionCriteria.RunSettings), + mockProxyOperationManager.Object); - Assert.IsFalse(proxyManager.StartSession(this.mockEventsHandler.Object)); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Never); - } + Assert.AreEqual(proxyManager.EnqueueProxy(mockProxyOperationManager.Object.Id), true); - [TestMethod] - public void StartSessionShouldFailIfSetupChannelReturnsFalse() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(false); - mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // Call fails because SetupChannel returns false. - Assert.IsFalse(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - It.IsAny>(), - It.IsAny()), - Times.Once); - mockProxyOperationManager.Verify(pom => pom.Close(), Times.Never); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Never); - } - - [TestMethod] - public void StartSessionShouldFailIfSetupChannelThrowsException() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Throws(new TestPlatformException("Dummy exception.")); - mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // Call fails because SetupChannel returns false. - Assert.IsFalse(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - It.IsAny>(), - It.IsAny()), - Times.Once); - mockProxyOperationManager.Verify(pom => pom.Close(), Times.Never); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Never); - } - - [TestMethod] - public void StartSessionShouldFailIfAddSessionFails() - { - var mockTestSessionPool = new Mock(); - mockTestSessionPool.Setup(tsp => tsp.AddSession(It.IsAny(), It.IsAny())) - .Returns(false); - TestSessionPool.Instance = mockTestSessionPool.Object; - - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // Call to StartSession should fail because AddSession fails. - Assert.IsFalse(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - testSessionCriteria.Sources, - testSessionCriteria.RunSettings), - Times.Once); - mockProxyOperationManager.Verify(pom => pom.Close(), Times.Once); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Never); - } - - [TestMethod] - public void StopSessionShouldSucceedIfCalledOnlyOnce() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // StartSession should succeed. - Assert.IsTrue(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - testSessionCriteria.Sources, - testSessionCriteria.RunSettings), - Times.Once); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - - // First call to StopSession should succeed. - Assert.IsTrue(proxyManager.StopSession()); - mockProxyOperationManager.Verify(pom => pom.Close(), Times.Once); - - // Second call to StopSession should fail. - Assert.IsFalse(proxyManager.StopSession()); - mockProxyOperationManager.Verify(pom => pom.Close(), Times.Once); - } - - [TestMethod] - public void StopSessionShouldSucceedWhenCalledWithMultipleSources() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - mockProxyOperationManager.Setup(pom => pom.Close()).Callback(() => { }); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestMultipleSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // StartSession should succeed. - Assert.IsTrue(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - It.IsAny>(), - testSessionCriteria.RunSettings), - Times.Exactly(testSessionCriteria.Sources.Count)); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - - // First call to StopSession should succeed. - Assert.IsTrue(proxyManager.StopSession()); - mockProxyOperationManager.Verify(pom => pom.Close(), Times.Exactly(testSessionCriteria.Sources.Count)); - } - - [TestMethod] - public void DequeueProxyShouldSucceedIfIdentificationCriteriaAreMet() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // StartSession should succeed. - Assert.IsTrue(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - It.IsAny>(), - testSessionCriteria.RunSettings), - Times.Exactly(testSessionCriteria.Sources.Count)); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - - // First call to DequeueProxy fails because of source mismatch. - Assert.ThrowsException(() => proxyManager.DequeueProxy( - @"C:\temp\FakeTestAsset2.dll", - testSessionCriteria.RunSettings)); - - // Second call to DequeueProxy fails because of runsettings mismatch. - Assert.ThrowsException(() => proxyManager.DequeueProxy( + // Call to DequeueProxy succeeds when called with the same runsettings as before. + Assert.AreEqual(proxyManager.DequeueProxy( testSessionCriteria.Sources[0], - "DummyRunSettings")); - - // Third call to DequeueProxy succeeds. - Assert.AreEqual(proxyManager.DequeueProxy( - testSessionCriteria.Sources[0], - testSessionCriteria.RunSettings), - mockProxyOperationManager.Object); - - // Fourth call to DequeueProxy fails because proxy became unavailable following successful deque. - Assert.ThrowsException(() => proxyManager.DequeueProxy( + testSessionCriteria.RunSettings), + mockProxyOperationManager.Object); + } + + [TestMethod] + public void DequeueProxyShouldFailIfRunSettingsMatchingFails() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _runSettingsOneEnvVar); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // This call to DequeueProxy fails because of runsettings mismatch. + Assert.ThrowsException(() => proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + _runSettingsTwoEnvVars)); + } + + [TestMethod] + public void DequeueProxyShouldFailIfRunSettingsMatchingFailsFor2EnvVariables() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _runSettingsTwoEnvVars); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // This call to DequeueProxy fails because of runsettings mismatch. + Assert.ThrowsException(() => proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + _runSettingsOneEnvVar)); + } + + [TestMethod] + public void DequeueProxyShouldFailIfRunSettingsMatchingFailsForDataCollectors() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _runSettingsTwoEnvVars); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // This call to DequeueProxy fails because of runsettings mismatch. + Assert.ThrowsException(() => proxyManager.DequeueProxy( + testSessionCriteria.Sources[0], + _runSettingsTwoEnvVarsAndDataCollectors)); + } + + [TestMethod] + public void EnqueueProxyShouldSucceedIfIdentificationCriteriaAreMet() + { + var mockProxyOperationManager = new Mock(null, null, null, null); + mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) + .Returns(true); + + var testSessionCriteria = CreateTestSession(_fakeTestSources, _runSettingsNoEnvVars); + var proxyManager = CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); + + // Validate sanity checks. + Assert.ThrowsException(() => proxyManager.EnqueueProxy(-1)); + Assert.ThrowsException(() => proxyManager.EnqueueProxy(1)); + + // StartSession should succeed. + Assert.IsTrue(proxyManager.StartSession(_mockEventsHandler.Object, _mockRequestData.Object)); + mockProxyOperationManager.Verify(pom => pom.SetupChannel( + It.IsAny>(), + testSessionCriteria.RunSettings), + Times.Exactly(testSessionCriteria.Sources!.Count)); + _mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + + // Call throws exception because proxy is already available. + Assert.ThrowsException(() => proxyManager.EnqueueProxy(0)); + + // Call succeeds. + Assert.AreEqual(proxyManager.DequeueProxy( testSessionCriteria.Sources[0], - testSessionCriteria.RunSettings)); - } + testSessionCriteria.RunSettings), + mockProxyOperationManager.Object); + Assert.IsTrue(proxyManager.EnqueueProxy(0)); + } - [TestMethod] - public void EnqueueProxyShouldSucceedIfIdentificationCriteriaAreMet() - { - var mockProxyOperationManager = new Mock(null, null, null); - mockProxyOperationManager.Setup(pom => pom.SetupChannel(It.IsAny>(), It.IsAny())) - .Returns(true); - - var testSessionCriteria = this.CreateTestSession(this.fakeTestSources, this.fakeRunSettings); - var proxyManager = this.CreateProxy(testSessionCriteria, mockProxyOperationManager.Object); - - // Validate sanity checks. - Assert.ThrowsException(() => proxyManager.EnqueueProxy(-1)); - Assert.ThrowsException(() => proxyManager.EnqueueProxy(1)); - - // StartSession should succeed. - Assert.IsTrue(proxyManager.StartSession(this.mockEventsHandler.Object)); - mockProxyOperationManager.Verify(pom => pom.SetupChannel( - It.IsAny>(), - testSessionCriteria.RunSettings), - Times.Exactly(testSessionCriteria.Sources.Count)); - this.mockEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete( - It.IsAny()), - Times.Once); - - // Call throws exception because proxy is already available. - Assert.ThrowsException(() => proxyManager.EnqueueProxy(0)); - - // Call succeeds. - Assert.AreEqual(proxyManager.DequeueProxy( - testSessionCriteria.Sources[0], - testSessionCriteria.RunSettings), - mockProxyOperationManager.Object); - Assert.IsTrue(proxyManager.EnqueueProxy(0)); - } - - private StartTestSessionCriteria CreateTestSession(IList sources, string runSettings) + private static StartTestSessionCriteria CreateTestSession(IList sources, string runSettings) + { + return new StartTestSessionCriteria() { - return new StartTestSessionCriteria() + Sources = sources, + RunSettings = runSettings + }; + } + + private ProxyTestSessionManager CreateProxy( + StartTestSessionCriteria testSessionCriteria, + ProxyOperationManager proxyOperationManager) + { + var runSettings = testSessionCriteria.RunSettings ?? _fakeRunSettings; + var runtimeProviderInfo = new TestRuntimeProviderInfo + ( + typeof(ITestRuntimeProvider), + shared: false, + runSettings, + testSessionCriteria.Sources!.Select(s => new SourceDetail { - Sources = sources, - RunSettings = runSettings - }; - } - - private ProxyTestSessionManager CreateProxy( - StartTestSessionCriteria testSessionCriteria, - ProxyOperationManager proxyOperationManager) - { - return new ProxyTestSessionManager( - testSessionCriteria, - testSessionCriteria.Sources.Count, - () => { return proxyOperationManager; }); - } + Source = s, + Architecture = Architecture.X86, + Framework = Framework.DefaultFramework + }).ToList() + ); + + var runtimeProviders = new List { runtimeProviderInfo }; + return new ProxyTestSessionManager( + testSessionCriteria, + testSessionCriteria.Sources!.Count, + _ => proxyOperationManager, + runtimeProviders + ); + } + + private void CheckStopSessionTelemetry(bool exists) + { + Assert.AreEqual(_mockMetricsCollection.Object.Metrics.ContainsKey(TelemetryDataConstants.TestSessionId), exists); + Assert.AreEqual(_mockMetricsCollection.Object.Metrics.ContainsKey(TelemetryDataConstants.TestSessionState), exists); + Assert.AreEqual(_mockMetricsCollection.Object.Metrics.ContainsKey(TelemetryDataConstants.TestSessionTotalSessionTimeInSec), exists); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionLauncherFactoryTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionLauncherFactoryTests.cs index 50ce45cbf1..938f7e513c 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionLauncherFactoryTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionLauncherFactoryTests.cs @@ -1,49 +1,48 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection; + +[TestClass] +public class DataCollectionLauncherFactoryTests { - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly Mock _mockProcessHelper; + + private readonly string _dummyRunSettings = + ""; + + public DataCollectionLauncherFactoryTests() + { + _mockProcessHelper = new Mock(); + } + + [TestMethod] + public void GetDataCollectorLauncherShouldReturnDefaultDataCollectionLauncherWithFullClrRunner() + { + _mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("vstest.console.exe"); + var dataCollectorLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(_mockProcessHelper.Object, _dummyRunSettings); + Assert.IsInstanceOfType(dataCollectorLauncher, typeof(DefaultDataCollectionLauncher)); + } - using Moq; + [TestMethod] + public void GetDataCollectorLauncherShouldReturnDotnetDataCollectionLauncherWithDotnetCore() + { + _mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("dotnet"); + var dataCollectorLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(_mockProcessHelper.Object, _dummyRunSettings); + Assert.IsInstanceOfType(dataCollectorLauncher, typeof(DotnetDataCollectionLauncher)); + } - [TestClass] - public class DataCollectionLauncherFactoryTests + [TestMethod] + public void GetDataCollectorLauncherShouldBeInsensitiveToCaseOfCurrentProcess() { - private Mock mockProcessHelper; - - private string dummyRunSettings = - ""; - - public DataCollectionLauncherFactoryTests() - { - this.mockProcessHelper = new Mock(); - } - - [TestMethod] - public void GetDataCollectorLauncherShouldReturnDefaultDataCollectionLauncherWithFullCLRRunner() - { - mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("vstest.console.exe"); - var dataCollectorLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(mockProcessHelper.Object, this.dummyRunSettings); - Assert.IsInstanceOfType(dataCollectorLauncher, typeof(DefaultDataCollectionLauncher)); - } - - [TestMethod] - public void GetDataCollectorLauncherShouldReturnDotnetDataCollectionLauncherWithDotnetCore() - { - mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("dotnet"); - var dataCollectorLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(mockProcessHelper.Object, this.dummyRunSettings); - Assert.IsInstanceOfType(dataCollectorLauncher, typeof(DotnetDataCollectionLauncher)); - } - - [TestMethod] - public void GetDataCollectorLauncherShouldBeInsensitiveToCaseOfCurrentProcess() - { - mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("DOTNET"); - var dataCollectorLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(mockProcessHelper.Object, this.dummyRunSettings); - Assert.IsInstanceOfType(dataCollectorLauncher, typeof(DotnetDataCollectionLauncher)); - } + _mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("DOTNET"); + var dataCollectorLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(_mockProcessHelper.Object, _dummyRunSettings); + Assert.IsInstanceOfType(dataCollectorLauncher, typeof(DotnetDataCollectionLauncher)); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionTestRunEventsHandlerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionTestRunEventsHandlerTests.cs index 00e439873a..465ce2effa 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionTestRunEventsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DataCollectionTestRunEventsHandlerTests.cs @@ -1,152 +1,186 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection +using System; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection; + +[TestClass] +public class DataCollectionTestRunEventsHandlerTests { - using System; - using System.Collections.ObjectModel; - using System.Linq; - using System.Threading; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class DataCollectionTestRunEventsHandlerTests + private readonly Mock _baseTestRunEventsHandler; + private DataCollectionTestRunEventsHandler _testRunEventHandler; + private readonly Mock _proxyDataCollectionManager; + private readonly Mock _mockDataSerializer; + + public DataCollectionTestRunEventsHandlerTests() { - private Mock baseTestRunEventsHandler; - private DataCollectionTestRunEventsHandler testRunEventHandler; - private Mock proxyDataCollectionManager; - private Mock mockDataSerializer; + _baseTestRunEventsHandler = new Mock(); + _proxyDataCollectionManager = new Mock(); + _mockDataSerializer = new Mock(); + _testRunEventHandler = new DataCollectionTestRunEventsHandler(_baseTestRunEventsHandler.Object, _proxyDataCollectionManager.Object, _mockDataSerializer.Object, CancellationToken.None); + } - [TestInitialize] - public void InitializeTests() - { - this.baseTestRunEventsHandler = new Mock(); - this.proxyDataCollectionManager = new Mock(); - this.mockDataSerializer = new Mock(); - this.testRunEventHandler = new DataCollectionTestRunEventsHandler(this.baseTestRunEventsHandler.Object, this.proxyDataCollectionManager.Object, this.mockDataSerializer.Object, CancellationToken.None); - } - - [TestMethod] - public void HandleLogMessageShouldSendMessageToBaseTestRunEventsHandler() - { - this.testRunEventHandler.HandleLogMessage(TestMessageLevel.Informational, null); - this.baseTestRunEventsHandler.Verify(th => th.HandleLogMessage(0, null), Times.AtLeast(1)); - } + [TestMethod] + public void HandleLogMessageShouldSendMessageToBaseTestRunEventsHandler() + { + _testRunEventHandler.HandleLogMessage(TestMessageLevel.Informational, null); + _baseTestRunEventsHandler.Verify(th => th.HandleLogMessage(0, null), Times.AtLeast(1)); + } - [TestMethod] - public void HandleRawMessageShouldSendMessageToBaseTestRunEventsHandler() - { - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.BeforeTestRunStart }); - this.testRunEventHandler.HandleRawMessage(null); - this.baseTestRunEventsHandler.Verify(th => th.HandleRawMessage(null), Times.AtLeast(1)); - } + [TestMethod] + public void HandleRawMessageShouldSendMessageToBaseTestRunEventsHandler() + { + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.BeforeTestRunStart }); + _testRunEventHandler.HandleRawMessage(null!); + _baseTestRunEventsHandler.Verify(th => th.HandleRawMessage(null!), Times.AtLeast(1)); + } - [TestMethod] - public void HandleRawMessageShouldGetDataCollectorAttachments() - { - var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new TimeSpan()); + [TestMethod] + public void HandleRawMessageShouldGetDataCollectorAttachments() + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new Collection(), new TimeSpan()); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); - this.testRunEventHandler.HandleRawMessage(string.Empty); - this.proxyDataCollectionManager.Verify( - dcm => dcm.AfterTestRunEnd(false, It.IsAny()), - Times.Once); - } + _testRunEventHandler.HandleRawMessage(string.Empty); + _proxyDataCollectionManager.Verify( + dcm => dcm.AfterTestRunEnd(false, It.IsAny()), + Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldInvokeAfterTestRunEndPassingFalseIfRequestNotCancelled() - { - var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new TimeSpan()); + [TestMethod] + public void HandleRawMessageShouldInvokeAfterTestRunEndPassingFalseIfRequestNotCancelled() + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new Collection(), new TimeSpan()); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); - var cancellationTokenSource = new CancellationTokenSource(); - testRunEventHandler = new DataCollectionTestRunEventsHandler(this.baseTestRunEventsHandler.Object, this.proxyDataCollectionManager.Object, this.mockDataSerializer.Object, cancellationTokenSource.Token); + var cancellationTokenSource = new CancellationTokenSource(); + _testRunEventHandler = new DataCollectionTestRunEventsHandler(_baseTestRunEventsHandler.Object, _proxyDataCollectionManager.Object, _mockDataSerializer.Object, cancellationTokenSource.Token); - testRunEventHandler.HandleRawMessage(string.Empty); + _testRunEventHandler.HandleRawMessage(string.Empty); - this.proxyDataCollectionManager.Verify( - dcm => dcm.AfterTestRunEnd(false, It.IsAny()), - Times.Once); - } + _proxyDataCollectionManager.Verify( + dcm => dcm.AfterTestRunEnd(false, It.IsAny()), + Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldInvokeAfterTestRunEndPassingTrueIfRequestCancelled() - { - var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new TimeSpan()); + [TestMethod] + public void HandleRawMessageShouldInvokeAfterTestRunEndPassingTrueIfRequestCancelled() + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new Collection(), new TimeSpan()); - this.mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); - this.mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) - .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); - var cancellationTokenSource = new CancellationTokenSource(); - testRunEventHandler = new DataCollectionTestRunEventsHandler(this.baseTestRunEventsHandler.Object, this.proxyDataCollectionManager.Object, this.mockDataSerializer.Object, cancellationTokenSource.Token); - cancellationTokenSource.Cancel(); + var cancellationTokenSource = new CancellationTokenSource(); + _testRunEventHandler = new DataCollectionTestRunEventsHandler(_baseTestRunEventsHandler.Object, _proxyDataCollectionManager.Object, _mockDataSerializer.Object, cancellationTokenSource.Token); + cancellationTokenSource.Cancel(); - testRunEventHandler.HandleRawMessage(string.Empty); + _testRunEventHandler.HandleRawMessage(string.Empty); - this.proxyDataCollectionManager.Verify( - dcm => dcm.AfterTestRunEnd(true, It.IsAny()), - Times.Once); - } + _proxyDataCollectionManager.Verify( + dcm => dcm.AfterTestRunEnd(true, It.IsAny()), + Times.Once); + } - #region Get Combined Attachments - [TestMethod] - public void GetCombinedAttachmentSetsShouldReturnCombinedAttachments() + [TestMethod] + public void HandleRawMessageShouldInvokeAfterTestRunEndAndReturnInvokedDataCollectors() + { + var invokedDataCollectors = new Collection { - Collection Attachments1 = new Collection(); - AttachmentSet attachmentset1 = new AttachmentSet(new Uri("DataCollection://Attachment/v1"), "AttachmentV1"); - attachmentset1.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v11"), "AttachmentV1-Attachment1")); - Attachments1.Add(attachmentset1); + new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, true) + }; + + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new Collection(), new TimeSpan()); + _mockDataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns(new Message() { MessageType = MessageType.ExecutionComplete }); + _mockDataSerializer.Setup(x => x.DeserializePayload(It.IsAny())) + .Returns(new TestRunCompletePayload() { TestRunCompleteArgs = testRunCompleteEventArgs }); + _proxyDataCollectionManager.Setup(p => p.AfterTestRunEnd(It.IsAny(), It.IsAny())) + .Returns(new DataCollectionResult(null, invokedDataCollectors)); + _mockDataSerializer.Setup(r => r.SerializePayload(It.IsAny(), It.IsAny())).Callback((string message, object o) => + { + var testRunCompleteArgs = o as TestRunCompletePayload; + Assert.IsNotNull(testRunCompleteArgs); + Assert.AreEqual(1, testRunCompleteArgs.TestRunCompleteArgs!.InvokedDataCollectors.Count); + Assert.AreEqual(invokedDataCollectors[0], testRunCompleteArgs.TestRunCompleteArgs.InvokedDataCollectors[0]); + }); + + _testRunEventHandler = new DataCollectionTestRunEventsHandler(_baseTestRunEventsHandler.Object, _proxyDataCollectionManager.Object, _mockDataSerializer.Object, CancellationToken.None); + _testRunEventHandler.HandleRawMessage(string.Empty); + + var testRunCompleteEventArgs2 = new TestRunCompleteEventArgs(null, false, false, null, new Collection(), new Collection(), new TimeSpan()); + _testRunEventHandler.HandleTestRunComplete(testRunCompleteEventArgs2, null, null, null); + Assert.AreEqual(1, testRunCompleteEventArgs2.InvokedDataCollectors.Count); + Assert.AreEqual(invokedDataCollectors[0], testRunCompleteEventArgs2.InvokedDataCollectors[0]); + + _proxyDataCollectionManager.Verify( + dcm => dcm.AfterTestRunEnd(false, It.IsAny()), + Times.Once); + } - Collection Attachments2 = new Collection(); - AttachmentSet attachmentset2 = new AttachmentSet(new Uri("DataCollection://Attachment/v1"), "AttachmentV1"); - attachmentset2.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v12"), "AttachmentV1-Attachment2")); + #region Get Combined Attachments + [TestMethod] + public void GetCombinedAttachmentSetsShouldReturnCombinedAttachments() + { + Collection attachments1 = new(); + AttachmentSet attachmentset1 = new(new Uri("DataCollection://Attachment/v1"), "AttachmentV1"); + attachmentset1.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v11"), "AttachmentV1-Attachment1")); + attachments1.Add(attachmentset1); - Attachments2.Add(attachmentset2); + Collection attachments2 = new(); + AttachmentSet attachmentset2 = new(new Uri("DataCollection://Attachment/v1"), "AttachmentV1"); + attachmentset2.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v12"), "AttachmentV1-Attachment2")); - var result = DataCollectionTestRunEventsHandler.GetCombinedAttachmentSets(Attachments1, Attachments2); + attachments2.Add(attachmentset2); - Assert.AreEqual(1, result.Count); - Assert.AreEqual(2, result.First().Attachments.Count); - } + var result = DataCollectionTestRunEventsHandler.GetCombinedAttachmentSets(attachments1, attachments2); - [TestMethod] - public void GetCombinedAttachmentSetsShouldReturnFirstArgumentIfSecondArgumentIsNull() - { - Collection Attachments1 = new Collection(); - AttachmentSet attachmentset1 = new AttachmentSet(new Uri("DataCollection://Attachment/v1"), "AttachmentV1"); - attachmentset1.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v11"), "AttachmentV1-Attachment1")); - Attachments1.Add(attachmentset1); + Assert.AreEqual(1, result.Count); + Assert.AreEqual(2, result.First().Attachments.Count); + } - var result = DataCollectionTestRunEventsHandler.GetCombinedAttachmentSets(Attachments1, null); + [TestMethod] + public void GetCombinedAttachmentSetsShouldReturnFirstArgumentIfSecondArgumentIsNull() + { + Collection attachments1 = new(); + AttachmentSet attachmentset1 = new(new Uri("DataCollection://Attachment/v1"), "AttachmentV1"); + attachmentset1.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v11"), "AttachmentV1-Attachment1")); + attachments1.Add(attachmentset1); - Assert.AreEqual(1, result.Count); - Assert.AreEqual(1, result.First().Attachments.Count); - } + var result = DataCollectionTestRunEventsHandler.GetCombinedAttachmentSets(attachments1, null); - [TestMethod] - public void GetCombinedAttachmentSetsShouldReturnNullIfFirstArgumentIsNull() - { - var result = DataCollectionTestRunEventsHandler.GetCombinedAttachmentSets(null, null); - Assert.IsNull(result); - } + Assert.AreEqual(1, result.Count); + Assert.AreEqual(1, result.First().Attachments.Count); + } - #endregion + [TestMethod] + public void GetCombinedAttachmentSetsShouldReturnNullIfFirstArgumentIsNull() + { + var result = DataCollectionTestRunEventsHandler.GetCombinedAttachmentSets(null, null); + Assert.IsNull(result); } -} \ No newline at end of file + + #endregion +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DotnetDataCollectionLauncherTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DotnetDataCollectionLauncherTests.cs index 337e267ff4..205553eec3 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DotnetDataCollectionLauncherTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/DotnetDataCollectionLauncherTests.cs @@ -1,72 +1,69 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Reflection; - - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; - [TestClass] - public class DotnetDataCollectionLauncherTests - { - private Mock mockFileHelper; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; - private Mock mockProcessHelper; +using Moq; - private Mock mockMessageLogger; +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection; - private DotnetDataCollectionLauncher dataCollectionLauncher; +[TestClass] +public class DotnetDataCollectionLauncherTests +{ + private readonly Mock _mockFileHelper; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockMessageLogger; + private readonly DotnetDataCollectionLauncher _dataCollectionLauncher; - public DotnetDataCollectionLauncherTests() - { - this.mockFileHelper = new Mock(); - this.mockProcessHelper = new Mock(); - this.mockMessageLogger = new Mock(); + public DotnetDataCollectionLauncherTests() + { + _mockFileHelper = new Mock(); + _mockProcessHelper = new Mock(); + _mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("dotnet"); + _mockMessageLogger = new Mock(); - this.dataCollectionLauncher = new DotnetDataCollectionLauncher(this.mockProcessHelper.Object, this.mockFileHelper.Object, this.mockMessageLogger.Object); - } + _dataCollectionLauncher = new DotnetDataCollectionLauncher(_mockProcessHelper.Object, _mockFileHelper.Object, _mockMessageLogger.Object); + } - [TestMethod] - public void LaunchDataCollectorShouldLaunchDataCollectorProcess() - { - List arguments = new List(); - this.dataCollectionLauncher.LaunchDataCollector(null, arguments); + [TestMethod] + public void LaunchDataCollectorShouldLaunchDataCollectorProcess() + { + List arguments = new(); + _dataCollectionLauncher.LaunchDataCollector(null, arguments); - this.mockProcessHelper.Verify(x => x.LaunchProcess(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once()); - } + _mockProcessHelper.Verify(x => x.LaunchProcess(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once()); + } - [TestMethod] - public void LaunchDataCollectorShouldAppendDoubleQuoteForDataCollectorDllPath() - { - var currentWorkingDirectory = Path.GetDirectoryName(typeof(DefaultDataCollectionLauncher).GetTypeInfo().Assembly.GetAssemblyLocation()); - var dataCollectorAssemblyPath = Path.Combine(currentWorkingDirectory, "datacollector.dll"); + [TestMethod] + public void LaunchDataCollectorShouldAppendDoubleQuoteForDataCollectorDllPath() + { + var currentWorkingDirectory = Path.GetDirectoryName(typeof(DefaultDataCollectionLauncher).Assembly.GetAssemblyLocation())!; + var dataCollectorAssemblyPath = Path.Combine(currentWorkingDirectory, "datacollector.dll"); - List arguments = new List(); - this.dataCollectionLauncher.LaunchDataCollector(null, arguments); + List arguments = new(); + _dataCollectionLauncher.LaunchDataCollector(null, arguments); - this.mockProcessHelper.Verify(x => x.LaunchProcess(It.IsAny(), string.Format("{0} \"{1}\" {2} ", "exec", dataCollectorAssemblyPath, string.Join(" ", arguments)), It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once()); - } + _mockProcessHelper.Verify(x => x.LaunchProcess(It.IsAny(), string.Format(CultureInfo.InvariantCulture, "{0} \"{1}\" {2} ", "exec", dataCollectorAssemblyPath, string.Join(" ", arguments)), It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once()); + } - [TestMethod] - public void LaunchDataCollectorShouldLaunchDataCollectorProcessWithCurrecntWorkingDirectory() - { - List arguments = new List(); - this.dataCollectionLauncher.LaunchDataCollector(null, arguments); + [TestMethod] + public void LaunchDataCollectorShouldLaunchDataCollectorProcessWithCurrecntWorkingDirectory() + { + List arguments = new(); + _dataCollectionLauncher.LaunchDataCollector(null, arguments); - string currentWorkingDirectory = Directory.GetCurrentDirectory(); + string currentWorkingDirectory = Directory.GetCurrentDirectory(); - this.mockProcessHelper.Verify(x => x.LaunchProcess(It.IsAny(), It.IsAny(), currentWorkingDirectory, It.IsAny>(), It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once()); - } + _mockProcessHelper.Verify(x => x.LaunchProcess(It.IsAny(), It.IsAny(), currentWorkingDirectory, It.IsAny>(), It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once()); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs index 0b439bff1a..87c3f5dfb6 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionExtensionManagerTests.cs @@ -1,32 +1,33 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Xml; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Constants = Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Constants; + +namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection; + +[TestClass] +public class InProcDataCollectionExtensionManagerTests { - using System; - using System.IO; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using System.Xml; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using Constants = Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Constants; - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; - - [TestClass] - public class InProcDataCollectionExtensionManagerTests - { - private string settingsXml = @" + private static readonly string Temp = Path.GetTempPath(); + private readonly string _settingsXml = @" @@ -37,39 +38,58 @@ public class InProcDataCollectionExtensionManagerTests "; - private Mock mockTestEventsPublisher; - private TestableInProcDataCollectionExtensionManager inProcDataCollectionManager; - private static string temp = Path.GetTempPath(); - private string defaultCodebase = Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug"); - private Mock mockFileHelper; - private TestPluginCache testPluginCache; - - [TestInitialize] - public void TestInit() - { - this.mockTestEventsPublisher = new Mock(); - this.mockFileHelper = new Mock(); - this.testPluginCache = TestPluginCache.Instance; - this.inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(this.settingsXml, this.mockTestEventsPublisher.Object, this.defaultCodebase, this.testPluginCache, this.mockFileHelper.Object); - } + private readonly Mock _mockTestEventsPublisher; + private readonly string _defaultCodebase = Path.Combine(Temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug"); + private readonly Mock _mockFileHelper; + private readonly TestPluginCache _testPluginCache; - [TestMethod] - public void InProcDataCollectionExtensionManagerShouldLoadsDataCollectorsFromRunSettings() - { - var dataCollector = inProcDataCollectionManager.InProcDataCollectors.First().Value as MockDataCollector; + private TestableInProcDataCollectionExtensionManager _inProcDataCollectionManager; + + public InProcDataCollectionExtensionManagerTests() + { + _mockTestEventsPublisher = new Mock(); + _mockFileHelper = new Mock(); + _testPluginCache = TestPluginCache.Instance; + _inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache, _mockFileHelper.Object); + } - Assert.IsTrue(inProcDataCollectionManager.IsInProcDataCollectionEnabled, "InProcDataCollection must be enabled if runsettings contains inproc datacollectors."); - Assert.AreEqual(1, inProcDataCollectionManager.InProcDataCollectors.Count, "One Datacollector must be registered"); + [TestMethod] + public void CodeBasePathsAreDeduplicatedWithCaseIgnoring() + { + var testPluginCache = new TestableTestPluginCache(); + // the boolean argument refers to adding the paths to which list(we have two lists)and the duplicate happened when we merged the two lists and they had the same path + testPluginCache.UpdateExtensions(new List { Path.Combine(Temp, "DEDUPLICATINGWITHCASEIGNORING1", "Collector.dll") }, false); + var directory1 = Path.Combine(Temp, "DeduplicatingWithCaseIgnoring1"); + var directory2 = Path.Combine(Temp, "DeduplicatingWithCaseIgnoring2"); + testPluginCache.UpdateExtensions(new List { Path.Combine(directory1, "Collector.dll"), Path.Combine(directory2, "Collector.dll") }, true); - StringAssert.Equals(dataCollector.AssemblyQualifiedName, "TestImpactListener.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7ccb7239ffde675a"); - StringAssert.Equals(dataCollector.CodeBase, Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests.dll")); - StringAssert.Equals(dataCollector.Configuration.OuterXml, @"4312"); - } + var inProcDataCollectionExtensionManager = new TestableInProcDataCollectionExtensionManager(_settingsXml, _mockTestEventsPublisher.Object, null, testPluginCache, _mockFileHelper.Object); - [TestMethod] - public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromDefaultCodebaseIfExistsAndCodebaseIsRelative() - { - string settingsXml = @" + Assert.AreEqual(3, inProcDataCollectionExtensionManager.CodeBasePaths.Count); // "CodeBasePaths" contains the two extensions(after removing duplicates) and the "_defaultCodebase" + + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(null)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(directory1)); + Assert.IsTrue(inProcDataCollectionExtensionManager.CodeBasePaths.Contains(directory2)); + } + + + [TestMethod] + public void InProcDataCollectionExtensionManagerShouldLoadsDataCollectorsFromRunSettings() + { + var dataCollector = (MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.First().Value; + + Assert.IsTrue(_inProcDataCollectionManager.IsInProcDataCollectionEnabled, "InProcDataCollection must be enabled if runsettings contains inproc datacollectors."); + Assert.AreEqual(1, _inProcDataCollectionManager.InProcDataCollectors.Count, "One Datacollector must be registered"); + + Equals(dataCollector.AssemblyQualifiedName, "TestImpactListener.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7ccb7239ffde675a"); + Equals(dataCollector.CodeBase, Path.Combine(Temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests.dll")); + Equals(dataCollector.Configuration.OuterXml, @"4312"); + } + + [TestMethod] + public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromDefaultCodebaseIfExistsAndCodebaseIsRelative() + { + string settingsXml = @" @@ -81,17 +101,17 @@ public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromDefaultCod "; - this.mockFileHelper.Setup(fh => fh.Exists(Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests.dll"))).Returns(true); - this.inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(settingsXml, this.mockTestEventsPublisher.Object, this.defaultCodebase, this.testPluginCache, this.mockFileHelper.Object); + _mockFileHelper.Setup(fh => fh.Exists(Path.Combine(new[] { Temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests.dll" }))).Returns(true); + _inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache, _mockFileHelper.Object); - var codebase = (inProcDataCollectionManager.InProcDataCollectors.Values.First() as MockDataCollector).CodeBase; - Assert.AreEqual(Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests.dll"), codebase); - } + var codebase = ((MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First()).CodeBase; + Assert.AreEqual(Path.Combine(Temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests.dll"), codebase); + } - [TestMethod] - public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromTestPluginCacheIfExistsAndCodebaseIsRelative() - { - string settingsXml = @" + [TestMethod] + public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromTestPluginCacheIfExistsAndCodebaseIsRelative() + { + string settingsXml = @" @@ -103,19 +123,19 @@ public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromTestPlugin "; - this.testPluginCache.UpdateExtensions(new List { Path.Combine(temp, "source", ".nuget", "TestImpactListenerDataCollector.dll") }, true); - this.mockFileHelper.Setup(fh => fh.Exists(Path.Combine(temp, "source", ".nuget", "TestImpactListenerDataCollector.dll"))).Returns(true); + _testPluginCache.UpdateExtensions(new List { Path.Combine(Temp, "source", ".nuget", "TestImpactListenerDataCollector.dll") }, true); + _mockFileHelper.Setup(fh => fh.Exists(Path.Combine(Temp, "source", ".nuget", "TestImpactListenerDataCollector.dll"))).Returns(true); - this.inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(settingsXml, this.mockTestEventsPublisher.Object, this.defaultCodebase, this.testPluginCache, this.mockFileHelper.Object); + _inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache, _mockFileHelper.Object); - var codebase = (inProcDataCollectionManager.InProcDataCollectors.Values.First() as MockDataCollector).CodeBase; - Assert.AreEqual(Path.Combine(temp,"source", ".nuget", "TestImpactListenerDataCollector.dll"), codebase); - } + var codebase = ((MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First()).CodeBase; + Assert.AreEqual(Path.Combine(Temp, "source", ".nuget", "TestImpactListenerDataCollector.dll"), codebase); + } - [TestMethod] - public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromGivenCodebaseIfCodebaseIsAbsolute() - { - string settingsXml = @" + [TestMethod] + public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromGivenCodebaseIfCodebaseIsAbsolute() + { + string settingsXml = @" @@ -126,19 +146,19 @@ public void InProcDataCollectionExtensionManagerLoadsDataCollectorFromGivenCodeb "; - this.inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(settingsXml, this.mockTestEventsPublisher.Object, this.defaultCodebase, this.testPluginCache, this.mockFileHelper.Object); + _inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(settingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache, _mockFileHelper.Object); - var codebase = (inProcDataCollectionManager.InProcDataCollectors.Values.First() as MockDataCollector).CodeBase; - Assert.AreEqual("\\\\DummyPath\\TestImpactListener.Tests.dll", codebase); - } + var codebase = ((MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First()).CodeBase; + Assert.AreEqual("\\\\DummyPath\\TestImpactListener.Tests.dll", codebase); + } - [TestMethod] - public void InProcDataCollectorIsReadingMultipleDataCollector() - { - var temp = Path.GetTempPath(); - var path1 = Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests1.dll"); - var path2 = Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests2.dll"); - var multiSettingsXml = $@" + [TestMethod] + public void InProcDataCollectorIsReadingMultipleDataCollector() + { + var temp = Path.GetTempPath(); + var path1 = Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests1.dll"); + var path2 = Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests2.dll"); + var multiSettingsXml = $@" @@ -155,37 +175,37 @@ public void InProcDataCollectorIsReadingMultipleDataCollector() "; - this.inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(multiSettingsXml, this.mockTestEventsPublisher.Object, this.defaultCodebase, this.testPluginCache, this.mockFileHelper.Object); - bool secondOne = false; - MockDataCollector dataCollector1 = null; - MockDataCollector dataCollector2 = null; + _inProcDataCollectionManager = new TestableInProcDataCollectionExtensionManager(multiSettingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache, _mockFileHelper.Object); + bool secondOne = false; + MockDataCollector? dataCollector1 = null; + MockDataCollector? dataCollector2 = null; - foreach (var inProcDC in inProcDataCollectionManager.InProcDataCollectors.Values) + foreach (var inProcDc in _inProcDataCollectionManager.InProcDataCollectors.Values) + { + if (secondOne) + { + dataCollector2 = inProcDc as MockDataCollector; + } + else { - if (secondOne) - { - dataCollector2 = inProcDC as MockDataCollector; - } - else - { - dataCollector1 = inProcDC as MockDataCollector; - secondOne = true; - } + dataCollector1 = inProcDc as MockDataCollector; + secondOne = true; } + } - Assert.IsTrue(string.Equals(dataCollector1.AssemblyQualifiedName, "TestImpactListener.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7ccb7239ffde675a", StringComparison.OrdinalIgnoreCase)); - Assert.IsTrue(string.Equals(dataCollector1.CodeBase, Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests1.dll"), StringComparison.OrdinalIgnoreCase)); - Assert.IsTrue(string.Equals(dataCollector1.Configuration.OuterXml, @"4312", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(string.Equals(dataCollector1!.AssemblyQualifiedName, "TestImpactListener.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7ccb7239ffde675a", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(string.Equals(dataCollector1.CodeBase, Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests1.dll"), StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(string.Equals(dataCollector1.Configuration.OuterXml, @"4312", StringComparison.OrdinalIgnoreCase)); - Assert.IsTrue(string.Equals(dataCollector2.AssemblyQualifiedName, "TestImpactListener.Tests, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7ccb7239ffde675a", StringComparison.OrdinalIgnoreCase)); - Assert.IsTrue(string.Equals(dataCollector2.CodeBase, Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests2.dll"), StringComparison.OrdinalIgnoreCase)); - Assert.IsTrue(string.Equals(dataCollector2.Configuration.OuterXml, @"4313", StringComparison.OrdinalIgnoreCase)); - } + Assert.IsTrue(string.Equals(dataCollector2!.AssemblyQualifiedName, "TestImpactListener.Tests, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7ccb7239ffde675a", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(string.Equals(dataCollector2.CodeBase, Path.Combine(temp, "repos", "MSTest", "src", "managed", "TestPlatform", "TestImpactListener.Tests", "bin", "Debug", "TestImpactListener.Tests2.dll"), StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(string.Equals(dataCollector2.Configuration.OuterXml, @"4313", StringComparison.OrdinalIgnoreCase)); + } - [TestMethod] - public void InProcDataCollectionExtensionManagerWillNotEnableDataCollectionForInavlidSettingsXml() - { - var invalidSettingsXml = @" + [TestMethod] + public void InProcDataCollectionExtensionManagerWillNotEnableDataCollectionForInavlidSettingsXml() + { + var invalidSettingsXml = @" @@ -197,151 +217,134 @@ public void InProcDataCollectionExtensionManagerWillNotEnableDataCollectionForIn "; - var manager = new InProcDataCollectionExtensionManager(invalidSettingsXml, this.mockTestEventsPublisher.Object, this.defaultCodebase, this.testPluginCache); - Assert.IsFalse(manager.IsInProcDataCollectionEnabled, "InProcDataCollection must be disabled on invalid settings."); - } - [TestMethod] - public void TriggerSessionStartShouldBeCalledWithCorrectTestSources() + var manager = new InProcDataCollectionExtensionManager(invalidSettingsXml, _mockTestEventsPublisher.Object, _defaultCodebase, _testPluginCache); + Assert.IsFalse(manager.IsInProcDataCollectionEnabled, "InProcDataCollection must be disabled on invalid settings."); + } + [TestMethod] + public void TriggerSessionStartShouldBeCalledWithCorrectTestSources() + { + var properties = new Dictionary { - var properties = new Dictionary(); - properties.Add("TestSources", new List() { "testsource1.dll", "testsource2.dll" }); + { "TestSources", new List() { "testsource1.dll", "testsource2.dll" } } + }; - var mockDataCollector = inProcDataCollectionManager.InProcDataCollectors.Values.FirstOrDefault() as MockDataCollector; + var mockDataCollector = (MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First(); - this.mockTestEventsPublisher.Raise(x => x.SessionStart += null, new SessionStartEventArgs(properties)); - Assert.IsTrue((mockDataCollector.TestSessionStartCalled == 1), "TestSessionStart must be called on datacollector"); + _mockTestEventsPublisher.Raise(x => x.SessionStart += null, new SessionStartEventArgs(properties)); + Assert.IsTrue((mockDataCollector.TestSessionStartCalled == 1), "TestSessionStart must be called on datacollector"); - Assert.IsTrue(mockDataCollector.TestSources.Contains("testsource1.dll")); - Assert.IsTrue(mockDataCollector.TestSources.Contains("testsource2.dll")); - } + Assert.IsNotNull(mockDataCollector.TestSources); + Assert.IsTrue(mockDataCollector.TestSources.Contains("testsource1.dll")); + Assert.IsTrue(mockDataCollector.TestSources.Contains("testsource2.dll")); + } - [TestMethod] - public void TriggerSessionStartShouldCallInProcDataCollector() - { - this.mockTestEventsPublisher.Raise(x => x.SessionStart += null, new SessionStartEventArgs()); + [TestMethod] + public void TriggerSessionStartShouldCallInProcDataCollector() + { + _mockTestEventsPublisher.Raise(x => x.SessionStart += null, new SessionStartEventArgs()); - var mockDataCollector = inProcDataCollectionManager.InProcDataCollectors.Values.FirstOrDefault() as MockDataCollector; - Assert.IsTrue((mockDataCollector.TestSessionStartCalled == 1), "TestSessionStart must be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestSessionEndCalled == 0), "TestSessionEnd must NOT be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 0), "TestCaseStart must NOT be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 0), "TestCaseEnd must NOT be called on datacollector"); - } + var mockDataCollector = (MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First(); + Assert.IsTrue((mockDataCollector.TestSessionStartCalled == 1), "TestSessionStart must be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestSessionEndCalled == 0), "TestSessionEnd must NOT be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 0), "TestCaseStart must NOT be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 0), "TestCaseEnd must NOT be called on datacollector"); + } - [TestMethod] - public void TriggerSessionEndShouldCallInProcDataCollector() - { - this.mockTestEventsPublisher.Raise(x => x.SessionEnd += null, new SessionEndEventArgs()); + [TestMethod] + public void TriggerSessionEndShouldCallInProcDataCollector() + { + _mockTestEventsPublisher.Raise(x => x.SessionEnd += null, new SessionEndEventArgs()); - var mockDataCollector = inProcDataCollectionManager.InProcDataCollectors.Values.FirstOrDefault() as MockDataCollector; - Assert.IsTrue((mockDataCollector.TestSessionStartCalled == 0), "TestSessionEnd must NOT be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestSessionEndCalled == 1), "TestSessionStart must be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 0), "TestCaseStart must NOT be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 0), "TestCaseEnd must NOT be called on datacollector"); - } + var mockDataCollector = (MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First(); + Assert.IsTrue((mockDataCollector.TestSessionStartCalled == 0), "TestSessionEnd must NOT be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestSessionEndCalled == 1), "TestSessionStart must be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 0), "TestCaseStart must NOT be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 0), "TestCaseEnd must NOT be called on datacollector"); + } - [TestMethod] - public void TriggerTestCaseStartShouldCallInProcDataCollector() - { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - // random guid - testCase.Id = new Guid("3871B3B0-2853-406B-BB61-1FE1764116FD"); - this.mockTestEventsPublisher.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testCase)); + [TestMethod] + public void TriggerTestCaseStartShouldCallInProcDataCollector() + { + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + // random guid + testCase.Id = new Guid("3871B3B0-2853-406B-BB61-1FE1764116FD"); + _mockTestEventsPublisher.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testCase)); - var mockDataCollector = inProcDataCollectionManager.InProcDataCollectors.Values.FirstOrDefault() as MockDataCollector; + var mockDataCollector = (MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First(); - Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 1), "TestCaseStart must be called on datacollector"); - Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 0), "TestCaseEnd must NOT be called on datacollector"); - } + Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 1), "TestCaseStart must be called on datacollector"); + Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 0), "TestCaseEnd must NOT be called on datacollector"); + } - [TestMethod] - public void TriggerTestCaseEndShouldtBeCalledMultipleTimesInDataDrivenScenario() + [TestMethod] + public void TriggerTestCaseEndShouldtBeCalledMultipleTimesInDataDrivenScenario() + { + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + // random guid + testCase.Id = new Guid("3871B3B0-2853-406B-BB61-1FE1764116FD"); + _mockTestEventsPublisher.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testCase)); + _mockTestEventsPublisher.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testCase, TestOutcome.Passed)); + _mockTestEventsPublisher.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testCase)); + _mockTestEventsPublisher.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testCase, TestOutcome.Failed)); + + var mockDataCollector = (MockDataCollector)_inProcDataCollectionManager.InProcDataCollectors.Values.First(); + Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 2), "TestCaseStart must only be called once"); + Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 2), "TestCaseEnd must only be called once"); + } + + internal class TestableInProcDataCollectionExtensionManager : InProcDataCollectionExtensionManager + { + public TestableInProcDataCollectionExtensionManager(string runSettings, ITestEventsPublisher mockTestEventsPublisher, string? defaultCodebase, TestPluginCache testPluginCache, IFileHelper fileHelper) + : base(runSettings, mockTestEventsPublisher, defaultCodebase, testPluginCache, fileHelper) { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - // random guid - testCase.Id = new Guid("3871B3B0-2853-406B-BB61-1FE1764116FD"); - this.mockTestEventsPublisher.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testCase)); - this.mockTestEventsPublisher.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testCase, TestOutcome.Passed)); - this.mockTestEventsPublisher.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testCase)); - this.mockTestEventsPublisher.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testCase, TestOutcome.Failed)); - - var mockDataCollector = inProcDataCollectionManager.InProcDataCollectors.Values.FirstOrDefault() as MockDataCollector; - Assert.IsTrue((mockDataCollector.TestCaseStartCalled == 2), "TestCaseStart must only be called once"); - Assert.IsTrue((mockDataCollector.TestCaseEndCalled == 2), "TestCaseEnd must only be called once"); } - internal class TestableInProcDataCollectionExtensionManager : InProcDataCollectionExtensionManager + protected override IInProcDataCollector CreateDataCollector(string assemblyQualifiedName, string codebase, XmlElement configuration, Type interfaceType) { - public TestableInProcDataCollectionExtensionManager(string runSettings, ITestEventsPublisher mockTestEventsPublisher, string defaultCodebase, TestPluginCache testPluginCache, IFileHelper fileHelper) - : base(runSettings, mockTestEventsPublisher, defaultCodebase, testPluginCache, fileHelper) - { - } - - protected override IInProcDataCollector CreateDataCollector(string assemblyQualifiedName, string codebase, XmlElement configuration, TypeInfo interfaceTypeInfo) - { - return new MockDataCollector(assemblyQualifiedName, codebase,configuration); - } + return new MockDataCollector(assemblyQualifiedName, codebase, configuration); } + } - public class MockDataCollector : IInProcDataCollector + public class MockDataCollector : IInProcDataCollector + { + public MockDataCollector(string assemblyQualifiedName, string codebase, XmlElement configuration) { - public MockDataCollector(string assemblyQualifiedName, string codebase, XmlElement configuration) - { - this.AssemblyQualifiedName = assemblyQualifiedName; - this.CodeBase = codebase; - this.Configuration = configuration; - } - - public string AssemblyQualifiedName - { - get; - private set; - } - - public string CodeBase - { - get; - private set; - } - - public XmlElement Configuration - { - get; - private set; - } + AssemblyQualifiedName = assemblyQualifiedName; + CodeBase = codebase; + Configuration = configuration; + } - public int TestSessionStartCalled { get; private set; } - public int TestSessionEndCalled { get; private set; } - public int TestCaseStartCalled { get; private set; } - public int TestCaseEndCalled { get; private set; } - public IEnumerable TestSources - { - get; - private set; - } + public string AssemblyQualifiedName { get; private set; } + public string CodeBase { get; private set; } + public XmlElement Configuration { get; private set; } + public int TestSessionStartCalled { get; private set; } + public int TestSessionEndCalled { get; private set; } + public int TestCaseStartCalled { get; private set; } + public int TestCaseEndCalled { get; private set; } + public IEnumerable? TestSources { get; private set; } - public void LoadDataCollector(IDataCollectionSink inProcDataCollectionSink) - { - // Do Nothing - } + public void LoadDataCollector(IDataCollectionSink inProcDataCollectionSink) + { + // Do Nothing + } - public void TriggerInProcDataCollectionMethod(string methodName, InProcDataCollectionArgs methodArg) + public void TriggerInProcDataCollectionMethod(string methodName, InProcDataCollectionArgs methodArg) + { + switch (methodName) { - switch (methodName) - { - case Constants.TestSessionStartMethodName: this.TestSessionStartMethodCalled(methodArg as TestSessionStartArgs); break; - case Constants.TestSessionEndMethodName: TestSessionEndCalled++; break; - case Constants.TestCaseStartMethodName: TestCaseStartCalled++; break; - case Constants.TestCaseEndMethodName: TestCaseEndCalled++; break; - default: break; - } + case Constants.TestSessionStartMethodName: TestSessionStartMethodCalled((TestSessionStartArgs)methodArg); break; + case Constants.TestSessionEndMethodName: TestSessionEndCalled++; break; + case Constants.TestCaseStartMethodName: TestCaseStartCalled++; break; + case Constants.TestCaseEndMethodName: TestCaseEndCalled++; break; + default: break; } + } - private void TestSessionStartMethodCalled(TestSessionStartArgs testSessionStartArgs) - { - TestSessionStartCalled++; - this.TestSources = testSessionStartArgs.GetPropertyValue>("TestSources"); - } + private void TestSessionStartMethodCalled(TestSessionStartArgs testSessionStartArgs) + { + TestSessionStartCalled++; + TestSources = testSessionStartArgs.GetPropertyValue>("TestSources"); } } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionSinkTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionSinkTests.cs index 83fba0bd1e..d3b85388af 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionSinkTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectionSinkTests.cs @@ -1,68 +1,64 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection -{ - using System; - - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; - [TestClass] - public class InProcDataCollectionSinkTests - { - private IDataCollectionSink dataCollectionSink; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; - private DataCollectionContext dataCollectionContext; +namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection; - private TestCase testCase; +[TestClass] +public class InProcDataCollectionSinkTests +{ + private readonly IDataCollectionSink _dataCollectionSink; + private readonly DataCollectionContext _dataCollectionContext; + private readonly TestCase _testCase; - [TestInitialize] - public void InitializeTest() - { - this.dataCollectionSink = new InProcDataCollectionSink(); - this.testCase = new TestCase("DummyNS.DummyC.DummyM", new Uri("executor://mstest/v1"), "Dummy.dll"); - this.dataCollectionContext = new DataCollectionContext(this.testCase); - } + public InProcDataCollectionSinkTests() + { + _dataCollectionSink = new InProcDataCollectionSink(); + _testCase = new TestCase("DummyNS.DummyC.DummyM", new Uri("executor://mstest/v1"), "Dummy.dll"); + _dataCollectionContext = new DataCollectionContext(_testCase); + } - [TestMethod] - public void SendDataShouldAddKeyValueToDictionaryInSink() - { - this.testCase.SetPropertyValue(TestCaseProperties.Id, Guid.NewGuid()); - this.dataCollectionSink.SendData(this.dataCollectionContext, "DummyKey", "DummyValue"); + [TestMethod] + public void SendDataShouldAddKeyValueToDictionaryInSink() + { + _testCase.SetPropertyValue(TestCaseProperties.Id, Guid.NewGuid()); + _dataCollectionSink.SendData(_dataCollectionContext, "DummyKey", "DummyValue"); - var dict = ((InProcDataCollectionSink)this.dataCollectionSink).GetDataCollectionDataSetForTestCase(this.testCase.Id); + var dict = ((InProcDataCollectionSink)_dataCollectionSink).GetDataCollectionDataSetForTestCase(_testCase.Id); - Assert.AreEqual("DummyValue", dict["DummyKey"]); - } + Assert.AreEqual("DummyValue", dict["DummyKey"]); + } - [TestMethod] + [TestMethod] - public void SendDataShouldThrowArgumentExceptionIfKeyIsNull() - { - this.testCase.SetPropertyValue(TestCaseProperties.Id, Guid.NewGuid()); + public void SendDataShouldThrowArgumentExceptionIfKeyIsNull() + { + _testCase.SetPropertyValue(TestCaseProperties.Id, Guid.NewGuid()); - Assert.ThrowsException( - () => this.dataCollectionSink.SendData(this.dataCollectionContext, null, "DummyValue")); - } + Assert.ThrowsException( + () => _dataCollectionSink.SendData(_dataCollectionContext, null!, "DummyValue")); + } - [TestMethod] - public void SendDataShouldThrowArgumentExceptionIfValueIsNull() - { - this.testCase.SetPropertyValue(TestCaseProperties.Id, Guid.NewGuid()); + [TestMethod] + public void SendDataShouldThrowArgumentExceptionIfValueIsNull() + { + _testCase.SetPropertyValue(TestCaseProperties.Id, Guid.NewGuid()); - Assert.ThrowsException( - () => this.dataCollectionSink.SendData(this.dataCollectionContext, "DummyKey", null)); - } + Assert.ThrowsException( + () => _dataCollectionSink.SendData(_dataCollectionContext, "DummyKey", null!)); + } - //[TestMethod] - // TODO : Currently this code hits when test case id is null for core projects. For that we don't have algorithm to generate the guid. It's not implemented exception now (Source Code : EqtHash.cs). - public void SendDataShouldThrowArgumentExceptionIfTestCaseIdIsNull() - { - Assert.ThrowsException( - () => this.dataCollectionSink.SendData(this.dataCollectionContext, "DummyKey", "DummyValue")); - } + //[TestMethod] + // TODO : Currently this code hits when test case id is null for core projects. For that we don't have algorithm to generate the guid. It's not implemented exception now (Source Code : EqtHash.cs). + public void SendDataShouldThrowArgumentExceptionIfTestCaseIdIsNull() + { + Assert.ThrowsException( + () => _dataCollectionSink.SendData(_dataCollectionContext, "DummyKey", "DummyValue")); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs index 2f34e29ae0..0baec50dbd 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/InProcDataCollectorTests.cs @@ -1,143 +1,144 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection +using System.IO; +using System.Reflection; + +using Coverlet.Collector.DataCollection; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.InProcDataCollector; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection; + +[TestClass] +public class InProcDataCollectorTests { - using System.IO; - using System.Reflection; - using Coverlet.Collector.DataCollection; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.InProcDataCollector; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class InProcDataCollectorTests + private readonly Mock _assemblyLoadContext; + + private IInProcDataCollector? _inProcDataCollector; + + public InProcDataCollectorTests() { - private Mock assemblyLoadContext; + _assemblyLoadContext = new Mock(); + } - private IInProcDataCollector inProcDataCollector; + [TestMethod] + public void InProcDataCollectorShouldNotThrowExceptionIfInvalidAssemblyIsProvided() + { + _assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) + .Throws(); + + _inProcDataCollector = new InProcDataCollector( + string.Empty, + string.Empty, + null!, + string.Empty, + _assemblyLoadContext.Object, + TestPluginCache.Instance); + + Assert.IsNull(_inProcDataCollector.AssemblyQualifiedName); + } - public InProcDataCollectorTests() - { - this.assemblyLoadContext = new Mock(); - } + [TestMethod] + public void InProcDataCollectorShouldNotThrowExceptionIfAssemblyDoesNotContainAnyInProcDataCollector() + { + _assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) + .Returns(Assembly.GetEntryAssembly()!); + + _inProcDataCollector = new InProcDataCollector( + string.Empty, + string.Empty, + null!, + string.Empty, + _assemblyLoadContext.Object, + TestPluginCache.Instance); + + Assert.IsNull(_inProcDataCollector.AssemblyQualifiedName); + } - [TestMethod] - public void InProcDataCollectorShouldNotThrowExceptionIfInvalidAssemblyIsProvided() - { - this.assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) - .Throws(); - - this.inProcDataCollector = new InProcDataCollector( - string.Empty, - string.Empty, - null, - string.Empty, - this.assemblyLoadContext.Object, - TestPluginCache.Instance); - - Assert.IsNull(this.inProcDataCollector.AssemblyQualifiedName); - } + [TestMethod] + public void InProcDataCollectorShouldInitializeIfAssemblyContainsAnyInProcDataCollector() + { + var type = typeof(TestableInProcDataCollector); - [TestMethod] - public void InProcDataCollectorShouldNotThrowExceptionIfAssemblyDoesNotContainAnyInProcDataCollector() - { - this.assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) - .Returns(Assembly.GetEntryAssembly()); - - this.inProcDataCollector = new InProcDataCollector( - string.Empty, - string.Empty, - null, - string.Empty, - this.assemblyLoadContext.Object, - TestPluginCache.Instance); - - Assert.IsNull(this.inProcDataCollector.AssemblyQualifiedName); - } + _assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) + .Returns(type.Assembly); - [TestMethod] - public void InProcDataCollectorShouldInitializeIfAssemblyContainsAnyInProcDataCollector() - { - var typeInfo = typeof(TestableInProcDataCollector).GetTypeInfo(); + _inProcDataCollector = new InProcDataCollector( + string.Empty, + type.AssemblyQualifiedName!, + type, + string.Empty, + _assemblyLoadContext.Object, + TestPluginCache.Instance); - this.assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) - .Returns(typeInfo.Assembly); + Assert.IsNotNull(_inProcDataCollector.AssemblyQualifiedName); + Assert.AreEqual(_inProcDataCollector.AssemblyQualifiedName, type.AssemblyQualifiedName); + } - this.inProcDataCollector = new InProcDataCollector( - string.Empty, - typeInfo.AssemblyQualifiedName, - typeInfo, - string.Empty, - this.assemblyLoadContext.Object, - TestPluginCache.Instance); + [TestMethod] + public void InProcDataCollectorLoadCoverlet() + { + var type = typeof(CoverletInProcDataCollector); - Assert.IsNotNull(this.inProcDataCollector.AssemblyQualifiedName); - Assert.AreEqual(this.inProcDataCollector.AssemblyQualifiedName, typeInfo.AssemblyQualifiedName); - } + Assert.AreEqual("9.9.9.9", type.Assembly.GetName().Version!.ToString()); - [TestMethod] - public void InProcDataCollectorLoadCoverlet() - { - var typeInfo = typeof(CoverletInProcDataCollector).GetTypeInfo(); + _assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) + .Returns(type.Assembly); - Assert.AreEqual("9.9.9.9", typeInfo.Assembly.GetName().Version.ToString()); + // We need to mock TestPluginCache because we have to create assembly resolver instance + // using SetupAssemblyResolver method, we don't use any other method of class(like DiscoverTestExtensions etc...) + // that fire creation + TestableTestPluginCache testablePlugin = new(); + testablePlugin.SetupAssemblyResolver(type.Assembly.Location); - this.assemblyLoadContext.Setup(alc => alc.LoadAssemblyFromPath(It.IsAny())) - .Returns(typeInfo.Assembly); + _inProcDataCollector = new InProcDataCollector( + type.Assembly.Location, + "Coverlet.Collector.DataCollection.CoverletInProcDataCollector, coverlet.collector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", + typeof(InProcDataCollection), + string.Empty, + _assemblyLoadContext.Object, + testablePlugin); - // We need to mock TestPluginCache because we have to create assembly resolver instance - // using SetupAssemblyResolver method, we don't use any other method of class(like DiscoverTestExtensions etc...) - // that fire creation - TestableTestPluginCache testablePlugin = new TestableTestPluginCache(); - testablePlugin.SetupAssemblyResolver(typeInfo.Assembly.Location); + Assert.IsNotNull(_inProcDataCollector.AssemblyQualifiedName); + Assert.AreEqual(_inProcDataCollector.AssemblyQualifiedName, type.AssemblyQualifiedName); + } - this.inProcDataCollector = new InProcDataCollector( - typeInfo.Assembly.Location, - "Coverlet.Collector.DataCollection.CoverletInProcDataCollector, coverlet.collector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", - typeof(InProcDataCollection).GetTypeInfo(), - string.Empty, - this.assemblyLoadContext.Object, - testablePlugin); + private class TestableInProcDataCollector : InProcDataCollection + { + public void Initialize(IDataCollectionSink dataCollectionSink) + { + throw new System.NotImplementedException(); + } + + public void TestSessionStart(TestSessionStartArgs testSessionStartArgs) + { + throw new System.NotImplementedException(); + } - Assert.IsNotNull(this.inProcDataCollector.AssemblyQualifiedName); - Assert.AreEqual(this.inProcDataCollector.AssemblyQualifiedName, typeInfo.AssemblyQualifiedName); + public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) + { + throw new System.NotImplementedException(); + } + + public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) + { + throw new System.NotImplementedException(); } - private class TestableInProcDataCollector : InProcDataCollection + public void TestSessionEnd(TestSessionEndArgs testSessionEndArgs) { - public void Initialize(IDataCollectionSink dataCollectionSink) - { - throw new System.NotImplementedException(); - } - - public void TestSessionStart(TestSessionStartArgs testSessionStartArgs) - { - throw new System.NotImplementedException(); - } - - public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) - { - throw new System.NotImplementedException(); - } - - public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) - { - throw new System.NotImplementedException(); - } - - public void TestSessionEnd(TestSessionEndArgs testSessionEndArgs) - { - throw new System.NotImplementedException(); - } + throw new System.NotImplementedException(); } } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ParallelDataCollectionEventsHandlerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ParallelDataCollectionEventsHandlerTests.cs index 6823e8efc1..bb923e63bb 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ParallelDataCollectionEventsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ParallelDataCollectionEventsHandlerTests.cs @@ -1,95 +1,96 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Constants = Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection; + +[TestClass] +public class ParallelDataCollectionEventsHandlerTests { - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Threading; - using System.Threading.Tasks; - - [TestClass] - public class ParallelDataCollectionEventsHandlerTests + private const string Uri1 = "datacollector://microsoft/some1/1.0"; + private const string Uri2 = "datacollector://microsoft/some2/2.0"; + private const string Uri3 = "datacollector://microsoft/some3/2.0"; + + private readonly Mock _mockRequestData; + private readonly Mock _mockProxyExecutionManager; + private readonly Mock _mockTestRunEventsHandler; + private readonly Mock _mockParallelProxyExecutionManager; + private readonly Mock _mockTestRunAttachmentsProcessingManager; + private readonly CancellationTokenSource _cancellationTokenSource; + private readonly ParallelDataCollectionEventsHandler _parallelDataCollectionEventsHandler; + + public ParallelDataCollectionEventsHandlerTests() + { + _mockRequestData = new Mock(); + _mockRequestData.Setup(r => r.ProtocolConfig).Returns(new ProtocolConfig()); + _mockProxyExecutionManager = new Mock(); + _mockTestRunEventsHandler = new Mock(); + _mockParallelProxyExecutionManager = new Mock(); + _mockTestRunAttachmentsProcessingManager = new Mock(); + _cancellationTokenSource = new CancellationTokenSource(); + _parallelDataCollectionEventsHandler = new ParallelDataCollectionEventsHandler(_mockRequestData.Object, _mockProxyExecutionManager.Object, _mockTestRunEventsHandler.Object, + _mockParallelProxyExecutionManager.Object, new ParallelRunDataAggregator(Constants.EmptyRunSettings), _mockTestRunAttachmentsProcessingManager.Object, _cancellationTokenSource.Token); + + _mockParallelProxyExecutionManager.Setup(m => m.HandlePartialRunComplete(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>())).Returns(true); + } + + [TestMethod] + public void HandleTestRunComplete_ShouldCallProcessTestRunAttachmentsAsyncWithAttachmentsAndUseResults() { - private const string uri1 = "datacollector://microsoft/some1/1.0"; - private const string uri2 = "datacollector://microsoft/some2/2.0"; - private const string uri3 = "datacollector://microsoft/some3/2.0"; - - private readonly Mock mockRequestData; - private readonly Mock mockProxyExecutionManager; - private readonly Mock mockTestRunEventsHandler; - private readonly Mock mockParallelProxyExecutionManager; - private readonly Mock mockTestRunAttachmentsProcessingManager; - private readonly CancellationTokenSource cancellationTokenSource; - private readonly ParallelDataCollectionEventsHandler parallelDataCollectionEventsHandler; - - public ParallelDataCollectionEventsHandlerTests() - { - mockRequestData = new Mock(); - mockProxyExecutionManager = new Mock(); - mockTestRunEventsHandler = new Mock(); - mockParallelProxyExecutionManager = new Mock(); - mockTestRunAttachmentsProcessingManager = new Mock(); - cancellationTokenSource = new CancellationTokenSource(); - parallelDataCollectionEventsHandler = new ParallelDataCollectionEventsHandler(mockRequestData.Object, mockProxyExecutionManager.Object, mockTestRunEventsHandler.Object, - mockParallelProxyExecutionManager.Object, new ParallelRunDataAggregator(), mockTestRunAttachmentsProcessingManager.Object, cancellationTokenSource.Token); - - mockParallelProxyExecutionManager.Setup(m => m.HandlePartialRunComplete(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>())).Returns(true); - } - - [TestMethod] - public void HandleTestRunComplete_ShouldCallProcessTestRunAttachmentsAsyncWithAttachmentsAndUseResults() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input1"), - new AttachmentSet(new Uri(uri2), "uri2_input1"), - new AttachmentSet(new Uri(uri3), "uri3_input1") - }; - - Collection outputAttachments = new Collection - { - new AttachmentSet(new Uri(uri1), "uri1_input1") - }; - - mockTestRunAttachmentsProcessingManager.Setup(f => f.ProcessTestRunAttachmentsAsync(mockRequestData.Object, It.IsAny>(), It.IsAny())).Returns(Task.FromResult(outputAttachments)); - - // act - parallelDataCollectionEventsHandler.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromSeconds(1)), null, inputAttachments, null); - - // assert - mockTestRunEventsHandler.Verify(h => h.HandleTestRunComplete(It.IsAny(), It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(outputAttachments[0])), It.IsAny>())); - mockTestRunAttachmentsProcessingManager.Verify(f => f.ProcessTestRunAttachmentsAsync(mockRequestData.Object, It.Is>(a => a.Count == 3), cancellationTokenSource.Token)); - } - - [TestMethod] - public void HandleTestRunComplete_ShouldCallProcessTestRunAttachmentsAsyncWithAttachmentsAndNotUserResults_IfManagerReturnsNull() - { - // arrange - List inputAttachments = new List - { - new AttachmentSet(new Uri(uri1), "uri1_input1"), - new AttachmentSet(new Uri(uri2), "uri2_input1"), - new AttachmentSet(new Uri(uri3), "uri3_input1") - }; - - mockTestRunAttachmentsProcessingManager.Setup(f => f.ProcessTestRunAttachmentsAsync(mockRequestData.Object, It.IsAny>(), It.IsAny())).Returns(Task.FromResult((Collection)null)); - - // act - parallelDataCollectionEventsHandler.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromSeconds(1)), null, inputAttachments, null); - - // assert - mockTestRunEventsHandler.Verify(h => h.HandleTestRunComplete(It.IsAny(), It.IsAny(), It.Is>(c => c.Count == 3), It.IsAny>())); - mockTestRunAttachmentsProcessingManager.Verify(f => f.ProcessTestRunAttachmentsAsync(mockRequestData.Object, It.Is>(a => a.Count == 3), cancellationTokenSource.Token)); - } + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input1"), + new AttachmentSet(new Uri(Uri2), "uri2_input1"), + new AttachmentSet(new Uri(Uri3), "uri3_input1") + ]; + + Collection outputAttachments = [new AttachmentSet(new Uri(Uri1), "uri1_input1")]; + + _mockTestRunAttachmentsProcessingManager.Setup(f => f.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, It.IsAny>(), It.IsAny>(), It.IsAny())).Returns(Task.FromResult(outputAttachments)); + + // act + _parallelDataCollectionEventsHandler.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromSeconds(1)), null, inputAttachments, null); + + // assert + _mockTestRunEventsHandler.Verify(h => h.HandleTestRunComplete(It.IsAny(), It.IsAny(), It.Is>(c => c.Count == 1 && c.Contains(outputAttachments[0])), It.IsAny>())); + _mockTestRunAttachmentsProcessingManager.Verify(f => f.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, It.Is>(a => a.Count == 3), It.IsAny>(), _cancellationTokenSource.Token)); + } + + [TestMethod] + public void HandleTestRunComplete_ShouldCallProcessTestRunAttachmentsAsyncWithAttachmentsAndNotUserResults_IfManagerReturnsNull() + { + // arrange + List inputAttachments = + [ + new AttachmentSet(new Uri(Uri1), "uri1_input1"), + new AttachmentSet(new Uri(Uri2), "uri2_input1"), + new AttachmentSet(new Uri(Uri3), "uri3_input1") + ]; + + _mockTestRunAttachmentsProcessingManager.Setup(f => f.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, It.IsAny>(), It.IsAny>(), It.IsAny())).Returns(Task.FromResult((Collection)null!)); + + // act + _parallelDataCollectionEventsHandler.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromSeconds(1)), null, inputAttachments, null); + + // assert + _mockTestRunEventsHandler.Verify(h => h.HandleTestRunComplete(It.IsAny(), It.IsAny(), It.Is>(c => c.Count == 3), It.IsAny>())); + _mockTestRunAttachmentsProcessingManager.Verify(f => f.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, _mockRequestData.Object, It.Is>(a => a.Count == 3), It.IsAny>(), _cancellationTokenSource.Token)); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyDataCollectionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyDataCollectionManagerTests.cs index e69707fd9c..6ed0c20b60 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyDataCollectionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyDataCollectionManagerTests.cs @@ -1,279 +1,276 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Globalization; +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollection; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.DataCollection; + +[TestClass] +public class ProxyDataCollectionManagerTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Diagnostics; - using System.IO; - using System.Reflection; - - using Microsoft.VisualStudio.TestPlatform.Common.DataCollection; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using CommunicationUtilitiesResources = Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Resources.Resources; - using CoreUtilitiesConstants = Microsoft.VisualStudio.TestPlatform.CoreUtilities.Constants; - - using Moq; - - [TestClass] - public class ProxyDataCollectionManagerTests + private readonly Mock _mockDataCollectionRequestSender; + private ProxyDataCollectionManager _proxyDataCollectionManager; + private readonly Mock _mockDataCollectionLauncher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private static readonly string TimoutErrorMessage = + "vstest.console process failed to connect to datacollector process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; + + public ProxyDataCollectionManagerTests() { - private Mock mockDataCollectionRequestSender; - private ProxyDataCollectionManager proxyDataCollectionManager; - private Mock mockDataCollectionLauncher; - private Mock mockProcessHelper; - private Mock mockRequestData; - private Mock mockMetricsCollection; - private static readonly string TimoutErrorMessage = - "vstest.console process failed to connect to datacollector process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; - - [TestInitialize] - public void Initialize() - { - this.mockDataCollectionRequestSender = new Mock(); - this.mockDataCollectionLauncher = new Mock(); - this.mockProcessHelper = new Mock(); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.proxyDataCollectionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, string.Empty, new List() { "testsource1.dll" }, this.mockDataCollectionRequestSender.Object, this.mockProcessHelper.Object, this.mockDataCollectionLauncher.Object); - } + _mockDataCollectionRequestSender = new Mock(); + _mockDataCollectionLauncher = new Mock(); + _mockProcessHelper = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _proxyDataCollectionManager = new ProxyDataCollectionManager(_mockRequestData.Object, string.Empty, new List() { "testsource1.dll" }, _mockDataCollectionRequestSender.Object, _mockProcessHelper.Object, _mockDataCollectionLauncher.Object); + } - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); - Environment.SetEnvironmentVariable(ProxyDataCollectionManager.DebugEnvironmentVaribleName, string.Empty); - } + [TestCleanup] + public void Cleanup() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); + Environment.SetEnvironmentVariable(ProxyDataCollectionManager.DebugEnvironmentVaribleName, string.Empty); + } - [TestMethod] - public void InitializeShouldInitializeCommunication() - { - this.mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)).Returns(true); - this.proxyDataCollectionManager.Initialize(); + [TestMethod] + public void InitializeShouldInitializeCommunication() + { + _mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)).Returns(true); + _proxyDataCollectionManager.Initialize(); - this.mockDataCollectionLauncher.Verify(x => x.LaunchDataCollector(It.IsAny>(), It.IsAny>()), Times.Once); - this.mockDataCollectionRequestSender.Verify(x => x.WaitForRequestHandlerConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000), Times.Once); - } + _mockDataCollectionLauncher.Verify(x => x.LaunchDataCollector(It.IsAny>(), It.IsAny>()), Times.Once); + _mockDataCollectionRequestSender.Verify(x => x.WaitForRequestHandlerConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000), Times.Once); + } - [TestMethod] - public void InitializeShouldThrowExceptionIfConnectionTimeouts() - { - this.mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(false); + [TestMethod] + public void InitializeShouldThrowExceptionIfConnectionTimeouts() + { + _mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(false); - var message = Assert.ThrowsException(() => this.proxyDataCollectionManager.Initialize()).Message; - Assert.AreEqual(message, ProxyDataCollectionManagerTests.TimoutErrorMessage); - } + var message = Assert.ThrowsException(() => _proxyDataCollectionManager.Initialize()).Message; + Assert.AreEqual(message, TimoutErrorMessage); + } - [TestMethod] - public void InitializeShouldSetTimeoutBasedOnTimeoutEnvironmentVarible() - { - var timeout = 10; - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, timeout.ToString()); - this.mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(timeout * 1000)).Returns(true); + [TestMethod] + public void InitializeShouldSetTimeoutBasedOnTimeoutEnvironmentVarible() + { + var timeout = 10; + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, timeout.ToString(CultureInfo.CurrentCulture)); + _mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(timeout * 1000)).Returns(true); - this.proxyDataCollectionManager.Initialize(); + _proxyDataCollectionManager.Initialize(); - this.mockDataCollectionRequestSender.Verify(x => x.WaitForRequestHandlerConnection(timeout * 1000), Times.Once); - } + _mockDataCollectionRequestSender.Verify(x => x.WaitForRequestHandlerConnection(timeout * 1000), Times.Once); + } - [TestMethod] - public void InitializeShouldSetTimeoutBasedOnDebugEnvironmentVaribleName() - { - Environment.SetEnvironmentVariable(ProxyDataCollectionManager.DebugEnvironmentVaribleName, "1"); - var expectedTimeout = EnvironmentHelper.DefaultConnectionTimeout * 1000 * 5; - this.mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(expectedTimeout)).Returns(true); + [TestMethod] + public void InitializeShouldSetTimeoutBasedOnDebugEnvironmentVaribleName() + { + Environment.SetEnvironmentVariable(ProxyDataCollectionManager.DebugEnvironmentVaribleName, "1"); + var expectedTimeout = EnvironmentHelper.DefaultConnectionTimeout * 1000 * 5; + _mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(expectedTimeout)).Returns(true); - this.proxyDataCollectionManager.Initialize(); + _proxyDataCollectionManager.Initialize(); - this.mockDataCollectionRequestSender.Verify(x => x.WaitForRequestHandlerConnection(expectedTimeout), Times.Once); - } + _mockDataCollectionRequestSender.Verify(x => x.WaitForRequestHandlerConnection(expectedTimeout), Times.Once); + } - [TestMethod] - public void InitializeShouldPassDiagArgumentsIfDiagIsEnabled() - { - // Saving the EqtTrace state + [TestMethod] + public void InitializeShouldPassDiagArgumentsIfDiagIsEnabled() + { + // Saving the EqtTrace state #if NETFRAMEWORK - var traceLevel = EqtTrace.TraceLevel; - EqtTrace.TraceLevel = TraceLevel.Off; + var traceLevel = EqtTrace.TraceLevel; + EqtTrace.TraceLevel = TraceLevel.Off; #else - var traceLevel = (TraceLevel)EqtTrace.TraceLevel; - EqtTrace.TraceLevel = (PlatformTraceLevel)TraceLevel.Off; + var traceLevel = (TraceLevel)EqtTrace.TraceLevel; + EqtTrace.TraceLevel = (PlatformTraceLevel)TraceLevel.Off; #endif - var traceFileName = EqtTrace.LogFile; - - try - { - EqtTrace.InitializeTrace("mylog.txt", PlatformTraceLevel.Info); - this.mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); - - this.proxyDataCollectionManager.Initialize(); - - var expectedTraceLevel = (int)PlatformTraceLevel.Info; - this.mockDataCollectionLauncher.Verify( - x => - x.LaunchDataCollector( - It.IsAny>(), - It.Is>(list => list.Contains("--diag") && list.Contains("--tracelevel") && list.Contains(expectedTraceLevel.ToString()))), - Times.Once); - } - finally - { - // Restoring to initial state for EqtTrace - EqtTrace.InitializeTrace(traceFileName, PlatformTraceLevel.Verbose); + var traceFileName = EqtTrace.LogFile; + + try + { + EqtTrace.InitializeTrace("mylog.txt", PlatformTraceLevel.Info); + _mockDataCollectionRequestSender.Setup(x => x.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); + + _proxyDataCollectionManager.Initialize(); + + var expectedTraceLevel = (int)PlatformTraceLevel.Info; + _mockDataCollectionLauncher.Verify( + x => + x.LaunchDataCollector( + It.IsAny>(), + It.Is>(list => list.Contains("--diag") && list.Contains("--tracelevel") && list.Contains(expectedTraceLevel.ToString(CultureInfo.CurrentCulture)))), + Times.Once); + } + finally + { + // Restoring to initial state for EqtTrace + EqtTrace.InitializeTrace(traceFileName, PlatformTraceLevel.Verbose); #if NETFRAMEWORK - EqtTrace.TraceLevel = traceLevel; + EqtTrace.TraceLevel = traceLevel; #else - EqtTrace.TraceLevel = (PlatformTraceLevel)traceLevel; + EqtTrace.TraceLevel = (PlatformTraceLevel)traceLevel; #endif - } } + } - [TestMethod] - public void SendTestHostInitiazliedShouldPassProcessIdToRequestSender() - { - this.proxyDataCollectionManager.TestHostLaunched(1234); + [TestMethod] + public void SendTestHostInitiazliedShouldPassProcessIdToRequestSender() + { + _proxyDataCollectionManager.TestHostLaunched(1234); - this.mockDataCollectionRequestSender.Verify(x => x.SendTestHostLaunched(It.Is(y => y.ProcessId == 1234))); - } + _mockDataCollectionRequestSender.Verify(x => x.SendTestHostLaunched(It.Is(y => y.ProcessId == 1234))); + } - [TestMethod] - public void BeforeTestRunStartShouldPassRunSettingsWithExtensionsFolderUpdatedAsTestAdapterPath() - { - string runsettings = $""; - var sourceList = new List() { "testsource1.dll" }; - this.proxyDataCollectionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, runsettings, sourceList, this.mockDataCollectionRequestSender.Object, this.mockProcessHelper.Object, this.mockDataCollectionLauncher.Object); - this.mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(true); + [TestMethod] + public void BeforeTestRunStartShouldPassRunSettingsWithExtensionsFolderUpdatedAsTestAdapterPath() + { + string runsettings = $""; + var sourceList = new List() { "testsource1.dll" }; + _proxyDataCollectionManager = new ProxyDataCollectionManager(_mockRequestData.Object, runsettings, sourceList, _mockDataCollectionRequestSender.Object, _mockProcessHelper.Object, _mockDataCollectionLauncher.Object); + _mockRequestData.Setup(r => r.IsTelemetryOptedIn).Returns(true); - BeforeTestRunStartResult res = new BeforeTestRunStartResult(new Dictionary(), 123); - this.mockDataCollectionRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns(res); + BeforeTestRunStartResult res = new(new Dictionary(), 123); + _mockDataCollectionRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns(res); - var result = this.proxyDataCollectionManager.BeforeTestRunStart(true, true, null); + var result = _proxyDataCollectionManager.BeforeTestRunStart(true, true, null); - var extensionsFolderPath = Path.Combine(Path.GetDirectoryName(typeof(ITestPlatform).GetTypeInfo().Assembly.Location), "Extensions"); - var expectedSettingsXML = $"{extensionsFolderPath}"; - this.mockDataCollectionRequestSender.Verify( - x => x.SendBeforeTestRunStartAndGetResult(expectedSettingsXML, sourceList, true, It.IsAny()), Times.Once); - } + var extensionsFolderPath = Path.Combine(Path.GetDirectoryName(typeof(ITestPlatform).Assembly.Location)!, "Extensions"); + var expectedSettingsXml = $"{extensionsFolderPath}"; + _mockDataCollectionRequestSender.Verify( + x => x.SendBeforeTestRunStartAndGetResult(expectedSettingsXml, sourceList, true, It.IsAny()), Times.Once); + } - [TestMethod] - public void BeforeTestRunStartShouldReturnDataCollectorParameters() - { - BeforeTestRunStartResult res = new BeforeTestRunStartResult(new Dictionary(), 123); - var sourceList = new List() { "testsource1.dll" }; - this.mockDataCollectionRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns(res); + [TestMethod] + public void BeforeTestRunStartShouldReturnDataCollectorParameters() + { + BeforeTestRunStartResult res = new(new Dictionary(), 123); + var sourceList = new List() { "testsource1.dll" }; + _mockDataCollectionRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())).Returns(res); - var result = this.proxyDataCollectionManager.BeforeTestRunStart(true, true, null); + var result = _proxyDataCollectionManager.BeforeTestRunStart(true, true, null); - this.mockDataCollectionRequestSender.Verify( - x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), sourceList, false, It.IsAny()), Times.Once); - Assert.IsNotNull(result); - Assert.AreEqual(res.DataCollectionEventsPort, result.DataCollectionEventsPort); - Assert.AreEqual(res.EnvironmentVariables.Count, result.EnvironmentVariables.Count); - } + _mockDataCollectionRequestSender.Verify( + x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), sourceList, false, It.IsAny()), Times.Once); + Assert.IsNotNull(result); + Assert.AreEqual(res.DataCollectionEventsPort, result.DataCollectionEventsPort); + Assert.AreEqual(res.EnvironmentVariables.Count, result.EnvironmentVariables!.Count); + } - [TestMethod] - public void BeforeTestRunStartsShouldInvokeRunEventsHandlerIfExceptionIsThrown() - { - var mockRunEventsHandler = new Mock(); - this.mockDataCollectionRequestSender.Setup( - x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), new List() { "testsource1.dll" }, false, It.IsAny())) - .Throws(); + [TestMethod] + public void BeforeTestRunStartsShouldInvokeRunEventsHandlerIfExceptionIsThrown() + { + var mockRunEventsHandler = new Mock(); + _mockDataCollectionRequestSender.Setup( + x => x.SendBeforeTestRunStartAndGetResult(It.IsAny(), new List() { "testsource1.dll" }, false, It.IsAny())) + .Throws(); - var result = this.proxyDataCollectionManager.BeforeTestRunStart(true, true, mockRunEventsHandler.Object); + var result = _proxyDataCollectionManager.BeforeTestRunStart(true, true, mockRunEventsHandler.Object); - mockRunEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsRegex("Exception of type 'System.Exception' was thrown..*")), Times.Once); - Assert.AreEqual(0, result.EnvironmentVariables.Count); - Assert.IsFalse(result.AreTestCaseLevelEventsRequired); - Assert.AreEqual(0, result.DataCollectionEventsPort); - } + mockRunEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsRegex("Exception of type 'System.Exception' was thrown..*")), Times.Once); + Assert.AreEqual(0, result.EnvironmentVariables!.Count); + Assert.IsFalse(result.AreTestCaseLevelEventsRequired); + Assert.AreEqual(0, result.DataCollectionEventsPort); + } + + [TestMethod] + public void SendBeforeTestRunStartAndGetResultShouldBeInvokedWithCorrectTestSources() + { + var testSources = new List() { "abc.dll", "efg.dll" }; + _proxyDataCollectionManager = new ProxyDataCollectionManager(_mockRequestData.Object, string.Empty, testSources, _mockDataCollectionRequestSender.Object, _mockProcessHelper.Object, _mockDataCollectionLauncher.Object); - [TestMethod] - public void SendBeforeTestRunStartAndGetResultShouldBeInvokedWithCorrectTestSources() + BeforeTestRunStartResult res = new(new Dictionary(), 123); + _mockDataCollectionRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, It.IsAny(), It.IsAny())).Returns(res); + + var result = _proxyDataCollectionManager.BeforeTestRunStart(true, true, null); + + _mockDataCollectionRequestSender.Verify( + x => x.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, false, It.IsAny()), Times.Once); + Assert.IsNotNull(result); + Assert.AreEqual(res.DataCollectionEventsPort, result.DataCollectionEventsPort); + Assert.AreEqual(res.EnvironmentVariables.Count, result.EnvironmentVariables!.Count); + } + + [TestMethod] + [DataRow(false)] + [DataRow(true)] + public void AfterTestRunEndShouldReturnAttachments(bool telemetryOptedIn) + { + var attachments = new Collection(); + var invokedDataCollectors = new Collection(); + var dispName = "MockAttachments"; + var uri = new Uri("Mock://Attachments"); + var attachmentSet = new AttachmentSet(uri, dispName); + attachments.Add(attachmentSet); + _mockRequestData.Setup(m => m.IsTelemetryOptedIn).Returns(telemetryOptedIn); + + var metrics = new Dictionary() { - var testSources = new List() { "abc.dll", "efg.dll" }; - this.proxyDataCollectionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, string.Empty, testSources, this.mockDataCollectionRequestSender.Object, this.mockProcessHelper.Object, this.mockDataCollectionLauncher.Object); + {"key", "value"} + }; - BeforeTestRunStartResult res = new BeforeTestRunStartResult(new Dictionary(), 123); - this.mockDataCollectionRequestSender.Setup(x => x.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, It.IsAny(), It.IsAny())).Returns(res); + _mockDataCollectionRequestSender.Setup(x => x.SendAfterTestRunEndAndGetResult(It.IsAny(), It.IsAny())).Returns(new AfterTestRunEndResult(attachments, invokedDataCollectors, metrics)); - var result = this.proxyDataCollectionManager.BeforeTestRunStart(true, true, null); + var result = _proxyDataCollectionManager.AfterTestRunEnd(false, null); - this.mockDataCollectionRequestSender.Verify( - x => x.SendBeforeTestRunStartAndGetResult(string.Empty, testSources, false, It.IsAny()), Times.Once); - Assert.IsNotNull(result); - Assert.AreEqual(res.DataCollectionEventsPort, result.DataCollectionEventsPort); - Assert.AreEqual(res.EnvironmentVariables.Count, result.EnvironmentVariables.Count); - } + Assert.IsNotNull(result); + Assert.AreEqual(1, result.Attachments!.Count); + Assert.IsNotNull(result.Attachments[0]); + Assert.AreEqual(dispName, result.Attachments[0].DisplayName); + Assert.AreEqual(uri, result.Attachments[0].Uri); - [TestMethod] - [DataRow(false)] - [DataRow(true)] - public void AfterTestRunEndShouldReturnAttachments(bool telemetryOptedIn) + if (telemetryOptedIn) { - var attachments = new Collection(); - var dispName = "MockAttachments"; - var uri = new Uri("Mock://Attachments"); - var attachmentSet = new AttachmentSet(uri, dispName); - attachments.Add(attachmentSet); - this.mockRequestData.Setup(m => m.IsTelemetryOptedIn).Returns(telemetryOptedIn); - - var metrics = new Dictionary() - { - {"key", "value"} - }; - - this.mockDataCollectionRequestSender.Setup(x => x.SendAfterTestRunEndAndGetResult(It.IsAny(), It.IsAny())).Returns(new AfterTestRunEndResult(attachments, metrics)); - - var result = this.proxyDataCollectionManager.AfterTestRunEnd(false, null); - - Assert.IsNotNull(result); - Assert.AreEqual(1, result.Count); - Assert.IsNotNull(result[0]); - Assert.AreEqual(dispName, result[0].DisplayName); - Assert.AreEqual(uri, result[0].Uri); - - if (telemetryOptedIn) - { - mockMetricsCollection.Verify(m => m.Add("key", "value"), Times.Once); - } - else - { - mockMetricsCollection.Verify(m => m.Add(It.IsAny(), It.IsAny()), Times.Never); - } + _mockMetricsCollection.Verify(m => m.Add("key", "value"), Times.Once); } - - [TestMethod] - public void AfterTestRunEndShouldInvokeRunEventsHandlerIfExceptionIsThrown() + else { - var mockRunEventsHandler = new Mock(); - this.mockDataCollectionRequestSender.Setup( - x => x.SendAfterTestRunEndAndGetResult(It.IsAny(), It.IsAny())) - .Throws(); + _mockMetricsCollection.Verify(m => m.Add(It.IsAny(), It.IsAny()), Times.Never); + } + } + + [TestMethod] + public void AfterTestRunEndShouldInvokeRunEventsHandlerIfExceptionIsThrown() + { + var mockRunEventsHandler = new Mock(); + _mockDataCollectionRequestSender.Setup( + x => x.SendAfterTestRunEndAndGetResult(It.IsAny(), It.IsAny())) + .Throws(); - var result = this.proxyDataCollectionManager.AfterTestRunEnd(false, mockRunEventsHandler.Object); + var result = _proxyDataCollectionManager.AfterTestRunEnd(false, mockRunEventsHandler.Object); - mockRunEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsRegex("Exception of type 'System.Exception' was thrown..*")), Times.Once); - } + mockRunEventsHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsRegex("Exception of type 'System.Exception' was thrown..*")), Times.Once); + } - [TestMethod] - public void ProxyDataCollectionShouldLogEnabledDataCollectors() - { - string settings = @" + [TestMethod] + public void ProxyDataCollectionShouldLogEnabledDataCollectors() + { + string settings = @" @@ -282,13 +279,12 @@ public void ProxyDataCollectionShouldLogEnabledDataCollectors() "; - var testSources = new List() { "abc.dll", "efg.dll" }; - this.mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); + var testSources = new List() { "abc.dll", "efg.dll" }; + _mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); - var proxyExecutionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, settings, testSources, this.mockDataCollectionRequestSender.Object, this.mockProcessHelper.Object, this.mockDataCollectionLauncher.Object); + var proxyExecutionManager = new ProxyDataCollectionManager(_mockRequestData.Object, settings, testSources, _mockDataCollectionRequestSender.Object, _mockProcessHelper.Object, _mockDataCollectionLauncher.Object); - var resultString = "{ FriendlyName = Code Coverage, Uri = datacollector://microsoft/CodeCoverage/2.0 }"; - this.mockMetricsCollection.Verify(rd => rd.Add(TelemetryDataConstants.DataCollectorsEnabled, resultString), Times.Once); - } + var resultString = "{ FriendlyName = Code Coverage, Uri = datacollector://microsoft/CodeCoverage/2.0 }"; + _mockMetricsCollection.Verify(rd => rd.Add(TelemetryDataConstants.DataCollectorsEnabled, resultString), Times.Once); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyOutOfProcDataCollectionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyOutOfProcDataCollectionManagerTests.cs index b4bc2403fe..23b888d436 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyOutOfProcDataCollectionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/DataCollection/ProxyOutOfProcDataCollectionManagerTests.cs @@ -1,65 +1,67 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection -{ - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.ObjectModel; - using Moq; - using System; - using System.Collections.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class ProxyOutOfProcDataCollectionManagerTests - { - private Mock mockTestEventsPublisher; - private Mock mockDataCollectionTestCaseEventSender; - private Collection attachmentSets; - private TestCase testcase; - private VisualStudio.TestPlatform.ObjectModel.TestResult testResult; +using Moq; - private ProxyOutOfProcDataCollectionManager proxyOutOfProcDataCollectionManager; - public ProxyOutOfProcDataCollectionManagerTests() - { - this.mockTestEventsPublisher = new Mock(); - this.mockDataCollectionTestCaseEventSender = new Mock(); - this.proxyOutOfProcDataCollectionManager = new ProxyOutOfProcDataCollectionManager(this.mockDataCollectionTestCaseEventSender.Object, this.mockTestEventsPublisher.Object); +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.DataCollection; - var attachmentSet = new AttachmentSet(new Uri("my://datacollector"), "mydatacollector"); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("my://attachment.txt"), string.Empty)); - this.attachmentSets = new Collection(); - this.attachmentSets.Add(attachmentSet); +[TestClass] +public class ProxyOutOfProcDataCollectionManagerTests +{ + private readonly Mock _mockTestEventsPublisher; + private readonly Mock _mockDataCollectionTestCaseEventSender; + private readonly Collection _attachmentSets; + private readonly TestCase _testcase; + private VisualStudio.TestPlatform.ObjectModel.TestResult _testResult; - this.testcase = new TestCase(); - this.testcase.Id = Guid.NewGuid(); - this.mockDataCollectionTestCaseEventSender.Setup(x => x.SendTestCaseEnd(It.IsAny())).Returns(this.attachmentSets); - this.mockTestEventsPublisher.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(this.testcase, TestOutcome.Passed)); - this.testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(this.testcase); - } + private readonly ProxyOutOfProcDataCollectionManager _proxyOutOfProcDataCollectionManager; + public ProxyOutOfProcDataCollectionManagerTests() + { + _mockTestEventsPublisher = new Mock(); + _mockDataCollectionTestCaseEventSender = new Mock(); + _proxyOutOfProcDataCollectionManager = new ProxyOutOfProcDataCollectionManager(_mockDataCollectionTestCaseEventSender.Object, _mockTestEventsPublisher.Object); - [TestMethod] - public void TriggerTestCaseEndShouldReturnCacheAttachmentsAndAssociateWithTestResultWhenTriggerSendTestResultIsInvoked() + var attachmentSet = new AttachmentSet(new Uri("my://datacollector"), "mydatacollector"); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("my://attachment.txt"), string.Empty)); + _attachmentSets = new Collection { - this.mockTestEventsPublisher.Raise(x => x.TestResult += null, new TestResultEventArgs(this.testResult)); + attachmentSet + }; + + _testcase = new TestCase(); + _testcase.Id = Guid.NewGuid(); + _mockDataCollectionTestCaseEventSender.Setup(x => x.SendTestCaseEnd(It.IsAny())).Returns(_attachmentSets); + _mockTestEventsPublisher.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(_testcase, TestOutcome.Passed)); + _testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(_testcase); + } - Assert.AreEqual(1, this.testResult.Attachments.Count); - Assert.IsTrue(this.testResult.Attachments[0].Attachments[0].Uri.OriginalString.Contains("attachment.txt")); - } + [TestMethod] + public void TriggerTestCaseEndShouldReturnCacheAttachmentsAndAssociateWithTestResultWhenTriggerSendTestResultIsInvoked() + { + _mockTestEventsPublisher.Raise(x => x.TestResult += null, new TestResultEventArgs(_testResult)); - [TestMethod] - public void TriggerSendTestResultShouldDeleteTheAttachmentsFromCache() - { - this.mockTestEventsPublisher.Raise(x => x.TestResult += null, new TestResultEventArgs(this.testResult)); + Assert.AreEqual(1, _testResult.Attachments.Count); + Assert.IsTrue(_testResult.Attachments[0].Attachments[0].Uri.OriginalString.Contains("attachment.txt")); + } + + [TestMethod] + public void TriggerSendTestResultShouldDeleteTheAttachmentsFromCache() + { + _mockTestEventsPublisher.Raise(x => x.TestResult += null, new TestResultEventArgs(_testResult)); - this.testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(this.testcase); - this.mockTestEventsPublisher.Raise(x => x.TestResult += null, new TestResultEventArgs(this.testResult)); + _testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(_testcase); + _mockTestEventsPublisher.Raise(x => x.TestResult += null, new TestResultEventArgs(_testResult)); - Assert.AreEqual(0, this.testResult.Attachments.Count); - } + Assert.AreEqual(0, _testResult.Attachments.Count); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscovererEnumeratorTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscovererEnumeratorTests.cs index 16f4749e9b..802f7de7bd 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscovererEnumeratorTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscovererEnumeratorTests.cs @@ -1,750 +1,973 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Threading; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery; + +[TestClass] +public class DiscovererEnumeratorTests { - using System; - using System.Collections.Generic; - using System.ComponentModel; - using System.Globalization; - using System.Linq; - using System.Reflection; - using System.Threading; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class DiscovererEnumeratorTests - { - private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - private readonly DiscovererEnumerator discovererEnumerator; - private readonly Mock mockTestPlatformEventSource; - private readonly DiscoveryResultCache discoveryResultCache; - private readonly Mock mockRequestData; - private readonly Mock mockMetricsCollection; - private readonly Mock mockAssemblyProperties; - private readonly Mock runSettingsMock; - private readonly Mock messageLoggerMock; - - public DiscovererEnumeratorTests() - { - this.mockTestPlatformEventSource = new Mock(); - this.discoveryResultCache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockAssemblyProperties = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.discovererEnumerator = new DiscovererEnumerator(this.mockRequestData.Object, this.discoveryResultCache, this.mockTestPlatformEventSource.Object, this.mockAssemblyProperties.Object, this.cancellationTokenSource.Token); - this.runSettingsMock = new Mock(); - this.messageLoggerMock = new Mock(); - TestPluginCacheHelper.SetupMockExtensions( new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); - TestDiscoveryExtensionManager.Destroy(); - } + private readonly CancellationTokenSource _cancellationTokenSource = new(); + private readonly DiscovererEnumerator _discovererEnumerator; + private readonly Mock _mockTestPlatformEventSource; + private readonly DiscoveryResultCache _discoveryResultCache; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockAssemblyProperties; + private readonly Mock _runSettingsMock; + private readonly Mock _messageLoggerMock; + + public DiscovererEnumeratorTests() + { + _mockTestPlatformEventSource = new Mock(); + _discoveryResultCache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockAssemblyProperties = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _discovererEnumerator = new DiscovererEnumerator(_mockRequestData.Object, _discoveryResultCache, _mockTestPlatformEventSource.Object, _mockAssemblyProperties.Object, _cancellationTokenSource.Token); + _runSettingsMock = new Mock(); + _messageLoggerMock = new Mock(); + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); + TestDiscoveryExtensionManager.Destroy(); + } - [TestCleanup] - public void Cleanup() - { - ManagedDllTestDiscoverer.Reset(); - NativeDllTestDiscoverer.Reset(); - JsonTestDiscoverer.Reset(); - NotImplementedTestDiscoverer.Reset(); - } + [TestCleanup] + public void Cleanup() + { + ManagedDllTestDiscoverer.Reset(); + NativeDllTestDiscoverer.Reset(); + JsonTestDiscoverer.Reset(); + NotImplementedTestDiscoverer.Reset(); + EverythingTestDiscoverer.Reset(); + DirectoryTestDiscoverer.Reset(); + DirectoryAndFileTestDiscoverer.Reset(); + } - [TestMethod] - public void LoadTestsShouldReportWarningOnNoDiscoverers() + [TestMethod] + public void LoadTestsShouldReportWarningOnNoDiscoverers() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(TestPluginCache).Assembly.Location], + () => { }); + var sources = new List { typeof(DiscoveryResultCacheTests).Assembly.Location }; + + var extensionSourceMap = new Dictionary> { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(TestPluginCache).GetTypeInfo().Assembly.Location }, - () => { }); - var sources = new List { typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location }; + { "_none_", sources } + }; - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, null, _messageLoggerMock.Object); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, null, this.messageLoggerMock.Object); + var message = $"No test is available in {string.Join(" ", sources)}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; - var messageFormat = - "No test is available in {0}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; - var message = string.Format(messageFormat, string.Join(" ", sources)); + _messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, message), Times.Once); + } - this.messageLoggerMock.Verify( - l => - l.SendMessage(TestMessageLevel.Warning, message), Times.Once); - } + [TestMethod] + public void LoadTestsShouldNotCallIntoDiscoverersIfNoneMatchesSources() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); + var sources = new List { "temp.jpeg" }; - [TestMethod] - public void LoadTestsShouldNotCallIntoDiscoverersIfNoneMatchesSources() + var extensionSourceMap = new Dictionary> { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); - var sources = new List { "temp.jpeg" }; + { "_none_", sources } + }; - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, null, _messageLoggerMock.Object); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, null, this.messageLoggerMock.Object); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + CollectionAssert.AreEqual(sources, EverythingTestDiscoverer.Sources!.ToList()); - Assert.IsFalse(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsFalse(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); - } + Assert.IsFalse(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsFalse(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); + Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + } + + [TestMethod] + public void LoadTestsShouldCallOnlyNativeDiscovererIfNativeAssembliesPassed() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); + + _mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("native.dll")).Returns(AssemblyType.Native); - [TestMethod] - public void LoadTestsShouldCallOnlyNativeDiscovererIfNativeAssembliesPassed() + var sources = new List { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + "native.dll" + }; - this.mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("native.dll")).Returns(AssemblyType.Native); + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; - var sources = new List - { - "native.dll" - }; + string testCaseFilter = "TestFilter"; - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, testCaseFilter, _messageLoggerMock.Object); - string testCaseFilter = "TestFilter"; + Assert.IsTrue(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); + CollectionAssert.AreEqual(sources, NativeDllTestDiscoverer.Sources!.ToList()); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, testCaseFilter, this.messageLoggerMock.Object); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + CollectionAssert.AreEqual(sources, EverythingTestDiscoverer.Sources!.ToList()); - Assert.IsTrue(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); - CollectionAssert.AreEqual(sources, NativeDllTestDiscoverer.Sources.ToList()); + Assert.IsFalse(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + } - Assert.IsFalse(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); - } + [TestMethod] + public void LoadTestsShouldCallOnlyManagedDiscovererIfManagedAssembliesPassed() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); + + _mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("managed.dll")).Returns(AssemblyType.Managed); - [TestMethod] - public void LoadTestsShouldCallOnlyManagedDiscovererIfManagedAssembliesPassed() + var sources = new List { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + "managed.dll" + }; - this.mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("managed.dll")).Returns(AssemblyType.Managed); + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; - var sources = new List - { - "managed.dll" - }; + string testCaseFilter = "TestFilter"; - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, testCaseFilter, _messageLoggerMock.Object); - string testCaseFilter = "TestFilter"; + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + CollectionAssert.AreEqual(sources, ManagedDllTestDiscoverer.Sources!.ToList()); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, testCaseFilter, this.messageLoggerMock.Object); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + CollectionAssert.AreEqual(sources, EverythingTestDiscoverer.Sources!.ToList()); - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - CollectionAssert.AreEqual(sources, ManagedDllTestDiscoverer.Sources.ToList()); + Assert.IsFalse(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); + Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + } - Assert.IsFalse(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); - Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); - } + [TestMethod] + public void LoadTestsShouldCallBothNativeAndManagedDiscoverersWithCorrectSources() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - [TestMethod] - public void LoadTestsShouldCallBothNativeAndManagedDiscoverersWithCorrectSources() + _mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("native.dll")).Returns(AssemblyType.Native); + _mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("managed.dll")).Returns(AssemblyType.Managed); + + var nativeSources = new List + { + "native.dll" + }; + var managedSources = new List { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + "managed.dll" + }; - this.mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("native.dll")).Returns(AssemblyType.Native); - this.mockAssemblyProperties.Setup(pe => pe.GetAssemblyType("managed.dll")).Returns(AssemblyType.Managed); + var extensionSourceMap = new Dictionary> + { + { "_none_", nativeSources.Concat(managedSources) } + }; - var nativeSources = new List - { - "native.dll" - }; - var managedSources = new List - { - "managed.dll" - }; + string testCaseFilter = "TestFilter"; - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", nativeSources.Concat(managedSources)); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, testCaseFilter, _messageLoggerMock.Object); - string testCaseFilter = "TestFilter"; + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + CollectionAssert.AreEqual(managedSources, ManagedDllTestDiscoverer.Sources!.ToList()); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, testCaseFilter, this.messageLoggerMock.Object); + Assert.IsTrue(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); + CollectionAssert.AreEqual(nativeSources, NativeDllTestDiscoverer.Sources!.ToList()); - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - CollectionAssert.AreEqual(managedSources, ManagedDllTestDiscoverer.Sources.ToList()); + var allSources = nativeSources.Concat(managedSources).OrderBy(source => source).ToList(); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + CollectionAssert.AreEqual(allSources, EverythingTestDiscoverer.Sources!.OrderBy(source => source).ToList()); - Assert.IsTrue(NativeDllTestDiscoverer.IsNativeDiscoverTestCalled); - CollectionAssert.AreEqual(nativeSources, NativeDllTestDiscoverer.Sources.ToList()); + Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + } - Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); - } + [TestMethod] + public void LoadTestsShouldCallIntoADiscovererThatMatchesTheSources() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - [TestMethod] - public void LoadTestsShouldCallIntoADiscovererThatMatchesTheSources() + var sources = new List { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + typeof(DiscoveryResultCacheTests).Assembly.Location, + typeof(DiscoveryResultCacheTests).Assembly.Location + }; - var sources = new List - { - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location, - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; + string testCaseFilter = "TestFilter"; + + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, testCaseFilter, _messageLoggerMock.Object); + + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + + // Also validate that the right set of arguments were passed on to the discoverer. + CollectionAssert.AreEqual(sources.Distinct().ToList(), ManagedDllTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(_runSettingsMock.Object, DllTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DllTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DllTestDiscoverer.MessageLogger); + Assert.IsNotNull(DllTestDiscoverer.DiscoverySink); + + CollectionAssert.AreEqual(sources.Distinct().ToList(), EverythingTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(_runSettingsMock.Object, EverythingTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)EverythingTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, EverythingTestDiscoverer.MessageLogger); + Assert.IsNotNull(EverythingTestDiscoverer.DiscoverySink); + } - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); - string testCaseFilter = "TestFilter"; + [TestMethod] + public void LoadTestsShouldCallIntoMultipleDiscoverersThatMatchesTheSources() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, testCaseFilter, this.messageLoggerMock.Object); + var dllsources = new List + { + typeof(DiscoveryResultCacheTests).Assembly.Location, + typeof(DiscoveryResultCacheTests).Assembly.Location + }; - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + var jsonsources = new List + { + "test1.json", + "test2.json" + }; - // Also validate that the right set of arguments were passed on to the discoverer. - CollectionAssert.AreEqual(sources, ManagedDllTestDiscoverer.Sources.ToList()); - Assert.AreEqual(this.runSettingsMock.Object, ManagedDllTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (ManagedDllTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, ManagedDllTestDiscoverer.MessageLogger); - Assert.IsNotNull(ManagedDllTestDiscoverer.DiscoverySink); - } + var currentDirectory = Directory.GetCurrentDirectory(); + var directorySources = new List + { + currentDirectory, + Path.GetDirectoryName(currentDirectory)! + }; - [TestMethod] - public void LoadTestsShouldCallIntoMultipleDiscoverersThatMatchesTheSources() - { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); - - var dllsources = new List - { - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location, - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; - var jsonsources = new List - { - "test1.json", - "test2.json" - }; - var sources = new List(dllsources); - sources.AddRange(jsonsources); - - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); - - var runSettings = this.runSettingsMock.Object; - - string testCaseFilter = "TestFilter"; - - this.discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, this.messageLoggerMock.Object); - - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsTrue(JsonTestDiscoverer.IsDiscoverTestCalled); - - // Also validate that the right set of arguments were passed on to the discoverer. - CollectionAssert.AreEqual(dllsources, ManagedDllTestDiscoverer.Sources.ToList()); - Assert.AreEqual(runSettings, ManagedDllTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (ManagedDllTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, ManagedDllTestDiscoverer.MessageLogger); - Assert.IsNotNull(ManagedDllTestDiscoverer.DiscoverySink); - - CollectionAssert.AreEqual(jsonsources, JsonTestDiscoverer.Sources.ToList()); - Assert.AreEqual(runSettings, JsonTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (JsonTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, JsonTestDiscoverer.MessageLogger); - Assert.IsNotNull(JsonTestDiscoverer.DiscoverySink); - } + var sources = new List(dllsources); + sources.AddRange(jsonsources); + sources.AddRange(directorySources); - [TestMethod] - public void LoadTestsShouldCallIntoOtherDiscoverersWhenCreatingOneFails() + var extensionSourceMap = new Dictionary> { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + { "_none_", sources } + }; + + var runSettings = _runSettingsMock.Object; + + string testCaseFilter = "TestFilter"; + + _discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, _messageLoggerMock.Object); + + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsTrue(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + + // Also validate that the right set of arguments were passed on to the discoverer. + CollectionAssert.AreEqual(dllsources.Distinct().ToList(), ManagedDllTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, DllTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DllTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DllTestDiscoverer.MessageLogger); + Assert.IsNotNull(DllTestDiscoverer.DiscoverySink); + + CollectionAssert.AreEqual(jsonsources, JsonTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, JsonTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)JsonTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, JsonTestDiscoverer.MessageLogger); + Assert.IsNotNull(JsonTestDiscoverer.DiscoverySink); + + var allSources = sources.Distinct().OrderBy(source => source).ToList(); + CollectionAssert.AreEqual(allSources, EverythingTestDiscoverer.Sources!.OrderBy(source => source).ToList()); + Assert.AreEqual(runSettings, EverythingTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)EverythingTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, EverythingTestDiscoverer.MessageLogger); + Assert.IsNotNull(EverythingTestDiscoverer.DiscoverySink); + + CollectionAssert.AreEqual(directorySources, DirectoryTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, DirectoryTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DirectoryTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DirectoryTestDiscoverer.MessageLogger); + Assert.IsNotNull(DirectoryTestDiscoverer.DiscoverySink); + + var jsonAndDirectorySources = jsonsources.Concat(directorySources).OrderBy(source => source).ToList(); + CollectionAssert.AreEqual(jsonAndDirectorySources, DirectoryAndFileTestDiscoverer.Sources!.OrderBy(source => source).ToList()); + Assert.AreEqual(runSettings, DirectoryAndFileTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DirectoryAndFileTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DirectoryAndFileTestDiscoverer.MessageLogger); + Assert.IsNotNull(DirectoryAndFileTestDiscoverer.DiscoverySink); + } - var sources = new List - { - "test1.csv", - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; + [TestMethod] + public void LoadTestsShouldCallIntoOtherDiscoverersWhenCreatingOneFails() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + var sources = new List + { + "test1.csv", + typeof(DiscoveryResultCacheTests).Assembly.Location + }; - var runSettings = this.runSettingsMock.Object; + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; - string testCaseFilter = "TestFilter"; + var runSettings = _runSettingsMock.Object; - this.discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, this.messageLoggerMock.Object); + string testCaseFilter = "TestFilter"; - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsFalse(SingletonTestDiscoverer.IsDiscoverTestCalled); + _discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, _messageLoggerMock.Object); - // Also validate that the right set of arguments were passed on to the discoverer. - CollectionAssert.AreEqual(new List { sources[1] }, ManagedDllTestDiscoverer.Sources.ToList()); - Assert.AreEqual(runSettings, ManagedDllTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (ManagedDllTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, ManagedDllTestDiscoverer.MessageLogger); - Assert.IsNotNull(ManagedDllTestDiscoverer.DiscoverySink); - } + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsFalse(SingletonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); - [TestMethod] - public void LoadTestsShouldCallIntoOtherDiscoverersEvenIfDiscoveryInOneFails() - { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + // Also validate that the right set of arguments were passed on to the discoverer. + CollectionAssert.AreEqual(new List { sources[1] }, ManagedDllTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, DllTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DllTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DllTestDiscoverer.MessageLogger); + Assert.IsNotNull(DllTestDiscoverer.DiscoverySink); - var sources = new List - { - "test1.cs", - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; + CollectionAssert.AreEqual(sources.ToList(), EverythingTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, EverythingTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)EverythingTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, EverythingTestDiscoverer.MessageLogger); + Assert.IsNotNull(EverythingTestDiscoverer.DiscoverySink); + } - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + [TestMethod] + public void LoadTestsShouldCallIntoOtherDiscoverersEvenIfDiscoveryInOneFails() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - var runSettings = this.runSettingsMock.Object; + var sources = new List + { + "test1.cs", + typeof(DiscoveryResultCacheTests).Assembly.Location + }; - string testCaseFilter = "TestFilter"; + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; - this.discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, this.messageLoggerMock.Object); + var runSettings = _runSettingsMock.Object; - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsTrue(NotImplementedTestDiscoverer.IsDiscoverTestCalled); + string testCaseFilter = "TestFilter"; - // Also validate that the right set of arguments were passed on to the discoverer. - CollectionAssert.AreEqual(new List { sources[1] }, ManagedDllTestDiscoverer.Sources.ToList()); - Assert.AreEqual(runSettings, ManagedDllTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (ManagedDllTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, ManagedDllTestDiscoverer.MessageLogger); - Assert.IsNotNull(ManagedDllTestDiscoverer.DiscoverySink); + _discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, _messageLoggerMock.Object); - // Check if we log the failure. - var message = string.Format( - CultureInfo.CurrentUICulture, - "An exception occurred while test discoverer '{0}' was loading tests. Exception: {1}", - typeof(NotImplementedTestDiscoverer).Name, - "The method or operation is not implemented."); + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsTrue(NotImplementedTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); - this.messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Error, message), Times.Once); - } + // Also validate that the right set of arguments were passed on to the discoverer. + CollectionAssert.AreEqual(new List { sources[1] }, ManagedDllTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, DllTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DllTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DllTestDiscoverer.MessageLogger); + Assert.IsNotNull(DllTestDiscoverer.DiscoverySink); - [TestMethod] - public void LoadTestsShouldCollectMetrics() - { - var mockMetricsCollector = new Mock(); - var dict = new Dictionary(); - dict.Add("DummyMessage", "DummyValue"); - - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); - - var sources = new List - { - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location, - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; - - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); - - mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - - string testCaseFilter = "TestFilter"; - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, testCaseFilter, this.messageLoggerMock.Object); - - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenInSecByAllAdapters, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsByAdapter + ".discoverer://manageddlldiscoverer/", It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + ".discoverer://manageddlldiscoverer/", It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsByAdapter + ".discoverer://nativedlldiscoverer/", It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + ".discoverer://nativedlldiscoverer/", It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenToLoadAdaptersInSec, It.IsAny()), Times.Once); - } + CollectionAssert.AreEqual(sources.ToList(), EverythingTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, EverythingTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)EverythingTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, EverythingTestDiscoverer.MessageLogger); + Assert.IsNotNull(EverythingTestDiscoverer.DiscoverySink); - [TestMethod] - public void LoadTestsShouldNotCallIntoDiscoverersWhenCancelled() - { - // Setup - string[] extensions = new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }; - TestPluginCacheHelper.SetupMockExtensions(extensions, () => { }); - - var dllsources = new List - { - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location, - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; - var jsonsources = new List - { - "test1.json", - "test2.json" - }; - var sources = new List(dllsources); - sources.AddRange(jsonsources); - - var extensionSourceMap = new Dictionary> - { - { "_none_", sources } - }; - - // Act - this.cancellationTokenSource.Cancel(); - var runSettings = this.runSettingsMock.Object; - string testCaseFilter = "TestFilter"; - this.discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, this.messageLoggerMock.Object); - - // Validate - Assert.IsFalse(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); - this.messageLoggerMock.Verify(logger => logger.SendMessage(TestMessageLevel.Warning, "Discovery of tests cancelled."), Times.Once); - } + // Check if we log the failure. + var message = $"An exception occurred while test discoverer '{typeof(NotImplementedTestDiscoverer).Name}' was loading tests. Exception: The method or operation is not implemented."; - [TestMethod] - public void LoadTestsShouldCallIntoTheAdapterWithTheRightTestCaseSink() + _messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Error, message), Times.Once); + } + + [TestMethod] + public void LoadTestsShouldCollectMetrics() + { + var mockMetricsCollector = new Mock(); + var dict = new Dictionary { - this.InvokeLoadTestWithMockSetup(); + { "DummyMessage", "DummyValue" } + }; - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.AreEqual(2, this.discoveryResultCache.Tests.Count); - } + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - [TestMethod] - public void LoadTestsShouldNotShowAnyWarningOnTestsDiscovered() + var sources = new List { - this.InvokeLoadTestWithMockSetup(); + typeof(DiscoveryResultCacheTests).Assembly.Location, + typeof(DiscoveryResultCacheTests).Assembly.Location + }; - Assert.AreEqual(2, this.discoveryResultCache.Tests.Count); + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; + + mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + + string testCaseFilter = "TestFilter"; + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, testCaseFilter, _messageLoggerMock.Object); + + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenInSecByAllAdapters, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterUsedToDiscoverTests, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringDiscovery, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsByAdapter + ".discoverer://manageddlldiscoverer/", It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + ".discoverer://manageddlldiscoverer/", It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsByAdapter + ".discoverer://nativedlldiscoverer/", It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenToDiscoverTestsByAnAdapter + ".discoverer://nativedlldiscoverer/", It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenToLoadAdaptersInSec, It.IsAny()), Times.Once); + } - this.messageLoggerMock.Verify(m => m.SendMessage(TestMessageLevel.Warning, It.IsAny()), Times.Never); - } + [TestMethod] + public void LoadTestsShouldNotCallIntoDiscoverersWhenCancelled() + { + // Setup + string[] extensions = [typeof(DiscovererEnumeratorTests).Assembly.Location]; + TestPluginCacheHelper.SetupMockExtensions(extensions, () => { }); - [TestMethod] - public void LoadTestShouldInstrumentDiscoveryStart() + var dllsources = new List { - this.InvokeLoadTestWithMockSetup(); - this.mockTestPlatformEventSource.Verify(x => x.DiscoveryStart(), Times.Once); - } + typeof(DiscoveryResultCacheTests).Assembly.Location, + typeof(DiscoveryResultCacheTests).Assembly.Location + }; + var jsonsources = new List + { + "test1.json", + "test2.json" + }; + var sources = new List(dllsources); + sources.AddRange(jsonsources); - [TestMethod] - public void LoadTestShouldInstrumentDiscoveryStop() + var extensionSourceMap = new Dictionary> { - this.InvokeLoadTestWithMockSetup(); - this.mockTestPlatformEventSource.Verify(x => x.DiscoveryStop(It.IsAny()), Times.Once); - } + { "_none_", sources } + }; + + // Act + _cancellationTokenSource.Cancel(); + var runSettings = _runSettingsMock.Object; + string testCaseFilter = "TestFilter"; + _discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, _messageLoggerMock.Object); + + // Validate + Assert.IsFalse(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsFalse(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(EverythingTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + + _messageLoggerMock.Verify(logger => logger.SendMessage(TestMessageLevel.Warning, "Discovery of tests cancelled."), Times.Once); + } + + [TestMethod] + public void LoadTestsShouldCallIntoTheAdapterWithTheRightTestCaseSink() + { + InvokeLoadTestWithMockSetup(); + + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.AreEqual(2, _discoveryResultCache.Tests.Count); + } + + [TestMethod] + public void LoadTestsShouldNotShowAnyWarningOnTestsDiscovered() + { + InvokeLoadTestWithMockSetup(); + + Assert.AreEqual(2, _discoveryResultCache.Tests.Count); + + _messageLoggerMock.Verify(m => m.SendMessage(TestMessageLevel.Warning, It.IsAny()), Times.Never); + } + + [TestMethod] + public void LoadTestShouldInstrumentDiscoveryStart() + { + InvokeLoadTestWithMockSetup(); + _mockTestPlatformEventSource.Verify(x => x.DiscoveryStart(), Times.Once); + } + + [TestMethod] + public void LoadTestShouldInstrumentDiscoveryStop() + { + InvokeLoadTestWithMockSetup(); + _mockTestPlatformEventSource.Verify(x => x.DiscoveryStop(It.IsAny()), Times.Once); + } + + [TestMethod] + public void LoadTestShouldInstrumentAdapterDiscoveryStart() + { + InvokeLoadTestWithMockSetup(); + _mockTestPlatformEventSource.Verify(x => x.AdapterDiscoveryStart(It.IsAny()), Times.AtLeastOnce); + } + + [TestMethod] + public void LoadTestShouldInstrumentAdapterDiscoveryStop() + { + InvokeLoadTestWithMockSetup(); + _mockTestPlatformEventSource.Verify(x => x.AdapterDiscoveryStop(It.IsAny()), Times.AtLeastOnce); + } + + [TestMethod] + public void LoadTestsShouldIterateOverAllExtensionsInTheMapAndDiscoverTests() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - [TestMethod] - public void LoadTestShouldInstrumentAdapterDiscoveryStart() + var dllsources = new List { - this.InvokeLoadTestWithMockSetup(); - this.mockTestPlatformEventSource.Verify(x => x.AdapterDiscoveryStart(It.IsAny()), Times.AtLeastOnce); - } + typeof(DiscoveryResultCacheTests).Assembly.Location, + typeof(DiscoveryResultCacheTests).Assembly.Location + }; + var jsonsources = new List + { + "test1.json", + "test2.json" + }; - [TestMethod] - public void LoadTestShouldInstrumentAdapterDiscoveryStop() + var extensionSourceMap = new Dictionary> { - this.InvokeLoadTestWithMockSetup(); - this.mockTestPlatformEventSource.Verify(x => x.AdapterDiscoveryStop(It.IsAny()), Times.AtLeastOnce); - } + { typeof(DiscovererEnumeratorTests).Assembly.Location, jsonsources }, + { "_none_", dllsources } + }; + + var runSettings = _runSettingsMock.Object; + + string testCaseFilter = "TestFilter"; + + _discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, _messageLoggerMock.Object); + + Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); + Assert.IsTrue(JsonTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(EverythingTestDiscoverer.IsDiscoverTestCalled); + Assert.IsTrue(DirectoryAndFileTestDiscoverer.IsDiscoverTestCalled); + Assert.IsFalse(DirectoryTestDiscoverer.IsDiscoverTestCalled); + + // Also validate that the right set of arguments were passed on to the discoverer. + CollectionAssert.AreEqual(dllsources.Distinct().ToList(), ManagedDllTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, DllTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DllTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DllTestDiscoverer.MessageLogger); + Assert.IsNotNull(DllTestDiscoverer.DiscoverySink); + + CollectionAssert.AreEqual(jsonsources, JsonTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, JsonTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)JsonTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, JsonTestDiscoverer.MessageLogger); + Assert.IsNotNull(JsonTestDiscoverer.DiscoverySink); + + var allSources = jsonsources.Concat(dllsources).Distinct().OrderBy(source => source).ToList(); + CollectionAssert.AreEqual(allSources, EverythingTestDiscoverer.Sources!.OrderBy(source => source).ToList()); + Assert.AreEqual(runSettings, EverythingTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)EverythingTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, EverythingTestDiscoverer.MessageLogger); + Assert.IsNotNull(EverythingTestDiscoverer.DiscoverySink); + + CollectionAssert.AreEqual(jsonsources, DirectoryAndFileTestDiscoverer.Sources!.ToList()); + Assert.AreEqual(runSettings, DirectoryAndFileTestDiscoverer.DiscoveryContext!.RunSettings); + Assert.AreEqual(testCaseFilter, ((DiscoveryContext)DirectoryAndFileTestDiscoverer.DiscoveryContext).FilterExpressionWrapper!.FilterString); + Assert.AreEqual(_messageLoggerMock.Object, DirectoryAndFileTestDiscoverer.MessageLogger); + Assert.IsNotNull(DirectoryAndFileTestDiscoverer.DiscoverySink); + } - [TestMethod] - public void LoadTestsShouldIterateOverAllExtensionsInTheMapAndDiscoverTests() - { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); - - var dllsources = new List - { - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location, - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; - var jsonsources = new List - { - "test1.json", - "test2.json" - }; - - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add(typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location, jsonsources); - extensionSourceMap.Add("_none_", dllsources); - - var runSettings = this.runSettingsMock.Object; - - string testCaseFilter = "TestFilter"; - - this.discovererEnumerator.LoadTests(extensionSourceMap, runSettings, testCaseFilter, this.messageLoggerMock.Object); - - Assert.IsTrue(ManagedDllTestDiscoverer.IsManagedDiscoverTestCalled); - Assert.IsTrue(JsonTestDiscoverer.IsDiscoverTestCalled); - - // Also validate that the right set of arguments were passed on to the discoverer. - CollectionAssert.AreEqual(dllsources, ManagedDllTestDiscoverer.Sources.ToList()); - Assert.AreEqual(runSettings, ManagedDllTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (ManagedDllTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, ManagedDllTestDiscoverer.MessageLogger); - Assert.IsNotNull(ManagedDllTestDiscoverer.DiscoverySink); - - CollectionAssert.AreEqual(jsonsources, JsonTestDiscoverer.Sources.ToList()); - Assert.AreEqual(runSettings, JsonTestDiscoverer.DiscoveryContext.RunSettings); - Assert.AreEqual(testCaseFilter, (JsonTestDiscoverer.DiscoveryContext as DiscoveryContext).FilterExpressionWrapper.FilterString); - Assert.AreEqual(this.messageLoggerMock.Object, JsonTestDiscoverer.MessageLogger); - Assert.IsNotNull(JsonTestDiscoverer.DiscoverySink); - } + [TestMethod] + public void LoadTestsShouldLogWarningMessageOnNoTestsInAssemblies() + { + SetupForNoTestsAvailableInGivenAssemblies(out var extensionSourceMap, out var sourcesString); - [TestMethod] - public void LoadTestsShouldLogWarningMessageOnNoTestsInAssemblies() - { - DiscovererEnumeratorTests.SetupForNoTestsAvailableInGivenAssemblies(out var extensionSourceMap, out var sourcesString); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, null, _messageLoggerMock.Object); - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, null, this.messageLoggerMock.Object); + var expectedMessage = + $"No test is available in {sourcesString}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; - var expectedMessage = - $"No test is available in {sourcesString}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; + _messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, expectedMessage)); + } - this.messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, expectedMessage)); - } + [TestMethod] + public void LoadTestsShouldLogWarningMessageOnNoTestsInAssembliesWithTestCaseFilter() + { + SetupForNoTestsAvailableInGivenAssemblies(out var extensionSourceMap, out var sourcesString); - [TestMethod] - public void LoadTestsShouldLogWarningMessageOnNoTestsInAssembliesWithTestCaseFilter() - { - DiscovererEnumeratorTests.SetupForNoTestsAvailableInGivenAssemblies(out var extensionSourceMap, out var sourcesString); + var testCaseFilter = "Name~TestMethod1"; + + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, testCaseFilter, _messageLoggerMock.Object); - var testCaseFilter = "Name~TestMethod1"; + var expectedMessage = + $"No test matches the given testcase filter `{testCaseFilter}` in {sourcesString}"; - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, testCaseFilter, this.messageLoggerMock.Object); + _messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, expectedMessage)); + } + + [TestMethod] + public void LoadTestsShouldShortenTheLongTestCaseFilterWhenNoTestsDiscovered() + { + SetupForNoTestsAvailableInGivenAssemblies(out var extensionSourceMap, out var sourcesString); - var expectedMessage = - $"No test matches the given testcase filter `{testCaseFilter}` in {sourcesString}"; + var veryLengthyTestCaseFilter = "FullyQualifiedName=TestPlatform.CrossPlatEngine" + + ".UnitTests.Discovery.DiscovererEnumeratorTests." + + "LoadTestsShouldShortenTheLongTestCaseFilterWhenNoTestsDiscovered" + + "TestCaseFilterWithVeryLengthTestCaseNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; - this.messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, expectedMessage)); - } + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, veryLengthyTestCaseFilter, _messageLoggerMock.Object); + + var expectedTestCaseFilter = veryLengthyTestCaseFilter.Substring(0, 256) + "..."; + var expectedMessage = + $"No test matches the given testcase filter `{expectedTestCaseFilter}` in {sourcesString}"; + + _messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, expectedMessage)); + } + + private static void SetupForNoTestsAvailableInGivenAssemblies( + out Dictionary> extensionSourceMap, + out string sourcesString) + { + var crossPlatEngineAssemblyLocation = typeof(DiscovererEnumerator).Assembly.Location; + var objectModelAseeAssemblyLocation = typeof(TestCase).Assembly.Location; + var sources = new string[] { crossPlatEngineAssemblyLocation, objectModelAseeAssemblyLocation }; + + extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; + sourcesString = string.Join(" ", crossPlatEngineAssemblyLocation, objectModelAseeAssemblyLocation); + } + + private void InvokeLoadTestWithMockSetup() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - [TestMethod] - public void LoadTestsShouldShortenTheLongTestCaseFilterWhenNoTestsDiscovered() + var sources = new List { - DiscovererEnumeratorTests.SetupForNoTestsAvailableInGivenAssemblies(out var extensionSourceMap, out var sourcesString); + typeof(DiscoveryResultCacheTests).Assembly.Location + }; - var veryLengthyTestCaseFilter = "FullyQualifiedName=TestPlatform.CrossPlatEngine" + - ".UnitTests.Discovery.DiscovererEnumeratorTests." + - "LoadTestsShouldShortenTheLongTestCaseFilterWhenNoTestsDiscovered" + - "TestCaseFilterWithVeryLengthTestCaseNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; + var extensionSourceMap = new Dictionary> + { + { "_none_", sources } + }; - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, veryLengthyTestCaseFilter, this.messageLoggerMock.Object); + _discovererEnumerator.LoadTests(extensionSourceMap, _runSettingsMock.Object, null, _messageLoggerMock.Object); + } - var expectedTestCaseFilter = veryLengthyTestCaseFilter.Substring(0, 256) + "..."; - var expectedMessage = - $"No test matches the given testcase filter `{expectedTestCaseFilter}` in {sourcesString}"; + #region Implementation - this.messageLoggerMock.Verify(l => l.SendMessage(TestMessageLevel.Warning, expectedMessage)); + /// + /// Placing this before others so that at runtime this would be the first to be discovered as a discoverer. + /// + [FileExtension(".csv")] + [DefaultExecutorUri("discoverer://csvdiscoverer")] + private class SingletonTestDiscoverer : ITestDiscoverer + { + private SingletonTestDiscoverer() + { } - private static void SetupForNoTestsAvailableInGivenAssemblies( - out Dictionary> extensionSourceMap, - out string sourcesString) - { - var crossPlatEngineAssemblyLocation = typeof(DiscovererEnumerator).GetTypeInfo().Assembly.Location; - var objectModelAseeAssemblyLocation = typeof(TestCase).GetTypeInfo().Assembly.Location; - var sources = new string[] { crossPlatEngineAssemblyLocation, objectModelAseeAssemblyLocation }; + public static bool IsDiscoverTestCalled { get; private set; } - extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); - sourcesString = string.Join(" ", crossPlatEngineAssemblyLocation, objectModelAseeAssemblyLocation); + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + IsDiscoverTestCalled = true; } - private void InvokeLoadTestWithMockSetup() + public static void Reset() { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + IsDiscoverTestCalled = false; + } + } - var sources = new List - { - typeof(DiscoveryResultCacheTests).GetTypeInfo().Assembly.Location - }; + [FileExtension(".cs")] + [DefaultExecutorUri("discoverer://csvdiscoverer")] + private class NotImplementedTestDiscoverer : ITestDiscoverer + { + public static bool IsDiscoverTestCalled { get; private set; } - var extensionSourceMap = new Dictionary>(); - extensionSourceMap.Add("_none_", sources); + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + IsDiscoverTestCalled = true; + throw new NotImplementedException(); + } - this.discovererEnumerator.LoadTests(extensionSourceMap, this.runSettingsMock.Object, null, this.messageLoggerMock.Object); + public static void Reset() + { + IsDiscoverTestCalled = false; } + } + + [FileExtension(".dll")] + [FileExtension(".exe")] + [DefaultExecutorUri("discoverer://manageddlldiscoverer")] + [Category("managed")] + private class ManagedDllTestDiscoverer : DllTestDiscoverer + { + public static bool IsManagedDiscoverTestCalled { get; private set; } - #region Implementation + public static IEnumerable? Sources { get; set; } - /// - /// Placing this before others so that at runtime this would be the first to be discovered as a discoverer. - /// - [FileExtension(".csv")] - [DefaultExecutorUri("discoverer://csvdiscoverer")] - private class SingletonTestDiscoverer : ITestDiscoverer + public override void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { - private SingletonTestDiscoverer() - { - } + Sources = sources; + IsManagedDiscoverTestCalled = true; + base.DiscoverTests(sources, discoveryContext, logger, discoverySink); + } - public static bool IsDiscoverTestCalled { get; private set; } + public static void Reset() + { + IsManagedDiscoverTestCalled = false; + Sources = null; + } + } - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - IsDiscoverTestCalled = true; - } + [FileExtension(".dll")] + [FileExtension(".exe")] + [DefaultExecutorUri("discoverer://nativedlldiscoverer")] + [Category("native")] + private class NativeDllTestDiscoverer : DllTestDiscoverer + { + public static bool IsNativeDiscoverTestCalled { get; private set; } - public static void Reset() - { - IsDiscoverTestCalled = false; - } + public static IEnumerable? Sources { get; set; } + + public override void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) + { + Sources = sources; + IsNativeDiscoverTestCalled = true; + base.DiscoverTests(sources, discoveryContext, logger, discoverySink); } - [FileExtension(".cs")] - [DefaultExecutorUri("discoverer://csvdiscoverer")] - private class NotImplementedTestDiscoverer : ITestDiscoverer + public static void Reset() { - public static bool IsDiscoverTestCalled { get; private set; } + IsNativeDiscoverTestCalled = false; + Sources = null; + } + } + + private class DllTestDiscoverer : ITestDiscoverer + { + public static IDiscoveryContext? DiscoveryContext { get; private set; } + + public static IMessageLogger? MessageLogger { get; private set; } + + public static ITestCaseDiscoverySink? DiscoverySink { get; private set; } - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + public virtual void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) + { + if (ShouldTestDiscovered(sources) == false) { - IsDiscoverTestCalled = true; - throw new NotImplementedException(); + return; } - public static void Reset() + DiscoveryContext = discoveryContext; + MessageLogger = logger; + DiscoverySink = discoverySink; + + var testCase = new TestCase("A.C.M", new Uri("executor://dllexecutor"), "A"); + discoverySink.SendTestCase(testCase); + } + + private static bool ShouldTestDiscovered(IEnumerable sources) + { + var shouldTestDiscovered = false; + foreach (var source in sources) { - IsDiscoverTestCalled = false; + if (source.Equals("native.dll") || source.Equals("managed.dll") || source.EndsWith("CrossPlatEngine.UnitTests.dll") || source.EndsWith("CrossPlatEngine.UnitTests.exe")) + { + shouldTestDiscovered = true; + break; + } } + + return shouldTestDiscovered; } + } - [FileExtension(".dll")] - [DefaultExecutorUri("discoverer://manageddlldiscoverer")] - [Category("managed")] - private class ManagedDllTestDiscoverer : DllTestDiscoverer - { - public static bool IsManagedDiscoverTestCalled { get; private set; } + [FileExtension(".json")] + [DefaultExecutorUri("discoverer://jsondiscoverer")] + private class JsonTestDiscoverer : ITestDiscoverer + { + public static bool IsDiscoverTestCalled { get; private set; } - public static IEnumerable Sources { get; set; } + public static IEnumerable? Sources { get; private set; } - public override void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - Sources = sources; - IsManagedDiscoverTestCalled = true; - base.DiscoverTests(sources, discoveryContext, logger, discoverySink); - } + public static IDiscoveryContext? DiscoveryContext { get; private set; } - public static void Reset() - { - IsManagedDiscoverTestCalled = false; - Sources = null; - } + public static IMessageLogger? MessageLogger { get; private set; } + + public static ITestCaseDiscoverySink? DiscoverySink { get; private set; } + + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) + { + IsDiscoverTestCalled = true; + Sources = sources; + DiscoveryContext = discoveryContext; + MessageLogger = logger; + DiscoverySink = discoverySink; } - [FileExtension(".dll")] - [DefaultExecutorUri("discoverer://nativedlldiscoverer")] - [Category("native")] - private class NativeDllTestDiscoverer : DllTestDiscoverer + public static void Reset() { - public static bool IsNativeDiscoverTestCalled { get; private set; } + IsDiscoverTestCalled = false; + } + } - public static IEnumerable Sources { get; set; } + [DefaultExecutorUri("discoverer://everythingdiscoverer")] + private class EverythingTestDiscoverer : ITestDiscoverer + { + public static bool IsDiscoverTestCalled { get; private set; } - public override void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - Sources = sources; - IsNativeDiscoverTestCalled = true; - base.DiscoverTests(sources, discoveryContext, logger, discoverySink); - } + public static IEnumerable? Sources { get; private set; } - public static void Reset() - { - IsNativeDiscoverTestCalled = false; - Sources = null; - } - } + public static IDiscoveryContext? DiscoveryContext { get; private set; } + + public static IMessageLogger? MessageLogger { get; private set; } + + public static ITestCaseDiscoverySink? DiscoverySink { get; private set; } - private class DllTestDiscoverer : ITestDiscoverer + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) { - public static IDiscoveryContext DiscoveryContext { get; private set; } + IsDiscoverTestCalled = true; + Sources = Sources is null ? sources : Sources.Concat(sources); + DiscoveryContext = discoveryContext; + MessageLogger = logger; + DiscoverySink = discoverySink; + } - public static IMessageLogger MessageLogger { get; private set; } + public static void Reset() + { + IsDiscoverTestCalled = false; + Sources = null; + } + } - public static ITestCaseDiscoverySink DiscoverySink { get; private set; } + [DirectoryBasedTestDiscoverer] + [DefaultExecutorUri("discoverer://dirdiscoverer")] + private class DirectoryTestDiscoverer : ITestDiscoverer + { + public static bool IsDiscoverTestCalled { get; private set; } - public virtual void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - if (DllTestDiscoverer.ShouldTestDiscovered(sources) == false) - { - return; - } + public static IEnumerable? Sources { get; private set; } - DiscoveryContext = discoveryContext; - MessageLogger = logger; - DiscoverySink = discoverySink; + public static IDiscoveryContext? DiscoveryContext { get; private set; } - var testCase = new TestCase("A.C.M", new Uri("executor://dllexecutor"), "A"); - discoverySink.SendTestCase(testCase); - } + public static IMessageLogger? MessageLogger { get; private set; } - private static bool ShouldTestDiscovered(IEnumerable sources) - { - var shouldTestDiscovered = false; - foreach (var source in sources) - { - if (source.Equals("native.dll") || source.Equals("managed.dll") || source.EndsWith("CrossPlatEngine.UnitTests.dll")) - { - shouldTestDiscovered = true; - break; - } - } + public static ITestCaseDiscoverySink? DiscoverySink { get; private set; } - return shouldTestDiscovered; - } + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) + { + IsDiscoverTestCalled = true; + Sources = Sources is null ? sources : Sources.Concat(sources); + DiscoveryContext = discoveryContext; + MessageLogger = logger; + DiscoverySink = discoverySink; } - [FileExtension(".json")] - [DefaultExecutorUri("discoverer://jsondiscoverer")] - private class JsonTestDiscoverer : ITestDiscoverer + public static void Reset() { - public static bool IsDiscoverTestCalled { get; private set; } + IsDiscoverTestCalled = false; + Sources = null; + } + } - public static IEnumerable Sources { get; private set; } + [DirectoryBasedTestDiscoverer] + [FileExtension(".json")] + [DefaultExecutorUri("discoverer://dirandfilediscoverer")] + private class DirectoryAndFileTestDiscoverer : ITestDiscoverer + { + public static bool IsDiscoverTestCalled { get; private set; } - public static IDiscoveryContext DiscoveryContext { get; private set; } + public static IEnumerable? Sources { get; private set; } - public static IMessageLogger MessageLogger { get; private set; } + public static IDiscoveryContext? DiscoveryContext { get; private set; } - public static ITestCaseDiscoverySink DiscoverySink { get; private set; } + public static IMessageLogger? MessageLogger { get; private set; } - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - IsDiscoverTestCalled = true; - Sources = sources; - DiscoveryContext = discoveryContext; - MessageLogger = logger; - DiscoverySink = discoverySink; - } + public static ITestCaseDiscoverySink? DiscoverySink { get; private set; } - public static void Reset() - { - IsDiscoverTestCalled = false; - } + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) + { + IsDiscoverTestCalled = true; + Sources = Sources is null ? sources : Sources.Concat(sources); + DiscoveryContext = discoveryContext; + MessageLogger = logger; + DiscoverySink = discoverySink; } - #endregion + public static void Reset() + { + IsDiscoverTestCalled = false; + Sources = null; + } } + + #endregion } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryContextTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryContextTests.cs index 88a170084d..174ae2b1d5 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryContextTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryContextTests.cs @@ -1,76 +1,72 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Common.Filtering; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery; + +[TestClass] +public class DiscoveryContextTests { - using System.Collections.Generic; + private readonly DiscoveryContext _discoveryContext; - using Microsoft.VisualStudio.TestPlatform.Common.Filtering; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using MSTest.TestFramework.AssertExtensions; + public DiscoveryContextTests() + { + _discoveryContext = new DiscoveryContext(); + } - [TestClass] - public class DiscoveryContextTests + /// + /// GetTestCaseFilter should return null in case filter expression is null + /// + [TestMethod] + public void GetTestCaseFilterShouldReturnNullIfFilterExpressionIsNull() { - private DiscoveryContext discoveryContext; - - [TestInitialize] - public void TestInit() - { - this.discoveryContext = new DiscoveryContext(); - } - - /// - /// GetTestCaseFilter should return null in case filter expression is null - /// - [TestMethod] - public void GetTestCaseFilterShouldReturnNullIfFilterExpressionIsNull() - { - this.discoveryContext.FilterExpressionWrapper = null; - - Assert.IsNull(this.discoveryContext.GetTestCaseFilter(null, (s) => { return null; })); - } - - /// - /// If only property value passed, consider property key and operation defaults. - /// - [TestMethod] - public void GetTestCaseFilterShouldNotThrowIfPropertyValueOnlyPassed() - { - this.discoveryContext.FilterExpressionWrapper = new FilterExpressionWrapper("Infinity"); - - var filter = this.discoveryContext.GetTestCaseFilter(new List{ "FullyQualifiedName" }, (s) => { return null; }); - - Assert.IsNotNull(filter); - } - - /// - /// Exception should not be thrown in case invalid properties passed in filter expression. - /// - [TestMethod] - public void GetTestCaseFilterShouldNotThrowOnInvalidProperties() - { - this.discoveryContext.FilterExpressionWrapper = new FilterExpressionWrapper("highlyunlikelyproperty=unused"); - - var filter = this.discoveryContext.GetTestCaseFilter(new List { "TestCategory" }, (s) => { return null; }); - - Assert.IsNotNull(filter); - } - - /// - /// GetTestCaseFilter should return correct filter as present in filter expression. - /// - [TestMethod] - public void GetTestCaseFilterShouldReturnTestCaseFilter() - { - this.discoveryContext.FilterExpressionWrapper = new FilterExpressionWrapper("TestCategory=Important"); - - var filter = this.discoveryContext.GetTestCaseFilter(new List { "TestCategory" }, (s) => { return null; }); - - Assert.IsNotNull(filter); - Assert.AreEqual("TestCategory=Important", filter.TestCaseFilterValue); - } + _discoveryContext.FilterExpressionWrapper = null; + + Assert.IsNull(_discoveryContext.GetTestCaseFilter(null, s => null)); + } + + /// + /// If only property value passed, consider property key and operation defaults. + /// + [TestMethod] + public void GetTestCaseFilterShouldNotThrowIfPropertyValueOnlyPassed() + { + _discoveryContext.FilterExpressionWrapper = new FilterExpressionWrapper("Infinity"); + + var filter = _discoveryContext.GetTestCaseFilter(new List { "FullyQualifiedName" }, s => null); + + Assert.IsNotNull(filter); + } + + /// + /// Exception should not be thrown in case invalid properties passed in filter expression. + /// + [TestMethod] + public void GetTestCaseFilterShouldNotThrowOnInvalidProperties() + { + _discoveryContext.FilterExpressionWrapper = new FilterExpressionWrapper("highlyunlikelyproperty=unused"); + + var filter = _discoveryContext.GetTestCaseFilter(new List { "TestCategory" }, s => null); + + Assert.IsNotNull(filter); + } + + /// + /// GetTestCaseFilter should return correct filter as present in filter expression. + /// + [TestMethod] + public void GetTestCaseFilterShouldReturnTestCaseFilter() + { + _discoveryContext.FilterExpressionWrapper = new FilterExpressionWrapper("TestCategory=Important"); + + var filter = _discoveryContext.GetTestCaseFilter(new List { "TestCategory" }, s => null); + + Assert.IsNotNull(filter); + Assert.AreEqual("TestCategory=Important", filter.TestCaseFilterValue); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryManagerTests.cs index d7d956b4be..86fee2b8d9 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryManagerTests.cs @@ -1,271 +1,317 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; +using FluentAssertions; + +using CrossPlatEngineResources = Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources.Resources; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery; + +[TestClass] +public class DiscoveryManagerTests { - using System.Collections.Generic; - using System.Globalization; - using System.IO; - using System.Linq; - using System.Reflection; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using CrossPlatEngineResources = Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources.Resources; - - [TestClass] - public class DiscoveryManagerTests + private readonly DiscoveryManager _discoveryManager; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly TestSessionMessageLogger _sessionLogger; + + public DiscoveryManagerTests() { - private DiscoveryManager discoveryManager; - private Mock mockRequestData; - private Mock mockMetricsCollection; - private TestSessionMessageLogger sessionLogger; + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _sessionLogger = TestSessionMessageLogger.Instance; + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _discoveryManager = new DiscoveryManager(_mockRequestData.Object); + } - [TestInitialize] - public void TestInit() - { - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.sessionLogger = TestSessionMessageLogger.Instance; - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.discoveryManager = new DiscoveryManager(this.mockRequestData.Object); - } - - [TestCleanup] - public void TestCleanup() - { - TestDiscoveryExtensionManager.Destroy(); - TestPluginCache.Instance = null; - } + [TestCleanup] + public void TestCleanup() + { + TestDiscoveryExtensionManager.Destroy(); + TestPluginCache.Instance = null; + } - #region Initialize tests + #region Initialize tests - [TestMethod] - public void InitializeShouldUpdateAdditionalExtenions() - { - var mockFileHelper = new Mock(); - var mockLogger = new Mock(); - mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); - TestPluginCache.Instance = new TestableTestPluginCache(); + [TestMethod] + public void InitializeShouldUpdateAdditionalExtenions() + { + var mockFileHelper = new Mock(); + var mockLogger = new Mock(); + mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); + TestPluginCache.Instance = new TestableTestPluginCache(); - this.discoveryManager.Initialize( - new string[] { typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location }, mockLogger.Object); + _discoveryManager.Initialize( + new string[] { typeof(DiscoveryManagerTests).Assembly.Location }, mockLogger.Object); - var allDiscoverers = TestDiscoveryExtensionManager.Create().Discoverers; + var allDiscoverers = TestDiscoveryExtensionManager.Create().Discoverers; - Assert.IsNotNull(allDiscoverers); - Assert.IsTrue(allDiscoverers.Any()); - } + Assert.IsNotNull(allDiscoverers); + Assert.IsTrue(allDiscoverers.Any()); + } - #endregion + [TestMethod] + public void InitializeShouldClearMetricsCollection() + { + var metricsCollection = new MetricsCollection(); - #region DiscoverTests tests + metricsCollection.Add("metric", "value"); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(metricsCollection); + _mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); - [TestMethod] - public void DiscoverTestsShouldLogIfTheSourceDoesNotExist() - { - var criteria = new DiscoveryCriteria(new List { "imaginary.dll" }, 100, null); - var mockLogger = new Mock(); + var discoveryManager = new DiscoveryManager(_mockRequestData.Object); - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + metricsCollection.Metrics.Should().ContainKey("metric"); + discoveryManager.Initialize(null, new Mock().Object); + metricsCollection.Metrics.Should().BeEmpty(); + } - var errorMessage = string.Format(CultureInfo.CurrentCulture, "Could not find file {0}.", Path.Combine(Directory.GetCurrentDirectory(), "imaginary.dll")); - mockLogger.Verify( - l => + [TestMethod] + public void InitializeShouldNotFailIfMetricsFieldIsNull() + { + _mockRequestData.Object.MetricsCollection.Metrics.Should().BeNull(); + + var action = () => (new DiscoveryManager(_mockRequestData.Object)) + .Initialize(null, new Mock().Object); + + action.Should().NotThrow(); + } + #endregion + + #region DiscoverTests tests + + [TestMethod] + public void DiscoverTestsShouldLogIfTheSourceDoesNotExist() + { + var criteria = new DiscoveryCriteria(new List { "imaginary.dll" }, 100, null); + var mockLogger = new Mock(); + + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); + + var errorMessage = string.Format(CultureInfo.CurrentCulture, "Could not find file {0}.", Path.Combine(Directory.GetCurrentDirectory(), "imaginary.dll")); + mockLogger.Verify( + l => l.HandleLogMessage( - Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestMessageLevel.Warning, + TestMessageLevel.Warning, errorMessage), - Times.Once); - } + Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldLogIfTheSourceDoesNotExistIfItHasAPackage() - { - var criteria = new DiscoveryCriteria(new List { "imaginary.exe" }, 100, null); + [TestMethod] + public void DiscoverTestsShouldLogIfTheSourceDoesNotExistIfItHasAPackage() + { + var criteria = new DiscoveryCriteria(new List { "imaginary.exe" }, 100, null); - var packageName = "recipe.AppxRecipe"; + var packageName = "recipe.AppxRecipe"; - var fakeDirectory = Directory.GetDirectoryRoot(typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location); + var fakeDirectory = Directory.GetDirectoryRoot(typeof(DiscoveryManagerTests).Assembly.Location); - criteria.Package = Path.Combine(fakeDirectory, Path.Combine(packageName)); - var mockLogger = new Mock(); + criteria.Package = Path.Combine(fakeDirectory, Path.Combine(packageName)); + var mockLogger = new Mock(); - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); - var errorMessage = string.Format(CultureInfo.CurrentCulture, "Could not find file {0}.", Path.Combine(fakeDirectory, "imaginary.exe")); - mockLogger.Verify( - l => + var errorMessage = string.Format(CultureInfo.CurrentCulture, "Could not find file {0}.", Path.Combine(fakeDirectory, "imaginary.exe")); + mockLogger.Verify( + l => l.HandleLogMessage( - Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestMessageLevel.Warning, + TestMessageLevel.Warning, errorMessage), - Times.Once); - } + Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldLogIfThereAreNoValidSources() - { - var sources = new List { "imaginary.dll" }; - var criteria = new DiscoveryCriteria(sources, 100, null); - var mockLogger = new Mock(); + [TestMethod] + public void DiscoverTestsShouldLogIfThereAreNoValidSources() + { + var sources = new List { "imaginary.dll" }; + var criteria = new DiscoveryCriteria(sources, 100, null); + var mockLogger = new Mock(); - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); - var sourcesString = string.Join(",", sources.ToArray()); - var errorMessage = string.Format(CultureInfo.CurrentCulture, CrossPlatEngineResources.NoValidSourceFoundForDiscovery, sourcesString); - mockLogger.Verify( - l => + var sourcesString = string.Join(",", sources.ToArray()); + var errorMessage = string.Format(CultureInfo.CurrentCulture, CrossPlatEngineResources.NoValidSourceFoundForDiscovery, sourcesString); + mockLogger.Verify( + l => l.HandleLogMessage( - Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestMessageLevel.Warning, + TestMessageLevel.Warning, errorMessage), - Times.Once); - } + Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldLogIfTheSameSourceIsSpecifiedTwice() - { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + [TestMethod] + public void DiscoverTestsShouldLogIfTheSameSourceIsSpecifiedTwice() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - var sources = new List - { - typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location, - typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location - }; + var sources = new List + { + typeof(DiscoveryManagerTests).Assembly.Location, + typeof(DiscoveryManagerTests).Assembly.Location + }; - var criteria = new DiscoveryCriteria(sources, 100, null); - var mockLogger = new Mock(); + var criteria = new DiscoveryCriteria(sources, 100, null); + var mockLogger = new Mock(); - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); - var errorMessage = string.Format(CultureInfo.CurrentCulture, CrossPlatEngineResources.DuplicateSource, sources[0]); - mockLogger.Verify( - l => + var errorMessage = string.Format(CultureInfo.CurrentCulture, CrossPlatEngineResources.DuplicateSource, sources[0]); + mockLogger.Verify( + l => l.HandleLogMessage( - Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestMessageLevel.Warning, + TestMessageLevel.Warning, errorMessage), - Times.Once); - } + Times.Once); + } - [TestMethod] - public void DiscoverTestsShouldDiscoverTestsInTheSpecifiedSource() + [TestMethod] + public void DiscoverTestsShouldDiscoverTestsInTheSpecifiedSource() + { + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); + + var sources = new List { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + typeof(DiscoveryManagerTests).Assembly.Location + }; - var sources = new List - { - typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location - }; + var criteria = new DiscoveryCriteria(sources, 1, null); + var mockLogger = new Mock(); - var criteria = new DiscoveryCriteria(sources, 1, null); - var mockLogger = new Mock(); + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + // Assert that the tests are passed on via the handletestruncomplete event. + mockLogger.Verify(l => l.HandleDiscoveryComplete(It.IsAny(), It.IsAny>()), Times.Once); + } - // Assert that the tests are passed on via the handletestruncomplete event. - mockLogger.Verify(l => l.HandleDiscoveryComplete(It.IsAny(), It.IsAny>()), Times.Once); - } + [TestMethod] + public void DiscoverTestsShouldSendMetricsOnDiscoveryComplete() + { + var metricsCollector = new MetricsCollection(); + metricsCollector.Add("DummyMessage", "DummyValue"); - [TestMethod] - public void DiscoverTestsShouldSendMetricsOnDiscoveryComplete() - { - var metricsCollector = new MetricsCollection(); - metricsCollector.Add("DummyMessage", "DummyValue"); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(metricsCollector); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(metricsCollector); + DiscoveryCompleteEventArgs? receivedDiscoveryCompleteEventArgs = null; - DiscoveryCompleteEventArgs receivedDiscoveryCompleteEventArgs = null; + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + var sources = new List + { + typeof(DiscoveryManagerTests).Assembly.Location + }; - var sources = new List - { - typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location - }; + var mockLogger = new Mock(); + var criteria = new DiscoveryCriteria(sources, 1, null); - var mockLogger = new Mock(); - var criteria = new DiscoveryCriteria(sources, 1, null); + mockLogger.Setup(ml => ml.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) + .Callback( + (DiscoveryCompleteEventArgs complete, + IEnumerable tests) => receivedDiscoveryCompleteEventArgs = complete); - mockLogger.Setup(ml => ml.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) - .Callback( - (DiscoveryCompleteEventArgs complete, - IEnumerable tests) => - { - receivedDiscoveryCompleteEventArgs = complete; - }); + // Act. + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); - // Act. - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + // Assert + Assert.IsNotNull(receivedDiscoveryCompleteEventArgs!.Metrics); + Assert.IsTrue(receivedDiscoveryCompleteEventArgs.Metrics.Any()); + Assert.IsTrue(receivedDiscoveryCompleteEventArgs.Metrics.ContainsKey("DummyMessage")); + } + + [TestMethod] + public void DiscoverTestsShouldCollectMetrics() + { + var mockMetricsCollector = new Mock(); + var dict = new Dictionary + { + { "DummyMessage", "DummyValue" } + }; + + mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - // Assert - Assert.IsNotNull(receivedDiscoveryCompleteEventArgs.Metrics); - Assert.IsTrue(receivedDiscoveryCompleteEventArgs.Metrics.Any()); - Assert.IsTrue(receivedDiscoveryCompleteEventArgs.Metrics.ContainsKey("DummyMessage")); - } + TestPluginCacheHelper.SetupMockExtensions( + [typeof(DiscovererEnumeratorTests).Assembly.Location], + () => { }); - [TestMethod] - public void DiscoverTestsShouldCollectMetrics() + var sources = new List { - var mockMetricsCollector = new Mock(); - var dict = new Dictionary(); - dict.Add("DummyMessage", "DummyValue"); + typeof(DiscoveryManagerTests).Assembly.Location + }; + + var mockLogger = new Mock(); + var criteria = new DiscoveryCriteria(sources, 1, null); - mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + // Act. + _discoveryManager.DiscoverTests(criteria, mockLogger.Object); - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(DiscovererEnumeratorTests).GetTypeInfo().Assembly.Location }, - () => { }); + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.DiscoveryState, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsDiscovered, It.IsAny()), Times.Once); + } + + [TestMethod] + public void DiscoveryInitializeShouldVerifyWarningMessageIfAdapterFailedToLoad() + { + var assemblyLocation = typeof(DiscoveryManagerTests).Assembly.Location; + var mockLogger = new Mock(); + TestPluginCacheHelper.SetupMockExtensions( + [assemblyLocation], + () => { }); - var sources = new List - { - typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location - }; + //Act + _discoveryManager.Initialize(new List { assemblyLocation }, mockLogger.Object); - var mockLogger = new Mock(); - var criteria = new DiscoveryCriteria(sources, 1, null); + //when handler instance returns warning + _sessionLogger.SendMessage(TestMessageLevel.Warning, "verify that the HandleLogMessage method getting invoked at least once"); - // Act. - this.discoveryManager.DiscoverTests(criteria, mockLogger.Object); + // Verify. + mockLogger.Verify(rd => rd.HandleLogMessage(TestMessageLevel.Warning, "verify that the HandleLogMessage method getting invoked at least once"), Times.Once); + } - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.DiscoveryState, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsDiscovered, It.IsAny()), Times.Once); - } + [TestMethod] + public void DiscoveryTestsShouldSendAbortValuesCorrectlyIfAbortionHappened() + { + // Arrange + var sources = new List { typeof(DiscoveryManagerTests).Assembly.Location }; - [TestMethod] - public void DiscoveryInitializeShouldVerifyWarningMessageIfAdapterFailedToLoad() - { - var assemblyLocation = typeof(DiscoveryManagerTests).GetTypeInfo().Assembly.Location; - var mockLogger = new Mock(); - TestPluginCacheHelper.SetupMockExtensions( - new string[] { assemblyLocation }, - () => { }); + var criteria = new DiscoveryCriteria(sources, 100, null); + var mockHandler = new Mock(); - //Act - this.discoveryManager.Initialize(new List { assemblyLocation }, mockLogger.Object); + DiscoveryCompleteEventArgs? receivedDiscoveryCompleteEventArgs = null; - //when handler instance returns warning - sessionLogger.SendMessage(TestMessageLevel.Warning, "verify that the HandleLogMessage method getting invoked at least once"); + mockHandler.Setup(ml => ml.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) + .Callback((DiscoveryCompleteEventArgs complete, IEnumerable tests) => receivedDiscoveryCompleteEventArgs = complete); - // Verify. - mockLogger.Verify(rd => rd.HandleLogMessage(TestMessageLevel.Warning, "verify that the HandleLogMessage method getting invoked at least once"), Times.Once); - } + // Act + _discoveryManager.DiscoverTests(criteria, mockHandler.Object); + _discoveryManager.Abort(mockHandler.Object); - #endregion + // Assert + Assert.AreEqual(true, receivedDiscoveryCompleteEventArgs!.IsAborted); + Assert.AreEqual(-1, receivedDiscoveryCompleteEventArgs.TotalCount); } + #endregion } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryResultCacheTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryResultCacheTests.cs index 06b907f708..c8e2a92c6d 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryResultCacheTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/DiscoveryResultCacheTests.cs @@ -1,124 +1,122 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery; + +[TestClass] +public class DiscoveryResultCacheTests { - using System; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; - using System.Collections; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - - [TestClass] - public class DiscoveryResultCacheTests + [TestMethod] + public void DiscoveryResultCacheConstructorShouldInitializeDiscoveredTestsList() + { + var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); + + Assert.IsNotNull(cache.Tests); + Assert.AreEqual(0, cache.Tests.Count); + } + + [TestMethod] + public void DiscoveryResultCacheConstructorShouldInitializeTotalDiscoveredTests() + { + var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); + + Assert.AreEqual(0, cache.TotalDiscoveredTests); + } + + [TestMethod] + public void AddTestShouldAddATestCaseToTheList() + { + var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); + + var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + cache.AddTest(testCase); + + Assert.AreEqual(1, cache.Tests.Count); + Assert.AreEqual(testCase, cache.Tests[0]); + } + + [TestMethod] + public void AddTestShouldIncreaseDiscoveredTestsCount() + { + var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); + + var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + cache.AddTest(testCase); + + Assert.AreEqual(1, cache.TotalDiscoveredTests); + } + + [TestMethod] + public void AddTestShouldReportTestCasesIfMaxCacheSizeIsMet() + { + ICollection? reportedTestCases = null; + var cache = new DiscoveryResultCache(2, TimeSpan.FromHours(1), (tests) => reportedTestCases = tests); + + var testCase1 = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + var testCase2 = new TestCase("A.C.M2", new Uri("executor://unittest"), "A"); + cache.AddTest(testCase1); + cache.AddTest(testCase2); + + Assert.IsNotNull(reportedTestCases); + Assert.AreEqual(2, reportedTestCases.Count); + CollectionAssert.AreEqual(new List { testCase1, testCase2 }, reportedTestCases.ToList()); + } + + [TestMethod] + public void AddTestShouldResetTestListOnceCacheSizeIsMet() + { + var cache = new DiscoveryResultCache(2, TimeSpan.FromHours(1), (tests) => { }); + + var testCase1 = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + var testCase2 = new TestCase("A.C.M2", new Uri("executor://unittest"), "A"); + cache.AddTest(testCase1); + cache.AddTest(testCase2); + + Assert.IsNotNull(cache.Tests); + Assert.AreEqual(0, cache.Tests.Count); + + // Validate that total tests is no reset though. + Assert.AreEqual(2, cache.TotalDiscoveredTests); + } + + [TestMethod] + public void AddTestShouldReportTestCasesIfCacheTimeoutIsMet() + { + ICollection? reportedTestCases = null; + var cache = new DiscoveryResultCache(100, TimeSpan.FromMilliseconds(10), (tests) => reportedTestCases = tests); + + var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + Task.Delay(20).Wait(); + cache.AddTest(testCase); + + Assert.IsNotNull(reportedTestCases); + Assert.AreEqual(1, reportedTestCases.Count); + Assert.AreEqual(testCase, reportedTestCases.ToArray()[0]); + } + + [TestMethod] + public void AddTestShouldResetTestListIfCacheTimeoutIsMet() { - [TestMethod] - public void DiscoveryResultCacheConstructorShouldInitializeDiscoveredTestsList() - { - var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); - - Assert.IsNotNull(cache.Tests); - Assert.AreEqual(0, cache.Tests.Count); - } - - [TestMethod] - public void DiscoveryResultCacheConstructorShouldInitializeTotalDiscoveredTests() - { - var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); - - Assert.AreEqual(0, cache.TotalDiscoveredTests); - } - - [TestMethod] - public void AddTestShouldAddATestCaseToTheList() - { - var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); - - var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - cache.AddTest(testCase); - - Assert.AreEqual(1, cache.Tests.Count); - Assert.AreEqual(testCase, cache.Tests[0]); - } - - [TestMethod] - public void AddTestShouldIncreaseDiscoveredTestsCount() - { - var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); - - var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - cache.AddTest(testCase); - - Assert.AreEqual(1, cache.TotalDiscoveredTests); - } - - [TestMethod] - public void AddTestShouldReportTestCasesIfMaxCacheSizeIsMet() - { - ICollection reportedTestCases = null; - var cache = new DiscoveryResultCache(2, TimeSpan.FromHours(1), (tests) => { reportedTestCases = tests; }); - - var testCase1 = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - var testCase2 = new TestCase("A.C.M2", new Uri("executor://unittest"), "A"); - cache.AddTest(testCase1); - cache.AddTest(testCase2); - - Assert.IsNotNull(reportedTestCases); - Assert.AreEqual(2, reportedTestCases.Count); - CollectionAssert.AreEqual(new List { testCase1, testCase2 }, reportedTestCases.ToList()); - } - - [TestMethod] - public void AddTestShouldResetTestListOnceCacheSizeIsMet() - { - var cache = new DiscoveryResultCache(2, TimeSpan.FromHours(1), (tests) => { }); - - var testCase1 = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - var testCase2 = new TestCase("A.C.M2", new Uri("executor://unittest"), "A"); - cache.AddTest(testCase1); - cache.AddTest(testCase2); - - Assert.IsNotNull(cache.Tests); - Assert.AreEqual(0, cache.Tests.Count); - - // Validate that total tests is no reset though. - Assert.AreEqual(2, cache.TotalDiscoveredTests); - } - - [TestMethod] - public void AddTestShouldReportTestCasesIfCacheTimeoutIsMet() - { - ICollection reportedTestCases = null; - var cache = new DiscoveryResultCache(100, TimeSpan.FromMilliseconds(10), (tests) => { reportedTestCases = tests; }); - - var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - Task.Delay(20).Wait(); - cache.AddTest(testCase); - - Assert.IsNotNull(reportedTestCases); - Assert.AreEqual(1, reportedTestCases.Count); - Assert.AreEqual(testCase, reportedTestCases.ToArray()[0]); - } - - [TestMethod] - public void AddTestShouldResetTestListIfCacheTimeoutIsMet() - { - ICollection reportedTestCases = null; - var cache = new DiscoveryResultCache(100, TimeSpan.FromMilliseconds(10), (tests) => { reportedTestCases = tests; }); - - var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - Task.Delay(20).Wait(); - cache.AddTest(testCase); - - Assert.IsNotNull(cache.Tests); - Assert.AreEqual(0, cache.Tests.Count); - - // Validate that total tests is no reset though. - Assert.AreEqual(1, cache.TotalDiscoveredTests); - } + ICollection? reportedTestCases = null; + var cache = new DiscoveryResultCache(100, TimeSpan.FromMilliseconds(10), (tests) => reportedTestCases = tests); + + var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + Task.Delay(20).Wait(); + cache.AddTest(testCase); + + Assert.IsNotNull(cache.Tests); + Assert.AreEqual(0, cache.Tests.Count); + + // Validate that total tests is no reset though. + Assert.AreEqual(1, cache.TotalDiscoveredTests); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/TestCaseDiscoverySinkTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/TestCaseDiscoverySinkTests.cs index 417977fc22..aca9334005 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/TestCaseDiscoverySinkTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Discovery/TestCaseDiscoverySinkTests.cs @@ -1,44 +1,41 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery -{ - using System; +using System; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; +namespace TestPlatform.CrossPlatEngine.UnitTests.Discovery; - [TestClass] - public class TestCaseDiscoverySinkTests +[TestClass] +public class TestCaseDiscoverySinkTests +{ + [TestMethod] + public void SendTestCaseShouldNotThrowIfCacheIsNull() { - [TestMethod] - public void SendTestCaseShouldNotThrowIfCacheIsNull() - { - var sink = new TestCaseDiscoverySink(null); + var sink = new TestCaseDiscoverySink(null); - var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - // This should not throw. - sink.SendTestCase(testCase); - } + // This should not throw. + sink.SendTestCase(testCase); + } - [TestMethod] - public void SendTestCaseShouldSendTestCasesToCache() - { - var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); - var sink = new TestCaseDiscoverySink(cache); + [TestMethod] + public void SendTestCaseShouldSendTestCasesToCache() + { + var cache = new DiscoveryResultCache(1000, TimeSpan.FromHours(1), (tests) => { }); + var sink = new TestCaseDiscoverySink(cache); - var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); + var testCase = new TestCase("A.C.M", new Uri("executor://unittest"), "A"); - sink.SendTestCase(testCase); + sink.SendTestCase(testCase); - // Assert that the cache has the test case. - Assert.IsNotNull(cache.Tests); - Assert.AreEqual(1, cache.Tests.Count); - Assert.AreEqual(testCase, cache.Tests[0]); - } + // Assert that the cache has the test case. + Assert.IsNotNull(cache.Tests); + Assert.AreEqual(1, cache.Tests.Count); + Assert.AreEqual(testCase, cache.Tests[0]); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/EventHandlers/TestRequestHandlerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/EventHandlers/TestRequestHandlerTests.cs index a85aec8b51..f57cf09db5 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/EventHandlers/TestRequestHandlerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/EventHandlers/TestRequestHandlerTests.cs @@ -2,542 +2,543 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; using System.Net.Sockets; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.TesthostProtocol; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; -namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities +[TestClass] +public class TestRequestHandlerTests { - using System.IO; - - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.TesthostProtocol; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - - [TestClass] - public class TestRequestHandlerTests - { - private readonly Mock mockCommunicationClient; - private readonly Mock mockCommunicationEndpointFactory; - private readonly Mock mockChannel; - private readonly Mock mockTestHostManagerFactory; - private readonly Mock mockDiscoveryManager; - private readonly Mock mockExecutionManager; - - private readonly JsonDataSerializer dataSerializer; - private ITestRequestHandler requestHandler; - private readonly TestHostConnectionInfo testHostConnectionInfo; - private readonly JobQueue jobQueue; - - public TestRequestHandlerTests() - { - this.mockCommunicationClient = new Mock(); - this.mockCommunicationEndpointFactory = new Mock(); - this.mockChannel = new Mock(); - this.dataSerializer = JsonDataSerializer.Instance; - this.testHostConnectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":123", - Role = ConnectionRole.Client - }; - - this.jobQueue = new JobQueue( - action => { action(); }, - "TestHostOperationQueue", - 500, - 25000000, - true, - message => EqtTrace.Error(message)); - - // Setup mock discovery and execution managers - this.mockTestHostManagerFactory = new Mock(); - this.mockDiscoveryManager = new Mock(); - this.mockExecutionManager = new Mock(); - this.mockTestHostManagerFactory.Setup(mf => mf.GetDiscoveryManager()).Returns(this.mockDiscoveryManager.Object); - this.mockTestHostManagerFactory.Setup(mf => mf.GetExecutionManager()).Returns(this.mockExecutionManager.Object); - this.mockCommunicationEndpointFactory.Setup(f => f.Create(ConnectionRole.Client)) - .Returns(this.mockCommunicationClient.Object); - - this.requestHandler = new TestableTestRequestHandler( - this.testHostConnectionInfo, - this.mockCommunicationEndpointFactory.Object, - JsonDataSerializer.Instance, - jobQueue); - this.requestHandler.InitializeCommunication(); - this.mockCommunicationClient.Raise(e => e.Connected += null, new ConnectedEventArgs(this.mockChannel.Object)); - } + private readonly Mock _mockCommunicationClient; + private readonly Mock _mockCommunicationEndpointFactory; + private readonly Mock _mockChannel; + private readonly Mock _mockTestHostManagerFactory; + private readonly Mock _mockDiscoveryManager; + private readonly Mock _mockExecutionManager; + + private readonly JsonDataSerializer _dataSerializer; + private ITestRequestHandler _requestHandler; + private readonly TestHostConnectionInfo _testHostConnectionInfo; + private readonly JobQueue _jobQueue; + + public TestRequestHandlerTests() + { + _mockCommunicationClient = new Mock(); + _mockCommunicationEndpointFactory = new Mock(); + _mockChannel = new Mock(); + _mockChannel.Setup(mc => mc.MessageReceived).Returns(new TrackableEvent()); + _dataSerializer = JsonDataSerializer.Instance; + _testHostConnectionInfo = new TestHostConnectionInfo + { + Endpoint = IPAddress.Loopback + ":123", + Role = ConnectionRole.Client + }; + + _jobQueue = new JobQueue( + action => action?.Invoke(), + "TestHostOperationQueue", + 500, + 25000000, + true, + message => EqtTrace.Error(message)); + + // Setup mock discovery and execution managers + _mockTestHostManagerFactory = new Mock(); + _mockDiscoveryManager = new Mock(); + _mockExecutionManager = new Mock(); + _mockTestHostManagerFactory.Setup(mf => mf.GetDiscoveryManager()).Returns(_mockDiscoveryManager.Object); + _mockTestHostManagerFactory.Setup(mf => mf.GetExecutionManager()).Returns(_mockExecutionManager.Object); + _mockCommunicationEndpointFactory.Setup(f => f.Create(ConnectionRole.Client)) + .Returns(_mockCommunicationClient.Object); + + _requestHandler = new TestableTestRequestHandler( + _testHostConnectionInfo, + _mockCommunicationEndpointFactory.Object, + JsonDataSerializer.Instance, + _jobQueue); + _requestHandler.InitializeCommunication(); + + _mockCommunicationClient.Raise(e => e.Connected += null, new ConnectedEventArgs(_mockChannel.Object)); + } - [TestMethod] - public void InitializeCommunicationShouldConnectToServerAsynchronously() - { - this.mockCommunicationClient.Verify(c => c.Start(this.testHostConnectionInfo.Endpoint), Times.Once); - } + [TestMethod] + public void InitializeCommunicationShouldConnectToServerAsynchronously() + { + _mockCommunicationClient.Verify(c => c.Start(_testHostConnectionInfo.Endpoint), Times.Once); + } - [TestMethod] - [TestCategory("Windows")] - public void InitializeCommunicationShouldThrowIfServerIsNotAccessible() - { - var connectionInfo = new TestHostConnectionInfo - { - Endpoint = IPAddress.Loopback + ":123", - Role = ConnectionRole.Client - }; - var socketClient = new SocketClient(); - socketClient.Connected += (sender, connectedEventArgs) => - { - Assert.IsFalse(connectedEventArgs.Connected); - Assert.AreEqual(typeof(SocketException), connectedEventArgs.Fault.InnerException.GetType()); - }; - this.mockCommunicationEndpointFactory.Setup(f => f.Create(ConnectionRole.Client)) - .Returns(socketClient); - var rh = new TestableTestRequestHandler(connectionInfo, this.mockCommunicationEndpointFactory.Object, this.dataSerializer, this.jobQueue); - - rh.InitializeCommunication(); - this.requestHandler.WaitForRequestSenderConnection(1000); - } + [TestMethod] + [TestCategory("Windows")] + public void InitializeCommunicationShouldThrowIfServerIsNotAccessible() + { + var connectionInfo = new TestHostConnectionInfo + { + Endpoint = IPAddress.Loopback + ":123", + Role = ConnectionRole.Client + }; + var socketClient = new SocketClient(); + socketClient.Connected += (sender, connectedEventArgs) => + { + Assert.IsFalse(connectedEventArgs.Connected); + Assert.AreEqual(typeof(SocketException), connectedEventArgs.Fault!.InnerException!.GetType()); + }; + _mockCommunicationEndpointFactory.Setup(f => f.Create(ConnectionRole.Client)) + .Returns(socketClient); + var rh = new TestableTestRequestHandler(connectionInfo, _mockCommunicationEndpointFactory.Object, _dataSerializer, _jobQueue); + + rh.InitializeCommunication(); + _requestHandler.WaitForRequestSenderConnection(1000); + } - [TestMethod] - public void WaitForRequestSenderConnectionShouldWaitUntilConnectionIsSetup() - { - Assert.IsTrue(this.requestHandler.WaitForRequestSenderConnection(1000)); - } + [TestMethod] + public void WaitForRequestSenderConnectionShouldWaitUntilConnectionIsSetup() + { + Assert.IsTrue(_requestHandler.WaitForRequestSenderConnection(1000)); + } - [TestMethod] - public void WaitForRequestSenderConnectionShouldReturnFalseIfConnectionSetupTimesout() - { - this.requestHandler = new TestableTestRequestHandler( - this.testHostConnectionInfo, - this.mockCommunicationEndpointFactory.Object, - JsonDataSerializer.Instance, - jobQueue); - this.requestHandler.InitializeCommunication(); - - Assert.IsFalse(this.requestHandler.WaitForRequestSenderConnection(1)); - } + [TestMethod] + public void WaitForRequestSenderConnectionShouldReturnFalseIfConnectionSetupTimesout() + { + _requestHandler = new TestableTestRequestHandler( + _testHostConnectionInfo, + _mockCommunicationEndpointFactory.Object, + JsonDataSerializer.Instance, + _jobQueue); + _requestHandler.InitializeCommunication(); + + Assert.IsFalse(_requestHandler.WaitForRequestSenderConnection(1)); + } - [TestMethod] - public void ProcessRequestsShouldProcessMessagesUntilSessionCompleted() - { - var task = this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); + [TestMethod] + public void ProcessRequestsShouldProcessMessagesUntilSessionCompleted() + { + var task = ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - this.SendSessionEnd(); - Assert.IsTrue(task.Wait(2000)); - } + SendSessionEnd(); + Assert.IsTrue(task.Wait(2000)); + } - #region Version Check Protocol + #region Version Check Protocol - [TestMethod] - public void ProcessRequestsVersionCheckShouldAckMinimumOfGivenAndHighestSupportedVersion() - { - var message = new Message { MessageType = MessageType.VersionCheck, Payload = 1 }; - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); + [TestMethod] + public void ProcessRequestsVersionCheckShouldAckMinimumOfGivenAndHighestSupportedVersion() + { + var message = new Message { MessageType = MessageType.VersionCheck, Payload = 1 }; + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); + SendMessageOnChannel(message); - this.VerifyResponseMessageEquals(this.Serialize(message)); - this.SendSessionEnd(); - } + VerifyResponseMessageEquals(Serialize(message)); + SendSessionEnd(); + } - [TestMethod] - public void ProcessRequestsVersionCheckShouldLogErrorIfDiagnosticsEnableFails() + [TestMethod] + public void ProcessRequestsVersionCheckShouldLogErrorIfDiagnosticsEnableFails() + { + if (!string.IsNullOrEmpty(EqtTrace.LogFile)) { - if (!string.IsNullOrEmpty(EqtTrace.LogFile)) - { - // This test is no-op if diagnostics session is enabled - return; - } - EqtTrace.ErrorOnInitialization = "non-existent-error"; - var message = new Message { MessageType = MessageType.VersionCheck, Payload = 1 }; - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - - this.SendMessageOnChannel(message); - - this.VerifyResponseMessageContains(EqtTrace.ErrorOnInitialization); - this.SendSessionEnd(); + // This test is no-op if diagnostics session is enabled + return; } + EqtTrace.ErrorOnInitialization = "non-existent-error"; + var message = new Message { MessageType = MessageType.VersionCheck, Payload = 1 }; + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - #endregion + SendMessageOnChannel(message); - #region Discovery Protocol + VerifyResponseMessageContains(EqtTrace.ErrorOnInitialization); + SendSessionEnd(); + } - [TestMethod] - public void ProcessRequestsDiscoveryInitializeShouldSetExtensionPaths() - { - var message = this.dataSerializer.SerializePayload(MessageType.DiscoveryInitialize, new[] { "testadapter.dll" }); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); + #endregion - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); + #region Discovery Protocol - this.mockDiscoveryManager.Verify(d => d.Initialize(It.Is>(paths => paths.Any(p => p.Equals("testadapter.dll"))), It.IsAny())); - this.SendSessionEnd(); - } + [TestMethod] + public void ProcessRequestsDiscoveryInitializeShouldSetExtensionPaths() + { + var message = _dataSerializer.SerializePayload(MessageType.DiscoveryInitialize, new[] { "testadapter.dll" }); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - [TestMethod] - public void ProcessRequestsDiscoveryStartShouldStartDiscoveryWithGivenCriteria() - { - var message = this.dataSerializer.SerializePayload(MessageType.StartDiscovery, new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty)); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); + _jobQueue.Flush(); - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); + _mockDiscoveryManager.Verify(d => d.Initialize(It.Is>(paths => paths.Any(p => p.Equals("testadapter.dll"))), It.IsAny())); + SendSessionEnd(); + } - this.mockDiscoveryManager.Verify(d => d.DiscoverTests(It.Is(dc => dc.Sources.Contains("test.dll")), It.IsAny())); - this.SendSessionEnd(); - } + [TestMethod] + public void ProcessRequestsDiscoveryStartShouldStartDiscoveryWithGivenCriteria() + { + var message = _dataSerializer.SerializePayload(MessageType.StartDiscovery, new DiscoveryCriteria(new[] { "test.dll" }, 1, string.Empty)); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - [TestMethod] - public void DiscoveryCompleteShouldSendDiscoveryCompletePayloadOnChannel() - { - var discoveryComplete = new DiscoveryCompletePayload { TotalTests = 1, LastDiscoveredTests = Enumerable.Empty(), IsAborted = false }; - var message = this.dataSerializer.SerializePayload(MessageType.DiscoveryComplete, discoveryComplete); + SendMessageOnChannel(message); + _jobQueue.Flush(); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); + _mockDiscoveryManager.Verify(d => d.DiscoverTests(It.Is(dc => dc.Sources.Contains("test.dll")), It.IsAny())); + SendSessionEnd(); + } - this.requestHandler.DiscoveryComplete(new DiscoveryCompleteEventArgs(discoveryComplete.TotalTests, discoveryComplete.IsAborted), discoveryComplete.LastDiscoveredTests); + [TestMethod] + public void DiscoveryCompleteShouldSendDiscoveryCompletePayloadOnChannel() + { + var discoveryComplete = new DiscoveryCompletePayload { TotalTests = 1, LastDiscoveredTests = [], IsAborted = false }; + var message = _dataSerializer.SerializePayload(MessageType.DiscoveryComplete, discoveryComplete); - this.VerifyResponseMessageEquals(message); - this.SendSessionEnd(); - } + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - #endregion + _requestHandler.DiscoveryComplete(new DiscoveryCompleteEventArgs(discoveryComplete.TotalTests, discoveryComplete.IsAborted), discoveryComplete.LastDiscoveredTests); - #region Execution Protocol + VerifyResponseMessageEquals(message); + SendSessionEnd(); + } - [TestMethod] - public void ProcessRequestsExecutionInitializeShouldSetExtensionPaths() - { - var message = this.dataSerializer.SerializePayload(MessageType.ExecutionInitialize, new[] { "testadapter.dll" }); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); + #endregion - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); + #region Execution Protocol - this.mockExecutionManager.Verify(e => e.Initialize(It.Is>(paths => paths.Any(p => p.Equals("testadapter.dll"))), It.IsAny())); - this.SendSessionEnd(); - } + [TestMethod] + public void ProcessRequestsExecutionInitializeShouldSetExtensionPaths() + { + var message = _dataSerializer.SerializePayload(MessageType.ExecutionInitialize, new[] { "testadapter.dll" }); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - [TestMethod] - public void ProcessRequestsExecutionStartShouldStartExecutionWithGivenSources() - { - var asm = new Dictionary>(); - asm["mstestv2"] = new[] {"test1.dll", "test2.dll"}; - var testRunCriteriaWithSources = new TestRunCriteriaWithSources(asm, "runsettings", null, null); - var message = this.dataSerializer.SerializePayload(MessageType.StartTestExecutionWithSources, testRunCriteriaWithSources); - - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); - - mockExecutionManager.Verify(e => - e.StartTestRun( - It.Is>>(d => d.ContainsKey("mstestv2")), It.IsAny(), - It.IsAny(), - It.IsAny(), It.IsAny(), - It.IsAny())); - this.SendSessionEnd(); - } + SendMessageOnChannel(message); + _jobQueue.Flush(); - [TestMethod] - public void ProcessRequestsExecutionStartShouldStartExecutionWithGivenTests() - { - var t1 = new TestCase("N.C.M1", new Uri("executor://mstest/v2"), "test1.dll"); - var t2 = new TestCase("N.C.M2", new Uri("executor://mstest/v2"), "test1.dll"); - var testCases = new [] { t1, t2 }; - var testRunCriteriaWithTests = new TestRunCriteriaWithTests(testCases, "runsettings", null, null); - var message = this.dataSerializer.SerializePayload(MessageType.StartTestExecutionWithTests, testRunCriteriaWithTests); - - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); - - mockExecutionManager.Verify(e => - e.StartTestRun( - It.Is>(tcs => - tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M1")) && - tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M2"))), It.IsAny(), - It.IsAny(), - It.IsAny(), It.IsAny(), - It.IsAny())); - this.SendSessionEnd(); - } + _mockExecutionManager.Verify(e => e.Initialize(It.Is>(paths => paths.Any(p => p.Equals("testadapter.dll"))), It.IsAny())); + SendSessionEnd(); + } - [TestMethod] - public void ProcessRequestsExecutionCancelShouldCancelTestRun() + [TestMethod] + public void ProcessRequestsExecutionStartShouldStartExecutionWithGivenSources() + { + var asm = new Dictionary> { - var message = this.dataSerializer.SerializePayload(MessageType.CancelTestRun, string.Empty); + ["mstestv2"] = new[] { "test1.dll", "test2.dll" } + }; + var testRunCriteriaWithSources = new TestRunCriteriaWithSources(asm, "runsettings", null, null!); + var message = _dataSerializer.SerializePayload(MessageType.StartTestExecutionWithSources, testRunCriteriaWithSources); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); - mockExecutionManager.Verify(e => e.Cancel(It.IsAny())); - this.SendSessionEnd(); - } + SendMessageOnChannel(message); + _jobQueue.Flush(); - [TestMethod] - public void ProcessRequestsExecutionLaunchAdapterProcessWithDebuggerShouldSendAckMessage() - { - var message = this.dataSerializer.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, string.Empty); + _mockExecutionManager.Verify(e => + e.StartTestRun( + It.Is>>(d => d.ContainsKey("mstestv2")), It.IsAny(), + It.IsAny(), + It.IsAny(), It.IsAny(), + It.IsAny())); + SendSessionEnd(); + } - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); + [TestMethod] + public void ProcessRequestsExecutionStartShouldStartExecutionWithGivenTests() + { + var t1 = new TestCase("N.C.M1", new Uri("executor://mstest/v2"), "test1.dll"); + var t2 = new TestCase("N.C.M2", new Uri("executor://mstest/v2"), "test1.dll"); + var testCases = new[] { t1, t2 }; + var testRunCriteriaWithTests = new TestRunCriteriaWithTests(testCases, "runsettings", null, null!); + var message = _dataSerializer.SerializePayload(MessageType.StartTestExecutionWithTests, testRunCriteriaWithTests); + + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + + SendMessageOnChannel(message); + _jobQueue.Flush(); + + _mockExecutionManager.Verify(e => + e.StartTestRun( + It.Is>(tcs => + tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M1")) && + tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M2"))), It.IsAny(), + It.IsAny(), + It.IsAny(), It.IsAny(), + It.IsAny())); + SendSessionEnd(); + } - this.SendSessionEnd(); - } + [TestMethod] + public void ProcessRequestsExecutionCancelShouldCancelTestRun() + { + var message = _dataSerializer.SerializePayload(MessageType.CancelTestRun, string.Empty); - [TestMethod] - public void ProcessRequestsExecutionAbortShouldStopTestRun() - { - var message = this.dataSerializer.SerializePayload(MessageType.AbortTestRun, string.Empty); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); + _mockExecutionManager.Verify(e => e.Cancel(It.IsAny())); + SendSessionEnd(); + } - mockExecutionManager.Verify(e => e.Abort(It.IsAny())); - this.SendSessionEnd(); - } + [TestMethod] + public void ProcessRequestsExecutionLaunchAdapterProcessWithDebuggerShouldSendAckMessage() + { + var message = _dataSerializer.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, string.Empty); - [TestMethod] - public void SendExecutionCompleteShouldSendTestRunCompletePayloadOnChannel() - { - var t1 = new TestCase("N.C.M1", new Uri("executor://mstest/v2"), "test1.dll"); - var t2 = new TestCase("N.C.M2", new Uri("executor://mstest/v2"), "test1.dll"); - var testCases = new[] { t1, t2 }; - var testRunCriteriaWithTests = new TestRunCriteriaWithTests(testCases, "runsettings", null, null); - var message = this.dataSerializer.SerializePayload(MessageType.StartTestExecutionWithTests, testRunCriteriaWithTests); - this.mockExecutionManager.Setup(em => em.StartTestRun(It.IsAny>(), It.IsAny(), + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); + _jobQueue.Flush(); + + SendSessionEnd(); + } + + [TestMethod] + public void ProcessRequestsExecutionAbortShouldStopTestRun() + { + var message = _dataSerializer.SerializePayload(MessageType.AbortTestRun, string.Empty); + + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); + + _mockExecutionManager.Verify(e => e.Abort(It.IsAny())); + SendSessionEnd(); + } + + [TestMethod] + public void SendExecutionCompleteShouldSendTestRunCompletePayloadOnChannel() + { + var t1 = new TestCase("N.C.M1", new Uri("executor://mstest/v2"), "test1.dll"); + var t2 = new TestCase("N.C.M2", new Uri("executor://mstest/v2"), "test1.dll"); + var testCases = new[] { t1, t2 }; + var testRunCriteriaWithTests = new TestRunCriteriaWithTests(testCases, "runsettings", null, null!); + var message = _dataSerializer.SerializePayload(MessageType.StartTestExecutionWithTests, testRunCriteriaWithTests); + _mockExecutionManager.Setup(em => em.StartTestRun(It.IsAny>(), It.IsAny(), + It.IsAny(), + It.IsAny(), It.IsAny(), + It.IsAny())).Callback(() => _requestHandler.SendExecutionComplete(It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>())); + + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + _mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.ExecutionComplete)))) + .Callback( + (d) => + { + var msg = _dataSerializer.DeserializeMessage(d); + var payload = _dataSerializer.DeserializePayload(msg); + Assert.IsNotNull(payload); + }); + SendMessageOnChannel(message); + _jobQueue.Flush(); + + _mockExecutionManager.Verify(e => + e.StartTestRun( + It.Is>(tcs => + tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M1")) && + tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M2"))), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), - It.IsAny())).Callback(() => - { - this.requestHandler.SendExecutionComplete(It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny>()); - }); - - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.ExecutionComplete)))) - .Callback( - (d) => - { - var msg = this.dataSerializer.DeserializeMessage(d); - var payload = this.dataSerializer.DeserializePayload(msg); - Assert.IsNotNull(payload); - }); - this.SendMessageOnChannel(message); - this.jobQueue.Flush(); - - mockExecutionManager.Verify(e => - e.StartTestRun( - It.Is>(tcs => - tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M1")) && - tcs.Any(t => t.FullyQualifiedName.Equals("N.C.M2"))), It.IsAny(), - It.IsAny(), - It.IsAny(), It.IsAny(), - It.IsAny())); - this.SendSessionEnd(); - } + It.IsAny())); + SendSessionEnd(); + } - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldSendProcessInformationOnChannel() - { - var message = this.dataSerializer.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, "123"); - - this.mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.LaunchAdapterProcessWithDebuggerAttached)))) - .Callback( - (d) => - { - var msg = this.dataSerializer.DeserializeMessage(d); - var payload = this.dataSerializer.DeserializePayload(msg); - Assert.IsNotNull(payload); - this.SendMessageOnChannel(message); - this.SendSessionEnd(); - }); - - var task = Task.Run(() => this.requestHandler.LaunchProcessWithDebuggerAttached(new TestProcessStartInfo())); - } + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldSendProcessInformationOnChannel() + { + var message = _dataSerializer.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, "123"); + + _mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.LaunchAdapterProcessWithDebuggerAttached)))) + .Callback( + (d) => + { + var msg = _dataSerializer.DeserializeMessage(d); + var payload = _dataSerializer.DeserializePayload(msg); + Assert.IsNotNull(payload); + SendMessageOnChannel(message); + SendSessionEnd(); + }); + + var task = Task.Run(() => _requestHandler.LaunchProcessWithDebuggerAttached(new TestProcessStartInfo())); + } - [TestMethod] - public void LaunchProcessWithDebuggerAttachedShouldWaitForProcessIdFromRunner() - { - var message = dataSerializer.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, "123"); - - this.mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.LaunchAdapterProcessWithDebuggerAttached)))) - .Callback( - (d) => - { - var msg = this.dataSerializer.DeserializeMessage(d); - var payload = this.dataSerializer.DeserializePayload(msg); - Assert.IsNotNull(payload); - this.SendMessageOnChannel(message); - this.SendSessionEnd(); - }); - - var task = Task.Run(() => this.requestHandler.LaunchProcessWithDebuggerAttached(new TestProcessStartInfo())); - - Assert.AreEqual(123, task.Result); - } - #endregion + [TestMethod] + public void LaunchProcessWithDebuggerAttachedShouldWaitForProcessIdFromRunner() + { + var message = _dataSerializer.SerializePayload(MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback, "123"); + + _mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.LaunchAdapterProcessWithDebuggerAttached)))) + .Callback( + (d) => + { + var msg = _dataSerializer.DeserializeMessage(d); + var payload = _dataSerializer.DeserializePayload(msg); + Assert.IsNotNull(payload); + SendMessageOnChannel(message); + SendSessionEnd(); + }); + + var task = Task.Run(() => _requestHandler.LaunchProcessWithDebuggerAttached(new TestProcessStartInfo())); + + Assert.AreEqual(123, task.Result); + } + #endregion - #region Logging Protocol - [TestMethod] - public void SendLogShouldSendTestMessageWithLevelOnChannel() - { - var logMsg = "Testing log message on channel"; + #region Logging Protocol + [TestMethod] + public void SendLogShouldSendTestMessageWithLevelOnChannel() + { + var logMsg = "Testing log message on channel"; - this.mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.TestMessage)))) - .Callback( - (d) => - { - var msg = this.dataSerializer.DeserializeMessage(d); - var payload = this.dataSerializer.DeserializePayload(msg); - Assert.IsNotNull(payload); - Assert.AreEqual(payload.Message, logMsg); - }); + _mockChannel.Setup(mc => mc.Send(It.Is(d => d.Contains(MessageType.TestMessage)))) + .Callback( + (d) => + { + var msg = _dataSerializer.DeserializeMessage(d); + var payload = _dataSerializer.DeserializePayload(msg); + Assert.IsNotNull(payload); + Assert.AreEqual(payload.Message, logMsg); + }); - this.requestHandler.SendLog(TestMessageLevel.Informational, "Testing log message on channel"); + _requestHandler.SendLog(TestMessageLevel.Informational, "Testing log message on channel"); - this.SendSessionEnd(); - } - #endregion + SendSessionEnd(); + } + #endregion - [TestMethod] - public void ProcessRequestsEndSessionShouldCloseRequestHandler() - { + [TestMethod] + public void ProcessRequestsEndSessionShouldCloseRequestHandler() + { - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendSessionEnd(); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendSessionEnd(); - this.mockCommunicationClient.Verify(mc=>mc.Stop(), Times.Once); - } + _mockCommunicationClient.Verify(mc => mc.Stop(), Times.Once); + } - [TestMethod] - public void ProcessRequestsAbortSessionShouldBeNoOp() - { - var message = dataSerializer.SerializePayload(MessageType.SessionAbort, string.Empty); + [TestMethod] + public void ProcessRequestsAbortSessionShouldBeNoOp() + { + var message = _dataSerializer.SerializePayload(MessageType.SessionAbort, string.Empty); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); - // Session abort should not close the client - this.mockCommunicationClient.Verify(mc => mc.Stop(), Times.Never); - } + // Session abort should not close the client + _mockCommunicationClient.Verify(mc => mc.Stop(), Times.Never); + } - [TestMethod] - public void ProcessRequestsInvalidMessageTypeShouldNotThrow() - { - var message = dataSerializer.SerializePayload("DummyMessage", string.Empty); + [TestMethod] + public void ProcessRequestsInvalidMessageTypeShouldNotThrow() + { + var message = _dataSerializer.SerializePayload("DummyMessage", string.Empty); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); - this.SendSessionEnd(); - } + SendSessionEnd(); + } - [TestMethod] - public void ProcessRequestsInvalidMessageTypeShouldProcessFutureMessages() - { - var message = dataSerializer.SerializePayload("DummyMessage", string.Empty); + [TestMethod] + public void ProcessRequestsInvalidMessageTypeShouldProcessFutureMessages() + { + var message = _dataSerializer.SerializePayload("DummyMessage", string.Empty); - this.ProcessRequestsAsync(this.mockTestHostManagerFactory.Object); - this.SendMessageOnChannel(message); + ProcessRequestsAsync(_mockTestHostManagerFactory.Object); + SendMessageOnChannel(message); - // Should process this message, after the invalid message - this.SendSessionEnd(); - this.mockCommunicationClient.Verify(mc => mc.Stop(), Times.Once); - } + // Should process this message, after the invalid message + SendSessionEnd(); + _mockCommunicationClient.Verify(mc => mc.Stop(), Times.Once); + } - [TestMethod] - public void DisposeShouldStopCommunicationChannel() - { - var testRequestHandler = this.requestHandler as TestRequestHandler; - Assert.IsNotNull(testRequestHandler); + [TestMethod] + public void DisposeShouldStopCommunicationChannel() + { + var testRequestHandler = _requestHandler as TestRequestHandler; + Assert.IsNotNull(testRequestHandler); - testRequestHandler.Dispose(); + testRequestHandler.Dispose(); - this.mockCommunicationClient.Verify(mc => mc.Stop(), Times.Once); - } + _mockCommunicationClient.Verify(mc => mc.Stop(), Times.Once); + } - private void SendMessageOnChannel(Message message) - { - // Setup message to be returned on deserialization of data - var data = this.Serialize(message); - this.SendMessageOnChannel(data); - } + private void SendMessageOnChannel(Message message) + { + // Setup message to be returned on deserialization of data + var data = Serialize(message); + SendMessageOnChannel(data); + } - private void SendMessageOnChannel(string data) - { - this.mockChannel.Raise(c => c.MessageReceived += null, new MessageReceivedEventArgs { Data = data }); - } + private void SendMessageOnChannel(string data) + { + _mockChannel.Object.MessageReceived.Notify( + _mockChannel.Object, + new MessageReceivedEventArgs { Data = data }, + "TestRequestHandlerTests.SendMessageOnChannel()"); + } - private void SendSessionEnd() - { - this.SendMessageOnChannel(new Message { MessageType = MessageType.SessionEnd, Payload = string.Empty }); - } + private void SendSessionEnd() + { + SendMessageOnChannel(new Message { MessageType = MessageType.SessionEnd, Payload = string.Empty }); + } - private Task ProcessRequestsAsync() - { - return Task.Run(() => this.requestHandler.ProcessRequests(new Mock().Object)); - } + private Task ProcessRequestsAsync() + { + return Task.Run(() => _requestHandler.ProcessRequests(new Mock().Object)); + } - private Task ProcessRequestsAsync(ITestHostManagerFactory testHostManagerFactory) - { - return Task.Run(() => this.requestHandler.ProcessRequests(testHostManagerFactory)); - } + private Task ProcessRequestsAsync(ITestHostManagerFactory testHostManagerFactory) + { + return Task.Run(() => _requestHandler.ProcessRequests(testHostManagerFactory)); + } - private string Serialize(Message message) - { - return this.dataSerializer.SerializePayload(message.MessageType, message.Payload); - } + private string Serialize(Message message) + { + return _dataSerializer.SerializePayload(message.MessageType, message.Payload); + } - private void VerifyResponseMessageEquals(string message) - { - this.mockChannel.Verify(mc => mc.Send(It.Is(s => s.Equals(message)))); - } + private void VerifyResponseMessageEquals(string message) + { + _mockChannel.Verify(mc => mc.Send(It.Is(s => s.Equals(message)))); + } - private void VerifyResponseMessageContains(string message) - { - this.mockChannel.Verify(mc => mc.Send(It.Is(s => s.Contains(message)))); - } + private void VerifyResponseMessageContains(string message) + { + _mockChannel.Verify(mc => mc.Send(It.Is(s => s.Contains(message)))); } +} - public class TestableTestRequestHandler : TestRequestHandler - { - public TestableTestRequestHandler( - TestHostConnectionInfo testHostConnectionInfo, - ICommunicationEndpointFactory communicationEndpointFactory, - IDataSerializer dataSerializer, - JobQueue jobQueue) - : base( - testHostConnectionInfo, - communicationEndpointFactory, - dataSerializer, - jobQueue, - OnLaunchAdapterProcessWithDebuggerAttachedAckReceived, - OnAttachDebuggerAckRecieved) - { - } +public class TestableTestRequestHandler : TestRequestHandler +{ + public TestableTestRequestHandler( + TestHostConnectionInfo testHostConnectionInfo, + ICommunicationEndpointFactory communicationEndpointFactory, + IDataSerializer dataSerializer, + JobQueue jobQueue) + : base( + testHostConnectionInfo, + communicationEndpointFactory, + dataSerializer, + jobQueue, + OnLaunchAdapterProcessWithDebuggerAttachedAckReceived, + OnAttachDebuggerAckRecieved) + { + } - private static void OnLaunchAdapterProcessWithDebuggerAttachedAckReceived(Message message) - { - Assert.AreEqual(message.MessageType, MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback); - } + private static void OnLaunchAdapterProcessWithDebuggerAttachedAckReceived(Message message) + { + Assert.AreEqual(message.MessageType, MessageType.LaunchAdapterProcessWithDebuggerAttachedCallback); + } - private static void OnAttachDebuggerAckRecieved(Message message) - { - Assert.AreEqual(message.MessageType, MessageType.AttachDebuggerCallback); - } + private static void OnAttachDebuggerAckRecieved(Message message) + { + Assert.AreEqual(message.MessageType, MessageType.AttachDebuggerCallback); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/BaseRunTestsTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/BaseRunTestsTests.cs index c93cdf16e3..4f7194fd83 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/BaseRunTestsTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/BaseRunTestsTests.cs @@ -1,1093 +1,1052 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Execution +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.IO; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using OMTestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Execution; + +[TestClass] +public class BaseRunTestsTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Reflection; - - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using OMTestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; - - using Moq; - using Microsoft.TestPlatform.TestUtilities; - - [TestClass] - public class BaseRunTestsTests + private const string BaseRunTestsExecutorUri = "executor://BaseRunTestsExecutor/"; + private const string BadBaseRunTestsExecutorUri = "executor://BadBaseRunTestsExecutor/"; + + private readonly TestExecutionContext _testExecutionContext; + private readonly Mock _mockTestRunEventsHandler; + private readonly Mock _mockTestPlatformEventSource; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockDataSerializer; + + private Mock _mockThread; + private TestableBaseRunTests _runTestsInstance; + private TestRunChangedEventArgs? _receivedRunStatusArgs; + private TestRunCompleteEventArgs? _receivedRunCompleteArgs; + private ICollection? _receivedattachments; + private ICollection? _receivedExecutorUris; + private TestCase? _inProgressTestCase; + + public BaseRunTestsTests() { - private const string BaseRunTestsExecutorUri = "executor://BaseRunTestsExecutor/"; - private const string BadBaseRunTestsExecutorUri = "executor://BadBaseRunTestsExecutor/"; - - private TestExecutionContext testExecutionContext; - private Mock mockTestRunEventsHandler; - - private TestableBaseRunTests runTestsInstance; - - private Mock mockTestPlatformEventSource; - private Mock mockThread; - - private Mock mockRequestData; - - private Mock mockMetricsCollection; - - private Mock mockDataSerializer; - - private TestRunChangedEventArgs receivedRunStatusArgs; - private TestRunCompleteEventArgs receivedRunCompleteArgs; - private ICollection receivedattachments; - private ICollection receivedExecutorUris; - private TestCase inProgressTestCase; - - public BaseRunTestsTests() - { - this.testExecutionContext = new TestExecutionContext( - frequencyOfRunStatsChangeEvent: 100, - runStatsChangeEventTimeout: TimeSpan.MaxValue, - inIsolation: false, - keepAlive: false, - isDataCollectionEnabled: false, - areTestCaseLevelEventsRequired: false, - hasTestRun: false, - isDebug: false, - testCaseFilter: string.Empty, - filterOptions: null); - this.mockTestRunEventsHandler = new Mock(); - - this.mockTestPlatformEventSource = new Mock(); - - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockThread = new Mock(); - this.mockDataSerializer = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - - this.runTestsInstance = new TestableBaseRunTests( - this.mockRequestData.Object, - null, - null, - this.testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockTestPlatformEventSource.Object, - null, - new PlatformThread(), - this.mockDataSerializer.Object); - - TestPluginCacheHelper.SetupMockExtensions(new string[] { typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location }, () => { }); - } + _testExecutionContext = new TestExecutionContext( + frequencyOfRunStatsChangeEvent: 100, + runStatsChangeEventTimeout: TimeSpan.MaxValue, + inIsolation: false, + keepAlive: false, + isDataCollectionEnabled: false, + areTestCaseLevelEventsRequired: false, + hasTestRun: false, + isDebug: false, + testCaseFilter: string.Empty, + filterOptions: null); + _mockTestRunEventsHandler = new Mock(); + + _mockTestPlatformEventSource = new Mock(); + + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockThread = new Mock(); + _mockDataSerializer = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + + _runTestsInstance = new TestableBaseRunTests( + _mockRequestData.Object, + null, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockTestPlatformEventSource.Object, + null, + new PlatformThread(), + _mockDataSerializer.Object); + + TestPluginCacheHelper.SetupMockExtensions([typeof(BaseRunTestsTests).Assembly.Location], () => { }); + } - [TestCleanup] - public void Cleanup() - { - TestExecutorExtensionManager.Destroy(); - TestPluginCacheHelper.ResetExtensionsCache(); - } + [TestCleanup] + public void Cleanup() + { + TestExecutorExtensionManager.Destroy(); + TestPluginCacheHelper.ResetExtensionsCache(); + } - #region Constructor tests + #region Constructor tests - [TestMethod] - public void ConstructorShouldInitializeRunContext() - { - var runContext = this.runTestsInstance.GetRunContext; - Assert.IsNotNull(runContext); - Assert.IsFalse(runContext.KeepAlive); - Assert.IsFalse(runContext.InIsolation); - Assert.IsFalse(runContext.IsDataCollectionEnabled); - Assert.IsFalse(runContext.IsBeingDebugged); - } + [TestMethod] + public void ConstructorShouldInitializeRunContext() + { + var runContext = _runTestsInstance.GetRunContext; + Assert.IsNotNull(runContext); + Assert.IsFalse(runContext.KeepAlive); + Assert.IsFalse(runContext.InIsolation); + Assert.IsFalse(runContext.IsDataCollectionEnabled); + Assert.IsFalse(runContext.IsBeingDebugged); + } - [TestMethod] - public void ConstructorShouldInitializeFrameworkHandle() - { - var frameworkHandle = this.runTestsInstance.GetFrameworkHandle; - Assert.IsNotNull(frameworkHandle); - } + [TestMethod] + public void ConstructorShouldInitializeFrameworkHandle() + { + var frameworkHandle = _runTestsInstance.GetFrameworkHandle; + Assert.IsNotNull(frameworkHandle); + } - [TestMethod] - public void ConstructorShouldInitializeExecutorUrisThatRanTests() - { - var executorUris = this.runTestsInstance.GetExecutorUrisThatRanTests; - Assert.IsNotNull(executorUris); - } + [TestMethod] + public void ConstructorShouldInitializeExecutorUrisThatRanTests() + { + var executorUris = _runTestsInstance.GetExecutorUrisThatRanTests; + Assert.IsNotNull(executorUris); + } - #endregion + #endregion - #region RunTests tests + #region RunTests tests - [TestMethod] - public void RunTestsShouldRaiseTestRunCompleteWithAbortedAsTrueOnException() - { - TestRunCompleteEventArgs receivedCompleteArgs = null; + [TestMethod] + public void RunTestsShouldRaiseTestRunCompleteWithAbortedAsTrueOnException() + { + TestRunCompleteEventArgs? receivedCompleteArgs = null; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { throw new NotImplementedException(); }; - this.mockTestRunEventsHandler.Setup( + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => throw new NotImplementedException(); + _mockTestRunEventsHandler.Setup( treh => - treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - ( - TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedCompleteArgs = complete; - }); - - this.runTestsInstance.RunTests(); - - Assert.IsNotNull(receivedCompleteArgs); - Assert.IsTrue(receivedCompleteArgs.IsAborted); - } + treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + ( + TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedCompleteArgs = complete); + + _runTestsInstance.RunTests(); + + Assert.IsNotNull(receivedCompleteArgs); + Assert.IsTrue(receivedCompleteArgs.IsAborted); + } - [TestMethod] - public void RunTestsShouldNotThrowIfExceptionIsAFileNotFoundException() - { - TestRunCompleteEventArgs receivedCompleteArgs = null; + [TestMethod] + public void RunTestsShouldNotThrowIfExceptionIsAFileNotFoundException() + { + TestRunCompleteEventArgs? receivedCompleteArgs = null; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { throw new FileNotFoundException(); }; - this.mockTestRunEventsHandler.Setup( + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => throw new FileNotFoundException(); + _mockTestRunEventsHandler.Setup( treh => - treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - ( - TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedCompleteArgs = complete; - }); - - // This should not throw. - this.runTestsInstance.RunTests(); - - Assert.IsNotNull(receivedCompleteArgs); - Assert.IsTrue(receivedCompleteArgs.IsAborted); - } + treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + ( + TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedCompleteArgs = complete); + + // This should not throw. + _runTestsInstance.RunTests(); + + Assert.IsNotNull(receivedCompleteArgs); + Assert.IsTrue(receivedCompleteArgs.IsAborted); + } - [TestMethod] - public void RunTestsShouldNotThrowIfExceptionIsAnArgumentException() - { - TestRunCompleteEventArgs receivedCompleteArgs = null; + [TestMethod] + public void RunTestsShouldNotThrowIfExceptionIsAnArgumentException() + { + TestRunCompleteEventArgs? receivedCompleteArgs = null; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { throw new ArgumentException(); }; - this.mockTestRunEventsHandler.Setup( + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => throw new ArgumentException(); + _mockTestRunEventsHandler.Setup( treh => - treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - ( - TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedCompleteArgs = complete; - }); - - // This should not throw. - this.runTestsInstance.RunTests(); - - Assert.IsNotNull(receivedCompleteArgs); - Assert.IsTrue(receivedCompleteArgs.IsAborted); - } + treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + ( + TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedCompleteArgs = complete); + + // This should not throw. + _runTestsInstance.RunTests(); + + Assert.IsNotNull(receivedCompleteArgs); + Assert.IsTrue(receivedCompleteArgs.IsAborted); + } - [TestMethod] - public void RunTestsShouldAbortIfExecutorUriExtensionMapIsNull() - { - TestRunCompleteEventArgs receivedCompleteArgs = null; + [TestMethod] + public void RunTestsShouldAbortIfExecutorUriExtensionMapIsNull() + { + TestRunCompleteEventArgs? receivedCompleteArgs = null; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return null; }; - this.mockTestRunEventsHandler.Setup( + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => null; + _mockTestRunEventsHandler.Setup( treh => - treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - ( - TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedCompleteArgs = complete; - }); - - // This should not throw. - this.runTestsInstance.RunTests(); - - Assert.IsNotNull(receivedCompleteArgs); - Assert.IsTrue(receivedCompleteArgs.IsAborted); - } + treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + ( + TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedCompleteArgs = complete); + + // This should not throw. + _runTestsInstance.RunTests(); + + Assert.IsNotNull(receivedCompleteArgs); + Assert.IsTrue(receivedCompleteArgs.IsAborted); + } - [TestMethod] - public void RunTestsShouldInvokeTheTestExecutorIfAdapterAssemblyIsKnown() + [TestMethod] + public void RunTestsShouldInvokeTheTestExecutorIfAdapterAssemblyIsKnown() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; - LazyExtension receivedExecutor = null; + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + LazyExtension? receivedExecutor = null; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - receivedExecutor = executor; - }; + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => receivedExecutor = executor; - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - Assert.IsNotNull(receivedExecutor); - Assert.AreEqual(BaseRunTestsExecutorUri, receivedExecutor.Metadata.ExtensionUri); - } + Assert.IsNotNull(receivedExecutor); + Assert.AreEqual(BaseRunTestsExecutorUri, receivedExecutor.Metadata.ExtensionUri); + } - [TestMethod] - public void RunTestsShouldInvokeTheTestExecutorIfAdapterAssemblyIsUnknown() + [TestMethod] + public void RunTestsShouldInvokeTheTestExecutorIfAdapterAssemblyIsUnknown() + { + var executorUriExtensionMap = new List> { - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BaseRunTestsExecutorUri), Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants.UnspecifiedAdapterPath) - }; - LazyExtension receivedExecutor = null; + new(new Uri(BaseRunTestsExecutorUri), Constants.UnspecifiedAdapterPath) + }; + LazyExtension? receivedExecutor = null; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - receivedExecutor = executor; - }; + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => receivedExecutor = executor; - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - Assert.IsNotNull(receivedExecutor); - Assert.AreEqual(BaseRunTestsExecutorUri, receivedExecutor.Metadata.ExtensionUri); - } + Assert.IsNotNull(receivedExecutor); + Assert.AreEqual(BaseRunTestsExecutorUri, receivedExecutor.Metadata.ExtensionUri); + } - [TestMethod] - public void RunTestsShouldInstrumentExecutionStart() - { - this.runTestsInstance.RunTests(); + [TestMethod] + public void RunTestsShouldInstrumentExecutionStart() + { + _runTestsInstance.RunTests(); - this.mockTestPlatformEventSource.Verify(x => x.ExecutionStart(), Times.Once); - } + _mockTestPlatformEventSource.Verify(x => x.ExecutionStart(), Times.Once); + } - [TestMethod] - public void RunTestsShouldInstrumentExecutionStop() - { - this.SetupExecutorUriMock(); + [TestMethod] + public void RunTestsShouldInstrumentExecutionStop() + { + SetupExecutorUriMock(); - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - this.mockTestPlatformEventSource.Verify(x => x.ExecutionStop(It.IsAny()), Times.Once); - } + _mockTestPlatformEventSource.Verify(x => x.ExecutionStop(It.IsAny()), Times.Once); + } - [TestMethod] - public void RunTestsShouldInstrumentAdapterExecutionStart() - { - this.SetupExecutorUriMock(); + [TestMethod] + public void RunTestsShouldInstrumentAdapterExecutionStart() + { + SetupExecutorUriMock(); - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - this.mockTestPlatformEventSource.Verify(x => x.AdapterExecutionStart(It.IsAny()), Times.AtLeastOnce); - } + _mockTestPlatformEventSource.Verify(x => x.AdapterExecutionStart(It.IsAny()), Times.AtLeastOnce); + } - [TestMethod] - public void RunTestsShouldInstrumentAdapterExecutionStop() - { - this.SetupExecutorUriMock(); + [TestMethod] + public void RunTestsShouldInstrumentAdapterExecutionStop() + { + SetupExecutorUriMock(); - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - this.mockTestPlatformEventSource.Verify(x => x.AdapterExecutionStop(It.IsAny()), Times.AtLeastOnce); - } + _mockTestPlatformEventSource.Verify(x => x.AdapterExecutionStop(It.IsAny()), Times.AtLeastOnce); + } - [TestMethod] - public void RunTestsShouldReportAWarningIfExecutorUriIsNotDefinedInExtensionAssembly() + [TestMethod] + public void RunTestsShouldReportAWarningIfExecutorUriIsNotDefinedInExtensionAssembly() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri("executor://nonexistent/"), assemblyLocation) - }; - LazyExtension receivedExecutor = null; - - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - receivedExecutor = executor; - }; - - this.runTestsInstance.RunTests(); + new(new Uri("executor://nonexistent/"), assemblyLocation) + }; + LazyExtension? receivedExecutor = null; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => receivedExecutor = executor; + + _runTestsInstance.RunTests(); + + var expectedWarningMessageFormat = + "Could not find test executor with URI '{0}'. Make sure that the test executor is installed and supports .net runtime version {1}."; + + // var runtimeVersion = string.Concat(PlatformServices.Default.Runtime.RuntimeType, " ", + // PlatformServices.Default.Runtime.RuntimeVersion); + var runtimeVersion = " "; + + var expectedWarningMessage = string.Format( + CultureInfo.InvariantCulture, + expectedWarningMessageFormat, + "executor://nonexistent/", + runtimeVersion); + _mockTestRunEventsHandler.Verify( + treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedWarningMessage), Times.Once); + + // Should not have been called. + Assert.IsNull(receivedExecutor); + } - var expectedWarningMessageFormat = - "Could not find test executor with URI '{0}'. Make sure that the test executor is installed and supports .net runtime version {1}."; + [TestMethod] + public void RunTestsShouldNotAddExecutorUriToExecutorUriListIfNoTestsAreRun() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> + { + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; - // var runtimeVersion = string.Concat(PlatformServices.Default.Runtime.RuntimeType, " ", - // PlatformServices.Default.Runtime.RuntimeVersion); - var runtimeVersion = " "; + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; - var expectedWarningMessage = string.Format( - expectedWarningMessageFormat, - "executor://nonexistent/", - runtimeVersion); - this.mockTestRunEventsHandler.Verify( - treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedWarningMessage), Times.Once); + _runTestsInstance.RunTests(); - // Should not have been called. - Assert.IsNull(receivedExecutor); - } + Assert.AreEqual(0, _runTestsInstance.GetExecutorUrisThatRanTests.Count); + } - [TestMethod] - public void RunTestsShouldNotAddExecutorUriToExecutorUriListIfNoTestsAreRun() + [TestMethod] + public void RunTestsShouldAddExecutorUriToExecutorUriListIfExecutorHasRunTests() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + var testResult = new OMTestResult(testCase); + _runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); }; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; + _runTestsInstance.RunTests(); - this.runTestsInstance.RunTests(); + var expectedUris = new string[] { BaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture) }; + CollectionAssert.AreEqual(expectedUris, _runTestsInstance.GetExecutorUrisThatRanTests.ToArray()); + } - Assert.AreEqual(0, this.runTestsInstance.GetExecutorUrisThatRanTests.Count); - } + [TestMethod] + public void RunTestsShouldReportWarningIfExecutorThrowsAnException() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> + { + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => throw new ArgumentException("Test influenced."); + + _runTestsInstance.RunTests(); + + var messageFormat = "An exception occurred while invoking executor '{0}': {1}"; + var message = string.Format(CultureInfo.InvariantCulture, messageFormat, BaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture), "Test influenced."); + _mockTestRunEventsHandler.Verify( + treh => treh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.StartsWith(message))), + Times.Once); + + // Also validate that a test run complete is called. + _mockTestRunEventsHandler.Verify( + treh => treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>()), Times.Once); + } - [TestMethod] - public void RunTestsShouldAddExecutorUriToExecutorUriListIfExecutorHasRunTests() + [TestMethod] + public void RunTestsShouldNotFailOtherExecutorsRunIfOneExecutorThrowsAnException() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> + new(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; - - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => + if (string.Equals(BadBaseRunTestsExecutorUri, executor.Metadata.ExtensionUri)) + { + throw new Exception(); + } + else { var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - this.runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); - }; - - this.runTestsInstance.RunTests(); - - var expectedUris = new string[] { BaseRunTestsExecutorUri.ToLower() }; - CollectionAssert.AreEqual(expectedUris, this.runTestsInstance.GetExecutorUrisThatRanTests.ToArray()); - } - - [TestMethod] - public void RunTestsShouldReportWarningIfExecutorThrowsAnException() - { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + var testResult = new OMTestResult(testCase); + _runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); + } }; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - throw new ArgumentException("Test influenced."); - }; - - this.runTestsInstance.RunTests(); - - var messageFormat = "An exception occurred while invoking executor '{0}': {1}"; - var message = string.Format(messageFormat, BaseRunTestsExecutorUri.ToLower(), "Test influenced."); - this.mockTestRunEventsHandler.Verify( - treh => treh.HandleLogMessage(TestMessageLevel.Error, It.Is(s => s.StartsWith(message))), - Times.Once); - - // Also validate that a test run complete is called. - this.mockTestRunEventsHandler.Verify( - treh => treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>()), Times.Once); - } - - [TestMethod] - public void RunTestsShouldNotFailOtherExecutorsRunIfOneExecutorThrowsAnException() - { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; + _runTestsInstance.RunTests(); - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - if (string.Equals(BadBaseRunTestsExecutorUri, executor.Metadata.ExtensionUri)) - { - throw new Exception(); - } - else - { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - this.runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); - } - }; - - this.runTestsInstance.RunTests(); - - var expectedUris = new string[] { BaseRunTestsExecutorUri.ToLower() }; - CollectionAssert.AreEqual(expectedUris, this.runTestsInstance.GetExecutorUrisThatRanTests.ToArray()); - } + var expectedUris = new string[] { BaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture) }; + CollectionAssert.AreEqual(expectedUris, _runTestsInstance.GetExecutorUrisThatRanTests.ToArray()); + } - [TestMethod] - public void RunTestsShouldIterateThroughAllExecutors() + [TestMethod] + public void RunTestsShouldIterateThroughAllExecutors() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> + new(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => { - new Tuple(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + var testResult = new OMTestResult(testCase); + _runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); }; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - this.runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); - }; - - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - var expectedUris = new string[] { BadBaseRunTestsExecutorUri.ToLower(), BaseRunTestsExecutorUri.ToLower() }; - CollectionAssert.AreEqual(expectedUris, this.runTestsInstance.GetExecutorUrisThatRanTests.ToArray()); - } + var expectedUris = new string[] { BadBaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture), BaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture) }; + CollectionAssert.AreEqual(expectedUris, _runTestsInstance.GetExecutorUrisThatRanTests.ToArray()); + } - [TestMethod] - public void RunTestsShouldRaiseTestRunComplete() - { - this.SetUpTestRunEvents(); - - // Act. - this.runTestsInstance.RunTests(); - - // Test run complete assertions. - Assert.IsNotNull(receivedRunCompleteArgs); - Assert.IsNull(receivedRunCompleteArgs.Error); - Assert.IsFalse(receivedRunCompleteArgs.IsAborted); - Assert.AreEqual(this.runTestsInstance.GetTestRunCache.TestRunStatistics.ExecutedTests, receivedRunCompleteArgs.TestRunStatistics.ExecutedTests); - - // Test run changed event assertions - Assert.IsNotNull(receivedRunStatusArgs); - Assert.AreEqual(this.runTestsInstance.GetTestRunCache.TestRunStatistics.ExecutedTests, receivedRunStatusArgs.TestRunStatistics.ExecutedTests); - Assert.IsNotNull(receivedRunStatusArgs.NewTestResults); - Assert.IsTrue(receivedRunStatusArgs.NewTestResults.Any()); - Assert.IsTrue(receivedRunStatusArgs.ActiveTests == null || !receivedRunStatusArgs.ActiveTests.Any()); - - // Attachments - Assert.IsNotNull(receivedattachments); - - // Executor Uris - var expectedUris = new string[] { BadBaseRunTestsExecutorUri.ToLower(), BaseRunTestsExecutorUri.ToLower() }; - CollectionAssert.AreEqual(expectedUris, receivedExecutorUris.ToArray()); - } + [TestMethod] + public void RunTestsShouldRaiseTestRunComplete() + { + SetUpTestRunEvents(); + + // Act. + _runTestsInstance.RunTests(); + + // Test run complete assertions. + Assert.IsNotNull(_receivedRunCompleteArgs); + Assert.IsNull(_receivedRunCompleteArgs.Error); + Assert.IsFalse(_receivedRunCompleteArgs.IsAborted); + Assert.AreEqual(_runTestsInstance.GetTestRunCache.TestRunStatistics.ExecutedTests, _receivedRunCompleteArgs.TestRunStatistics!.ExecutedTests); + + // Test run changed event assertions + Assert.IsNotNull(_receivedRunStatusArgs); + Assert.AreEqual(_runTestsInstance.GetTestRunCache.TestRunStatistics.ExecutedTests, _receivedRunStatusArgs.TestRunStatistics!.ExecutedTests); + Assert.IsNotNull(_receivedRunStatusArgs.NewTestResults); + Assert.IsTrue(_receivedRunStatusArgs.NewTestResults.Any()); + Assert.IsTrue(_receivedRunStatusArgs.ActiveTests == null || !_receivedRunStatusArgs.ActiveTests.Any()); + + // Attachments + Assert.IsNotNull(_receivedattachments); + + // Executor Uris + var expectedUris = new string[] { BadBaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture), BaseRunTestsExecutorUri.ToLower(CultureInfo.InvariantCulture) }; + CollectionAssert.AreEqual(expectedUris, _receivedExecutorUris!.ToArray()); + } - [TestMethod] - public void RunTestsShouldNotCloneTestCaseAndTestResultsObjectForNonPackageSource() - { - this.SetUpTestRunEvents(); + [TestMethod] + public void RunTestsShouldNotCloneTestCaseAndTestResultsObjectForNonPackageSource() + { + SetUpTestRunEvents(); - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - this.mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Never); - this.mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Never); - } + _mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Never); + _mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Never); + } - [TestMethod] - public void RunTestsShouldUpdateTestResultsTestCaseSourceWithPackageIfTestSourceIsPackage() - { - const string package = @"C:\Projects\UnitTestApp1\AppPackages\UnitTestApp1\UnitTestApp1_1.0.0.0_Win32_Debug_Test\UnitTestApp1_1.0.0.0_Win32_Debug.appx"; - this.SetUpTestRunEvents(package); + [TestMethod] + public void RunTestsShouldUpdateTestResultsTestCaseSourceWithPackageIfTestSourceIsPackage() + { + const string package = @"C:\Projects\UnitTestApp1\AppPackages\UnitTestApp1\UnitTestApp1_1.0.0.0_Win32_Debug_Test\UnitTestApp1_1.0.0.0_Win32_Debug.appx"; + SetUpTestRunEvents(package); - // Act. - this.runTestsInstance.RunTests(); + // Act. + _runTestsInstance.RunTests(); - // Test run changed event assertions - Assert.IsNotNull(receivedRunStatusArgs.NewTestResults); - Assert.IsTrue(receivedRunStatusArgs.NewTestResults.Any()); + // Test run changed event assertions + Assert.IsNotNull(_receivedRunStatusArgs?.NewTestResults); + Assert.IsTrue(_receivedRunStatusArgs.NewTestResults.Any()); - // verify TC.Source is updated with package - foreach (var tr in receivedRunStatusArgs.NewTestResults) - { - Assert.AreEqual(tr.TestCase.Source, package); - } + // verify TC.Source is updated with package + foreach (var tr in _receivedRunStatusArgs.NewTestResults) + { + Assert.AreEqual(tr.TestCase.Source, package); } + } - [TestMethod] - public void RunTestsShouldUpdateActiveTestCasesSourceWithPackageIfTestSourceIsPackage() - { - const string package = @"C:\Porjects\UnitTestApp3\Debug\UnitTestApp3\UnitTestApp3.build.appxrecipe"; - this.mockDataSerializer.Setup(d => d.Clone(It.IsAny())) - .Returns(t => JsonDataSerializer.Instance.Clone(t)); - this.SetUpTestRunEvents(package, setupHandleTestRunComplete: false); + [TestMethod] + public void RunTestsShouldUpdateActiveTestCasesSourceWithPackageIfTestSourceIsPackage() + { + const string package = @"C:\Porjects\UnitTestApp3\Debug\UnitTestApp3\UnitTestApp3.build.appxrecipe"; + _mockDataSerializer.Setup(d => d.Clone(It.IsAny())) + .Returns(t => JsonDataSerializer.Instance.Clone(t)); + SetUpTestRunEvents(package, setupHandleTestRunComplete: false); - // Act. - this.runTestsInstance.RunTests(); + // Act. + _runTestsInstance.RunTests(); - Assert.IsNotNull(receivedRunStatusArgs.ActiveTests); - Assert.AreEqual(1, receivedRunStatusArgs.ActiveTests.Count()); + Assert.IsNotNull(_receivedRunStatusArgs?.ActiveTests); + Assert.AreEqual(1, _receivedRunStatusArgs.ActiveTests.Count()); - foreach (var tc in receivedRunStatusArgs.ActiveTests) - { - Assert.AreEqual(tc.Source, package); - } + foreach (var tc in _receivedRunStatusArgs.ActiveTests) + { + Assert.AreEqual(tc.Source, package); } + } - [TestMethod] - public void RunTestsShouldCloneTheActiveTestCaseObjectsIfTestSourceIsPackage() - { - const string package = @"C:\Porjects\UnitTestApp3\Debug\UnitTestApp3\UnitTestApp3.build.appxrecipe"; + [TestMethod] + public void RunTestsShouldCloneTheActiveTestCaseObjectsIfTestSourceIsPackage() + { + const string package = @"C:\Porjects\UnitTestApp3\Debug\UnitTestApp3\UnitTestApp3.build.appxrecipe"; - this.SetUpTestRunEvents(package, setupHandleTestRunComplete: false); + SetUpTestRunEvents(package, setupHandleTestRunComplete: false); - // Act. - this.runTestsInstance.RunTests(); + // Act. + _runTestsInstance.RunTests(); - Assert.IsNotNull(receivedRunStatusArgs.ActiveTests); - Assert.AreEqual(1, receivedRunStatusArgs.ActiveTests.Count()); + Assert.IsNotNull(_receivedRunStatusArgs?.ActiveTests); + Assert.AreEqual(1, _receivedRunStatusArgs.ActiveTests.Count()); - this.mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Exactly(2)); - } + _mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Exactly(2)); + } - [TestMethod] - public void RunTestsShouldCloneTheTestResultsObjectsIfTestSourceIsPackage() - { - const string package = @"C:\Porjects\UnitTestApp3\Debug\UnitTestApp3\UnitTestApp3.build.appxrecipe"; + [TestMethod] + public void RunTestsShouldCloneTheTestResultsObjectsIfTestSourceIsPackage() + { + const string package = @"C:\Porjects\UnitTestApp3\Debug\UnitTestApp3\UnitTestApp3.build.appxrecipe"; - this.SetUpTestRunEvents(package, setupHandleTestRunComplete: false); + SetUpTestRunEvents(package, setupHandleTestRunComplete: false); - // Act. - this.runTestsInstance.RunTests(); + // Act. + _runTestsInstance.RunTests(); - Assert.IsNotNull(receivedRunStatusArgs.NewTestResults); - Assert.AreEqual(1, receivedRunStatusArgs.ActiveTests.Count()); + Assert.IsNotNull(_receivedRunStatusArgs?.NewTestResults); + Assert.AreEqual(1, _receivedRunStatusArgs.ActiveTests!.Count()); - this.mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Exactly(2)); - } + _mockDataSerializer.Verify(d => d.Clone(It.IsAny()), Times.Exactly(2)); + } - [TestMethod] - public void RunTestsShouldNotifyItsImplementersOfAnyExceptionThrownByTheExecutors() + [TestMethod] + public void RunTestsShouldNotifyItsImplementersOfAnyExceptionThrownByTheExecutors() + { + bool? isExceptionThrown = null; + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - bool? isExceptionThrown = null; - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - throw new Exception(); - }; - this.runTestsInstance.BeforeRaisingTestRunCompleteCallback = (isEx) => { isExceptionThrown = isEx; }; + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => throw new Exception(); + _runTestsInstance.BeforeRaisingTestRunCompleteCallback = (isEx) => isExceptionThrown = isEx; - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - Assert.IsTrue(isExceptionThrown.HasValue && isExceptionThrown.Value); - } + Assert.IsTrue(isExceptionThrown.HasValue && isExceptionThrown.Value); + } - [TestMethod] - public void RunTestsShouldReportLogMessagesFromExecutors() + [TestMethod] + public void RunTestsShouldReportLogMessagesFromExecutors() + { + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriTuple, runcontext, frameworkHandle) => - { - frameworkHandle.SendMessage(TestMessageLevel.Error, "DummyMessage"); - }; + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriTuple, runcontext, frameworkHandle) => frameworkHandle.SendMessage(TestMessageLevel.Error, "DummyMessage"); - this.runTestsInstance.RunTests(); + _runTestsInstance.RunTests(); - this.mockTestRunEventsHandler.Verify(re => re.HandleLogMessage(TestMessageLevel.Error, "DummyMessage")); - } + _mockTestRunEventsHandler.Verify(re => re.HandleLogMessage(TestMessageLevel.Error, "DummyMessage")); + } - [TestMethod] - public void RunTestsShouldCreateSTAThreadIfExecutionThreadApartmentStateIsSTA() - { - this.SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.STA); - this.runTestsInstance.RunTests(); - this.mockThread.Verify(t => t.Run(It.IsAny(), PlatformApartmentState.STA, true)); - } + [TestMethod] + public void RunTestsShouldCreateStaThreadIfExecutionThreadApartmentStateIsSta() + { + SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.STA); + _runTestsInstance.RunTests(); + _mockThread.Verify(t => t.Run(It.IsAny(), PlatformApartmentState.STA, true)); + } - [TestMethod] - public void RunTestsShouldSendMetricsOnTestRunComplete() - { - TestRunCompleteEventArgs receivedRunCompleteArgs = null; - var mockMetricsCollector = new Mock(); - - var dict = new Dictionary(); - dict.Add("DummyMessage", "DummyValue"); - - // Setup mocks. - mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - - this.mockTestRunEventsHandler.Setup( - treh => - treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - ( - TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedRunCompleteArgs = complete; - }); - - // Act. - this.runTestsInstance.RunTests(); - - // Assert. - Assert.IsNotNull(receivedRunCompleteArgs.Metrics); - Assert.IsTrue(receivedRunCompleteArgs.Metrics.Any()); - Assert.IsTrue(receivedRunCompleteArgs.Metrics.ContainsKey("DummyMessage")); - } + [TestMethod] + public void RunTestsShouldSendMetricsOnTestRunComplete() + { + TestRunCompleteEventArgs? receivedRunCompleteArgs = null; + var mockMetricsCollector = new Mock(); - [TestMethod] - public void RunTestsShouldCollectMetrics() + var dict = new Dictionary { - var mockMetricsCollector = new Mock(); - var dict = new Dictionary(); - dict.Add("DummyMessage", "DummyValue"); - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; - - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - this.runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); - }; - mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - - // Act. - this.runTestsInstance.RunTests(); - - // Verify. - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsRun, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.RunState, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(string.Concat(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, ".", new Uri(BadBaseRunTestsExecutorUri)), It.IsAny()), Times.Once); - mockMetricsCollector.Verify(rd => rd.Add(string.Concat(TelemetryDataConstants.TotalTestsRanByAdapter, ".", new Uri(BadBaseRunTestsExecutorUri)), It.IsAny()), Times.Once); - } + { "DummyMessage", "DummyValue" } + }; - [TestMethod] - public void RunTestsShouldNotCreateThreadIfExecutionThreadApartmentStateIsMTA() - { - this.SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.MTA); - this.runTestsInstance.RunTests(); + // Setup mocks. + mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); - this.mockThread.Verify(t => t.Run(It.IsAny(), PlatformApartmentState.STA, true), Times.Never); - } + _mockTestRunEventsHandler.Setup( + treh => + treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + ( + TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedRunCompleteArgs = complete); + + // Act. + _runTestsInstance.RunTests(); + + // Assert. + Assert.IsNotNull(receivedRunCompleteArgs?.Metrics); + Assert.IsTrue(receivedRunCompleteArgs.Metrics.Any()); + Assert.IsTrue(receivedRunCompleteArgs.Metrics.ContainsKey("DummyMessage")); + } - [TestMethod] - public void RunTestsShouldRunTestsInMTAThreadWhenRunningInSTAThreadFails() + [TestMethod] + public void RunTestsShouldCollectMetrics() + { + var mockMetricsCollector = new Mock(); + var dict = new Dictionary { - this.SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.STA); - this.mockThread.Setup( - mt => mt.Run(It.IsAny(), PlatformApartmentState.STA, It.IsAny())).Throws(); - bool isInvokeExecutorCalled = false; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriTuple, runcontext, frameworkHandle) => - { - isInvokeExecutorCalled = true; - }; - this.runTestsInstance.RunTests(); - - Assert.IsTrue(isInvokeExecutorCalled, "InvokeExecutor() should be called when STA thread creation fails."); - this.mockThread.Verify(t => t.Run(It.IsAny(), PlatformApartmentState.STA, true), Times.Once); - } - - [TestMethod] - public void CancelShouldCreateSTAThreadIfExecutionThreadApartmentStateIsSTA() + { "DummyMessage", "DummyValue" } + }; + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - this.SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.STA); - this.mockThread.Setup(mt => mt.Run(It.IsAny(), PlatformApartmentState.STA, It.IsAny())) - .Callback((action, start, waitForCompletion) => - { - if (waitForCompletion) - { - // Callback for RunTests(). - this.runTestsInstance.Cancel(); - } - }); + new(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => + { + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + var testResult = new OMTestResult(testCase); + _runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); + }; + mockMetricsCollector.Setup(mc => mc.Metrics).Returns(dict); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollector.Object); + + // Act. + _runTestsInstance.RunTests(); + + // Verify. + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TotalTestsRun, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.RunState, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(string.Concat(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, ".", new Uri(BadBaseRunTestsExecutorUri)), It.IsAny()), Times.Once); + mockMetricsCollector.Verify(rd => rd.Add(string.Concat(TelemetryDataConstants.TotalTestsRanByAdapter, ".", new Uri(BadBaseRunTestsExecutorUri)), It.IsAny()), Times.Once); + } - this.runTestsInstance.RunTests(); - this.mockThread.Verify( - t => t.Run(It.IsAny(), PlatformApartmentState.STA, It.IsAny()), - Times.Exactly(2), - "Both RunTests() and Cancel() should create STA thread."); - } + [TestMethod] + public void RunTestsShouldNotCreateThreadIfExecutionThreadApartmentStateIsMta() + { + SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.MTA); + _runTestsInstance.RunTests(); - #endregion + _mockThread.Verify(t => t.Run(It.IsAny(), PlatformApartmentState.STA, true), Times.Never); + } - #region Private Methods + [TestMethod] + public void RunTestsShouldRunTestsInMtaThreadWhenRunningInStaThreadFails() + { + SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.STA); + _mockThread.Setup( + mt => mt.Run(It.IsAny(), PlatformApartmentState.STA, It.IsAny())).Throws(); + bool isInvokeExecutorCalled = false; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriTuple, runcontext, frameworkHandle) => isInvokeExecutorCalled = true; + _runTestsInstance.RunTests(); + + Assert.IsTrue(isInvokeExecutorCalled, "InvokeExecutor() should be called when STA thread creation fails."); + _mockThread.Verify(t => t.Run(It.IsAny(), PlatformApartmentState.STA, true), Times.Once); + } - private void SetupExecutorUriMock() - { - var executorUriExtensionMap = new List> + [TestMethod] + public void CancelShouldCreateStaThreadIfExecutionThreadApartmentStateIsSta() + { + SetupForExecutionThreadApartmentStateTests(PlatformApartmentState.STA); + _mockThread.Setup(mt => mt.Run(It.IsAny(), PlatformApartmentState.STA, It.IsAny())) + .Callback((action, start, waitForCompletion) => { - new Tuple(new Uri(BaseRunTestsExecutorUri), Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants.UnspecifiedAdapterPath) - }; - LazyExtension receivedExecutor = null; - - // Setup mocks. - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => + if (waitForCompletion) { - receivedExecutor = executor; - }; - } + // Callback for RunTests(). + _runTestsInstance.Cancel(); + } + }); + + _runTestsInstance.RunTests(); + _mockThread.Verify( + t => t.Run(It.IsAny(), PlatformApartmentState.STA, It.IsAny()), + Times.Exactly(2), + "Both RunTests() and Cancel() should create STA thread."); + } - private void SetupForExecutionThreadApartmentStateTests(PlatformApartmentState apartmentState) + #endregion + + #region Private Methods + + private void SetupExecutorUriMock() + { + var executorUriExtensionMap = new List> { - this.mockThread = new Mock(); + new(new Uri(BaseRunTestsExecutorUri), Constants.UnspecifiedAdapterPath) + }; + LazyExtension? receivedExecutor = null; + + // Setup mocks. + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => receivedExecutor = executor; + } - this.runTestsInstance = new TestableBaseRunTests( - this.mockRequestData.Object, - null, - $@" + private void SetupForExecutionThreadApartmentStateTests(PlatformApartmentState apartmentState) + { + _mockThread = new Mock(); + + _runTestsInstance = new TestableBaseRunTests( + _mockRequestData.Object, + null, + $@" {apartmentState} ", - this.testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockTestPlatformEventSource.Object, - null, - this.mockThread.Object, - this.mockDataSerializer.Object); - - TestPluginCacheHelper.SetupMockExtensions(new string[] { typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location }, () => { }); - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> - { - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) - }; - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockTestPlatformEventSource.Object, + null, + _mockThread.Object, + _mockDataSerializer.Object); + + TestPluginCacheHelper.SetupMockExtensions([typeof(BaseRunTestsTests).Assembly.Location], () => { }); + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> + { + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + } + + [MemberNotNull(nameof(_runTestsInstance))] + private void SetUpTestRunEvents(string? package = null, bool setupHandleTestRunComplete = true) + { + if (setupHandleTestRunComplete) + { + SetupHandleTestRunComplete(); + } + else + { + SetupHandleTestRunStatsChange(); } - private void SetUpTestRunEvents(string package = null, bool setupHandleTestRunComplete = true) + SetupDataSerializer(); + + _runTestsInstance = _runTestsInstance = new TestableBaseRunTests( + _mockRequestData.Object, + package, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockTestPlatformEventSource.Object, + null, + new PlatformThread(), + _mockDataSerializer.Object); + + var assemblyLocation = typeof(BaseRunTestsTests).Assembly.Location; + var executorUriExtensionMap = new List> { - if (setupHandleTestRunComplete) - { - this.SetupHandleTestRunComplete(); - } - else - { - this.SetupHandleTestRunStatsChange(); - } + new(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), + new(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + }; - this.SetupDataSerializer(); + // Setup mocks. + SetupExecutorCallback(executorUriExtensionMap); + } - this.runTestsInstance = this.runTestsInstance = new TestableBaseRunTests( - this.mockRequestData.Object, - package, - null, - this.testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockTestPlatformEventSource.Object, - null, - new PlatformThread(), - this.mockDataSerializer.Object); - - var assemblyLocation = typeof(BaseRunTestsTests).GetTypeInfo().Assembly.Location; - var executorUriExtensionMap = new List> + private void SetupExecutorCallback(List> executorUriExtensionMap) + { + _runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => executorUriExtensionMap; + _runTestsInstance.InvokeExecutorCallback = + (executor, executorUriExtensionTuple, runContext, frameworkHandle) => { - new Tuple(new Uri(BadBaseRunTestsExecutorUri), assemblyLocation), - new Tuple(new Uri(BaseRunTestsExecutorUri), assemblyLocation) + var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); + var testResult = new OMTestResult(testCase); + _inProgressTestCase = new TestCase("x.y.z2", new Uri("uri://dummy"), "x.dll"); + + _runTestsInstance.GetTestRunCache.OnTestStarted(_inProgressTestCase); + _runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); }; + } - // Setup mocks. - this.SetupExecutorCallback(executorUriExtensionMap); - } + private void SetupDataSerializer() + { + _mockDataSerializer.Setup(d => d.Clone(It.IsAny())) + .Returns(t => JsonDataSerializer.Instance.Clone(t)); - private void SetupExecutorCallback(List> executorUriExtensionMap) - { - this.runTestsInstance.GetExecutorUriExtensionMapCallback = (fh, rc) => { return executorUriExtensionMap; }; - this.runTestsInstance.InvokeExecutorCallback = - (executor, executorUriExtensionTuple, runContext, frameworkHandle) => - { - var testCase = new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll"); - var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - this.inProgressTestCase = new TestCase("x.y.z2", new Uri("uri://dummy"), "x.dll"); + _mockDataSerializer.Setup(d => d.Clone(It.IsAny())) + .Returns(t => JsonDataSerializer.Instance.Clone(t)); + } - this.runTestsInstance.GetTestRunCache.OnTestStarted(inProgressTestCase); - this.runTestsInstance.GetTestRunCache.OnNewTestResult(testResult); - }; - } + private void SetupHandleTestRunStatsChange() + { + _testExecutionContext.FrequencyOfRunStatsChangeEvent = 2; + _mockTestRunEventsHandler + .Setup(treh => treh.HandleTestRunStatsChange(It.IsAny())) + .Callback((TestRunChangedEventArgs stats) => _receivedRunStatusArgs = stats); + } - private void SetupDataSerializer() - { - this.mockDataSerializer.Setup(d => d.Clone(It.IsAny())) - .Returns(t => JsonDataSerializer.Instance.Clone(t)); + private void SetupHandleTestRunComplete() + { + _mockTestRunEventsHandler.Setup( + treh => + treh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + ( + TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => + { + _receivedRunCompleteArgs = complete; + _receivedRunStatusArgs = stats; + _receivedattachments = attachments; + _receivedExecutorUris = executorUris; + }); + } - this.mockDataSerializer.Setup(d => d.Clone(It.IsAny())) - .Returns(t => JsonDataSerializer.Instance.Clone(t)); - } + #endregion - private void SetupHandleTestRunStatsChange() - { - this.testExecutionContext.FrequencyOfRunStatsChangeEvent = 2; - this.mockTestRunEventsHandler - .Setup(treh => treh.HandleTestRunStatsChange(It.IsAny())) - .Callback((TestRunChangedEventArgs stats) => { receivedRunStatusArgs = stats; }); - } + #region Testable Implementation - private void SetupHandleTestRunComplete() + private class TestableBaseRunTests : BaseRunTests + { + public TestableBaseRunTests( + IRequestData requestData, + string? package, + string? runSettings, + TestExecutionContext testExecutionContext, + ITestCaseEventsHandler? testCaseEventsHandler, + IInternalTestRunEventsHandler testRunEventsHandler, + ITestPlatformEventSource testPlatformEventSource, + ITestEventsPublisher? testEventsPublisher, + IThread platformThread, + IDataSerializer dataSerializer) + : base( + requestData, + package, + runSettings, + testExecutionContext, + testCaseEventsHandler, + testRunEventsHandler, + testPlatformEventSource, + testEventsPublisher, + platformThread, + dataSerializer) { - this.mockTestRunEventsHandler.Setup( - treh => - treh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - ( - TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedRunCompleteArgs = complete; - this.receivedRunStatusArgs = stats; - receivedattachments = attachments; - receivedExecutorUris = executorUris; - }); + _testCaseEventsHandler = testCaseEventsHandler; } - #endregion + private readonly ITestCaseEventsHandler? _testCaseEventsHandler; - #region Testable Implementation + public Action? BeforeRaisingTestRunCompleteCallback { get; set; } - private class TestableBaseRunTests : BaseRunTests - { - public TestableBaseRunTests( - IRequestData requestData, - string package, - string runSettings, - TestExecutionContext testExecutionContext, - ITestCaseEventsHandler testCaseEventsHandler, - ITestRunEventsHandler testRunEventsHandler, - ITestPlatformEventSource testPlatformEventSource, - ITestEventsPublisher testEventsPublisher, - IThread platformThread, - IDataSerializer dataSerializer) - : base( - requestData, - package, - runSettings, - testExecutionContext, - testCaseEventsHandler, - testRunEventsHandler, - testPlatformEventSource, - testEventsPublisher, - platformThread, - dataSerializer) - { - this.testCaseEventsHandler = testCaseEventsHandler; - } - - private ITestCaseEventsHandler testCaseEventsHandler; - - public Action BeforeRaisingTestRunCompleteCallback { get; set; } - - public Func>> GetExecutorUriExtensionMapCallback { get; set; } + public Func>?>? GetExecutorUriExtensionMapCallback { get; set; } - public - Action - , Tuple, RunContext, - IFrameworkHandle> InvokeExecutorCallback - { get; set; } + public Action, Tuple, RunContext, IFrameworkHandle>? InvokeExecutorCallback { get; set; } - /// - /// Gets the run settings. - /// - public string GetRunSettings => this.RunSettings; + /// + /// Gets the run settings. + /// + public string? GetRunSettings => RunSettings; - /// - /// Gets the test execution context. - /// - public TestExecutionContext GetTestExecutionContext => this.TestExecutionContext; + /// + /// Gets the test execution context. + /// + public TestExecutionContext GetTestExecutionContext => TestExecutionContext; - /// - /// Gets the test run events handler. - /// - public ITestRunEventsHandler GetTestRunEventsHandler => this.TestRunEventsHandler; + /// + /// Gets the test run events handler. + /// + public IInternalTestRunEventsHandler GetTestRunEventsHandler => TestRunEventsHandler; - /// - /// Gets the test run cache. - /// - public ITestRunCache GetTestRunCache => this.TestRunCache; + /// + /// Gets the test run cache. + /// + public ITestRunCache GetTestRunCache => TestRunCache; - public bool GetIsCancellationRequested => this.IsCancellationRequested; + public bool GetIsCancellationRequested => IsCancellationRequested; - public RunContext GetRunContext => this.RunContext; + public RunContext GetRunContext => RunContext; - public FrameworkHandle GetFrameworkHandle => this.FrameworkHandle; + public FrameworkHandle GetFrameworkHandle => FrameworkHandle; - public ICollection GetExecutorUrisThatRanTests => this.ExecutorUrisThatRanTests; + public ICollection GetExecutorUrisThatRanTests => ExecutorUrisThatRanTests; - protected override void BeforeRaisingTestRunComplete(bool exceptionsHitDuringRunTests) - { - this.BeforeRaisingTestRunCompleteCallback?.Invoke(exceptionsHitDuringRunTests); - } + protected override void BeforeRaisingTestRunComplete(bool exceptionsHitDuringRunTests) + { + BeforeRaisingTestRunCompleteCallback?.Invoke(exceptionsHitDuringRunTests); + } - protected override IEnumerable> GetExecutorUriExtensionMap(IFrameworkHandle testExecutorFrameworkHandle, RunContext runContext) - { - return this.GetExecutorUriExtensionMapCallback?.Invoke(testExecutorFrameworkHandle, runContext); - } + protected override IEnumerable>? GetExecutorUriExtensionMap(IFrameworkHandle testExecutorFrameworkHandle, RunContext runContext) + { + return GetExecutorUriExtensionMapCallback?.Invoke(testExecutorFrameworkHandle, runContext); + } - protected override void InvokeExecutor(LazyExtension executor, Tuple executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle) - { - this.InvokeExecutorCallback?.Invoke(executor, executorUriExtensionTuple, runContext, frameworkHandle); - } + protected override void InvokeExecutor(LazyExtension executor, Tuple executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle) + { + InvokeExecutorCallback?.Invoke(executor, executorUriExtensionTuple, runContext, frameworkHandle); + } - protected override void SendSessionEnd() - { - this.testCaseEventsHandler?.SendSessionEnd(); - } + protected override void SendSessionEnd() + { + _testCaseEventsHandler?.SendSessionEnd(); + } - protected override void SendSessionStart() - { - this.testCaseEventsHandler?.SendSessionStart(new Dictionary { { "TestSources", new List() { "1.dll" } } }); - } + protected override void SendSessionStart() + { + _testCaseEventsHandler?.SendSessionStart(new Dictionary { { "TestSources", new List() { "1.dll" } } }); + } - protected override bool ShouldAttachDebuggerToTestHost( - LazyExtension executor, - Tuple executorUri, - RunContext runContext) - { - return false; - } + protected override bool ShouldAttachDebuggerToTestHost( + LazyExtension executor, + Tuple executorUri, + RunContext runContext) + { + return false; } + } - [ExtensionUri(BaseRunTestsExecutorUri)] - private class TestExecutor : ITestExecutor + [ExtensionUri(BaseRunTestsExecutorUri)] + private class TestExecutor : ITestExecutor + { + public void Cancel() { - public void Cancel() - { - } + } - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - } + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + } - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - } + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { } + } - [ExtensionUri(BadBaseRunTestsExecutorUri)] - private class BadTestExecutor : ITestExecutor + [ExtensionUri(BadBaseRunTestsExecutorUri)] + private class BadTestExecutor : ITestExecutor + { + public void Cancel() { - public void Cancel() - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); + } - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); + } - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); } + } - #endregion + #endregion - } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/ExecutionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/ExecutionManagerTests.cs index ce5d24ea30..bea628a470 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/ExecutionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/ExecutionManagerTests.cs @@ -1,455 +1,485 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Execution +using System; +using System.Collections.Generic; +using System.Xml; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; +using FluentAssertions; + +using static TestPlatform.CrossPlatEngine.UnitTests.Execution.RunTestsWithSourcesTests; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Execution; + +[TestClass] +public class ExecutionManagerTests { - using System; - using System.Collections.Generic; - using System.Reflection; - using System.Xml; - - using Microsoft.TestPlatform.TestUtilities; - - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using static RunTestsWithSourcesTests; - - [TestClass] - public class ExecutionManagerTests + private readonly ExecutionManager _executionManager; + private readonly TestExecutionContext _testExecutionContext; + private readonly Mock _mockRequestData; + private readonly TestSessionMessageLogger _sessionLogger; + + public ExecutionManagerTests() { - private ExecutionManager executionManager; - private TestExecutionContext testExecutionContext; - private Mock mockRequestData; - private TestSessionMessageLogger sessionLogger; + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); + _sessionLogger = TestSessionMessageLogger.Instance; + _executionManager = new ExecutionManager(new RequestData + { + MetricsCollection = new NoOpMetricsCollection() + }); + + TestPluginCache.Instance = null; + + _testExecutionContext = new TestExecutionContext( + frequencyOfRunStatsChangeEvent: 1, + runStatsChangeEventTimeout: TimeSpan.MaxValue, + inIsolation: false, + keepAlive: false, + isDataCollectionEnabled: false, + areTestCaseLevelEventsRequired: false, + hasTestRun: false, + isDebug: false, + testCaseFilter: null, + filterOptions: null); + } + + [TestCleanup] + public void TestCleanup() + { + RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = null; + RunTestWithSourcesExecutor.RunTestsWithTestsCallback = null; + + TestDiscoveryExtensionManager.Destroy(); + TestExecutorExtensionManager.Destroy(); + SettingsProviderExtensionManager.Destroy(); + } + + [TestMethod] + public void InitializeShouldLoadAndInitializeAllExtensions() + { + var commonAssemblyLocation = typeof(ExecutionManagerTests).Assembly.Location; + var mockTestMessageEventHandler = new Mock(); + TestPluginCacheHelper.SetupMockExtensions( + [commonAssemblyLocation], + () => { }); + + + _executionManager.Initialize(new List { commonAssemblyLocation }, mockTestMessageEventHandler.Object); + + Assert.IsNotNull(TestPluginCache.Instance.TestExtensions); + + // Executors + Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestExecutors!.Count > 0); + var allExecutors = TestExecutorExtensionManager.Create().TestExtensions; - [TestInitialize] - public void TestInit() + foreach (var executor in allExecutors) { - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection()); - this.sessionLogger = TestSessionMessageLogger.Instance; - this.executionManager = new ExecutionManager(new RequestData - { - MetricsCollection = new NoOpMetricsCollection() - }); - - TestPluginCache.Instance = null; - - testExecutionContext = new TestExecutionContext( - frequencyOfRunStatsChangeEvent: 1, - runStatsChangeEventTimeout: TimeSpan.MaxValue, - inIsolation: false, - keepAlive: false, - isDataCollectionEnabled: false, - areTestCaseLevelEventsRequired: false, - hasTestRun: false, - isDebug: false, - testCaseFilter: null, - filterOptions: null); + Assert.IsTrue(executor.IsExtensionCreated); } - [TestCleanup] - public void TestCleanup() - { - RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = null; - RunTestWithSourcesExecutor.RunTestsWithTestsCallback = null; + // Settings Providers + Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestSettingsProviders!.Count > 0); + var settingsProviders = SettingsProviderExtensionManager.Create().SettingsProvidersMap.Values; - TestDiscoveryExtensionManager.Destroy(); - TestExecutorExtensionManager.Destroy(); - SettingsProviderExtensionManager.Destroy(); + foreach (var provider in settingsProviders) + { + Assert.IsTrue(provider.IsExtensionCreated); } + } - [TestMethod] - public void InitializeShouldLoadAndInitializeAllExtensions() - { - var commonAssemblyLocation = typeof(ExecutionManagerTests).GetTypeInfo().Assembly.Location; - var mockTestMessageEventHandler = new Mock(); - TestPluginCacheHelper.SetupMockExtensions( - new string[] { commonAssemblyLocation }, - () => { }); + [TestMethod] + public void InitializeShouldClearMetricsCollection() + { + var metricsCollection = new MetricsCollection(); + metricsCollection.Add("metric", "value"); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(metricsCollection); + _mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(true); - this.executionManager.Initialize(new List { commonAssemblyLocation }, mockTestMessageEventHandler.Object); + var discoveryManager = new ExecutionManager(_mockRequestData.Object); - Assert.IsNotNull(TestPluginCache.Instance.TestExtensions); + metricsCollection.Metrics.Should().ContainKey("metric"); + discoveryManager.Initialize(null, new Mock().Object); + metricsCollection.Metrics.Should().BeEmpty(); + } - // Executors - Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestExecutors.Count > 0); - var allExecutors = TestExecutorExtensionManager.Create().TestExtensions; + [TestMethod] + public void InitializeShouldNotFailIfMetricsFieldIsNull() + { + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); - foreach (var executor in allExecutors) - { - Assert.IsTrue(executor.IsExtensionCreated); - } + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - // Settings Providers - Assert.IsTrue(TestPluginCache.Instance.TestExtensions.TestSettingsProviders.Count > 0); - var settingsProviders = SettingsProviderExtensionManager.Create().SettingsProvidersMap.Values; + mockRequestData.Object.MetricsCollection.Metrics.Should().BeNull(); - foreach (var provider in settingsProviders) - { - Assert.IsTrue(provider.IsExtensionCreated); - } - } + var action = () => (new ExecutionManager(mockRequestData.Object)) + .Initialize(null, new Mock().Object); - [TestMethod] - public void StartTestRunShouldRunTestsInTheProvidedSources() - { - var assemblyLocation = typeof(ExecutionManagerTests).GetTypeInfo().Assembly.Location; - TestPluginCacheHelper.SetupMockExtensions( - new string[] { assemblyLocation }, - () => { }); - TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - - - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add(assemblyLocation, new List { assemblyLocation }); - - var mockTestRunEventsHandler = new Mock(); - - var isExecutorCalled = false; - RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = (s, rc, fh) => - { - isExecutorCalled = true; - var tr = - new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult( - new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestCase( - "A.C.M", - new Uri("e://d/"), - "A.dll")); - fh.RecordResult(tr); - }; - - this.executionManager.StartTestRun(adapterSourceMap, null, null, testExecutionContext, null, mockTestRunEventsHandler.Object); - - Assert.IsTrue(isExecutorCalled); - mockTestRunEventsHandler.Verify( - treh => treh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>()), Times.Once); - - // Also verify that run stats are passed through. - mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunStatsChange(It.IsAny()), Times.Once); - } + action.Should().NotThrow(); + } + + [TestMethod] + public void StartTestRunShouldRunTestsInTheProvidedSources() + { + var assemblyLocation = typeof(ExecutionManagerTests).Assembly.Location; + TestPluginCacheHelper.SetupMockExtensions( + [assemblyLocation], + () => { }); + TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); + TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - [TestMethod] - public void StartTestRunShouldRunTestsForTheProvidedTests() + + var adapterSourceMap = new Dictionary> { - var assemblyLocation = typeof(ExecutionManagerTests).GetTypeInfo().Assembly.Location; - - var tests = new List - { - new TestCase("A.C.M1", new Uri(RunTestsWithSourcesTestsExecutorUri), assemblyLocation) - }; - - var mockTestRunEventsHandler = new Mock(); - - var isExecutorCalled = false; - RunTestWithSourcesExecutor.RunTestsWithTestsCallback = (s, rc, fh) => - { - isExecutorCalled = true; - var tr = - new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult( - new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestCase( - "A.C.M", - new Uri(RunTestsWithSourcesTestsExecutorUri), - "A.dll")); - fh.RecordResult(tr); - }; - TestPluginCacheHelper.SetupMockExtensions(new string[] { assemblyLocation }, () => { }); - - - this.executionManager.StartTestRun(tests, null, null, testExecutionContext, null, mockTestRunEventsHandler.Object); - - Assert.IsTrue(isExecutorCalled); - mockTestRunEventsHandler.Verify( - treh => treh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>()), Times.Once); - - // Also verify that run stats are passed through. - mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunStatsChange(It.IsAny()), Times.Once); - } + { assemblyLocation, new List { assemblyLocation } } + }; - [TestMethod] - public void StartTestRunShouldAbortTheRunIfAnyExceptionComesForTheProvidedTests() + var mockTestRunEventsHandler = new Mock(); + + var isExecutorCalled = false; + RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = (s, rc, fh) => { - var mockTestRunEventsHandler = new Mock(); + isExecutorCalled = true; + var tr = + new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult( + new TestCase( + "A.C.M", + new Uri("e://d/"), + "A.dll")); + fh!.RecordResult(tr); + }; + + _executionManager.StartTestRun(adapterSourceMap, null, null, _testExecutionContext, null, mockTestRunEventsHandler.Object); + + Assert.IsTrue(isExecutorCalled); + mockTestRunEventsHandler.Verify( + treh => treh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>()), Times.Once); + + // Also verify that run stats are passed through. + mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunStatsChange(It.IsAny()), Times.Once); + } - // Call StartTestRun with faulty runsettings so that it will throw exception - this.executionManager.StartTestRun(new List(), null, @"-1", testExecutionContext, null, mockTestRunEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldRunTestsForTheProvidedTests() + { + var assemblyLocation = typeof(ExecutionManagerTests).Assembly.Location; - // Verify that TestRunComplete get called and error message are getting logged - mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once); - mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + var tests = new List + { + new("A.C.M1", new Uri(RunTestsWithSourcesTestsExecutorUri), assemblyLocation) + }; - [TestMethod] - public void StartTestRunShouldAbortTheRunIfAnyExceptionComesForTheProvidedSources() + var mockTestRunEventsHandler = new Mock(); + + var isExecutorCalled = false; + RunTestWithSourcesExecutor.RunTestsWithTestsCallback = (s, rc, fh) => { - var mockTestRunEventsHandler = new Mock(); + isExecutorCalled = true; + var tr = + new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult( + new TestCase( + "A.C.M", + new Uri(RunTestsWithSourcesTestsExecutorUri), + "A.dll")); + fh!.RecordResult(tr); + }; + TestPluginCacheHelper.SetupMockExtensions([assemblyLocation], () => { }); + + + _executionManager.StartTestRun(tests, null, null, _testExecutionContext, null, mockTestRunEventsHandler.Object); + + Assert.IsTrue(isExecutorCalled); + mockTestRunEventsHandler.Verify( + treh => treh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>()), Times.Once); + + // Also verify that run stats are passed through. + mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunStatsChange(It.IsAny()), Times.Once); + } - // Call StartTestRun with faulty runsettings so that it will throw exception - this.executionManager.StartTestRun(new Dictionary>(), null, @"-1", testExecutionContext, null, mockTestRunEventsHandler.Object); + [TestMethod] + public void StartTestRunShouldAbortTheRunIfAnyExceptionComesForTheProvidedTests() + { + var mockTestRunEventsHandler = new Mock(); - // Verify that TestRunComplete get called and error message are getting logged - mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once); - mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + // Call StartTestRun with faulty runsettings so that it will throw exception + _executionManager.StartTestRun(new List(), null, @"-1", _testExecutionContext, null, mockTestRunEventsHandler.Object); - //[TestMethod] - //public void InitializeShouldVerifyWarningMessageIfAdapterFailedToLoad() - //{ - // var assemblyLocation = typeof(ExecutionManagerTests).GetTypeInfo().Assembly.Location; - // var mockLogger = new Mock(); - // TestPluginCacheHelper.SetupMockExtensions( - // new string[] { assemblyLocation }, - // () => { }); - // //Act - // this.executionManager.Initialize(new List { assemblyLocation }, mockLogger.Object); - - // //when handler instance returns warning - // sessionLogger.SendMessage(TestMessageLevel.Warning, "verify that it is downgraded to warning"); - - // // Verify. - // mockLogger.Verify(rd => rd.HandleLogMessage(TestMessageLevel.Warning, "verify that it is downgraded to warning"), Times.Once); - //} - - [TestMethod] - public void InitializeShouldVerifyTheHandlerInitializationWhenAdapterIsFailedToLoad() - { - var mockLogger = new Mock(); + // Verify that TestRunComplete get called and error message are getting logged + mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once); + mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - //when handler instance is null - sessionLogger.SendMessage(It.IsAny(), "verify that the HandleLogMessage method will not be invoked when handler is not initialized"); + [TestMethod] + public void StartTestRunShouldAbortTheRunIfAnyExceptionComesForTheProvidedSources() + { + var mockTestRunEventsHandler = new Mock(); - // Verify. - mockLogger.Verify(rd => rd.HandleLogMessage(It.IsAny(), "verify that the HandleLogMessage method will not be invoked when handler is not initialized"), Times.Never); - } + // Call StartTestRun with faulty runsettings so that it will throw exception + _executionManager.StartTestRun(new Dictionary>(), null, @"-1", _testExecutionContext, null, mockTestRunEventsHandler.Object); + + // Verify that TestRunComplete get called and error message are getting logged + mockTestRunEventsHandler.Verify(treh => treh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once); + mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } + + //[TestMethod] + //public void InitializeShouldVerifyWarningMessageIfAdapterFailedToLoad() + //{ + // var assemblyLocation = typeof(ExecutionManagerTests).Assembly.Location; + // var mockLogger = new Mock(); + // TestPluginCacheHelper.SetupMockExtensions( + // new string[] { assemblyLocation }, + // () => { }); + // //Act + // this.executionManager.Initialize(new List { assemblyLocation }, mockLogger.Object); + + // //when handler instance returns warning + // sessionLogger.SendMessage(TestMessageLevel.Warning, "verify that it is downgraded to warning"); + + // // Verify. + // mockLogger.Verify(rd => rd.HandleLogMessage(TestMessageLevel.Warning, "verify that it is downgraded to warning"), Times.Once); + //} + + [TestMethod] + public void InitializeShouldVerifyTheHandlerInitializationWhenAdapterIsFailedToLoad() + { + var mockLogger = new Mock(); - #region Implementations + //when handler instance is null + _sessionLogger.SendMessage(It.IsAny(), "verify that the HandleLogMessage method will not be invoked when handler is not initialized"); - #region Discoverers + // Verify. + mockLogger.Verify(rd => rd.HandleLogMessage(It.IsAny(), "verify that the HandleLogMessage method will not be invoked when handler is not initialized"), Times.Never); + } + + #region Implementations + + #region Discoverers - private abstract class AbstractTestDiscoverer : ITestDiscoverer + private abstract class AbstractTestDiscoverer : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - private class ValidDiscoverer : ITestDiscoverer + private class ValidDiscoverer : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - private class ValidDiscoverer2 : ITestDiscoverer + private class ValidDiscoverer2 : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + #endregion - #region Executors + #region Executors - [ExtensionUri("ValidExecutor")] - private class ValidExecutor : ITestExecutor + [ExtensionUri("ValidExecutor")] + private class ValidExecutor : ITestExecutor + { + public void Cancel() { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - [ExtensionUri("ValidExecutor2")] - private class ValidExecutor2 : ITestExecutor + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - [ExtensionUri("ValidExecutor")] - private class DuplicateExecutor : ITestExecutor + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + [ExtensionUri("ValidExecutor2")] + private class ValidExecutor2 : ITestExecutor + { + public void Cancel() + { + throw new NotImplementedException(); + } - #region Loggers + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); + } - [ExtensionUri("csv")] - private class ValidLogger : ITestLogger + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [ExtensionUri("docx")] - private class ValidLogger2 : ITestLogger + [ExtensionUri("ValidExecutor")] + private class DuplicateExecutor : ITestExecutor + { + public void Cancel() { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - [ExtensionUri("csv")] - private class DuplicateLogger : ITestLogger + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } - #endregion + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) + { + throw new NotImplementedException(); + } + } + + #endregion - #region Settings Providers + #region Loggers - [SettingsName("ValidSettingsProvider")] - private class ValidSettingsProvider : ISettingsProvider + [ExtensionUri("csv")] + private class ValidLogger : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Load(XmlReader reader) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [SettingsName("ValidSettingsProvider2")] - private class ValidSettingsProvider2 : ISettingsProvider + [ExtensionUri("docx")] + private class ValidLogger2 : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Load(XmlReader reader) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - [SettingsName("ValidSettingsProvider")] - private class DuplicateSettingsProvider : ISettingsProvider + [ExtensionUri("csv")] + private class DuplicateLogger : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Load(XmlReader reader) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } + } - #endregion + #endregion - #region DataCollectors + #region Settings Providers - public class InvalidDataCollector : DataCollector + [SettingsName("ValidSettingsProvider")] + private class ValidSettingsProvider : ISettingsProvider + { + public void Load(XmlReader reader) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - - } + throw new NotImplementedException(); } + } - /// - /// The a data collector inheriting from another data collector. - /// - [DataCollectorFriendlyName("Foo1")] - [DataCollectorTypeUri("datacollector://foo/bar1")] - public class ADataCollectorInheritingFromAnotherDataCollector : InvalidDataCollector + [SettingsName("ValidSettingsProvider2")] + private class ValidSettingsProvider2 : ISettingsProvider + { + public void Load(XmlReader reader) { + throw new NotImplementedException(); } + } - [DataCollectorFriendlyName("Foo")] - [DataCollectorTypeUri("datacollector://foo/bar")] - public class ValidDataCollector : DataCollector + [SettingsName("ValidSettingsProvider")] + private class DuplicateSettingsProvider : ISettingsProvider + { + public void Load(XmlReader reader) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - - } + throw new NotImplementedException(); } - #endregion + } + + #endregion + + #region DataCollectors + + public class InvalidDataCollector : DataCollector + { + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + + } + } - internal class FaultyTestExecutorPluginInformation : TestExtensionPluginInformation + /// + /// The a data collector inheriting from another data collector. + /// + [DataCollectorFriendlyName("Foo1")] + [DataCollectorTypeUri("datacollector://foo/bar1")] + public class ADataCollectorInheritingFromAnotherDataCollector : InvalidDataCollector + { + } + + [DataCollectorFriendlyName("Foo")] + [DataCollectorTypeUri("datacollector://foo/bar")] + public class ValidDataCollector : DataCollector + { + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + + } + } + #endregion + + internal class FaultyTestExecutorPluginInformation : TestExtensionPluginInformation + { + /// + /// Default constructor + /// + /// The Type. + public FaultyTestExecutorPluginInformation(Type type) : base(type) { - /// - /// Default constructor - /// - /// The Type. - public FaultyTestExecutorPluginInformation(Type type) : base(type) - { - throw new Exception(); - } + throw new Exception(); } - #endregion } + #endregion } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithSourcesTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithSourcesTests.cs index b8754f6582..89a81acd47 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithSourcesTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithSourcesTests.cs @@ -1,401 +1,419 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Execution +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Execution; + +[TestClass] +public class RunTestsWithSourcesTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using TestableImplementations; - - [TestClass] - public class RunTestsWithSourcesTests + private readonly TestExecutionContext _testExecutionContext; + private readonly Mock _mockTestRunEventsHandler; + private TestableRunTestsWithSources? _runTestsInstance; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + + internal const string RunTestsWithSourcesTestsExecutorUri = "executor://RunTestWithSourcesDiscoverer/"; + + public RunTestsWithSourcesTests() { - private TestableTestRunCache testableTestRunCache; - private TestExecutionContext testExecutionContext; - private Mock mockTestRunEventsHandler; - private TestableRunTestsWithSources runTestsInstance; - private Mock mockRequestData; - private Mock mockMetricsCollection; + _testExecutionContext = new TestExecutionContext( + frequencyOfRunStatsChangeEvent: 100, + runStatsChangeEventTimeout: TimeSpan.MaxValue, + inIsolation: false, + keepAlive: false, + isDataCollectionEnabled: false, + areTestCaseLevelEventsRequired: false, + hasTestRun: false, + isDebug: false, + testCaseFilter: null, + filterOptions: null); + _mockTestRunEventsHandler = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + + TestPluginCacheHelper.SetupMockExtensions( + [typeof(RunTestsWithSourcesTests).Assembly.Location], + () => { }); + + TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); + TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); + } - internal const string RunTestsWithSourcesTestsExecutorUri = "executor://RunTestWithSourcesDiscoverer/"; + [TestCleanup] + public void TestCleanup() + { + RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = null; + TestPluginCacheHelper.ResetExtensionsCache(); + } - [TestInitialize] - public void TestInit() + [TestMethod] + public void BeforeRaisingTestRunCompleteShouldWarnIfNoTestsAreRun() + { + var adapterSourceMap = new Dictionary> { - this.testableTestRunCache = new TestableTestRunCache(); - this.testExecutionContext = new TestExecutionContext( - frequencyOfRunStatsChangeEvent: 100, - runStatsChangeEventTimeout: TimeSpan.MaxValue, - inIsolation: false, - keepAlive: false, - isDataCollectionEnabled: false, - areTestCaseLevelEventsRequired: false, - hasTestRun: false, - isDebug: false, - testCaseFilter: null, - filterOptions: null); - this.mockTestRunEventsHandler = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(RunTestsWithSourcesTests).GetTypeInfo().Assembly.Location }, - () => { }); - - TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - TestPluginCache.Instance.DiscoverTestExtensions(TestPlatformConstants.TestAdapterEndsWithPattern); - } + { "a", new List { "a", "aa" } }, + { "b", new List { "b", "ab" } } + }; - [TestCleanup] - public void TestCleanup() + var executorUriVsSourceList = new Dictionary, IEnumerable> { - RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = null; - TestPluginCacheHelper.ResetExtensionsCache(); - } + { new Tuple(new Uri("e://d/"), "A.dll"), new List { "s1.dll " } } + }; + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + executorUriVsSourceList, + _mockRequestData.Object); + + _runTestsInstance.CallBeforeRaisingTestRunComplete(false); + + var messageFormat = + "No test is available in {0}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; + var message = string.Format(CultureInfo.CurrentCulture, messageFormat, "a aa b ab"); + _mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, message), + Times.Once); + } - [TestMethod] - public void BeforeRaisingTestRunCompleteShouldWarnIfNoTestsAreRun() + [TestMethod] + public void GetExecutorUriExtensionMapShouldReturnEmptyOnInvalidSources() + { + var adapterSourceMap = new Dictionary> { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List {"a", "aa"}); - adapterSourceMap.Add("b", new List { "b", "ab" }); - - var executorUriVsSourceList = new Dictionary, IEnumerable>(); - executorUriVsSourceList.Add(new Tuple(new Uri("e://d/"), "A.dll"), new List {"s1.dll "}); - - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - executorUriVsSourceList, - this.mockRequestData.Object); - - this.runTestsInstance.CallBeforeRaisingTestRunComplete(false); - - var messageFormat = - "No test is available in {0}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; - var message = string.Format(messageFormat, "a aa b ab"); - this.mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, message), - Times.Once); - } + { "a", new List { "a", "aa" } } + }; - [TestMethod] - public void GetExecutorUriExtensionMapShouldReturnEmptyOnInvalidSources() - { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List { "a", "aa" }); + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); + var executorUris = _runTestsInstance.CallGetExecutorUriExtensionMap(new Mock().Object, new RunContext()); - var executorUris = this.runTestsInstance.CallGetExecutorUriExtensionMap(new Mock().Object, new RunContext()); + Assert.IsNotNull(executorUris); + Assert.AreEqual(0, executorUris.Count()); + } - Assert.IsNotNull(executorUris); - Assert.AreEqual(0, executorUris.Count()); - } + [TestMethod] + public void GetExecutorUriExtensionMapShouldReturnDefaultExecutorUrisForTheDiscoverersDefined() + { + var assemblyLocation = typeof(RunTestsWithSourcesTests).Assembly.Location; - [TestMethod] - public void GetExecutorUriExtensionMapShouldReturnDefaultExecutorUrisForTheDiscoverersDefined() + var adapterSourceMap = new Dictionary> { - var assemblyLocation = typeof (RunTestsWithSourcesTests).GetTypeInfo().Assembly.Location; - - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List {"a", "aa"}); - adapterSourceMap.Add(assemblyLocation, new List {assemblyLocation}); - - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - var executorUris = this.runTestsInstance.CallGetExecutorUriExtensionMap( - new Mock().Object, new RunContext()); - - Assert.IsNotNull(executorUris); - CollectionAssert.Contains(executorUris.ToArray(), - new Tuple(new Uri("executor://RunTestWithSourcesDiscoverer"), assemblyLocation)); - } + { "a", new List { "a", "aa" } }, + { assemblyLocation, new List { assemblyLocation } } + }; + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + + var executorUris = _runTestsInstance.CallGetExecutorUriExtensionMap( + new Mock().Object, new RunContext()); + + Assert.IsNotNull(executorUris); + CollectionAssert.Contains(executorUris.ToArray(), + new Tuple(new Uri("executor://RunTestWithSourcesDiscoverer"), assemblyLocation)); + } - [TestMethod] - public void InvokeExecutorShouldInvokeTestExecutorWithTheSources() + [TestMethod] + public void InvokeExecutorShouldInvokeTestExecutorWithTheSources() + { + var adapterSourceMap = new Dictionary> { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List { "a", "aa" }); - adapterSourceMap.Add("b", new List { "b", "ab" }); - - var executorUriVsSourceList = new Dictionary, IEnumerable>(); - var executorUriExtensionTuple = new Tuple(new Uri("e://d/"), "A.dll"); - executorUriVsSourceList.Add(executorUriExtensionTuple, new List { "s1.dll " }); - - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - executorUriVsSourceList, - this.mockRequestData.Object); - - var testExecutor = new RunTestWithSourcesExecutor(); - var extension = new LazyExtension(testExecutor, new TestExecutorMetadata("e://d/")); - IEnumerable receivedSources = null; - RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = (sources, rc, fh) => { receivedSources = sources; }; - - this.runTestsInstance.CallInvokeExecutor(extension, executorUriExtensionTuple, null, null); - - Assert.IsNotNull(receivedSources); - CollectionAssert.AreEqual(new List {"s1.dll "}, receivedSources.ToList()); - } + { "a", new List { "a", "aa" } }, + { "b", new List { "b", "ab" } } + }; + + var executorUriVsSourceList = new Dictionary, IEnumerable>(); + var executorUriExtensionTuple = new Tuple(new Uri("e://d/"), "A.dll"); + executorUriVsSourceList.Add(executorUriExtensionTuple, new List { "s1.dll " }); + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + executorUriVsSourceList, + _mockRequestData.Object); + + var testExecutor = new RunTestWithSourcesExecutor(); + var extension = new LazyExtension(testExecutor, new TestExecutorMetadata("e://d/")); + IEnumerable? receivedSources = null; + RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = (sources, rc, fh) => receivedSources = sources; + + _runTestsInstance.CallInvokeExecutor(extension, executorUriExtensionTuple, null, null); + + Assert.IsNotNull(receivedSources); + CollectionAssert.AreEqual(new List { "s1.dll " }, receivedSources.ToList()); + } - [TestMethod] - public void RunTestsShouldRunTestsForTheSourcesSpecified() - { - var assemblyLocation = typeof(RunTestsWithSourcesTests).GetTypeInfo().Assembly.Location; - - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List { "a", "aa" }); - adapterSourceMap.Add(assemblyLocation, new List { assemblyLocation }); - - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - bool isExecutorCalled = false; - RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = (s, rc, fh) => { isExecutorCalled = true; }; - - this.runTestsInstance.RunTests(); - - Assert.IsTrue(isExecutorCalled); - this.mockTestRunEventsHandler.Verify( - treh => treh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>()), Times.Once); - } + [TestMethod] + public void RunTestsShouldRunTestsForTheSourcesSpecified() + { + var assemblyLocation = typeof(RunTestsWithSourcesTests).Assembly.Location; - [TestMethod] - public void RunTestsShouldLogWarningOnNoTestsAvailableInAssembly() + var adapterSourceMap = new Dictionary> { - string testCaseFilter = null; - this.SetupForNoTestsAvailable(testCaseFilter, out var sourcesString); + { "a", new List { "a", "aa" } }, + { assemblyLocation, new List { assemblyLocation } } + }; + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + + bool isExecutorCalled = false; + RunTestWithSourcesExecutor.RunTestsWithSourcesCallback = (s, rc, fh) => isExecutorCalled = true; + + _runTestsInstance.RunTests(); + + Assert.IsTrue(isExecutorCalled); + _mockTestRunEventsHandler.Verify( + treh => treh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>()), Times.Once); + } - this.runTestsInstance.RunTests(); + [TestMethod] + public void RunTestsShouldLogWarningOnNoTestsAvailableInAssembly() + { + string? testCaseFilter = null; + SetupForNoTestsAvailable(testCaseFilter, out var sourcesString); - var expectedMessage = - $"No test is available in {sourcesString}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; - this.mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedMessage), Times.Once); - } + _runTestsInstance.RunTests(); - [TestMethod] - public void RunTestsShouldLogWarningOnNoTestsAvailableInAssemblyWithTestCaseFilter() - { - var testCaseFilter = "Name~TestMethod1"; - this.SetupForNoTestsAvailable(testCaseFilter, out var sourcesString); + var expectedMessage = + $"No test is available in {sourcesString}. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."; + _mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedMessage), Times.Once); + } - this.runTestsInstance.RunTests(); + [TestMethod] + public void RunTestsShouldLogWarningOnNoTestsAvailableInAssemblyWithTestCaseFilter() + { + var testCaseFilter = "Name~TestMethod1"; + SetupForNoTestsAvailable(testCaseFilter, out var sourcesString); - var expectedMessage = - $"No test matches the given testcase filter `{testCaseFilter}` in {sourcesString}"; - this.mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedMessage), Times.Once); - } + _runTestsInstance.RunTests(); - [TestMethod] - public void RunTestsShouldLogWarningOnNoTestsAvailableInAssemblyWithLongTestCaseFilter() - { - var veryLengthyTestCaseFilter = "FullyQualifiedName=TestPlatform.CrossPlatEngine" + - ".UnitTests.Execution.RunTestsWithSourcesTests." + - "RunTestsShouldLogWarningOnNoTestsAvailableInAssemblyWithLongTestCaseFilter" + - "WithVeryLengthTestCaseNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; - this.SetupForNoTestsAvailable(veryLengthyTestCaseFilter, out var sourcesString); + var expectedMessage = + $"No test matches the given testcase filter `{testCaseFilter}` in {sourcesString}"; + _mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedMessage), Times.Once); + } - this.runTestsInstance.RunTests(); + [TestMethod] + public void RunTestsShouldLogWarningOnNoTestsAvailableInAssemblyWithLongTestCaseFilter() + { + var veryLengthyTestCaseFilter = "FullyQualifiedName=TestPlatform.CrossPlatEngine" + + ".UnitTests.Execution.RunTestsWithSourcesTests." + + "RunTestsShouldLogWarningOnNoTestsAvailableInAssemblyWithLongTestCaseFilter" + + "WithVeryLengthTestCaseNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; + SetupForNoTestsAvailable(veryLengthyTestCaseFilter, out var sourcesString); - var expectedTestCaseFilter = veryLengthyTestCaseFilter.Substring(0, 256)+ "..."; + _runTestsInstance.RunTests(); - var expectedMessage = - $"No test matches the given testcase filter `{expectedTestCaseFilter}` in {sourcesString}"; - this.mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedMessage), Times.Once); - } + var expectedTestCaseFilter = veryLengthyTestCaseFilter.Substring(0, 256) + "..."; + + var expectedMessage = + $"No test matches the given testcase filter `{expectedTestCaseFilter}` in {sourcesString}"; + _mockTestRunEventsHandler.Verify(treh => treh.HandleLogMessage(TestMessageLevel.Warning, expectedMessage), Times.Once); + } - [TestMethod] - public void SendSessionStartShouldCallSessionStartWithCorrectTestSources() + [TestMethod] + public void SendSessionStartShouldCallSessionStartWithCorrectTestSources() + { + var adapterSourceMap = new Dictionary> { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List { "1.dll", "2.dll" }); - var mockTestCaseEventsHandler = new Mock(); - - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - mockTestCaseEventsHandler.Object, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - this.runTestsInstance.CallSendSessionStart(); - - mockTestCaseEventsHandler.Verify(x => x.SendSessionStart(It.Is>( - y => y.ContainsKey("TestSources") - && ((IEnumerable)y["TestSources"]).Contains("1.dll") - && ((IEnumerable)y["TestSources"]).Contains("2.dll") - ))); - } + { "a", new List { "1.dll", "2.dll" } } + }; + var mockTestCaseEventsHandler = new Mock(); + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + mockTestCaseEventsHandler.Object, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + + _runTestsInstance.CallSendSessionStart(); + + mockTestCaseEventsHandler.Verify(x => x.SendSessionStart(It.Is>( + y => y.ContainsKey("TestSources") + && ((IEnumerable)y["TestSources"]!).Contains("1.dll") + && ((IEnumerable)y["TestSources"]!).Contains("2.dll") + ))); + } - [TestMethod] - public void SendSessionEndShouldCallSessionEnd() + [TestMethod] + public void SendSessionEndShouldCallSessionEnd() + { + var adapterSourceMap = new Dictionary> { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("a", new List { "1.dll", "2.dll" }); - var mockTestCaseEventsHandler = new Mock(); + { "a", new List { "1.dll", "2.dll" } } + }; + var mockTestCaseEventsHandler = new Mock(); + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + mockTestCaseEventsHandler.Object, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + + _runTestsInstance.CallSendSessionEnd(); + + mockTestCaseEventsHandler.Verify(x => x.SendSessionEnd()); + } + + [MemberNotNull(nameof(_runTestsInstance))] + private void SetupForNoTestsAvailable(string? testCaseFilter, out string sourcesString) + { + var testAssemblyLocation = typeof(TestCase).Assembly.Location; + + var adapterAssemblyLocation = typeof(RunTestsWithSourcesTests).Assembly.Location; + + var adapterSourceMap = new Dictionary>(); - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - mockTestCaseEventsHandler.Object, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); + var sources = new[] { testAssemblyLocation, "a" }; + sourcesString = string.Join(" ", sources); - this.runTestsInstance.CallSendSessionEnd(); + adapterSourceMap.Add(adapterAssemblyLocation, sources); - mockTestCaseEventsHandler.Verify(x => x.SendSessionEnd()); + _testExecutionContext.TestCaseFilter = testCaseFilter; + + _runTestsInstance = new TestableRunTestsWithSources( + adapterSourceMap, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + } + + #region Testable Implementations + + private class TestableRunTestsWithSources : RunTestsWithSources + { + public TestableRunTestsWithSources(Dictionary> adapterSourceMap, string? runSettings, + TestExecutionContext testExecutionContext, ITestCaseEventsHandler? testCaseEventsHandler, IInternalTestRunEventsHandler testRunEventsHandler, + IRequestData requestData) + : base(requestData, adapterSourceMap, null, runSettings, testExecutionContext, testCaseEventsHandler, testRunEventsHandler) + { } - private void SetupForNoTestsAvailable(string testCaseFilter, out string sourcesString) + internal TestableRunTestsWithSources(Dictionary> adapterSourceMap, string? runSettings, + TestExecutionContext testExecutionContext, + ITestCaseEventsHandler? testCaseEventsHandler, IInternalTestRunEventsHandler testRunEventsHandler, Dictionary, + IEnumerable> executorUriVsSourceList, IRequestData requestData) + : base(requestData, adapterSourceMap, null, runSettings, testExecutionContext, testCaseEventsHandler, testRunEventsHandler, + executorUriVsSourceList) { - var testAssemblyLocation = typeof(TestCase).GetTypeInfo().Assembly.Location; + } - var adapterAssemblyLocation = typeof(RunTestsWithSourcesTests).GetTypeInfo().Assembly.Location; + public void CallBeforeRaisingTestRunComplete(bool exceptionsHitDuringRunTests) + { + BeforeRaisingTestRunComplete(exceptionsHitDuringRunTests); + } - var adapterSourceMap = new Dictionary>(); + public IEnumerable> CallGetExecutorUriExtensionMap( + IFrameworkHandle testExecutorFrameworkHandle, RunContext runContext) + { + return GetExecutorUriExtensionMap(testExecutorFrameworkHandle, runContext); + } - var sources = new[] {testAssemblyLocation, "a"}; - sourcesString = string.Join(" ", sources); + public void CallSendSessionStart() + { + SendSessionStart(); + } - adapterSourceMap.Add(adapterAssemblyLocation, sources); + public void CallSendSessionEnd() + { + SendSessionEnd(); + } - this.testExecutionContext.TestCaseFilter = testCaseFilter; + public void CallInvokeExecutor(LazyExtension executor, + Tuple executorUriExtensionTuple, RunContext? runContext, IFrameworkHandle? frameworkHandle) + { + InvokeExecutor(executor, executorUriExtensionTuple, runContext, frameworkHandle); + } + } - this.runTestsInstance = new TestableRunTestsWithSources( - adapterSourceMap, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); + [FileExtension(".dll")] + [FileExtension(".exe")] + [DefaultExecutorUri(RunTestsWithSourcesTestsExecutorUri)] + private class RunTestWithSourcesDiscoverer : ITestDiscoverer + { + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, + ITestCaseDiscoverySink discoverySink) + { + throw new NotImplementedException(); } + } - #region Testable Implementations + [ExtensionUri(RunTestsWithSourcesTestsExecutorUri)] + internal class RunTestWithSourcesExecutor : ITestExecutor + { + public static Action?, IRunContext?, IFrameworkHandle?>? RunTestsWithSourcesCallback { get; set; } + public static Action?, IRunContext?, IFrameworkHandle?>? RunTestsWithTestsCallback { get; set; } - private class TestableRunTestsWithSources : RunTestsWithSources + public void Cancel() { - public TestableRunTestsWithSources(Dictionary> adapterSourceMap, string runSettings, - TestExecutionContext testExecutionContext, ITestCaseEventsHandler testCaseEventsHandler, ITestRunEventsHandler testRunEventsHandler, IRequestData requestData) - : base(requestData, adapterSourceMap, null, runSettings, testExecutionContext, testCaseEventsHandler, testRunEventsHandler) - { - } - - internal TestableRunTestsWithSources(Dictionary> adapterSourceMap, string runSettings, - TestExecutionContext testExecutionContext, - ITestCaseEventsHandler testCaseEventsHandler, ITestRunEventsHandler testRunEventsHandler, Dictionary, IEnumerable> executorUriVsSourceList, IRequestData requestData) - : base(requestData, adapterSourceMap, null, runSettings, testExecutionContext, testCaseEventsHandler, testRunEventsHandler, executorUriVsSourceList) - { - } - - public void CallBeforeRaisingTestRunComplete(bool exceptionsHitDuringRunTests) - { - this.BeforeRaisingTestRunComplete(exceptionsHitDuringRunTests); - } - - public IEnumerable> CallGetExecutorUriExtensionMap( - IFrameworkHandle testExecutorFrameworkHandle, RunContext runContext) - { - return this.GetExecutorUriExtensionMap(testExecutorFrameworkHandle, runContext); - } - - public void CallSendSessionStart() - { - this.SendSessionStart(); - } - - public void CallSendSessionEnd() - { - this.SendSessionEnd(); - } - - public void CallInvokeExecutor(LazyExtension executor, - Tuple executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle) - { - this.InvokeExecutor(executor, executorUriExtensionTuple, runContext, frameworkHandle); - } + throw new NotImplementedException(); } - [FileExtension(".dll")] - [DefaultExecutorUri(RunTestsWithSourcesTestsExecutorUri)] - private class RunTestWithSourcesDiscoverer : ITestDiscoverer + public void RunTests(IEnumerable? sources, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink) - { - throw new NotImplementedException(); - } + RunTestsWithSourcesCallback?.Invoke(sources, runContext, frameworkHandle); } - [ExtensionUri(RunTestsWithSourcesTestsExecutorUri)] - internal class RunTestWithSourcesExecutor : ITestExecutor + public void RunTests(IEnumerable? tests, IRunContext? runContext, IFrameworkHandle? frameworkHandle) { - public static Action, IRunContext, IFrameworkHandle> RunTestsWithSourcesCallback { get; set; } - public static Action, IRunContext, IFrameworkHandle> RunTestsWithTestsCallback { get; set; } - - public void Cancel() - { - throw new NotImplementedException(); - } - - public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - RunTestsWithSourcesCallback?.Invoke(sources, runContext, frameworkHandle); - } - - public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) - { - RunTestsWithTestsCallback?.Invoke(tests, runContext, frameworkHandle); - } + RunTestsWithTestsCallback?.Invoke(tests, runContext, frameworkHandle); } - - #endregion } + + #endregion } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithTestsTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithTestsTests.cs index c8cf6f182b..8051ca2965 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithTestsTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/RunTestsWithTestsTests.cs @@ -1,242 +1,236 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Execution +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Execution; + +[TestClass] +public class RunTestsWithTestsTests { - using System; - using System.Collections.Generic; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine.ClientProtocol; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations; - - [TestClass] - public class RunTestsWithTestsTests + private readonly TestExecutionContext _testExecutionContext; + private readonly Mock _mockTestRunEventsHandler; + private TestableRunTestsWithTests? _runTestsInstance; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + + public RunTestsWithTestsTests() { - private TestableTestRunCache testableTestRunCache; - private TestExecutionContext testExecutionContext; - private Mock mockTestRunEventsHandler; - private TestableRunTestsWithTests runTestsInstance; - private Mock mockRequestData; - private Mock mockMetricsCollection; + _mockMetricsCollection = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _testExecutionContext = new TestExecutionContext( + frequencyOfRunStatsChangeEvent: 100, + runStatsChangeEventTimeout: TimeSpan.MaxValue, + inIsolation: false, + keepAlive: false, + isDataCollectionEnabled: false, + areTestCaseLevelEventsRequired: false, + hasTestRun: false, + isDebug: false, + testCaseFilter: null, + filterOptions: null); + _mockTestRunEventsHandler = new Mock(); + } + + [TestMethod] + public void GetExecutorUriExtensionMapShouldReturnExecutorUrisMapForTestCasesWithSameExecutorUri() + { + var tests = new List + { + new("A.C.M1", new Uri("e://d"), "s.dll"), + new("A.C.M2", new Uri("e://d"), "s.dll") + }; - private const string RunTestsWithSourcesTestsExecutorUri = "executor://RunTestWithSourcesDiscoverer/"; + _runTestsInstance = new TestableRunTestsWithTests( + tests, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); - [TestInitialize] - public void TestInit() + var map = _runTestsInstance.CallGetExecutorUriExtensionMap(new Mock().Object, new RunContext()); + + var expectedMap = new List> { - this.testableTestRunCache = new TestableTestRunCache(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.testExecutionContext = new TestExecutionContext( - frequencyOfRunStatsChangeEvent: 100, - runStatsChangeEventTimeout: TimeSpan.MaxValue, - inIsolation: false, - keepAlive: false, - isDataCollectionEnabled: false, - areTestCaseLevelEventsRequired: false, - hasTestRun: false, - isDebug: false, - testCaseFilter: null, - filterOptions: null); - this.mockTestRunEventsHandler = new Mock(); - } + new(new Uri("e://d"), + Constants.UnspecifiedAdapterPath) + }; + + CollectionAssert.AreEqual(expectedMap, map.ToList()); + } + + [TestMethod] + public void GetExecutorUriExtensionMapShouldReturnExecutorUrisMapForTestCasesWithDifferentExecutorUri() + { + var tests = new List + { + new("A.C.M1", new Uri("e://d"), "s.dll"), + new("A.C.M2", new Uri("e://d2"), "s.dll") + }; + + _runTestsInstance = new TestableRunTestsWithTests( + tests, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); - [TestMethod] - public void GetExecutorUriExtensionMapShouldReturnExecutorUrisMapForTestCasesWithSameExecutorUri() + var map = _runTestsInstance.CallGetExecutorUriExtensionMap(new Mock().Object, new RunContext()); + + var expectedMap = new List> { - var tests = new List - { - new TestCase("A.C.M1", new Uri("e://d"), "s.dll"), - new TestCase("A.C.M2", new Uri("e://d"), "s.dll") - }; - - this.runTestsInstance = new TestableRunTestsWithTests( - tests, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - var map = this.runTestsInstance.CallGetExecutorUriExtensionMap(new Mock().Object, new RunContext()); - - var expectedMap = new List> - { - new Tuple(new Uri("e://d"), - Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants.UnspecifiedAdapterPath) - }; - - CollectionAssert.AreEqual(expectedMap, map.ToList()); - } + new(new Uri("e://d"), + Constants.UnspecifiedAdapterPath), + new(new Uri("e://d2"), + Constants.UnspecifiedAdapterPath) + }; - [TestMethod] - public void GetExecutorUriExtensionMapShouldReturnExecutorUrisMapForTestCasesWithDifferentExecutorUri() + CollectionAssert.AreEqual(expectedMap, map.ToList()); + } + + [TestMethod] + public void InvokeExecutorShouldInvokeTestExecutorWithTheTests() + { + var tests = new List + { + new("A.C.M1", new Uri("e://d"), "s.dll") + }; + + var executorUriVsTestList = new Dictionary, List>(); + var executorUriExtensionTuple = new Tuple(new Uri("e://d/"), "A.dll"); + executorUriVsTestList.Add(executorUriExtensionTuple, tests); + + _runTestsInstance = new TestableRunTestsWithTests( + tests, + null, + _testExecutionContext, + null, + _mockTestRunEventsHandler.Object, + executorUriVsTestList, + _mockRequestData.Object); + + var testExecutor = new RunTestsWithSourcesTests.RunTestWithSourcesExecutor(); + var extension = new LazyExtension(testExecutor, new TestExecutorMetadata("e://d/")); + IEnumerable? receivedTests = null; + RunTestsWithSourcesTests.RunTestWithSourcesExecutor.RunTestsWithTestsCallback = (t, rc, fh) => receivedTests = t; + + _runTestsInstance.CallInvokeExecutor(extension, executorUriExtensionTuple, null, null); + + Assert.IsNotNull(receivedTests); + CollectionAssert.AreEqual(tests, receivedTests.ToList()); + } + + [TestMethod] + public void SendSessionStartShouldCallSessionStartWithCorrectTestSources() + { + var tests = new List + { + new("A.C.M1", new Uri("e://d"), "s.dll") + }; + var mockTestCaseEventsHandler = new Mock(); + + _runTestsInstance = new TestableRunTestsWithTests( + tests, + null, + _testExecutionContext, + mockTestCaseEventsHandler.Object, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + + _runTestsInstance.CallSendSessionStart(); + + mockTestCaseEventsHandler.Verify(x => x.SendSessionStart(It.Is>( + y => y.ContainsKey("TestSources") + && ((IEnumerable)y["TestSources"]!).Contains("s.dll") + ))); + } + + [TestMethod] + public void SendSessionEndShouldCallSessionEnd() + { + var tests = new List + { + new("A.C.M1", new Uri("e://d"), "s.dll") + }; + var mockTestCaseEventsHandler = new Mock(); + + _runTestsInstance = new TestableRunTestsWithTests( + tests, + null, + _testExecutionContext, + mockTestCaseEventsHandler.Object, + _mockTestRunEventsHandler.Object, + _mockRequestData.Object); + + _runTestsInstance.CallSendSessionEnd(); + + mockTestCaseEventsHandler.Verify(x => x.SendSessionEnd()); + } + + #region Testable Implementations + + private class TestableRunTestsWithTests : RunTestsWithTests + { + public TestableRunTestsWithTests(IEnumerable testCases, + string? runSettings, TestExecutionContext testExecutionContext, + ITestCaseEventsHandler? testCaseEventsHandler, IInternalTestRunEventsHandler testRunEventsHandler, + IRequestData requestData) + : base(requestData, testCases, null, runSettings, testExecutionContext, testCaseEventsHandler, testRunEventsHandler) { - var tests = new List - { - new TestCase("A.C.M1", new Uri("e://d"), "s.dll"), - new TestCase("A.C.M2", new Uri("e://d2"), "s.dll") - }; - - this.runTestsInstance = new TestableRunTestsWithTests( - tests, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - var map = this.runTestsInstance.CallGetExecutorUriExtensionMap(new Mock().Object, new RunContext()); - - var expectedMap = new List> - { - new Tuple(new Uri("e://d"), - Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants.UnspecifiedAdapterPath), - new Tuple(new Uri("e://d2"), - Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants.UnspecifiedAdapterPath) - }; - - CollectionAssert.AreEqual(expectedMap, map.ToList()); } - [TestMethod] - public void InvokeExecutorShouldInvokeTestExecutorWithTheTests() + + internal TestableRunTestsWithTests(IEnumerable testCases, string? runSettings, TestExecutionContext testExecutionContext, + ITestCaseEventsHandler? testCaseEventsHandler, IInternalTestRunEventsHandler testRunEventsHandler, Dictionary, + List> executorUriVsTestList, IRequestData requestData) + : base( + requestData, testCases, null, runSettings, testExecutionContext, + testCaseEventsHandler, testRunEventsHandler, executorUriVsTestList) { - var tests = new List - { - new TestCase("A.C.M1", new Uri("e://d"), "s.dll") - }; - - var executorUriVsTestList = new Dictionary, List>(); - var executorUriExtensionTuple = new Tuple(new Uri("e://d/"), "A.dll"); - executorUriVsTestList.Add(executorUriExtensionTuple, tests); - - this.runTestsInstance = new TestableRunTestsWithTests( - tests, - null, - testExecutionContext, - null, - this.mockTestRunEventsHandler.Object, - executorUriVsTestList, - this.mockRequestData.Object); - - var testExecutor = new RunTestsWithSourcesTests.RunTestWithSourcesExecutor(); - var extension = new LazyExtension(testExecutor, new TestExecutorMetadata("e://d/")); - IEnumerable receivedTests = null; - RunTestsWithSourcesTests.RunTestWithSourcesExecutor.RunTestsWithTestsCallback = (t, rc, fh) => { receivedTests = t; }; - - this.runTestsInstance.CallInvokeExecutor(extension, executorUriExtensionTuple, null, null); - - Assert.IsNotNull(receivedTests); - CollectionAssert.AreEqual(tests, receivedTests.ToList()); } - [TestMethod] - public void SendSessionStartShouldCallSessionStartWithCorrectTestSources() + public IEnumerable> CallGetExecutorUriExtensionMap( + IFrameworkHandle testExecutorFrameworkHandle, RunContext runContext) { - var tests = new List - { - new TestCase("A.C.M1", new Uri("e://d"), "s.dll") - }; - var mockTestCaseEventsHandler = new Mock(); - - this.runTestsInstance = new TestableRunTestsWithTests( - tests, - null, - testExecutionContext, - mockTestCaseEventsHandler.Object, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - this.runTestsInstance.CallSendSessionStart(); - - mockTestCaseEventsHandler.Verify(x => x.SendSessionStart(It.Is>( - y => y.ContainsKey("TestSources") - && ((IEnumerable)y["TestSources"]).Contains("s.dll") - ))); + return GetExecutorUriExtensionMap(testExecutorFrameworkHandle, runContext); } - [TestMethod] - public void SendSessionEndShouldCallSessionEnd() + public void CallInvokeExecutor(LazyExtension executor, + Tuple executorUriExtensionTuple, RunContext? runContext, IFrameworkHandle? frameworkHandle) { - var tests = new List - { - new TestCase("A.C.M1", new Uri("e://d"), "s.dll") - }; - var mockTestCaseEventsHandler = new Mock(); - - this.runTestsInstance = new TestableRunTestsWithTests( - tests, - null, - testExecutionContext, - mockTestCaseEventsHandler.Object, - this.mockTestRunEventsHandler.Object, - this.mockRequestData.Object); - - this.runTestsInstance.CallSendSessionEnd(); - - mockTestCaseEventsHandler.Verify(x => x.SendSessionEnd()); + InvokeExecutor(executor, executorUriExtensionTuple, runContext, frameworkHandle); } - #region Testable Implementations + public void CallSendSessionStart() + { + SendSessionStart(); + } - private class TestableRunTestsWithTests : RunTestsWithTests + public void CallSendSessionEnd() { - public TestableRunTestsWithTests(IEnumerable testCases, - string runSettings, TestExecutionContext testExecutionContext, - ITestCaseEventsHandler testCaseEventsHandler, ITestRunEventsHandler testRunEventsHandler, - IRequestData requestData) - : base(requestData, testCases, null, runSettings, testExecutionContext, testCaseEventsHandler, testRunEventsHandler) - { - } - - - internal TestableRunTestsWithTests(IEnumerable testCases, string runSettings, TestExecutionContext testExecutionContext, ITestCaseEventsHandler testCaseEventsHandler, ITestRunEventsHandler testRunEventsHandler, Dictionary, List> executorUriVsTestList, IRequestData requestData) - : base( -requestData, testCases, null, runSettings, testExecutionContext, - testCaseEventsHandler, testRunEventsHandler, executorUriVsTestList) - { - } - - public IEnumerable> CallGetExecutorUriExtensionMap( - IFrameworkHandle testExecutorFrameworkHandle, RunContext runContext) - { - return this.GetExecutorUriExtensionMap(testExecutorFrameworkHandle, runContext); - } - - public void CallInvokeExecutor(LazyExtension executor, - Tuple executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle) - { - this.InvokeExecutor(executor, executorUriExtensionTuple, runContext, frameworkHandle); - } - - public void CallSendSessionStart() - { - this.SendSessionStart(); - } - - public void CallSendSessionEnd() - { - this.SendSessionEnd(); - } + SendSessionEnd(); } + } - #endregion + #endregion - } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/TestRunCacheTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/TestRunCacheTests.cs index 19938f825b..4292a53b3d 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/TestRunCacheTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/TestRunCacheTests.cs @@ -1,408 +1,401 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Execution +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Execution; + +[TestClass] +public class TestRunCacheBehaviors { - using System; - using System.Collections.Generic; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - [TestClass] - public class TestRunCacheBehaviors + #region OnTestStarted tests + + [TestMethod] + public void OnTestStartedShouldAddToInProgressTests() { - #region OnTestStarted tests + var tester = new TestCacheTester { ExpectedCacheSize = int.MaxValue }; - [TestMethod] - public void OnTestStartedShouldAddToInProgressTests() - { - var tester = new TestCacheTester { ExpectedCacheSize = int.MaxValue }; + var cache = new TestRunCache(int.MaxValue, TimeSpan.MaxValue, tester.CacheHitOnSize); - var cache = new TestRunCache(int.MaxValue, TimeSpan.MaxValue, tester.CacheHitOnSize); + var tr = GetTestResult(0); + cache.OnTestStarted(tr.TestCase); - var tr = this.GetTestResult(0); - cache.OnTestStarted(tr.TestCase); + CollectionAssert.Contains(cache.InProgressTests.ToList(), tr.TestCase); + } - CollectionAssert.Contains(cache.InProgressTests.ToList(), tr.TestCase); - } + [TestMethod] + public void OnTestStartedShouldAddMultipleInProgressTestsTillCacheHit() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - [TestMethod] - public void OnTestStartedShouldAddMultipleInProgressTestsTillCacheHit() + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < (cacheSize - 1); i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < (cacheSize - 1); i++) - { - var tr = this.GetTestResult(i); - cache.OnTestStarted(tr.TestCase); + var tr = GetTestResult(i); + cache.OnTestStarted(tr.TestCase); - Assert.AreEqual(i, cache.InProgressTests.Count - 1); - } + Assert.AreEqual(i, cache.InProgressTests.Count - 1); } + } - //[TestMethod] - //public void OnTestStartedShouldReportInProgressTestsForLongRunningUnitTest() - //{ - // var cacheTimeout = new TimeSpan(0, 0, 0, 3, 0); - // var tester = new TestCacheTester { ExpectedCacheSize = int.MaxValue }; + //[TestMethod] + //public void OnTestStartedShouldReportInProgressTestsForLongRunningUnitTest() + //{ + // var cacheTimeout = new TimeSpan(0, 0, 0, 3, 0); + // var tester = new TestCacheTester { ExpectedCacheSize = int.MaxValue }; - // var cache = new TestRunCache(int.MaxValue, cacheTimeout, tester.CacheHitOnTimerLimit); + // var cache = new TestRunCache(int.MaxValue, cacheTimeout, tester.CacheHitOnTimerLimit); - // var tr = this.GetTestResult(0); - // cache.OnTestStarted(tr.TestCase); + // var tr = this.GetTestResult(0); + // cache.OnTestStarted(tr.TestCase); - // Assert.AreEqual(0, tester.TotalInProgressTestsReceived); + // Assert.AreEqual(0, tester.TotalInProgressTestsReceived); - // Assert.AreEqual(1, tester.TotalInProgressTestsReceived); - //} + // Assert.AreEqual(1, tester.TotalInProgressTestsReceived); + //} - [TestMethod] - public void OnTestStartedShouldReportResultsOnCacheHit() + [TestMethod] + public void OnTestStartedShouldReportResultsOnCacheHit() + { + long cacheSize = 2; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < cacheSize; i++) { - long cacheSize = 2; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < cacheSize; i++) - { - var tr = this.GetTestResult(i); - cache.OnTestStarted(tr.TestCase); - } - - Assert.AreEqual(1, tester.CacheHitCount); - Assert.AreEqual(0, cache.TotalExecutedTests); - Assert.AreEqual(0, cache.TestResults.Count); - Assert.AreEqual(0, cache.InProgressTests.Count); - Assert.AreEqual(2, tester.TotalInProgressTestsReceived); + var tr = GetTestResult(i); + cache.OnTestStarted(tr.TestCase); } - #endregion + Assert.AreEqual(1, tester.CacheHitCount); + Assert.AreEqual(0, cache.TotalExecutedTests); + Assert.AreEqual(0, cache.TestResults.Count); + Assert.AreEqual(0, cache.InProgressTests.Count); + Assert.AreEqual(2, tester.TotalInProgressTestsReceived); + } - #region OnNewTestResult tests + #endregion - [TestMethod] - public void OnNewTestResultShouldAddToTotalExecutedTests() - { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + #region OnNewTestResult tests - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < 2; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - } + [TestMethod] + public void OnNewTestResultShouldAddToTotalExecutedTests() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - Assert.AreEqual(2, cache.TotalExecutedTests); + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < 2; i++) + { + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); } - [TestMethod] - public void OnNewTestResultShouldAddToTestResultCache() + Assert.AreEqual(2, cache.TotalExecutedTests); + } + + [TestMethod] + public void OnNewTestResultShouldAddToTestResultCache() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < 2; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < 2; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - CollectionAssert.Contains(cache.TestResults.ToList(), tr); - } + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); + CollectionAssert.Contains(cache.TestResults.ToList(), tr); } + } + + [TestMethod] + public void OnNewTestResultShouldUpdateRunStats() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - [TestMethod] - public void OnNewTestResultShouldUpdateRunStats() + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < 2; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < 2; i++) - { - var tr = this.GetTestResult(i); - tr.Outcome = TestOutcome.Passed; - cache.OnNewTestResult(tr); - } - - Assert.AreEqual(2, cache.TestRunStatistics.ExecutedTests); - Assert.AreEqual(2, cache.TestRunStatistics.Stats[TestOutcome.Passed]); + var tr = GetTestResult(i); + tr.Outcome = TestOutcome.Passed; + cache.OnNewTestResult(tr); } - [TestMethod] - public void OnNewTestResultShouldRemoveTestCaseFromInProgressList() - { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + Assert.AreEqual(2, cache.TestRunStatistics.ExecutedTests); + Assert.AreEqual(2, cache.TestRunStatistics.Stats![TestOutcome.Passed]); + } - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < 2; i++) - { - var tr = this.GetTestResult(i); - cache.OnTestStarted(tr.TestCase); - cache.OnNewTestResult(tr); - } + [TestMethod] + public void OnNewTestResultShouldRemoveTestCaseFromInProgressList() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - Assert.AreEqual(0, cache.InProgressTests.Count); + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < 2; i++) + { + var tr = GetTestResult(i); + cache.OnTestStarted(tr.TestCase); + cache.OnNewTestResult(tr); } - [TestMethod] - public void OnNewTestResultShouldReportTestResultsWhenMaxCacheSizeIsHit() + Assert.AreEqual(0, cache.InProgressTests.Count); + } + + [TestMethod] + public void OnNewTestResultShouldReportTestResultsWhenMaxCacheSizeIsHit() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < cacheSize; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < cacheSize; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - } - - Assert.AreEqual(1, tester.CacheHitCount); - Assert.AreEqual(cacheSize, cache.TotalExecutedTests); - Assert.AreEqual(0, cache.TestResults.Count); + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); } - [TestMethod] - public void OnNewTestResultShouldNotFireIfMaxCacheSizeIsNotHit() + Assert.AreEqual(1, tester.CacheHitCount); + Assert.AreEqual(cacheSize, cache.TotalExecutedTests); + Assert.AreEqual(0, cache.TestResults.Count); + } + + [TestMethod] + public void OnNewTestResultShouldNotFireIfMaxCacheSizeIsNotHit() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + var executedTests = cacheSize - 1; + for (var i = 0; i < executedTests; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - var executedTests = cacheSize - 1; - for (var i = 0; i < executedTests; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - } - - Assert.AreEqual(0, tester.CacheHitCount); - Assert.AreEqual(executedTests, cache.TotalExecutedTests); - Assert.AreEqual(executedTests, cache.TestResults.Count); + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); } - [TestMethod] - public void OnNewTestResultShouldReportResultsMultipleTimes() - { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + Assert.AreEqual(0, tester.CacheHitCount); + Assert.AreEqual(executedTests, cache.TotalExecutedTests); + Assert.AreEqual(executedTests, cache.TestResults.Count); + } - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - long executedTests = 45; + [TestMethod] + public void OnNewTestResultShouldReportResultsMultipleTimes() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - for (var i = 0; i < executedTests; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - } + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + long executedTests = 45; - Assert.AreEqual(4, tester.CacheHitCount); - Assert.AreEqual(executedTests, cache.TotalExecutedTests); - Assert.AreEqual(5, cache.TestResults.Count); + for (var i = 0; i < executedTests; i++) + { + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); } - #endregion + Assert.AreEqual(4, tester.CacheHitCount); + Assert.AreEqual(executedTests, cache.TotalExecutedTests); + Assert.AreEqual(5, cache.TestResults.Count); + } - #region OnTestCompletion tests + #endregion - [TestMethod] - public void OnTestCompletionShouldNotThrowIfCompletedTestIsNull() - { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + #region OnTestCompletion tests - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + [TestMethod] + public void OnTestCompletionShouldNotThrowIfCompletedTestIsNull() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - Assert.IsFalse(cache.OnTestCompletion(null)); - } + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - [TestMethod] - public void OnTestCompletionShouldReturnFalseIfInProgressTestsIsEmpty() - { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + Assert.IsFalse(cache.OnTestCompletion(null)); + } - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + [TestMethod] + public void OnTestCompletionShouldReturnFalseIfInProgressTestsIsEmpty() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - Assert.IsFalse(cache.OnTestCompletion(this.GetTestResult(0).TestCase)); - } + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + + Assert.IsFalse(cache.OnTestCompletion(GetTestResult(0).TestCase)); + } + + [TestMethod] + public void OnTestCompletionShouldUpdateInProgressList() + { + long cacheSize = 2; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - [TestMethod] - public void OnTestCompletionShouldUpdateInProgressList() + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (int i = 0; i < cacheSize; i++) { - long cacheSize = 2; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (int i = 0; i < cacheSize; i++) - { - var tr = this.GetTestResult(i); - cache.OnTestStarted(tr.TestCase); - Assert.IsTrue(cache.OnTestCompletion(tr.TestCase)); - - Assert.AreEqual(0, cache.InProgressTests.Count); - } + var tr = GetTestResult(i); + cache.OnTestStarted(tr.TestCase); + Assert.IsTrue(cache.OnTestCompletion(tr.TestCase)); + + Assert.AreEqual(0, cache.InProgressTests.Count); } + } - [TestMethod] - public void OnTestCompletionShouldUpdateInProgressListWhenTestHasSameId() - { - long cacheSize = 2; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + [TestMethod] + public void OnTestCompletionShouldUpdateInProgressListWhenTestHasSameId() + { + long cacheSize = 2; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - for (var i = 0; i < cacheSize; i++) - { - var tr = this.GetTestResult(i); - cache.OnTestStarted(tr.TestCase); + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + for (var i = 0; i < cacheSize; i++) + { + var tr = GetTestResult(i); + cache.OnTestStarted(tr.TestCase); - var clone = new TestCase( - tr.TestCase.FullyQualifiedName, - tr.TestCase.ExecutorUri, - tr.TestCase.Source); - clone.Id = tr.TestCase.Id; + var clone = new TestCase( + tr.TestCase.FullyQualifiedName, + tr.TestCase.ExecutorUri, + tr.TestCase.Source); + clone.Id = tr.TestCase.Id; - Assert.IsTrue(cache.OnTestCompletion(clone)); + Assert.IsTrue(cache.OnTestCompletion(clone)); - Assert.AreEqual(0, cache.InProgressTests.Count); - } + Assert.AreEqual(0, cache.InProgressTests.Count); } + } - [TestMethod] - public void OnTestCompleteShouldNotRemoveTestCaseFromInProgressListForUnrelatedTestResult() - { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + [TestMethod] + public void OnTestCompleteShouldNotRemoveTestCaseFromInProgressListForUnrelatedTestResult() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - var tr1 = this.GetTestResult(0); - cache.OnTestStarted(tr1.TestCase); + var tr1 = GetTestResult(0); + cache.OnTestStarted(tr1.TestCase); - var tr2 = this.GetTestResult(1); - Assert.IsFalse(cache.OnTestCompletion(tr2.TestCase)); + var tr2 = GetTestResult(1); + Assert.IsFalse(cache.OnTestCompletion(tr2.TestCase)); - Assert.AreEqual(1, cache.InProgressTests.Count); - } + Assert.AreEqual(1, cache.InProgressTests.Count); + } - #endregion + #endregion - #region GetLastChunk tests + #region GetLastChunk tests - [TestMethod] - public void GetLastChunkShouldReturnTestResultsInCache() + [TestMethod] + public void GetLastChunkShouldReturnTestResultsInCache() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + List pushedTestResults = new(); + + for (var i = 0; i < 2; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); + pushedTestResults.Add(tr); + } - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - List pushedTestResults = new List(); + var testResultsInCache = cache.GetLastChunk(); + CollectionAssert.AreEqual(pushedTestResults, testResultsInCache.ToList()); + } - for (var i = 0; i < 2; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - pushedTestResults.Add(tr); - } + [TestMethod] + public void GetLastChunkShouldResetTestResultsInCache() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - var testResultsInCache = cache.GetLastChunk(); - CollectionAssert.AreEqual(pushedTestResults, testResultsInCache.ToList()); - } + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - [TestMethod] - public void GetLastChunkShouldResetTestResultsInCache() + for (var i = 0; i < 2; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; + var tr = GetTestResult(i); + cache.OnNewTestResult(tr); + } - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); + cache.GetLastChunk(); + Assert.AreEqual(0, cache.TestResults.Count); + } - for (var i = 0; i < 2; i++) - { - var tr = this.GetTestResult(i); - cache.OnNewTestResult(tr); - } + #endregion - cache.GetLastChunk(); - Assert.AreEqual(0, cache.TestResults.Count); - } + #region TestRunStasts tests - #endregion + [TestMethod] + public void TestRunStatsShouldReturnCurrentStats() + { + long cacheSize = 10; + var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - #region TestRunStasts tests + var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - [TestMethod] - public void TestRunStatsShouldReturnCurrentStats() + for (var i = 0; i < cacheSize; i++) { - long cacheSize = 10; - var tester = new TestCacheTester { ExpectedCacheSize = cacheSize }; - - var cache = new TestRunCache(cacheSize, TimeSpan.MaxValue, tester.CacheHitOnSize); - - for (var i = 0; i < cacheSize; i++) - { - var tr = this.GetTestResult(i); - if (i < 5) - { - tr.Outcome = TestOutcome.Passed; - } - else - { - tr.Outcome = TestOutcome.Failed; - } - - cache.OnNewTestResult(tr); - } - - var stats = cache.TestRunStatistics; - - Assert.AreEqual(cacheSize, stats.ExecutedTests); - Assert.AreEqual(5, stats.Stats[TestOutcome.Passed]); - Assert.AreEqual(5, stats.Stats[TestOutcome.Failed]); + var tr = GetTestResult(i); + tr.Outcome = i < 5 ? TestOutcome.Passed : TestOutcome.Failed; + + cache.OnNewTestResult(tr); } - #endregion + var stats = cache.TestRunStatistics; - #region Helpers + Assert.AreEqual(cacheSize, stats.ExecutedTests); + Assert.AreEqual(5, stats.Stats![TestOutcome.Passed]); + Assert.AreEqual(5, stats.Stats[TestOutcome.Failed]); + } - private Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult GetTestResult(int index) - { - var tc = new TestCase("Test" + index, new Uri("executor://dummy"), "DummySourceFileName"); - var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(tc); - testResult.TestCase.Id = Guid.NewGuid(); + #endregion - return testResult; - } + #region Helpers - private class TestCacheTester - { - public long ExpectedCacheSize { get; set; } + private static Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult GetTestResult(int index) + { + var tc = new TestCase("Test" + index, new Uri("executor://dummy"), "DummySourceFileName"); + var testResult = new Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult(tc); + testResult.TestCase.Id = Guid.NewGuid(); - public int CacheHitCount { get; set; } + return testResult; + } - public int TotalInProgressTestsReceived { get; set; } + private class TestCacheTester + { + public long ExpectedCacheSize { get; set; } - public void CacheHitOnSize(TestRunStatistics stats, ICollection results, ICollection tests) - { - Assert.AreEqual(this.ExpectedCacheSize, results.Count + tests.Count); - this.CacheHitCount++; - this.TotalInProgressTestsReceived += tests.Count; - } + public int CacheHitCount { get; set; } - public void CacheHitOnTimerLimit(ICollection results, ICollection tests) - { - this.CacheHitCount++; - this.TotalInProgressTestsReceived += tests.Count; - } + public int TotalInProgressTestsReceived { get; set; } + + public void CacheHitOnSize(TestRunStatistics _, ICollection results, ICollection tests) + { + Assert.AreEqual(ExpectedCacheSize, results.Count + tests.Count); + CacheHitCount++; + TotalInProgressTestsReceived += tests.Count; } - #endregion + public void CacheHitOnTimerLimit(ICollection _, ICollection tests) + { + CacheHitCount++; + TotalInProgressTestsReceived += tests.Count; + } } + + #endregion } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj index 34239e46b1..66186d5c45 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Microsoft.TestPlatform.CrossPlatEngine.UnitTests.csproj @@ -1,18 +1,14 @@ - + - ..\..\ true true - + Microsoft.TestPlatform.CrossPlatEngine.UnitTests - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - + net9.0;net48 + Exe @@ -22,11 +18,4 @@ - - - - - - - diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/PostProcessing/ArtifactProcessingTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/PostProcessing/ArtifactProcessingTests.cs new file mode 100644 index 0000000000..909ac63b15 --- /dev/null +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/PostProcessing/ArtifactProcessingTests.cs @@ -0,0 +1,302 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.ArtifactProcessing; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests; + +[TestClass] +public class ArtifactProcessingTests +{ + private readonly Mock _fileHelperMock = new(); + private readonly Mock _testRunAttachmentsProcessingManagerMock = new(); + private readonly Mock _testRunAttachmentsProcessingEventsHandlerMock = new(); + private readonly Mock _featureFlagMock = new(); + private readonly Mock _dataSerializer = new(); + private readonly Mock _testRunStatistics = new(); + private ArtifactProcessingManager _artifactProcessingManager; + + public ArtifactProcessingTests() + { + _featureFlagMock.Setup(x => x.IsSet(It.IsAny())).Returns(false); + _fileHelperMock.Setup(x => x.GetTempPath()).Returns("/tmp"); + + _artifactProcessingManager = + new ArtifactProcessingManager(Guid.NewGuid().ToString(), + _fileHelperMock.Object, + _testRunAttachmentsProcessingManagerMock.Object, + _dataSerializer.Object, + _testRunAttachmentsProcessingEventsHandlerMock.Object, + _featureFlagMock.Object); + } + + [TestMethod] + public void CollectArtifacts_NullSessionIdShouldReturn() + { + // arrange + _artifactProcessingManager = + new ArtifactProcessingManager(null, + _fileHelperMock.Object, + _testRunAttachmentsProcessingManagerMock.Object, + _dataSerializer.Object, + _testRunAttachmentsProcessingEventsHandlerMock.Object, + _featureFlagMock.Object); + + // act + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(_testRunStatistics.Object, + false, + false, + null, + new Collection() + { + new(new Uri("//sample"),"") + }, + TimeSpan.Zero); + + _artifactProcessingManager.CollectArtifacts(testRunCompleteEventArgs, string.Empty); + + //assert + _fileHelperMock.Verify(x => x.WriteAllTextToFile(It.IsAny(), It.IsAny()), Times.Never); + } + + [TestMethod] + public void CollectArtifacts_ShouldSerializeToDisk() + { + // arrange + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(_testRunStatistics.Object, + false, + false, + null, + new Collection() + { + new(new Uri("//sample"),"") + }, + TimeSpan.Zero); + + // act + _artifactProcessingManager.CollectArtifacts(testRunCompleteEventArgs, string.Empty); + + // assert + _fileHelperMock.Verify(x => x.CreateDirectory(It.IsAny()), Times.Once); + _fileHelperMock.Verify(x => x.WriteAllTextToFile(It.IsAny(), It.IsAny()), Times.Exactly(2)); + _dataSerializer.Verify(x => x.SerializePayload(It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public async Task PostProcessArtifactsAsync_NullSessionIdShouldReturn() + { + // arrange + _artifactProcessingManager = + new ArtifactProcessingManager(null, + _fileHelperMock.Object, + _testRunAttachmentsProcessingManagerMock.Object, + _dataSerializer.Object, + _testRunAttachmentsProcessingEventsHandlerMock.Object, + _featureFlagMock.Object); + + // act + await _artifactProcessingManager.PostProcessArtifactsAsync(); + + // assert + _fileHelperMock.Verify(x => x.DeleteDirectory(It.IsAny(), It.IsAny()), Times.Never); + } + + [TestMethod] + public async Task PostProcessArtifactsAsync_NoArtifactsShouldReturn() + { + // arrange + _fileHelperMock.Setup(x => x.DirectoryExists(It.IsAny())).Returns(false); + + // act + await _artifactProcessingManager.PostProcessArtifactsAsync(); + + // assert + _fileHelperMock.Verify(x => x.DeleteDirectory(It.IsAny(), It.IsAny()), Times.Never); + } + + [TestMethod] + public async Task PostProcessArtifactsAsync_ShouldRunPostProcessing() + { + // arrange + _fileHelperMock.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + _fileHelperMock.Setup(x => x.GetFiles(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, string pattern, SearchOption so) => ["/tmp/sessionId/runsettings.xml", "/tmp/sessionId/executionComplete.json"]); + _fileHelperMock.Setup(x => x.GetStream(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, FileMode mode, FileAccess access) => + { + if (path.EndsWith("runsettings.xml")) + { + return new MemoryStream(Encoding.UTF8.GetBytes(RunSettingsProviderExtensions.EmptyRunSettings)); + } + + if (path.EndsWith("executionComplete.json")) + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, + false, + false, + null, + new Collection() { new(new Uri("attachment://dummy"), "attachment") }, + TimeSpan.Zero); + + string serializedEventArgs = JsonDataSerializer.Instance.SerializePayload(MessageType.ExecutionComplete, testRunCompleteEventArgs); + return new MemoryStream(Encoding.UTF8.GetBytes(serializedEventArgs)); + } + + Assert.Fail(); + throw new Exception("Unexpected"); + }); + _dataSerializer.Setup(x => x.SerializePayload(It.IsAny(), It.IsAny())).Returns((string message, object payload) + => JsonDataSerializer.Instance.SerializePayload(message, payload)); + _dataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns((string rawMessage) + => JsonDataSerializer.Instance.DeserializeMessage(rawMessage)); + _dataSerializer.Setup(x => x.DeserializePayload(It.IsAny())).Returns((Message message) + => JsonDataSerializer.Instance.DeserializePayload(message)); + + // act + await _artifactProcessingManager.PostProcessArtifactsAsync(); + + // assert + _fileHelperMock.Verify(x => x.DeleteDirectory(It.IsAny(), It.IsAny()), Times.Once); + _testRunAttachmentsProcessingManagerMock.Verify(x => x.ProcessTestRunAttachmentsAsync(It.IsAny(), + It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public async Task PostProcessArtifactsAsync_NullRunSettings_ShouldRunPostProcessing() + { + // arrange + _fileHelperMock.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + _fileHelperMock.Setup(x => x.GetFiles(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, string pattern, SearchOption so) => ["/tmp/sessionId/executionComplete.json"]); + _fileHelperMock.Setup(x => x.GetStream(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, FileMode mode, FileAccess access) => + { + if (path.EndsWith("executionComplete.json")) + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, + false, + false, + null, + new Collection() { new(new Uri("attachment://dummy"), "attachment") }, + TimeSpan.Zero); + + string serializedEventArgs = JsonDataSerializer.Instance.SerializePayload(MessageType.ExecutionComplete, testRunCompleteEventArgs); + return new MemoryStream(Encoding.UTF8.GetBytes(serializedEventArgs)); + } + + Assert.Fail(); + throw new Exception("Unexpected"); + }); + _dataSerializer.Setup(x => x.SerializePayload(It.IsAny(), It.IsAny())).Returns((string message, object payload) + => JsonDataSerializer.Instance.SerializePayload(message, payload)); + _dataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns((string rawMessage) + => JsonDataSerializer.Instance.DeserializeMessage(rawMessage)); + _dataSerializer.Setup(x => x.DeserializePayload(It.IsAny())).Returns((Message message) + => JsonDataSerializer.Instance.DeserializePayload(message)); + + // act + await _artifactProcessingManager.PostProcessArtifactsAsync(); + + // assert + _fileHelperMock.Verify(x => x.DeleteDirectory(It.IsAny(), It.IsAny()), Times.Once); + _testRunAttachmentsProcessingManagerMock.Verify(x => x.ProcessTestRunAttachmentsAsync(It.IsAny(), + It.IsAny(), It.IsAny>(), It.IsAny>(), + It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public async Task PostProcessArtifactsAsync_EmptyInvokedDataCollectors_ShouldRunPostProcessing() + { + // arrange + _fileHelperMock.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + _fileHelperMock.Setup(x => x.GetFiles(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, string pattern, SearchOption so) => ["/tmp/sessionId/runsettings.xml"]); + _fileHelperMock.Setup(x => x.GetStream(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, FileMode mode, FileAccess access) => + { + if (path.EndsWith("runsettings.xml")) + { + return new MemoryStream(Encoding.UTF8.GetBytes(RunSettingsProviderExtensions.EmptyRunSettings)); + } + + Assert.Fail(); + throw new Exception("Unexpected"); + }); + _dataSerializer.Setup(x => x.SerializePayload(It.IsAny(), It.IsAny())).Returns((string message, object payload) + => JsonDataSerializer.Instance.SerializePayload(message, payload)); + _dataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns((string rawMessage) + => JsonDataSerializer.Instance.DeserializeMessage(rawMessage)); + _dataSerializer.Setup(x => x.DeserializePayload(It.IsAny())).Returns((Message message) + => JsonDataSerializer.Instance.DeserializePayload(message)); + + // act + await _artifactProcessingManager.PostProcessArtifactsAsync(); + + // assert + _fileHelperMock.Verify(x => x.DeleteDirectory(It.IsAny(), It.IsAny()), Times.Once); + _testRunAttachmentsProcessingManagerMock.Verify(x => x.ProcessTestRunAttachmentsAsync(It.IsAny(), + It.IsAny(), It.IsAny>(), It.IsAny>(), + It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public async Task PostProcessArtifactsAsync_DeserializationException_ShouldStopPostProcessing() + { + // arrange + _fileHelperMock.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + _fileHelperMock.Setup(x => x.GetFiles(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, string pattern, SearchOption so) => ["/tmp/sessionId/executionComplete.json"]); + _fileHelperMock.Setup(x => x.GetStream(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((string path, FileMode mode, FileAccess access) => + { + if (path.EndsWith("executionComplete.json")) + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, + false, + false, + null, + new Collection() { new(new Uri("attachment://dummy"), "attachment") }, + TimeSpan.Zero); + + string serializedEventArgs = JsonDataSerializer.Instance.SerializePayload(MessageType.ExecutionComplete, testRunCompleteEventArgs); + return new MemoryStream(Encoding.UTF8.GetBytes(serializedEventArgs)); + } + + Assert.Fail(); + throw new Exception("Unexpected"); + }); + _dataSerializer.Setup(x => x.SerializePayload(It.IsAny(), It.IsAny())).Returns((string message, object payload) + => JsonDataSerializer.Instance.SerializePayload(message, payload)); + _dataSerializer.Setup(x => x.DeserializeMessage(It.IsAny())).Returns((string rawMessage) => throw new Exception("Malformed json")); + + // act + await Assert.ThrowsExceptionAsync(() => _artifactProcessingManager.PostProcessArtifactsAsync()); + + // assert + _fileHelperMock.Verify(x => x.DeleteDirectory(It.IsAny(), It.IsAny()), Times.Once); + _testRunAttachmentsProcessingManagerMock.Verify(x => x.ProcessTestRunAttachmentsAsync(It.IsAny(), + It.IsAny(), It.IsAny>(), It.IsAny>(), + It.IsAny(), It.IsAny()), Times.Never); + } +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Program.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Program.cs deleted file mode 100644 index 939e1bde54..0000000000 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 69cb64748c..0000000000 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestPlatform.CrossPlatEngine.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("48c34b69-c0ff-4b10-b8d3-47c9a539b109")] diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestEngineTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestEngineTests.cs index 87ee90db47..420f2ab44c 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestEngineTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestEngineTests.cs @@ -1,882 +1,1081 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.TestPlatform.TestUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests; + +[TestClass] +public class TestEngineTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - - using Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.Parallel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class TestEngineTests - { - private ITestEngine testEngine; - private Mock mockProcessHelper; - private ProtocolConfig protocolConfig = new ProtocolConfig { Version = 1 }; - private ITestRuntimeProvider testableTestRuntimeProvider; - private Mock mockRequestData; - private Mock mockMetricsCollection; - - public TestEngineTests() - { - TestPluginCacheHelper.SetupMockExtensions(new[] { typeof(TestEngineTests).GetTypeInfo().Assembly.Location }, () => { }); - this.mockProcessHelper = new Mock(); - this.testableTestRuntimeProvider = new TestableRuntimeProvider(true); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(this.protocolConfig); - } - - [TestInitialize] - public void Init() - { - this.mockProcessHelper.Setup(o => o.GetCurrentProcessFileName()).Returns("vstest.console"); - this.testEngine = new TestableTestEngine(this.mockProcessHelper.Object); - } - - [TestMethod] - public void GetDiscoveryManagerShouldReturnANonNullInstance() - { - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, null); - Assert.IsNotNull(this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldReturnsNewInstanceOfProxyDiscoveryManagerIfTestHostIsShared() - { - string settingXml = - @" - - true - - "; - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - - Assert.AreNotSame(discoveryManager, this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria)); - Assert.IsInstanceOfType(this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria), typeof(ProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldReturnsParallelDiscoveryManagerIfTestHostIsNotShared() - { - string settingXml = - @" - - true - - "; - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - this.testableTestRuntimeProvider = new TestableRuntimeProvider(false); - - Assert.IsNotNull(this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria)); - Assert.IsInstanceOfType(this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria), typeof(ParallelProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagerIfCurrentProcessIsDotnet() - { - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, null); - this.mockProcessHelper.Setup(o => o.GetCurrentProcessFileName()).Returns("dotnet.exe"); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagerIfDisableAppDomainIsSet() - { - string settingXml = - @" - - x86 - true - false - .NETFramework, Version=v4.5 - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagerIfDesignModeIsTrue() - { - string settingXml = - @" - - x86 - false - true - .NETFramework, Version=v4.5 - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagereIfTargetFrameworkIsNetcoreApp() - { - string settingXml = - @" - - x86 - false - false - .NETCoreApp, Version=v1.1 - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagereIfTargetFrameworkIsNetStandard() - { - string settingXml = - @" - - x86 - false - false - .NETStandard, Version=v1.4 - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagereIfTargetPlatformIsX64() - { - string settingXml = - @" - - x64 - false - false - .NETStandard, Version=v1.4 - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldNotReturnsInProcessProxyDiscoveryManagereIfrunsettingsHasTestSettingsInIt() - { - string settingXml = - @" - - x86 - false - false - .NETFramework, Version=v4.5 - - - C:\temp.testsettings - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldReturnsInProcessProxyDiscoveryManager() - { - string settingXml = - @" - - x64 - false - false - .NETFramework, Version=v4.5 - - "; - - var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); - - var discoveryManager = this.testEngine.GetDiscoveryManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, discoveryCriteria); - Assert.IsNotNull(discoveryManager); - Assert.IsInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldReturnANonNullInstance() - { - var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100); - - Assert.IsNotNull(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria)); - } - - [TestMethod] - public void GetExecutionManagerShouldReturnNewInstance() - { - var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100); - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.AreNotSame(executionManager, this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria)); - } - - [TestMethod] - public void GetExecutionManagerShouldReturnDefaultExecutionManagerIfParallelDisabled() - { - string settingXml = @"true"; - var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100, false, settingXml); - - Assert.IsNotNull(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria)); - Assert.IsInstanceOfType(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria), typeof(ProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerWithSingleSourceShouldReturnDefaultExecutionManagerEvenIfParallelEnabled() - { - string settingXml = - @" - - 2 - true - - "; - var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100, false, settingXml); - - Assert.IsNotNull(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria)); - Assert.IsInstanceOfType(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria), typeof(ProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldReturnParallelExecutionManagerIfParallelEnabled() - { - string settingXml = @"2"; - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - Assert.IsNotNull(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria)); - Assert.IsInstanceOfType(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria), typeof(ParallelProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldReturnParallelExecutionManagerIfHostIsNotShared() - { - string settingXml = - @" - - true - - "; - this.testableTestRuntimeProvider = new TestableRuntimeProvider(false); - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - Assert.IsNotNull(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria)); - Assert.IsInstanceOfType(this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria), typeof(ParallelProxyExecutionManager)); - } - - [TestMethod] - public void GetExcecutionManagerShouldReturnExectuionManagerWithDataCollectionIfDataCollectionIsEnabled() - { - var settingXml = @""; - var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100, false, settingXml); - var result = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(result); - Assert.IsInstanceOfType(result, typeof(ProxyExecutionManagerWithDataCollection)); - } - - [TestMethod] - public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfInIsolationIsTrue() - { - string settingXml = - @" - - true - false - false - .NETFramework, Version=v4.5 - - "; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(executionManager); - Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfParallelEnabled() - { - string settingXml = - @" - - false - false - .NETFramework, Version=v4.5 - 2 - - "; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(executionManager); - Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfDataCollectorIsEnabled() - { - string settingXml = - @" - - false - false - .NETFramework, Version=v4.5 - 1 - - - - - - - - "; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(executionManager); - Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfInProcDataCollectorIsEnabled() - { - string settingXml = - @" - - false - false - .NETFramework, Version=v4.5 - 1 - - - - - - 4312 - - - - - "; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(executionManager); - Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); - } - - [TestMethod] - public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfrunsettingsHasTestSettingsInIt() - { - string settingXml = - @" - - false - false - .NETFramework, Version=v4.5 - 1 - - - C:\temp.testsettings - - "; + private readonly TestableTestEngine _testEngine; + private readonly Mock _mockProcessHelper; + private readonly ProtocolConfig _protocolConfig = new() { Version = 1 }; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + public TestEngineTests() + { + TestPluginCacheHelper.SetupMockExtensions([typeof(TestEngineTests).Assembly.Location], () => { }); + _mockProcessHelper = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _mockRequestData.Setup(rd => rd.ProtocolConfig).Returns(_protocolConfig); + _mockProcessHelper.Setup(o => o.GetCurrentProcessFileName()).Returns("vstest.console"); + _testEngine = new TestableTestEngine(_mockProcessHelper.Object); + } + + [TestMethod] + public void GetDiscoveryManagerShouldReturnANonNullInstance() + { + string settingXml = + @" + + true + + "; + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + Assert.IsNotNull(_testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object)); + } + + + [TestMethod] + public void GetDiscoveryManagerShouldReturnParallelProxyDiscoveryManagerIfNotRunningInProcess() + { + string settingXml = + @" + + true + + "; + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsInstanceOfType(discoveryManager, typeof(ParallelProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagerIfCurrentProcessIsDotnet() + { + string settingXml = + @" + + true + + "; + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + _mockProcessHelper.Setup(o => o.GetCurrentProcessFileName()).Returns("dotnet.exe"); + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagerIfDisableAppDomainIsSet() + { + string settingXml = + @" + + x86 + true + false + .NETFramework, Version=v4.5 + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagerIfDesignModeIsTrue() + { + string settingXml = + @" + + x86 + false + true + .NETFramework, Version=v4.5 + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagereIfTargetFrameworkIsNetcoreApp() + { + string settingXml = + @" + + x86 + false + false + .NETCoreApp, Version=v1.1 + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagereIfTargetFrameworkIsNetStandard() + { + string settingXml = + @" + + x86 + false + false + .NETStandard, Version=v1.4 + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagereIfTargetPlatformIsX64() + { + string settingXml = + @" + + x64 + false + false + .NETStandard, Version=v1.4 + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldNotReturnInProcessProxyDiscoveryManagereIfrunsettingsHasTestSettingsInIt() + { + string settingXml = + @" + + x86 + false + false + .NETFramework, Version=v4.5 + + + C:\temp.testsettings + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsNotInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetDiscoveryManagerShouldReturnsInProcessProxyDiscoveryManager() + { + string settingXml = + @" + + x64 + false + false + .NETFramework, Version=v4.5 + + "; + + var discoveryCriteria = new DiscoveryCriteria(new List { "1.dll" }, 100, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var discoveryManager = _testEngine.GetDiscoveryManager(_mockRequestData.Object, discoveryCriteria, sourceToSourceDetailMap, new Mock().Object); + Assert.IsNotNull(discoveryManager); + Assert.IsInstanceOfType(discoveryManager, typeof(InProcessProxyDiscoveryManager)); + } + + [TestMethod] + public void GetExecutionManagerShouldReturnANonNullInstance() + { + string settingsXml = @""; + var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100, false, settingsXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + Assert.IsNotNull(_testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object)); + } - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(executionManager); - Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); - } - - - [TestMethod] - public void GetExecutionManagerShouldReturnInProcessProxyexecutionManager() - { - string settingXml = - @" - - false - false - .NETFramework, Version=v4.5 - 1 - - "; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsNotNull(executionManager); - Assert.IsInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); - } - - [TestMethod] - public void GetExtensionManagerShouldReturnANonNullInstance() - { - Assert.IsNotNull(this.testEngine.GetExtensionManager()); - } - - [TestMethod] - public void GetExtensionManagerShouldCollectMetrics() - { - string settingXml = - @" - - false - false - .NETFramework, Version=v4.5 - 1 - - "; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - this.mockMetricsCollection.Verify(mc => mc.Add(TelemetryDataConstants.ParallelEnabledDuringExecution, It.IsAny()), Times.Once); - } - - [TestMethod] - public void ProxyDataCollectionManagerShouldBeInitialzedWithCorrectTestSourcesWhenTestRunCriteriaContainsSourceList() - { - var settingXml = @""; - - var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); - - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); - - Assert.IsTrue((executionManager as ProxyExecutionManagerWithDataCollection).ProxyDataCollectionManager.Sources.Contains("1.dll")); - } - - [TestMethod] - public void ProxyDataCollectionManagerShouldBeInitialzedWithCorrectTestSourcesWhenTestRunCriteriaContainsTestCaseList() - { - var settingXml = @""; + [TestMethod] + public void GetExecutionManagerShouldReturnNewInstance() + { + string settingsXml = @""; + var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100, false, settingsXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + Assert.AreNotSame(executionManager, _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object)); + } + + [TestMethod] + public void GetExecutionManagerShouldReturnParallelExecutionManagerIfParallelEnabled() + { + string settingXml = + @" + + 2 + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + Assert.IsNotNull(_testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object)); + Assert.IsInstanceOfType(_testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object), typeof(ParallelProxyExecutionManager)); + } + + [TestMethod] + public void GetExecutionManagerShouldReturnParallelExecutionManagerIfHostIsNotShared() + { + string settingXml = + @" + + true + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + Assert.IsNotNull(_testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object)); + Assert.IsInstanceOfType(_testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object), typeof(ParallelProxyExecutionManager)); + } + + [TestMethod] + public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfInIsolationIsTrue() + { + string settingXml = + @" + + true + false + false + .NETFramework, Version=v4.5 + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; - var testCaseList = new List { new TestCase("x.y.z", new Uri("uri://dummy"), "x.dll") }; - var testRunCriteria = new TestRunCriteria(testCaseList, 100, false, settingXml); + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); - var executionManager = this.testEngine.GetExecutionManager(this.mockRequestData.Object, this.testableTestRuntimeProvider, testRunCriteria); + Assert.IsNotNull(executionManager); + Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); + } - Assert.IsTrue((executionManager as ProxyExecutionManagerWithDataCollection).ProxyDataCollectionManager.Sources.Contains("x.dll")); - } - - /// - /// GetLoggerManager should return a non null instance. - /// - [TestMethod] - public void GetLoggerManagerShouldReturnNonNullInstance() - { - Assert.IsNotNull(this.testEngine.GetLoggerManager(mockRequestData.Object)); - } - - /// - /// GetLoggerManager should always return new instance of logger manager. - /// - [TestMethod] - public void GetLoggerManagerShouldAlwaysReturnNewInstance() + [TestMethod] + public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfParallelEnabled() + { + string settingXml = + @" + + false + false + .NETFramework, Version=v4.5 + 2 + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary { - Assert.AreNotSame(this.testEngine.GetLoggerManager(mockRequestData.Object), this.testEngine.GetLoggerManager(mockRequestData.Object)); - } + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; - [TestMethod] - public void GetTestSessionManagerShouldReturnAValidInstance() + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + Assert.IsNotNull(executionManager); + Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); + } + + [TestMethod] + public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfDataCollectorIsEnabled() + { + string settingXml = + @" + + false + false + .NETFramework, Version=v4.5 + 1 + + + + + + + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary { - var settingXml = @"true"; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - Assert.IsNotNull(this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNewInstance() - { - var settingXml = @"true"; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager1 = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.AreNotSame( - this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria), - testSessionManager1); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfParallelDisabled() - { - var settingXml = @"true"; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerEvenIfParallelEnabled() - { - string settingXml = - @" - - 2 - true - - "; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfParallelEnabled() - { - string settingXml = @"2"; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll", "2.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfHostIsNotShared() - { - string settingXml = - @" - - true - - "; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll", "2.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfDataCollectionIsEnabled() - { - var settingXml = - @" - - - - - - - "; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNullWhenTargetFrameworkIsNetFramework() - { - var settingXml = - @" - - .NETFramework, Version=v4.5 - - "; - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - Assert.IsNull(this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria)); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfCurrentProcessIsDotnet() - { - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = null - }; - this.mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("dotnet.exe"); - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfDisableAppDomainIsSet() - { - string settingXml = - @" - - x86 - true - false - .NETFramework, Version=v4.5 - - "; - - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfDesignModeIsTrue() - { - string settingXml = - @" - - x86 - false - true - .NETFramework, Version=v4.5 - - "; - - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfTargetFrameworkIsNetcoreApp() - { - string settingXml = - @" - - x86 - false - false - .NETCoreApp, Version=v1.1 - - "; - - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfTargetFrameworkIsNetStandard() - { - string settingXml = - @" - - x86 - false - false - .NETStandard, Version=v1.4 - - "; - - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfTargetPlatformIsX64() - { - string settingXml = - @" - - x64 - false - false - .NETStandard, Version=v1.4 - - "; - - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } - - [TestMethod] - public void GetTestSessionManagerShouldReturnNotNullIfRunSettingsHasTestSettingsInIt() - { - string settingXml = - @" - - x86 - false - false - .NETFramework, Version=v4.5 - - - C:\temp.testsettings - - "; - - var testSessionCriteria = new StartTestSessionCriteria() - { - Sources = new List { "1.dll" }, - RunSettings = settingXml - }; - - var testSessionManager = this.testEngine.GetTestSessionManager( - this.mockRequestData.Object, - testSessionCriteria); - - Assert.IsNotNull(testSessionManager); - } + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + Assert.IsNotNull(executionManager); + Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); + } + + [TestMethod] + public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfInProcDataCollectorIsEnabled() + { + string settingXml = + @" + + false + false + .NETFramework, Version=v4.6.2 + 1 + + + + + + 4312 + + + + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + Assert.IsNotNull(executionManager); + Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); + } + + [TestMethod] + public void GetExecutionManagerShouldNotReturnInProcessProxyexecutionManagerIfrunsettingsHasTestSettingsInIt() + { + string settingXml = + @" + + false + false + .NETFramework, Version=v4.6.2 + 1 + + + C:\temp.testsettings + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + Assert.IsNotNull(executionManager); + Assert.IsNotInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); + } + + + [TestMethod] + public void GetExecutionManagerShouldReturnInProcessProxyexecutionManager() + { + string settingXml = + @" + + false + false + .NETFramework, Version=v4.6.2 + 1 + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + Assert.IsNotNull(executionManager); + Assert.IsInstanceOfType(executionManager, typeof(InProcessProxyExecutionManager)); + } + + [TestMethod] + public void GetExtensionManagerShouldReturnANonNullInstance() + { + Assert.IsNotNull(_testEngine.GetExtensionManager()); + } + + [TestMethod] + public void GetExtensionManagerShouldCollectMetrics() + { + string settingXml = + @" + + false + false + .NETFramework, Version=v4.6.2 + 1 + + "; + + var testRunCriteria = new TestRunCriteria(new List { "1.dll", "2.dll" }, 100, false, settingXml); + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var executionManager = _testEngine.GetExecutionManager(_mockRequestData.Object, testRunCriteria, sourceToSourceDetailMap, new Mock().Object); + + _mockMetricsCollection.Verify(mc => mc.Add(TelemetryDataConstants.ParallelEnabledDuringExecution, It.IsAny()), Times.Once); + } + + /// + /// GetLoggerManager should return a non null instance. + /// + [TestMethod] + public void GetLoggerManagerShouldReturnNonNullInstance() + { + Assert.IsNotNull(_testEngine.GetLoggerManager(_mockRequestData.Object)); + } + + /// + /// GetLoggerManager should always return new instance of logger manager. + /// + [TestMethod] + public void GetLoggerManagerShouldAlwaysReturnNewInstance() + { + Assert.AreNotSame(_testEngine.GetLoggerManager(_mockRequestData.Object), _testEngine.GetLoggerManager(_mockRequestData.Object)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnAValidInstance() + { + var settingXml = @"true"; + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + Assert.IsNotNull(_testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNewInstance() + { + var settingXml = @"true"; + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager1 = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.AreNotSame( + _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object), + testSessionManager1); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfParallelDisabled() + { + var settingXml = + @" + + true + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerEvenIfParallelEnabled() + { + string settingXml = + @" + + 2 + true + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfParallelEnabled() + { + string settingXml = + @" + + 2 + + "; + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll", "2.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfHostIsNotShared() + { + string settingXml = + @" + + true + + "; + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll", "2.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + ["2.dll"] = new SourceDetail { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnDefaultTestSessionManagerIfDataCollectionIsEnabled() + { + var settingXml = + @" + + + + + + "; + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + Assert.IsInstanceOfType(testSessionManager, typeof(ProxyTestSessionManager)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNullWhenTargetFrameworkIsNetFramework() + { + var settingXml = + @" + + .NETFramework, Version=v4.5 + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + Assert.IsNull(_testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object)); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfCurrentProcessIsDotnet() + { + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = @"" + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("dotnet.exe"); + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, +new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfDisableAppDomainIsSet() + { + string settingXml = + @" + + x86 + true + false + .NETFramework, Version=v4.5 + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfDesignModeIsTrue() + { + string settingXml = + @" + + x86 + false + true + .NETFramework, Version=v4.5 + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfTargetFrameworkIsNetcoreApp() + { + string settingXml = + @" + + x86 + false + false + .NETCoreApp, Version=v1.1 + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfTargetFrameworkIsNetStandard() + { + string settingXml = + @" + + x86 + false + false + .NETStandard, Version=v1.4 + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfTargetPlatformIsX64() + { + string settingXml = + @" + + x64 + false + false + .NETStandard, Version=v1.4 + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void GetTestSessionManagerShouldReturnNotNullIfRunSettingsHasTestSettingsInIt() + { + string settingXml = + @" + + x86 + false + false + .NETFramework, Version=v4.5 + + + C:\temp.testsettings + + "; + + var testSessionCriteria = new StartTestSessionCriteria() + { + Sources = new List { "1.dll" }, + RunSettings = settingXml + }; + + var sourceToSourceDetailMap = new Dictionary + { + ["1.dll"] = new SourceDetail { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + }; + + var testSessionManager = _testEngine.GetTestSessionManager( + _mockRequestData.Object, + testSessionCriteria, + sourceToSourceDetailMap, + new Mock().Object); + + Assert.IsNotNull(testSessionManager); + } + + [TestMethod] + public void CreatingNonParallelExecutionManagerShouldReturnExecutionManagerWithDataCollectionIfDataCollectionIsEnabled() + { + var settingXml = + @" + + + + + + "; + var testRunCriteria = new TestRunCriteria(new List { "1.dll" }, 100, false, settingXml); + + var runtimeProviderInfo = new TestRuntimeProviderInfo(typeof(ITestRuntimeProvider), false, settingXml, + [new() { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }]); + var nonParallelExecutionManager = _testEngine.CreateNonParallelExecutionManager(_mockRequestData.Object, testRunCriteria, true, runtimeProviderInfo); + + Assert.IsNotNull(nonParallelExecutionManager); + Assert.IsInstanceOfType(nonParallelExecutionManager, typeof(ProxyExecutionManagerWithDataCollection)); + } + + + [TestMethod] + public void CreatedNonParallelExecutionManagerShouldBeInitialzedWithCorrectTestSourcesWhenTestRunCriteriaContainsSourceList() + { + // Test run criteria are NOT used to get sources or settings + // those are taken from the runtimeProviderInfo, because we've split the + // test run criteria into smaller pieces to run them on each non-parallel execution manager. + var testRunCriteria = new TestRunCriteria(new List { "none.dll" }, 100, false, testSettings: null); + + var settingXml = + @" + + + + + + "; + + var runtimeProviderInfo = new TestRuntimeProviderInfo(typeof(ITestRuntimeProvider), false, settingXml, + [ + new() { Source = "1.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework }, + new() { Source = "2.dll", Architecture = Architecture.X86, Framework = Framework.DefaultFramework } + ]); + var nonParallelExecutionManager = _testEngine.CreateNonParallelExecutionManager(_mockRequestData.Object, testRunCriteria, true, runtimeProviderInfo); + + Assert.IsInstanceOfType(nonParallelExecutionManager, typeof(ProxyExecutionManagerWithDataCollection)); + Assert.IsTrue(((ProxyExecutionManagerWithDataCollection)nonParallelExecutionManager).ProxyDataCollectionManager.Sources.Contains("1.dll")); + Assert.IsTrue(((ProxyExecutionManagerWithDataCollection)nonParallelExecutionManager).ProxyDataCollectionManager.Sources.Contains("2.dll")); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestExtensionManagerTests.cs index f964f88853..c4c8293cd2 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestExtensionManagerTests.cs @@ -1,54 +1,52 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests -{ - using System.Collections.Generic; - using System.Reflection; +using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class TestExtensionManagerTests - { - private ITestExtensionManager testExtensionManager; +namespace TestPlatform.CrossPlatEngine.UnitTests; - public TestExtensionManagerTests() - { - this.testExtensionManager = new TestExtensionManager(); +[TestClass] +public class TestExtensionManagerTests +{ + private readonly ITestExtensionManager _testExtensionManager; - // Reset the singleton - TestPluginCache.Instance = null; - } + public TestExtensionManagerTests() + { + _testExtensionManager = new TestExtensionManager(); - [TestCleanup] - public void TestCleanup() - { - TestPluginCache.Instance = null; - } + // Reset the singleton + TestPluginCache.Instance = null; + } - [TestMethod] - public void UseAdditionalExtensionsShouldUpdateAdditionalExtensionsInCache() - { - var extensions = new List { typeof(TestExtensionManagerTests).GetTypeInfo().Assembly.Location }; + [TestCleanup] + public void TestCleanup() + { + TestPluginCache.Instance = null; + } - this.testExtensionManager.UseAdditionalExtensions(extensions, true); + [TestMethod] + public void UseAdditionalExtensionsShouldUpdateAdditionalExtensionsInCache() + { + var extensions = new List { typeof(TestExtensionManagerTests).Assembly.Location }; - CollectionAssert.AreEquivalent(extensions, TestPluginCache.Instance.GetExtensionPaths(string.Empty)); - } + _testExtensionManager.UseAdditionalExtensions(extensions, true); - [TestMethod] - public void ClearExtensionsShouldClearExtensionsInCache() - { - var extensions = new List { @"Foo.dll" }; - this.testExtensionManager.UseAdditionalExtensions(extensions, false); + CollectionAssert.AreEquivalent(extensions, TestPluginCache.Instance.GetExtensionPaths(string.Empty)); + } + + [TestMethod] + public void ClearExtensionsShouldClearExtensionsInCache() + { + var extensions = new List { @"Foo.dll" }; + _testExtensionManager.UseAdditionalExtensions(extensions, false); - this.testExtensionManager.ClearExtensions(); + _testExtensionManager.ClearExtensions(); - Assert.AreEqual(0, TestPluginCache.Instance.GetExtensionPaths(string.Empty).Count); - } + Assert.AreEqual(0, TestPluginCache.Instance.GetExtensionPaths(string.Empty).Count); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestHostManagerFactoryTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestHostManagerFactoryTests.cs index d277598365..5a96419a44 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestHostManagerFactoryTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestHostManagerFactoryTests.cs @@ -1,59 +1,50 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.CrossPlatEngine.UnitTests; + +[TestClass] +public class TestHostManagerFactoryTests { - using System; + private readonly TestHostManagerFactory _testHostManagerFactory; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; + public TestHostManagerFactoryTests() + { + _mockMetricsCollection = new Mock(); + _mockRequestData = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _testHostManagerFactory = new TestHostManagerFactory(false); + } - using Moq; + [TestMethod] + public void GetDiscoveryManagerShouldReturnADiscoveryManagerInstance() + { + Assert.IsNotNull(_testHostManagerFactory.GetDiscoveryManager()); + } + + [TestMethod] + public void GetDiscoveryManagerShouldCacheTheDiscoveryManagerInstance() + { + Assert.AreEqual(_testHostManagerFactory.GetDiscoveryManager(), _testHostManagerFactory.GetDiscoveryManager()); + } + + [TestMethod] + public void GetDiscoveryManagerShouldReturnAnExecutionManagerInstance() + { + Assert.IsNotNull(_testHostManagerFactory.GetExecutionManager()); + } - [TestClass] - public class TestHostManagerFactoryTests + [TestMethod] + public void GetDiscoveryManagerShouldCacheTheExecutionManagerInstance() { - private TestHostManagerFactory testHostManagerFactory; - private Mock mockRequestData; - private Mock mockMetricsCollection; - - public TestHostManagerFactoryTests() - { - this.mockMetricsCollection = new Mock(); - this.mockRequestData = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.testHostManagerFactory = new TestHostManagerFactory(this.mockRequestData.Object); - } - - [TestMethod] - public void ConstructorShouldThrowIfRequestDataIsNull() - { - Assert.ThrowsException(() => new TestHostManagerFactory(null)); - } - - [TestMethod] - public void GetDiscoveryManagerShouldReturnADiscoveryManagerInstance() - { - Assert.IsNotNull(this.testHostManagerFactory.GetDiscoveryManager()); - } - - [TestMethod] - public void GetDiscoveryManagerShouldCacheTheDiscoveryManagerInstance() - { - Assert.AreEqual(this.testHostManagerFactory.GetDiscoveryManager(), this.testHostManagerFactory.GetDiscoveryManager()); - } - - [TestMethod] - public void GetDiscoveryManagerShouldReturnAnExecutionManagerInstance() - { - Assert.IsNotNull(this.testHostManagerFactory.GetExecutionManager()); - } - - [TestMethod] - public void GetDiscoveryManagerShouldCacheTheExecutionManagerInstance() - { - Assert.AreEqual(this.testHostManagerFactory.GetExecutionManager(), this.testHostManagerFactory.GetExecutionManager()); - } + Assert.AreEqual(_testHostManagerFactory.GetExecutionManager(), _testHostManagerFactory.GetExecutionManager()); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestLoggerManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestLoggerManagerTests.cs index 9221db7145..7510928451 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestLoggerManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestLoggerManagerTests.cs @@ -1,80 +1,79 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Threading; + +using Microsoft.TestPlatform.TestUtilities; using Microsoft.VisualStudio.TestPlatform.Common.Exceptions; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using ObjectModel = Microsoft.VisualStudio.TestPlatform.ObjectModel; -namespace TestPlatform.CrossPlatEngine.UnitTests +namespace TestPlatform.CrossPlatEngine.UnitTests; + +/// +/// Tests the behaviors of the TestLoggerManager class. +/// +[TestClass] +public class TestLoggerManagerTests { - using System; - using System.Collections.Generic; - using System.Reflection; - using System.Threading; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - using ObjectModel = Microsoft.VisualStudio.TestPlatform.ObjectModel; + private static int s_counter; + private static readonly EventWaitHandle WaitHandle = new AutoResetEvent(false); + private readonly string _loggerUri = "testlogger://logger"; - /// - /// Tests the behaviors of the TestLoggerManager class. - /// - [TestClass] - public class TestLoggerManagerTests + [TestInitialize] + public void Initialize() { - private static int counter = 0; - private static EventWaitHandle waitHandle = new AutoResetEvent(false); - private string loggerUri = "testlogger://logger"; - - [TestInitialize] - public void Initialize() - { - TestPluginCacheHelper.SetupMockExtensions( - new string[] { typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location }, - () => { }); - } + TestPluginCacheHelper.SetupMockExtensions( + [typeof(TestLoggerManagerTests).Assembly.Location], + () => { }); + } - [TestCleanup] - public void TestCleanup() - { - TestPluginCacheHelper.ResetExtensionsCache(); - } + [TestCleanup] + public void TestCleanup() + { + TestPluginCacheHelper.ResetExtensionsCache(); + } - [TestMethod] - public void TryGetUriFromFriendlyNameShouldReturnUriIfLoggerIsAdded() - { - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.TryGetUriFromFriendlyName("TestLoggerExtension", out var uri); - Assert.AreEqual(uri.ToString(), new Uri(loggerUri).ToString()); - } + [TestMethod] + public void TryGetUriFromFriendlyNameShouldReturnUriIfLoggerIsAdded() + { + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.TryGetUriFromFriendlyName("TestLoggerExtension", out var uri); + Assert.AreEqual(uri?.ToString(), new Uri(_loggerUri).ToString()); + } - [TestMethod] - public void TryGetUriFromFriendlyNameShouldNotReturnUriIfLoggerIsNotAdded() - { - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.TryGetUriFromFriendlyName("TestLoggerExtension1", out var uri); - Assert.IsNull(uri); - } + [TestMethod] + public void TryGetUriFromFriendlyNameShouldNotReturnUriIfLoggerIsNotAdded() + { + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.TryGetUriFromFriendlyName("TestLoggerExtension1", out var uri); + Assert.IsNull(uri); + } - [TestMethod] - public void GetResultsDirectoryShouldReturnNullIfRunSettingsIsNull() - { - var testLoggerManager = new DummyTestLoggerManager(); - string result = testLoggerManager.GetResultsDirectory(null); - Assert.IsNull(result); - } + [TestMethod] + public void GetResultsDirectoryShouldReturnNullIfRunSettingsIsNull() + { + var result = TestLoggerManager.GetResultsDirectory(null); + Assert.IsNull(result); + } - [TestMethod] - public void GetResultsDirectoryShouldReadResultsDirectoryFromSettingsIfSpecified() - { - string runSettingsXml = @" + [TestMethod] + public void GetResultsDirectoryShouldReadResultsDirectoryFromSettingsIfSpecified() + { + string runSettingsXml = @" 0 @@ -84,15 +83,14 @@ public void GetResultsDirectoryShouldReadResultsDirectoryFromSettingsIfSpecified "; - var testLoggerManager = new DummyTestLoggerManager(); - string result = testLoggerManager.GetResultsDirectory(runSettingsXml); - Assert.AreEqual(0, string.Compare("DummyTestResultsFolder", result)); - } + var result = TestLoggerManager.GetResultsDirectory(runSettingsXml); + Assert.AreEqual(0, string.Compare("DummyTestResultsFolder", result)); + } - [TestMethod] - public void GetResultsDirectoryShouldReturnDefaultPathIfResultsDirectoryIsNotProvidedInRunSettings() - { - string runSettingsXml = @" + [TestMethod] + public void GetResultsDirectoryShouldReturnDefaultPathIfResultsDirectoryIsNotProvidedInRunSettings() + { + string runSettingsXml = @" 0 @@ -101,16 +99,15 @@ public void GetResultsDirectoryShouldReturnDefaultPathIfResultsDirectoryIsNotPro "; - var testLoggerManager = new DummyTestLoggerManager(); - string result = testLoggerManager.GetResultsDirectory(runSettingsXml); + var result = TestLoggerManager.GetResultsDirectory(runSettingsXml); - Assert.AreEqual(0, string.Compare(Constants.DefaultResultsDirectory, result)); - } + Assert.AreEqual(0, string.Compare(Constants.DefaultResultsDirectory, result)); + } - [TestMethod] - public void GetTargetFrameworkShouldReturnFrameworkProvidedInRunSettings() - { - string runSettingsXml = @" + [TestMethod] + public void GetTargetFrameworkShouldReturnFrameworkProvidedInRunSettings() + { + string runSettingsXml = @" 0 @@ -119,174 +116,168 @@ public void GetTargetFrameworkShouldReturnFrameworkProvidedInRunSettings() "; - var testLoggerManager = new DummyTestLoggerManager(); - var framework = testLoggerManager.GetTargetFramework(runSettingsXml); + var framework = TestLoggerManager.GetTargetFramework(runSettingsXml); - Assert.AreEqual(".NETFramework,Version=v4.5", framework.Name); - } - - [TestMethod] - public void HandleTestRunMessageShouldInvokeTestRunMessageHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + Assert.AreEqual(".NETFramework,Version=v4.5", framework?.Name); + } - testLoggerManager.HandleTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "TestRunMessage")); + [TestMethod] + public void HandleTestRunMessageShouldInvokeTestRunMessageHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + testLoggerManager.HandleTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "TestRunMessage")); - [TestMethod] - public void HandleTestRunMessageShouldNotInvokeTestRunMessageHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - testLoggerManager.Dispose(); - testLoggerManager.HandleTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "TestRunMessage")); + [TestMethod] + public void HandleTestRunMessageShouldNotInvokeTestRunMessageHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - Assert.AreEqual(0, counter); - } + testLoggerManager.Dispose(); + testLoggerManager.HandleTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "TestRunMessage")); - [TestMethod] - public void HandleTestRunCompleteShouldInvokeTestRunCompleteHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + Assert.AreEqual(0, s_counter); + } - testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, new TimeSpan())); + [TestMethod] + public void HandleTestRunCompleteShouldInvokeTestRunCompleteHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, null, new TimeSpan())); - [TestMethod] - public void HandleTestRunCompleteShouldNotInvokeTestRunCompleteHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - testLoggerManager.Dispose(); - testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, new TimeSpan())); + [TestMethod] + public void HandleTestRunCompleteShouldNotInvokeTestRunCompleteHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - Assert.AreEqual(0, counter); - } + testLoggerManager.Dispose(); + testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, null, new TimeSpan())); - [TestMethod] - public void HandleTestRunCompleteShouldDisposeLoggerManager() - { - counter = 0; - waitHandle.Reset(); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + Assert.AreEqual(0, s_counter); + } - testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, new TimeSpan())); - testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, new TimeSpan())); // count should not increase because of second call. + [TestMethod] + public void HandleTestRunCompleteShouldDisposeLoggerManager() + { + s_counter = 0; + WaitHandle.Reset(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - Assert.AreEqual(1, counter); - } + testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, null, new TimeSpan())); + testLoggerManager.HandleTestRunComplete(new TestRunCompleteEventArgs(null, false, false, null, null, null, new TimeSpan())); // count should not increase because of second call. - [TestMethod] - public void HandleTestRunStatsChangeShouldInvokeTestRunChangedHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); - - testLoggerManager.HandleTestRunStatsChange( - new TestRunChangedEventArgs( - null, - new List() - { - new ObjectModel.TestResult( - new TestCase( - "This is a string.", - new Uri("some://uri"), - "This is a string.")) - }, - null)); - - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + Assert.AreEqual(1, s_counter); + } - [TestMethod] - public void HandleTestRunStatsChangeShouldNotInvokeTestRunChangedHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); - - testLoggerManager.Dispose(); - testLoggerManager.HandleTestRunStatsChange( - new TestRunChangedEventArgs( - null, - new List() - { - new ObjectModel.TestResult( - new TestCase( - "This is a string.", - new Uri("some://uri"), - "This is a string.")) - }, - null)); - - Assert.AreEqual(0, counter); - } + [TestMethod] + public void HandleTestRunStatsChangeShouldInvokeTestRunChangedHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); + + testLoggerManager.HandleTestRunStatsChange( + new TestRunChangedEventArgs( + null, + new List() + { + new( + new TestCase( + "This is a string.", + new Uri("some://uri"), + "This is a string.")) + }, + null)); + + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - [TestMethod] - public void AddLoggerShouldNotThrowExceptionIfUriIsNull() - { - var testLoggerManager = new DummyTestLoggerManager(); - Assert.ThrowsException( - () => + [TestMethod] + public void HandleTestRunStatsChangeShouldNotInvokeTestRunChangedHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); + + testLoggerManager.Dispose(); + testLoggerManager.HandleTestRunStatsChange( + new TestRunChangedEventArgs( + null, + new List() { - testLoggerManager.InitializeLoggerByUri(null, null); - }); - } + new( + new TestCase( + "This is a string.", + new Uri("some://uri"), + "This is a string.")) + }, + null)); + + Assert.AreEqual(0, s_counter); + } - [TestMethod] - public void AddLoggerShouldNotThrowExceptionIfUriIsNonExistent() - { - var testLoggerManager = new DummyTestLoggerManager(); - Assert.IsFalse(testLoggerManager.InitializeLoggerByUri(new Uri("logger://NotALogger"), null)); - } + [TestMethod] + public void AddLoggerShouldNotThrowExceptionIfUriIsNull() + { + var testLoggerManager = new DummyTestLoggerManager(); + Assert.ThrowsException( + () => testLoggerManager.InitializeLoggerByUri(null!, null)); + } - [TestMethod] - public void AddLoggerShouldAddDefaultLoggerParameterForTestLoggerWithParameters() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void AddLoggerShouldNotThrowExceptionIfUriIsNonExistent() + { + var testLoggerManager = new DummyTestLoggerManager(); + Assert.IsFalse(testLoggerManager.InitializeLoggerByUri(new Uri("logger://NotALogger"), null)); + } - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + [TestMethod] + public void AddLoggerShouldAddDefaultLoggerParameterForTestLoggerWithParameters() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" 0 @@ -301,333 +292,327 @@ public void AddLoggerShouldAddDefaultLoggerParameterForTestLoggerWithParameters( "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); - - Assert.IsNotNull(ValidLoggerWithParameters.parameters, "parameters not getting passed"); - Assert.IsTrue( - ValidLoggerWithParameters.parameters.ContainsKey(DefaultLoggerParameterNames.TestRunDirectory), - $"{DefaultLoggerParameterNames.TestRunDirectory} not added to parameters"); - Assert.IsFalse( - string.IsNullOrWhiteSpace( - ValidLoggerWithParameters.parameters[DefaultLoggerParameterNames.TestRunDirectory]), - $"parameter {DefaultLoggerParameterNames.TestRunDirectory} should not be null, empty or whitespace"); - } + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); + + Assert.IsNotNull(ValidLoggerWithParameters.Parameters, "parameters not getting passed"); + Assert.IsTrue( + ValidLoggerWithParameters.Parameters.ContainsKey(DefaultLoggerParameterNames.TestRunDirectory), + $"{DefaultLoggerParameterNames.TestRunDirectory} not added to parameters"); + Assert.IsFalse( + string.IsNullOrWhiteSpace( + ValidLoggerWithParameters.Parameters[DefaultLoggerParameterNames.TestRunDirectory]), + $"parameter {DefaultLoggerParameterNames.TestRunDirectory} should not be null, empty or whitespace"); + } - [TestMethod] - public void DisposeShouldNotThrowExceptionIfCalledMultipleTimes() - { - // Dispose the logger manager multiple times and verify that no exception is thrown. - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.Dispose(); - testLoggerManager.Dispose(); - } + [TestMethod] + public void DisposeShouldNotThrowExceptionIfCalledMultipleTimes() + { + // Dispose the logger manager multiple times and verify that no exception is thrown. + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.Dispose(); + testLoggerManager.Dispose(); + } - [TestMethod] - public void AddLoggerShouldThrowObjectDisposedExceptionAfterDisposedIsCalled() - { - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.Dispose(); + [TestMethod] + public void AddLoggerShouldThrowObjectDisposedExceptionAfterDisposedIsCalled() + { + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.Dispose(); - Assert.ThrowsException( - () => - { - testLoggerManager.InitializeLoggerByUri(new Uri("some://uri"), null); - }); - } + Assert.ThrowsException( + () => testLoggerManager.InitializeLoggerByUri(new Uri("some://uri"), null)); + } - [TestMethod] - public void EnableLoggingShouldThrowObjectDisposedExceptionAfterDisposedIsCalled() - { - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.Dispose(); - Assert.ThrowsException( - () => - { - testLoggerManager.EnableLogging(); - }); - } + [TestMethod] + public void EnableLoggingShouldThrowObjectDisposedExceptionAfterDisposedIsCalled() + { + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.Dispose(); + Assert.ThrowsException( + () => testLoggerManager.EnableLogging()); + } - [TestMethod] - public void LoggerInitialzeShouldCollectLoggersForTelemetry() - { - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void LoggerInitialzeShouldCollectLoggersForTelemetry() + { + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.InitializeLoggerByUri(new Uri(this.loggerUri), new Dictionary()); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); - // Act. - testLoggerManager.Initialize(null); + // Act. + testLoggerManager.Initialize(null); - // Verify - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger")); - } + // Verify + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger")); + } - /// - /// DiscoveryStart event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveryStartShouldInvokeDiscoveryStartHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveryStart event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveryStartShouldInvokeDiscoveryStartHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); - DiscoveryCriteria discoveryCriteria = new DiscoveryCriteria() { TestCaseFilter = "Name=Test1" }; - DiscoveryStartEventArgs discoveryStartEventArgs = new DiscoveryStartEventArgs(discoveryCriteria); + DiscoveryCriteria discoveryCriteria = new() { TestCaseFilter = "Name=Test1" }; + DiscoveryStartEventArgs discoveryStartEventArgs = new(discoveryCriteria); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.HandleDiscoveryStart(discoveryStartEventArgs); + testLoggerManager.HandleDiscoveryStart(discoveryStartEventArgs); - // Assertions when discovery events registered - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + // Assertions when discovery events registered + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - /// - /// DiscoveryStart event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveryStartShouldNotInvokeDiscoveryStartHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveryStart event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveryStartShouldNotInvokeDiscoveryStartHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); - DiscoveryCriteria discoveryCriteria = new DiscoveryCriteria() { TestCaseFilter = "Name=Test1" }; - DiscoveryStartEventArgs discoveryStartEventArgs = new DiscoveryStartEventArgs(discoveryCriteria); + DiscoveryCriteria discoveryCriteria = new() { TestCaseFilter = "Name=Test1" }; + DiscoveryStartEventArgs discoveryStartEventArgs = new(discoveryCriteria); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.Dispose(); - testLoggerManager.HandleDiscoveryStart(discoveryStartEventArgs); + testLoggerManager.Dispose(); + testLoggerManager.HandleDiscoveryStart(discoveryStartEventArgs); - // Assertions when discovery events registered - Assert.AreEqual(0, counter); - } + // Assertions when discovery events registered + Assert.AreEqual(0, s_counter); + } - /// - /// DiscoveredTests event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveredTestsShouldInvokeDiscoveredTestsHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveredTests event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveredTestsShouldInvokeDiscoveredTestsHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); - List testCases = new List { new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName") }; - DiscoveredTestsEventArgs discoveredTestsEventArgs = new DiscoveredTestsEventArgs(testCases); + List testCases = [new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")]; + DiscoveredTestsEventArgs discoveredTestsEventArgs = new(testCases); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.HandleDiscoveredTests(discoveredTestsEventArgs); + testLoggerManager.HandleDiscoveredTests(discoveredTestsEventArgs); - // Assertions when discovery events registered - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + // Assertions when discovery events registered + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - [TestMethod] - public void HandleDiscoveredTestsShouldNotInvokeDiscoveredTestsHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); + [TestMethod] + public void HandleDiscoveredTestsShouldNotInvokeDiscoveredTestsHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); - List testCases = new List { new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName") }; - DiscoveredTestsEventArgs discoveredTestsEventArgs = new DiscoveredTestsEventArgs(testCases); + List testCases = [new TestCase("This is a string.", new Uri("some://uri"), "DummySourceFileName")]; + DiscoveredTestsEventArgs discoveredTestsEventArgs = new(testCases); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.Dispose(); - testLoggerManager.HandleDiscoveredTests(discoveredTestsEventArgs); + testLoggerManager.Dispose(); + testLoggerManager.HandleDiscoveredTests(discoveredTestsEventArgs); - // Assertions when discovery events registered - Assert.AreEqual(0, counter); - } + // Assertions when discovery events registered + Assert.AreEqual(0, s_counter); + } - /// - /// TestRunStart event handler of loggers should be called only if test run events are registered. - /// - [TestMethod] - public void HandleTestRunStartShouldInvokeTestRunStartHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); + /// + /// TestRunStart event handler of loggers should be called only if test run events are registered. + /// + [TestMethod] + public void HandleTestRunStartShouldInvokeTestRunStartHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); - TestRunCriteria testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); - TestRunStartEventArgs testRunStartEventArgs = new TestRunStartEventArgs(testRunCriteria); + TestRunCriteria testRunCriteria = new(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); + TestRunStartEventArgs testRunStartEventArgs = new(testRunCriteria); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.HandleTestRunStart(testRunStartEventArgs); + testLoggerManager.HandleTestRunStart(testRunStartEventArgs); - // Assertions when test run events registered - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + // Assertions when test run events registered + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - /// - /// TestRunStart event handler of loggers should be called only if test run events are registered. - /// - [TestMethod] - public void HandleTestRunStartShouldNotInvokeTestRunStartHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); + /// + /// TestRunStart event handler of loggers should be called only if test run events are registered. + /// + [TestMethod] + public void HandleTestRunStartShouldNotInvokeTestRunStartHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); - TestRunCriteria testRunCriteria = new TestRunCriteria(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); - TestRunStartEventArgs testRunStartEventArgs = new TestRunStartEventArgs(testRunCriteria); + TestRunCriteria testRunCriteria = new(new List { @"x:dummy\foo.dll" }, 10, false, string.Empty, TimeSpan.MaxValue, null, "Name=Test1", null); + TestRunStartEventArgs testRunStartEventArgs = new(testRunCriteria); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.Dispose(); - testLoggerManager.HandleTestRunStart(testRunStartEventArgs); + testLoggerManager.Dispose(); + testLoggerManager.HandleTestRunStart(testRunStartEventArgs); - // Assertions when test run events registered - Assert.AreEqual(0, counter); - } + // Assertions when test run events registered + Assert.AreEqual(0, s_counter); + } - /// - /// DiscoveryComplete event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveryCompleteShouldInvokeDiscoveryCompleteHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveryComplete event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveryCompleteShouldInvokeDiscoveryCompleteHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); - DiscoveryCompleteEventArgs discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); + DiscoveryCompleteEventArgs discoveryCompleteEventArgs = new(2, false); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); + testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); - // Assertions when discovery events registered - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + // Assertions when discovery events registered + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - /// - /// DiscoveryComplete event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveryCompleteShouldNotInvokeDiscoveryCompleteHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveryComplete event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveryCompleteShouldNotInvokeDiscoveryCompleteHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.Dispose(); - testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); + testLoggerManager.Dispose(); + testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); - // Assertions when discovery events registered - Assert.AreEqual(0, counter); - } + // Assertions when discovery events registered + Assert.AreEqual(0, s_counter); + } - [TestMethod] - public void HandleDiscoveryCompleteShouldDisposeLoggerManager() - { - counter = 0; - waitHandle.Reset(); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); - - var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); - testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); - testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); // count should not increase because of second call. - - Assert.AreEqual(1, counter); - } + [TestMethod] + public void HandleDiscoveryCompleteShouldDisposeLoggerManager() + { + s_counter = 0; + WaitHandle.Reset(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); + + var discoveryCompleteEventArgs = new DiscoveryCompleteEventArgs(2, false); + testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); + testLoggerManager.HandleDiscoveryComplete(discoveryCompleteEventArgs); // count should not increase because of second call. + + Assert.AreEqual(1, s_counter); + } - /// - /// DiscoveryMessage event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveryMessageShouldInvokeDiscoveryMessageHandlerOfLoggers() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveryMessage event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveryMessageShouldInvokeDiscoveryMessageHandlerOfLoggers() + { + s_counter = 0; + WaitHandle.Reset(); - string message = "This is the test message"; - TestRunMessageEventArgs testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); + string message = "This is the test message"; + TestRunMessageEventArgs testRunMessageEventArgs = new(TestMessageLevel.Informational, message); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.HandleDiscoveryMessage(testRunMessageEventArgs); + testLoggerManager.HandleDiscoveryMessage(testRunMessageEventArgs); - // Assertions when discovery events registered - waitHandle.WaitOne(); - Assert.AreEqual(1, counter); - } + // Assertions when discovery events registered + WaitHandle.WaitOne(); + Assert.AreEqual(1, s_counter); + } - /// - /// DiscoveryMessage event handler of loggers should be called only if discovery events are registered. - /// - [TestMethod] - public void HandleDiscoveryMessageShouldNotInvokeDiscoveryMessageHandlerOfLoggersIfDisposed() - { - counter = 0; - waitHandle.Reset(); + /// + /// DiscoveryMessage event handler of loggers should be called only if discovery events are registered. + /// + [TestMethod] + public void HandleDiscoveryMessageShouldNotInvokeDiscoveryMessageHandlerOfLoggersIfDisposed() + { + s_counter = 0; + WaitHandle.Reset(); - string message = "This is the test message"; - TestRunMessageEventArgs testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); + string message = "This is the test message"; + TestRunMessageEventArgs testRunMessageEventArgs = new(TestMessageLevel.Informational, message); - // setup TestLogger - var testLoggerManager = new DummyTestLoggerManager(); - testLoggerManager.InitializeLoggerByUri(new Uri(loggerUri), new Dictionary()); - testLoggerManager.EnableLogging(); + // setup TestLogger + var testLoggerManager = new DummyTestLoggerManager(); + testLoggerManager.InitializeLoggerByUri(new Uri(_loggerUri), new()); + testLoggerManager.EnableLogging(); - testLoggerManager.Dispose(); - testLoggerManager.HandleDiscoveryMessage(testRunMessageEventArgs); + testLoggerManager.Dispose(); + testLoggerManager.HandleDiscoveryMessage(testRunMessageEventArgs); - Assert.AreEqual(0, counter); - } + Assert.AreEqual(0, s_counter); + } - [TestMethod] - public void InitializeShouldInitializeLoggerFromFriendlyNameWhenOnlyFriendlyNamePresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggerFromFriendlyNameWhenOnlyFriendlyNamePresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" @@ -636,24 +621,24 @@ public void InitializeShouldInitializeLoggerFromFriendlyNameWhenOnlyFriendlyName "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeLoggerFromUriWhenOnlyUriPresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggerFromUriWhenOnlyUriPresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" @@ -662,27 +647,27 @@ public void InitializeShouldInitializeLoggerFromUriWhenOnlyUriPresent() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeLoggerFromAssemblyNameWhenAssemblyNameAndCodeBasePresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggerFromAssemblyNameWhenAssemblyNameAndCodeBasePresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -691,26 +676,26 @@ public void InitializeShouldInitializeLoggerFromAssemblyNameWhenAssemblyNameAndC "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldNotInitializeLoggersWhenOnlyAssemblyNameIsPresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeLoggersWhenOnlyAssemblyNameIsPresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - string settingsXml = - @" + string settingsXml = + @" @@ -719,28 +704,25 @@ public void InitializeShouldNotInitializeLoggersWhenOnlyAssemblyNameIsPresent() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - Assert.ThrowsException(() => - { - testLoggerManager.Initialize(settingsXml); - }); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - } + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + } - [TestMethod] - public void InitializeShouldNotInitializeLoggersFromAssemblyNameWhenInterfaceDoesNotMatch() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeLoggersFromAssemblyNameWhenInterfaceDoesNotMatch() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(InvalidLogger).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(InvalidLogger).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -749,27 +731,24 @@ public void InitializeShouldNotInitializeLoggersFromAssemblyNameWhenInterfaceDoe "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - Assert.ThrowsException(() => - { - testLoggerManager.Initialize(settingsXml); - }); - Assert.AreEqual(0, InvalidLogger.counter); - } + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + Assert.AreEqual(0, InvalidLogger.Counter); + } - [TestMethod] - public void InitializeShouldNotInitializeLoggersWhenAssemblyNameInvalid() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeLoggersWhenAssemblyNameInvalid() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = "invalid"; + var assemblyQualifiedName = "invalid"; - string settingsXml = - @" + string settingsXml = + @" @@ -778,27 +757,24 @@ public void InitializeShouldNotInitializeLoggersWhenAssemblyNameInvalid() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - Assert.ThrowsException(() => - { - testLoggerManager.Initialize(settingsXml); - }); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - } + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + } - [TestMethod] - public void InitializeShouldNotInitializeLoggersWhenCodeBaseInvalid() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeLoggersWhenCodeBaseInvalid() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(InvalidLogger).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(InvalidLogger).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -807,29 +783,26 @@ public void InitializeShouldNotInitializeLoggersWhenCodeBaseInvalid() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - Assert.ThrowsException(() => - { - testLoggerManager.Initialize(settingsXml); - }); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - } + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + } - [TestMethod] - public void InitializeShouldInitializeLoggerOnceWhenMultipleLoggersWithSameAssemblyNamePresent() - { - // Duplicate loggers should be ignored - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggerOnceWhenMultipleLoggersWithSameAssemblyNamePresent() + { + // Duplicate loggers should be ignored + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -839,28 +812,28 @@ public void InitializeShouldInitializeLoggerOnceWhenMultipleLoggersWithSameAssem "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeLoggerOnce() - { - // Duplicate loggers should be ignored - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggerOnce() + { + // Duplicate loggers should be ignored + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -872,27 +845,27 @@ public void InitializeShouldInitializeLoggerOnce() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldNotConsiderLoggerAsInitializedWhenInitializationErrorOccurs() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotConsiderLoggerAsInitializedWhenInitializationErrorOccurs() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(LoggerWithInitializationError).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(LoggerWithInitializationError).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -901,27 +874,24 @@ public void InitializeShouldNotConsiderLoggerAsInitializedWhenInitializationErro "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - Assert.ThrowsException(() => - { - testLoggerManager.Initialize(settingsXml); - }); - } + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + } - [TestMethod] - public void InitializeShouldThrowWhenLoggerManagerAlreadyDisposed() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldThrowWhenLoggerManagerAlreadyDisposed() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -930,24 +900,24 @@ public void InitializeShouldThrowWhenLoggerManagerAlreadyDisposed() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Dispose(); - Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); - } + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Dispose(); + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + } - [TestMethod] - public void InitializeShouldInitilaizeMultipleLoggersIfPresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitilaizeMultipleLoggersIfPresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -958,27 +928,27 @@ public void InitializeShouldInitilaizeMultipleLoggersIfPresent() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void AreLoggersInitializedShouldReturnTrueWhenLoggersInitialized() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void AreLoggersInitializedShouldReturnTrueWhenLoggersInitialized() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -989,53 +959,35 @@ public void AreLoggersInitializedShouldReturnTrueWhenLoggersInitialized() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); - - Assert.IsTrue(testLoggerManager.LoggersInitialized); - } - - [TestMethod] - public void AreLoggersInitializedShouldReturnFalseWhenLoggersNotInitialized() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; - - string settingsXml = - @" - - - - - - - - - "; + Assert.IsTrue(testLoggerManager.LoggersInitialized); + } - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + [TestMethod] + public void AreLoggersInitializedShouldReturnFalseWhenLoggersNotInitialized() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - Assert.IsFalse(testLoggerManager.LoggersInitialized); - } + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - [TestMethod] - public void AreLoggersInitializedShouldReturnFalseWhenNoLoggersPresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + Assert.IsFalse(testLoggerManager.LoggersInitialized); + } - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + [TestMethod] + public void AreLoggersInitializedShouldReturnFalseWhenNoLoggersPresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" @@ -1043,25 +995,25 @@ public void AreLoggersInitializedShouldReturnFalseWhenNoLoggersPresent() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.IsFalse(testLoggerManager.LoggersInitialized); - } + Assert.IsFalse(testLoggerManager.LoggersInitialized); + } - [TestMethod] - public void InitializeShouldPassConfigurationElementAsParameters() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldPassConfigurationElementAsParameters() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1077,31 +1029,31 @@ public void InitializeShouldPassConfigurationElementAsParameters() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldSkipEmptyConfigurationValueInParameters() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldSkipEmptyConfigurationValueInParameters() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1117,31 +1069,31 @@ public void InitializeShouldSkipEmptyConfigurationValueInParameters() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(3, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.IsFalse(ValidLoggerWithParameters.parameters.TryGetValue("Key1", out var key1Value)); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(3, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.IsFalse(ValidLoggerWithParameters.Parameters.TryGetValue("Key1", out var key1Value)); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldUseLastValueInParametersForDuplicateConfigurationValue() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldUseLastValueInParametersForDuplicateConfigurationValue() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1158,31 +1110,31 @@ public void InitializeShouldUseLastValueInParametersForDuplicateConfigurationVal "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value3", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value3", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldNotInitializeDisabledLoggers() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeDisabledLoggers() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1193,27 +1145,27 @@ public void InitializeShouldNotInitializeDisabledLoggers() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2")); - } + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2")); + } - [TestMethod] - public void InitializeShouldInitializeFromAssemblyNameIfAllAttributesPresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeFromAssemblyNameIfAllAttributesPresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var assemblyQualifiedName = typeof(ValidLoggerWithParameters).AssemblyQualifiedName; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1229,29 +1181,29 @@ public void InitializeShouldInitializeFromAssemblyNameIfAllAttributesPresent() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeFromUriIfUriAndNamePresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeFromUriIfUriAndNamePresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1267,29 +1219,29 @@ public void InitializeShouldInitializeFromUriIfUriAndNamePresent() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeFromUriIfUnableToFromAssemblyName() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeFromUriIfUnableToFromAssemblyName() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1305,29 +1257,29 @@ public void InitializeShouldInitializeFromUriIfUnableToFromAssemblyName() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeFromNameIfUnableToFromUri() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeFromNameIfUnableToFromUri() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1343,29 +1295,29 @@ public void InitializeShouldInitializeFromNameIfUnableToFromUri() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeLoggersWithTestRunDirectoryIfPresentInRunSettings() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggersWithTestRunDirectoryIfPresentInRunSettings() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" 0 @@ -1387,30 +1339,30 @@ public void InitializeShouldInitializeLoggersWithTestRunDirectoryIfPresentInRunS "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual("DummyTestResultsFolder", ValidLoggerWithParameters.parameters["testRunDirectory"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual("DummyTestResultsFolder", ValidLoggerWithParameters.Parameters["testRunDirectory"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldInitializeLoggersWithDefaultTestRunDirectoryIfNotPresentInRunSettings() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldInitializeLoggersWithDefaultTestRunDirectoryIfNotPresentInRunSettings() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" 0 @@ -1431,30 +1383,30 @@ public void InitializeShouldInitializeLoggersWithDefaultTestRunDirectoryIfNotPre "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(1, ValidLoggerWithParameters.counter); - Assert.AreEqual(4, ValidLoggerWithParameters.parameters.Count); // Two additional because of testRunDirectory and targetFramework - Assert.AreEqual("Value1", ValidLoggerWithParameters.parameters["Key1"]); - Assert.AreEqual(Constants.DefaultResultsDirectory, ValidLoggerWithParameters.parameters["testRunDirectory"]); - Assert.AreEqual("Value2", ValidLoggerWithParameters.parameters["Key2"]); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); - } + Assert.AreEqual(1, ValidLoggerWithParameters.Counter); + Assert.AreEqual(4, ValidLoggerWithParameters.Parameters!.Count); // Two additional because of testRunDirectory and targetFramework + Assert.AreEqual("Value1", ValidLoggerWithParameters.Parameters["Key1"]); + Assert.AreEqual(Constants.DefaultResultsDirectory, ValidLoggerWithParameters.Parameters["testRunDirectory"]); + Assert.AreEqual("Value2", ValidLoggerWithParameters.Parameters["Key2"]); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLogger2,TestPlatform.CrossPlatEngine.UnitTests.TestLoggerManagerTests+ValidLoggerWithParameters")); + } - [TestMethod] - public void InitializeShouldNotInitializeIfUnableToFromName() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeIfUnableToFromName() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - var codeBase = typeof(TestLoggerManagerTests).GetTypeInfo().Assembly.Location; + var codeBase = typeof(TestLoggerManagerTests).Assembly.Location; - string settingsXml = - @" + string settingsXml = + @" @@ -1470,90 +1422,87 @@ public void InitializeShouldNotInitializeIfUnableToFromName() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - Assert.ThrowsException(() => - { - testLoggerManager.Initialize(settingsXml); - }); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - } + Assert.ThrowsException(() => testLoggerManager.Initialize(settingsXml)); + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + } - [TestMethod] - public void InitializeShouldNotInitializeAnyLoggerIfNoLoggerPresent() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeAnyLoggerIfNoLoggerPresent() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); - } + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); + } - [TestMethod] - public void InitializeShouldNotInitializeAnyLoggerIfEmptyLoggerRunSettings() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeAnyLoggerIfEmptyLoggerRunSettings() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); - } + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); + } - [TestMethod] - public void InitializeShouldNotThrowWhenLoggersNotPresentInRunSettings() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotThrowWhenLoggersNotPresentInRunSettings() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); - } + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); + } - [TestMethod] - public void InitializeShouldNotInitializeAnyLoggerIfEmptyLoggersNode() - { - ValidLoggerWithParameters.Reset(); - var mockRequestData = new Mock(); - var mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + [TestMethod] + public void InitializeShouldNotInitializeAnyLoggerIfEmptyLoggersNode() + { + ValidLoggerWithParameters.Reset(); + var mockRequestData = new Mock(); + var mockMetricsCollection = new Mock(); + mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); - string settingsXml = - @" + string settingsXml = + @" @@ -1561,157 +1510,156 @@ public void InitializeShouldNotInitializeAnyLoggerIfEmptyLoggersNode() "; - var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); - testLoggerManager.Initialize(settingsXml); + var testLoggerManager = new DummyTestLoggerManager(mockRequestData.Object); + testLoggerManager.Initialize(settingsXml); - Assert.AreEqual(0, ValidLoggerWithParameters.counter); - mockMetricsCollection.Verify( - rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); - } + Assert.AreEqual(0, ValidLoggerWithParameters.Counter); + mockMetricsCollection.Verify( + rd => rd.Add(TelemetryDataConstants.LoggerUsed, "")); + } - [ExtensionUri("testlogger://logger")] - [FriendlyName("TestLoggerExtension")] - private class ValidLogger : ITestLogger + [ExtensionUri("testlogger://logger")] + [FriendlyName("TestLoggerExtension")] + private class ValidLogger : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - events.TestRunMessage += TestMessageHandler; - events.TestRunComplete += Events_TestRunComplete; - events.TestResult += Events_TestResult; - events.TestRunStart += TestRunStartHandler; - - events.DiscoveryStart += DiscoveryStartHandler; - events.DiscoveryMessage += DiscoveryMessageHandler; - events.DiscoveredTests += DiscoveredTestsHandler; - events.DiscoveryComplete += DiscoveryCompleteHandler; - } + events.TestRunMessage += TestMessageHandler; + events.TestRunComplete += Events_TestRunComplete; + events.TestResult += Events_TestResult; + events.TestRunStart += TestRunStartHandler; - private void Events_TestResult(object sender, TestResultEventArgs e) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); - } - - private void Events_TestRunComplete(object sender, TestRunCompleteEventArgs e) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); + events.DiscoveryStart += DiscoveryStartHandler; + events.DiscoveryMessage += DiscoveryMessageHandler; + events.DiscoveredTests += DiscoveredTestsHandler; + events.DiscoveryComplete += DiscoveryCompleteHandler; + } - } + private void Events_TestResult(object? sender, TestResultEventArgs e) + { + s_counter++; + WaitHandle.Set(); + } - private void TestMessageHandler(object sender, TestRunMessageEventArgs e) - { - if (e.Message.Equals("TestRunMessage")) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); + private void Events_TestRunComplete(object? sender, TestRunCompleteEventArgs e) + { + s_counter++; + WaitHandle.Set(); - } - } + } - private void TestRunStartHandler(object sender, TestRunStartEventArgs e) + private void TestMessageHandler(object? sender, TestRunMessageEventArgs e) + { + if (e.Message.Equals("TestRunMessage")) { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); - } + s_counter++; + WaitHandle.Set(); - private void DiscoveryMessageHandler(object sender, TestRunMessageEventArgs e) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); } + } - private void DiscoveryStartHandler(object sender, DiscoveryStartEventArgs e) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); - } + private void TestRunStartHandler(object? sender, TestRunStartEventArgs e) + { + s_counter++; + WaitHandle.Set(); + } - private void DiscoveredTestsHandler(object sender, DiscoveredTestsEventArgs e) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); - } + private void DiscoveryMessageHandler(object? sender, TestRunMessageEventArgs e) + { + s_counter++; + WaitHandle.Set(); + } - private void DiscoveryCompleteHandler(object sender, DiscoveryCompleteEventArgs e) - { - TestLoggerManagerTests.counter++; - TestLoggerManagerTests.waitHandle.Set(); - } + private void DiscoveryStartHandler(object? sender, DiscoveryStartEventArgs e) + { + s_counter++; + WaitHandle.Set(); } - [ExtensionUri("testlogger://logger2")] - [FriendlyName("TestLoggerExtension2")] - private class ValidLogger2 : ITestLogger + private void DiscoveredTestsHandler(object? sender, DiscoveredTestsEventArgs e) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - } + s_counter++; + WaitHandle.Set(); + } + private void DiscoveryCompleteHandler(object? sender, DiscoveryCompleteEventArgs e) + { + s_counter++; + WaitHandle.Set(); } + } - [ExtensionUri("testlogger://invalidLogger")] - [FriendlyName("InvalidTestLoggerExtension")] - private class InvalidLogger + [ExtensionUri("testlogger://logger2")] + [FriendlyName("TestLoggerExtension2")] + private class ValidLogger2 : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public static int counter = 0; + } - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - counter++; - } + } - } + [ExtensionUri("testlogger://invalidLogger")] + [FriendlyName("InvalidTestLoggerExtension")] + private class InvalidLogger + { + public static int Counter; - [ExtensionUri("testlogger://loggerWithError")] - [FriendlyName("ErroredTestLoggerExtension")] - private class LoggerWithInitializationError : ITestLogger + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Usage is unclear so keeping as non-static")] + public void Initialize(TestLoggerEvents _, string _2) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - throw new Exception(); - } + Counter++; } - [ExtensionUri("test-logger-with-parameter://logger")] - [FriendlyName("TestLoggerWithParameterExtension")] - private class ValidLoggerWithParameters : ITestLoggerWithParameters + } + + [ExtensionUri("testlogger://loggerWithError")] + [FriendlyName("ErroredTestLoggerExtension")] + private class LoggerWithInitializationError : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - public static Dictionary parameters; - public static int counter = 0; + throw new Exception(); + } + } - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - counter += 2; - } + [ExtensionUri("test-logger-with-parameter://logger")] + [FriendlyName("TestLoggerWithParameterExtension")] + private class ValidLoggerWithParameters : ITestLoggerWithParameters + { + public static Dictionary? Parameters; + public static int Counter; - public void Initialize(TestLoggerEvents events, Dictionary parameters) - { - counter++; - ValidLoggerWithParameters.parameters = parameters; - } + public void Initialize(TestLoggerEvents events, string testRunDirectory) + { + Counter += 2; + } - public static void Reset() - { - counter = 0; - ValidLoggerWithParameters.parameters = null; - } + public void Initialize(TestLoggerEvents events, Dictionary parameters) + { + Counter++; + Parameters = parameters; } - internal class DummyTestLoggerManager : TestLoggerManager + public static void Reset() { - public DummyTestLoggerManager() : base(null, TestSessionMessageLogger.Instance, new InternalTestLoggerEvents(TestSessionMessageLogger.Instance)) - { + Counter = 0; + Parameters = null; + } + } - } + internal class DummyTestLoggerManager : TestLoggerManager + { + public DummyTestLoggerManager() + : base(null!, TestSessionMessageLogger.Instance, new InternalTestLoggerEvents(TestSessionMessageLogger.Instance)) + { - public DummyTestLoggerManager(IRequestData requestData) : base(requestData, TestSessionMessageLogger.Instance, new InternalTestLoggerEvents(TestSessionMessageLogger.Instance)) - { + } + + public DummyTestLoggerManager(IRequestData requestData) + : base(requestData, TestSessionMessageLogger.Instance, new InternalTestLoggerEvents(TestSessionMessageLogger.Instance)) + { - } } } } - - - diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestSession/TestSessionPoolTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestSession/TestSessionPoolTests.cs index ab3c47ebe0..42c8da22f6 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestSession/TestSessionPoolTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestSession/TestSessionPoolTests.cs @@ -1,124 +1,135 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestSession +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestSession; + +[TestClass] +public class TestSessionPoolTests { - using System; - - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void AddSessionShouldSucceedIfTestSessionInfoIsUnique() + { + TestSessionPool.Instance = null; + + var testSessionInfo = new TestSessionInfo(); + var proxyTestSessionManager = new ProxyTestSessionManager( + new StartTestSessionCriteria(), + 1, + _ => null, + new List()); + + Assert.IsNotNull(TestSessionPool.Instance); + Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, proxyTestSessionManager)); + Assert.IsFalse(TestSessionPool.Instance.AddSession(testSessionInfo, proxyTestSessionManager)); + } + + [TestMethod] + public void KillSessionShouldSucceedIfTestSessionExists() + { + TestSessionPool.Instance = null; + + var testSessionInfo = new TestSessionInfo(); + var mockProxyTestSessionManager = new Mock( + new StartTestSessionCriteria(), + 1, + (Func)(_ => null!), + new List()); + var mockRequestData = new Mock(); + + mockProxyTestSessionManager.SetupSequence(tsm => tsm.StopSession(It.IsAny())) + .Returns(true) + .Returns(false); + + Assert.IsNotNull(TestSessionPool.Instance); + Assert.IsFalse(TestSessionPool.Instance.KillSession(testSessionInfo, mockRequestData.Object)); + mockProxyTestSessionManager.Verify(tsm => tsm.StopSession(It.IsAny()), Times.Never); + + Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); + Assert.IsTrue(TestSessionPool.Instance.KillSession(testSessionInfo, mockRequestData.Object)); + mockProxyTestSessionManager.Verify(tsm => tsm.StopSession(mockRequestData.Object), Times.Once); + + Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); + Assert.IsFalse(TestSessionPool.Instance.KillSession(testSessionInfo, mockRequestData.Object)); + mockProxyTestSessionManager.Verify(tsm => tsm.StopSession(mockRequestData.Object), Times.Exactly(2)); + } - using Moq; + [TestMethod] + public void TakeProxyShouldSucceedIfMatchingCriteriaAreCorrect() + { + TestSessionPool.Instance = null; + + var testSessionInfo = new TestSessionInfo(); + var mockRequestData = new Mock(); + var mockProxyTestSessionManager = new Mock( + new StartTestSessionCriteria(), + 1, + (Func)(_ => null!), + new List()); + + mockProxyTestSessionManager.SetupSequence(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny())) + .Throws(new InvalidOperationException("Test Exception")) + .Returns(new ProxyOperationManager(null, null!, null!, Framework.DefaultFramework)); + + Assert.IsNotNull(TestSessionPool.Instance); + // Take proxy fails because test session is invalid. + Assert.IsNull(TestSessionPool.Instance.TryTakeProxy(new TestSessionInfo(), string.Empty, string.Empty, mockRequestData.Object)); + mockProxyTestSessionManager.Verify(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny()), Times.Never); + + Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); + + // First TakeProxy fails because of throwing, see setup sequence. + Assert.IsNull(TestSessionPool.Instance.TryTakeProxy(testSessionInfo, string.Empty, string.Empty, mockRequestData.Object)); + mockProxyTestSessionManager.Verify(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny()), Times.Once); + + // Second TakeProxy succeeds, see setup sequence. + Assert.IsNotNull(TestSessionPool.Instance.TryTakeProxy(testSessionInfo, string.Empty, string.Empty, mockRequestData.Object)); + mockProxyTestSessionManager.Verify(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny()), Times.Exactly(2)); + } - [TestClass] - public class TestSessionPoolTests + [TestMethod] + public void ReturnProxyShouldSucceedIfProxyIdIsValid() { - [TestMethod] - public void AddSessionShouldSucceedIfTestSessionInfoIsUnique() - { - TestSessionPool.Instance = null; - - var testSessionInfo = new TestSessionInfo(); - var proxyTestSessionManager = new ProxyTestSessionManager( - new StartTestSessionCriteria(), - 1, - () => { return null; }); - - Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, proxyTestSessionManager)); - Assert.IsFalse(TestSessionPool.Instance.AddSession(testSessionInfo, proxyTestSessionManager)); - } - - [TestMethod] - public void KillSessionShouldSucceedIfTestSessionExists() - { - TestSessionPool.Instance = null; - - var testSessionInfo = new TestSessionInfo(); - var mockProxyTestSessionManager = new Mock( - new StartTestSessionCriteria(), - 1, - (Func)(() => { return null; })); - - mockProxyTestSessionManager.SetupSequence(tsm => tsm.StopSession()) - .Returns(true) - .Returns(false); - - Assert.IsFalse(TestSessionPool.Instance.KillSession(testSessionInfo)); - mockProxyTestSessionManager.Verify(tsm => tsm.StopSession(), Times.Never); - - Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); - Assert.IsTrue(TestSessionPool.Instance.KillSession(testSessionInfo)); - mockProxyTestSessionManager.Verify(tsm => tsm.StopSession(), Times.Once); - - Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); - Assert.IsFalse(TestSessionPool.Instance.KillSession(testSessionInfo)); - mockProxyTestSessionManager.Verify(tsm => tsm.StopSession(), Times.Exactly(2)); - } - - [TestMethod] - public void TakeProxyShouldSucceedIfMatchingCriteriaAreCorrect() - { - TestSessionPool.Instance = null; - - var testSessionInfo = new TestSessionInfo(); - var mockProxyTestSessionManager = new Mock( - new StartTestSessionCriteria(), - 1, - (Func)(() => { return null; })); - - mockProxyTestSessionManager.SetupSequence(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny())) - .Throws(new InvalidOperationException("Test Exception")) - .Returns(new ProxyOperationManager(null, null, null)); - - // Take proxy fails because test session is invalid. - Assert.IsNull(TestSessionPool.Instance.TryTakeProxy(new TestSessionInfo(), string.Empty, string.Empty)); - mockProxyTestSessionManager.Verify(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny()), Times.Never); - - Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); - - // First TakeProxy fails because of throwing, see setup sequence. - Assert.IsNull(TestSessionPool.Instance.TryTakeProxy(testSessionInfo, string.Empty, string.Empty)); - mockProxyTestSessionManager.Verify(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny()), Times.Once); - - // Second TakeProxy succeeds, see setup sequence. - Assert.IsNotNull(TestSessionPool.Instance.TryTakeProxy(testSessionInfo, string.Empty, string.Empty)); - mockProxyTestSessionManager.Verify(tsm => tsm.DequeueProxy(It.IsAny(), It.IsAny()), Times.Exactly(2)); - } - - [TestMethod] - public void ReturnProxyShouldSucceedIfProxyIdIsValid() - { - TestSessionPool.Instance = null; - - var testSessionInfo = new TestSessionInfo(); - var mockProxyTestSessionManager = new Mock( - new StartTestSessionCriteria(), - 1, - (Func)(() => { return null; })); - - mockProxyTestSessionManager.SetupSequence(tsm => tsm.EnqueueProxy(It.IsAny())) - .Throws(new ArgumentException("Test Exception")) - .Throws(new InvalidOperationException("Test Exception")) - .Returns(true); - - Assert.IsFalse(TestSessionPool.Instance.ReturnProxy(new TestSessionInfo(), 0)); - mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Never); - - Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); - - // Simulates proxy id not found (see setup sequence). - Assert.ThrowsException(() => TestSessionPool.Instance.ReturnProxy(testSessionInfo, 0)); - mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Once); - - // Simulates proxy already available (see setup sequence). - Assert.IsFalse(TestSessionPool.Instance.ReturnProxy(testSessionInfo, 0)); - mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Exactly(2)); - - // EnqueueProxy call succeeds. - Assert.IsTrue(TestSessionPool.Instance.ReturnProxy(testSessionInfo, 0)); - mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Exactly(3)); - } + TestSessionPool.Instance = null; + + var testSessionInfo = new TestSessionInfo(); + var mockProxyTestSessionManager = new Mock( + new StartTestSessionCriteria(), + 1, + (Func)(_ => null!), + new List()); + + mockProxyTestSessionManager.SetupSequence(tsm => tsm.EnqueueProxy(It.IsAny())) + .Throws(new ArgumentException("Test Exception")) + .Throws(new InvalidOperationException("Test Exception")) + .Returns(true); + + Assert.IsNotNull(TestSessionPool.Instance); + Assert.IsFalse(TestSessionPool.Instance.ReturnProxy(new TestSessionInfo(), 0)); + mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Never); + + Assert.IsTrue(TestSessionPool.Instance.AddSession(testSessionInfo, mockProxyTestSessionManager.Object)); + + // Simulates proxy id not found (see setup sequence). + Assert.IsFalse(TestSessionPool.Instance.ReturnProxy(testSessionInfo, 0)); + mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Once); + + // Simulates proxy already available (see setup sequence). + Assert.IsFalse(TestSessionPool.Instance.ReturnProxy(testSessionInfo, 0)); + mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Exactly(2)); + + // EnqueueProxy call succeeds. + Assert.IsTrue(TestSessionPool.Instance.ReturnProxy(testSessionInfo, 0)); + mockProxyTestSessionManager.Verify(tsm => tsm.EnqueueProxy(It.IsAny()), Times.Exactly(3)); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableRuntimeProvider.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableRuntimeProvider.cs index de7089630c..6d11d7673c 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableRuntimeProvider.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableRuntimeProvider.cs @@ -1,83 +1,82 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace Microsoft.TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations; + +[ExtensionUri("executor://TestableTestHost")] +[FriendlyName("TestableTestHost")] +public class TestableRuntimeProvider : ITestRuntimeProvider { - using System; - using System.Collections.Generic; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - - [ExtensionUri("executor://TestableTestHost")] - [FriendlyName("TestableTestHost")] - public class TestableRuntimeProvider : ITestRuntimeProvider + public TestableRuntimeProvider() + { + } + + public TestableRuntimeProvider(bool shared) + { + Shared = shared; + } + + public event EventHandler? HostLaunched; + + public event EventHandler? HostExited; + + public bool Shared { get; } + + public void Initialize(IMessageLogger? logger, string runsettingsXml) + { + } + + public bool CanExecuteCurrentRunConfiguration(string? runsettingsXml) + { + return true; + } + + public void SetCustomLauncher(ITestHostLauncher customLauncher) + { + } + + public TestHostConnectionInfo GetTestHostConnectionInfo() + { + return new TestHostConnectionInfo { Endpoint = "127.0.0.1:0", Role = ConnectionRole.Client, Transport = Transport.Sockets }; + } + + public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) + { + HostLaunched?.Invoke(this, null!); + return Task.FromResult(true); + } + + public TestProcessStartInfo GetTestHostProcessStartInfo( + IEnumerable sources, + IDictionary? environmentVariables, + TestRunnerConnectionInfo connectionInfo) + { + return default!; + } + + public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) + { + return extensions; + } + + public IEnumerable GetTestSources(IEnumerable sources) + { + return sources; + } + + public Task CleanTestHostAsync(CancellationToken cancellationToken) { - public TestableRuntimeProvider() - { - } - - public TestableRuntimeProvider(bool shared) - { - Shared = shared; - } - - public event EventHandler HostLaunched; - - public event EventHandler HostExited; - - public bool Shared { get; } - - public void Initialize(IMessageLogger logger, string runsettingsXml) - { - } - - public bool CanExecuteCurrentRunConfiguration(string runsettingsXml) - { - return true; - } - - public void SetCustomLauncher(ITestHostLauncher customLauncher) - { - } - - public TestHostConnectionInfo GetTestHostConnectionInfo() - { - return new TestHostConnectionInfo { Endpoint = "127.0.0.1:0", Role = ConnectionRole.Client, Transport = Transport.Sockets }; - } - - public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) - { - HostLaunched(this, null); - return Task.FromResult(true); - } - - public TestProcessStartInfo GetTestHostProcessStartInfo( - IEnumerable sources, - IDictionary environmentVariables, - TestRunnerConnectionInfo connectionInfo) - { - return default; - } - - public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) - { - return extensions; - } - - public IEnumerable GetTestSources(IEnumerable sources) - { - return sources; - } - - public Task CleanTestHostAsync(CancellationToken cancellationToken) - { - HostExited(this, null); - return Task.FromResult(true); - } + HostExited?.Invoke(this, null!); + return Task.FromResult(true); } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestEngine.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestEngine.cs index f850fb8f6f..7d4af066fa 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestEngine.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestEngine.cs @@ -1,17 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests -{ - using Microsoft.VisualStudio.TestPlatform.Common.Hosting; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Hosting; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; + +namespace TestPlatform.CrossPlatEngine.UnitTests; - public class TestableTestEngine : TestEngine +public class TestableTestEngine : TestEngine +{ + public TestableTestEngine(IProcessHelper processHelper) + : base(TestRuntimeProviderManager.Instance, processHelper) { - public TestableTestEngine(IProcessHelper processHelper) - : base(TestRuntimeProviderManager.Instance, processHelper) - { - } } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestRunCache.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestRunCache.cs index f7521b97b2..641e04e281 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestRunCache.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/TestableImplementations/TestableTestRunCache.cs @@ -1,66 +1,68 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations -{ - using System; - using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - public class TestableTestRunCache : ITestRunCache +namespace TestPlatform.CrossPlatEngine.UnitTests.TestableImplementations; + +public sealed class TestableTestRunCache : ITestRunCache +{ + public TestableTestRunCache() { - public TestableTestRunCache() - { - this.TestStartedList = new List(); - this.TestCompletedList = new List(); - this.TestResultList = new List(); - } + TestStartedList = new List(); + TestCompletedList = new List(); + TestResultList = new List(); + TestResults = null!; + InProgressTests = null!; + TestRunStatistics = null!; + } - // use the below three to fill in data to the testable cache. - public List TestStartedList { get; private set; } + // use the below three to fill in data to the testable cache. + public List TestStartedList { get; private set; } - public List TestCompletedList { get; private set; } + public List TestCompletedList { get; private set; } - public List TestResultList { get; private set; } + public List TestResultList { get; private set; } - public ICollection InProgressTests { get; set; } + public ICollection InProgressTests { get; set; } - // Use the TestResultList instead to fill in data. This is just to avoid confusion. - public ICollection TestResults { get; set; } + // Use the TestResultList instead to fill in data. This is just to avoid confusion. + public ICollection TestResults { get; set; } - public TestRunStatistics TestRunStatistics { get; set; } + public TestRunStatistics TestRunStatistics { get; set; } - public long TotalExecutedTests { get; set; } + public long TotalExecutedTests { get; set; } - public IDictionary AdapterTelemetry => new Dictionary(); + public IDictionary AdapterTelemetry => new Dictionary(); - public ICollection GetLastChunk() - { - return this.TestResultList; - } + public ICollection GetLastChunk() + { + return TestResultList; + } - public void OnNewTestResult(TestResult testResult) - { - this.TestResultList.Add(testResult); - } + public void OnNewTestResult(TestResult testResult) + { + TestResultList.Add(testResult); + } - public bool OnTestCompletion(TestCase testCase) - { - this.TestCompletedList.Add(testCase); + public bool OnTestCompletion(TestCase testCase) + { + TestCompletedList.Add(testCase); - return false; - } + return false; + } - public void OnTestStarted(TestCase testCase) - { - this.TestStartedList.Add(testCase); - } + public void OnTestStarted(TestCase testCase) + { + TestStartedList.Add(testCase); + } - public void Dispose() - { - } + public void Dispose() + { } } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Utilities/TestSourcesUtilityTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Utilities/TestSourcesUtilityTests.cs index 5eaf9d64de..ad0932b0f8 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Utilities/TestSourcesUtilityTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Utilities/TestSourcesUtilityTests.cs @@ -1,85 +1,89 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.CrossPlatEngine.UnitTests.Adapter; + +[TestClass] +public class TestSourcesUtilityTests { - using System; - using System.IO; - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestSourcesUtilityTests - { - private static string temp = Path.GetTempPath(); + private static readonly string Temp = Path.GetTempPath(); - [TestMethod] - public void GetSourcesShouldAggregateSourcesIfMultiplePresentInAdapterSourceMap() - { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("adapter1", new List() { "source1.dll", "source2.dll" }); - adapterSourceMap.Add("adapter2", new List() { "source1.dll", "source3.dll" }); - adapterSourceMap.Add("adapter3", new List() { "source1.dll"}); - - var sources = TestSourcesUtility.GetSources(adapterSourceMap); - Assert.AreEqual(5, sources.Count()); - Assert.IsTrue(sources.Contains("source1.dll")); - Assert.IsTrue(sources.Contains("source2.dll")); - Assert.IsTrue(sources.Contains("source3.dll")); - } - - [TestMethod] - public void GetSourcesShouldGetDistinctSourcesFromTestCases() - { - var path = Path.Combine(temp, "d"); - var tests = new List() { new TestCase("test1", new Uri(path), "source1.dll"), - new TestCase("test2", new Uri(path), "source2.dll"), - new TestCase("test3", new Uri(path), "source1.dll")}; - - var sources = TestSourcesUtility.GetSources(tests); - Assert.AreEqual(2, sources.Count()); - Assert.IsTrue(sources.Contains("source1.dll")); - Assert.IsTrue(sources.Contains("source2.dll")); - } - - [TestMethod] - public void GetDefaultCodeBasePathShouldReturnNullIfAdapterSourceMapIsEmpty() + [TestMethod] + public void GetSourcesShouldAggregateSourcesIfMultiplePresentInAdapterSourceMap() + { + var adapterSourceMap = new Dictionary?> { - var adapterSourceMap = new Dictionary>(); + { "adapter1", new List() { "source1.dll", "source2.dll" } }, + { "adapter2", new List() { "source1.dll", "source3.dll" } }, + { "adapter3", new List() { "source1.dll" } } + }; - var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(adapterSourceMap); - Assert.IsNull(defaultCodeBase); - } + var sources = TestSourcesUtility.GetSources(adapterSourceMap)!; + Assert.AreEqual(5, sources.Count()); + Assert.IsTrue(sources.Contains("source1.dll")); + Assert.IsTrue(sources.Contains("source2.dll")); + Assert.IsTrue(sources.Contains("source3.dll")); + } - [TestMethod] - public void GetDefaultCodeBasePathShouldReturnNullIfTestCaseListIsEmpty() - { - var tests = new List(); + [TestMethod] + public void GetSourcesShouldGetDistinctSourcesFromTestCases() + { + var path = Path.Combine(Temp, "d"); + var tests = new List() { new("test1", new Uri(path), "source1.dll"), + new("test2", new Uri(path), "source2.dll"), + new("test3", new Uri(path), "source1.dll")}; - var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(tests); - Assert.IsNull(defaultCodeBase); - } + var sources = TestSourcesUtility.GetSources(tests); + Assert.AreEqual(2, sources.Count()); + Assert.IsTrue(sources.Contains("source1.dll")); + Assert.IsTrue(sources.Contains("source2.dll")); + } - [TestMethod] - public void GetDefaultCodeBasePathShouldReturnDefaultDirectoryPathForAdapterSourceMap() - { - var adapterSourceMap = new Dictionary>(); - adapterSourceMap.Add("adapter1", new List() { Path.Combine(temp, "folder1", "source1.dll"), Path.Combine(temp, "folder2", "source2.dll") }); + [TestMethod] + public void GetDefaultCodeBasePathShouldReturnNullIfAdapterSourceMapIsEmpty() + { + var adapterSourceMap = new Dictionary?>(); + + var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(adapterSourceMap); + Assert.IsNull(defaultCodeBase); + } - var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(adapterSourceMap); - Assert.AreEqual(Path.Combine(temp, "folder1"), defaultCodeBase); - } + [TestMethod] + public void GetDefaultCodeBasePathShouldReturnNullIfTestCaseListIsEmpty() + { + var tests = new List(); + + var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(tests); + Assert.IsNull(defaultCodeBase); + } - [TestMethod] - public void GetDefaultCodeBasePathShouldReturnDefaultDirectoryPathForTestCaseList() + [TestMethod] + public void GetDefaultCodeBasePathShouldReturnDefaultDirectoryPathForAdapterSourceMap() + { + var adapterSourceMap = new Dictionary?> { - var tests = new List() { new TestCase("test1", new Uri(Path.Combine(temp, "d")), Path.Combine(temp, "folder1", "source1.dll")) }; + { "adapter1", new List() { Path.Combine(Temp, "folder1", "source1.dll"), Path.Combine(Temp, "folder2", "source2.dll") } } + }; + + var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(adapterSourceMap); + Assert.AreEqual(Path.Combine(Temp, "folder1"), defaultCodeBase); + } + + [TestMethod] + public void GetDefaultCodeBasePathShouldReturnDefaultDirectoryPathForTestCaseList() + { + var tests = new List() { new("test1", new Uri(Path.Combine(Temp, "d")), Path.Combine(Temp, "folder1", "source1.dll")) }; - var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(tests); - Assert.AreEqual(Path.Combine(temp, "folder1"), defaultCodeBase); - } + var defaultCodeBase = TestSourcesUtility.GetDefaultCodebasePath(tests); + Assert.AreEqual(Path.Combine(Temp, "folder1"), defaultCodeBase); } } diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs index ea8e9a983c..e2d3e41e48 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs @@ -1,764 +1,771 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests; + +/// +/// The blame collector tests. +/// +[TestClass] +[TestCategory("Windows")] +public class BlameCollectorTests { - using System; - using System.Collections.Generic; - using System.Globalization; - using System.IO; - using System.Linq; - using System.Threading; - using System.Xml; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; + private readonly DataCollectionEnvironmentContext _context; + private readonly DataCollectionContext _dataCollectionContext; + private BlameCollector _blameDataCollector; + private readonly Mock _mockLogger; + private readonly Mock _mockDataColectionEvents; + private readonly Mock _mockDataCollectionSink; + private readonly Mock _mockBlameReaderWriter; + private readonly Mock _mockProcessDumpUtility; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockInactivityTimer; + private readonly Mock _mockFileHelper; + private readonly XmlElement? _configurationElement; + private readonly string _filepath; /// - /// The blame collector tests. + /// Initializes a new instance of the class. /// - [TestClass] - [TestCategory("Windows")] - public class BlameCollectorTests + public BlameCollectorTests() { - private DataCollectionEnvironmentContext context; - private DataCollectionContext dataCollectionContext; - private BlameCollector blameDataCollector; - private Mock mockLogger; - private Mock mockDataColectionEvents; - private Mock mockDataCollectionSink; - private Mock mockBlameReaderWriter; - private Mock mockProcessDumpUtility; - private Mock mockInactivityTimer; - private Mock mockFileHelper; - private XmlElement configurationElement; - private string filepath; - - /// - /// Initializes a new instance of the class. - /// - public BlameCollectorTests() - { - // Initializing mocks - this.mockLogger = new Mock(); - this.mockDataColectionEvents = new Mock(); - this.mockDataCollectionSink = new Mock(); - this.mockBlameReaderWriter = new Mock(); - this.mockProcessDumpUtility = new Mock(); - this.mockInactivityTimer = new Mock(); - this.mockFileHelper = new Mock(); - this.blameDataCollector = new TestableBlameCollector( - this.mockBlameReaderWriter.Object, - this.mockProcessDumpUtility.Object, - this.mockInactivityTimer.Object, - this.mockFileHelper.Object); - - // Initializing members - TestCase testcase = new TestCase { Id = Guid.NewGuid() }; - this.dataCollectionContext = new DataCollectionContext(testcase); - this.configurationElement = null; - this.context = new DataCollectionEnvironmentContext(this.dataCollectionContext); - - this.filepath = Path.Combine(Path.GetTempPath(), "Test"); - FileStream stream = File.Create(this.filepath); - stream.Dispose(); - } + // Initializing mocks + _mockLogger = new Mock(); + _mockDataColectionEvents = new Mock(); + _mockDataCollectionSink = new Mock(); + _mockBlameReaderWriter = new Mock(); + _mockProcessDumpUtility = new Mock(); + _mockInactivityTimer = new Mock(); + _mockFileHelper = new Mock(); + _mockProcessHelper = new Mock(); + _blameDataCollector = new TestableBlameCollector( + _mockBlameReaderWriter.Object, + _mockProcessDumpUtility.Object, + _mockInactivityTimer.Object, + _mockFileHelper.Object, + _mockProcessHelper.Object); + + // Initializing members + TestCase testcase = new() { Id = Guid.NewGuid() }; + _dataCollectionContext = new DataCollectionContext(testcase); + _configurationElement = null; + _context = new DataCollectionEnvironmentContext(_dataCollectionContext); + + _filepath = Path.Combine(Path.GetTempPath(), "Test"); + FileStream stream = File.Create(_filepath); + stream.Dispose(); + } - /// - /// The initialize should throw exception if data collection logger is null. - /// - [TestMethod] - public void InitializeShouldThrowExceptionIfDataCollectionLoggerIsNull() - { - Assert.ThrowsException(() => - { - this.blameDataCollector.Initialize( - this.configurationElement, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - null, - null); - }); - } + /// + /// The initialize should throw exception if data collection logger is null. + /// + [TestMethod] + public void InitializeShouldThrowExceptionIfDataCollectionLoggerIsNull() + { + Assert.ThrowsException(() => _blameDataCollector.Initialize( + _configurationElement, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + null!, + null!)); + } - /// - /// Initializing with collect dump for hang disabled should ensure InativityTimer is never initialized or reset - /// - [TestMethod] - public void InitializeWithDumpForHangDisabledShouldNotInitializeInactivityTimerOrCallReset() - { - int resetCalledCount = 0; + /// + /// Initializing with collect dump for hang disabled should ensure InativityTimer is never initialized or reset + /// + [TestMethod] + public void InitializeWithDumpForHangDisabledShouldNotInitializeInactivityTimerOrCallReset() + { + int resetCalledCount = 0; - this.mockInactivityTimer.Setup(x => x.ResetTimer(It.Is(y => y.TotalMinutes == 1.0))).Callback(() => { resetCalledCount++; }); + _mockInactivityTimer.Setup(x => x.ResetTimer(It.Is(y => y.TotalMinutes == 1.0))).Callback(() => resetCalledCount++); - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, false, false), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, false, false), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); - Assert.AreEqual(0, resetCalledCount, "Should not have called InactivityTimer.Reset since no collect dump on hang is disabled."); - } + Assert.AreEqual(0, resetCalledCount, "Should not have called InactivityTimer.Reset since no collect dump on hang is disabled."); + } - /// - /// Initializing with collect dump for hang should configure the timer with the right values and should - /// not call the reset method if no events are received. - /// - [TestMethod] - public void InitializeWithDumpForHangShouldInitializeInactivityTimerAndCallResetOnce() - { - int resetCalledCount = 0; + /// + /// Initializing with collect dump for hang should configure the timer with the right values and should + /// not call the reset method if no events are received. + /// + [TestMethod] + public void InitializeWithDumpForHangShouldInitializeInactivityTimerAndCallResetOnce() + { + int resetCalledCount = 0; - this.mockInactivityTimer.Setup(x => x.ResetTimer(It.Is(y => y.TotalMilliseconds == 1.0))).Callback(() => { resetCalledCount++; }); + _mockInactivityTimer.Setup(x => x.ResetTimer(It.Is(y => y.TotalMilliseconds == 1.0))).Callback(() => resetCalledCount++); - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, false, true, 1), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, false, true, 1), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); - Assert.AreEqual(1, resetCalledCount, "Should have called InactivityTimer.Reset exactly once since no events were received"); - } + Assert.AreEqual(1, resetCalledCount, "Should have called InactivityTimer.Reset exactly once since no events were received"); + } - /// - /// Initializing with collect dump for hang should configure the timer with the right values and should - /// reset for each event received - /// - [TestMethod] - public void InitializeWithDumpForHangShouldInitializeInactivityTimerAndResetForEachEventReceived() - { - int resetCalledCount = 0; + /// + /// Initializing with collect dump for hang should configure the timer with the right values and should + /// reset for each event received + /// + [TestMethod] + public void InitializeWithDumpForHangShouldInitializeInactivityTimerAndResetForEachEventReceived() + { + int resetCalledCount = 0; - this.mockInactivityTimer.Setup(x => x.ResetTimer(It.Is(y => y.TotalMilliseconds == 1.0))).Callback(() => { resetCalledCount++; }); + _mockInactivityTimer.Setup(x => x.ResetTimer(It.Is(y => y.TotalMilliseconds == 1.0))).Callback(() => resetCalledCount++); - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) - .Returns(this.filepath); + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) + .Returns(_filepath); - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, false, true, 1), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, false, true, 1), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); - TestCase testcase = new TestCase("TestProject.UnitTest.TestMethod", new Uri("test:/abc"), "abc.dll"); + TestCase testcase = new("TestProject.UnitTest.TestMethod", new Uri("test:/abc"), "abc.dll"); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase)); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase)); + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); - Assert.AreEqual(3, resetCalledCount, "Should have called InactivityTimer.Reset exactly 3 times"); - } + Assert.AreEqual(3, resetCalledCount, "Should have called InactivityTimer.Reset exactly 3 times"); + } - /// - /// Initializing with collect dump for hang should capture a dump on timeout - /// - [TestMethod] - public void InitializeWithDumpForHangShouldCaptureADumpOnTimeout() - { - this.blameDataCollector = new TestableBlameCollector( - this.mockBlameReaderWriter.Object, - this.mockProcessDumpUtility.Object, - null, - this.mockFileHelper.Object); - - var dumpFile = "abc_hang.dmp"; - var hangBasedDumpcollected = new ManualResetEventSlim(); - - this.mockFileHelper.Setup(x => x.Exists(It.Is(y => y == "abc_hang.dmp"))).Returns(true); - this.mockFileHelper.Setup(x => x.GetFullPath(It.Is(y => y == "abc_hang.dmp"))).Returns("abc_hang.dmp"); - this.mockProcessDumpUtility.Setup(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>())); - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, false)).Returns(new[] { dumpFile }); - this.mockDataCollectionSink.Setup(x => x.SendFileAsync(It.IsAny())).Callback(() => hangBasedDumpcollected.Set()); - - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, false, true, 0), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - hangBasedDumpcollected.Wait(1000); - this.mockProcessDumpUtility.Verify(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>()), Times.Once); - this.mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, false), Times.Once); - this.mockDataCollectionSink.Verify(x => x.SendFileAsync(It.Is(y => y.Path == dumpFile)), Times.Once); - } + /// + /// Initializing with collect dump for hang should capture a dump on timeout + /// + [TestMethod] + public void InitializeWithDumpForHangShouldCaptureADumpOnTimeout() + { + _blameDataCollector = new TestableBlameCollector( + _mockBlameReaderWriter.Object, + _mockProcessDumpUtility.Object, + null, + _mockFileHelper.Object, + _mockProcessHelper.Object); + + var dumpFile = "abc_hang.dmp"; + var hangBasedDumpcollected = new ManualResetEventSlim(); + + _mockFileHelper.Setup(x => x.Exists(It.Is(y => y == "abc_hang.dmp"))).Returns(true); + _mockFileHelper.Setup(x => x.GetFullPath(It.Is(y => y == "abc_hang.dmp"))).Returns("abc_hang.dmp"); + _mockProcessDumpUtility.Setup(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>())); + _mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, It.IsAny())).Returns(new[] { dumpFile }); + _mockDataCollectionSink.Setup(x => x.SendFileAsync(It.IsAny())).Callback(() => hangBasedDumpcollected.Set()); + + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, false, true, 0), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + hangBasedDumpcollected.Wait(1000); + _mockProcessDumpUtility.Verify(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>()), Times.Once); + _mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, It.IsAny()), Times.Once); + _mockDataCollectionSink.Verify(x => x.SendFileAsync(It.Is(y => y.Path == dumpFile)), Times.Once); + } - /// - /// Initializing with collect dump for hang should kill test host process even if an error - /// occurs during capturing the dump. Basically it should not throw. - /// - [TestMethod] - public void InitializeWithDumpForHangShouldCaptureKillTestHostOnTimeoutEvenIfGetDumpFileFails() - { - this.blameDataCollector = new TestableBlameCollector( - this.mockBlameReaderWriter.Object, - this.mockProcessDumpUtility.Object, - null, - this.mockFileHelper.Object); - - var hangBasedDumpcollected = new ManualResetEventSlim(); - - this.mockFileHelper.Setup(x => x.Exists(It.Is(y => y == "abc_hang.dmp"))).Returns(true); - this.mockFileHelper.Setup(x => x.GetFullPath(It.Is(y => y == "abc_hang.dmp"))).Returns("abc_hang.dmp"); - this.mockProcessDumpUtility.Setup(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>())); - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, false)).Callback(() => hangBasedDumpcollected.Set()).Throws(new Exception("Some exception")); - - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, false, true, 0), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - hangBasedDumpcollected.Wait(1000); - this.mockProcessDumpUtility.Verify(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>()), Times.Once); - this.mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, false), Times.Once); - } + /// + /// Initializing with collect dump for hang should kill test host process even if an error + /// occurs during capturing the dump. Basically it should not throw. + /// + [TestMethod] + public void InitializeWithDumpForHangShouldCaptureKillTestHostOnTimeoutEvenIfGetDumpFileFails() + { + _blameDataCollector = new TestableBlameCollector( + _mockBlameReaderWriter.Object, + _mockProcessDumpUtility.Object, + null, + _mockFileHelper.Object, + _mockProcessHelper.Object); + + var hangBasedDumpcollected = new ManualResetEventSlim(); + + _mockFileHelper.Setup(x => x.Exists(It.Is(y => y == "abc_hang.dmp"))).Returns(true); + _mockFileHelper.Setup(x => x.GetFullPath(It.Is(y => y == "abc_hang.dmp"))).Returns("abc_hang.dmp"); + _mockProcessDumpUtility.Setup(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>())); + _mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, It.IsAny())).Callback(() => hangBasedDumpcollected.Set()).Throws(new Exception("Some exception")); + + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, false, true, 0), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + hangBasedDumpcollected.Wait(1000); + _mockProcessDumpUtility.Verify(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>()), Times.Once); + _mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, It.IsAny()), Times.Once); + } - /// - /// Initializing with collect dump for hang should kill test host process even if an error - /// occurs during attaching it as a datacollector attachment. Basically it should not throw. - /// - [TestMethod] - public void InitializeWithDumpForHangShouldCaptureKillTestHostOnTimeoutEvenIfAttachingDumpFails() - { - this.blameDataCollector = new TestableBlameCollector( - this.mockBlameReaderWriter.Object, - this.mockProcessDumpUtility.Object, - null, - this.mockFileHelper.Object); - - var dumpFile = "abc_hang.dmp"; - var hangBasedDumpcollected = new ManualResetEventSlim(); - - this.mockFileHelper.Setup(x => x.Exists(It.Is(y => y == "abc_hang.dmp"))).Returns(true); - this.mockFileHelper.Setup(x => x.GetFullPath(It.Is(y => y == "abc_hang.dmp"))).Returns("abc_hang.dmp"); - this.mockProcessDumpUtility.Setup(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>())); - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, false)).Returns(new[] { dumpFile }); - this.mockDataCollectionSink.Setup(x => x.SendFileAsync(It.IsAny())).Callback(() => hangBasedDumpcollected.Set()).Throws(new Exception("Some other exception")); - - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, false, true, 0), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - hangBasedDumpcollected.Wait(1000); - this.mockProcessDumpUtility.Verify(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>()), Times.Once); - this.mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, false), Times.Once); - this.mockDataCollectionSink.Verify(x => x.SendFileAsync(It.Is(y => y.Path == dumpFile)), Times.Once); - } + /// + /// Initializing with collect dump for hang should kill test host process even if an error + /// occurs during attaching it as a datacollector attachment. Basically it should not throw. + /// + [TestMethod] + public void InitializeWithDumpForHangShouldCaptureKillTestHostOnTimeoutEvenIfAttachingDumpFails() + { + _blameDataCollector = new TestableBlameCollector( + _mockBlameReaderWriter.Object, + _mockProcessDumpUtility.Object, + null, + _mockFileHelper.Object, + _mockProcessHelper.Object); + + var dumpFile = "abc_hang.dmp"; + var hangBasedDumpcollected = new ManualResetEventSlim(); + + _mockFileHelper.Setup(x => x.Exists(It.Is(y => y == "abc_hang.dmp"))).Returns(true); + _mockFileHelper.Setup(x => x.GetFullPath(It.Is(y => y == "abc_hang.dmp"))).Returns("abc_hang.dmp"); + _mockProcessDumpUtility.Setup(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>())); + _mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, It.IsAny())).Returns(new[] { dumpFile }); + _mockDataCollectionSink.Setup(x => x.SendFileAsync(It.IsAny())).Callback(() => hangBasedDumpcollected.Set()).Throws(new Exception("Some other exception")); + + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, false, true, 0), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + hangBasedDumpcollected.Wait(1000); + _mockProcessDumpUtility.Verify(x => x.StartHangBasedProcessDump(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>()), Times.Once); + _mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, It.IsAny()), Times.Once); + _mockDataCollectionSink.Verify(x => x.SendFileAsync(It.Is(y => y.Path == dumpFile)), Times.Once); + } - /// - /// The trigger session ended handler should write to file if test start count is greater. - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldWriteToFileIfTestHostCrash() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.configurationElement, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); + /// + /// The trigger session ended handler should write to file if test start count is greater. + /// + [TestMethod] + public void TriggerSessionEndedHandlerShouldWriteToFileIfTestHostCrash() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + _configurationElement, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); - TestCase testcase = new TestCase("TestProject.UnitTest.TestMethod", new Uri("test:/abc"), "abc.dll"); + TestCase testcase = new("TestProject.UnitTest.TestMethod", new Uri("test:/abc"), "abc.dll"); - // Setup and Raise TestCaseStart and Session End Event - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) - .Returns(this.filepath); + // Setup and Raise TestCaseStart and Session End Event + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) + .Returns(_filepath); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase)); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase)); + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); - // Verify WriteTestSequence Call - this.mockBlameReaderWriter.Verify(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny()), Times.Once); - } + // Verify WriteTestSequence Call + _mockBlameReaderWriter.Verify(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny()), Times.Once); + } - /// - /// The trigger session ended handler should not write to file if test start count is same as test end count. - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldNotWriteToFileIfNoTestHostCrash() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.configurationElement, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - TestCase testcase = new TestCase("TestProject.UnitTest.TestMethod", new Uri("test:/abc"), "abc.dll"); - - // Setup and Raise TestCaseStart and Session End Event - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())).Returns(this.filepath); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase)); - this.mockDataColectionEvents.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testcase, TestOutcome.Passed)); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify WriteTestSequence Call - this.mockBlameReaderWriter.Verify(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), this.filepath), Times.Never); - } + /// + /// The trigger session ended handler should not write to file if test start count is same as test end count. + /// + [TestMethod] + public void TriggerSessionEndedHandlerShouldNotWriteToFileIfNoTestHostCrash() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + _configurationElement, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + TestCase testcase = new("TestProject.UnitTest.TestMethod", new Uri("test:/abc"), "abc.dll"); + + // Setup and Raise TestCaseStart and Session End Event + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())).Returns(_filepath); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase)); + _mockDataColectionEvents.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testcase, TestOutcome.Passed)); + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); + + // Verify WriteTestSequence Call + _mockBlameReaderWriter.Verify(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), _filepath), Times.Never); + } - /// - /// The event handlers should generate correct test sequence and testObjectDictionary for both completed and not completed tests - /// - [TestMethod] - public void EventHandlersShouldGenerateCorrectTestSequenceAndTestObjectDictionaryForBothCompletedAndNotCompletedTests() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.configurationElement, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - TestCase testcase1 = new TestCase("TestProject.UnitTest.TestMethod1", new Uri("test:/abc"), "abc.dll"); - TestCase testcase2 = new TestCase("TestProject.UnitTest.TestMethod2", new Uri("test:/abc"), "abc.dll"); - testcase1.DisplayName = "TestMethod1"; - testcase2.DisplayName = "TestMethod2"; - var blameTestObject1 = new BlameTestObject(testcase1); - var blameTestObject2 = new BlameTestObject(testcase2); - - // Setup and Raise TestCaseStart and Session End Event - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())).Returns(this.filepath); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase1)); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase2)); - this.mockDataColectionEvents.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testcase1, TestOutcome.Passed)); - blameTestObject1.IsCompleted = true; - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify call to mockBlameReaderWriter - this.mockBlameReaderWriter.Verify( - x => x.WriteTestSequence( + /// + /// The event handlers should generate correct test sequence and testObjectDictionary for both completed and not completed tests + /// + [TestMethod] + public void EventHandlersShouldGenerateCorrectTestSequenceAndTestObjectDictionaryForBothCompletedAndNotCompletedTests() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + _configurationElement, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + TestCase testcase1 = new("TestProject.UnitTest.TestMethod1", new Uri("test:/abc"), "abc.dll"); + TestCase testcase2 = new("TestProject.UnitTest.TestMethod2", new Uri("test:/abc"), "abc.dll"); + testcase1.DisplayName = "TestMethod1"; + testcase2.DisplayName = "TestMethod2"; + var blameTestObject1 = new BlameTestObject(testcase1); + var blameTestObject2 = new BlameTestObject(testcase2); + + // Setup and Raise TestCaseStart and Session End Event + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())).Returns(_filepath); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase1)); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(testcase2)); + _mockDataColectionEvents.Raise(x => x.TestCaseEnd += null, new TestCaseEndEventArgs(testcase1, TestOutcome.Passed)); + blameTestObject1.IsCompleted = true; + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); + + // Verify call to mockBlameReaderWriter + _mockBlameReaderWriter.Verify( + x => x.WriteTestSequence( It.Is>(y => y.Count == 2 && y.First() == blameTestObject1.Id && y.Last() == blameTestObject2.Id), It.Is>( y => y.Count == 2 && - y[blameTestObject1.Id].IsCompleted == true && y[blameTestObject2.Id].IsCompleted == false && - y[blameTestObject1.Id].FullyQualifiedName == "TestProject.UnitTest.TestMethod1" && y[blameTestObject2.Id].FullyQualifiedName == "TestProject.UnitTest.TestMethod2" && - y[blameTestObject1.Id].Source == "abc.dll" && y[blameTestObject2.Id].Source == "abc.dll" && - y[blameTestObject1.Id].DisplayName == "TestMethod1" && y[blameTestObject2.Id].DisplayName == "TestMethod2"), + y[blameTestObject1.Id].IsCompleted == true && y[blameTestObject2.Id].IsCompleted == false && + y[blameTestObject1.Id].FullyQualifiedName == "TestProject.UnitTest.TestMethod1" && y[blameTestObject2.Id].FullyQualifiedName == "TestProject.UnitTest.TestMethod2" && + y[blameTestObject1.Id].Source == "abc.dll" && y[blameTestObject2.Id].Source == "abc.dll" && + y[blameTestObject1.Id].DisplayName == "TestMethod1" && y[blameTestObject2.Id].DisplayName == "TestMethod2"), It.IsAny()), - Times.Once); - } + Times.Once); + } - /// - /// The trigger session ended handler should get dump files if proc dump was enabled - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldGetDumpFileIfProcDumpEnabled() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Setup - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles(It.IsAny(), It.IsAny())).Returns(new[] { this.filepath }); - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) - .Returns(this.filepath); - - // Raise - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(new TestCase())); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify GetDumpFiles Call - this.mockProcessDumpUtility.Verify(x => x.GetDumpFiles(It.IsAny(), It.IsAny()), Times.Once); - } + /// + /// The trigger session ended handler should get dump files if proc dump was enabled + /// + [TestMethod] + public void TriggerSessionEndedHandlerShouldGetDumpFileIfProcDumpEnabled() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Setup + _mockProcessDumpUtility.Setup(x => x.GetDumpFiles(It.IsAny(), It.IsAny())).Returns(new[] { _filepath }); + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) + .Returns(_filepath); + + // Raise + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(new TestCase())); + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); + + // Verify GetDumpFiles Call + _mockProcessDumpUtility.Verify(x => x.GetDumpFiles(It.IsAny(), It.IsAny()), Times.Once); + } - /// - /// The trigger session ended handler should ensure proc dump process is terminated when no crash is detected - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldEnsureProcDumpProcessIsTerminated() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Mock proc dump utility terminate process call - this.mockProcessDumpUtility.Setup(x => x.DetachFromTargetProcess(It.IsAny())); - - // Raise - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify GetDumpFiles Call - this.mockProcessDumpUtility.Verify(x => x.DetachFromTargetProcess(It.IsAny()), Times.Once); - } + /// + /// The trigger session ended handler should ensure proc dump process is terminated when no crash is detected + /// + [TestMethod] + public void TriggerSessionEndedHandlerShouldEnsureProcDumpProcessIsTerminated() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Mock proc dump utility terminate process call + _mockProcessDumpUtility.Setup(x => x.DetachFromTargetProcess(It.IsAny())); + + // Raise + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); + + // Verify GetDumpFiles Call + _mockProcessDumpUtility.Verify(x => x.DetachFromTargetProcess(It.IsAny()), Times.Once); + } - /// - /// The trigger session ended handler should get dump files if collect dump on exit was enabled irrespective of completed test case count - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldGetDumpFileIfCollectDumpOnExitIsEnabled() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(collectDumpOnExit: true), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Setup - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, false)).Returns(new[] { this.filepath }); - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) - .Returns(this.filepath); - - // Raise - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify GetDumpFiles Call - this.mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, false), Times.Once); - } + /// + /// The trigger session ended handler should get dump files if collect dump on exit was enabled irrespective of completed test case count + /// + [TestMethod] + public void TriggerSessionEndedHandlerShouldGetDumpFileIfCollectDumpOnExitIsEnabled() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(collectDumpOnExit: true), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Setup + _mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, false)).Returns(new[] { _filepath }); + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) + .Returns(_filepath); + + // Raise + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); + + // Verify GetDumpFiles Call + _mockProcessDumpUtility.Verify(x => x.GetDumpFiles(true, false), Times.Once); + } - /// - /// The trigger session ended handler should log exception if GetDumpfile throws FileNotFound Exception - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldLogWarningIfGetDumpFileThrowsFileNotFound() - { - // Initializing Blame Data Collector - // force it to collect dump on exit, which won't happen and we should see a warning - // but we should not see warning if we tell it to create dump and there is no crash - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(false, collectDumpOnExit: true), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Setup and raise events - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) - .Returns(this.filepath); - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, It.IsAny())).Throws(new FileNotFoundException()); - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - this.mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(new TestCase())); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify GetDumpFiles Call - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.IsAny()), Times.Once); - } + /// + /// The trigger session ended handler should log exception if GetDumpfile throws FileNotFound Exception + /// + [TestMethod] + public void TriggerSessionEndedHandlerShouldLogWarningIfGetDumpFileThrowsFileNotFound() + { + // Initializing Blame Data Collector + // force it to collect dump on exit, which won't happen and we should see a warning + // but we should not see warning if we tell it to create dump and there is no crash + _blameDataCollector.Initialize( + GetDumpConfigurationElement(false, collectDumpOnExit: true), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Setup and raise events + _mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) + .Returns(_filepath); + _mockProcessDumpUtility.Setup(x => x.GetDumpFiles(true, It.IsAny())).Throws(new FileNotFoundException()); + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + _mockDataColectionEvents.Raise(x => x.TestCaseStart += null, new TestCaseStartEventArgs(new TestCase())); + _mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(_dataCollectionContext)); + + // Verify GetDumpFiles Call + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.IsAny()), Times.Once); + } - /// - /// The trigger test host launched handler should start process dump utility if proc dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldStartProcDumpUtilityIfProcDumpEnabled() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify StartProcessDumpCall - this.mockProcessDumpUtility.Verify(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), false, It.IsAny(), false)); - } + /// + /// The trigger test host launched handler should start process dump utility if proc dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldStartProcDumpUtilityIfProcDumpEnabled() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify StartProcessDumpCall + _mockProcessDumpUtility.Verify(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), false, It.IsAny(), false, It.IsAny>())); + } - /// - /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldStartProcDumpUtilityForFullDumpIfFullDumpEnabled() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(isFullDump: true), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify StartProcessDumpCall - this.mockProcessDumpUtility.Verify(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), true, It.IsAny(), false)); - } + /// + /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldStartProcDumpUtilityForFullDumpIfFullDumpEnabled() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(isFullDump: true), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify StartProcessDumpCall + _mockProcessDumpUtility.Verify(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), true, It.IsAny(), false, It.IsAny>())); + } - /// - /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldStartProcDumpUtilityForFullDumpIfFullDumpEnabledCaseSensitivity() - { - var dumpConfig = this.GetDumpConfigurationElement(); - var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("DuMpType"); - dumpTypeAttribute.Value = "FuLl"; - dumpConfig[BlameDataCollector.Constants.DumpModeKey].Attributes.Append(dumpTypeAttribute); - var dumpOnExitAttribute = dumpConfig.OwnerDocument.CreateAttribute("CollEctAlways"); - dumpOnExitAttribute.Value = "FaLSe"; - dumpConfig[BlameDataCollector.Constants.DumpModeKey].Attributes.Append(dumpOnExitAttribute); - - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - dumpConfig, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify StartProcessDumpCall - this.mockProcessDumpUtility.Verify(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), true, It.IsAny(), false)); - } + /// + /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldStartProcDumpUtilityForFullDumpIfFullDumpEnabledCaseSensitivity() + { + var dumpConfig = GetDumpConfigurationElement(); + var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("DuMpType"); + dumpTypeAttribute.Value = "FuLl"; + dumpConfig[Constants.DumpModeKey]!.Attributes.Append(dumpTypeAttribute); + var dumpOnExitAttribute = dumpConfig.OwnerDocument.CreateAttribute("CollEctAlways"); + dumpOnExitAttribute.Value = "FaLSe"; + dumpConfig[Constants.DumpModeKey]!.Attributes.Append(dumpOnExitAttribute); + + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + dumpConfig, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify StartProcessDumpCall + _mockProcessDumpUtility.Verify(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), true, It.IsAny(), false, It.IsAny>())); + } - /// - /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldLogWarningForWrongCollectDumpKey() - { - var dumpConfig = this.GetDumpConfigurationElement(); - var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("Xyz"); - dumpTypeAttribute.Value = "FuLl"; - dumpConfig[BlameDataCollector.Constants.DumpModeKey].Attributes.Append(dumpTypeAttribute); - - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - dumpConfig, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentUICulture, Resources.Resources.BlameParameterKeyIncorrect, "Xyz"))), Times.Once); - } + /// + /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldLogWarningForWrongCollectDumpKey() + { + var dumpConfig = GetDumpConfigurationElement(); + var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("Xyz"); + dumpTypeAttribute.Value = "FuLl"; + dumpConfig[Constants.DumpModeKey]!.Attributes.Append(dumpTypeAttribute); + + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + dumpConfig, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentCulture, Resources.Resources.BlameParameterKeyIncorrect, "Xyz"))), Times.Once); + } - /// - /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldLogWarningForWrongDumpType() - { - var dumpConfig = this.GetDumpConfigurationElement(); - var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("DumpType"); - dumpTypeAttribute.Value = "random"; - dumpConfig[BlameDataCollector.Constants.DumpModeKey].Attributes.Append(dumpTypeAttribute); - - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - dumpConfig, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentUICulture, Resources.Resources.BlameParameterValueIncorrect, "DumpType", BlameDataCollector.Constants.FullConfigurationValue, BlameDataCollector.Constants.MiniConfigurationValue))), Times.Once); - } + /// + /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldLogWarningForWrongDumpType() + { + var dumpConfig = GetDumpConfigurationElement(); + var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("DumpType"); + dumpTypeAttribute.Value = "random"; + dumpConfig[Constants.DumpModeKey]!.Attributes.Append(dumpTypeAttribute); + + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + dumpConfig, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify + var expectedMessage = string.Format(CultureInfo.CurrentCulture, Resources.Resources.BlameParameterValueIncorrect, "DumpType", "random", string.Join(", ", Enum.GetNames(typeof(CrashDumpType)))); + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == expectedMessage)), Times.Once); + } - /// - /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldLogWarningForNonBooleanCollectAlwaysValue() - { - var dumpConfig = this.GetDumpConfigurationElement(); - var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("DumpType"); - dumpTypeAttribute.Value = "random"; - dumpConfig[BlameDataCollector.Constants.DumpModeKey].Attributes.Append(dumpTypeAttribute); - - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - dumpConfig, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentUICulture, Resources.Resources.BlameParameterValueIncorrect, "DumpType", BlameDataCollector.Constants.FullConfigurationValue, BlameDataCollector.Constants.MiniConfigurationValue))), Times.Once); - } + /// + /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldLogWarningForNonBooleanCollectAlwaysValue() + { + var dumpConfig = GetDumpConfigurationElement(); + var dumpTypeAttribute = dumpConfig.OwnerDocument.CreateAttribute("CollectAlways"); + dumpTypeAttribute.Value = "random"; + dumpConfig[Constants.DumpModeKey]!.Attributes.Append(dumpTypeAttribute); + + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + dumpConfig, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify + var expectedMessage = string.Format(CultureInfo.CurrentCulture, Resources.Resources.BlameParameterValueIncorrect, "CollectAlways", "random", string.Join(", ", new object[] { Constants.TrueConfigurationValue, Constants.FalseConfigurationValue })); + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == expectedMessage)), Times.Once); + } - /// - /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldLogNoWarningWhenDumpTypeIsUsedWithHangDumpBecauseEitherHangDumpTypeOrDumpTypeCanBeSpecified() - { - var dumpConfig = this.GetDumpConfigurationElement(isFullDump: true, false, colectDumpOnHang: true, 1800000); + /// + /// The trigger test host launched handler should start process dump utility for full dump if full dump was enabled + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldLogNoWarningWhenDumpTypeIsUsedWithHangDumpBecauseEitherHangDumpTypeOrDumpTypeCanBeSpecified() + { + var dumpConfig = GetDumpConfigurationElement(isFullDump: true, false, collectDumpOnHang: true, 1800000); - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - dumpConfig, - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + dumpConfig, + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); - // Verify - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.IsAny()), Times.Never); - } + // Verify + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.IsAny()), Times.Never); + } - /// - /// The trigger test host launched handler should not break if start process dump throws TestPlatFormExceptions and log error message - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldCatchTestPlatFormExceptionsAndReportMessage() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Make StartProcessDump throw exception - var tpex = new TestPlatformException("env var exception"); - this.mockProcessDumpUtility.Setup(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), false, It.IsAny(), false)) - .Throws(tpex); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentUICulture, Resources.Resources.ProcDumpCouldNotStart, tpex.Message))), Times.Once); - } + /// + /// The trigger test host launched handler should not break if start process dump throws TestPlatFormExceptions and log error message + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldCatchTestPlatFormExceptionsAndReportMessage() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Make StartProcessDump throw exception + var tpex = new TestPlatformException("env var exception"); + _mockProcessDumpUtility.Setup(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), false, It.IsAny(), false, It.IsAny>())) + .Throws(tpex); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentCulture, Resources.Resources.ProcDumpCouldNotStart, tpex.Message))), Times.Once); + } - /// - /// The trigger test host launched handler should not break if start process dump throws unknown exceptions and report message with stack trace - /// - [TestMethod] - public void TriggerTestHostLaunchedHandlerShouldCatchAllUnexpectedExceptionsAndReportMessageWithStackTrace() + /// + /// The trigger test host launched handler should not break if start process dump throws unknown exceptions and report message with stack trace + /// + [TestMethod] + public void TriggerTestHostLaunchedHandlerShouldCatchAllUnexpectedExceptionsAndReportMessageWithStackTrace() + { + // Initializing Blame Data Collector + _blameDataCollector.Initialize( + GetDumpConfigurationElement(), + _mockDataColectionEvents.Object, + _mockDataCollectionSink.Object, + _mockLogger.Object, + _context); + + // Make StartProcessDump throw exception + var ex = new Exception("start process failed"); + _mockProcessDumpUtility.Setup(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), false, It.IsAny(), false, It.IsAny>())) + .Throws(ex); + + // Raise TestHostLaunched + _mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(_dataCollectionContext, 1234)); + + // Verify + _mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentCulture, Resources.Resources.ProcDumpCouldNotStart, ex.ToString()))), Times.Once); + } + + [TestCleanup] + public void CleanUp() + { + File.Delete(_filepath); + } + + private static XmlElement GetDumpConfigurationElement( + bool isFullDump = false, + bool collectDumpOnExit = false, + bool collectDumpOnHang = false, + int inactivityTimeInMilliseconds = 0) + { + var xmldoc = new XmlDocument(); + var outernode = xmldoc.CreateElement("Configuration"); + var node = xmldoc.CreateElement(Constants.DumpModeKey); + outernode.AppendChild(node); + node.InnerText = "Text"; + + if (isFullDump) { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Make StartProcessDump throw exception - var ex = new Exception("start process failed"); - this.mockProcessDumpUtility.Setup(x => x.StartTriggerBasedProcessDump(1234, It.IsAny(), false, It.IsAny(), false)) - .Throws(ex); - - // Raise TestHostLaunched - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - - // Verify - this.mockLogger.Verify(x => x.LogWarning(It.IsAny(), It.Is(str => str == string.Format(CultureInfo.CurrentUICulture, Resources.Resources.ProcDumpCouldNotStart, ex.ToString()))), Times.Once); + var fulldumpAttribute = xmldoc.CreateAttribute(Constants.DumpTypeKey); + fulldumpAttribute.Value = "full"; + node.Attributes.Append(fulldumpAttribute); } - [TestCleanup] - public void CleanUp() + if (collectDumpOnExit) { - File.Delete(this.filepath); + var collectDumpOnExitAttribute = xmldoc.CreateAttribute(Constants.CollectDumpAlwaysKey); + collectDumpOnExitAttribute.Value = "true"; + node.Attributes.Append(collectDumpOnExitAttribute); } - private XmlElement GetDumpConfigurationElement( - bool isFullDump = false, - bool collectDumpOnExit = false, - bool colectDumpOnHang = false, - int inactivityTimeInMilliseconds = 0) + if (collectDumpOnHang) { - var xmldoc = new XmlDocument(); - var outernode = xmldoc.CreateElement("Configuration"); - var node = xmldoc.CreateElement(BlameDataCollector.Constants.DumpModeKey); - outernode.AppendChild(node); - node.InnerText = "Text"; + var hangDumpNode = xmldoc.CreateElement(Constants.CollectDumpOnTestSessionHang); + outernode.AppendChild(hangDumpNode); + + var inactivityTimeAttribute = xmldoc.CreateAttribute(Constants.TestTimeout); + inactivityTimeAttribute.Value = $"{inactivityTimeInMilliseconds}"; + hangDumpNode.Attributes.Append(inactivityTimeAttribute); if (isFullDump) { - var fulldumpAttribute = xmldoc.CreateAttribute(BlameDataCollector.Constants.DumpTypeKey); + var fulldumpAttribute = xmldoc.CreateAttribute(Constants.DumpTypeKey); fulldumpAttribute.Value = "full"; - node.Attributes.Append(fulldumpAttribute); - } - - if (collectDumpOnExit) - { - var collectDumpOnExitAttribute = xmldoc.CreateAttribute(BlameDataCollector.Constants.CollectDumpAlwaysKey); - collectDumpOnExitAttribute.Value = "true"; - node.Attributes.Append(collectDumpOnExitAttribute); + hangDumpNode.Attributes.Append(fulldumpAttribute); } - - if (colectDumpOnHang) - { - var hangDumpNode = xmldoc.CreateElement(BlameDataCollector.Constants.CollectDumpOnTestSessionHang); - outernode.AppendChild(hangDumpNode); - - var inactivityTimeAttribute = xmldoc.CreateAttribute(BlameDataCollector.Constants.TestTimeout); - inactivityTimeAttribute.Value = $"{inactivityTimeInMilliseconds}"; - hangDumpNode.Attributes.Append(inactivityTimeAttribute); - - if (isFullDump) - { - var fulldumpAttribute = xmldoc.CreateAttribute(BlameDataCollector.Constants.DumpTypeKey); - fulldumpAttribute.Value = "full"; - hangDumpNode.Attributes.Append(fulldumpAttribute); - } - } - - return outernode; } + return outernode; + } + + /// + /// The testable blame collector. + /// + internal class TestableBlameCollector : BlameCollector + { /// - /// The testable blame collector. + /// Initializes a new instance of the class. /// - internal class TestableBlameCollector : BlameCollector + /// + /// The blame reader writer. + /// + /// + /// ProcessDumpUtility instance. + /// + /// + /// InactivityTimer instance. + /// + /// + /// MockFileHelper instance. + /// + /// Mockd process helper + internal TestableBlameCollector(IBlameReaderWriter blameReaderWriter, IProcessDumpUtility processDumpUtility, IInactivityTimer? inactivityTimer, + IFileHelper mockFileHelper, IProcessHelper mockProcessHelper) + : base(blameReaderWriter, processDumpUtility, inactivityTimer, mockFileHelper, mockProcessHelper) { - /// - /// Initializes a new instance of the class. - /// - /// - /// The blame reader writer. - /// - /// - /// ProcessDumpUtility instance. - /// - /// - /// InactivityTimer instance. - /// - /// - /// MockFileHelper instance. - /// - internal TestableBlameCollector(IBlameReaderWriter blameReaderWriter, IProcessDumpUtility processDumpUtility, IInactivityTimer inactivityTimer, IFileHelper mockFileHelper) - : base(blameReaderWriter, processDumpUtility, inactivityTimer, mockFileHelper) - { - } } } } diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameLoggerTests.cs index 958763d7c3..347173a11c 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameLoggerTests.cs @@ -1,173 +1,163 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests; + +/// +/// The blame logger tests. +/// +[TestClass] +public class BlameLoggerTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; + private readonly Mock _mockOutput; + private readonly Mock _mockBlameReaderWriter; + private readonly BlameLogger _blameLogger; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + /// + /// Initializes a new instance of the class. + /// + public BlameLoggerTests() + { + // Mock for ITestRunRequest + _mockOutput = new Mock(); + _mockBlameReaderWriter = new Mock(); + _blameLogger = new TestableBlameLogger(_mockOutput.Object, _mockBlameReaderWriter.Object); + } - using Moq; + /// + /// The initialize should throw exception if events is null. + /// + [TestMethod] + public void InitializeShouldThrowExceptionIfEventsIsNull() + { + Assert.ThrowsException(() => _blameLogger.Initialize(null!, string.Empty)); + } /// - /// The blame logger tests. + /// The test run complete handler should get faulty test run if test run aborted. /// - [TestClass] - public class BlameLoggerTests + [TestMethod] + public void TestRunCompleteHandlerShouldGetFaultyTestRunIfTestRunAborted() { - private Mock testRunRequest; - private Mock events; - private Mock mockOutput; - private Mock mockBlameReaderWriter; - private BlameLogger blameLogger; + InitializeAndVerify(1); + } - /// - /// Initializes a new instance of the class. - /// - public BlameLoggerTests() - { - // Mock for ITestRunRequest - this.testRunRequest = new Mock(); - this.events = new Mock(); - this.mockOutput = new Mock(); - this.mockBlameReaderWriter = new Mock(); - this.blameLogger = new TestableBlameLogger(this.mockOutput.Object, this.mockBlameReaderWriter.Object); - } + /// + /// The test run complete handler should get faulty test run if test run aborted for multiple test project. + /// + [TestMethod] + public void TestRunCompleteHandlerShouldGetFaultyTestRunIfTestRunAbortedForMultipleProjects() + { + InitializeAndVerify(2); + } - /// - /// The initialize should throw exception if events is null. - /// - [TestMethod] - public void InitializeShouldThrowExceptionIfEventsIsNull() - { - Assert.ThrowsException(() => - { - this.blameLogger.Initialize(null, string.Empty); - }); - } + /// + /// The test run complete handler should not read file if test run not aborted. + /// + [TestMethod] + public void TestRunCompleteHandlerShouldNotReadFileIfTestRunNotAborted() + { + // Initialize Blame Logger + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + _blameLogger.Initialize(loggerEvents, null); - /// - /// The test run complete handler should get faulty test run if test run aborted. - /// - [TestMethod] - public void TestRunCompleteHandlerShouldGetFaultyTestRunIfTestRunAborted() - { - this.InitializeAndVerify(1); - } + // Setup and Raise event + _mockBlameReaderWriter.Setup(x => x.ReadTestSequence(It.IsAny())); + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(1, 0, 0, 0)); - /// - /// The test run complete handler should get faulty test run if test run aborted for multiple test project. - /// - [TestMethod] - public void TestRunCompleteHandlerShouldGetFaultyTestRunIfTestRunAbortedForMultipleProjects() - { - this.InitializeAndVerify(2); - } + // Verify Call + _mockBlameReaderWriter.Verify(x => x.ReadTestSequence(It.IsAny()), Times.Never); + } - /// - /// The test run complete handler should not read file if test run not aborted. - /// - [TestMethod] - public void TestRunCompleteHandlerShouldNotReadFileIfTestRunNotAborted() - { - // Initialize Blame Logger - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - this.blameLogger.Initialize(loggerEvents, (string)null); + /// + /// The test run complete handler should return if uri attachment is null. + /// + [TestMethod] + public void TestRunCompleteHandlerShouldReturnIfUriAttachmentIsNull() + { + // Initialize + var attachmentSet = new AttachmentSet(new Uri("test://uri"), "Blame"); + var attachmentSetList = new List { attachmentSet }; - // Setup and Raise event - this.mockBlameReaderWriter.Setup(x => x.ReadTestSequence(It.IsAny())); - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(1, 0, 0, 0)); + // Initialize Blame Logger + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + _blameLogger.Initialize(loggerEvents, null); - // Verify Call - this.mockBlameReaderWriter.Verify(x => x.ReadTestSequence(It.IsAny()), Times.Never); - } + // Setup and Raise event + loggerEvents.CompleteTestRun(null, false, true, null, new Collection(attachmentSetList), new Collection(), new TimeSpan(1, 0, 0, 0)); - /// - /// The test run complete handler should return if uri attachment is null. - /// - [TestMethod] - public void TestRunCompleteHandlerShouldReturnIfUriAttachmentIsNull() - { - // Initialize - var attachmentSet = new AttachmentSet(new Uri("test://uri"), "Blame"); - var attachmentSetList = new List { attachmentSet }; + // Verify Call + _mockBlameReaderWriter.Verify(x => x.ReadTestSequence(It.IsAny()), Times.Never); + } - // Initialize Blame Logger - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - this.blameLogger.Initialize(loggerEvents, (string)null); + private static AttachmentSet GetAttachmentSet() + { + var attachmentSet = new AttachmentSet(new Uri("test://uri"), "Blame"); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:/folder1/sequence.xml"), "description")); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:/folder1/dump.dmp"), "description")); - // Setup and Raise event - loggerEvents.CompleteTestRun(null, false, true, null, new Collection(attachmentSetList), new TimeSpan(1, 0, 0, 0)); + return attachmentSet; + } - // Verify Call - this.mockBlameReaderWriter.Verify(x => x.ReadTestSequence(It.IsAny()), Times.Never); - } + private void InitializeAndVerify(int count) + { + // Initialize + var attachmentSetList = new List(); - private AttachmentSet GetAttachmentSet() + for (int i = 0; i < count; i++) { - var attachmentSet = new AttachmentSet(new Uri("test://uri"), "Blame"); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:/folder1/sequence.xml"), "description")); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:/folder1/dump.dmp"), "description")); - - return attachmentSet; + attachmentSetList.Add(GetAttachmentSet()); } - private void InitializeAndVerify(int count) + // Initialize Blame Logger + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + _blameLogger.Initialize(loggerEvents, null); + + var testCaseList = new List { - // Initialize - var attachmentSetList = new List(); - - for (int i = 0; i < count; i++) - { - attachmentSetList.Add(this.GetAttachmentSet()); - } - - // Initialize Blame Logger - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - this.blameLogger.Initialize(loggerEvents, (string)null); - - var testCaseList = - new List - { - new BlameTestObject(new TestCase("ABC.UnitTestMethod1", new Uri("test://uri"), "C://test/filepath")), - new BlameTestObject(new TestCase("ABC.UnitTestMethod2", new Uri("test://uri"), "C://test/filepath")) - }; - - // Setup and Raise event - this.mockBlameReaderWriter.Setup(x => x.ReadTestSequence(It.IsAny())).Returns(testCaseList); - loggerEvents.CompleteTestRun(null, false, true, null, new Collection(attachmentSetList), new TimeSpan(1, 0, 0, 0)); - - // Verify Call - this.mockBlameReaderWriter.Verify(x => x.ReadTestSequence(It.Is(str => str.EndsWith(".xml"))), Times.Exactly(count)); - } + new(new TestCase("ABC.UnitTestMethod1", new Uri("test://uri"), "C://test/filepath")), + new(new TestCase("ABC.UnitTestMethod2", new Uri("test://uri"), "C://test/filepath")) + }; + + // Setup and Raise event + _mockBlameReaderWriter.Setup(x => x.ReadTestSequence(It.IsAny())).Returns(testCaseList); + loggerEvents.CompleteTestRun(null, false, true, null, new Collection(attachmentSetList), new Collection(), new TimeSpan(1, 0, 0, 0)); + + // Verify Call + _mockBlameReaderWriter.Verify(x => x.ReadTestSequence(It.Is(str => str.EndsWith(".xml"))), Times.Exactly(count)); + } + /// + /// The testable blame logger. + /// + internal class TestableBlameLogger : BlameLogger + { /// - /// The testable blame logger. + /// Initializes a new instance of the class. /// - internal class TestableBlameLogger : BlameLogger + /// + /// The output. + /// + /// + /// The blame Reader Writer. + /// + internal TestableBlameLogger(IOutput output, IBlameReaderWriter blameReaderWriter) + : base(output, blameReaderWriter) { - /// - /// Initializes a new instance of the class. - /// - /// - /// The output. - /// - /// - /// The blame Reader Writer. - /// - internal TestableBlameLogger(IOutput output, IBlameReaderWriter blameReaderWriter) - : base(output, blameReaderWriter) - { - } } } } diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/InactivityTimerTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/InactivityTimerTests.cs index 7897eb1f2e..2014f39a7d 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/InactivityTimerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/InactivityTimerTests.cs @@ -1,31 +1,31 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests +using System; +using System.Threading; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests; + +[TestClass] +public class InactivityTimerTests { - using System; - using System.Threading; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private int _callBackCount; + private readonly ManualResetEventSlim _timerEvent = new(); - [TestClass] - public class InactivityTimerTests + [TestMethod] + public void InactivityTimerShouldResetAndCallbackWhenResetIsCalled() { - private int callBackCount = 0; - private ManualResetEventSlim timerEvent = new ManualResetEventSlim(); - - [TestMethod] - public void InactivityTimerShouldResetAndCallbackWhenResetIsCalled() - { - var timer = new InactivityTimer(this.TimerCallback); - timer.ResetTimer(TimeSpan.FromMilliseconds(1)); - this.timerEvent.Wait(1000); - Assert.AreEqual(1, this.callBackCount, "Should have fired once."); - } + var timer = new InactivityTimer(TimerCallback); + timer.ResetTimer(TimeSpan.FromMilliseconds(1)); + _timerEvent.Wait(1000); + Assert.AreEqual(1, _callBackCount, "Should have fired once."); + } - private void TimerCallback() - { - this.callBackCount++; - this.timerEvent.Set(); - } + private void TimerCallback() + { + _callBackCount++; + _timerEvent.Set(); } } diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests.csproj b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests.csproj index 09bce9beb6..81efd08aad 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests.csproj @@ -1,35 +1,34 @@ - + - ..\..\ true true + + $(MSBuildWarningsAsMessages);NU1702 + + None + + $(MSBuildWarningsAsMessages);MSB3276 - + Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests - netcoreapp2.1;net472 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests - true - true - - - - - - - - - + + - + + - diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcDumpArgsBuilderTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcDumpArgsBuilderTests.cs index eb1d7114ee..424f25074c 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcDumpArgsBuilderTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcDumpArgsBuilderTests.cs @@ -1,57 +1,71 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests; + +[TestClass] +public class ProcDumpArgsBuilderTests { - using System.Collections.Generic; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly int _defaultProcId = 1234; + private readonly string _defaultDumpFileName = "dump"; - [TestClass] - public class ProcDumpArgsBuilderTests + [TestMethod] + public void BuildHangBasedProcDumpArgsShouldCreateCorrectArgString() { - private int defaultProcId = 1234; - private string defaultDumpFileName = "dump"; - - [TestMethod] - public void BuildHangBasedProcDumpArgsShouldCreateCorrectArgString() - { - var procDumpArgsBuilder = new ProcDumpArgsBuilder(); - var argString = procDumpArgsBuilder.BuildHangBasedProcDumpArgs(this.defaultProcId, this.defaultDumpFileName, false); - Assert.AreEqual("-accepteula -n 1 1234 dump.dmp", argString); - } - - [TestMethod] - public void BuildHangBasedProcDumpArgsWithFullDumpEnabledShouldCreateCorrectArgString() - { - var procDumpArgsBuilder = new ProcDumpArgsBuilder(); - var argString = procDumpArgsBuilder.BuildHangBasedProcDumpArgs(this.defaultProcId, this.defaultDumpFileName, true); - Assert.AreEqual("-accepteula -n 1 -ma 1234 dump.dmp", argString); - } - - [TestMethod] - public void BuildTriggerBasedProcDumpArgsShouldCreateCorrectArgString() - { - var procDumpArgsBuilder = new ProcDumpArgsBuilder(); - var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(this.defaultProcId, this.defaultDumpFileName, new List { "a", "b" }, false); - Assert.AreEqual("-accepteula -e 1 -g -t -f a -f b 1234 dump.dmp", argString); - } - - [TestMethod] - public void BuildTriggerProcDumpArgsWithFullDumpEnabledShouldCreateCorrectArgString() - { - var procDumpArgsBuilder = new ProcDumpArgsBuilder(); - var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(this.defaultProcId, this.defaultDumpFileName, new List { "a", "b" }, true); - Assert.AreEqual("-accepteula -e 1 -g -t -ma -f a -f b 1234 dump.dmp", argString); - } - - [TestMethod] - public void BuildTriggerProcDumpArgsWithAlwaysCollectShouldCreateCorrectArgString() - { - var procDumpArgsBuilder = new ProcDumpArgsBuilder(); - var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(this.defaultProcId, this.defaultDumpFileName, new List { "a", "b" }, true); - - // adds -t for collect on every process exit - Assert.AreEqual("-accepteula -e 1 -g -t -ma -f a -f b 1234 dump.dmp", argString); - } + var procDumpArgsBuilder = new ProcDumpArgsBuilder(); + var argString = procDumpArgsBuilder.BuildHangBasedProcDumpArgs(_defaultProcId, _defaultDumpFileName, false); + Assert.AreEqual("-accepteula -n 1 1234 dump.dmp", argString); + } + + [TestMethod] + public void BuildHangBasedProcDumpArgsWithFullDumpEnabledShouldCreateCorrectArgString() + { + var procDumpArgsBuilder = new ProcDumpArgsBuilder(); + var argString = procDumpArgsBuilder.BuildHangBasedProcDumpArgs(_defaultProcId, _defaultDumpFileName, true); + Assert.AreEqual("-accepteula -n 1 -ma 1234 dump.dmp", argString); + } + + [TestMethod] + public void BuildTriggerBasedProcDumpArgsShouldCreateCorrectArgString() + { + var procDumpArgsBuilder = new ProcDumpArgsBuilder(); + var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(_defaultProcId, _defaultDumpFileName, new List { "a", "b" }, false); + Assert.AreEqual("-accepteula -e 1 -g -t -f a -f b 1234 dump.dmp", argString); + } + + [TestMethod] + public void BuildTriggerProcDumpArgsWithFullDumpEnabledShouldCreateCorrectArgString() + { + var procDumpArgsBuilder = new ProcDumpArgsBuilder(); + var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(_defaultProcId, _defaultDumpFileName, new List { "a", "b" }, true); + Assert.AreEqual("-accepteula -e 1 -g -t -ma -f a -f b 1234 dump.dmp", argString); + } + + [TestMethod] + public void BuildTriggerProcDumpArgsWithAlwaysCollectShouldCreateCorrectArgString() + { + var procDumpArgsBuilder = new ProcDumpArgsBuilder(); + var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(_defaultProcId, _defaultDumpFileName, new List { "a", "b" }, true); + + // adds -t for collect on every process exit + Assert.AreEqual("-accepteula -e 1 -g -t -ma -f a -f b 1234 dump.dmp", argString); + } + + [TestMethod] + public void BuildTriggerProcDumpArgsWith_VSTEST_DUMP_PROCDUMPARGUMENTS_EnvironmentVariable() + { + Mock environmentVariableHelper = new(); + environmentVariableHelper.Setup(e => e.GetEnvironmentVariable("VSTEST_DUMP_PROCDUMPARGUMENTS")).Returns("-e 1 -g -t -ma"); + + var procDumpArgsBuilder = new ProcDumpArgsBuilder(environmentVariableHelper.Object); + var argString = procDumpArgsBuilder.BuildTriggerBasedProcDumpArgs(_defaultProcId, _defaultDumpFileName, new List { "a", "b" }, true); + Assert.AreEqual("-accepteula -e 1 -g -t -ma 1234 dump.dmp", argString); } } diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcessDumpUtilityTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcessDumpUtilityTests.cs index 82dbe72e70..03e9c234ac 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcessDumpUtilityTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/ProcessDumpUtilityTests.cs @@ -1,70 +1,68 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests -{ - using System; - using System.Diagnostics; - using System.IO; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; - using Moq; +namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests; + +/// +/// The blame collector tests. +/// +[TestClass] +public class ProcessDumpUtilityTests +{ + private readonly Mock _mockFileHelper; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockHangDumperFactory; + private readonly Mock _mockCrashDumperFactory; /// - /// The blame collector tests. + /// Initializes a new instance of the class. /// - [TestClass] - public class ProcessDumpUtilityTests + public ProcessDumpUtilityTests() { - private Mock mockFileHelper; - private Mock mockProcessHelper; - private Mock mockHangDumperFactory; - private Mock mockCrashDumperFactory; - - /// - /// Initializes a new instance of the class. - /// - public ProcessDumpUtilityTests() - { - this.mockFileHelper = new Mock(); - this.mockProcessHelper = new Mock(); - this.mockHangDumperFactory = new Mock(); - this.mockCrashDumperFactory = new Mock(); - } + _mockFileHelper = new Mock(); + _mockProcessHelper = new Mock(); + _mockHangDumperFactory = new Mock(); + _mockCrashDumperFactory = new Mock(); + } - /// - /// GetDumpFile will return empty list of strings if no dump files found - /// - [TestMethod] - public void GetDumpFileWillThrowExceptionIfNoDumpfile() - { - var process = "process"; - var processId = 12345; - var testResultsDirectory = "D:\\TestResults"; + /// + /// GetDumpFile will return empty list of strings if no dump files found + /// + [TestMethod] + public void GetDumpFileWillThrowExceptionIfNoDumpfile() + { + var process = "process"; + var processId = 12345; + var testResultsDirectory = "D:\\TestResults"; - this.mockFileHelper.Setup(x => x.GetFiles(It.IsAny(), It.IsAny(), It.IsAny())) - .Returns(new string[] { }); - this.mockProcessHelper.Setup(x => x.GetProcessName(processId)) - .Returns(process); + _mockFileHelper.Setup(x => x.GetFiles(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns([]); + _mockProcessHelper.Setup(x => x.GetProcessName(processId)) + .Returns(process); - this.mockHangDumperFactory.Setup(x => x.Create(It.IsAny())) - .Returns(new Mock().Object); + _mockHangDumperFactory.Setup(x => x.Create(It.IsAny())) + .Returns(new Mock().Object); - this.mockCrashDumperFactory.Setup(x => x.Create(It.IsAny())) - .Returns(new Mock().Object); + _mockCrashDumperFactory.Setup(x => x.Create(It.IsAny())) + .Returns(new Mock().Object); - var processDumpUtility = new ProcessDumpUtility( - this.mockProcessHelper.Object, - this.mockFileHelper.Object, - this.mockHangDumperFactory.Object, - this.mockCrashDumperFactory.Object); + var processDumpUtility = new ProcessDumpUtility( + _mockProcessHelper.Object, + _mockFileHelper.Object, + _mockHangDumperFactory.Object, + _mockCrashDumperFactory.Object); - processDumpUtility.StartTriggerBasedProcessDump(processId, testResultsDirectory, false, ".NETCoreApp,Version=v5.0", false); + processDumpUtility.StartTriggerBasedProcessDump(processId, testResultsDirectory, false, ".NETCoreApp,Version=v5.0", false, _ => { }); - var ex = Assert.ThrowsException(() => processDumpUtility.GetDumpFiles(true, false)); - Assert.AreEqual(ex.Message, Resources.Resources.DumpFileNotGeneratedErrorMessage); - } + var ex = Assert.ThrowsException(() => processDumpUtility.GetDumpFiles(true, false)); + Assert.AreEqual(ex.Message, Resources.Resources.DumpFileNotGeneratedErrorMessage); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Program.cs deleted file mode 100644 index 43205ef72e..0000000000 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/XmlReaderWriterTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/XmlReaderWriterTests.cs index c8b7b5f689..e23dc5a040 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/XmlReaderWriterTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/XmlReaderWriterTests.cs @@ -1,219 +1,190 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; - using Moq; +namespace Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests; + +/// +/// The xml reader writer tests. +/// +[TestClass] +public class XmlReaderWriterTests +{ + private readonly TestableXmlReaderWriter _xmlReaderWriter; + private readonly Mock _mockFileHelper; + private readonly Mock _mockStream; + private readonly List _testCaseList; + private readonly Dictionary _testObjectDictionary; + private readonly BlameTestObject _blameTestObject; /// - /// The xml reader writer tests. + /// Initializes a new instance of the class. /// - [TestClass] - public class XmlReaderWriterTests + public XmlReaderWriterTests() { - private TestableXmlReaderWriter xmlReaderWriter; - private Mock mockFileHelper; - private Mock mockStream; - private List testCaseList; - private Dictionary testObjectDictionary; - private BlameTestObject blameTestObject; - - /// - /// Initializes a new instance of the class. - /// - public XmlReaderWriterTests() + _mockFileHelper = new Mock(); + _xmlReaderWriter = new TestableXmlReaderWriter(_mockFileHelper.Object); + _mockStream = new Mock(); + _testCaseList = new List(); + _testObjectDictionary = new Dictionary(); + var testcase = new TestCase { - this.mockFileHelper = new Mock(); - this.xmlReaderWriter = new TestableXmlReaderWriter(this.mockFileHelper.Object); - this.mockStream = new Mock(); - this.testCaseList = new List(); - this.testObjectDictionary = new Dictionary(); - var testcase = new TestCase - { - ExecutorUri = new Uri("test:/abc"), - FullyQualifiedName = "TestProject.UnitTest.TestMethod", - Source = "abc.dll" - }; - this.blameTestObject = new BlameTestObject(testcase); - } + ExecutorUri = new Uri("test:/abc"), + FullyQualifiedName = "TestProject.UnitTest.TestMethod", + Source = "abc.dll" + }; + _blameTestObject = new BlameTestObject(testcase); + } - /// - /// The write test sequence should throw exception if file path is null. - /// - [TestMethod] - public void WriteTestSequenceShouldThrowExceptionIfFilePathIsNull() - { - this.testCaseList.Add(this.blameTestObject.Id); - this.testObjectDictionary.Add(this.blameTestObject.Id, this.blameTestObject); + /// + /// The write test sequence should throw exception if file path is null. + /// + [TestMethod] + public void WriteTestSequenceShouldThrowExceptionIfFilePathIsNull() + { + _testCaseList.Add(_blameTestObject.Id); + _testObjectDictionary.Add(_blameTestObject.Id, _blameTestObject); - Assert.ThrowsException(() => - { - this.xmlReaderWriter.WriteTestSequence(this.testCaseList, this.testObjectDictionary, null); - }); - } + Assert.ThrowsException(() => _xmlReaderWriter.WriteTestSequence(_testCaseList, _testObjectDictionary, null!)); + } - /// - /// The write test sequence should throw exception if file path is empty. - /// - [TestMethod] - public void WriteTestSequenceShouldThrowExceptionIfFilePathIsEmpty() - { - this.testCaseList.Add(this.blameTestObject.Id); - this.testObjectDictionary.Add(this.blameTestObject.Id, this.blameTestObject); + /// + /// The write test sequence should throw exception if file path is empty. + /// + [TestMethod] + public void WriteTestSequenceShouldThrowExceptionIfFilePathIsEmpty() + { + _testCaseList.Add(_blameTestObject.Id); + _testObjectDictionary.Add(_blameTestObject.Id, _blameTestObject); - Assert.ThrowsException(() => - { - this.xmlReaderWriter.WriteTestSequence(this.testCaseList, this.testObjectDictionary, string.Empty); - }); - } + Assert.ThrowsException(() => _xmlReaderWriter.WriteTestSequence(_testCaseList, _testObjectDictionary, string.Empty)); + } - /// - /// The read test sequence should throw exception if file path is null. - /// - [TestMethod] - public void ReadTestSequenceShouldThrowExceptionIfFilePathIsNull() - { - Assert.ThrowsException(() => - { - this.xmlReaderWriter.ReadTestSequence(null); - }); - } + /// + /// The read test sequence should throw exception if file path is null. + /// + [TestMethod] + public void ReadTestSequenceShouldThrowExceptionIfFilePathIsNull() + { + Assert.ThrowsException(() => _xmlReaderWriter.ReadTestSequence(null!)); + } - /// - /// The read test sequence should throw exception if file not found. - /// - [TestMethod] - public void ReadTestSequenceShouldThrowExceptionIfFileNotFound() - { - this.mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(false); + /// + /// The read test sequence should throw exception if file not found. + /// + [TestMethod] + public void ReadTestSequenceShouldThrowExceptionIfFileNotFound() + { + _mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(false); - Assert.ThrowsException(() => - { - this.xmlReaderWriter.ReadTestSequence(string.Empty); - }); - } + Assert.ThrowsException(() => _xmlReaderWriter.ReadTestSequence(string.Empty)); + } - /// - /// The read test sequence should read file stream. - /// - [TestMethod] - public void ReadTestSequenceShouldReadFileStream() - { - // Setup - this.mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(m => m.GetStream("path.xml", FileMode.Open, FileAccess.ReadWrite)).Returns(this.mockStream.Object); + /// + /// The write test sequence should write file stream. + /// + [TestMethod] + public void WriteTestSequenceShouldWriteFileStream() + { + // Setup + _mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(true); + using var stream = new MemoryStream(); + _mockFileHelper.Setup(m => m.GetStream("path.xml", FileMode.Create, FileAccess.ReadWrite)).Returns(stream); + _mockStream.Setup(x => x.CanWrite).Returns(true); + _mockStream.Setup(x => x.Write(It.IsAny(), It.IsAny(), It.IsAny())); - // Call to Read Test Sequence - this.xmlReaderWriter.ReadTestSequence("path.xml"); + _xmlReaderWriter.WriteTestSequence(_testCaseList, _testObjectDictionary, "path"); - // Verify Call to fileHelper - this.mockFileHelper.Verify(x => x.GetStream("path.xml", FileMode.Open, FileAccess.ReadWrite)); + // Verify Call to fileHelper + _mockFileHelper.Verify(x => x.GetStream("path.xml", FileMode.Create, FileAccess.ReadWrite)); - // Verify Call to stream read - this.mockStream.Verify(x => x.Read(It.IsAny(), It.IsAny(), It.IsAny())); - } + // Assert it has some data + var data = Encoding.UTF8.GetString(stream.ToArray()); + Assert.IsTrue(data.Length > 0, "Stream should have some data."); + } - /// - /// The write test sequence should write file stream. - /// - [TestMethod] - public void WriteTestSequenceShouldWriteFileStream() + /// + /// Verify Write and Read test sequence to check file contents if test completed is false. + /// + [TestMethod] + public void WriteTestSequenceShouldWriteCorrectFileContentsIfTestCompletedIsFalse() + { + var xmlReaderWriter = new XmlReaderWriter(); + var testObject = new BlameTestObject(new TestCase("Abc.UnitTest1", new Uri("test:/abc"), "Abc.dll")); + testObject.DisplayName = "UnitTest1"; + var testSequence = new List { - // Setup - this.mockFileHelper.Setup(m => m.Exists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(m => m.GetStream("path.xml", FileMode.Create, FileAccess.ReadWrite)).Returns(this.mockStream.Object); - this.mockStream.Setup(x => x.CanWrite).Returns(true); - this.mockStream.Setup(x => x.Write(It.IsAny(), It.IsAny(), It.IsAny())); - - this.xmlReaderWriter.WriteTestSequence(this.testCaseList, this.testObjectDictionary, "path"); + testObject.Id + }; + var testObjectDictionary = new Dictionary + { + { testObject.Id, testObject } + }; - // Verify Call to fileHelper - this.mockFileHelper.Verify(x => x.GetStream("path.xml", FileMode.Create, FileAccess.ReadWrite)); + var filePath = xmlReaderWriter.WriteTestSequence(testSequence, testObjectDictionary, Path.GetTempPath()); + var testCaseList = xmlReaderWriter.ReadTestSequence(filePath); + File.Delete(filePath); - // Verify Call to stream write - this.mockStream.Verify(x => x.Write(It.IsAny(), It.IsAny(), It.IsAny())); - } + Assert.AreEqual("Abc.UnitTest1", testCaseList.First().FullyQualifiedName); + Assert.AreEqual("UnitTest1", testCaseList.First().DisplayName); + Assert.AreEqual("Abc.dll", testCaseList.First().Source); + Assert.IsFalse(testCaseList.First().IsCompleted); + } - /// - /// Verify Write and Read test sequence to check file contents if test completed is false. - /// - [TestMethod] - public void WriteTestSequenceShouldWriteCorrectFileContentsIfTestCompletedIsFalse() + /// + /// Verify Write and Read test sequence to check file contents if test completed is true. + /// + [TestMethod] + public void WriteTestSequenceShouldWriteCorrectFileContentsIfTestCompletedIsTrue() + { + var xmlReaderWriter = new XmlReaderWriter(); + var testObject = new BlameTestObject(new TestCase("Abc.UnitTest1", new Uri("test:/abc"), "Abc.dll")); + testObject.DisplayName = "UnitTest1"; + var testSequence = new List { - var xmlReaderWriter = new XmlReaderWriter(); - var testObject = new BlameTestObject(new TestCase("Abc.UnitTest1", new Uri("test:/abc"), "Abc.dll")); - testObject.DisplayName = "UnitTest1"; - var testSequence = new List - { - testObject.Id - }; - var testObjectDictionary = new Dictionary - { - { testObject.Id, testObject } - }; - - var filePath = xmlReaderWriter.WriteTestSequence(testSequence, testObjectDictionary, Path.GetTempPath()); - var testCaseList = xmlReaderWriter.ReadTestSequence(filePath); - File.Delete(filePath); - - Assert.AreEqual("Abc.UnitTest1", testCaseList.First().FullyQualifiedName); - Assert.AreEqual("UnitTest1", testCaseList.First().DisplayName); - Assert.AreEqual("Abc.dll", testCaseList.First().Source); - Assert.IsFalse(testCaseList.First().IsCompleted); - } - - /// - /// Verify Write and Read test sequence to check file contents if test completed is true. - /// - [TestMethod] - public void WriteTestSequenceShouldWriteCorrectFileContentsIfTestCompletedIsTrue() + testObject.Id + }; + var testObjectDictionary = new Dictionary { - var xmlReaderWriter = new XmlReaderWriter(); - var testObject = new BlameTestObject(new TestCase("Abc.UnitTest1", new Uri("test:/abc"), "Abc.dll")); - testObject.DisplayName = "UnitTest1"; - var testSequence = new List - { - testObject.Id - }; - var testObjectDictionary = new Dictionary - { - { testObject.Id, testObject } - }; - - testObjectDictionary[testObject.Id].IsCompleted = true; - var filePath = xmlReaderWriter.WriteTestSequence(testSequence, testObjectDictionary, Path.GetTempPath()); - var testCaseList = xmlReaderWriter.ReadTestSequence(filePath); - File.Delete(filePath); - - Assert.AreEqual("Abc.UnitTest1", testCaseList.First().FullyQualifiedName); - Assert.AreEqual("UnitTest1", testCaseList.First().DisplayName); - Assert.AreEqual("Abc.dll", testCaseList.First().Source); - Assert.IsTrue(testCaseList.First().IsCompleted); - } + { testObject.Id, testObject } + }; + + testObjectDictionary[testObject.Id].IsCompleted = true; + var filePath = xmlReaderWriter.WriteTestSequence(testSequence, testObjectDictionary, Path.GetTempPath()); + var testCaseList = xmlReaderWriter.ReadTestSequence(filePath); + File.Delete(filePath); + + Assert.AreEqual("Abc.UnitTest1", testCaseList.First().FullyQualifiedName); + Assert.AreEqual("UnitTest1", testCaseList.First().DisplayName); + Assert.AreEqual("Abc.dll", testCaseList.First().Source); + Assert.IsTrue(testCaseList.First().IsCompleted); + } + /// + /// The testable xml reader writer. + /// + internal class TestableXmlReaderWriter : XmlReaderWriter + { /// - /// The testable xml reader writer. + /// Initializes a new instance of the class. /// - internal class TestableXmlReaderWriter : XmlReaderWriter + /// + /// The file helper. + /// + internal TestableXmlReaderWriter(IFileHelper fileHelper) + : base(fileHelper) { - /// - /// Initializes a new instance of the class. - /// - /// - /// The file helper. - /// - internal TestableXmlReaderWriter(IFileHelper fileHelper) - : base(fileHelper) - { - } } } } diff --git a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs index 7458ba6098..821093aa91 100644 --- a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs @@ -1,597 +1,598 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization; + +using Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger; +using Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using HtmlLoggerConstants = Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger.Constants; +using ObjectModel = Microsoft.VisualStudio.TestPlatform.ObjectModel; + +namespace Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests; + +[TestClass] +public class HtmlLoggerTests { - using System; - using System.Collections.Generic; - using System.IO; - using VisualStudio.TestTools.UnitTesting; - using Moq; - using ObjectModel = VisualStudio.TestPlatform.ObjectModel; - using VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger; - using HtmlLoggerConstants = VisualStudio.TestPlatform.Extensions.HtmlLogger.Constants; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using HtmlLogger = VisualStudio.TestPlatform.Extensions.HtmlLogger; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using System.Runtime.Serialization; - using Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger.ObjectModel; - - [TestClass] - public class HtmlLoggerTests - { - private Mock events; - private HtmlLogger.HtmlLogger htmlLogger; - private Dictionary parameters; - private static readonly string DefaultTestRunDirectory = Path.GetTempPath(); - private static readonly string DefaultLogFileNameParameterValue = "logfilevalue.html"; - private Mock mockFileHelper; - private Mock mockXmlSerializer; - private Mock mockHtmlTransformer; - - [TestInitialize] - public void TestInitialize() - { - this.events = new Mock(); - this.mockFileHelper = new Mock(); - this.mockHtmlTransformer = new Mock(); - this.mockXmlSerializer = new Mock(); - this.htmlLogger = new HtmlLogger.HtmlLogger(this.mockFileHelper.Object, this.mockHtmlTransformer.Object, this.mockXmlSerializer.Object); - this.parameters = new Dictionary(2) - { - [DefaultLoggerParameterNames.TestRunDirectory] = HtmlLoggerTests.DefaultTestRunDirectory, - [HtmlLoggerConstants.LogFileNameKey] = HtmlLoggerTests.DefaultLogFileNameParameterValue - }; - this.htmlLogger.Initialize(this.events.Object, this.parameters); - } + private static readonly string DefaultTestRunDirectory = Path.GetTempPath(); + private static readonly string DefaultLogFileNameParameterValue = "logfilevalue.html"; - #region Initialize Method + private Mock _events; + private readonly VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger _htmlLogger; + private readonly Dictionary _parameters; + private readonly Mock _mockFileHelper; + private readonly Mock _mockXmlSerializer; + private readonly Mock _mockHtmlTransformer; - [TestMethod] - public void InitializeShouldThrowExceptionIfEventsIsNull() - { - Assert.ThrowsException( - () => - { - this.htmlLogger.Initialize(null, this.parameters); - }); - } - - [TestMethod] - public void InitializeShouldInitializeAllProperties() - { - const string testResultDir = @"C:\Code\abc"; - var events = new Mock(); + public HtmlLoggerTests() + { + _events = new Mock(); + _mockFileHelper = new Mock(); + _mockHtmlTransformer = new Mock(); + _mockXmlSerializer = new Mock(); + _htmlLogger = new VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger(_mockFileHelper.Object, _mockHtmlTransformer.Object, _mockXmlSerializer.Object); + _parameters = new Dictionary(2) + { + [DefaultLoggerParameterNames.TestRunDirectory] = DefaultTestRunDirectory, + [HtmlLoggerConstants.LogFileNameKey] = DefaultLogFileNameParameterValue + }; + _htmlLogger.Initialize(_events.Object, _parameters); + } - this.htmlLogger.Initialize(events.Object, testResultDir); + #region Initialize Method - Assert.AreEqual(this.htmlLogger.TestResultsDirPath, testResultDir); - Assert.IsNotNull(this.htmlLogger.TestRunDetails); - Assert.IsNotNull(this.htmlLogger.Results); - } + [TestMethod] + public void InitializeShouldThrowExceptionIfEventsIsNull() + { + Assert.ThrowsException( + () => _htmlLogger.Initialize(null!, _parameters)); + } - [TestMethod] - public void InitializeShouldThrowExceptionIfTestRunDirectoryIsEmptyOrNull() - { - Assert.ThrowsException( - () => - { - this.events = new Mock(); - this.parameters[DefaultLoggerParameterNames.TestRunDirectory] = null; - this.htmlLogger.Initialize(events.Object, parameters); - }); - } - - [TestMethod] - public void InitializeShouldThrowExceptionIfParametersAreEmpty() - { - var events = new Mock(); - Assert.ThrowsException(() => this.htmlLogger.Initialize(events.Object, new Dictionary())); - } + [TestMethod] + public void InitializeShouldInitializeAllProperties() + { + const string testResultDir = @"C:\Code\abc"; + var events = new Mock(); - [TestMethod] - public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() - { - Assert.ThrowsException(() => + _htmlLogger.Initialize(events.Object, testResultDir); + + Assert.AreEqual(_htmlLogger.TestResultsDirPath, testResultDir); + Assert.IsNotNull(_htmlLogger.TestRunDetails); + Assert.IsNotNull(_htmlLogger.Results); + } + + [TestMethod] + public void InitializeShouldThrowExceptionIfTestRunDirectoryIsEmptyOrNull() + { + Assert.ThrowsException( + () => { - this.htmlLogger.TestMessageHandler(new object(), default); + _events = new Mock(); + _parameters[DefaultLoggerParameterNames.TestRunDirectory] = null!; + _htmlLogger.Initialize(_events.Object, _parameters); }); - } + } - #endregion + [TestMethod] + public void InitializeShouldThrowExceptionIfParametersAreEmpty() + { + var events = new Mock(); + Assert.ThrowsException(() => _htmlLogger.Initialize(events.Object, new Dictionary())); + } - [TestMethod] - public void TestMessageHandlerShouldAddMessageWhenItIsInformation() - { - const string message = "First message"; - var testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); + [TestMethod] + public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() + { + Assert.ThrowsException(() => _htmlLogger.TestMessageHandler(new object(), default!)); + } - this.htmlLogger.TestMessageHandler(new object(), testRunMessageEventArgs); + #endregion - var actualMessage = this.htmlLogger.TestRunDetails.RunLevelMessageInformational.First(); - Assert.AreEqual(message, actualMessage); - } + [TestMethod] + public void TestMessageHandlerShouldAddMessageWhenItIsInformation() + { + const string message = "First message"; + var testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); - [TestMethod] - public void TestMessageHandlerShouldNotInitializelistForInformationErrorAndWarningMessages() - { - Assert.IsNull(this.htmlLogger.TestRunDetails.RunLevelMessageInformational); - Assert.IsNull(this.htmlLogger.TestRunDetails.RunLevelMessageErrorAndWarning); - } + _htmlLogger.TestMessageHandler(new object(), testRunMessageEventArgs); - [TestMethod] - public void TestCompleteHandlerShouldThrowExceptionIfParametersAreNull() - { - Dictionary parameters = null; - var events = new Mock(); - Assert.ThrowsException(() => this.htmlLogger.Initialize(events.Object, parameters)); - } + var actualMessage = _htmlLogger.TestRunDetails!.RunLevelMessageInformational!.First(); + Assert.AreEqual(message, actualMessage); + } - [TestMethod] - public void TestMessageHandlerShouldAddMessageInListIfItIsWarningAndError() - { - const string message = "error message"; - const string message2 = "warning message"; + [TestMethod] + public void TestMessageHandlerShouldNotInitializelistForInformationErrorAndWarningMessages() + { + Assert.IsNull(_htmlLogger.TestRunDetails!.RunLevelMessageInformational); + Assert.IsNull(_htmlLogger.TestRunDetails.RunLevelMessageErrorAndWarning); + } - var testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Error, message); - this.htmlLogger.TestMessageHandler(new object(), testRunMessageEventArgs); - var testRunMessageEventArgs2 = new TestRunMessageEventArgs(TestMessageLevel.Warning, message2); - this.htmlLogger.TestMessageHandler(new object(), testRunMessageEventArgs2); + [TestMethod] + public void TestCompleteHandlerShouldThrowExceptionIfParametersAreNull() + { + Dictionary? parameters = null; + var events = new Mock(); + Assert.ThrowsException(() => _htmlLogger.Initialize(events.Object, parameters!)); + } - Assert.AreEqual(message, this.htmlLogger.TestRunDetails.RunLevelMessageErrorAndWarning.First()); - Assert.AreEqual(2, this.htmlLogger.TestRunDetails.RunLevelMessageErrorAndWarning.Count); - } + [TestMethod] + public void TestMessageHandlerShouldAddMessageInListIfItIsWarningAndError() + { + const string message = "error message"; + const string message2 = "warning message"; - [TestMethod] - public void TestResultHandlerShouldKeepTrackOfFailedResult() - { - var failTestCase1 = CreateTestCase("Fail1"); + var testRunMessageEventArgs = new TestRunMessageEventArgs(TestMessageLevel.Error, message); + _htmlLogger.TestMessageHandler(new object(), testRunMessageEventArgs); + var testRunMessageEventArgs2 = new TestRunMessageEventArgs(TestMessageLevel.Warning, message2); + _htmlLogger.TestMessageHandler(new object(), testRunMessageEventArgs2); - var failResult1 = new ObjectModel.TestResult(failTestCase1) { Outcome = TestOutcome.Failed }; + var runLevelMessageErrorAndWarning = _htmlLogger.TestRunDetails!.RunLevelMessageErrorAndWarning!; + Assert.AreEqual(2, runLevelMessageErrorAndWarning.Count); + Assert.AreEqual(message, runLevelMessageErrorAndWarning.First()); + } - this.htmlLogger.TestResultHandler(new object(), new Mock(failResult1).Object); + [TestMethod] + public void TestResultHandlerShouldKeepTrackOfFailedResult() + { + var failTestCase1 = CreateTestCase("Fail1"); - Assert.AreEqual(1, this.htmlLogger.FailedTests, "Failed Tests"); - } + var failResult1 = new ObjectModel.TestResult(failTestCase1) { Outcome = TestOutcome.Failed }; - [TestMethod] - public void TestResultHandlerShouldKeepTrackOfTotalResult() - { - var passTestCase1 = CreateTestCase("Pass1"); - var passResult1 = new ObjectModel.TestResult(passTestCase1) { Outcome = TestOutcome.Passed }; + _htmlLogger.TestResultHandler(new object(), new Mock(failResult1).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(passResult1).Object); + Assert.AreEqual(1, _htmlLogger.FailedTests, "Failed Tests"); + } - Assert.AreEqual(1, this.htmlLogger.TotalTests, "Total Tests"); - } + [TestMethod] + public void TestResultHandlerShouldKeepTrackOfTotalResult() + { + var passTestCase1 = CreateTestCase("Pass1"); + var passResult1 = new ObjectModel.TestResult(passTestCase1) { Outcome = TestOutcome.Passed }; - [TestMethod] - public void TestResultHandlerShouldKeepTrackOfPassedResult() - { - var passTestCase2 = CreateTestCase("Pass2"); - var passResult2 = new ObjectModel.TestResult(passTestCase2) { Outcome = TestOutcome.Passed }; + _htmlLogger.TestResultHandler(new object(), new Mock(passResult1).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(passResult2).Object); + Assert.AreEqual(1, _htmlLogger.TotalTests, "Total Tests"); + } - Assert.AreEqual(1, this.htmlLogger.PassedTests, "Passed Tests"); - } + [TestMethod] + public void TestResultHandlerShouldKeepTrackOfPassedResult() + { + var passTestCase2 = CreateTestCase("Pass2"); + var passResult2 = new ObjectModel.TestResult(passTestCase2) { Outcome = TestOutcome.Passed }; - [TestMethod] - public void TestResultHandlerShouldKeepTrackOfSkippedResult() - { - var skipTestCase1 = CreateTestCase("Skip1"); - var skipResult1 = new ObjectModel.TestResult(skipTestCase1) { Outcome = TestOutcome.Skipped }; + _htmlLogger.TestResultHandler(new object(), new Mock(passResult2).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(skipResult1).Object); + Assert.AreEqual(1, _htmlLogger.PassedTests, "Passed Tests"); + } + + [TestMethod] + public void TestResultHandlerShouldKeepTrackOfSkippedResult() + { + var skipTestCase1 = CreateTestCase("Skip1"); + var skipResult1 = new ObjectModel.TestResult(skipTestCase1) { Outcome = TestOutcome.Skipped }; + + _htmlLogger.TestResultHandler(new object(), new Mock(skipResult1).Object); - Assert.AreEqual(1, this.htmlLogger.SkippedTests, "Skipped Tests"); - } + Assert.AreEqual(1, _htmlLogger.SkippedTests, "Skipped Tests"); + } - [TestMethod] - public void TestResultHandlerShouldSetDisplayNameIfDisplayNameIsNull() + [TestMethod] + public void TestResultHandlerShouldSetDisplayNameIfDisplayNameIsNull() + { + //this assert is for checking result display name equals to null + var passTestCase1 = CreateTestCase("Pass1"); + var passTestResultExpected = new ObjectModel.TestResult(passTestCase1) { - //this assert is for checking result display name equals to null - var passTestCase1 = CreateTestCase("Pass1"); - var passTestResultExpected = new ObjectModel.TestResult(passTestCase1) - { - DisplayName = null, - TestCase = { FullyQualifiedName = "abc" } - }; + DisplayName = null, + TestCase = { FullyQualifiedName = "abc" } + }; - this.htmlLogger.TestResultHandler(new object(), new Mock(passTestResultExpected).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(passTestResultExpected).Object); - Assert.AreEqual("abc", this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.First().DisplayName); - } + Assert.AreEqual("abc", _htmlLogger.TestRunDetails!.ResultCollectionList!.First().ResultList!.First().DisplayName); + } - [TestMethod] - public void TestResultHandlerShouldSetDisplayNameIfDisplayNameIsNotNull() + [TestMethod] + public void TestResultHandlerShouldSetDisplayNameIfDisplayNameIsNotNull() + { + //this assert is for checking result display name not equals to null + var passTestCase1 = CreateTestCase("Pass1"); + var passTestResultExpected = new ObjectModel.TestResult(passTestCase1) { - //this assert is for checking result display name not equals to null - var passTestCase1 = CreateTestCase("Pass1"); - var passTestResultExpected = new ObjectModel.TestResult(passTestCase1) - { - DisplayName = "def", - TestCase = { FullyQualifiedName = "abc" } - }; + DisplayName = "def", + TestCase = { FullyQualifiedName = "abc" } + }; - this.htmlLogger.TestResultHandler(new object(), new Mock(passTestResultExpected).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(passTestResultExpected).Object); - Assert.AreEqual("def", this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.Last().DisplayName); - } + Assert.AreEqual("def", _htmlLogger.TestRunDetails!.ResultCollectionList!.First().ResultList!.Last().DisplayName); + } - [TestMethod] - public void TestResultHandlerShouldCreateTestResultProperly() - { - var passTestCase = CreateTestCase("Pass1"); - passTestCase.DisplayName = "abc"; - passTestCase.FullyQualifiedName = "fully"; - passTestCase.Source = "abc/def.dll"; - TimeSpan ts1 = new TimeSpan(0, 0, 0, 1, 0); + [TestMethod] + public void TestResultHandlerShouldCreateTestResultProperly() + { + var passTestCase = CreateTestCase("Pass1"); + passTestCase.DisplayName = "abc"; + passTestCase.FullyQualifiedName = "fully"; + passTestCase.Source = "abc/def.dll"; + TimeSpan ts1 = new(0, 0, 0, 1, 0); + + var passTestResultExpected = new ObjectModel.TestResult(passTestCase) + { + DisplayName = "def", + ErrorMessage = "error message", + ErrorStackTrace = "Error stack trace", + Duration = ts1 + }; + + var eventArg = new Mock(passTestResultExpected); + // Act + _htmlLogger.TestResultHandler(new object(), eventArg.Object); + + var resultCollectionList = _htmlLogger.TestRunDetails!.ResultCollectionList!; + var result = resultCollectionList.First().ResultList!.First(); + + Assert.AreEqual("def", result.DisplayName); + Assert.AreEqual("error message", result.ErrorMessage); + Assert.AreEqual("Error stack trace", result.ErrorStackTrace); + Assert.AreEqual("fully", result.FullyQualifiedName); + Assert.AreEqual("abc/def.dll", resultCollectionList.First().Source); + Assert.AreEqual("1s", result.Duration); + } - var passTestResultExpected = new ObjectModel.TestResult(passTestCase) - { - DisplayName = "def", - ErrorMessage = "error message", - ErrorStackTrace = "Error stack trace", - Duration = ts1 - }; - - var eventArg = new Mock(passTestResultExpected); - // Act - this.htmlLogger.TestResultHandler(new object(), eventArg.Object); - - var result = this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.First(); - - Assert.AreEqual("def", result.DisplayName); - Assert.AreEqual("error message", result.ErrorMessage); - Assert.AreEqual("Error stack trace", result.ErrorStackTrace); - Assert.AreEqual("fully", result.FullyQualifiedName); - Assert.AreEqual("abc/def.dll", this.htmlLogger.TestRunDetails.ResultCollectionList.First().Source); - Assert.AreEqual("1s", result.Duration); - } - - [TestMethod] - public void GetFormattedDurationStringShouldGiveCorrectFormat() - { - TimeSpan ts1 = new TimeSpan(0, 0, 0, 0, 1); - Assert.AreEqual("1ms", htmlLogger.GetFormattedDurationString(ts1)); + [TestMethod] + public void GetFormattedDurationStringShouldGiveCorrectFormat() + { + TimeSpan ts1 = new(0, 0, 0, 0, 1); + Assert.AreEqual("1ms", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts1)); - TimeSpan ts2 = new TimeSpan(0, 0, 0, 1, 0); - Assert.AreEqual("1s", htmlLogger.GetFormattedDurationString(ts2)); + TimeSpan ts2 = new(0, 0, 0, 1, 0); + Assert.AreEqual("1s", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts2)); - TimeSpan ts3 = new TimeSpan(0, 0, 1, 0, 1); - Assert.AreEqual("1m", htmlLogger.GetFormattedDurationString(ts3)); + TimeSpan ts3 = new(0, 0, 1, 0, 1); + Assert.AreEqual("1m", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts3)); - TimeSpan ts4 = new TimeSpan(0, 1, 0, 2, 3); - Assert.AreEqual("1h", htmlLogger.GetFormattedDurationString(ts4)); + TimeSpan ts4 = new(0, 1, 0, 2, 3); + Assert.AreEqual("1h", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts4)); - TimeSpan ts5 = new TimeSpan(0, 1, 2, 3, 4); - Assert.AreEqual("1h 2m", htmlLogger.GetFormattedDurationString(ts5)); + TimeSpan ts5 = new(0, 1, 2, 3, 4); + Assert.AreEqual("1h 2m", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts5)); - TimeSpan ts6 = new TimeSpan(0, 0, 1, 2, 3); - Assert.AreEqual("1m 2s", htmlLogger.GetFormattedDurationString(ts6)); + TimeSpan ts6 = new(0, 0, 1, 2, 3); + Assert.AreEqual("1m 2s", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts6)); - TimeSpan ts7 = new TimeSpan(0, 0, 0, 1, 3); - Assert.AreEqual("1s 3ms", htmlLogger.GetFormattedDurationString(ts7)); + TimeSpan ts7 = new(0, 0, 0, 1, 3); + Assert.AreEqual("1s 3ms", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts7)); - TimeSpan ts8 = new TimeSpan(2); - Assert.AreEqual("< 1ms", htmlLogger.GetFormattedDurationString(ts8)); + TimeSpan ts8 = new(2); + Assert.AreEqual("< 1ms", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts8)); - TimeSpan ts10 = new TimeSpan(1, 0, 0, 1, 3); - Assert.AreEqual("> 1d", htmlLogger.GetFormattedDurationString(ts10)); + TimeSpan ts10 = new(1, 0, 0, 1, 3); + Assert.AreEqual("> 1d", VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts10)); - TimeSpan ts9 = new TimeSpan(0, 0, 0, 0, 0); - Assert.IsNull(htmlLogger.GetFormattedDurationString(ts9)); - } + TimeSpan ts9 = new(0, 0, 0, 0, 0); + Assert.IsNull(VisualStudio.TestPlatform.Extensions.HtmlLogger.HtmlLogger.GetFormattedDurationString(ts9)); + } - [TestMethod] - public void TestResultHandlerShouldCreateOneTestEntryForEachTestCase() - { - TestCase testCase1 = CreateTestCase("TestCase1"); - TestCase testCase2 = CreateTestCase("TestCase2"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2) { Outcome = TestOutcome.Passed }; - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - - // Act - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.htmlLogger.TestResultHandler(new object(), resultEventArg2.Object); - - Assert.AreEqual(2, this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.Count, "TestResultHandler is not creating test result entry for each test case"); - } - - [TestMethod] - public void TestResultHandlerShouldCreateOneTestResultCollectionForOneSource() - { - TestCase testCase1 = CreateTestCase("TestCase1"); - testCase1.Source = "abc.dll"; + [TestMethod] + public void TestResultHandlerShouldCreateOneTestEntryForEachTestCase() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); + ObjectModel.TestResult result1 = new(testCase1) { Outcome = TestOutcome.Failed }; + ObjectModel.TestResult result2 = new(testCase2) { Outcome = TestOutcome.Passed }; + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + + // Act + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + _htmlLogger.TestResultHandler(new object(), resultEventArg2.Object); + + Assert.AreEqual(2, _htmlLogger.TestRunDetails!.ResultCollectionList!.First().ResultList!.Count, "TestResultHandler is not creating test result entry for each test case"); + } - TestCase testCase2 = CreateTestCase("TestCase2"); - testCase2.Source = "def.dll"; + [TestMethod] + public void TestResultHandlerShouldCreateOneTestResultCollectionForOneSource() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + testCase1.Source = "abc.dll"; - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2) { Outcome = TestOutcome.Passed }; + TestCase testCase2 = CreateTestCase("TestCase2"); + testCase2.Source = "def.dll"; - this.htmlLogger.TestResultHandler(new object(), new Mock(result1).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(result2).Object); + ObjectModel.TestResult result1 = new(testCase1) { Outcome = TestOutcome.Failed }; + ObjectModel.TestResult result2 = new(testCase2) { Outcome = TestOutcome.Passed }; - Assert.AreEqual(2, this.htmlLogger.TestRunDetails.ResultCollectionList.Count); - Assert.AreEqual("abc.dll", this.htmlLogger.TestRunDetails.ResultCollectionList.First().Source); - Assert.AreEqual("def.dll", this.htmlLogger.TestRunDetails.ResultCollectionList.Last().Source); - } + _htmlLogger.TestResultHandler(new object(), new Mock(result1).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(result2).Object); - [TestMethod] - public void TestResultHandlerShouldAddFailedResultToFailedResultListInTestResultCollection() - { - TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + Assert.AreEqual(2, _htmlLogger.TestRunDetails!.ResultCollectionList!.Count); + Assert.AreEqual("abc.dll", _htmlLogger.TestRunDetails.ResultCollectionList.First().Source); + Assert.AreEqual("def.dll", _htmlLogger.TestRunDetails.ResultCollectionList.Last().Source); + } - this.htmlLogger.TestResultHandler(new object(), new Mock(result1).Object); + [TestMethod] + public void TestResultHandlerShouldAddFailedResultToFailedResultListInTestResultCollection() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + ObjectModel.TestResult result1 = new(testCase1) { Outcome = TestOutcome.Failed }; - Assert.AreEqual(1, this.htmlLogger.TestRunDetails.ResultCollectionList.First().FailedResultList.Count); - } + _htmlLogger.TestResultHandler(new object(), new Mock(result1).Object); - [TestMethod] - public void TestResultHandlerShouldAddHierarchicalResultsForOrderedTest() - { - TestCase testCase1 = CreateTestCase("TestCase1"); - TestCase testCase2 = CreateTestCase("TestCase2"); - TestCase testCase3 = CreateTestCase("TestCase3"); + Assert.AreEqual(1, _htmlLogger.TestRunDetails!.ResultCollectionList!.First().FailedResultList!.Count); + } - Guid parentExecutionId = Guid.NewGuid(); + [TestMethod] + public void TestResultHandlerShouldAddHierarchicalResultsForOrderedTest() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); + TestCase testCase3 = CreateTestCase("TestCase3"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(HtmlLoggerConstants.ExecutionIdProperty, parentExecutionId); - result1.SetPropertyValue(HtmlLoggerConstants.TestTypeProperty, HtmlLoggerConstants.OrderedTestTypeGuid); + Guid parentExecutionId = Guid.NewGuid(); - this.htmlLogger.TestResultHandler(new object(), new Mock(result1).Object); + ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(HtmlLoggerConstants.ExecutionIdProperty, parentExecutionId); + result1.SetPropertyValue(HtmlLoggerConstants.TestTypeProperty, HtmlLoggerConstants.OrderedTestTypeGuid); - Assert.AreEqual(1, this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.Count, "test handler is adding parent result correctly"); - Assert.IsNull(this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.First().InnerTestResults, "test handler is adding child result correctly"); + _htmlLogger.TestResultHandler(new object(), new Mock(result1).Object); - var result2 = new ObjectModel.TestResult(testCase2); - result2.SetPropertyValue(HtmlLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(HtmlLoggerConstants.ParentExecIdProperty, parentExecutionId); + Assert.AreEqual(1, _htmlLogger.TestRunDetails!.ResultCollectionList!.First().ResultList!.Count, "test handler is adding parent result correctly"); + Assert.IsNull(_htmlLogger.TestRunDetails!.ResultCollectionList!.First().ResultList!.First().InnerTestResults, "test handler is adding child result correctly"); - var result3 = new ObjectModel.TestResult(testCase3) { Outcome = TestOutcome.Failed }; - result3.SetPropertyValue(HtmlLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(HtmlLoggerConstants.ParentExecIdProperty, parentExecutionId); + var result2 = new ObjectModel.TestResult(testCase2); + result2.SetPropertyValue(HtmlLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(HtmlLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.htmlLogger.TestResultHandler(new object(), new Mock(result2).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(result3).Object); + var result3 = new ObjectModel.TestResult(testCase3) { Outcome = TestOutcome.Failed }; + result3.SetPropertyValue(HtmlLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(HtmlLoggerConstants.ParentExecIdProperty, parentExecutionId); - Assert.AreEqual(1, this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.Count, "test handler is adding parent result correctly"); - Assert.AreEqual(2, this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.First().InnerTestResults.Count, "test handler is adding child result correctly"); - } + _htmlLogger.TestResultHandler(new object(), new Mock(result2).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(result3).Object); - [TestMethod] - public void TestCompleteHandlerShouldKeepTackOfSummary() - { - TestCase passTestCase1 = CreateTestCase("Pass1"); - TestCase passTestCase2 = CreateTestCase("Pass2"); - TestCase failTestCase1 = CreateTestCase("Fail1"); - TestCase skipTestCase1 = CreateTestCase("Skip1"); - var passResult1 = new ObjectModel.TestResult(passTestCase1) { Outcome = TestOutcome.Passed }; - var passResult2 = new ObjectModel.TestResult(passTestCase2) { Outcome = TestOutcome.Passed }; - var failResult1 = new ObjectModel.TestResult(failTestCase1) { Outcome = TestOutcome.Failed }; - var skipResult1 = new ObjectModel.TestResult(skipTestCase1) { Outcome = TestOutcome.Skipped }; - - this.htmlLogger.TestResultHandler(new object(), new Mock(passResult1).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(passResult2).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(failResult1).Object); - this.htmlLogger.TestResultHandler(new object(), new Mock(skipResult1).Object); - - this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => - { - }).Returns(new Mock().Object); - - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); - - Assert.AreEqual(4, this.htmlLogger.TestRunDetails.Summary.TotalTests, "summary should keep track of total tests"); - Assert.AreEqual(1, this.htmlLogger.TestRunDetails.Summary.FailedTests, "summary should keep track of failed tests"); - Assert.AreEqual(2, this.htmlLogger.TestRunDetails.Summary.PassedTests, "summary should keep track of passed tests"); - Assert.AreEqual(1, this.htmlLogger.TestRunDetails.Summary.SkippedTests, "summary should keep track of passed tests"); - Assert.AreEqual(50, this.htmlLogger.TestRunDetails.Summary.PassPercentage, "summary should keep track of passed tests"); - Assert.IsNull(this.htmlLogger.TestRunDetails.Summary.TotalRunTime, "summary should keep track of passed tests"); - } - - [TestMethod] - public void TestCompleteHandlerShouldCreateCustumHtmlFileNamewithLogFileNameKey() - { - var parameters = new Dictionary(); - parameters[HtmlLoggerConstants.LogFileNameKey] = null; - parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - - this.htmlLogger.Initialize(new Mock().Object, parameters); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); - Assert.IsTrue(this.htmlLogger.HtmlFilePath.Contains("TestResult")); - } - - [TestMethod] - public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefix() + Assert.AreEqual(1, _htmlLogger.TestRunDetails!.ResultCollectionList!.First().ResultList!.Count, "test handler is adding parent result correctly"); + Assert.AreEqual(2, _htmlLogger.TestRunDetails.ResultCollectionList!.First().ResultList!.First().InnerTestResults!.Count, "test handler is adding child result correctly"); + } + + [TestMethod] + public void TestCompleteHandlerShouldKeepTackOfSummary() + { + TestCase passTestCase1 = CreateTestCase("Pass1"); + TestCase passTestCase2 = CreateTestCase("Pass2"); + TestCase failTestCase1 = CreateTestCase("Fail1"); + TestCase skipTestCase1 = CreateTestCase("Skip1"); + var passResult1 = new ObjectModel.TestResult(passTestCase1) { Outcome = TestOutcome.Passed }; + var passResult2 = new ObjectModel.TestResult(passTestCase2) { Outcome = TestOutcome.Passed }; + var failResult1 = new ObjectModel.TestResult(failTestCase1) { Outcome = TestOutcome.Failed }; + var skipResult1 = new ObjectModel.TestResult(skipTestCase1) { Outcome = TestOutcome.Skipped }; + + _htmlLogger.TestResultHandler(new object(), new Mock(passResult1).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(passResult2).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(failResult1).Object); + _htmlLogger.TestResultHandler(new object(), new Mock(skipResult1).Object); + + _mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => + { + }).Returns(new Mock().Object); + + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); + + Assert.AreEqual(4, _htmlLogger.TestRunDetails!.Summary!.TotalTests, "summary should keep track of total tests"); + Assert.AreEqual(1, _htmlLogger.TestRunDetails.Summary.FailedTests, "summary should keep track of failed tests"); + Assert.AreEqual(2, _htmlLogger.TestRunDetails.Summary.PassedTests, "summary should keep track of passed tests"); + Assert.AreEqual(1, _htmlLogger.TestRunDetails.Summary.SkippedTests, "summary should keep track of passed tests"); + Assert.AreEqual(50, _htmlLogger.TestRunDetails.Summary.PassPercentage, "summary should keep track of passed tests"); + Assert.IsNull(_htmlLogger.TestRunDetails.Summary.TotalRunTime, "summary should keep track of passed tests"); + } + + [TestMethod] + public void TestCompleteHandlerShouldCreateCustomHtmlFileNamewithLogFileNameKey() + { + var parameters = new Dictionary { - var parameters = new Dictionary(); - parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample"; - parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; - - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - - this.htmlLogger.Initialize(new Mock().Object, parameters); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); - Assert.IsFalse(this.htmlLogger.HtmlFilePath.Contains("__")); - } - - [TestMethod] - public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefixIfTargetFrameworkIsNull() + [HtmlLoggerConstants.LogFileNameKey] = null, + [DefaultLoggerParameterNames.TestRunDirectory] = "dsa" + }; + + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + + _htmlLogger.Initialize(new Mock().Object, parameters); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); + Assert.IsTrue(_htmlLogger.HtmlFilePath!.Contains("TestResult")); + } + + [TestMethod] + public void TestCompleteHandlerShouldCreateCustomHtmlFileNameWithLogPrefix() + { + var parameters = new Dictionary { - var parameters = new Dictionary(); - parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample"; - parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; - - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - - this.htmlLogger.Initialize(new Mock().Object, parameters); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); - Assert.IsTrue(this.htmlLogger.HtmlFilePath.Contains("sample_net451")); - } - - [TestMethod] - public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefixNull() + [HtmlLoggerConstants.LogFilePrefixKey] = "sample", + [DefaultLoggerParameterNames.TestRunDirectory] = "dsa", + [DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1" + }; + + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + + _htmlLogger.Initialize(new Mock().Object, parameters); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); + Assert.IsFalse(_htmlLogger.HtmlFilePath!.Contains("__")); + } + + [TestMethod] + public void TestCompleteHandlerShouldCreateCustomHtmlFileNameWithLogPrefixIfTargetFrameworkIsNull() + { + var parameters = new Dictionary { - var parameters = new Dictionary(); - parameters[HtmlLoggerConstants.LogFilePrefixKey] = null; - parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + [HtmlLoggerConstants.LogFilePrefixKey] = "sample", + [DefaultLoggerParameterNames.TestRunDirectory] = "dsa", + [DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1" + }; - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => - { - }).Returns(new Mock().Object); + _htmlLogger.Initialize(new Mock().Object, parameters); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); + Assert.IsTrue(_htmlLogger.HtmlFilePath!.Contains("sample_net451")); + } - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + [TestMethod] + public void TestCompleteHandlerShouldCreateCustomHtmlFileNameWithLogPrefixNull() + { + var parameters = new Dictionary + { + [HtmlLoggerConstants.LogFilePrefixKey] = null, + [DefaultLoggerParameterNames.TestRunDirectory] = "dsa", + [DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1" + }; - this.mockFileHelper.Verify(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite), Times.Once); - } + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); - [TestMethod] - public void TestCompleteHandlerShouldThrowExceptionWithLogPrefixIfTargetFrameworkKeyIsNotPresent() + _mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite)).Callback((x, y, z) => { - var parameters = new Dictionary(); - parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample.html"; - parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + }).Returns(new Mock().Object); - this.htmlLogger.Initialize(new Mock().Object, parameters); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); - Assert.ThrowsException(() => this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero))); - } + _mockFileHelper.Verify(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite), Times.Once); + } - [TestMethod] - public void IntializeShouldThrowExceptionIfBothPrefixAndNameProvided() + [TestMethod] + public void TestCompleteHandlerShouldThrowExceptionWithLogPrefixIfTargetFrameworkKeyIsNotPresent() + { + var parameters = new Dictionary { - this.parameters[HtmlLoggerConstants.LogFileNameKey] = "results.html"; - var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); - this.parameters[HtmlLoggerConstants.LogFilePrefixKey] = "HtmlPrefix"; - this.parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + [HtmlLoggerConstants.LogFilePrefixKey] = "sample.html", + [DefaultLoggerParameterNames.TestRunDirectory] = "dsa" + }; + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - Assert.ThrowsException(() => this.htmlLogger.Initialize(events.Object, this.parameters)); - } + _htmlLogger.Initialize(new Mock().Object, parameters); - [TestMethod] - public void TestCompleteHandlerShouldCreateFileCorrectly() - { - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); + Assert.ThrowsException(() => _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero))); + } - this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => - { - }).Returns(new Mock().Object); + [TestMethod] + public void IntializeShouldThrowExceptionIfBothPrefixAndNameProvided() + { + _parameters[HtmlLoggerConstants.LogFileNameKey] = "results.html"; + var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); + _parameters[HtmlLoggerConstants.LogFilePrefixKey] = "HtmlPrefix"; + _parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + Assert.ThrowsException(() => _htmlLogger.Initialize(_events.Object, _parameters)); + } - this.mockFileHelper.Verify(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite), Times.Once); - } + [TestMethod] + public void TestCompleteHandlerShouldCreateFileCorrectly() + { + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); - [TestMethod] - public void TestCompleteHandlerShouldDeleteFileCorrectly() + _mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite)).Callback((x, y, z) => { - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); + }).Returns(new Mock().Object); - this.mockFileHelper.Setup(x => x.Delete(It.IsAny())).Callback((x) => - { - }); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + _mockFileHelper.Verify(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite), Times.Once); + } - this.mockFileHelper.Verify(x => x.Delete(It.IsAny()), Times.Once); - } + [TestMethod] + public void TestCompleteHandlerShouldDeleteFileCorrectly() + { + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); - [TestMethod] - public void TestCompleteHandlerShouldCallHtmlTransformerCorrectly() + _mockFileHelper.Setup(x => x.Delete(It.IsAny())).Callback((x) => { - var testCase1 = CreateTestCase("TestCase1"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); + }); - this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => - { - }).Returns(new Mock().Object); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + _mockFileHelper.Verify(x => x.Delete(It.IsAny()), Times.Once); + } - this.mockHtmlTransformer.Verify(x => x.Transform(It.IsAny(), It.IsAny()), Times.Once); - } + [TestMethod] + public void TestCompleteHandlerShouldCallHtmlTransformerCorrectly() + { + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); - [TestMethod] - public void TestCompleteHandlerShouldWriteToXmlSerializerCorrectly() + _mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite)).Callback((x, y, z) => { - var testCase1 = CreateTestCase("TestCase1") ?? throw new ArgumentNullException($"CreateTestCase(\"TestCase1\")"); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); - this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => - { - }).Returns(new Mock().Object); - - this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); - - this.mockXmlSerializer.Verify(x => x.WriteObject(It.IsAny(), It.IsAny()), Times.Once); - Assert.IsTrue(htmlLogger.XmlFilePath.Contains(".xml")); - Assert.IsTrue(htmlLogger.HtmlFilePath.Contains(".html")); - } - - [TestMethod] - public void TestCompleteHandlerShouldNotDivideByZeroWhenThereAre0TestResults() - { - this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => - { - }).Returns(new Mock().Object); + }).Returns(new Mock().Object); - this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); - Assert.AreEqual(0, this.htmlLogger.TestRunDetails.Summary.TotalTests); - Assert.AreEqual(0, this.htmlLogger.TestRunDetails.Summary.PassPercentage); - } + _mockHtmlTransformer.Verify(x => x.Transform(It.IsAny(), It.IsAny()), Times.Once); + } - private static TestCase CreateTestCase(string testCaseName) + [TestMethod] + public void TestCompleteHandlerShouldWriteToXmlSerializerCorrectly() + { + var testCase1 = CreateTestCase("TestCase1") ?? throw new ArgumentNullException($"CreateTestCase(\"TestCase1\")"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + _mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite)).Callback((x, y, z) => { - return new TestCase(testCaseName, new Uri("some://uri"), "DummySourceFileName"); - } - } -} + }).Returns(new Mock().Object); + _htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); + _mockXmlSerializer.Verify(x => x.WriteObject(It.IsAny(), It.IsAny()), Times.Once); + Assert.IsTrue(_htmlLogger.XmlFilePath!.Contains(".xml")); + Assert.IsTrue(_htmlLogger.HtmlFilePath!.Contains(".html")); + } + [TestMethod] + public void TestCompleteHandlerShouldNotDivideByZeroWhenThereAre0TestResults() + { + _mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.OpenOrCreate, FileAccess.ReadWrite)).Callback((x, y, z) => + { + }).Returns(new Mock().Object); + _htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); + Assert.AreEqual(0, _htmlLogger.TestRunDetails!.Summary!.TotalTests); + Assert.AreEqual(0, _htmlLogger.TestRunDetails.Summary.PassPercentage); + } + private static TestCase CreateTestCase(string testCaseName) + { + return new TestCase(testCaseName, new Uri("some://uri"), "DummySourceFileName"); + } +} diff --git a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests.csproj b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests.csproj index c4f3325d64..7708ce4b17 100644 --- a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests.csproj @@ -1,26 +1,15 @@ - + - ..\..\ true true - true - true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe - - - - - - - diff --git a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Program.cs deleted file mode 100644 index a67797b97c..0000000000 --- a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/Program.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.csproj b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.csproj index 2984bca87b..3df4825d3e 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.csproj @@ -1,27 +1,16 @@ - + - ..\..\ true true - true - true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests - - - - - - - diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Program.cs deleted file mode 100644 index 7642a15003..0000000000 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 157b4a32ca..0000000000 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("ab12d4b6-bbe7-4a69-9839-3fcd0c77a04f")] diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs index 4b9aacccbf..9c1cc94e27 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs @@ -1,988 +1,970 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Xml; +using System.Xml.Linq; + +using Microsoft.TestPlatform.Extensions.TrxLogger.Utility; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using TrxLoggerConstants = Microsoft.TestPlatform.Extensions.TrxLogger.Utility.Constants; +using TrxLoggerObjectModel = Microsoft.TestPlatform.Extensions.TrxLogger.ObjectModel; +using TrxLoggerResources = Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.Resources.TrxResource; + +namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests; + +[TestClass] +public class TrxLoggerTests { - using Microsoft.TestPlatform.Extensions.TrxLogger.Utility; - using Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Globalization; - using System.IO; - using System.Linq; - using System.Runtime.CompilerServices; - using System.Xml; - using System.Xml.Linq; - using VisualStudio.TestPlatform.ObjectModel; - using VisualStudio.TestPlatform.ObjectModel.Client; - using VisualStudio.TestPlatform.ObjectModel.Logging; - using ObjectModel = Microsoft.VisualStudio.TestPlatform.ObjectModel; - using TrxLoggerConstants = Microsoft.TestPlatform.Extensions.TrxLogger.Utility.Constants; - using TrxLoggerObjectModel = Microsoft.TestPlatform.Extensions.TrxLogger.ObjectModel; - using TrxLoggerResources = Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.Resources.TrxResource; - - [TestClass] - public class TrxLoggerTests - { - private Mock events; - private TestableTrxLogger testableTrxLogger; - private Dictionary parameters; - private static string DefaultTestRunDirectory = Path.GetTempPath(); - private static string DefaultLogFileNameParameterValue = "logfilevalue.trx"; - private const string DefaultLogFilePrefixParameterValue = "log_prefix"; - - private const int MultipleLoggerInstanceCount = 2; - - [TestInitialize] - public void Initialize() - { - this.events = new Mock(); + private const string DefaultLogFilePrefixParameterValue = "log_prefix"; + private const int MultipleLoggerInstanceCount = 2; - this.testableTrxLogger = new TestableTrxLogger(); - this.parameters = new Dictionary(2); - this.parameters[DefaultLoggerParameterNames.TestRunDirectory] = TrxLoggerTests.DefaultTestRunDirectory; - this.parameters[TrxLoggerConstants.LogFileNameKey] = TrxLoggerTests.DefaultLogFileNameParameterValue; - this.testableTrxLogger.Initialize(this.events.Object, this.parameters); - } + private static readonly string DefaultTestRunDirectory = Path.GetTempPath(); + private static readonly string DefaultLogFileNameParameterValue = "logfilevalue.trx"; - [TestCleanup] - public void Cleanup() - { - if (!string.IsNullOrEmpty(this.testableTrxLogger?.trxFile) && File.Exists(this.testableTrxLogger.trxFile)) - { - File.Delete(this.testableTrxLogger.trxFile); - } - } + private readonly Mock _events; + private readonly Dictionary _parameters; - [TestMethod] - public void InitializeShouldThrowExceptionIfEventsIsNull() - { - Assert.ThrowsException( - () => - { - this.testableTrxLogger.Initialize(null, this.parameters); - }); - } + private TestableTrxLogger _testableTrxLogger; - [TestMethod] - public void InitializeShouldNotThrowExceptionIfEventsIsNotNull() - { - var events = new Mock(); - this.testableTrxLogger.Initialize(events.Object, this.parameters); - } + public TrxLoggerTests() + { + _events = new Mock(); - [TestMethod] - public void InitializeShouldThrowExceptionIfTestRunDirectoryIsEmptyOrNull() + _testableTrxLogger = new TestableTrxLogger(); + _parameters = new Dictionary(2) { - Assert.ThrowsException( - () => - { - var events = new Mock(); - this.parameters[DefaultLoggerParameterNames.TestRunDirectory] = null; - this.testableTrxLogger.Initialize(events.Object, parameters); - }); - } + [DefaultLoggerParameterNames.TestRunDirectory] = DefaultTestRunDirectory, + [TrxLoggerConstants.LogFileNameKey] = DefaultLogFileNameParameterValue + }; + _testableTrxLogger.Initialize(_events.Object, _parameters); + } - [TestMethod] - public void InitializeShouldNotThrowExceptionIfTestRunDirectoryIsNeitherEmptyNorNull() + [TestCleanup] + public void Cleanup() + { + if (!string.IsNullOrEmpty(_testableTrxLogger?.TrxFile) && File.Exists(_testableTrxLogger!.TrxFile)) { - var events = new Mock(); - this.testableTrxLogger.Initialize(events.Object, this.parameters); + File.Delete(_testableTrxLogger.TrxFile); } + } - [TestMethod] - public void InitializeShouldThrowExceptionIfParametersAreEmpty() - { - var events = new Mock(); - Assert.ThrowsException(() => this.testableTrxLogger.Initialize(events.Object, new Dictionary())); - } + [TestMethod] + public void InitializeShouldThrowExceptionIfEventsIsNull() + { + Assert.ThrowsException( + () => _testableTrxLogger.Initialize(null!, _parameters)); + } - [TestMethod] - public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() - { - Assert.ThrowsException(() => + [TestMethod] + public void InitializeShouldNotThrowExceptionIfEventsIsNotNull() + { + var events = new Mock(); + _testableTrxLogger.Initialize(events.Object, _parameters); + } + + [TestMethod] + public void InitializeShouldThrowExceptionIfTestRunDirectoryIsEmptyOrNull() + { + Assert.ThrowsException( + () => { - this.testableTrxLogger.TestMessageHandler(new object(), default); + var events = new Mock(); + _parameters[DefaultLoggerParameterNames.TestRunDirectory] = null!; + _testableTrxLogger.Initialize(events.Object, _parameters); }); - } + } - [TestMethod] - public void TestMessageHandlerShouldAddMessageWhenItIsInformation() - { - string message = "First message"; - string message2 = "Second message"; - TestRunMessageEventArgs trme = new TestRunMessageEventArgs(TestMessageLevel.Informational, message); - this.testableTrxLogger.TestMessageHandler(new object(), trme); + [TestMethod] + public void InitializeShouldNotThrowExceptionIfTestRunDirectoryIsNeitherEmptyNorNull() + { + var events = new Mock(); + _testableTrxLogger.Initialize(events.Object, _parameters); + } - TestRunMessageEventArgs trme2 = new TestRunMessageEventArgs(TestMessageLevel.Informational, message2); - this.testableTrxLogger.TestMessageHandler(new object(), trme2); + [TestMethod] + public void InitializeShouldThrowExceptionIfParametersAreEmpty() + { + var events = new Mock(); + Assert.ThrowsException(() => _testableTrxLogger.Initialize(events.Object, new Dictionary())); + } - string expectedMessage = message + Environment.NewLine + message2 + Environment.NewLine; - Assert.AreEqual(expectedMessage, this.testableTrxLogger.GetRunLevelInformationalMessage()); - } + [TestMethod] + public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() + { + Assert.ThrowsException(() => _testableTrxLogger.TestMessageHandler(new object(), default!)); + } - [TestMethod] - public void TestMessageHandlerShouldAddMessageInListIfItIsWarning() - { - string message = "The information to test"; - TestRunMessageEventArgs trme = new TestRunMessageEventArgs(TestMessageLevel.Warning, message); - this.testableTrxLogger.TestMessageHandler(new object(), trme); - this.testableTrxLogger.TestMessageHandler(new object(), trme); + [TestMethod] + public void TestMessageHandlerShouldAddMessageWhenItIsInformation() + { + string message = "First message"; + string message2 = "Second message"; + TestRunMessageEventArgs trme = new(TestMessageLevel.Informational, message); + _testableTrxLogger.TestMessageHandler(new object(), trme); - Assert.AreEqual(2, this.testableTrxLogger.GetRunLevelErrorsAndWarnings().Count); - } + TestRunMessageEventArgs trme2 = new(TestMessageLevel.Informational, message2); + _testableTrxLogger.TestMessageHandler(new object(), trme2); - [TestMethod] - public void TestMessageHandlerShouldAddMessageInListIfItIsError() - { - string message = "The information to test"; - TestRunMessageEventArgs trme = new TestRunMessageEventArgs(TestMessageLevel.Error, message); - this.testableTrxLogger.TestMessageHandler(new object(), trme); + string expectedMessage = message + Environment.NewLine + message2 + Environment.NewLine; + Assert.AreEqual(expectedMessage, _testableTrxLogger.GetRunLevelInformationalMessage()); + } - Assert.AreEqual(1, this.testableTrxLogger.GetRunLevelErrorsAndWarnings().Count); - } + [TestMethod] + public void TestMessageHandlerShouldAddMessageInListIfItIsWarning() + { + string message = "The information to test"; + TestRunMessageEventArgs trme = new(TestMessageLevel.Warning, message); + _testableTrxLogger.TestMessageHandler(new object(), trme); + _testableTrxLogger.TestMessageHandler(new object(), trme); - [TestMethod] - public void TestResultHandlerShouldCaptureStartTimeInSummaryWithTimeStampDuringIntialize() - { - ObjectModel.TestCase testCase = CreateTestCase("dummy string"); - ObjectModel.TestResult testResult = new ObjectModel.TestResult(testCase); - Mock e = new Mock(testResult); + Assert.AreEqual(2, _testableTrxLogger.GetRunLevelErrorsAndWarnings().Count); + } - this.testableTrxLogger.TestResultHandler(new object(), e.Object); + [TestMethod] + public void TestMessageHandlerShouldAddMessageInListIfItIsError() + { + string message = "The information to test"; + TestRunMessageEventArgs trme = new(TestMessageLevel.Error, message); + _testableTrxLogger.TestMessageHandler(new object(), trme); - Assert.AreEqual(this.testableTrxLogger.TestRunStartTime, this.testableTrxLogger.LoggerTestRun.Started); - } + Assert.AreEqual(1, _testableTrxLogger.GetRunLevelErrorsAndWarnings().Count); + } - [TestMethod] - public void TestResultHandlerKeepingTheTrackOfPassedAndFailedTests() - { - ObjectModel.TestCase passTestCase1 = CreateTestCase("Pass1"); - ObjectModel.TestCase passTestCase2 = CreateTestCase("Pass2"); - ObjectModel.TestCase failTestCase1 = CreateTestCase("Fail1"); - ObjectModel.TestCase skipTestCase1 = CreateTestCase("Skip1"); + [TestMethod] + public void TestResultHandlerShouldCaptureStartTimeInSummaryWithTimeStampDuringIntialize() + { + TestCase testCase = CreateTestCase("dummy string"); + VisualStudio.TestPlatform.ObjectModel.TestResult testResult = new(testCase); + Mock e = new(testResult); - ObjectModel.TestResult passResult1 = new ObjectModel.TestResult(passTestCase1); - passResult1.Outcome = ObjectModel.TestOutcome.Passed; + _testableTrxLogger.TestResultHandler(new object(), e.Object); - ObjectModel.TestResult passResult2 = new ObjectModel.TestResult(passTestCase2); - passResult2.Outcome = ObjectModel.TestOutcome.Passed; + Assert.AreEqual(_testableTrxLogger.TestRunStartTime, _testableTrxLogger.LoggerTestRun?.Started); + } - ObjectModel.TestResult failResult1 = new ObjectModel.TestResult(failTestCase1); - failResult1.Outcome = ObjectModel.TestOutcome.Failed; + [TestMethod] + public void TestResultHandlerKeepingTheTrackOfPassedAndFailedTests() + { + TestCase passTestCase1 = CreateTestCase("Pass1"); + TestCase passTestCase2 = CreateTestCase("Pass2"); + TestCase failTestCase1 = CreateTestCase("Fail1"); + TestCase skipTestCase1 = CreateTestCase("Skip1"); - ObjectModel.TestResult skipResult1 = new ObjectModel.TestResult(skipTestCase1); - skipResult1.Outcome = ObjectModel.TestOutcome.Skipped; + VisualStudio.TestPlatform.ObjectModel.TestResult passResult1 = new(passTestCase1); + passResult1.Outcome = TestOutcome.Passed; - Mock pass1 = new Mock(passResult1); - Mock pass2 = new Mock(passResult2); - Mock fail1 = new Mock(failResult1); - Mock skip1 = new Mock(skipResult1); + VisualStudio.TestPlatform.ObjectModel.TestResult passResult2 = new(passTestCase2); + passResult2.Outcome = TestOutcome.Passed; - this.testableTrxLogger.TestResultHandler(new object(), pass1.Object); - this.testableTrxLogger.TestResultHandler(new object(), pass2.Object); - this.testableTrxLogger.TestResultHandler(new object(), fail1.Object); - this.testableTrxLogger.TestResultHandler(new object(), skip1.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult failResult1 = new(failTestCase1); + failResult1.Outcome = TestOutcome.Failed; - Assert.AreEqual(2, this.testableTrxLogger.PassedTestCount, "Passed Tests"); - Assert.AreEqual(1, this.testableTrxLogger.FailedTestCount, "Failed Tests"); - } + VisualStudio.TestPlatform.ObjectModel.TestResult skipResult1 = new(skipTestCase1); + skipResult1.Outcome = TestOutcome.Skipped; - [TestMethod] - public void TestResultHandlerKeepingTheTrackOfTotalTests() - { - ObjectModel.TestCase passTestCase1 = CreateTestCase("Pass1"); - ObjectModel.TestCase passTestCase2 = CreateTestCase("Pass2"); - ObjectModel.TestCase failTestCase1 = CreateTestCase("Fail1"); - ObjectModel.TestCase skipTestCase1 = CreateTestCase("Skip1"); + Mock pass1 = new(passResult1); + Mock pass2 = new(passResult2); + Mock fail1 = new(failResult1); + Mock skip1 = new(skipResult1); - ObjectModel.TestResult passResult1 = new ObjectModel.TestResult(passTestCase1); - passResult1.Outcome = ObjectModel.TestOutcome.Passed; + _testableTrxLogger.TestResultHandler(new object(), pass1.Object); + _testableTrxLogger.TestResultHandler(new object(), pass2.Object); + _testableTrxLogger.TestResultHandler(new object(), fail1.Object); + _testableTrxLogger.TestResultHandler(new object(), skip1.Object); - ObjectModel.TestResult passResult2 = new ObjectModel.TestResult(passTestCase2); - passResult2.Outcome = ObjectModel.TestOutcome.Passed; + Assert.AreEqual(2, _testableTrxLogger.PassedTestCount, "Passed Tests"); + Assert.AreEqual(1, _testableTrxLogger.FailedTestCount, "Failed Tests"); + } - ObjectModel.TestResult failResult1 = new ObjectModel.TestResult(failTestCase1); - failResult1.Outcome = ObjectModel.TestOutcome.Failed; + [TestMethod] + public void TestResultHandlerKeepingTheTrackOfTotalTests() + { + TestCase passTestCase1 = CreateTestCase("Pass1"); + TestCase passTestCase2 = CreateTestCase("Pass2"); + TestCase failTestCase1 = CreateTestCase("Fail1"); + TestCase skipTestCase1 = CreateTestCase("Skip1"); - ObjectModel.TestResult skipResult1 = new ObjectModel.TestResult(skipTestCase1); - skipResult1.Outcome = ObjectModel.TestOutcome.Skipped; + VisualStudio.TestPlatform.ObjectModel.TestResult passResult1 = new(passTestCase1); + passResult1.Outcome = TestOutcome.Passed; - Mock pass1 = new Mock(passResult1); - Mock pass2 = new Mock(passResult2); - Mock fail1 = new Mock(failResult1); - Mock skip1 = new Mock(skipResult1); + VisualStudio.TestPlatform.ObjectModel.TestResult passResult2 = new(passTestCase2); + passResult2.Outcome = TestOutcome.Passed; - this.testableTrxLogger.TestResultHandler(new object(), pass1.Object); - this.testableTrxLogger.TestResultHandler(new object(), pass2.Object); - this.testableTrxLogger.TestResultHandler(new object(), fail1.Object); - this.testableTrxLogger.TestResultHandler(new object(), skip1.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult failResult1 = new(failTestCase1); + failResult1.Outcome = TestOutcome.Failed; - Assert.AreEqual(4, this.testableTrxLogger.TotalTestCount, "Passed Tests"); - } + VisualStudio.TestPlatform.ObjectModel.TestResult skipResult1 = new(skipTestCase1); + skipResult1.Outcome = TestOutcome.Skipped; - [TestMethod] - public void TestResultHandlerLockingAMessageForSkipTest() - { - ObjectModel.TestCase skipTestCase1 = CreateTestCase("Skip1"); + Mock pass1 = new(passResult1); + Mock pass2 = new(passResult2); + Mock fail1 = new(failResult1); + Mock skip1 = new(skipResult1); - ObjectModel.TestResult skipResult1 = new ObjectModel.TestResult(skipTestCase1); - skipResult1.Outcome = ObjectModel.TestOutcome.Skipped; + _testableTrxLogger.TestResultHandler(new object(), pass1.Object); + _testableTrxLogger.TestResultHandler(new object(), pass2.Object); + _testableTrxLogger.TestResultHandler(new object(), fail1.Object); + _testableTrxLogger.TestResultHandler(new object(), skip1.Object); - Mock skip1 = new Mock(skipResult1); + Assert.AreEqual(4, _testableTrxLogger.TotalTestCount, "Passed Tests"); + } - this.testableTrxLogger.TestResultHandler(new object(), skip1.Object); + [TestMethod] + public void TestResultHandlerLockingAMessageForSkipTest() + { + TestCase skipTestCase1 = CreateTestCase("Skip1"); - string expectedMessage = String.Format(CultureInfo.CurrentCulture, TrxLoggerResources.MessageForSkippedTests, "Skip1"); + VisualStudio.TestPlatform.ObjectModel.TestResult skipResult1 = new(skipTestCase1); + skipResult1.Outcome = TestOutcome.Skipped; - Assert.AreEqual(expectedMessage + Environment.NewLine, this.testableTrxLogger.GetRunLevelInformationalMessage()); - } + Mock skip1 = new(skipResult1); - [TestMethod] - public void TestResultHandlerShouldCreateOneTestResultForEachTestCase() - { - var testCase1 = CreateTestCase("testCase1"); - ObjectModel.TestCase testCase2 = CreateTestCase("testCase2"); + _testableTrxLogger.TestResultHandler(new object(), skip1.Object); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.Outcome = ObjectModel.TestOutcome.Skipped; + string expectedMessage = string.Format(CultureInfo.CurrentCulture, TrxLoggerResources.MessageForSkippedTests, "Skip1"); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2); - result2.Outcome = ObjectModel.TestOutcome.Failed; + Assert.AreEqual(expectedMessage + Environment.NewLine, _testableTrxLogger.GetRunLevelInformationalMessage()); + } - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); + [TestMethod] + public void TestResultHandlerShouldCreateOneTestResultForEachTestCase() + { + var testCase1 = CreateTestCase("testCase1"); + TestCase testCase2 = CreateTestCase("testCase2"); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.Outcome = TestOutcome.Skipped; - Assert.AreEqual(2, this.testableTrxLogger.TestResultCount, "TestResultHandler is not creating test result entry for each test case"); - } + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase2); + result2.Outcome = TestOutcome.Failed; - [TestMethod] - public void TestResultHandlerShouldCreateOneTestEntryForEachTestCase() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestCase testCase2 = CreateTestCase("TestCase2"); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.Outcome = ObjectModel.TestOutcome.Skipped; + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2); - result2.Outcome = ObjectModel.TestOutcome.Passed; + Assert.AreEqual(2, _testableTrxLogger.TestResultCount, "TestResultHandler is not creating test result entry for each test case"); + } - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); + [TestMethod] + public void TestResultHandlerShouldCreateOneTestEntryForEachTestCase() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.Outcome = TestOutcome.Skipped; - Assert.AreEqual(2, this.testableTrxLogger.TestEntryCount, "TestResultHandler is not creating test result entry for each test case"); - } + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase2); + result2.Outcome = TestOutcome.Passed; - [TestMethod] - public void TestResultHandlerShouldCreateOneUnitTestElementForEachTestCase() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestCase testCase2 = CreateTestCase("TestCase2"); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2); - result2.Outcome = ObjectModel.TestOutcome.Failed; + Assert.AreEqual(2, _testableTrxLogger.TestEntryCount, "TestResultHandler is not creating test result entry for each test case"); + } - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); + [TestMethod] + public void TestResultHandlerShouldCreateOneUnitTestElementForEachTestCase() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); - Assert.AreEqual(2, this.testableTrxLogger.UnitTestElementCount, "TestResultHandler is not creating test result entry for each test case"); - } + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase2); + result2.Outcome = TestOutcome.Failed; - [TestMethod] - public void TestResultHandlerShouldAddFlatResultsIfParentTestResultIsNotPresent() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); - Guid parentExecutionId = Guid.NewGuid(); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result1.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + Assert.AreEqual(2, _testableTrxLogger.UnitTestElementCount, "TestResultHandler is not creating test result entry for each test case"); + } - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase1); - result2.Outcome = ObjectModel.TestOutcome.Failed; - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + [TestMethod] + public void TestResultHandlerShouldAddFlatResultsIfParentTestResultIsNotPresent() + { + TestCase testCase1 = CreateTestCase("TestCase1"); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); + Guid parentExecutionId = Guid.NewGuid(); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result1.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Assert.AreEqual(2, this.testableTrxLogger.TestResultCount, "TestResultHandler is not creating flat results when parent result is not present."); - } + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase1); + result2.Outcome = TestOutcome.Failed; + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - [TestMethod] - public void TestResultHandlerShouldChangeGuidAndDisplayNameForMsTestResultIfParentNotPresentButTestResultNamePresent() - { - this.ValidateTestIdAndNameInTrx(true); - } + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); - [TestMethod] - public void TestResultHandlerShouldNotChangeGuidAndDisplayNameForNonMsTestResultIfParentNotPresentButTestResultNamePresent() - { - this.ValidateTestIdAndNameInTrx(false); - } + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - [TestMethod] - public void TestResultHandlerShouldAddHierarchicalResultsIfParentTestResultIsPresent() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); + Assert.AreEqual(2, _testableTrxLogger.TestResultCount, "TestResultHandler is not creating flat results when parent result is not present."); + } - Guid parentExecutionId = Guid.NewGuid(); + [TestMethod] + public void TestResultHandlerShouldNotChangeGuidAndDisplayNameForTestResultIfParentNotPresentButTestResultNamePresent() + { + ValidateTestIdAndNameInTrx(); + } - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); + [TestMethod] + public void TestResultHandlerShouldAddHierarchicalResultsIfParentTestResultIsPresent() + { + TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase1); - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + Guid parentExecutionId = Guid.NewGuid(); - ObjectModel.TestResult result3 = new ObjectModel.TestResult(testCase1); - result3.Outcome = ObjectModel.TestOutcome.Failed; - result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - Mock resultEventArg3 = new Mock(result3); + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase1); + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult result3 = new(testCase1); + result3.Outcome = TestOutcome.Failed; + result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Assert.AreEqual(1, this.testableTrxLogger.TestResultCount, "TestResultHandler is not creating hierarchical results when parent result is present."); - Assert.AreEqual(3, this.testableTrxLogger.TotalTestCount, "TestResultHandler is not adding all inner results in parent test result."); - } + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + Mock resultEventArg3 = new(result3); - [TestMethod] - public void TestResultHandlerShouldAddSingleTestElementForDataDrivenTests() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); - Guid parentExecutionId = Guid.NewGuid(); + Assert.AreEqual(1, _testableTrxLogger.TestResultCount, "TestResultHandler is not creating hierarchical results when parent result is present."); + Assert.AreEqual(3, _testableTrxLogger.TotalTestCount, "TestResultHandler is not adding all inner results in parent test result."); + } - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); + [TestMethod] + public void TestResultHandlerShouldAddSingleTestElementForDataDrivenTests() + { + TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase1); - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + Guid parentExecutionId = Guid.NewGuid(); - ObjectModel.TestResult result3 = new ObjectModel.TestResult(testCase1); - result3.Outcome = ObjectModel.TestOutcome.Failed; - result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - Mock resultEventArg3 = new Mock(result3); + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase1); + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + VisualStudio.TestPlatform.ObjectModel.TestResult result3 = new(testCase1); + result3.Outcome = TestOutcome.Failed; + result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Assert.AreEqual(1, this.testableTrxLogger.UnitTestElementCount, "TestResultHandler is adding multiple test elements for data driven tests."); - } + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + Mock resultEventArg3 = new(result3); - [TestMethod] - public void TestResultHandlerShouldAddSingleTestEntryForDataDrivenTests() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + + Assert.AreEqual(1, _testableTrxLogger.UnitTestElementCount, "TestResultHandler is adding multiple test elements for data driven tests."); + } - Guid parentExecutionId = Guid.NewGuid(); + [TestMethod] + public void TestResultHandlerShouldAddSingleTestEntryForDataDrivenTests() + { + TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); + Guid parentExecutionId = Guid.NewGuid(); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase1); - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); - ObjectModel.TestResult result3 = new ObjectModel.TestResult(testCase1); - result3.Outcome = ObjectModel.TestOutcome.Failed; - result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase1); + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - Mock resultEventArg3 = new Mock(result3); + VisualStudio.TestPlatform.ObjectModel.TestResult result3 = new(testCase1); + result3.Outcome = TestOutcome.Failed; + result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + Mock resultEventArg3 = new(result3); - Assert.AreEqual(1, this.testableTrxLogger.TestEntryCount, "TestResultHandler is adding multiple test entries for data driven tests."); - } + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); - [TestMethod] - public void TestResultHandlerShouldAddHierarchicalResultsForOrderedTest() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestCase testCase2 = CreateTestCase("TestCase2"); - ObjectModel.TestCase testCase3 = CreateTestCase("TestCase3"); + Assert.AreEqual(1, _testableTrxLogger.TestEntryCount, "TestResultHandler is adding multiple test entries for data driven tests."); + } - Guid parentExecutionId = Guid.NewGuid(); + [TestMethod] + public void TestResultHandlerShouldAddHierarchicalResultsForOrderedTest() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); + TestCase testCase3 = CreateTestCase("TestCase3"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); - result1.SetPropertyValue(TrxLoggerConstants.TestTypeProperty, TrxLoggerConstants.OrderedTestTypeGuid); + Guid parentExecutionId = Guid.NewGuid(); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2); - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); + result1.SetPropertyValue(TrxLoggerConstants.TestTypeProperty, TrxLoggerConstants.OrderedTestTypeGuid); - ObjectModel.TestResult result3 = new ObjectModel.TestResult(testCase3); - result3.Outcome = ObjectModel.TestOutcome.Failed; - result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase2); + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - Mock resultEventArg3 = new Mock(result3); + VisualStudio.TestPlatform.ObjectModel.TestResult result3 = new(testCase3); + result3.Outcome = TestOutcome.Failed; + result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + Mock resultEventArg3 = new(result3); - Assert.AreEqual(1, this.testableTrxLogger.TestResultCount, "TestResultHandler is not creating hierarchical results for ordered test."); - Assert.AreEqual(3, this.testableTrxLogger.TotalTestCount, "TestResultHandler is not adding all inner results in ordered test."); - } + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); - [TestMethod] - public void TestResultHandlerShouldAddMultipleTestElementsForOrderedTest() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestCase testCase2 = CreateTestCase("TestCase2"); - ObjectModel.TestCase testCase3 = CreateTestCase("TestCase3"); + Assert.AreEqual(1, _testableTrxLogger.TestResultCount, "TestResultHandler is not creating hierarchical results for ordered test."); + Assert.AreEqual(3, _testableTrxLogger.TotalTestCount, "TestResultHandler is not adding all inner results in ordered test."); + } - Guid parentExecutionId = Guid.NewGuid(); + [TestMethod] + public void TestResultHandlerShouldAddMultipleTestElementsForOrderedTest() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); + TestCase testCase3 = CreateTestCase("TestCase3"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); - result1.SetPropertyValue(TrxLoggerConstants.TestTypeProperty, TrxLoggerConstants.OrderedTestTypeGuid); + Guid parentExecutionId = Guid.NewGuid(); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2); - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); + result1.SetPropertyValue(TrxLoggerConstants.TestTypeProperty, TrxLoggerConstants.OrderedTestTypeGuid); - ObjectModel.TestResult result3 = new ObjectModel.TestResult(testCase3); - result3.Outcome = ObjectModel.TestOutcome.Failed; - result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase2); + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - Mock resultEventArg3 = new Mock(result3); + VisualStudio.TestPlatform.ObjectModel.TestResult result3 = new(testCase3); + result3.Outcome = TestOutcome.Failed; + result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + Mock resultEventArg3 = new(result3); - Assert.AreEqual(3, this.testableTrxLogger.UnitTestElementCount, "TestResultHandler is not adding multiple test elements for ordered test."); - } + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); - [TestMethod] - public void TestResultHandlerShouldAddSingleTestEntryForOrderedTest() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - ObjectModel.TestCase testCase2 = CreateTestCase("TestCase2"); - ObjectModel.TestCase testCase3 = CreateTestCase("TestCase3"); + Assert.AreEqual(3, _testableTrxLogger.UnitTestElementCount, "TestResultHandler is not adding multiple test elements for ordered test."); + } - Guid parentExecutionId = Guid.NewGuid(); + [TestMethod] + public void TestResultHandlerShouldAddSingleTestEntryForOrderedTest() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); + TestCase testCase3 = CreateTestCase("TestCase3"); - ObjectModel.TestResult result1 = new ObjectModel.TestResult(testCase1); - result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); - result1.SetPropertyValue(TrxLoggerConstants.TestTypeProperty, TrxLoggerConstants.OrderedTestTypeGuid); + Guid parentExecutionId = Guid.NewGuid(); - ObjectModel.TestResult result2 = new ObjectModel.TestResult(testCase2); - result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result1 = new(testCase1); + result1.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, parentExecutionId); + result1.SetPropertyValue(TrxLoggerConstants.TestTypeProperty, TrxLoggerConstants.OrderedTestTypeGuid); - ObjectModel.TestResult result3 = new ObjectModel.TestResult(testCase3); - result3.Outcome = ObjectModel.TestOutcome.Failed; - result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); + VisualStudio.TestPlatform.ObjectModel.TestResult result2 = new(testCase2); + result2.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - Mock resultEventArg1 = new Mock(result1); - Mock resultEventArg2 = new Mock(result2); - Mock resultEventArg3 = new Mock(result3); + VisualStudio.TestPlatform.ObjectModel.TestResult result3 = new(testCase3); + result3.Outcome = TestOutcome.Failed; + result3.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(TrxLoggerConstants.ParentExecIdProperty, parentExecutionId); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); + Mock resultEventArg1 = new(result1); + Mock resultEventArg2 = new(result2); + Mock resultEventArg3 = new(result3); - Assert.AreEqual(1, this.testableTrxLogger.TestEntryCount, "TestResultHandler is adding multiple test entries for ordered test."); - } + _testableTrxLogger.TestResultHandler(new object(), resultEventArg1.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg2.Object); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg3.Object); - [TestMethod] - public void TestRunCompleteHandlerShouldReportFailedOutcomeIfTestRunIsAborted() - { - string message = "The information to test"; - TestRunMessageEventArgs trme = new TestRunMessageEventArgs(TestMessageLevel.Error, message); - this.testableTrxLogger.TestMessageHandler(new object(), trme); + Assert.AreEqual(1, _testableTrxLogger.TestEntryCount, "TestResultHandler is adding multiple test entries for ordered test."); + } - this.testableTrxLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + [TestMethod] + public void TestRunCompleteHandlerShouldReportFailedOutcomeIfTestRunIsAborted() + { + string message = "The information to test"; + TestRunMessageEventArgs trme = new(TestMessageLevel.Error, message); + _testableTrxLogger.TestMessageHandler(new object(), trme); - Assert.AreEqual(this.testableTrxLogger.TestResultOutcome, TrxLoggerObjectModel.TestOutcome.Failed); - } + _testableTrxLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero)); - [TestMethod] - public void OutcomeOfRunWillBeFailIfAnyTestsFails() - { - ObjectModel.TestCase passTestCase1 = CreateTestCase("Pass1"); - ObjectModel.TestCase passTestCase2 = CreateTestCase("Pass2"); - ObjectModel.TestCase failTestCase1 = CreateTestCase("Fail1"); - ObjectModel.TestCase skipTestCase1 = CreateTestCase("Skip1"); + Assert.AreEqual(_testableTrxLogger.TestResultOutcome, TrxLoggerObjectModel.TestOutcome.Failed); + } - ObjectModel.TestResult passResult1 = new ObjectModel.TestResult(passTestCase1); - passResult1.Outcome = ObjectModel.TestOutcome.Passed; + [TestMethod] + public void OutcomeOfRunWillBeFailIfAnyTestsFails() + { + TestCase passTestCase1 = CreateTestCase("Pass1"); + TestCase passTestCase2 = CreateTestCase("Pass2"); + TestCase failTestCase1 = CreateTestCase("Fail1"); + TestCase skipTestCase1 = CreateTestCase("Skip1"); - ObjectModel.TestResult passResult2 = new ObjectModel.TestResult(passTestCase2); - passResult2.Outcome = ObjectModel.TestOutcome.Passed; + VisualStudio.TestPlatform.ObjectModel.TestResult passResult1 = new(passTestCase1); + passResult1.Outcome = TestOutcome.Passed; - ObjectModel.TestResult failResult1 = new ObjectModel.TestResult(failTestCase1); - failResult1.Outcome = ObjectModel.TestOutcome.Failed; + VisualStudio.TestPlatform.ObjectModel.TestResult passResult2 = new(passTestCase2); + passResult2.Outcome = TestOutcome.Passed; - ObjectModel.TestResult skipResult1 = new ObjectModel.TestResult(skipTestCase1); - skipResult1.Outcome = ObjectModel.TestOutcome.Skipped; + VisualStudio.TestPlatform.ObjectModel.TestResult failResult1 = new(failTestCase1); + failResult1.Outcome = TestOutcome.Failed; - Mock pass1 = new Mock(passResult1); - Mock pass2 = new Mock(passResult2); - Mock fail1 = new Mock(failResult1); - Mock skip1 = new Mock(skipResult1); + VisualStudio.TestPlatform.ObjectModel.TestResult skipResult1 = new(skipTestCase1); + skipResult1.Outcome = TestOutcome.Skipped; - this.testableTrxLogger.TestResultHandler(new object(), pass1.Object); - this.testableTrxLogger.TestResultHandler(new object(), pass2.Object); - this.testableTrxLogger.TestResultHandler(new object(), fail1.Object); - this.testableTrxLogger.TestResultHandler(new object(), skip1.Object); + Mock pass1 = new(passResult1); + Mock pass2 = new(passResult2); + Mock fail1 = new(failResult1); + Mock skip1 = new(skipResult1); - var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); + _testableTrxLogger.TestResultHandler(new object(), pass1.Object); + _testableTrxLogger.TestResultHandler(new object(), pass2.Object); + _testableTrxLogger.TestResultHandler(new object(), fail1.Object); + _testableTrxLogger.TestResultHandler(new object(), skip1.Object); - this.testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); + var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); - Assert.AreEqual(TrxLoggerObjectModel.TestOutcome.Failed, this.testableTrxLogger.TestResultOutcome); - } + _testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); - [TestMethod] - public void OutcomeOfRunWillBeCompletedIfNoTestsFails() - { - ObjectModel.TestCase passTestCase1 = CreateTestCase("Pass1"); - ObjectModel.TestCase passTestCase2 = CreateTestCase("Pass2"); - ObjectModel.TestCase skipTestCase1 = CreateTestCase("Skip1"); + Assert.AreEqual(TrxLoggerObjectModel.TestOutcome.Failed, _testableTrxLogger.TestResultOutcome); + } - ObjectModel.TestResult passResult1 = new ObjectModel.TestResult(passTestCase1); - passResult1.Outcome = ObjectModel.TestOutcome.Passed; + [TestMethod] + public void OutcomeOfRunWillBeCompletedIfNoTestsFails() + { + TestCase passTestCase1 = CreateTestCase("Pass1"); + TestCase passTestCase2 = CreateTestCase("Pass2"); + TestCase skipTestCase1 = CreateTestCase("Skip1"); - ObjectModel.TestResult passResult2 = new ObjectModel.TestResult(passTestCase2); - passResult2.Outcome = ObjectModel.TestOutcome.Passed; + VisualStudio.TestPlatform.ObjectModel.TestResult passResult1 = new(passTestCase1); + passResult1.Outcome = TestOutcome.Passed; - ObjectModel.TestResult skipResult1 = new ObjectModel.TestResult(skipTestCase1); - skipResult1.Outcome = ObjectModel.TestOutcome.Skipped; + VisualStudio.TestPlatform.ObjectModel.TestResult passResult2 = new(passTestCase2); + passResult2.Outcome = TestOutcome.Passed; - Mock pass1 = new Mock(passResult1); - Mock pass2 = new Mock(passResult2); - Mock skip1 = new Mock(skipResult1); + VisualStudio.TestPlatform.ObjectModel.TestResult skipResult1 = new(skipTestCase1); + skipResult1.Outcome = TestOutcome.Skipped; - this.testableTrxLogger.TestResultHandler(new object(), pass1.Object); - this.testableTrxLogger.TestResultHandler(new object(), pass2.Object); - this.testableTrxLogger.TestResultHandler(new object(), skip1.Object); + Mock pass1 = new(passResult1); + Mock pass2 = new(passResult2); + Mock skip1 = new(skipResult1); - var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); + _testableTrxLogger.TestResultHandler(new object(), pass1.Object); + _testableTrxLogger.TestResultHandler(new object(), pass2.Object); + _testableTrxLogger.TestResultHandler(new object(), skip1.Object); - this.testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); + var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); - Assert.AreEqual(TrxLoggerObjectModel.TestOutcome.Completed, this.testableTrxLogger.TestResultOutcome); - } + _testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); - [TestMethod] - public void TheDefaultTrxFileNameShouldNotHaveWhiteSpace() - { - // To create default trx file, log file parameter should be null. - this.parameters[TrxLoggerConstants.LogFileNameKey] = null; - this.testableTrxLogger.Initialize(this.events.Object, this.parameters); + Assert.AreEqual(TrxLoggerObjectModel.TestOutcome.Completed, _testableTrxLogger.TestResultOutcome); + } - this.MakeTestRunComplete(); + [TestMethod] + public void TheDefaultTrxFileNameShouldNotHaveWhiteSpace() + { + // To create default trx file, log file parameter should be null. + _parameters[TrxLoggerConstants.LogFileNameKey] = null!; + _testableTrxLogger.Initialize(_events.Object, _parameters); - bool trxFileNameContainsWhiteSpace = Path.GetFileName(this.testableTrxLogger.trxFile).Contains(' '); - Assert.IsFalse(trxFileNameContainsWhiteSpace, $"\"{this.testableTrxLogger.trxFile}\": Trx file name should not have white spaces"); - } + MakeTestRunComplete(); - [TestMethod] - public void DefaultTrxFileShouldCreateIfLogFileNameParameterNotPassed() - { - // To create default trx file, If LogFileName parameter not passed - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); - this.testableTrxLogger.Initialize(this.events.Object, this.parameters); + bool trxFileNameContainsWhiteSpace = Path.GetFileName(_testableTrxLogger.TrxFile)!.Contains(' '); + Assert.IsFalse(trxFileNameContainsWhiteSpace, $"\"{_testableTrxLogger.TrxFile}\": Trx file name should not have white spaces"); + } - this.MakeTestRunComplete(); + [TestMethod] + public void DefaultTrxFileShouldCreateIfLogFileNameParameterNotPassed() + { + // To create default trx file, If LogFileName parameter not passed + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _testableTrxLogger.Initialize(_events.Object, _parameters); - Assert.IsFalse(string.IsNullOrWhiteSpace(this.testableTrxLogger.trxFile)); - } + MakeTestRunComplete(); - [TestMethod] - public void DefaultTrxFileNameVerification() - { - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); - this.parameters[TrxLoggerConstants.LogFilePrefixKey] = DefaultLogFilePrefixParameterValue; + Assert.IsFalse(string.IsNullOrWhiteSpace(_testableTrxLogger.TrxFile)); + } - var time = DateTime.Now; - var trxFileHelper = new TrxFileHelper(() => time); + [TestMethod] + public void DefaultTrxFileNameVerification() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _parameters[TrxLoggerConstants.LogFilePrefixKey] = DefaultLogFilePrefixParameterValue; - testableTrxLogger = new TestableTrxLogger(new FileHelper(), trxFileHelper); - testableTrxLogger.Initialize(this.events.Object, this.parameters); + var time = DateTime.Now; + var trxFileHelper = new TrxFileHelper(() => time); - MakeTestRunComplete(); + _testableTrxLogger = new TestableTrxLogger(new FileHelper(), trxFileHelper); + _testableTrxLogger.Initialize(_events.Object, _parameters); - var fileName = Path.GetFileName(testableTrxLogger.trxFile); - var expectedName = $"{DefaultLogFilePrefixParameterValue}{time:_yyyyMMddHHmmss}.trx"; + MakeTestRunComplete(); - Assert.AreEqual(expectedName, fileName, "Trx file name pattern has changed. It should be in the form of prefix_yyyyMMddHHmmss.trx, Azure Devops VSTest task depends on this naming."); - } + var fileName = Path.GetFileName(_testableTrxLogger.TrxFile); + var expectedName = $"{DefaultLogFilePrefixParameterValue}{time:_yyyyMMddHHmmss}.trx"; - [TestMethod] - public void DefaultTrxFileShouldIterateIfLogFileNameParameterNotPassed() - { - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); + Assert.AreEqual(expectedName, fileName, "Trx file name pattern has changed. It should be in the form of prefix_yyyyMMddHHmmss.trx, Azure Devops VSTest task depends on this naming."); + } - var files = TestMultipleTrxLoggers(); + [TestMethod] + public void DefaultTrxFileShouldIterateIfLogFileNameParameterNotPassed() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); - Assert.AreEqual(MultipleLoggerInstanceCount, files.Length, "All logger instances should get different file names!"); - } + var files = TestMultipleTrxLoggers(); - [TestMethod] - public void TrxFileNameShouldNotIterate() - { - var files = TestMultipleTrxLoggers(); + Assert.AreEqual(MultipleLoggerInstanceCount, files.Length, "All logger instances should get different file names!"); + } - Assert.AreEqual(1, files.Length, "All logger instances should get the same file name!"); - } + [TestMethod] + public void TrxFileNameShouldNotIterate() + { + var files = TestMultipleTrxLoggers(); - [TestMethod] - public void TrxPrefixFileNameShouldIterate() - { - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); - this.parameters[TrxLoggerConstants.LogFilePrefixKey] = DefaultLogFilePrefixParameterValue; + Assert.AreEqual(1, files.Length, "All logger instances should get the same file name!"); + } - var files = TestMultipleTrxLoggers(); + [TestMethod] + public void TrxPrefixFileNameShouldIterate() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _parameters[TrxLoggerConstants.LogFilePrefixKey] = DefaultLogFilePrefixParameterValue; - Assert.AreEqual(MultipleLoggerInstanceCount, files.Length, "All logger instances should get different file names!"); - } + var files = TestMultipleTrxLoggers(); + + Assert.AreEqual(MultipleLoggerInstanceCount, files.Length, "All logger instances should get different file names!"); + } + + private string?[] TestMultipleTrxLoggers() + { + var files = new string?[2]; - private string[] TestMultipleTrxLoggers() + try { - var files = new string[2]; + var time = new DateTime(2020, 1, 1, 0, 0, 0); - try - { - var time = new DateTime(2020, 1, 1, 0, 0, 0); + var trxFileHelper = new TrxFileHelper(() => time); + var trxLogger1 = new TestableTrxLogger(new FileHelper(), trxFileHelper); + var trxLogger2 = new TestableTrxLogger(new FileHelper(), trxFileHelper); - var trxFileHelper = new TrxFileHelper(() => time); - var trxLogger1 = new TestableTrxLogger(new FileHelper(), trxFileHelper); - var trxLogger2 = new TestableTrxLogger(new FileHelper(), trxFileHelper); + trxLogger1.Initialize(_events.Object, _parameters); + trxLogger2.Initialize(_events.Object, _parameters); - trxLogger1.Initialize(this.events.Object, this.parameters); - trxLogger2.Initialize(this.events.Object, this.parameters); + MakeTestRunComplete(trxLogger1); + files[0] = trxLogger1.TrxFile; - MakeTestRunComplete(trxLogger1); - files[0] = trxLogger1.trxFile; + MakeTestRunComplete(trxLogger2); + files[1] = trxLogger2.TrxFile; + } + finally + { + files = files + .Where(i => !string.IsNullOrWhiteSpace(i)) + .Distinct() + .ToArray(); - MakeTestRunComplete(trxLogger2); - files[1] = trxLogger2.trxFile; - } - finally + foreach (var file in files) { - files = files - .Where(i => !string.IsNullOrWhiteSpace(i)) - .Distinct() - .ToArray(); - - foreach (var file in files) + if (!string.IsNullOrEmpty(file) && File.Exists(file)) { - if (!string.IsNullOrEmpty(file) && File.Exists(file)) - { - File.Delete(file); - } + File.Delete(file); } } - - return files; } - [TestMethod] - public void CustomTrxFileNameShouldConstructFromLogFileParameter() - { - this.MakeTestRunComplete(); + return files; + } - Assert.AreEqual(Path.Combine(TrxLoggerTests.DefaultTestRunDirectory, TrxLoggerTests.DefaultLogFileNameParameterValue), this.testableTrxLogger.trxFile, "Wrong Trx file name"); - } + [TestMethod] + public void CustomTrxFileNameShouldConstructFromLogFileParameter() + { + MakeTestRunComplete(); - /// - /// Unit test for reading TestCategories from the TestCase which is part of test result. - /// - [TestMethod] - public void GetCustomPropertyValueFromTestCaseShouldReadCategoryAttributesFromTestCase() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - TestProperty testProperty = TestProperty.Register("MSTestDiscoverer.TestCategory", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); + Assert.AreEqual(Path.Combine(DefaultTestRunDirectory, DefaultLogFileNameParameterValue), _testableTrxLogger.TrxFile, "Wrong Trx file name"); + } - testCase1.SetPropertyValue(testProperty, new[] { "ClassLevel", "AsmLevel" }); + /// + /// Unit test for reading TestCategories from the TestCase which is part of test result. + /// + [TestMethod] + public void GetCustomPropertyValueFromTestCaseShouldReadCategoryAttributesFromTestCase() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestProperty testProperty = TestProperty.Register("MSTestDiscoverer.TestCategory", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); - var converter = new Converter(new Mock().Object, new TrxFileHelper()); - List listCategoriesActual = converter.GetCustomPropertyValueFromTestCase(testCase1, "MSTestDiscoverer.TestCategory"); + testCase1.SetPropertyValue(testProperty, new[] { "ClassLevel", "AsmLevel" }); - List listCategoriesExpected = new List(); - listCategoriesExpected.Add("ClassLevel"); - listCategoriesExpected.Add("AsmLevel"); + List listCategoriesActual = Converter.GetCustomPropertyValueFromTestCase(testCase1, "MSTestDiscoverer.TestCategory"); - CollectionAssert.AreEqual(listCategoriesExpected, listCategoriesActual); - } + List listCategoriesExpected = + [ + "ClassLevel", + "AsmLevel" + ]; - [TestMethod] - public void GetCustomPropertyValueFromTestCaseShouldReadWorkItemAttributesFromTestCase() - { - ObjectModel.TestCase testCase1 = CreateTestCase("TestCase1"); - TestProperty testProperty = TestProperty.Register("WorkItemIds", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); + CollectionAssert.AreEqual(listCategoriesExpected, listCategoriesActual); + } - testCase1.SetPropertyValue(testProperty, new[] { "99999", "0" }); + [TestMethod] + public void GetCustomPropertyValueFromTestCaseShouldReadWorkItemAttributesFromTestCase() + { + TestCase testCase1 = CreateTestCase("TestCase1"); + TestProperty testProperty = TestProperty.Register("WorkItemIds", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); - var converter = new Converter(new Mock().Object, new TrxFileHelper()); - List listWorkItemsActual = converter.GetCustomPropertyValueFromTestCase(testCase1, "WorkItemIds"); + testCase1.SetPropertyValue(testProperty, new[] { "99999", "0" }); - List listWorkItemsExpected = new List(); - listWorkItemsExpected.Add("99999"); - listWorkItemsExpected.Add("0"); + List listWorkItemsActual = Converter.GetCustomPropertyValueFromTestCase(testCase1, "WorkItemIds"); - CollectionAssert.AreEqual(listWorkItemsExpected, listWorkItemsActual); - } + List listWorkItemsExpected = + [ + "99999", + "0" + ]; - [TestMethod] - public void CRLFCharactersShouldGetRetainedInTrx() - { - // To create default trx file, If LogFileName parameter not passed - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); - this.testableTrxLogger.Initialize(this.events.Object, this.parameters); + CollectionAssert.AreEqual(listWorkItemsExpected, listWorkItemsActual); + } - string message = $"one line{ Environment.NewLine }second line\r\nthird line"; - var pass = TrxLoggerTests.CreatePassTestResultEventArgsMock("Pass1", new List { new TestResultMessage(TestResultMessage.StandardOutCategory, message) }); + [TestMethod] + public void CrlfCharactersShouldGetRetainedInTrx() + { + // To create default trx file, If LogFileName parameter not passed + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _testableTrxLogger.Initialize(_events.Object, _parameters); - this.testableTrxLogger.TestResultHandler(new object(), pass.Object); + string message = $"one line{Environment.NewLine}second line\r\nthird line"; + var pass = CreatePassTestResultEventArgsMock("Pass1", new List { new(TestResultMessage.StandardOutCategory, message) }); - var testRunCompleteEventArgs = TrxLoggerTests.CreateTestRunCompleteEventArgs(); - this.testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); + _testableTrxLogger.TestResultHandler(new object(), pass.Object); - Assert.IsTrue(File.Exists(this.testableTrxLogger.trxFile), string.Format("TRX file: {0}, should have got created.", this.testableTrxLogger.trxFile)); + var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); + _testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); - string actualMessage = GetElementValueFromTrx(this.testableTrxLogger.trxFile, "StdOut"); + Assert.IsTrue(File.Exists(_testableTrxLogger.TrxFile), $"TRX file: {_testableTrxLogger.TrxFile}, should have got created."); - Assert.IsNotNull(actualMessage); - Assert.IsTrue(string.Equals(message, actualMessage), string.Format("StdOut messages do not match. Expected:{0}, Actual:{1}", message, actualMessage)); - } + string? actualMessage = GetElementValueFromTrx(_testableTrxLogger.TrxFile!, "StdOut"); - [TestMethod] - public void TestRunInformationShouldContainUtcDateTime() - { - this.MakeTestRunComplete(); - this.ValidateDateTimeInTrx(this.testableTrxLogger.trxFile); - } + Assert.IsNotNull(actualMessage); + Assert.IsTrue(string.Equals(message, actualMessage), $"StdOut messages do not match. Expected:{message}, Actual:{actualMessage}"); + } - private void ValidateDateTimeInTrx(string trxFileName) - { - using (FileStream file = File.OpenRead(trxFileName)) - { - using (XmlReader reader = XmlReader.Create(file)) - { - XDocument document = XDocument.Load(reader); - var timesNode = document.Descendants(document.Root.GetDefaultNamespace() + "Times").FirstOrDefault(); - ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(timesNode.Attributes("creation").FirstOrDefault().Value)); - ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(timesNode.Attributes("start").FirstOrDefault().Value)); - var resultNode = document.Descendants(document.Root.GetDefaultNamespace() + "UnitTestResult").FirstOrDefault(); - ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(resultNode.Attributes("endTime").FirstOrDefault().Value)); - ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(resultNode.Attributes("startTime").FirstOrDefault().Value)); - } - } - } + [TestMethod] + public void TestRunInformationShouldContainUtcDateTime() + { + MakeTestRunComplete(); + ValidateDateTimeInTrx(_testableTrxLogger.TrxFile!); + } - [TestMethod] - [DataRow("results")] - public void CustomTrxFileNameShouldBeConstructedFromRelativeLogFilePrefixParameter(string prefixName) - { - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); - this.parameters[TrxLoggerConstants.LogFilePrefixKey] = prefixName; - this.parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; - this.testableTrxLogger.Initialize(events.Object, this.parameters); + private static void ValidateDateTimeInTrx(string trxFileName) + { + using FileStream file = File.OpenRead(trxFileName); + using XmlReader reader = XmlReader.Create(file); + XDocument document = XDocument.Load(reader); + var timesNode = document.Descendants(document.Root!.GetDefaultNamespace() + "Times").First(); + ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(timesNode.Attributes("creation").First().Value, CultureInfo.CurrentCulture)); + ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(timesNode.Attributes("start").First().Value, CultureInfo.CurrentCulture)); + var resultNode = document.Descendants(document.Root.GetDefaultNamespace() + "UnitTestResult").First(); + ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(resultNode.Attributes("endTime").First().Value, CultureInfo.CurrentCulture)); + ValidateTimeWithinUtcLimits(DateTimeOffset.Parse(resultNode.Attributes("startTime").First().Value, CultureInfo.CurrentCulture)); + } - this.MakeTestRunComplete(); + [TestMethod] + [DataRow("results")] + public void CustomTrxFileNameShouldBeConstructedFromRelativeLogFilePrefixParameter(string prefixName) + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _parameters[TrxLoggerConstants.LogFilePrefixKey] = prefixName; + _parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + _testableTrxLogger.Initialize(_events.Object, _parameters); - string actualFileNameWithoutTimestamp = this.testableTrxLogger.trxFile.Substring(0, this.testableTrxLogger.trxFile.LastIndexOf('_')); + MakeTestRunComplete(); - Assert.AreNotEqual(Path.Combine(TrxLoggerTests.DefaultTestRunDirectory, "results.trx"), this.testableTrxLogger.trxFile, "Expected framework name to appear in file name"); - Assert.AreNotEqual(Path.Combine(TrxLoggerTests.DefaultTestRunDirectory, "results_net451.trx"), this.testableTrxLogger.trxFile, "Expected time stamp to appear in file name"); - Assert.AreEqual(Path.Combine(TrxLoggerTests.DefaultTestRunDirectory, "results_net451"), actualFileNameWithoutTimestamp); - } + string actualFileNameWithoutTimestamp = _testableTrxLogger.TrxFile!.Substring(0, _testableTrxLogger.TrxFile.LastIndexOf('_')); - [TestMethod] - public void CustomTrxFileNameShouldBeConstructedFromAbsoluteLogFilePrefixParameter() - { - this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); - var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); - this.parameters[TrxLoggerConstants.LogFilePrefixKey] = trxPrefix; - this.parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; - this.testableTrxLogger.Initialize(events.Object, this.parameters); + Assert.AreNotEqual(Path.Combine(DefaultTestRunDirectory, "results.trx"), _testableTrxLogger.TrxFile, "Expected framework name to appear in file name"); + Assert.AreNotEqual(Path.Combine(DefaultTestRunDirectory, "results_net451.trx"), _testableTrxLogger.TrxFile, "Expected time stamp to appear in file name"); + Assert.AreEqual(Path.Combine(DefaultTestRunDirectory, "results_net451"), actualFileNameWithoutTimestamp); + } - this.MakeTestRunComplete(); + [TestMethod] + public void CustomTrxFileNameShouldBeConstructedFromAbsoluteLogFilePrefixParameter() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); + _parameters[TrxLoggerConstants.LogFilePrefixKey] = trxPrefix; + _parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + _testableTrxLogger.Initialize(_events.Object, _parameters); - string actualFileNameWithoutTimestamp = this.testableTrxLogger.trxFile.Substring(0, this.testableTrxLogger.trxFile.LastIndexOf('_')); + MakeTestRunComplete(); - Assert.AreEqual(trxPrefix + "_net451", actualFileNameWithoutTimestamp); + string actualFileNameWithoutTimestamp = _testableTrxLogger.TrxFile!.Substring(0, _testableTrxLogger.TrxFile.LastIndexOf('_')); - File.Delete(this.testableTrxLogger.trxFile); - } + Assert.AreEqual(trxPrefix + "_net451", actualFileNameWithoutTimestamp); - [TestMethod] - public void IntializeShouldThrowExceptionIfBothPrefixAndNameProvided() - { - this.parameters[TrxLoggerConstants.LogFileNameKey] = "results.trx"; - var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); - this.parameters[TrxLoggerConstants.LogFilePrefixKey] = trxPrefix; - this.parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + File.Delete(_testableTrxLogger.TrxFile); + } - Assert.ThrowsException(() => this.testableTrxLogger.Initialize(events.Object, this.parameters)); - } + [TestMethod] + public void IntializeShouldThrowExceptionIfBothPrefixAndNameProvided() + { + _parameters[TrxLoggerConstants.LogFileNameKey] = "results.trx"; + var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); + _parameters[TrxLoggerConstants.LogFilePrefixKey] = trxPrefix; + _parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; - private void ValidateTestIdAndNameInTrx(bool isMstestAdapter) - { - ObjectModel.TestCase testCase = CreateTestCase("TestCase"); - testCase.ExecutorUri = isMstestAdapter ? new Uri("some://mstestadapteruri") : new Uri("some://uri"); + Assert.ThrowsException(() => _testableTrxLogger.Initialize(_events.Object, _parameters)); + } - ObjectModel.TestResult result = new ObjectModel.TestResult(testCase); - result.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - if (isMstestAdapter) - { - result.DisplayName = "testDisplayName"; - } + [TestMethod] + public void SkipInitializeDictionaryShouldNotFail() + { + var logger = new TestableTrxLogger(); + logger.Initialize(_events.Object, Path.GetTempPath()); + var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); + logger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); + Assert.IsTrue(File.Exists(logger.TrxFile)); + File.Delete(logger.TrxFile); + } - Mock resultEventArg = new Mock(result); - this.testableTrxLogger.TestResultHandler(new object(), resultEventArg.Object); - var testRunCompleteEventArgs = TrxLoggerTests.CreateTestRunCompleteEventArgs(); - this.testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); + private void ValidateTestIdAndNameInTrx() + { + TestCase testCase = CreateTestCase("TestCase"); + testCase.ExecutorUri = new Uri("some://uri"); - this.ValidateResultAttributesInTrx(this.testableTrxLogger.trxFile, testCase.Id, testCase.DisplayName, isMstestAdapter); - } + VisualStudio.TestPlatform.ObjectModel.TestResult result = new(testCase); + result.SetPropertyValue(TrxLoggerConstants.ExecutionIdProperty, Guid.NewGuid()); - private void ValidateResultAttributesInTrx(string trxFileName, Guid testId, string testName, bool isMstestAdapter) - { - using (FileStream file = File.OpenRead(trxFileName)) - { - using (XmlReader reader = XmlReader.Create(file)) - { - XDocument document = XDocument.Load(reader); - var resultNode = document.Descendants(document.Root.GetDefaultNamespace() + "UnitTestResult").FirstOrDefault(); - if (isMstestAdapter) - { - Assert.AreNotEqual(resultNode.Attributes("testId").FirstOrDefault().Value, testId.ToString()); - Assert.AreNotEqual(resultNode.Attributes("testName").FirstOrDefault().Value, testName); - } - else - { - Assert.AreEqual(resultNode.Attributes("testId").FirstOrDefault().Value, testId.ToString()); - Assert.AreEqual(resultNode.Attributes("testName").FirstOrDefault().Value, testName); - } - } - } - } + Mock resultEventArg = new(result); + _testableTrxLogger.TestResultHandler(new object(), resultEventArg.Object); + var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); + _testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); - private void ValidateTimeWithinUtcLimits(DateTimeOffset dateTime) - { - Assert.IsTrue(dateTime.UtcDateTime.Subtract(DateTime.UtcNow) < new TimeSpan(0, 0, 0, 60)); - } + ValidateResultAttributesInTrx(_testableTrxLogger.TrxFile!, testCase.Id, testCase.DisplayName); + } + + private static void ValidateResultAttributesInTrx(string trxFileName, Guid testId, string testName) + { + using FileStream file = File.OpenRead(trxFileName); + using XmlReader reader = XmlReader.Create(file); + XDocument document = XDocument.Load(reader); + var resultNode = document.Descendants(document.Root!.GetDefaultNamespace() + "UnitTestResult").First(); + Assert.AreEqual(resultNode.Attributes("testId").First().Value, testId.ToString()); + Assert.AreEqual(resultNode.Attributes("testName").First().Value, testName); + } + + private static void ValidateTimeWithinUtcLimits(DateTimeOffset dateTime) + { + Assert.IsTrue(dateTime.UtcDateTime.Subtract(DateTime.UtcNow) < new TimeSpan(0, 0, 0, 60)); + } - private string GetElementValueFromTrx(string trxFileName, string fieldName) + private static string? GetElementValueFromTrx(string trxFileName, string fieldName) + { + using FileStream file = File.OpenRead(trxFileName); + using XmlReader reader = XmlReader.Create(file); + while (reader.Read()) { - using (FileStream file = File.OpenRead(trxFileName)) - using (XmlReader reader = XmlReader.Create(file)) + if (reader.Name.Equals(fieldName) && reader.NodeType == XmlNodeType.Element) { - while (reader.Read()) - { - if (reader.Name.Equals(fieldName) && reader.NodeType == XmlNodeType.Element) - { - return reader.ReadElementContentAsString(); - } - } + return reader.ReadElementContentAsString(); } - - return null; } - private static TestCase CreateTestCase(string testCaseName) - { - return new ObjectModel.TestCase(testCaseName, new Uri("some://uri"), "DummySourceFileName"); - } + return null; + } - private static TestRunCompleteEventArgs CreateTestRunCompleteEventArgs() - { - var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, - new Collection(), new TimeSpan(1, 0, 0, 0)); - return testRunCompleteEventArgs; - } + private static TestCase CreateTestCase(string testCaseName) + { + return new TestCase(testCaseName, new Uri("some://uri"), "DummySourceFileName"); + } - private static Mock CreatePassTestResultEventArgsMock(string testCaseName = "Pass1", List testResultMessages = null) - { - TestCase passTestCase = CreateTestCase(testCaseName); - var passResult = new ObjectModel.TestResult(passTestCase); - passResult.Outcome = TestOutcome.Passed; + private static TestRunCompleteEventArgs CreateTestRunCompleteEventArgs() + { + var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, + new Collection(), new Collection(), new TimeSpan(1, 0, 0, 0)); + return testRunCompleteEventArgs; + } + + private static Mock CreatePassTestResultEventArgsMock(string testCaseName = "Pass1", List? testResultMessages = null) + { + TestCase passTestCase = CreateTestCase(testCaseName); + var passResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(passTestCase); + passResult.Outcome = TestOutcome.Passed; - if (testResultMessages != null && testResultMessages.Any()) + if (testResultMessages != null && testResultMessages.Any()) + { + foreach (var message in testResultMessages) { - foreach (var message in testResultMessages) - { - passResult.Messages.Add(message); - } + passResult.Messages.Add(message); } - - return new Mock(passResult); } - private void MakeTestRunComplete() => this.MakeTestRunComplete(this.testableTrxLogger); - - private void MakeTestRunComplete(TestableTrxLogger testableTrxLogger) - { - var pass = TrxLoggerTests.CreatePassTestResultEventArgsMock(); - testableTrxLogger.TestResultHandler(new object(), pass.Object); - var testRunCompleteEventArgs = TrxLoggerTests.CreateTestRunCompleteEventArgs(); - testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); - } + return new Mock(passResult); } - internal class TestableTrxLogger : TrxLogger + private void MakeTestRunComplete() => MakeTestRunComplete(_testableTrxLogger); + + private static void MakeTestRunComplete(TestableTrxLogger testableTrxLogger) { - public TestableTrxLogger() : base() { } - public TestableTrxLogger(IFileHelper fileHelper, TrxFileHelper trxFileHelper) : base(fileHelper, trxFileHelper) { } + var pass = CreatePassTestResultEventArgsMock(); + testableTrxLogger.TestResultHandler(new object(), pass.Object); + var testRunCompleteEventArgs = CreateTestRunCompleteEventArgs(); + testableTrxLogger.TestRunCompleteHandler(new object(), testRunCompleteEventArgs); + } +} - public string trxFile; - internal override void PopulateTrxFile(string trxFileName, XmlElement rootElement) - { - this.trxFile = trxFileName; - base.PopulateTrxFile(trxFile, rootElement); - } +internal class TestableTrxLogger : VisualStudio.TestPlatform.Extensions.TrxLogger.TrxLogger +{ + public TestableTrxLogger() + : base() { } + public TestableTrxLogger(IFileHelper fileHelper, TrxFileHelper trxFileHelper) + : base(fileHelper, trxFileHelper) { } + + public string? TrxFile; + internal override void PopulateTrxFile(string trxFileName, XmlElement rootElement) + { + TrxFile = trxFileName; + base.PopulateTrxFile(TrxFile, rootElement); } } diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/ConverterTests.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/ConverterTests.cs index 3630e668bb..a459932bfc 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/ConverterTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/ConverterTests.cs @@ -1,260 +1,256 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.Utility +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +using Microsoft.TestPlatform.Extensions.TrxLogger.ObjectModel; +using Microsoft.TestPlatform.Extensions.TrxLogger.Utility; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using TestOutcome = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome; +using TestPlatformObjectModel = Microsoft.VisualStudio.TestPlatform.ObjectModel; +using TrxLoggerConstants = Microsoft.TestPlatform.Extensions.TrxLogger.Utility.Constants; +using TrxLoggerOutcome = Microsoft.TestPlatform.Extensions.TrxLogger.ObjectModel.TestOutcome; +using UriDataAttachment = Microsoft.VisualStudio.TestPlatform.ObjectModel.UriDataAttachment; + +namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.Utility; + +[TestClass] +public class ConverterTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using Microsoft.TestPlatform.Extensions.TrxLogger.Utility; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using ObjectModel; - using TestPlatformObjectModel = Microsoft.VisualStudio.TestPlatform.ObjectModel; - using TestOutcome = VisualStudio.TestPlatform.ObjectModel.TestOutcome; - using TrxLoggerConstants = Microsoft.TestPlatform.Extensions.TrxLogger.Utility.Constants; - using TrxLoggerOutcome = Microsoft.TestPlatform.Extensions.TrxLogger.ObjectModel.TestOutcome; - using UriDataAttachment = VisualStudio.TestPlatform.ObjectModel.UriDataAttachment; - using Moq; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - - [TestClass] - public class ConverterTests + private Converter _converter; + private readonly Mock _fileHelper; + private readonly TrxFileHelper _trxFileHelper; + + public ConverterTests() { - private Converter converter; - private Mock fileHelper; - private readonly TrxFileHelper trxFileHelper; + _fileHelper = new Mock(); + _trxFileHelper = new TrxFileHelper(); + _converter = new Converter(_fileHelper.Object, _trxFileHelper); + } - public ConverterTests() - { - this.fileHelper = new Mock(); - this.trxFileHelper = new TrxFileHelper(); - this.converter = new Converter(this.fileHelper.Object, trxFileHelper); - } + [TestMethod] + public void ToOutcomeShouldMapFailedToFailed() + { + Assert.AreEqual(TrxLoggerOutcome.Failed, Converter.ToOutcome(TestOutcome.Failed)); + } - [TestMethod] - public void ToOutcomeShouldMapFailedToFailed() - { - Assert.AreEqual(TrxLoggerOutcome.Failed, this.converter.ToOutcome(TestOutcome.Failed)); - } + [TestMethod] + public void ToOutcomeShouldMapPassedToPassed() + { + Assert.AreEqual(TrxLoggerOutcome.Passed, Converter.ToOutcome(TestOutcome.Passed)); + } - [TestMethod] - public void ToOutcomeShouldMapPassedToPassed() - { - Assert.AreEqual(TrxLoggerOutcome.Passed, this.converter.ToOutcome(TestOutcome.Passed)); - } + [TestMethod] + public void ToOutcomeShouldMapSkippedToNotExecuted() + { + Assert.AreEqual(TrxLoggerOutcome.NotExecuted, Converter.ToOutcome(TestOutcome.Skipped)); + } - [TestMethod] - public void ToOutcomeShouldMapSkippedToNotExecuted() - { - Assert.AreEqual(TrxLoggerOutcome.NotExecuted, this.converter.ToOutcome(TestOutcome.Skipped)); - } + [TestMethod] + public void ToOutcomeShouldMapNoneToNotExecuted() + { + Assert.AreEqual(TrxLoggerOutcome.NotExecuted, Converter.ToOutcome(TestOutcome.None)); + } - [TestMethod] - public void ToOutcomeShouldMapNoneToNotExecuted() - { - Assert.AreEqual(TrxLoggerOutcome.NotExecuted, this.converter.ToOutcome(TestOutcome.None)); - } + [TestMethod] + public void ToOutcomeShouldMapNotFoundToNotExecuted() + { + Assert.AreEqual(TrxLoggerOutcome.NotExecuted, Converter.ToOutcome(TestOutcome.NotFound)); + } - [TestMethod] - public void ToOutcomeShouldMapNotFoundToNotExecuted() - { - Assert.AreEqual(TrxLoggerOutcome.NotExecuted, this.converter.ToOutcome(TestOutcome.NotFound)); - } + [TestMethod] + public void ToCollectionEntriesShouldRenameAttachmentUriIfTheAttachmentNameIsSame() + { + SetupForToCollectionEntries(out var tempDir, out var attachmentSets, out var testRun, out var testResultsDirectory); - [TestMethod] - public void ToCollectionEntriesShouldRenameAttachmentUriIfTheAttachmentNameIsSame() - { - ConverterTests.SetupForToCollectionEntries(out var tempDir, out var attachmentSets, out var testRun, out var testResultsDirectory); + _converter = new Converter(new FileHelper(), _trxFileHelper); + List collectorDataEntries = _converter.ToCollectionEntries(attachmentSets, testRun, testResultsDirectory); - this.converter = new Converter(new FileHelper(), trxFileHelper); - List collectorDataEntries = this.converter.ToCollectionEntries(attachmentSets, testRun, testResultsDirectory); + Assert.AreEqual(2, collectorDataEntries[0].Attachments.Count); + Assert.AreEqual($@"{Environment.MachineName}{Path.DirectorySeparatorChar}123.coverage", ((ObjectModel.UriDataAttachment)collectorDataEntries[0].Attachments[0]).Uri.OriginalString); + Assert.AreEqual($@"{Environment.MachineName}{Path.DirectorySeparatorChar}123[1].coverage", ((ObjectModel.UriDataAttachment)collectorDataEntries[0].Attachments[1]).Uri.OriginalString); - Assert.AreEqual(2, collectorDataEntries[0].Attachments.Count); - Assert.AreEqual($@"{Environment.MachineName}{Path.DirectorySeparatorChar}123.coverage", ((ObjectModel.UriDataAttachment) collectorDataEntries[0].Attachments[0]).Uri.OriginalString); - Assert.AreEqual($@"{Environment.MachineName}{Path.DirectorySeparatorChar}123[1].coverage", ((ObjectModel.UriDataAttachment)collectorDataEntries[0].Attachments[1]).Uri.OriginalString); + Directory.Delete(tempDir, true); + } - Directory.Delete(tempDir, true); - } + /// + /// Unit test for assigning or populating test categories read to the unit test element. + /// + [TestMethod] + public void ToTestElementShouldAssignTestCategoryOfUnitTestElement() + { + TestCase testCase = CreateTestCase("TestCase1"); + TestPlatformObjectModel.TestResult result = new(testCase); + TestProperty testProperty = TestProperty.Register("MSTestDiscoverer.TestCategory", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); - /// - /// Unit test for assigning or populating test categories read to the unit test element. - /// - [TestMethod] - public void ToTestElementShouldAssignTestCategoryOfUnitTestElement() - { - TestPlatformObjectModel.TestCase testCase = CreateTestCase("TestCase1"); - TestPlatformObjectModel.TestResult result = new TestPlatformObjectModel.TestResult(testCase); - TestProperty testProperty = TestProperty.Register("MSTestDiscoverer.TestCategory", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); + testCase.SetPropertyValue(testProperty, new[] { "AsmLevel", "ClassLevel", "MethodLevel" }); - testCase.SetPropertyValue(testProperty, new[] { "AsmLevel", "ClassLevel", "MethodLevel" }); + var unitTestElement = Converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testCase.DisplayName, TrxLoggerConstants.UnitTestType, testCase); - var unitTestElement = this.converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testCase.DisplayName, TrxLoggerConstants.UnitTestType, testCase); + object[] expected = ["MethodLevel", "ClassLevel", "AsmLevel"]; - object[] expected = new[] { "MethodLevel", "ClassLevel", "AsmLevel" }; + CollectionAssert.AreEqual(expected, unitTestElement.TestCategories.ToArray().OrderByDescending(x => x).ToArray()); + } - CollectionAssert.AreEqual(expected, unitTestElement.TestCategories.ToArray().OrderByDescending(x => x).ToArray()); - } + [TestMethod] + public void ToTestElementShouldAssignWorkItemOfUnitTestElement() + { + TestCase testCase = CreateTestCase("TestCase1"); + TestPlatformObjectModel.TestResult result = new(testCase); + TestProperty testProperty = TestProperty.Register("WorkItemIds", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); - [TestMethod] - public void ToTestElementShouldAssignWorkitemOfUnitTestElement() - { - TestPlatformObjectModel.TestCase testCase = CreateTestCase("TestCase1"); - TestPlatformObjectModel.TestResult result = new TestPlatformObjectModel.TestResult(testCase); - TestProperty testProperty = TestProperty.Register("WorkItemIds", "String array property", string.Empty, string.Empty, typeof(string[]), null, TestPropertyAttributes.Hidden, typeof(TestObject)); + testCase.SetPropertyValue(testProperty, new[] { "3", "99999", "0" }); - testCase.SetPropertyValue(testProperty, new[] { "3", "99999", "0" }); + var unitTestElement = Converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testCase.DisplayName, TrxLoggerConstants.UnitTestType, testCase); - var unitTestElement = this.converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testCase.DisplayName, TrxLoggerConstants.UnitTestType, testCase); + int[] expected = [0, 3, 99999]; - int[] expected = new[] { 0, 3, 99999 }; + CollectionAssert.AreEquivalent(expected, unitTestElement.WorkItems.ToArray()); + } - CollectionAssert.AreEquivalent(expected, unitTestElement.WorkItems.ToArray()); - } + /// + /// Unit test for regression when there's no test categories. + /// + [TestMethod] + public void ToTestElementShouldNotFailWhenThereIsNoTestCategories() + { + TestCase testCase = CreateTestCase("TestCase1"); - /// - /// Unit test for regression when there's no test categories. - /// - [TestMethod] - public void ToTestElementShouldNotFailWhenThereIsNoTestCategoreis() - { - TestPlatformObjectModel.TestCase testCase = CreateTestCase("TestCase1"); - TestPlatformObjectModel.TestResult result = new TestPlatformObjectModel.TestResult(testCase); + var unitTestElement = Converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testCase.DisplayName, TrxLoggerConstants.UnitTestType, testCase); - var unitTestElement = this.converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testCase.DisplayName, TrxLoggerConstants.UnitTestType, testCase); + object[] expected = Enumerable.Empty().ToArray(); - object[] expected = Enumerable.Empty().ToArray(); + CollectionAssert.AreEqual(expected, unitTestElement.TestCategories.ToArray()); + } - CollectionAssert.AreEqual(expected, unitTestElement.TestCategories.ToArray()); - } + [TestMethod] + public void ToTestElementShouldContainExpectedTestMethodPropertiesIfFqnIsSameAsTestName() + { + var expectedClassName = "TestProject1.Class1"; + var expectedTestName = "TestMethod1"; + var fullyQualifiedName = expectedClassName + "." + expectedTestName; + var testName = "TestProject1.Class1.TestMethod1"; - [TestMethod] - public void ToTestElementShouldContainExpectedTestMethodPropertiesIfFqnIsSameAsTestName() - { - var expectedClassName = "TestProject1.Class1"; - var expectedTestName = "TestMethod1"; - var fullyQualifiedName = expectedClassName + "." + expectedTestName; - var testName = "TestProject1.Class1.TestMethod1"; + ValidateTestMethodProperties(testName, fullyQualifiedName, expectedClassName, expectedTestName); + } - ValidateTestMethodProperties(testName, fullyQualifiedName, expectedClassName, expectedTestName); - } + [TestMethod] + public void ToTestElementShouldContainExpectedTestMethodPropertiesIfFqnEndsWithTestName() + { + var expectedClassName = "TestProject1.Class1"; + var expectedTestName = "TestMethod1(2, 3, 4.0d)"; + var fullyQualifiedName = expectedClassName + "." + expectedTestName; + var testName = "TestMethod1(2, 3, 4.0d)"; - [TestMethod] - public void ToTestElementShouldContainExpectedTestMethodPropertiesIfFqnEndsWithTestName() - { - var expectedClassName = "TestProject1.Class1"; - var expectedTestName = "TestMethod1(2, 3, 4.0d)"; - var fullyQualifiedName = expectedClassName + "." + expectedTestName; - var testName = "TestMethod1(2, 3, 4.0d)"; + ValidateTestMethodProperties(testName, fullyQualifiedName, expectedClassName, expectedTestName); + } - ValidateTestMethodProperties(testName, fullyQualifiedName, expectedClassName, expectedTestName); - } + [TestMethod] + public void ToTestElementShouldContainExpectedTestMethodPropertiesIfFqnDoesNotEndsWithTestName() + { + var expectedClassName = "TestProject1.Class1.TestMethod1(2, 3, 4"; + var expectedTestName = "0d)"; + var fullyQualifiedName = "TestProject1.Class1.TestMethod1(2, 3, 4." + expectedTestName; + var testName = "TestMethod1"; - [TestMethod] - public void ToTestElementShouldContainExpectedTestMethodPropertiesIfFqnDoesNotEndsWithTestName() - { - var expectedClassName = "TestProject1.Class1.TestMethod1(2, 3, 4"; - var expectedTestName = "0d)"; - var fullyQualifiedName = "TestProject1.Class1.TestMethod1(2, 3, 4." + expectedTestName; - var testName = "TestMethod1"; + ValidateTestMethodProperties(testName, fullyQualifiedName, expectedClassName, expectedTestName); + } - ValidateTestMethodProperties(testName, fullyQualifiedName, expectedClassName, expectedTestName); - } + [TestMethod] + public void ToResultFilesShouldAddAttachmentsWithRelativeUri() + { + UriDataAttachment uriDataAttachment1 = + new(new Uri($"/mnt/c/abc.txt", UriKind.Relative), "Description 1"); - [TestMethod] - public void ToResultFilesShouldAddAttachmentsWithRelativeURI() + var attachmentSets = new List { - UriDataAttachment uriDataAttachment1 = - new UriDataAttachment(new Uri($"/mnt/c/abc.txt", UriKind.Relative), "Description 1"); + new(new Uri("xyz://microsoft/random/2.0"), "XPlat test run") + }; - var attachmentSets = new List - { - new AttachmentSet(new Uri("xyz://microsoft/random/2.0"), "XPlat test run") - }; + var testRun = new TestRun(Guid.NewGuid()); + testRun.RunConfiguration = new TestRunConfiguration("Testrun 1", _trxFileHelper); + attachmentSets[0].Attachments.Add(uriDataAttachment1); - var testRun = new TestRun(Guid.NewGuid()); - testRun.RunConfiguration = new TestRunConfiguration("Testrun 1", trxFileHelper); - attachmentSets[0].Attachments.Add(uriDataAttachment1); + var resultFiles = _converter.ToResultFiles(attachmentSets, testRun, @"c:\temp", null!); + Assert.IsTrue(resultFiles[0].Contains("abc.txt")); + } - var resultFiles = this.converter.ToResultFiles(attachmentSets, testRun, @"c:\temp", null); - Assert.IsTrue(resultFiles[0].Contains("abc.txt")); - } + [TestMethod] + public void ToTestElementShouldNotFailWhenClassNameIsTheSameAsFullyQualifiedName() + { + // the converter assumed to find 'classname' in the fqn and split it on 'classname.' + // but that threw an exception because 'classname.' is not contained in 'classname' + // (notice the . at the end) + // we should not be assuming that the fqn will have '.' in them + // seen it for example with qtest - [TestMethod] - public void ToTestElementShouldNotFailWhenClassNameIsTheSameAsFullyQualifiedName() - { - // the converter assumed to find 'classname' in the fqn and split it on 'classname.' - // but that threw an exception because 'classname.' is not contained in 'classname' - // (notice the . at the end) - // we should not be assuming that the fqn will have '.' in them - // seen it for example with qtest - - string expectedClassName, expectedTestName, fullyQualifiedName, source, testName; - expectedClassName = expectedTestName = fullyQualifiedName = source = testName = "test1"; - - TestPlatformObjectModel.TestCase testCase = new TestPlatformObjectModel.TestCase(fullyQualifiedName, new Uri("some://uri"), source); - TestPlatformObjectModel.TestResult result = new TestPlatformObjectModel.TestResult(testCase); - var unitTestElement = this.converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testName, TrxLoggerConstants.UnitTestType, testCase) as UnitTestElement; - - Assert.AreEqual(expectedClassName, unitTestElement.TestMethod.ClassName); - Assert.AreEqual(expectedTestName, unitTestElement.TestMethod.Name); - } - - private void ValidateTestMethodProperties(string testName, string fullyQualifiedName, string expectedClassName, string expectedTestName) - { - TestPlatformObjectModel.TestCase testCase = CreateTestCase(fullyQualifiedName); - TestPlatformObjectModel.TestResult result = new TestPlatformObjectModel.TestResult(testCase); + string expectedClassName, expectedTestName, fullyQualifiedName, source, testName; + expectedClassName = expectedTestName = fullyQualifiedName = source = testName = "test1"; - var unitTestElement = this.converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testName, TrxLoggerConstants.UnitTestType, testCase) as UnitTestElement; + TestCase testCase = new(fullyQualifiedName, new Uri("some://uri"), source); + var unitTestElement = (UnitTestElement)Converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testName, TrxLoggerConstants.UnitTestType, testCase); - Assert.AreEqual(expectedClassName, unitTestElement.TestMethod.ClassName); - Assert.AreEqual(expectedTestName, unitTestElement.TestMethod.Name); - } + Assert.AreEqual(expectedClassName, unitTestElement.TestMethod.ClassName); + Assert.AreEqual(expectedTestName, unitTestElement.TestMethod.Name); + } - private static TestCase CreateTestCase(string fullyQualifiedName) - { - return new TestPlatformObjectModel.TestCase(fullyQualifiedName, new Uri("some://uri"), "DummySourceFileName"); - } + private static void ValidateTestMethodProperties(string testName, string fullyQualifiedName, string expectedClassName, string expectedTestName) + { + TestCase testCase = CreateTestCase(fullyQualifiedName); - private static void SetupForToCollectionEntries(out string tempDir, out List attachmentSets, out TestRun testRun, - out string testResultsDirectory) - { - ConverterTests.CreateTempCoverageFiles(out tempDir, out var coverageFilePath1, out var coverageFilePath2); - - UriDataAttachment uriDataAttachment1 = - new UriDataAttachment(new Uri(new Uri("file://"), coverageFilePath1), "Description 1"); - UriDataAttachment uriDataAttachment2 = - new UriDataAttachment(new Uri(new Uri("file://"), coverageFilePath2), "Description 2"); - attachmentSets = new List - { - new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), "Code Coverage") - }; - - testRun = new TestRun(Guid.NewGuid()); - testRun.RunConfiguration = new TestRunConfiguration("Testrun 1", new TrxFileHelper()); - attachmentSets[0].Attachments.Add(uriDataAttachment1); - attachmentSets[0].Attachments.Add(uriDataAttachment2); - testResultsDirectory = Path.Combine(tempDir, "TestResults"); - } - - private static void CreateTempCoverageFiles(out string tempDir, out string coverageFilePath1, - out string coverageFilePath2) - { - tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + var unitTestElement = (UnitTestElement)Converter.ToTestElement(testCase.Id, Guid.Empty, Guid.Empty, testName, TrxLoggerConstants.UnitTestType, testCase); + + Assert.AreEqual(expectedClassName, unitTestElement.TestMethod.ClassName); + Assert.AreEqual(expectedTestName, unitTestElement.TestMethod.Name); + } + + private static TestCase CreateTestCase(string fullyQualifiedName) + { + return new TestCase(fullyQualifiedName, new Uri("some://uri"), "DummySourceFileName"); + } + + private static void SetupForToCollectionEntries(out string tempDir, out List attachmentSets, out TestRun testRun, + out string testResultsDirectory) + { + CreateTempCoverageFiles(out tempDir, out var coverageFilePath1, out var coverageFilePath2); + + UriDataAttachment uriDataAttachment1 = + new(new Uri(new Uri("file://"), coverageFilePath1), "Description 1"); + UriDataAttachment uriDataAttachment2 = + new(new Uri(new Uri("file://"), coverageFilePath2), "Description 2"); + attachmentSets = [new(new Uri("datacollector://microsoft/CodeCoverage/2.0"), "Code Coverage")]; + + testRun = new TestRun(Guid.NewGuid()); + testRun.RunConfiguration = new TestRunConfiguration("Testrun 1", new TrxFileHelper()); + attachmentSets[0].Attachments.Add(uriDataAttachment1); + attachmentSets[0].Attachments.Add(uriDataAttachment2); + testResultsDirectory = Path.Combine(tempDir, "TestResults"); + } + + private static void CreateTempCoverageFiles(out string tempDir, out string coverageFilePath1, + out string coverageFilePath2) + { + tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - var covDir1 = Path.Combine(tempDir, Guid.NewGuid().ToString()); - var covDir2 = Path.Combine(tempDir, Guid.NewGuid().ToString()); + var covDir1 = Path.Combine(tempDir, Guid.NewGuid().ToString()); + var covDir2 = Path.Combine(tempDir, Guid.NewGuid().ToString()); - Directory.CreateDirectory(covDir1); - Directory.CreateDirectory(covDir2); + Directory.CreateDirectory(covDir1); + Directory.CreateDirectory(covDir2); - coverageFilePath1 = Path.Combine(covDir1, "123.coverage"); - coverageFilePath2 = Path.Combine(covDir2, "123.coverage"); + coverageFilePath1 = Path.Combine(covDir1, "123.coverage"); + coverageFilePath2 = Path.Combine(covDir2, "123.coverage"); - File.WriteAllText(coverageFilePath1, string.Empty); - File.WriteAllText(coverageFilePath2, string.Empty); - } + File.WriteAllText(coverageFilePath1, string.Empty); + File.WriteAllText(coverageFilePath2, string.Empty); } } diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/TrxFileHelperTests.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/TrxFileHelperTests.cs index 50797dd0b7..914f864432 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/TrxFileHelperTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/Utility/TrxFileHelperTests.cs @@ -1,20 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.Utility -{ - using Microsoft.TestPlatform.Extensions.TrxLogger.Utility; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.TestPlatform.Extensions.TrxLogger.Utility; - [TestClass] - public class TrxFileHelperTests - { - [TestMethod] - public void ReplaceInvalidFileNameCharsShouldReplaceSpace() - { - var fileHelper = new TrxFileHelper(); +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests.Utility; - Assert.AreEqual("samadala_SAMADALA_2017-10-13_18_33_17", fileHelper.ReplaceInvalidFileNameChars("samadala_SAMADALA 2017-10-13 18_33_17")); - } +[TestClass] +public class TrxFileHelperTests +{ + [TestMethod] + public void ReplaceInvalidFileNameCharsShouldReplaceSpace() + { + Assert.AreEqual("samadala_SAMADALA_2017-10-13_18_33_17", TrxFileHelper.ReplaceInvalidFileNameChars("samadala_SAMADALA 2017-10-13 18_33_17")); } } diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/XmlPersistenceTests.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/XmlPersistenceTests.cs index 49a0ce11b9..3ef35906c5 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/XmlPersistenceTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/XmlPersistenceTests.cs @@ -1,71 +1,70 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests -{ - using Microsoft.TestPlatform.Extensions.TrxLogger.XML; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.TestPlatform.Extensions.TrxLogger.XML; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests; - [TestClass] - public class XmlPersistenceTests +[TestClass] +public class XmlPersistenceTests +{ + [TestMethod] + public void SaveObjectShouldReplaceInvalidCharacter() { - [TestMethod] - public void SaveObjectShouldReplaceInvalidCharacter() - { - XmlPersistence xmlPersistence = new XmlPersistence(); - var node = xmlPersistence.CreateRootElement("TestRun"); + XmlPersistence xmlPersistence = new(); + var node = xmlPersistence.CreateRootElement("TestRun"); - // we are handling only #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] - char[] invalidXmlCharacterArray = new char[7]; - invalidXmlCharacterArray[0] = (char)0x5; - invalidXmlCharacterArray[1] = (char)0xb; - invalidXmlCharacterArray[2] = (char)0xf; - invalidXmlCharacterArray[3] = (char)0xd800; - invalidXmlCharacterArray[4] = (char)0xdc00; - invalidXmlCharacterArray[5] = (char)0xfffe; - invalidXmlCharacterArray[6] = (char)0x0; + // we are handling only #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] + char[] invalidXmlCharacterArray = new char[7]; + invalidXmlCharacterArray[0] = (char)0x5; + invalidXmlCharacterArray[1] = (char)0xb; + invalidXmlCharacterArray[2] = (char)0xf; + invalidXmlCharacterArray[3] = (char)0xd800; + invalidXmlCharacterArray[4] = (char)0xdc00; + invalidXmlCharacterArray[5] = (char)0xfffe; + invalidXmlCharacterArray[6] = (char)0x0; - string strWithInvalidCharForXml = new string(invalidXmlCharacterArray); - xmlPersistence.SaveObject(strWithInvalidCharForXml, node, null, "dummy"); + string strWithInvalidCharForXml = new(invalidXmlCharacterArray); + XmlPersistence.SaveObject(strWithInvalidCharForXml, node, null, "dummy"); - string expectedResult = "\\u0005\\u000b\\u000f\\ud800\\udc00\\ufffe\\u0000"; - Assert.AreEqual(0, string.Compare(expectedResult, node.InnerXml)); - } + string expectedResult = "\\u0005\\u000b\\u000f\\ud800\\udc00\\ufffe\\u0000"; + Assert.AreEqual(0, string.Compare(expectedResult, node.InnerXml)); + } - [TestMethod] - public void SaveObjectShouldNotReplaceValidCharacter() - { - XmlPersistence xmlPersistence = new XmlPersistence(); - var node = xmlPersistence.CreateRootElement("TestRun"); + [TestMethod] + public void SaveObjectShouldNotReplaceValidCharacter() + { + XmlPersistence xmlPersistence = new(); + var node = xmlPersistence.CreateRootElement("TestRun"); - // we are handling only #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] - char[] validXmlCharacterArray = new char[8]; - validXmlCharacterArray[0] = (char)0x9; - validXmlCharacterArray[1] = (char)0xa; - validXmlCharacterArray[2] = (char)0xd; - validXmlCharacterArray[3] = (char)0x20; - validXmlCharacterArray[4] = (char)0xc123; - validXmlCharacterArray[5] = (char)0xe000; - validXmlCharacterArray[6] = (char)0xea12; - validXmlCharacterArray[7] = (char)0xfffd; + // we are handling only #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] + char[] validXmlCharacterArray = new char[8]; + validXmlCharacterArray[0] = (char)0x9; + validXmlCharacterArray[1] = (char)0xa; + validXmlCharacterArray[2] = (char)0xd; + validXmlCharacterArray[3] = (char)0x20; + validXmlCharacterArray[4] = (char)0xc123; + validXmlCharacterArray[5] = (char)0xe000; + validXmlCharacterArray[6] = (char)0xea12; + validXmlCharacterArray[7] = (char)0xfffd; - string strWithValidCharForXml = new string(validXmlCharacterArray); + string strWithValidCharForXml = new(validXmlCharacterArray); - xmlPersistence.SaveObject(strWithValidCharForXml, node, null, "dummy"); + XmlPersistence.SaveObject(strWithValidCharForXml, node, null, "dummy"); - string expectedResult = "\t\n\r 섣�"; - Assert.AreEqual(0, string.Compare(expectedResult, node.InnerXml)); - } + string expectedResult = "\t\n\r 섣�"; + Assert.AreEqual(0, string.Compare(expectedResult, node.InnerXml)); + } - [TestMethod] - public void SaveObjectShouldReplaceOnlyInvalidCharacter() - { - XmlPersistence xmlPersistence = new XmlPersistence(); - var node = xmlPersistence.CreateRootElement("TestRun"); - string strWithInvalidCharForXml = "This string has these \0 \v invalid characters"; - xmlPersistence.SaveObject(strWithInvalidCharForXml, node, null, "dummy"); - string expectedResult = "This string has these \\u0000 \\u000b invalid characters"; - Assert.AreEqual(0, string.Compare(expectedResult, node.InnerXml)); - } + [TestMethod] + public void SaveObjectShouldReplaceOnlyInvalidCharacter() + { + XmlPersistence xmlPersistence = new(); + var node = xmlPersistence.CreateRootElement("TestRun"); + string strWithInvalidCharForXml = "This string has these \0 \v invalid characters"; + XmlPersistence.SaveObject(strWithInvalidCharForXml, node, null, "dummy"); + string expectedResult = "This string has these \\u0000 \\u000b invalid characters"; + Assert.AreEqual(0, string.Compare(expectedResult, node.InnerXml)); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/DiaSessionTests.cs b/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/DiaSessionTests.cs deleted file mode 100644 index fcda7cb429..0000000000 --- a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/DiaSessionTests.cs +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.ObjectModel.PlatformTests -{ - using System; - using System.Diagnostics; - - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class DiaSessionTests : IntegrationTestBase - { - private const string NET451 = "net451"; - private const string NETCOREAPP21 = "netcoreapp2.1"; - - public static string GetAndSetTargetFrameWork(IntegrationTestEnvironment testEnvironment) - { - var currentTargetFrameWork = testEnvironment.TargetFramework; -#if NETFRAMEWORK - testEnvironment.TargetFramework = NET451; -#else - testEnvironment.TargetFramework = NETCOREAPP21; -#endif - return currentTargetFrameWork; - } - - [TestMethod] - public void GetNavigationDataShouldReturnCorrectFileNameAndLineNumber() - { - var currentTargetFrameWork = GetAndSetTargetFrameWork(this.testEnvironment); - var assemblyPath = GetAssetFullPath("SimpleClassLibrary.dll"); - - DiaSession diaSession = new DiaSession(assemblyPath); - DiaNavigationData diaNavigationData = diaSession.GetNavigationData("SimpleClassLibrary.Class1", "PassingTest"); - - Assert.IsNotNull(diaNavigationData, "Failed to get navigation data"); - StringAssert.EndsWith(diaNavigationData.FileName, @"\SimpleClassLibrary\Class1.cs"); - - this.ValidateMinLineNumber(12, diaNavigationData.MinLineNumber); - Assert.AreEqual(14, diaNavigationData.MaxLineNumber, "Incorrect max line number"); - - this.testEnvironment.TargetFramework = currentTargetFrameWork; - } - - [TestMethod] - public void GetNavigationDataShouldReturnCorrectDataForAsyncMethod() - { - var currentTargetFrameWork = GetAndSetTargetFrameWork(this.testEnvironment); - var assemblyPath = this.GetAssetFullPath("SimpleClassLibrary.dll"); - - DiaSession diaSession = new DiaSession(assemblyPath); - DiaNavigationData diaNavigationData = diaSession.GetNavigationData("SimpleClassLibrary.Class1+d__1", "MoveNext"); - - Assert.IsNotNull(diaNavigationData, "Failed to get navigation data"); - StringAssert.EndsWith(diaNavigationData.FileName, @"\SimpleClassLibrary\Class1.cs"); - - this.ValidateMinLineNumber(17, diaNavigationData.MinLineNumber); - Assert.AreEqual(19, diaNavigationData.MaxLineNumber, "Incorrect max line number"); - - this.testEnvironment.TargetFramework = currentTargetFrameWork; - } - - [TestMethod] - public void GetNavigationDataShouldReturnCorrectDataForOverLoadedMethod() - { - var currentTargetFrameWork = GetAndSetTargetFrameWork(this.testEnvironment); - var assemblyPath = this.GetAssetFullPath("SimpleClassLibrary.dll"); - - DiaSession diaSession = new DiaSession(assemblyPath); - DiaNavigationData diaNavigationData = diaSession.GetNavigationData("SimpleClassLibrary.Class1", "OverLoadedMethod"); - - Assert.IsNotNull(diaNavigationData, "Failed to get navigation data"); - StringAssert.EndsWith(diaNavigationData.FileName, @"\SimpleClassLibrary\Class1.cs"); - - // Weird why DiaSession is now returning the first overloaded method - // as compared to before when it used to return second method - this.ValidateLineNumbers(diaNavigationData.MinLineNumber, diaNavigationData.MaxLineNumber); - - this.testEnvironment.TargetFramework = currentTargetFrameWork; - } - - [TestMethod] - public void GetNavigationDataShouldReturnNullForNotExistMethodNameOrNotExistTypeName() - { - var currentTargetFrameWork = GetAndSetTargetFrameWork(this.testEnvironment); - var assemblyPath = GetAssetFullPath("SimpleClassLibrary.dll"); - - DiaSession diaSession = new DiaSession(assemblyPath); - - // Not exist method name - DiaNavigationData diaNavigationData = diaSession.GetNavigationData("SimpleClassLibrary.Class1", "NotExistMethod"); - Assert.IsNull(diaNavigationData); - - // Not Exist Type name - diaNavigationData = diaSession.GetNavigationData("SimpleClassLibrary.NotExistType", "PassingTest"); - Assert.IsNull(diaNavigationData); - - this.testEnvironment.TargetFramework = currentTargetFrameWork; - } - - [TestMethod] - public void DiaSessionPerfTest() - { - var currentTargetFrameWork = GetAndSetTargetFrameWork(this.testEnvironment); - var assemblyPath = this.GetAssetFullPath("SimpleClassLibrary.dll"); - - var watch = Stopwatch.StartNew(); - DiaSession diaSession = new DiaSession(assemblyPath); - DiaNavigationData diaNavigationData = diaSession.GetNavigationData("SimpleClassLibrary.HugeMethodSet", "MSTest_D1_01"); - watch.Stop(); - - Assert.IsNotNull(diaNavigationData, "Failed to get navigation data"); - StringAssert.EndsWith(diaNavigationData.FileName, @"\SimpleClassLibrary\HugeMethodSet.cs"); - this.ValidateMinLineNumber(9, diaNavigationData.MinLineNumber); - Assert.AreEqual(10, diaNavigationData.MaxLineNumber); - var expectedTime = 150; - Assert.IsTrue(watch.Elapsed.Milliseconds < expectedTime, string.Format("DiaSession Perf test Actual time:{0} ms Expected time:{1} ms", watch.Elapsed.Milliseconds, expectedTime)); - - this.testEnvironment.TargetFramework = currentTargetFrameWork; - } - - private void ValidateLineNumbers(int min, int max) - { - // Release builds optimize code, hence min line numbers are different. - if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase)) - { - Assert.AreEqual(min, max, "Incorrect min line number"); - } - else - { - if (max == 23) - { - Assert.AreEqual(min + 1, max, "Incorrect min line number"); - } - else if (max == 27) - { - Assert.AreEqual(min + 1, max, "Incorrect min line number"); - } - else - { - Assert.Fail("Incorrect min/max line number"); - } - } - } - - private void ValidateMinLineNumber(int expected, int actual) - { - // Release builds optimize code, hence min line numbers are different. - if (IntegrationTestEnvironment.BuildConfiguration.StartsWith("release", StringComparison.OrdinalIgnoreCase)) - { - Assert.AreEqual(expected + 1, actual, "Incorrect min line number"); - } - else - { - Assert.AreEqual(expected, actual, "Incorrect min line number"); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Microsoft.TestPlatform.ObjectModel.PlatformTests.csproj b/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Microsoft.TestPlatform.ObjectModel.PlatformTests.csproj deleted file mode 100644 index 129135fbe7..0000000000 --- a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Microsoft.TestPlatform.ObjectModel.PlatformTests.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - ..\..\ - true - true - - - - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - Microsoft.TestPlatform.ObjectModel.PlatformTests - - - - - - - - - - - - - - - - - diff --git a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Program.cs b/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Program.cs deleted file mode 100644 index b60b16a4a8..0000000000 --- a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Program.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests -{ - /// - /// Main entry point for the command line runner. - /// - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 0051c9c7aa..0000000000 --- a/test/Microsoft.TestPlatform.ObjectModel.PlatformTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.TestPlatform.ObjectModel.PlatformTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("da1b5c6f-cd2b-4995-b883-0aafcd6671ab")] diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/BaseTestRunCriteriaTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/BaseTestRunCriteriaTests.cs index 36560f786b..cead712f27 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/BaseTestRunCriteriaTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/BaseTestRunCriteriaTests.cs @@ -1,67 +1,67 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Client -{ - using System; +using System; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using VisualStudio.TestPlatform.ObjectModel.Client; - [TestClass] - public class BaseTestRunCriteriaTests - { - [TestMethod] - public void ConstructorShouldThrowIfFrequencyOfRunStatsChangeIsZero() - { - var isExceptionThrown = false; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; - try - { - var criteria = new BaseTestRunCriteria(frequencyOfRunStatsChangeEvent: 0); - } - catch (ArgumentOutOfRangeException ex) - { - isExceptionThrown = true; - StringAssert.Contains(ex.Message, "Notification frequency need to be a positive value."); - } +namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Client; - Assert.IsTrue(isExceptionThrown); - } +[TestClass] +public class BaseTestRunCriteriaTests +{ + [TestMethod] + public void ConstructorShouldThrowIfFrequencyOfRunStatsChangeIsZero() + { + var isExceptionThrown = false; - [TestMethod] - public void ConstructorShouldThrowIfFrequencyOfRunStatsChangeIsLesssThanZero() + try { - var isExceptionThrown = false; + var criteria = new BaseTestRunCriteria(frequencyOfRunStatsChangeEvent: 0); + } + catch (ArgumentOutOfRangeException ex) + { + isExceptionThrown = true; + StringAssert.Contains(ex.Message, "Notification frequency need to be a positive value."); + } - try - { - var criteria = new BaseTestRunCriteria(frequencyOfRunStatsChangeEvent: -10); - } - catch (ArgumentOutOfRangeException ex) - { - isExceptionThrown = true; - StringAssert.Contains(ex.Message, "Notification frequency need to be a positive value."); - } + Assert.IsTrue(isExceptionThrown); + } - Assert.IsTrue(isExceptionThrown); - } + [TestMethod] + public void ConstructorShouldThrowIfFrequencyOfRunStatsChangeIsLesssThanZero() + { + var isExceptionThrown = false; - [TestMethod] - public void ConstructorShouldThrowIfRunStatsChangeEventTimeoutIsMinimumTimeSpanValue() + try + { + var criteria = new BaseTestRunCriteria(frequencyOfRunStatsChangeEvent: -10); + } + catch (ArgumentOutOfRangeException ex) { - var isExceptionThrown = false; + isExceptionThrown = true; + StringAssert.Contains(ex.Message, "Notification frequency need to be a positive value."); + } - try - { - var criteria = new BaseTestRunCriteria(frequencyOfRunStatsChangeEvent: 1, keepAlive: false, testSettings: null, runStatsChangeEventTimeout: TimeSpan.MinValue); - } - catch (ArgumentOutOfRangeException ex) - { - isExceptionThrown = true; - StringAssert.Contains(ex.Message, "Notification timeout must be greater than zero."); - } + Assert.IsTrue(isExceptionThrown); + } - Assert.IsTrue(isExceptionThrown); + [TestMethod] + public void ConstructorShouldThrowIfRunStatsChangeEventTimeoutIsMinimumTimeSpanValue() + { + var isExceptionThrown = false; + + try + { + var criteria = new BaseTestRunCriteria(frequencyOfRunStatsChangeEvent: 1, keepAlive: false, testSettings: null, runStatsChangeEventTimeout: TimeSpan.MinValue); } + catch (ArgumentOutOfRangeException ex) + { + isExceptionThrown = true; + StringAssert.Contains(ex.Message, "Notification timeout must be greater than zero."); + } + + Assert.IsTrue(isExceptionThrown); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/DiscoveryCriteriaTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/DiscoveryCriteriaTests.cs index 5b309a92d1..7041273030 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/DiscoveryCriteriaTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/DiscoveryCriteriaTests.cs @@ -1,57 +1,56 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Client +using System; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Newtonsoft.Json; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Client; + +[TestClass] +public class DiscoveryCriteriaTests { - using System; - using System.Linq; + private readonly DiscoveryCriteria _discoveryCriteria; + private static readonly JsonSerializerSettings Settings = new() + { + TypeNameHandling = TypeNameHandling.None + }; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; + public DiscoveryCriteriaTests() + { + _discoveryCriteria = new DiscoveryCriteria( + new[] { "sampleTest.dll" }, + 100, + ""); + _discoveryCriteria.TestCaseFilter = "TestFilter"; + } - using Newtonsoft.Json; + [TestMethod] + public void DiscoveryCriteriaSerializesToExpectedJson() + { + var expectedJson = "{\"Package\":null,\"AdapterSourceMap\":{\"_none_\":[\"sampleTest.dll\"]},\"FrequencyOfDiscoveredTestsEvent\":100,\"DiscoveredTestEventTimeout\":\"10675199.02:48:05.4775807\",\"RunSettings\":\"\",\"TestCaseFilter\":\"TestFilter\",\"TestSessionInfo\":null}"; + + var json = JsonConvert.SerializeObject(_discoveryCriteria, Settings); + + Assert.AreEqual(expectedJson, json); + } - [TestClass] - public class DiscoveryCriteriaTests + [TestMethod] + public void DiscoveryCriteriaShouldBeDeserializable() { - private readonly DiscoveryCriteria discoveryCriteria; - private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings - { - TypeNameHandling = TypeNameHandling.None - }; - - public DiscoveryCriteriaTests() - { - this.discoveryCriteria = new DiscoveryCriteria( - new[] { "sampleTest.dll" }, - 100, - ""); - this.discoveryCriteria.TestCaseFilter = "TestFilter"; - } - - [TestMethod] - public void DiscoveryCriteriaSerializesToExpectedJson() - { - var expectedJson = "{\"Package\":null,\"AdapterSourceMap\":{\"_none_\":[\"sampleTest.dll\"]},\"FrequencyOfDiscoveredTestsEvent\":100,\"DiscoveredTestEventTimeout\":\"10675199.02:48:05.4775807\",\"RunSettings\":\"\",\"TestCaseFilter\":\"TestFilter\",\"TestSessionInfo\":null}"; - - var json = JsonConvert.SerializeObject(this.discoveryCriteria, Settings); - - Assert.AreEqual(expectedJson, json); - } - - [TestMethod] - public void DiscoveryCriteriaShouldBeDeserializable() - { - var json = "{\"Sources\":[\"sampleTest.dll\"],\"AdapterSourceMap\":{\"_none_\":[\"sampleTest.dll\"]},\"FrequencyOfDiscoveredTestsEvent\":100,\"DiscoveredTestEventTimeout\":\"10675199.02:48:05.4775807\",\"RunSettings\":\"\",\"TestCaseFilter\":\"TestFilter\"}"; - - var criteria = JsonConvert.DeserializeObject(json, Settings); - - Assert.AreEqual(TimeSpan.MaxValue, criteria.DiscoveredTestEventTimeout); - Assert.AreEqual(100, criteria.FrequencyOfDiscoveredTestsEvent); - Assert.AreEqual("", criteria.RunSettings); - Assert.AreEqual("TestFilter", criteria.TestCaseFilter); - Assert.AreEqual("sampleTest.dll", criteria.AdapterSourceMap["_none_"].Single()); - CollectionAssert.AreEqual(new[] { "sampleTest.dll" }, criteria.Sources.ToArray()); - } + var json = "{\"Sources\":[\"sampleTest.dll\"],\"AdapterSourceMap\":{\"_none_\":[\"sampleTest.dll\"]},\"FrequencyOfDiscoveredTestsEvent\":100,\"DiscoveredTestEventTimeout\":\"10675199.02:48:05.4775807\",\"RunSettings\":\"\",\"TestCaseFilter\":\"TestFilter\"}"; + + var criteria = JsonConvert.DeserializeObject(json, Settings)!; + + Assert.AreEqual(TimeSpan.MaxValue, criteria.DiscoveredTestEventTimeout); + Assert.AreEqual(100, criteria.FrequencyOfDiscoveredTestsEvent); + Assert.AreEqual("", criteria.RunSettings); + Assert.AreEqual("TestFilter", criteria.TestCaseFilter); + Assert.AreEqual("sampleTest.dll", criteria.AdapterSourceMap["_none_"].Single()); + CollectionAssert.AreEqual(new[] { "sampleTest.dll" }, criteria.Sources.ToArray()); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/TestRunCriteriaTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/TestRunCriteriaTests.cs index b6d50cc2b0..6af705e562 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/TestRunCriteriaTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Client/TestRunCriteriaTests.cs @@ -1,153 +1,151 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class TestRunCriteriaTests { - using System; - using System.Collections.Generic; - using System.Linq; + #region Constructor tests. + + [TestMethod] + public void ConstructorForSourcesShouldInitializeAdapterSourceMap() + { + var sources = new List { "s1.dll", "s2.dll" }; + var testRunCriteria = new TestRunCriteria(sources, frequencyOfRunStatsChangeEvent: 10); + + Assert.IsNotNull(testRunCriteria.AdapterSourceMap); + CollectionAssert.AreEqual(new List { "_none_" }, testRunCriteria.AdapterSourceMap.Keys); + CollectionAssert.AreEqual(sources, testRunCriteria.AdapterSourceMap.Values.First().ToList()); + } + + [TestMethod] + public void ConstructorForSourcesWithBaseTestRunCriteriaShouldInitializeAdapterSourceMap() + { + var sources = new List { "s1.dll", "s2.dll" }; + var testRunCriteria = new TestRunCriteria(sources, new TestRunCriteria(new List { "temp.dll" }, 10)); + + Assert.IsNotNull(testRunCriteria.AdapterSourceMap); + CollectionAssert.AreEqual(new List { "_none_" }, testRunCriteria.AdapterSourceMap.Keys); + CollectionAssert.AreEqual(sources, testRunCriteria.AdapterSourceMap.Values.First().ToList()); + } + + [TestMethod] + public void ConstructorForSourcesWithAdapterSourceMapShouldInitializeSourceMap() + { + var adapterSourceMap = new Dictionary>(); + var sourceSet1 = new List { "s1.dll", "s2.dll" }; + var sourceSet2 = new List { "s1.json", "s2.json" }; + adapterSourceMap.Add("dummyadapter1", sourceSet1); + adapterSourceMap.Add("dummyadapter2", sourceSet2); + + var testRunCriteria = new TestRunCriteria(adapterSourceMap, 10, false, null, TimeSpan.MaxValue, null); + + Assert.IsNotNull(testRunCriteria.AdapterSourceMap); + CollectionAssert.AreEqual(new List { "dummyadapter1", "dummyadapter2" }, testRunCriteria.AdapterSourceMap.Keys); + CollectionAssert.AreEqual(sourceSet1, testRunCriteria.AdapterSourceMap.Values.First().ToList()); + CollectionAssert.AreEqual(sourceSet2, testRunCriteria.AdapterSourceMap.Values.ToArray()[1].ToList()); + } + + #endregion + + #region Sources tests. + + [TestMethod] + public void SourcesShouldEnumerateThroughAllSourcesInTheAdapterSourceMap() + { + var adapterSourceMap = new Dictionary>(); + var sourceSet1 = new List { "s1.dll", "s2.dll" }; + var sourceSet2 = new List { "s1.json", "s2.json" }; + adapterSourceMap.Add("dummyadapter1", sourceSet1); + adapterSourceMap.Add("dummyadapter2", sourceSet2); + + var testRunCriteria = new TestRunCriteria(adapterSourceMap, 10, false, null, TimeSpan.MaxValue, null); + + var expectedSourceSet = new List(sourceSet1); + expectedSourceSet.AddRange(sourceSet2); + CollectionAssert.AreEqual(expectedSourceSet, testRunCriteria.Sources!.ToList()); + } + + [TestMethod] + public void SourcesShouldReturnNullIfAdapterSourceMapIsNull() + { + var testRunCriteria = + new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), "s.dll") }, + frequencyOfRunStatsChangeEvent: 10); + + Assert.IsNull(testRunCriteria.Sources); + } + + #endregion + + #region HasSpecificSources tests + + [TestMethod] + public void HasSpecificSourcesReturnsFalseIfSourcesAreNotSpecified() + { + var testRunCriteria = + new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), "s.dll") }, + frequencyOfRunStatsChangeEvent: 10); + + Assert.IsFalse(testRunCriteria.HasSpecificSources); + } + + [TestMethod] + public void HasSpecificSourcesReturnsTrueIfSourcesAreSpecified() + { + var sources = new List { "s1.dll", "s2.dll" }; + var testRunCriteria = new TestRunCriteria(sources, frequencyOfRunStatsChangeEvent: 10); - using Microsoft.VisualStudio.TestTools.UnitTesting; + Assert.IsTrue(testRunCriteria.HasSpecificSources); + } + + #endregion - using VisualStudio.TestPlatform.ObjectModel; - using VisualStudio.TestPlatform.ObjectModel.Client; + #region HasSpecificTests tests - [TestClass] - public class TestRunCriteriaTests + [TestMethod] + public void HasSpecificTestsReturnsTrueIfTestsAreSpecified() { - #region Constructor tests. - - [TestMethod] - public void ConstructorForSourcesShouldInitializeAdapterSourceMap() - { - var sources = new List { "s1.dll", "s2.dll" }; - var testRunCriteria = new TestRunCriteria(sources, frequencyOfRunStatsChangeEvent: 10); - - Assert.IsNotNull(testRunCriteria.AdapterSourceMap); - CollectionAssert.AreEqual(new List { "_none_" }, testRunCriteria.AdapterSourceMap.Keys); - CollectionAssert.AreEqual(sources, testRunCriteria.AdapterSourceMap.Values.First().ToList()); - } - - [TestMethod] - public void ConstructorForSourcesWithBaseTestRunCriteriaShouldInitializeAdapterSourceMap() - { - var sources = new List { "s1.dll", "s2.dll" }; - var testRunCriteria = new TestRunCriteria(sources, new TestRunCriteria(new List { "temp.dll" }, 10)); - - Assert.IsNotNull(testRunCriteria.AdapterSourceMap); - CollectionAssert.AreEqual(new List { "_none_" }, testRunCriteria.AdapterSourceMap.Keys); - CollectionAssert.AreEqual(sources, testRunCriteria.AdapterSourceMap.Values.First().ToList()); - } - - [TestMethod] - public void ConstructorForSourcesWithAdapterSourceMapShouldInitializeSourceMap() - { - var adapterSourceMap = new Dictionary>(); - var sourceSet1 = new List { "s1.dll", "s2.dll" }; - var sourceSet2 = new List { "s1.json", "s2.json" }; - adapterSourceMap.Add("dummyadapter1", sourceSet1); - adapterSourceMap.Add("dummyadapter2", sourceSet2); - - var testRunCriteria = new TestRunCriteria(adapterSourceMap, 10, false, null, TimeSpan.MaxValue, null); - - Assert.IsNotNull(testRunCriteria.AdapterSourceMap); - CollectionAssert.AreEqual(new List { "dummyadapter1", "dummyadapter2" }, testRunCriteria.AdapterSourceMap.Keys); - CollectionAssert.AreEqual(sourceSet1, testRunCriteria.AdapterSourceMap.Values.First().ToList()); - CollectionAssert.AreEqual(sourceSet2, testRunCriteria.AdapterSourceMap.Values.ToArray()[1].ToList()); - } - - #endregion - - #region Sources tests. - - [TestMethod] - public void SourcesShouldEnumerateThroughAllSourcesInTheAdapterSourceMap() - { - var adapterSourceMap = new Dictionary>(); - var sourceSet1 = new List { "s1.dll", "s2.dll" }; - var sourceSet2 = new List { "s1.json", "s2.json" }; - adapterSourceMap.Add("dummyadapter1", sourceSet1); - adapterSourceMap.Add("dummyadapter2", sourceSet2); - - var testRunCriteria = new TestRunCriteria(adapterSourceMap, 10, false, null, TimeSpan.MaxValue, null); - - var expectedSourceSet = new List(sourceSet1); - expectedSourceSet.AddRange(sourceSet2); - CollectionAssert.AreEqual(expectedSourceSet, testRunCriteria.Sources.ToList()); - } - - [TestMethod] - public void SourcesShouldReturnNullIfAdapterSourceMapIsNull() - { - var testRunCriteria = - new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), "s.dll") }, - frequencyOfRunStatsChangeEvent: 10); - - Assert.IsNull(testRunCriteria.Sources); - } - - #endregion - - #region HasSpecificSources tests - - [TestMethod] - public void HasSpecificSourcesReturnsFalseIfSourcesAreNotSpecified() - { - var testRunCriteria = - new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), "s.dll") }, - frequencyOfRunStatsChangeEvent: 10); - - Assert.IsFalse(testRunCriteria.HasSpecificSources); - } - - [TestMethod] - public void HasSpecificSourcesReturnsTrueIfSourcesAreSpecified() - { - var sources = new List { "s1.dll", "s2.dll" }; - var testRunCriteria = new TestRunCriteria(sources, frequencyOfRunStatsChangeEvent: 10); - - Assert.IsTrue(testRunCriteria.HasSpecificSources); - } - - #endregion - - #region HasSpecificTests tests - - [TestMethod] - public void HasSpecificTestsReturnsTrueIfTestsAreSpecified() - { - var testRunCriteria = - new TestRunCriteria( - new List { new TestCase("A.C.M", new Uri("excutor://dummy"), "s.dll") }, - frequencyOfRunStatsChangeEvent: 10); - - Assert.IsTrue(testRunCriteria.HasSpecificTests); - } - - [TestMethod] - public void HasSpecificTestsReturnsFalseIfSourcesAreSpecified() - { - var sources = new List { "s1.dll", "s2.dll" }; - var testRunCriteria = new TestRunCriteria(sources, frequencyOfRunStatsChangeEvent: 10); - - Assert.IsFalse(testRunCriteria.HasSpecificTests); - } - - #endregion - - #region TestCaseFilter tests + var testRunCriteria = + new TestRunCriteria( + new List { new("A.C.M", new Uri("excutor://dummy"), "s.dll") }, + frequencyOfRunStatsChangeEvent: 10); - [TestMethod] - public void TestCaseFilterSetterShouldSetFilterCriteriaForSources() - { - var sources = new List { "s1.dll", "s2.dll" }; - var testRunCriteria = new TestRunCriteria(sources, 10, false, string.Empty, TimeSpan.MaxValue, null, "foo", null); + Assert.IsTrue(testRunCriteria.HasSpecificTests); + } - Assert.AreEqual("foo", testRunCriteria.TestCaseFilter); - } + [TestMethod] + public void HasSpecificTestsReturnsFalseIfSourcesAreSpecified() + { + var sources = new List { "s1.dll", "s2.dll" }; + var testRunCriteria = new TestRunCriteria(sources, frequencyOfRunStatsChangeEvent: 10); - #endregion + Assert.IsFalse(testRunCriteria.HasSpecificTests); } + + #endregion + + #region TestCaseFilter tests + + [TestMethod] + public void TestCaseFilterSetterShouldSetFilterCriteriaForSources() + { + var sources = new List { "s1.dll", "s2.dll" }; + var testRunCriteria = new TestRunCriteria(sources, 10, false, string.Empty, TimeSpan.MaxValue, null, "foo", null); + + Assert.AreEqual("foo", testRunCriteria.TestCaseFilter); + } + + #endregion } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomKeyValueConverterTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomKeyValueConverterTests.cs index 36d82f47d9..804cf98ce2 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomKeyValueConverterTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomKeyValueConverterTests.cs @@ -1,97 +1,97 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests +using System.Collections.Generic; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class CustomKeyValueConverterTests { - using System; - using System.Collections.Generic; - using System.Globalization; + private readonly CustomKeyValueConverter _customKeyValueConverter; + + public CustomKeyValueConverterTests() + { + _customKeyValueConverter = new CustomKeyValueConverter(); + } + + [TestMethod] + public void CustomKeyValueConverterShouldDeserializeWellformedJson() + { + var json = "[{ \"Key\": \"key1\", \"Value\": \"val1\" }]"; + + var data = _customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; + + Assert.IsNotNull(data); + Assert.AreEqual(1, data.Length); + Assert.AreEqual("key1", data[0].Key); + Assert.AreEqual("val1", data[0].Value); + } + + [TestMethod] + public void CustomKeyValueConverterShouldDeserializeKeyValuePairArray() + { + var json = "[{ \"Key\": \"key1\", \"Value\": \"val1\" }, { \"Key\": \"key2\", \"Value\": \"val2\" }]"; + + var data = _customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; + + Assert.IsNotNull(data); + Assert.AreEqual(2, data.Length); + Assert.AreEqual("key1", data[0].Key); + Assert.AreEqual("val1", data[0].Value); + Assert.AreEqual("key2", data[1].Key); + Assert.AreEqual("val2", data[1].Value); + } + + [TestMethod] + public void CustomKeyValueConverterShouldDeserializeEmptyArray() + { + var json = "[]"; + + var data = _customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; + + Assert.IsNotNull(data); + Assert.AreEqual(0, data.Length); + } + + [TestMethod] + public void CustomKeyValueConverterShouldDeserializeEmptyKeyOrValue() + { + var json = "[{ \"Key\": \"\", \"Value\": \"\" }]"; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; + var data = _customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; - [TestClass] - public class CustomKeyValueConverterTests + Assert.IsNotNull(data); + Assert.AreEqual(1, data.Length); + Assert.AreEqual(string.Empty, data[0].Key); + Assert.AreEqual(string.Empty, data[0].Value); + } + + [TestMethod] + public void CustomKeyValueConverterShouldDeserializeDuplicateKeysKvps() + { + var json = "[{ \"Key\": \"key1\", \"Value\": \"val1\" }, { \"Key\": \"key1\", \"Value\": \"val2\" }]"; + + var data = _customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; + + Assert.IsNotNull(data); + Assert.AreEqual(2, data.Length); + Assert.AreEqual("key1", data[0].Key); + Assert.AreEqual("val1", data[0].Value); + Assert.AreEqual("key1", data[1].Key); + Assert.AreEqual("val2", data[1].Value); + } + + [TestMethod] + public void CustomKeyValueConverterShouldDeserializeNullValue() { - private readonly CustomKeyValueConverter customKeyValueConverter; - - public CustomKeyValueConverterTests() - { - this.customKeyValueConverter = new CustomKeyValueConverter(); - } - - [TestMethod] - public void CustomKeyValueConverterShouldDeserializeWellformedJson() - { - var json = "[{ \"Key\": \"key1\", \"Value\": \"val1\" }]"; - - var data = this.customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; - - Assert.IsNotNull(data); - Assert.AreEqual(1, data.Length); - Assert.AreEqual("key1", data[0].Key); - Assert.AreEqual("val1", data[0].Value); - } - - [TestMethod] - public void CustomKeyValueConverterShouldDeserializeKeyValuePairArray() - { - var json = "[{ \"Key\": \"key1\", \"Value\": \"val1\" }, { \"Key\": \"key2\", \"Value\": \"val2\" }]"; - - var data = this.customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; - - Assert.IsNotNull(data); - Assert.AreEqual(2, data.Length); - Assert.AreEqual("key1", data[0].Key); - Assert.AreEqual("val1", data[0].Value); - Assert.AreEqual("key2", data[1].Key); - Assert.AreEqual("val2", data[1].Value); - } - - [TestMethod] - public void CustomKeyValueConverterShouldDeserializeEmptyArray() - { - var json = "[]"; - - var data = this.customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; - - Assert.IsNotNull(data); - Assert.AreEqual(0, data.Length); - } - - [TestMethod] - public void CustomKeyValueConverterShouldDeserializeEmptyKeyOrValue() - { - var json = "[{ \"Key\": \"\", \"Value\": \"\" }]"; - - var data = this.customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; - - Assert.AreEqual(1, data.Length); - Assert.AreEqual(string.Empty, data[0].Key); - Assert.AreEqual(string.Empty, data[0].Value); - } - - [TestMethod] - public void CustomKeyValueConverterShouldDeserializeDuplicateKeysKvps() - { - var json = "[{ \"Key\": \"key1\", \"Value\": \"val1\" }, { \"Key\": \"key1\", \"Value\": \"val2\" }]"; - - var data = this.customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as KeyValuePair[]; - - Assert.IsNotNull(data); - Assert.AreEqual(2, data.Length); - Assert.AreEqual("key1", data[0].Key); - Assert.AreEqual("val1", data[0].Value); - Assert.AreEqual("key1", data[1].Key); - Assert.AreEqual("val2", data[1].Value); - } - - [TestMethod] - public void CustomKeyValueConverterShouldDeserializeNullValue() - { - var data = this.customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, null) as KeyValuePair[]; - - Assert.IsNull(data); - } + var data = _customKeyValueConverter.ConvertFrom(null, CultureInfo.InvariantCulture, null) as KeyValuePair[]; + + Assert.IsNull(data); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomStringArrayConverterTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomStringArrayConverterTests.cs index 7b7b4802c5..3e235f3792 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomStringArrayConverterTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/CustomStringArrayConverterTests.cs @@ -1,76 +1,78 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests -{ - using System.Globalization; +using System.Globalization; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; - [TestClass] - public class CustomStringArrayConverterTests - { - private readonly CustomStringArrayConverter customStringArrayConverter; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class CustomStringArrayConverterTests +{ + private readonly CustomStringArrayConverter _customStringArrayConverter; - public CustomStringArrayConverterTests() - { - this.customStringArrayConverter = new CustomStringArrayConverter(); - } + public CustomStringArrayConverterTests() + { + _customStringArrayConverter = new CustomStringArrayConverter(); + } - [TestMethod] - public void CustomStringArrayConverterShouldDeserializeWellformedJson() - { - var json = "[ \"val2\", \"val1\" ]"; + [TestMethod] + public void CustomStringArrayConverterShouldDeserializeWellformedJson() + { + var json = "[ \"val2\", \"val1\" ]"; - var data = this.customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; + var data = _customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; - Assert.IsNotNull(data); - Assert.AreEqual(2, data.Length); - CollectionAssert.AreEqual(new[] { "val2", "val1" }, data); - } + Assert.IsNotNull(data); + Assert.AreEqual(2, data.Length); + CollectionAssert.AreEqual(new[] { "val2", "val1" }, data); + } - [TestMethod] - public void CustomStringArrayConverterShouldDeserializeEmptyArray() - { - var json = "[]"; + [TestMethod] + public void CustomStringArrayConverterShouldDeserializeEmptyArray() + { + var json = "[]"; - var data = this.customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; + var data = _customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; - Assert.IsNotNull(data); - Assert.AreEqual(0, data.Length); - } + Assert.IsNotNull(data); + Assert.AreEqual(0, data.Length); + } - [TestMethod] - public void CustomStringArrayConverterShouldDeserializeNullKeyOrValue() - { - var json = "[null, \"val\"]"; + [TestMethod] + public void CustomStringArrayConverterShouldDeserializeNullKeyOrValue() + { + var json = "[null, \"val\"]"; - var data = this.customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; + var data = _customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; - Assert.AreEqual(2, data.Length); - Assert.IsNull(data[0]); - Assert.AreEqual("val", data[1]); - } + Assert.IsNotNull(data); + Assert.AreEqual(2, data.Length); + Assert.IsNull(data[0]); + Assert.AreEqual("val", data[1]); + } - [TestMethod] - public void CustomStringArrayConverterShouldDeserializeEmptyKeyOrValue() - { - var json = "[\"\", \"\"]"; + [TestMethod] + public void CustomStringArrayConverterShouldDeserializeEmptyKeyOrValue() + { + var json = "[\"\", \"\"]"; - var data = this.customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; + var data = _customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, json) as string[]; - Assert.AreEqual(2, data.Length); - Assert.AreEqual(string.Empty, data[0]); - Assert.AreEqual(string.Empty, data[1]); - } + Assert.IsNotNull(data); + Assert.AreEqual(2, data.Length); + Assert.AreEqual(string.Empty, data[0]); + Assert.AreEqual(string.Empty, data[1]); + } - [TestMethod] - public void CustomStringArrayConverterShouldDeserializeNullValue() - { - var data = this.customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, null) as string[]; + [TestMethod] + public void CustomStringArrayConverterShouldDeserializeNullValue() + { + var data = _customStringArrayConverter.ConvertFrom(null, CultureInfo.InvariantCulture, null) as string[]; - Assert.IsNull(data); - } + Assert.IsNull(data); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/DataCollector/Events/SessionEventsTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/DataCollector/Events/SessionEventsTests.cs index c02f0db37a..ac0fec5c8a 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/DataCollector/Events/SessionEventsTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/DataCollector/Events/SessionEventsTests.cs @@ -1,53 +1,55 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class SessionEventsTests { - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; + private readonly SessionStartEventArgs _sessionStartEventArgs; - [TestClass] - public class SessionEventsTests + public SessionEventsTests() { - private SessionStartEventArgs sessionStartEventArgs; - - public SessionEventsTests() + var properties = new Dictionary { - var properties = new Dictionary(); - properties.Add("property1", 1); - properties.Add("property2", 2); + { "property1", 1 }, + { "property2", 2 } + }; - this.sessionStartEventArgs = new SessionStartEventArgs(properties); - } + _sessionStartEventArgs = new SessionStartEventArgs(properties); + } - [TestMethod] - public void SessionStartEventArgsGetPropertiesShouldGetPropertiesEnumerator() + [TestMethod] + public void SessionStartEventArgsGetPropertiesShouldGetPropertiesEnumerator() + { + var properties = _sessionStartEventArgs.GetProperties(); + int propertiesCount = 0; + while (properties.MoveNext()) { - var properties = this.sessionStartEventArgs.GetProperties(); - int propertiesCount = 0; - while (properties.MoveNext()) - { - propertiesCount++; - } - - Assert.AreEqual(2, propertiesCount); + propertiesCount++; } - [TestMethod] - public void SessionStartEventArgsGetPropertyValueShouldGetPropertyValue() - { - var value = this.sessionStartEventArgs.GetPropertyValue("property1"); + Assert.AreEqual(2, propertiesCount); + } - Assert.AreEqual(1, value); - } + [TestMethod] + public void SessionStartEventArgsGetPropertyValueShouldGetPropertyValue() + { + var value = _sessionStartEventArgs.GetPropertyValue("property1"); - [TestMethod] - public void SessionStartEventArgsGetPropertyValueShouldGetPropertyValueInObject() - { - var value = this.sessionStartEventArgs.GetPropertyValue("property1"); + Assert.AreEqual(1, value); + } - Assert.AreEqual(1, value); - } + [TestMethod] + public void SessionStartEventArgsGetPropertyValueShouldGetPropertyValueInObject() + { + var value = _sessionStartEventArgs.GetPropertyValue("property1"); + + Assert.AreEqual(1, value); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/FrameworkTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/FrameworkTests.cs index 78c0b2857a..813ec85988 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/FrameworkTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/FrameworkTests.cs @@ -1,86 +1,86 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class FrameworkTests { - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void FrameworkFromStringShouldReturnNullForNull() + { + Assert.IsNull(Framework.FromString(null)); + } + + [TestMethod] + public void FrameworkFromStringShouldReturnNullForEmptyString() + { + Assert.IsNull(Framework.FromString(string.Empty)); + } + + [TestMethod] + public void FrameworkFromStringShouldReturnNullForInvalidString() + { + Assert.IsNull(Framework.FromString("InvalidFramework")); + } + + [TestMethod] + public void FrameworkFromStringShouldIgnoreCase() + { + var fx = Framework.FromString("framework35")!; + Assert.AreEqual(".NETFramework,Version=v3.5", fx.Name); + + fx = Framework.FromString("FRAMEWORK40")!; + Assert.AreEqual(".NETFramework,Version=v4.0", fx.Name); - [TestClass] - public class FrameworkTests + fx = Framework.FromString("Framework45")!; + Assert.AreEqual(".NETFramework,Version=v4.5", fx.Name); + + fx = Framework.FromString("frameworKcore10")!; + Assert.AreEqual(".NETCoreApp,Version=v1.0", fx.Name); + + fx = Framework.FromString("frameworkUAP10")!; + Assert.AreEqual("UAP,Version=v10.0", fx.Name); + } + + [TestMethod] + public void FrameworkFromStringShouldTrimSpacesAroundFrameworkString() + { + var fx = Framework.FromString(" Framework35")!; + + Assert.AreEqual(".NETFramework,Version=v3.5", fx.Name); + Assert.AreEqual("3.5.0.0", fx.Version); + } + + [TestMethod] + public void FrameworkFromStringShouldWorkForShortNames() + { + var fx = Framework.FromString("net462")!; + Assert.AreEqual(".NETFramework,Version=v4.6.2", fx.Name); + Assert.AreEqual("4.6.2.0", fx.Version); + + var corefx = Framework.FromString("netcoreapp2.0")!; + Assert.AreEqual(".NETCoreApp,Version=v2.0", corefx.Name); + Assert.AreEqual("2.0.0.0", corefx.Version); + } + + [TestMethod] + public void DefaultFrameworkShouldBeNet40OnDesktop() { - [TestMethod] - public void FrameworkFromStringShouldReturnNullForNull() - { - Assert.IsNull(Framework.FromString(null)); - } - - [TestMethod] - public void FrameworkFromStringShouldReturnNullForEmptyString() - { - Assert.IsNull(Framework.FromString(string.Empty)); - } - - [TestMethod] - public void FrameworkFromStringShouldReturnNullForInvalidString() - { - Assert.IsNull(Framework.FromString("InvalidFramework")); - } - - [TestMethod] - public void FrameworkFromStringShouldIgnoreCase() - { - var fx = Framework.FromString("framework35"); - Assert.AreEqual(".NETFramework,Version=v3.5", fx.Name); - - fx = Framework.FromString("FRAMEWORK40"); - Assert.AreEqual(".NETFramework,Version=v4.0", fx.Name); - - fx = Framework.FromString("Framework45"); - Assert.AreEqual(".NETFramework,Version=v4.5", fx.Name); - - fx = Framework.FromString("frameworKcore10"); - Assert.AreEqual(".NETCoreApp,Version=v1.0", fx.Name); - - fx = Framework.FromString("frameworkUAP10"); - Assert.AreEqual("UAP,Version=v10.0", fx.Name); - } - - [TestMethod] - public void FrameworkFromStringShouldTrimSpacesAroundFrameworkString() - { - var fx = Framework.FromString(" Framework35"); - - Assert.AreEqual(".NETFramework,Version=v3.5", fx.Name); - Assert.AreEqual("3.5.0.0", fx.Version); - } - - [TestMethod] - public void FrameworkFromStringShouldWorkForShortNames() - { - var fx = Framework.FromString("net451"); - Assert.AreEqual(".NETFramework,Version=v4.5.1", fx.Name); - Assert.AreEqual("4.5.1.0", fx.Version); - - var corefx = Framework.FromString("netcoreapp2.0"); - Assert.AreEqual(".NETCoreApp,Version=v2.0", corefx.Name); - Assert.AreEqual("2.0.0.0", corefx.Version); - } - - [TestMethod] - public void DefaultFrameworkShouldBeNet40OnDesktop() - { #if NETFRAMEWORK - Assert.AreEqual(".NETFramework,Version=v4.0", Framework.DefaultFramework.Name); + Assert.AreEqual(".NETFramework,Version=v4.0", Framework.DefaultFramework.Name); #endif - } + } - [TestMethod] - public void DefaultFrameworkShouldBeNetCoreApp10OnNonDesktop() - { -#if !NET451 - Assert.AreEqual(".NETCoreApp,Version=v1.0", Framework.DefaultFramework.Name); + [TestMethod] + public void DefaultFrameworkShouldBeNetCoreApp10OnNonDesktop() + { +#if !NETFRAMEWORK + Assert.AreEqual(".NETCoreApp,Version=v1.0", Framework.DefaultFramework.Name); #endif - } } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Hosting/TestRunnerConnectionInfoExtensionsTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Hosting/TestRunnerConnectionInfoExtensionsTests.cs index a2fa14f682..abdc716457 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Hosting/TestRunnerConnectionInfoExtensionsTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Hosting/TestRunnerConnectionInfoExtensionsTests.cs @@ -1,75 +1,73 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.TestHostProvider.UnitTests.Hosting -{ - using System; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; -#pragma warning disable SA1600 - [TestClass] - public class TestRunnerConnectionInfoExtensionsTests +namespace TestPlatform.TestHostProvider.UnitTests.Hosting; + +[TestClass] +public class TestRunnerConnectionInfoExtensionsTests +{ + [TestMethod] + public void ToCommandLineOptionsShouldIncludePort() { - [TestMethod] - public void ToCommandLineOptionsShouldIncludePort() - { - var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets } }; + var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets } }; - var options = connectionInfo.ToCommandLineOptions(); + var options = connectionInfo.ToCommandLineOptions(); - StringAssert.StartsWith(options, "--port 123 --endpoint 127.0.0.0:123 --role client"); - } + StringAssert.StartsWith(options, "--port 123 --endpoint 127.0.0.0:123 --role client"); + } - [TestMethod] - public void ToCommandLineOptionsShouldIncludeEndpoint() - { - var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets } }; + [TestMethod] + public void ToCommandLineOptionsShouldIncludeEndpoint() + { + var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets } }; - var options = connectionInfo.ToCommandLineOptions(); + var options = connectionInfo.ToCommandLineOptions(); - StringAssert.Contains(options, "--endpoint 127.0.0.0:123"); - } + StringAssert.Contains(options, "--endpoint 127.0.0.0:123"); + } - [TestMethod] - public void ToCommandLineOptionsShouldIncludeRole() - { - var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets } }; + [TestMethod] + public void ToCommandLineOptionsShouldIncludeRole() + { + var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets } }; - var options = connectionInfo.ToCommandLineOptions(); + var options = connectionInfo.ToCommandLineOptions(); - StringAssert.Contains(options, "--role client"); - } + StringAssert.Contains(options, "--role client"); + } - [TestMethod] - public void ToCommandLineOptionsShouldIncludeParentProcessId() - { - var connectionInfo = new TestRunnerConnectionInfo { RunnerProcessId = 123 }; + [TestMethod] + public void ToCommandLineOptionsShouldIncludeParentProcessId() + { + var connectionInfo = new TestRunnerConnectionInfo { RunnerProcessId = 123 }; - var options = connectionInfo.ToCommandLineOptions(); + var options = connectionInfo.ToCommandLineOptions(); - Assert.IsTrue(options.IndexOf("--parentprocessid 123", StringComparison.OrdinalIgnoreCase) >= 0); - } + Assert.IsTrue(options.IndexOf("--parentprocessid 123", StringComparison.OrdinalIgnoreCase) >= 0); + } - [TestMethod] - public void ToCommandLineOptionsShouldNotIncludeDiagnosticsOptionIfNotEnabled() - { - var connectionInfo = default(TestRunnerConnectionInfo); + [TestMethod] + public void ToCommandLineOptionsShouldNotIncludeDiagnosticsOptionIfNotEnabled() + { + var connectionInfo = default(TestRunnerConnectionInfo); - var options = connectionInfo.ToCommandLineOptions(); + var options = connectionInfo.ToCommandLineOptions(); - Assert.IsFalse(options.IndexOf("--diag", StringComparison.OrdinalIgnoreCase) >= 0); - } + Assert.IsFalse(options.IndexOf("--diag", StringComparison.OrdinalIgnoreCase) >= 0); + } - [TestMethod] - public void ToCommandLineOptionsShouldIncludeDiagnosticsOptionIfEnabled() - { - var connectionInfo = new TestRunnerConnectionInfo { LogFile = "log.txt", TraceLevel = 3 }; + [TestMethod] + public void ToCommandLineOptionsShouldIncludeDiagnosticsOptionIfEnabled() + { + var connectionInfo = new TestRunnerConnectionInfo { LogFile = "log.txt", TraceLevel = 3 }; - var options = connectionInfo.ToCommandLineOptions(); + var options = connectionInfo.ToCommandLineOptions(); - StringAssert.EndsWith(options, "--diag log.txt --tracelevel 3"); - } + StringAssert.EndsWith(options, "--diag log.txt --tracelevel 3"); } -#pragma warning restore SA1600 -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Microsoft.TestPlatform.ObjectModel.UnitTests.csproj b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Microsoft.TestPlatform.ObjectModel.UnitTests.csproj index 0081392c81..744ca8bb29 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Microsoft.TestPlatform.ObjectModel.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Microsoft.TestPlatform.ObjectModel.UnitTests.csproj @@ -1,27 +1,18 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe Microsoft.TestPlatform.ObjectModel.UnitTests - $(JsonNetVersion) + $(NewtonsoftJsonVersion) - - - - - - - diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Program.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Program.cs deleted file mode 100644 index ac2135a417..0000000000 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.ObjectModel.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index a28b900e2c..0000000000 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.TestPlatform.ObjectModel.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("fc30d066-c891-40c0-b94a-d7dbb50ebf8f")] diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunConfigurationTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunConfigurationTests.cs index cb14ddbb71..8194ebae03 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunConfigurationTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunConfigurationTests.cs @@ -1,48 +1,48 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests -{ - using System; +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using MSTest.TestFramework.AssertExtensions; +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class RunConfigurationTests +{ + [TestMethod] + public void RunConfigurationDefaultValuesMustBeUsedOnCreation() + { + var runConfiguration = new RunConfiguration(); + + // Verify Default + Assert.AreEqual(Constants.DefaultPlatform, runConfiguration.TargetPlatform); + Assert.AreEqual(Framework.DefaultFramework, runConfiguration.TargetFramework); + Assert.AreEqual(Constants.DefaultBatchSize, runConfiguration.BatchSize); + Assert.AreEqual(0, runConfiguration.TestSessionTimeout); + Assert.AreEqual(Constants.DefaultResultsDirectory, runConfiguration.ResultsDirectory); + Assert.IsNull(runConfiguration.SolutionDirectory); + Assert.AreEqual(Constants.DefaultTreatTestAdapterErrorsAsWarnings, runConfiguration.TreatTestAdapterErrorsAsWarnings); + Assert.IsNull(runConfiguration.BinariesRoot); + Assert.IsNull(runConfiguration.TestAdaptersPaths); + Assert.AreEqual(Constants.DefaultCpuCount, runConfiguration.MaxCpuCount); + Assert.IsFalse(runConfiguration.DisableAppDomain); + Assert.IsFalse(runConfiguration.DisableParallelization); + Assert.IsFalse(runConfiguration.DesignMode); + Assert.IsFalse(runConfiguration.InIsolation); + Assert.AreEqual(runConfiguration.DesignMode, runConfiguration.ShouldCollectSourceInformation); + Assert.AreEqual(Constants.DefaultExecutionThreadApartmentState, runConfiguration.ExecutionThreadApartmentState); + } - [TestClass] - public class RunConfigurationTests + [TestMethod] + public void RunConfigurationShouldNotThrowExceptionOnUnknownElements() { - [TestMethod] - public void RunConfigurationDefaultValuesMustBeUsedOnCreation() - { - var runConfiguration = new RunConfiguration(); - - // Verify Default - Assert.AreEqual(Constants.DefaultPlatform, runConfiguration.TargetPlatform); - Assert.AreEqual(Framework.DefaultFramework, runConfiguration.TargetFramework); - Assert.AreEqual(Constants.DefaultBatchSize, runConfiguration.BatchSize); - Assert.AreEqual(0, runConfiguration.TestSessionTimeout); - Assert.AreEqual(Constants.DefaultResultsDirectory, runConfiguration.ResultsDirectory); - Assert.IsNull(runConfiguration.SolutionDirectory); - Assert.AreEqual(Constants.DefaultTreatTestAdapterErrorsAsWarnings, runConfiguration.TreatTestAdapterErrorsAsWarnings); - Assert.IsNull(runConfiguration.BinariesRoot); - Assert.IsNull(runConfiguration.TestAdaptersPaths); - Assert.AreEqual(Constants.DefaultCpuCount, runConfiguration.MaxCpuCount); - Assert.IsFalse(runConfiguration.DisableAppDomain); - Assert.IsFalse(runConfiguration.DisableParallelization); - Assert.IsFalse(runConfiguration.DesignMode); - Assert.IsFalse(runConfiguration.InIsolation); - Assert.AreEqual(runConfiguration.DesignMode, runConfiguration.ShouldCollectSourceInformation); - Assert.AreEqual(Constants.DefaultExecutionThreadApartmentState, runConfiguration.ExecutionThreadApartmentState); - } - - [TestMethod] - public void RunConfigurationShouldNotThrowExceptionOnUnknownElements() - { - string settingsXml = - @" + string settingsXml = + @" TestResults @@ -50,17 +50,17 @@ public void RunConfigurationShouldNotThrowExceptionOnUnknownElements() "; - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - Assert.IsNotNull(runConfiguration); - Assert.IsTrue(runConfiguration.DesignMode); - } + Assert.IsNotNull(runConfiguration); + Assert.IsTrue(runConfiguration.DesignMode); + } - [TestMethod] - public void RunConfigurationReadsValuesCorrectlyFromXml() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationReadsValuesCorrectlyFromXml() + { + string settingsXml = + @" TestResults @@ -82,94 +82,87 @@ public void RunConfigurationReadsValuesCorrectlyFromXml() "; - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - - // Verify Default - Assert.AreEqual(Architecture.X64, runConfiguration.TargetPlatform); - - var expectedFramework = Framework.FromString("FrameworkCore10"); - var actualFramework = runConfiguration.TargetFramework; - Assert.AreEqual(expectedFramework.Name, runConfiguration.TargetFramework.Name); - Assert.AreEqual(expectedFramework.Version, runConfiguration.TargetFramework.Version); - - Assert.AreEqual("TestResults", runConfiguration.ResultsDirectory); - - var expectedSolutionPath = Environment.GetEnvironmentVariable("temp"); - Assert.AreEqual(expectedSolutionPath, runConfiguration.SolutionDirectory); - - Assert.IsTrue(runConfiguration.TreatTestAdapterErrorsAsWarnings); - Assert.AreEqual(@"E:\x\z", runConfiguration.BinariesRoot); - Assert.AreEqual(@"C:\a\b;D:\x\y", runConfiguration.TestAdaptersPaths); - Assert.AreEqual(2, runConfiguration.MaxCpuCount); - Assert.AreEqual(5, runConfiguration.BatchSize); - Assert.AreEqual(10000, runConfiguration.TestSessionTimeout); - Assert.IsTrue(runConfiguration.DisableAppDomain); - Assert.IsTrue(runConfiguration.DisableParallelization); - Assert.IsTrue(runConfiguration.DesignMode); - Assert.IsTrue(runConfiguration.InIsolation); - Assert.IsFalse(runConfiguration.ShouldCollectSourceInformation); - Assert.AreEqual(PlatformApartmentState.STA, runConfiguration.ExecutionThreadApartmentState); - } - - [TestMethod] - public void SetTargetFrameworkVersionShouldSetTargetFramework() - { -#pragma warning disable 612, 618 - - var runConfiguration = new RunConfiguration(); - runConfiguration.TargetFrameworkVersion = FrameworkVersion.Framework35; - StringAssert.Equals(Framework.FromString("Framework35").Name, runConfiguration.TargetFramework.Name); - Assert.AreEqual(FrameworkVersion.Framework35, runConfiguration.TargetFrameworkVersion); - - runConfiguration.TargetFrameworkVersion = FrameworkVersion.Framework40; - StringAssert.Equals(Framework.FromString("Framework40").Name, runConfiguration.TargetFramework.Name); - Assert.AreEqual(FrameworkVersion.Framework40, runConfiguration.TargetFrameworkVersion); - - runConfiguration.TargetFrameworkVersion = FrameworkVersion.Framework45; - StringAssert.Equals(Framework.FromString("Framework45").Name, runConfiguration.TargetFramework.Name); - Assert.AreEqual(FrameworkVersion.Framework45, runConfiguration.TargetFrameworkVersion); - - runConfiguration.TargetFrameworkVersion = FrameworkVersion.FrameworkCore10; - StringAssert.Equals(Framework.FromString("FrameworkCore10").Name, runConfiguration.TargetFramework.Name); - Assert.AreEqual(FrameworkVersion.FrameworkCore10, runConfiguration.TargetFrameworkVersion); - - runConfiguration.TargetFrameworkVersion = FrameworkVersion.FrameworkUap10; - StringAssert.Equals(Framework.FromString("FrameworkUap10").Name, runConfiguration.TargetFramework.Name); - Assert.AreEqual(FrameworkVersion.FrameworkUap10, runConfiguration.TargetFrameworkVersion); - -#pragma warning restore 612, 618 - } - - [TestMethod] - public void SetTargetFrameworkShouldSetTargetFrameworkVersion() - { - var runConfiguration = new RunConfiguration(); - -#pragma warning disable 612, 618 + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + + // Verify Default + Assert.AreEqual(Architecture.X64, runConfiguration.TargetPlatform); + + var expectedFramework = Framework.FromString("FrameworkCore10")!; + _ = runConfiguration.TargetFramework; + Assert.AreEqual(expectedFramework.Name, runConfiguration.TargetFramework!.Name); + Assert.AreEqual(expectedFramework.Version, runConfiguration.TargetFramework.Version); + + Assert.AreEqual("TestResults", runConfiguration.ResultsDirectory); + + var expectedSolutionPath = Environment.GetEnvironmentVariable("temp"); + Assert.AreEqual(expectedSolutionPath, runConfiguration.SolutionDirectory); + + Assert.IsTrue(runConfiguration.TreatTestAdapterErrorsAsWarnings); + Assert.AreEqual(@"E:\x\z", runConfiguration.BinariesRoot); + Assert.AreEqual(@"C:\a\b;D:\x\y", runConfiguration.TestAdaptersPaths); + Assert.AreEqual(2, runConfiguration.MaxCpuCount); + Assert.AreEqual(5, runConfiguration.BatchSize); + Assert.AreEqual(10000, runConfiguration.TestSessionTimeout); + Assert.IsTrue(runConfiguration.DisableAppDomain); + Assert.IsTrue(runConfiguration.DisableParallelization); + Assert.IsTrue(runConfiguration.DesignMode); + Assert.IsTrue(runConfiguration.InIsolation); + Assert.IsFalse(runConfiguration.ShouldCollectSourceInformation); + Assert.AreEqual(PlatformApartmentState.STA, runConfiguration.ExecutionThreadApartmentState); + } - runConfiguration.TargetFramework = Framework.FromString("Framework35"); - Assert.AreEqual(FrameworkVersion.Framework35, runConfiguration.TargetFrameworkVersion); + [TestMethod] + [Obsolete("TargetFrameworkVersion is Obsolete but we want to test its behavior")] + public void SetTargetFrameworkVersionShouldSetTargetFramework() + { + var runConfiguration = new RunConfiguration(); + runConfiguration.TargetFrameworkVersion = FrameworkVersion.Framework35; + Assert.AreEqual(Framework.FromString("Framework35")!.Name, runConfiguration.TargetFramework!.Name); + Assert.AreEqual(FrameworkVersion.Framework35, runConfiguration.TargetFrameworkVersion); + + runConfiguration.TargetFrameworkVersion = FrameworkVersion.Framework40; + Assert.AreEqual(Framework.FromString("Framework40")!.Name, runConfiguration.TargetFramework.Name); + Assert.AreEqual(FrameworkVersion.Framework40, runConfiguration.TargetFrameworkVersion); + + runConfiguration.TargetFrameworkVersion = FrameworkVersion.Framework45; + Assert.AreEqual(Framework.FromString("Framework45")!.Name, runConfiguration.TargetFramework.Name); + Assert.AreEqual(FrameworkVersion.Framework45, runConfiguration.TargetFrameworkVersion); + + runConfiguration.TargetFrameworkVersion = FrameworkVersion.FrameworkCore10; + Assert.AreEqual(Framework.FromString("FrameworkCore10")!.Name, runConfiguration.TargetFramework.Name); + Assert.AreEqual(FrameworkVersion.FrameworkCore10, runConfiguration.TargetFrameworkVersion); + + runConfiguration.TargetFrameworkVersion = FrameworkVersion.FrameworkUap10; + Assert.AreEqual(Framework.FromString("FrameworkUap10")!.Name, runConfiguration.TargetFramework.Name); + Assert.AreEqual(FrameworkVersion.FrameworkUap10, runConfiguration.TargetFrameworkVersion); + } - runConfiguration.TargetFramework = Framework.FromString("Framework40"); - Assert.AreEqual(FrameworkVersion.Framework40, runConfiguration.TargetFrameworkVersion); + [TestMethod] + [Obsolete("TargetFrameworkVersion is Obsolete but we want to test its behavior")] + public void SetTargetFrameworkShouldSetTargetFrameworkVersion() + { + var runConfiguration = new RunConfiguration(); + runConfiguration.TargetFramework = Framework.FromString("Framework35"); + Assert.AreEqual(FrameworkVersion.Framework35, runConfiguration.TargetFrameworkVersion); - runConfiguration.TargetFramework = Framework.FromString("Framework45"); - Assert.AreEqual(FrameworkVersion.Framework45, runConfiguration.TargetFrameworkVersion); + runConfiguration.TargetFramework = Framework.FromString("Framework40"); + Assert.AreEqual(FrameworkVersion.Framework40, runConfiguration.TargetFrameworkVersion); - runConfiguration.TargetFramework = Framework.FromString("FrameworkCore10"); - Assert.AreEqual(FrameworkVersion.FrameworkCore10, runConfiguration.TargetFrameworkVersion); + runConfiguration.TargetFramework = Framework.FromString("Framework45"); + Assert.AreEqual(FrameworkVersion.Framework45, runConfiguration.TargetFrameworkVersion); - runConfiguration.TargetFramework = Framework.FromString("FrameworkUap10"); - Assert.AreEqual(FrameworkVersion.FrameworkUap10, runConfiguration.TargetFrameworkVersion); + runConfiguration.TargetFramework = Framework.FromString("FrameworkCore10"); + Assert.AreEqual(FrameworkVersion.FrameworkCore10, runConfiguration.TargetFrameworkVersion); -#pragma warning restore 612, 618 - } + runConfiguration.TargetFramework = Framework.FromString("FrameworkUap10"); + Assert.AreEqual(FrameworkVersion.FrameworkUap10, runConfiguration.TargetFrameworkVersion); + } - [TestMethod] - public void RunConfigurationFromXmlThrowsSettingsExceptionIfBatchSizeIsInvalid() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationFromXmlThrowsSettingsExceptionIfBatchSizeIsInvalid() + { + string settingsXml = + @" Foo @@ -177,16 +170,16 @@ public void RunConfigurationFromXmlThrowsSettingsExceptionIfBatchSizeIsInvalid() "; - Assert.That.Throws( - () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)) - .WithExactMessage("Invalid settings 'RunConfiguration'. Invalid value 'Foo' specified for 'BatchSize'."); - } + var exception = Assert.ThrowsExactly( + () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)); + Assert.AreEqual("Invalid settings 'RunConfiguration'. Invalid value 'Foo' specified for 'BatchSize'.", exception.Message); + } - [TestMethod] - public void RunConfigurationFromXmlThrowsSettingsExceptionIfTestSessionTimeoutIsInvalid() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationFromXmlThrowsSettingsExceptionIfTestSessionTimeoutIsInvalid() + { + string settingsXml = + @" -1 @@ -194,16 +187,16 @@ public void RunConfigurationFromXmlThrowsSettingsExceptionIfTestSessionTimeoutIs "; - Assert.That.Throws( - () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)) - .WithExactMessage("Invalid settings 'RunConfiguration'. Invalid value '-1' specified for 'TestSessionTimeout'."); - } + var exception = Assert.ThrowsExactly( + () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)); + Assert.AreEqual("Invalid settings 'RunConfiguration'. Invalid value '-1' specified for 'TestSessionTimeout'.", exception.Message); + } - [TestMethod] - public void RunConfigurationFromXmlShouldNotThrowsSettingsExceptionIfTestSessionTimeoutIsZero() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationFromXmlShouldNotThrowsSettingsExceptionIfTestSessionTimeoutIsZero() + { + string settingsXml = + @" 0 @@ -211,14 +204,14 @@ public void RunConfigurationFromXmlShouldNotThrowsSettingsExceptionIfTestSession "; - XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - } + XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + } - [TestMethod] - public void RunConfigurationFromXmlThrowsSettingsExceptionIfExecutionThreadApartmentStateIsInvalid() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationFromXmlThrowsSettingsExceptionIfExecutionThreadApartmentStateIsInvalid() + { + string settingsXml = + @" RandomValue @@ -226,134 +219,135 @@ public void RunConfigurationFromXmlThrowsSettingsExceptionIfExecutionThreadApart "; - Assert.That.Throws( - () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)) - .WithExactMessage("Invalid settings 'RunConfiguration'. Invalid value 'RandomValue' specified for 'ExecutionThreadApartmentState'."); - } + var exception = Assert.ThrowsExactly( + () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)); + Assert.AreEqual("Invalid settings 'RunConfiguration'. Invalid value 'RandomValue' specified for 'ExecutionThreadApartmentState'.", exception.Message); + } - [TestMethod] - public void RunConfigurationFromXmlThrowsSettingsExceptionIfBatchSizeIsNegativeInteger() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationFromXmlThrowsSettingsExceptionIfBatchSizeIsNegativeInteger() + { + string settingsXml = + @" -10 "; - Assert.That.Throws( - () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)) - .WithExactMessage("Invalid settings 'RunConfiguration'. Invalid value '-10' specified for 'BatchSize'."); - } - - [DataRow(true)] - [DataRow(false)] - [DataTestMethod] - public void RunConfigurationShouldReadValueForDesignMode(bool designModeValue) - { - string settingsXml = string.Format( - @" + var exception = Assert.ThrowsExactly( + () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)); + Assert.AreEqual("Invalid settings 'RunConfiguration'. Invalid value '-10' specified for 'BatchSize'.", exception.Message); + } + + [DataRow(true)] + [DataRow(false)] + [DataTestMethod] + public void RunConfigurationShouldReadValueForDesignMode(bool designModeValue) + { + string settingsXml = string.Format( + CultureInfo.CurrentCulture, + @" {0} ", designModeValue); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - Assert.AreEqual(designModeValue, runConfiguration.DesignMode); - } + Assert.AreEqual(designModeValue, runConfiguration.DesignMode); + } - [TestMethod] - public void RunConfigurationShouldSetDesignModeAsFalseByDefault() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationShouldSetDesignModeAsFalseByDefault() + { + string settingsXml = + @" x64 "; - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - Assert.IsFalse(runConfiguration.DesignMode); - } + Assert.IsFalse(runConfiguration.DesignMode); + } - [TestMethod] - public void RunConfigurationToXmlShouldProvideDesignMode() - { - var runConfiguration = new RunConfiguration { DesignMode = true }; + [TestMethod] + public void RunConfigurationToXmlShouldProvideDesignMode() + { + var runConfiguration = new RunConfiguration { DesignMode = true }; - StringAssert.Contains(runConfiguration.ToXml().InnerXml, "True"); - } + StringAssert.Contains(runConfiguration.ToXml().InnerXml, "True"); + } - [DataRow(true)] - [DataRow(false)] - [DataTestMethod] - public void RunConfigurationShouldReadValueForCollectSourceInformation(bool val) - { - string settingsXml = string.Format( - @" + [DataRow(true)] + [DataRow(false)] + [DataTestMethod] + public void RunConfigurationShouldReadValueForCollectSourceInformation(bool val) + { + string settingsXml = string.Format( + CultureInfo.CurrentCulture, + @" {0} ", val); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - Assert.AreEqual(val, runConfiguration.ShouldCollectSourceInformation); - } + Assert.AreEqual(val, runConfiguration.ShouldCollectSourceInformation); + } - [TestMethod] - public void RunConfigurationShouldSetCollectSourceInformationSameAsDesignModeByDefault() - { - string settingsXml = - @" + [TestMethod] + public void RunConfigurationShouldSetCollectSourceInformationSameAsDesignModeByDefault() + { + string settingsXml = + @" x64 "; - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); - - Assert.AreEqual(runConfiguration.DesignMode, runConfiguration.ShouldCollectSourceInformation); - } - - [DataTestMethod] - [DataRow(true)] - [DataRow(false)] - public void RunConfigurationToXmlShouldProvideCollectSourceInformationSameAsDesignMode(bool val) - { - var runConfiguration = new RunConfiguration { DesignMode = val }; - StringAssert.Contains(runConfiguration.ToXml().InnerXml.ToUpperInvariant(), $"{val}".ToUpperInvariant()); - } - - [TestMethod] - public void RunConfigurationToXmlShouldProvideExecutionThreadApartmentState() - { - var runConfiguration = new RunConfiguration { ExecutionThreadApartmentState = PlatformApartmentState.STA }; - - StringAssert.Contains(runConfiguration.ToXml().InnerXml, "STA"); - } - - [TestMethod] - public void RunConfigurationShouldThrowSettingsExceptionIfResultsirectoryIsEmpty() - { - string settingsXml = - @" + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml); + + Assert.AreEqual(runConfiguration.DesignMode, runConfiguration.ShouldCollectSourceInformation); + } + + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void RunConfigurationToXmlShouldProvideCollectSourceInformationSameAsDesignMode(bool val) + { + var runConfiguration = new RunConfiguration { DesignMode = val }; + StringAssert.Contains(runConfiguration.ToXml().InnerXml.ToUpperInvariant(), $"{val}".ToUpperInvariant()); + } + + [TestMethod] + public void RunConfigurationToXmlShouldProvideExecutionThreadApartmentState() + { + var runConfiguration = new RunConfiguration { ExecutionThreadApartmentState = PlatformApartmentState.STA }; + + StringAssert.Contains(runConfiguration.ToXml().InnerXml, "STA"); + } + + [TestMethod] + public void RunConfigurationShouldThrowSettingsExceptionIfResultsirectoryIsEmpty() + { + string settingsXml = + @" "; - Assert.That.Throws( - () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)) - .WithExactMessage("Invalid settings 'RunConfiguration'. Invalid value '' specified for 'ResultsDirectory'."); - } + var exception = Assert.ThrowsExactly( + () => XmlRunSettingsUtilities.GetRunConfigurationNode(settingsXml)); + Assert.AreEqual("Invalid settings 'RunConfiguration'. Invalid value '' specified for 'ResultsDirectory'.", exception.Message); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunSettingsTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunSettingsTests.cs new file mode 100644 index 0000000000..3477a0d302 --- /dev/null +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/RunSettings/RunSettingsTests.cs @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Xml; +using System.Xml.Serialization; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class RunSettingsTests +{ + [TestMethod] + public void RunSettingsNameSerialization() + { + var chilRunSettings = new ChildRunSettings(); + var xml = chilRunSettings.ToXml(); + Assert.IsNotNull(xml); + } + + public class ChildRunSettings : TestRunSettings + { + public ChildRunSettings() : base("SomeName") + { + } + + public override XmlElement ToXml() + { + var document = new XmlDocument(); + using (XmlWriter writer = document.CreateNavigator()!.AppendChild()) + { + new XmlSerializer(typeof(ChildRunSettings)).Serialize(writer, this); + } + return document.DocumentElement!; + } + } +} diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestCaseTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestCaseTests.cs index f61dfcd2d7..3d6140bdb5 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestCaseTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestCaseTests.cs @@ -1,194 +1,193 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests +using System; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class TestCaseTests { - using System; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestCaseTests - { - private TestCase testCase; - - [TestInitialize] - public void TestInit() - { - testCase = new TestCase("sampleTestClass.sampleTestCase", new Uri("executor://sampleTestExecutor"), "sampleTest.dll"); - } - - [TestMethod] - public void TestCaseIdIfNotSetExplicitlyShouldReturnGuidBasedOnSourceAndName() - { - Assert.AreEqual("28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b", testCase.Id.ToString()); - } - - [TestMethod] - public void TestCaseIdIfNotSetExplicitlyShouldReturnGuidBasedOnSourceAndNameIfNameIsChanged() - { - testCase.FullyQualifiedName = "sampleTestClass1.sampleTestCase1"; - - Assert.AreEqual("6f86dd1c-7130-a1ae-8e7f-02e7de898a43", testCase.Id.ToString()); - } - - [TestMethod] - public void TestCaseIdIfNotSetExplicitlyShouldReturnGuidBasedOnSourceAndNameIfSourceIsChanged() - { - testCase.Source = "sampleTest1.dll"; - - Assert.AreEqual("22843fee-70ea-4cf4-37cd-5061b4c47a8a", testCase.Id.ToString()); - } - - [TestMethod] - public void TestCaseIdShouldReturnIdSetExplicitlyEvenIfNameOrSourceInfoChanges() - { - var testGuid = new Guid("{8167845C-9CDB-476F-9F2B-1B1C1FE01B7D}"); - testCase.Id = testGuid; - - testCase.FullyQualifiedName = "sampleTestClass1.sampleTestCase1"; - testCase.Source = "sampleTest1.dll"; - - Assert.AreEqual(testGuid, testCase.Id); - } - - [TestMethod] - public void TestCaseLocalExtensionDataIsPubliclySettableGettableProperty() - { - var dummyData = "foo"; - this.testCase.LocalExtensionData = dummyData; - Assert.AreEqual("foo", this.testCase.LocalExtensionData); - } - - #region GetSetPropertyValue Tests - - [TestMethod] - public void TestCaseGetPropertyValueForCodeFilePathShouldReturnCorrectValue() - { - var testCodeFilePath = "C:\\temp\foo.cs"; - this.testCase.CodeFilePath = testCodeFilePath; - - Assert.AreEqual(testCodeFilePath, this.testCase.GetPropertyValue(TestCaseProperties.CodeFilePath)); - } - - [TestMethod] - public void TestCaseGetPropertyValueForDisplayNameShouldReturnCorrectValue() - { - var testDisplayName = "testCaseDisplayName"; - this.testCase.DisplayName = testDisplayName; - - Assert.AreEqual(testDisplayName, this.testCase.GetPropertyValue(TestCaseProperties.DisplayName)); - } - - [TestMethod] - public void TestCaseGetPropertyValueForExecutorUriShouldReturnCorrectValue() - { - var testExecutorUri = new Uri("http://foo"); - this.testCase.ExecutorUri = testExecutorUri; - - Assert.AreEqual(testExecutorUri, this.testCase.GetPropertyValue(TestCaseProperties.ExecutorUri)); - } - - [TestMethod] - public void TestCaseGetPropertyValueForFullyQualifiedNameShouldReturnCorrectValue() - { - var testFullyQualifiedName = "fullyQualifiedName.Test1"; - this.testCase.FullyQualifiedName = testFullyQualifiedName; - - Assert.AreEqual(testFullyQualifiedName, this.testCase.GetPropertyValue(TestCaseProperties.FullyQualifiedName)); - } - - [TestMethod] - public void TestCaseGetPropertyValueForIdShouldReturnCorrectValue() - { - var testId = new Guid("{7845816C-9CDB-37DA-9ADF-1B1C1FE01B7D}"); - this.testCase.Id = testId; - - Assert.AreEqual(testId, this.testCase.GetPropertyValue(TestCaseProperties.Id)); - } - - [TestMethod] - public void TestCaseGetPropertyValueForLineNumberShouldReturnCorrectValue() - { - var testLineNumber = 34; - this.testCase.LineNumber = testLineNumber; - - Assert.AreEqual(testLineNumber, this.testCase.GetPropertyValue(TestCaseProperties.LineNumber)); - } - - [TestMethod] - public void TestCaseGetPropertyValueForSourceShouldReturnCorrectValue() - { - var testSource = "C://temp/foobar.dll"; - this.testCase.Source = testSource; - - Assert.AreEqual(testSource, this.testCase.GetPropertyValue(TestCaseProperties.Source)); - } - - [TestMethod] - public void TestCaseSetPropertyValueForCodeFilePathShouldSetValue() - { - var testCodeFilePath = "C:\\temp\foo.cs"; - this.testCase.SetPropertyValue(TestCaseProperties.CodeFilePath, testCodeFilePath); - - Assert.AreEqual(testCodeFilePath, this.testCase.CodeFilePath); - } - - [TestMethod] - public void TestCaseSetPropertyValueForDisplayNameShouldSetValue() - { - var testDisplayName = "testCaseDisplayName"; - this.testCase.SetPropertyValue(TestCaseProperties.DisplayName, testDisplayName); - - Assert.AreEqual(testDisplayName, this.testCase.DisplayName); - } - - [TestMethod] - public void TestCaseSetPropertyValueForExecutorUriShouldSetValue() - { - var testExecutorUri = new Uri("http://foo"); - this.testCase.SetPropertyValue(TestCaseProperties.ExecutorUri, testExecutorUri); - - Assert.AreEqual(testExecutorUri, this.testCase.ExecutorUri); - } - - [TestMethod] - public void TestCaseSetPropertyValueForFullyQualifiedNameShouldSetValue() - { - var testFullyQualifiedName = "fullyQualifiedName.Test1"; - this.testCase.SetPropertyValue(TestCaseProperties.FullyQualifiedName, testFullyQualifiedName); - - Assert.AreEqual(testFullyQualifiedName, this.testCase.FullyQualifiedName); - } - - [TestMethod] - public void TestCaseSetPropertyValueForIdShouldSetValue() - { - var testId = new Guid("{7845816C-9CDB-37DA-9ADF-1B1C1FE01B7D}"); - this.testCase.SetPropertyValue(TestCaseProperties.Id, testId); - - Assert.AreEqual(testId, this.testCase.Id); - } - - [TestMethod] - public void TestCaseSetPropertyValueForLineNumberShouldSetValue() - { - var testLineNumber = 34; - this.testCase.SetPropertyValue(TestCaseProperties.LineNumber, testLineNumber); - - Assert.AreEqual(testLineNumber, this.testCase.LineNumber); - } - - [TestMethod] - public void TestCaseSetPropertyValueForSourceShouldSetValue() - { - var testSource = "C://temp/foobar.dll"; - this.testCase.SetPropertyValue(TestCaseProperties.Source, testSource); - - Assert.AreEqual(testSource, this.testCase.Source); - } - - #endregion + private readonly TestCase _testCase; + + public TestCaseTests() + { + _testCase = new TestCase("sampleTestClass.sampleTestCase", new Uri("executor://sampleTestExecutor"), "sampleTest.dll"); + } + + [TestMethod] + public void TestCaseIdIfNotSetExplicitlyShouldReturnGuidBasedOnSourceAndName() + { + Assert.AreEqual("28e7a7ed-8fb9-05b7-5e90-4a8c52f32b5b", _testCase.Id.ToString()); + } + + [TestMethod] + public void TestCaseIdIfNotSetExplicitlyShouldReturnGuidBasedOnSourceAndNameIfNameIsChanged() + { + _testCase.FullyQualifiedName = "sampleTestClass1.sampleTestCase1"; + + Assert.AreEqual("6f86dd1c-7130-a1ae-8e7f-02e7de898a43", _testCase.Id.ToString()); + } + + [TestMethod] + public void TestCaseIdIfNotSetExplicitlyShouldReturnGuidBasedOnSourceAndNameIfSourceIsChanged() + { + _testCase.Source = "sampleTest1.dll"; + + Assert.AreEqual("22843fee-70ea-4cf4-37cd-5061b4c47a8a", _testCase.Id.ToString()); + } + + [TestMethod] + public void TestCaseIdShouldReturnIdSetExplicitlyEvenIfNameOrSourceInfoChanges() + { + var testGuid = new Guid("{8167845C-9CDB-476F-9F2B-1B1C1FE01B7D}"); + _testCase.Id = testGuid; + + _testCase.FullyQualifiedName = "sampleTestClass1.sampleTestCase1"; + _testCase.Source = "sampleTest1.dll"; + + Assert.AreEqual(testGuid, _testCase.Id); + } + + [TestMethod] + public void TestCaseLocalExtensionDataIsPubliclySettableGettableProperty() + { + var dummyData = "foo"; + _testCase.LocalExtensionData = dummyData; + Assert.AreEqual("foo", _testCase.LocalExtensionData); + } + + #region GetSetPropertyValue Tests + + [TestMethod] + public void TestCaseGetPropertyValueForCodeFilePathShouldReturnCorrectValue() + { + var testCodeFilePath = "C:\\temp\foo.cs"; + _testCase.CodeFilePath = testCodeFilePath; + + Assert.AreEqual(testCodeFilePath, _testCase.GetPropertyValue(TestCaseProperties.CodeFilePath)); + } + + [TestMethod] + public void TestCaseGetPropertyValueForDisplayNameShouldReturnCorrectValue() + { + var testDisplayName = "testCaseDisplayName"; + _testCase.DisplayName = testDisplayName; + + Assert.AreEqual(testDisplayName, _testCase.GetPropertyValue(TestCaseProperties.DisplayName)); + } + + [TestMethod] + public void TestCaseGetPropertyValueForExecutorUriShouldReturnCorrectValue() + { + var testExecutorUri = new Uri("http://foo"); + _testCase.ExecutorUri = testExecutorUri; + + Assert.AreEqual(testExecutorUri, _testCase.GetPropertyValue(TestCaseProperties.ExecutorUri)); + } + + [TestMethod] + public void TestCaseGetPropertyValueForFullyQualifiedNameShouldReturnCorrectValue() + { + var testFullyQualifiedName = "fullyQualifiedName.Test1"; + _testCase.FullyQualifiedName = testFullyQualifiedName; + + Assert.AreEqual(testFullyQualifiedName, _testCase.GetPropertyValue(TestCaseProperties.FullyQualifiedName)); } + + [TestMethod] + public void TestCaseGetPropertyValueForIdShouldReturnCorrectValue() + { + var testId = new Guid("{7845816C-9CDB-37DA-9ADF-1B1C1FE01B7D}"); + _testCase.Id = testId; + + Assert.AreEqual(testId, _testCase.GetPropertyValue(TestCaseProperties.Id)); + } + + [TestMethod] + public void TestCaseGetPropertyValueForLineNumberShouldReturnCorrectValue() + { + var testLineNumber = 34; + _testCase.LineNumber = testLineNumber; + + Assert.AreEqual(testLineNumber, _testCase.GetPropertyValue(TestCaseProperties.LineNumber)); + } + + [TestMethod] + public void TestCaseGetPropertyValueForSourceShouldReturnCorrectValue() + { + var testSource = "C://temp/foobar.dll"; + _testCase.Source = testSource; + + Assert.AreEqual(testSource, _testCase.GetPropertyValue(TestCaseProperties.Source)); + } + + [TestMethod] + public void TestCaseSetPropertyValueForCodeFilePathShouldSetValue() + { + var testCodeFilePath = "C:\\temp\foo.cs"; + _testCase.SetPropertyValue(TestCaseProperties.CodeFilePath, testCodeFilePath); + + Assert.AreEqual(testCodeFilePath, _testCase.CodeFilePath); + } + + [TestMethod] + public void TestCaseSetPropertyValueForDisplayNameShouldSetValue() + { + var testDisplayName = "testCaseDisplayName"; + _testCase.SetPropertyValue(TestCaseProperties.DisplayName, testDisplayName); + + Assert.AreEqual(testDisplayName, _testCase.DisplayName); + } + + [TestMethod] + public void TestCaseSetPropertyValueForExecutorUriShouldSetValue() + { + var testExecutorUri = new Uri("http://foo"); + _testCase.SetPropertyValue(TestCaseProperties.ExecutorUri, testExecutorUri); + + Assert.AreEqual(testExecutorUri, _testCase.ExecutorUri); + } + + [TestMethod] + public void TestCaseSetPropertyValueForFullyQualifiedNameShouldSetValue() + { + var testFullyQualifiedName = "fullyQualifiedName.Test1"; + _testCase.SetPropertyValue(TestCaseProperties.FullyQualifiedName, testFullyQualifiedName); + + Assert.AreEqual(testFullyQualifiedName, _testCase.FullyQualifiedName); + } + + [TestMethod] + public void TestCaseSetPropertyValueForIdShouldSetValue() + { + var testId = new Guid("{7845816C-9CDB-37DA-9ADF-1B1C1FE01B7D}"); + _testCase.SetPropertyValue(TestCaseProperties.Id, testId); + + Assert.AreEqual(testId, _testCase.Id); + } + + [TestMethod] + public void TestCaseSetPropertyValueForLineNumberShouldSetValue() + { + var testLineNumber = 34; + _testCase.SetPropertyValue(TestCaseProperties.LineNumber, testLineNumber); + + Assert.AreEqual(testLineNumber, _testCase.LineNumber); + } + + [TestMethod] + public void TestCaseSetPropertyValueForSourceShouldSetValue() + { + var testSource = "C://temp/foobar.dll"; + _testCase.SetPropertyValue(TestCaseProperties.Source, testSource); + + Assert.AreEqual(testSource, _testCase.Source); + } + + #endregion } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestObjectTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestObjectTests.cs index e910b4ad26..51278d94ea 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestObjectTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestObjectTests.cs @@ -1,47 +1,46 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests -{ - using System; +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.Linq; +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; - [TestClass] - public class TestObjectTests +[TestClass] +public class TestObjectTests +{ + private static readonly TestCase TestCase = new( + "sampleTestClass.sampleTestCase", + new Uri("executor://sampleTestExecutor"), + "sampleTest.dll") { - private static TestCase testCase = new TestCase( - "sampleTestClass.sampleTestCase", - new Uri("executor://sampleTestExecutor"), - "sampleTest.dll") - { - CodeFilePath = "/user/src/testFile.cs", - DisplayName = "sampleTestCase", - Id = new Guid("be78d6fc-61b0-4882-9d07-40d796fd96ce"), - Traits = { new Trait("Priority", "0"), new Trait("Category", "unit") } - }; + CodeFilePath = "/user/src/testFile.cs", + DisplayName = "sampleTestCase", + Id = new Guid("be78d6fc-61b0-4882-9d07-40d796fd96ce"), + Traits = { new Trait("Priority", "0"), new Trait("Category", "unit") } + }; - [TestMethod] - public void TestCaseIdShouldReturnGuidWhenTestPropertiesIdIsSet() - { - Guid expected = new Guid("{8167845C-9CDB-476F-9F2B-1B1C1FE01B7D}"); - testCase.Id = expected; - var actual = testCase.Id; - Assert.AreEqual(expected, actual); - } + [TestMethod] + public void TestCaseIdShouldReturnGuidWhenTestPropertiesIdIsSet() + { + Guid expected = new("{8167845C-9CDB-476F-9F2B-1B1C1FE01B7D}"); + TestCase.Id = expected; + var actual = TestCase.Id; + Assert.AreEqual(expected, actual); + } - [TestMethod] - public void GetPropertiesShouldReturnListOfPropertiesInStore() - { - TestProperty tp = TestProperty.Register("dummyId", "dummyLabel", typeof(int), typeof(TestObjectTests)); - var kvp = new KeyValuePair(tp, 123); - testCase.SetPropertyValue(kvp.Key, kvp.Value); + [TestMethod] + public void GetPropertiesShouldReturnListOfPropertiesInStore() + { + TestProperty tp = TestProperty.Register("dummyId", "dummyLabel", typeof(int), typeof(TestObjectTests)); + var kvp = new KeyValuePair(tp, 123); + TestCase.SetPropertyValue(kvp.Key, kvp.Value); - var properties = testCase.GetProperties().ToList(); - Assert.IsTrue(properties.Contains(kvp)); - } + var properties = TestCase.GetProperties().ToList(); + Assert.IsTrue(properties.Contains(kvp)); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestResultTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestResultTests.cs index b60b15ca8e..a6219cc386 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestResultTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/TestResultTests.cs @@ -1,192 +1,192 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests +using System; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests; + +[TestClass] +public class TestResultTests { - using System; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestResultTests - { - private readonly TestCase testcase; - private readonly TestResult result; - - public TestResultTests() - { - this.testcase = new TestCase("FQN", new Uri("http://dummyUri"), "dummySource"); - this.result = new TestResult(testcase); - } - - [TestMethod] - public void TestResultShouldInitializeEmptyAttachments() - { - Assert.AreEqual(0, this.result.Attachments.Count); - } - - [TestMethod] - public void TestResultShouldInitializeEmptyMessages() - { - Assert.AreEqual(0, this.result.Messages.Count); - } - - [TestMethod] - public void TestResultShouldInitializeStartAndEndTimeToCurrent() - { - Assert.IsTrue(this.result.StartTime.Subtract(DateTimeOffset.UtcNow) < new TimeSpan(0, 0, 0, 10)); - Assert.IsTrue(this.result.EndTime.Subtract(DateTimeOffset.UtcNow) < new TimeSpan(0, 0, 0, 10)); - } - - #region GetSetPropertyValue Tests - - [TestMethod] - public void TestResultGetPropertyValueForComputerNameShouldReturnCorrectValue() - { - var testComputerName = "computerName"; - this.result.ComputerName = testComputerName; - - Assert.AreEqual(testComputerName, this.result.GetPropertyValue(TestResultProperties.ComputerName)); - } - - [TestMethod] - public void TestResultGetPropertyValueForDisplayNameShouldReturnCorrectValue() - { - var testDisplayName = "displayName"; - this.result.DisplayName = testDisplayName; - - Assert.AreEqual(testDisplayName, this.result.GetPropertyValue(TestResultProperties.DisplayName)); - } - - [TestMethod] - public void TestResultGetPropertyValueForDurationShouldReturnCorrectValue() - { - var testDuration = new TimeSpan(0, 0, 0, 10); - this.result.Duration = testDuration; - - Assert.AreEqual(testDuration, this.result.GetPropertyValue(TestResultProperties.Duration)); - } - - [TestMethod] - public void TestResultGetPropertyValueForEndTimeShouldReturnCorrectValue() - { - var testEndTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 10, DateTimeKind.Utc)); - this.result.EndTime = testEndTime; - - Assert.AreEqual(testEndTime, this.result.GetPropertyValue(TestResultProperties.EndTime)); - } - - [TestMethod] - public void TestResultGetPropertyValueForErrorMessageShouldReturnCorrectValue() - { - var testErrorMessage = "error123"; - this.result.ErrorMessage = testErrorMessage; - - Assert.AreEqual(testErrorMessage, this.result.GetPropertyValue(TestResultProperties.ErrorMessage)); - } - - [TestMethod] - public void TestResultGetPropertyValueForErrorStackTraceShouldReturnCorrectValue() - { - var testErrorStackTrace = "errorStack"; - this.result.ErrorStackTrace = testErrorStackTrace; - - Assert.AreEqual(testErrorStackTrace, this.result.GetPropertyValue(TestResultProperties.ErrorStackTrace)); - } - - [TestMethod] - public void TestResultGetPropertyValueForTestOutcomeShouldReturnCorrectValue() - { - var testOutcome = TestOutcome.Passed; - this.result.Outcome = testOutcome; - - Assert.AreEqual(testOutcome, this.result.GetPropertyValue(TestResultProperties.Outcome)); - } - - [TestMethod] - public void TestResultGetPropertyValueForStartTimeShouldReturnCorrectValue() - { - var testStartTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 0, DateTimeKind.Utc)); - this.result.StartTime = testStartTime; - - Assert.AreEqual(testStartTime, this.result.GetPropertyValue(TestResultProperties.StartTime)); - } - - [TestMethod] - public void TestResultSetPropertyValueForComputerNameShouldSetValue() - { - var testComputerName = "computerNameSet"; - this.result.SetPropertyValue(TestResultProperties.ComputerName, testComputerName); - - Assert.AreEqual(testComputerName, this.result.ComputerName); - } - - [TestMethod] - public void TestResultSetPropertyValueForDisplayNameShouldSetValue() - { - var testDisplayName = "displayNameSet"; - this.result.SetPropertyValue(TestResultProperties.DisplayName, testDisplayName); - - Assert.AreEqual(testDisplayName, this.result.DisplayName); - } - - [TestMethod] - public void TestResultSetPropertyValueForDurationShouldSetValue() - { - var testDuration = new TimeSpan(0, 0, 0, 20); - this.result.SetPropertyValue(TestResultProperties.Duration, testDuration); - - Assert.AreEqual(testDuration, this.result.Duration); - } - - [TestMethod] - public void TestResultSetPropertyValueForEndTimeShouldSetValue() - { - var testEndTime = new DateTimeOffset(new DateTime(2007, 5, 10, 0, 0, 10, DateTimeKind.Utc)); - this.result.SetPropertyValue(TestResultProperties.EndTime, testEndTime); - - Assert.AreEqual(testEndTime, this.result.EndTime); - } - - [TestMethod] - public void TestResultSetPropertyValueForErrorMessageShouldSetValue() - { - var testErrorMessage = "error123Set"; - this.result.SetPropertyValue(TestResultProperties.ErrorMessage, testErrorMessage); - - Assert.AreEqual(testErrorMessage, this.result.ErrorMessage); - } - - [TestMethod] - public void TestResultSetPropertyValueForErrorStackTraceShouldSetValue() - { - var testErrorStackTrace = "errorStackSet"; - this.result.SetPropertyValue(TestResultProperties.ErrorStackTrace, testErrorStackTrace); - - Assert.AreEqual(testErrorStackTrace, this.result.ErrorStackTrace); - } - - [TestMethod] - public void TestResultSetPropertyValueForTestOutcomeShouldSetValue() - { - var testOutcome = TestOutcome.Failed; - this.result.SetPropertyValue(TestResultProperties.Outcome, testOutcome); - - Assert.AreEqual(testOutcome, this.result.Outcome); - } - - [TestMethod] - public void TestResultSetPropertyValueForStartTimeShouldSetValue() - { - var testStartTime = new DateTimeOffset(new DateTime(2007, 5, 10, 0, 0, 0, DateTimeKind.Utc)); - this.result.SetPropertyValue(TestResultProperties.StartTime, testStartTime); + private readonly TestCase _testcase; + private readonly TestResult _result; + + public TestResultTests() + { + _testcase = new TestCase("FQN", new Uri("http://dummyUri"), "dummySource"); + _result = new TestResult(_testcase); + } + + [TestMethod] + public void TestResultShouldInitializeEmptyAttachments() + { + Assert.AreEqual(0, _result.Attachments.Count); + } + + [TestMethod] + public void TestResultShouldInitializeEmptyMessages() + { + Assert.AreEqual(0, _result.Messages.Count); + } + + [TestMethod] + public void TestResultShouldInitializeStartAndEndTimeToCurrent() + { + Assert.IsTrue(_result.StartTime.Subtract(DateTimeOffset.UtcNow) < new TimeSpan(0, 0, 0, 10)); + Assert.IsTrue(_result.EndTime.Subtract(DateTimeOffset.UtcNow) < new TimeSpan(0, 0, 0, 10)); + } + + #region GetSetPropertyValue Tests + + [TestMethod] + public void TestResultGetPropertyValueForComputerNameShouldReturnCorrectValue() + { + var testComputerName = "computerName"; + _result.ComputerName = testComputerName; + + Assert.AreEqual(testComputerName, _result.GetPropertyValue(TestResultProperties.ComputerName)); + } + + [TestMethod] + public void TestResultGetPropertyValueForDisplayNameShouldReturnCorrectValue() + { + var testDisplayName = "displayName"; + _result.DisplayName = testDisplayName; + + Assert.AreEqual(testDisplayName, _result.GetPropertyValue(TestResultProperties.DisplayName)); + } + + [TestMethod] + public void TestResultGetPropertyValueForDurationShouldReturnCorrectValue() + { + var testDuration = new TimeSpan(0, 0, 0, 10); + _result.Duration = testDuration; + + Assert.AreEqual(testDuration, _result.GetPropertyValue(TestResultProperties.Duration)); + } + + [TestMethod] + public void TestResultGetPropertyValueForEndTimeShouldReturnCorrectValue() + { + var testEndTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 10, DateTimeKind.Utc)); + _result.EndTime = testEndTime; + + Assert.AreEqual(testEndTime, _result.GetPropertyValue(TestResultProperties.EndTime)); + } + + [TestMethod] + public void TestResultGetPropertyValueForErrorMessageShouldReturnCorrectValue() + { + var testErrorMessage = "error123"; + _result.ErrorMessage = testErrorMessage; + + Assert.AreEqual(testErrorMessage, _result.GetPropertyValue(TestResultProperties.ErrorMessage)); + } + + [TestMethod] + public void TestResultGetPropertyValueForErrorStackTraceShouldReturnCorrectValue() + { + var testErrorStackTrace = "errorStack"; + _result.ErrorStackTrace = testErrorStackTrace; + + Assert.AreEqual(testErrorStackTrace, _result.GetPropertyValue(TestResultProperties.ErrorStackTrace)); + } + + [TestMethod] + public void TestResultGetPropertyValueForTestOutcomeShouldReturnCorrectValue() + { + var testOutcome = TestOutcome.Passed; + _result.Outcome = testOutcome; + + Assert.AreEqual(testOutcome, _result.GetPropertyValue(TestResultProperties.Outcome)); + } + + [TestMethod] + public void TestResultGetPropertyValueForStartTimeShouldReturnCorrectValue() + { + var testStartTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 0, DateTimeKind.Utc)); + _result.StartTime = testStartTime; + + Assert.AreEqual(testStartTime, _result.GetPropertyValue(TestResultProperties.StartTime)); + } + + [TestMethod] + public void TestResultSetPropertyValueForComputerNameShouldSetValue() + { + var testComputerName = "computerNameSet"; + _result.SetPropertyValue(TestResultProperties.ComputerName, testComputerName); + + Assert.AreEqual(testComputerName, _result.ComputerName); + } + + [TestMethod] + public void TestResultSetPropertyValueForDisplayNameShouldSetValue() + { + var testDisplayName = "displayNameSet"; + _result.SetPropertyValue(TestResultProperties.DisplayName, testDisplayName); + + Assert.AreEqual(testDisplayName, _result.DisplayName); + } + + [TestMethod] + public void TestResultSetPropertyValueForDurationShouldSetValue() + { + var testDuration = new TimeSpan(0, 0, 0, 20); + _result.SetPropertyValue(TestResultProperties.Duration, testDuration); + + Assert.AreEqual(testDuration, _result.Duration); + } + + [TestMethod] + public void TestResultSetPropertyValueForEndTimeShouldSetValue() + { + var testEndTime = new DateTimeOffset(new DateTime(2007, 5, 10, 0, 0, 10, DateTimeKind.Utc)); + _result.SetPropertyValue(TestResultProperties.EndTime, testEndTime); + + Assert.AreEqual(testEndTime, _result.EndTime); + } + + [TestMethod] + public void TestResultSetPropertyValueForErrorMessageShouldSetValue() + { + var testErrorMessage = "error123Set"; + _result.SetPropertyValue(TestResultProperties.ErrorMessage, testErrorMessage); + + Assert.AreEqual(testErrorMessage, _result.ErrorMessage); + } + + [TestMethod] + public void TestResultSetPropertyValueForErrorStackTraceShouldSetValue() + { + var testErrorStackTrace = "errorStackSet"; + _result.SetPropertyValue(TestResultProperties.ErrorStackTrace, testErrorStackTrace); + + Assert.AreEqual(testErrorStackTrace, _result.ErrorStackTrace); + } + + [TestMethod] + public void TestResultSetPropertyValueForTestOutcomeShouldSetValue() + { + var testOutcome = TestOutcome.Failed; + _result.SetPropertyValue(TestResultProperties.Outcome, testOutcome); - Assert.AreEqual(testStartTime, this.result.StartTime); - } - - #endregion + Assert.AreEqual(testOutcome, _result.Outcome); + } + + [TestMethod] + public void TestResultSetPropertyValueForStartTimeShouldSetValue() + { + var testStartTime = new DateTimeOffset(new DateTime(2007, 5, 10, 0, 0, 0, DateTimeKind.Utc)); + _result.SetPropertyValue(TestResultProperties.StartTime, testStartTime); + Assert.AreEqual(testStartTime, _result.StartTime); } + + #endregion + } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/AssemblyHelperTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/AssemblyHelperTests.cs index bee3795169..5e4524e87a 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/AssemblyHelperTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/AssemblyHelperTests.cs @@ -3,75 +3,91 @@ #if NETFRAMEWORK -namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Utilities +using System; +using System.Reflection; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Utilities; + +[TestClass] +public class AssemblyHelperTests { - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System; - - [TestClass] - public class AssemblyHelperTests + private readonly Mock _runContext; + private readonly Mock _runSettings; + + public AssemblyHelperTests() + { + _runContext = new Mock(); + _runSettings = new Mock(); + } + + [TestMethod] + public void SetNetFrameworkCompatiblityModeShouldSetAppDomainTargetFrameWorkWhenFramework40() + { + _runSettings.Setup(rs => rs.SettingsXml).Returns(@" Framework40 "); + _runContext.Setup(rc => rc.RunSettings).Returns(_runSettings.Object); + AppDomainSetup appDomainSetup = new(); + + AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, _runContext.Object); + + Assert.AreEqual(".NETFramework,Version=v4.0", appDomainSetup.TargetFrameworkName); + } + + [TestMethod] + public void SetNetFrameworkCompatiblityModeShouldSetAppDomainTargetFrameWorkWhenNetFrameworkVersionv40() + { + _runSettings.Setup(rs => rs.SettingsXml).Returns(@" .NETFramework,Version=v4.0 "); + _runContext.Setup(rc => rc.RunSettings).Returns(_runSettings.Object); + AppDomainSetup appDomainSetup = new(); + + AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, _runContext.Object); + + Assert.AreEqual(".NETFramework,Version=v4.0", appDomainSetup.TargetFrameworkName); + } + + [TestMethod] + public void SetNetFrameworkCompatiblityModeShouldNotSetAppDomainTargetFrameWorkWhenFramework45() + { + _runSettings.Setup(rs => rs.SettingsXml).Returns(@" Framework45 "); + _runContext.Setup(rc => rc.RunSettings).Returns(_runSettings.Object); + AppDomainSetup appDomainSetup = new(); + + AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, _runContext.Object); + + Assert.IsNull(appDomainSetup.TargetFrameworkName); + } + + [TestMethod] + public void SetNetFrameworkCompatiblityModeShouldNotSetAppDomainTargetFrameWorkWhenNetFrameworkVersionv45() + { + Mock runContext = new(); + Mock runSettings = new(); + runSettings.Setup(rs => rs.SettingsXml).Returns(@" .NETFramework,Version=v4.5 "); + runContext.Setup(rc => rc.RunSettings).Returns(runSettings.Object); + AppDomainSetup appDomainSetup = new(); + + AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, runContext.Object); + + Assert.IsNull(appDomainSetup.TargetFrameworkName); + } + + [TestMethod] + [DataRow(null)] + [DataRow("")] + public void DoesReferencesAssemblyWhenSourceIsNullOrEmptyReturnsNull(string source) + { + Assert.IsNull(AssemblyHelper.DoesReferencesAssembly(source, AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().Location))); + } + + [TestMethod] + public void DoesReferencesAssemblyWhenReferenceAssemblyIsNullReturnsNull() { - private Mock runContext; - private Mock runSettings; - - public AssemblyHelperTests() - { - this.runContext = new Mock(); - this.runSettings = new Mock(); - } - - [TestMethod] - public void SetNETFrameworkCompatiblityModeShouldSetAppDomainTargetFrameWorkWhenFramework40() - { - this.runSettings.Setup(rs => rs.SettingsXml).Returns(@" Framework40 "); - this.runContext.Setup(rc => rc.RunSettings).Returns(runSettings.Object); - AppDomainSetup appDomainSetup = new AppDomainSetup(); - - AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, runContext.Object); - - Assert.AreEqual(".NETFramework,Version=v4.0", appDomainSetup.TargetFrameworkName); - } - - [TestMethod] - public void SetNETFrameworkCompatiblityModeShouldSetAppDomainTargetFrameWorkWhenNETFrameworkVersionv40() - { - this.runSettings.Setup(rs => rs.SettingsXml).Returns(@" .NETFramework,Version=v4.0 "); - this.runContext.Setup(rc => rc.RunSettings).Returns(runSettings.Object); - AppDomainSetup appDomainSetup = new AppDomainSetup(); - - AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, runContext.Object); - - Assert.AreEqual(".NETFramework,Version=v4.0", appDomainSetup.TargetFrameworkName); - } - - [TestMethod] - public void SetNETFrameworkCompatiblityModeShouldNotSetAppDomainTargetFrameWorkWhenFramework45() - { - this.runSettings.Setup(rs => rs.SettingsXml).Returns(@" Framework45 "); - this.runContext.Setup(rc => rc.RunSettings).Returns(runSettings.Object); - AppDomainSetup appDomainSetup = new AppDomainSetup(); - - AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, runContext.Object); - - Assert.IsNull(appDomainSetup.TargetFrameworkName); - } - - [TestMethod] - public void SetNETFrameworkCompatiblityModeShouldNotSetAppDomainTargetFrameWorkWhenNETFrameworkVersionv45() - { - Mock runContext = new Mock(); - Mock runSettings = new Mock(); - runSettings.Setup(rs => rs.SettingsXml).Returns(@" .NETFramework,Version=v4.5 "); - runContext.Setup(rc => rc.RunSettings).Returns(runSettings.Object); - AppDomainSetup appDomainSetup = new AppDomainSetup(); - - AssemblyHelper.SetNETFrameworkCompatiblityMode(appDomainSetup, runContext.Object); - - Assert.IsNull(appDomainSetup.TargetFrameworkName); - } + Assert.IsNull(AssemblyHelper.DoesReferencesAssembly("C:\\some.dll", null!)); } } #endif diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/FilterHelperTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/FilterHelperTests.cs index a6a9e2b452..b167362632 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/FilterHelperTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/FilterHelperTests.cs @@ -1,81 +1,82 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Utilities -{ - using System; - using System.Globalization; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Resources; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Resources; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; + +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class FilterHelpersTests +namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Utilities; + +[TestClass] +public class FilterHelpersTests +{ + [TestMethod] + public void EscapeUnescapeNullThrowsArgumentNullException() { - [TestMethod] - public void EscapeUnescapeNullThrowsArgumentNullException() - { - Assert.ThrowsException(() => FilterHelper.Escape(null)); - Assert.ThrowsException(() => FilterHelper.Unescape(null)); - } + Assert.ThrowsException(() => FilterHelper.Escape(null!)); + Assert.ThrowsException(() => FilterHelper.Unescape(null!)); + } - [TestMethod] - public void EscapeUnescapeEmptyString() - { - Assert.AreEqual(string.Empty, FilterHelper.Escape(string.Empty)); - Assert.AreEqual(string.Empty, FilterHelper.Unescape(string.Empty)); - } + [TestMethod] + public void EscapeUnescapeEmptyString() + { + Assert.AreEqual(string.Empty, FilterHelper.Escape(string.Empty)); + Assert.AreEqual(string.Empty, FilterHelper.Unescape(string.Empty)); + } - [TestMethod] - public void EscapeUnescapeStringWithoutSpecialCharacters() - { - var str = "TestNamespace.TestClass.TestMethod"; - Assert.AreEqual(str, FilterHelper.Escape(str)); - Assert.AreEqual(str, FilterHelper.Unescape(str)); - } + [TestMethod] + public void EscapeUnescapeStringWithoutSpecialCharacters() + { + var str = "TestNamespace.TestClass.TestMethod"; + Assert.AreEqual(str, FilterHelper.Escape(str)); + Assert.AreEqual(str, FilterHelper.Unescape(str)); + } - [TestMethod] - public void EscapeUnescapeStringWithParenthesis() - { - var value = "TestClass(1).TestMethod(2)"; - var escapedValue = FilterHelper.Escape(value); + [TestMethod] + public void EscapeUnescapeStringWithParenthesis() + { + var value = "TestClass(1).TestMethod(2)"; + var escapedValue = FilterHelper.Escape(value); - Assert.AreEqual(@"TestClass\(1\).TestMethod\(2\)", escapedValue); - Assert.AreEqual(value, FilterHelper.Unescape(escapedValue)); - } + Assert.AreEqual(@"TestClass\(1\).TestMethod\(2\)", escapedValue); + Assert.AreEqual(value, FilterHelper.Unescape(escapedValue)); + } - [TestMethod] - public void EscapeUnescapeStringWithSpecialCharacters() - { - var value = @"TestClass(""a | b"").TestMethod(""x != y"")"; - var escapedValue = @"TestClass\(""a \| b""\).TestMethod\(""x \!\= y""\)"; + [TestMethod] + public void EscapeUnescapeStringWithSpecialCharacters() + { + var value = @"TestClass(""a | b"").TestMethod(""x != y"")"; + var escapedValue = @"TestClass\(""a \| b""\).TestMethod\(""x \!\= y""\)"; - Assert.AreEqual(escapedValue, FilterHelper.Escape(value)); - Assert.AreEqual(value, FilterHelper.Unescape(escapedValue)); - } + Assert.AreEqual(escapedValue, FilterHelper.Escape(value)); + Assert.AreEqual(value, FilterHelper.Unescape(escapedValue)); + } - [TestMethod] - public void EscapeUnescapeStringWithPrefix() - { - var value = @"printf(""\r\n"")"; - var escapedValue = @"printf\(""\\r\\n""\)"; + [TestMethod] + public void EscapeUnescapeStringWithPrefix() + { + var value = @"printf(""\r\n"")"; + var escapedValue = @"printf\(""\\r\\n""\)"; - Assert.AreEqual(escapedValue, FilterHelper.Escape(value)); - Assert.AreEqual(value, FilterHelper.Unescape(escapedValue)); - } + Assert.AreEqual(escapedValue, FilterHelper.Escape(value)); + Assert.AreEqual(value, FilterHelper.Unescape(escapedValue)); + } - [TestMethod] - public void UnescapeForInvalidStringThrowsArgumentException1() - { - var invalidString = @"TestClass\$""a %4 b""%2.TestMethod"; - Assert.ThrowsException(() => FilterHelper.Unescape(invalidString), string.Format(CultureInfo.CurrentCulture, Resources.TestCaseFilterEscapeException, invalidString)); - } + [TestMethod] + public void UnescapeForInvalidStringThrowsArgumentException1() + { + var invalidString = @"TestClass\$""a %4 b""%2.TestMethod"; + Assert.ThrowsException(() => FilterHelper.Unescape(invalidString), string.Format(CultureInfo.CurrentCulture, Resources.TestCaseFilterEscapeException, invalidString)); + } - [TestMethod] - public void UnescapeForInvalidStringThrowsArgumentException2() - { - var invalidString = @"TestClass\"; - Assert.ThrowsException(() => FilterHelper.Unescape(invalidString), string.Format(CultureInfo.CurrentCulture, Resources.TestCaseFilterEscapeException, invalidString)); - } + [TestMethod] + public void UnescapeForInvalidStringThrowsArgumentException2() + { + var invalidString = @"TestClass\"; + Assert.ThrowsException(() => FilterHelper.Unescape(invalidString), string.Format(CultureInfo.CurrentCulture, Resources.TestCaseFilterEscapeException, invalidString)); } } diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/XmlRunSettingsUtilitiesTests.cs b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/XmlRunSettingsUtilitiesTests.cs index 835354ade6..11e62c213a 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/XmlRunSettingsUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/Utilities/XmlRunSettingsUtilitiesTests.cs @@ -2,23 +2,24 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; using System.Xml; -namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Utilities +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Resources; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.ObjectModel.UnitTests.Utilities; + +[TestClass] +public class XmlRunSettingsUtilitiesTests { - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Resources; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class XmlRunSettingsUtilitiesTests - { - #region Private Variables + #region Private Variables - private readonly string runSettingsXmlWithDataCollectors = @" + private readonly string _runSettingsXmlWithDataCollectors = @" @@ -38,7 +39,7 @@ public class XmlRunSettingsUtilitiesTests "; - private readonly string runSettingsXmlWithDataCollectorsDisabled = @" + private readonly string _runSettingsXmlWithDataCollectorsDisabled = @" @@ -58,7 +59,7 @@ public class XmlRunSettingsUtilitiesTests "; - private readonly string runSettingsXmlWithIncorrectDataCollectorSettings = @" + private readonly string _runSettingsXmlWithIncorrectDataCollectorSettings = @" @@ -78,25 +79,25 @@ public class XmlRunSettingsUtilitiesTests "; - private readonly string EmptyRunSettings = ""; + private readonly string _emptyRunSettings = ""; - #endregion + #endregion - #region GetTestRunParameters tests + #region GetTestRunParameters tests - [TestMethod] - public void GetTestRunParametersReturnsEmptyDictionaryOnNullRunSettings() - { - Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(null); - Assert.IsNotNull(trp); - Assert.AreEqual(0, trp.Count); - } + [TestMethod] + public void GetTestRunParametersReturnsEmptyDictionaryOnNullRunSettings() + { + Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(null); + Assert.IsNotNull(trp); + Assert.AreEqual(0, trp.Count); + } - [TestMethod] - public void GetTestRunParametersReturnsEmptyDictionaryWhenNoTestRunParameters() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersReturnsEmptyDictionaryWhenNoTestRunParameters() + { + string settingsXml = + @" .\TestResults @@ -105,16 +106,16 @@ public void GetTestRunParametersReturnsEmptyDictionaryWhenNoTestRunParameters() "; - Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); - Assert.IsNotNull(trp); - Assert.AreEqual(0, trp.Count); - } + Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); + Assert.IsNotNull(trp); + Assert.AreEqual(0, trp.Count); + } - [TestMethod] - public void GetTestRunParametersReturnsEmptyDictionaryForEmptyTestRunParametersNode() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersReturnsEmptyDictionaryForEmptyTestRunParametersNode() + { + string settingsXml = + @" .\TestResults @@ -125,16 +126,16 @@ public void GetTestRunParametersReturnsEmptyDictionaryForEmptyTestRunParametersN "; - Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); - Assert.IsNotNull(trp); - Assert.AreEqual(0, trp.Count); - } + Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); + Assert.IsNotNull(trp); + Assert.AreEqual(0, trp.Count); + } - [TestMethod] - public void GetTestRunParametersReturns1EntryOn1TestRunParameter() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersReturns1EntryOn1TestRunParameter() + { + string settingsXml = + @" .\TestResults @@ -146,20 +147,20 @@ public void GetTestRunParametersReturns1EntryOn1TestRunParameter() "; - Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); - Assert.IsNotNull(trp); - Assert.AreEqual(1, trp.Count); + Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); + Assert.IsNotNull(trp); + Assert.AreEqual(1, trp.Count); - // Verify Parameter Values. - Assert.IsTrue(trp.ContainsKey("webAppUrl")); - Assert.AreEqual("http://localhost", trp["webAppUrl"]); - } + // Verify Parameter Values. + Assert.IsTrue(trp.ContainsKey("webAppUrl")); + Assert.AreEqual("http://localhost", trp["webAppUrl"]); + } - [TestMethod] - public void GetTestRunParametersReturns3EntryOn3TestRunParameter() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersReturns3EntryOn3TestRunParameter() + { + string settingsXml = + @" .\TestResults @@ -173,24 +174,24 @@ public void GetTestRunParametersReturns3EntryOn3TestRunParameter() "; - Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); - Assert.IsNotNull(trp); - Assert.AreEqual(3, trp.Count); - - // Verify Parameter Values. - Assert.IsTrue(trp.ContainsKey("webAppUrl")); - Assert.AreEqual("http://localhost", trp["webAppUrl"]); - Assert.IsTrue(trp.ContainsKey("webAppUserName")); - Assert.AreEqual("Admin", trp["webAppUserName"]); - Assert.IsTrue(trp.ContainsKey("webAppPassword")); - Assert.AreEqual("Password",trp["webAppPassword"]); - } + Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); + Assert.IsNotNull(trp); + Assert.AreEqual(3, trp.Count); + + // Verify Parameter Values. + Assert.IsTrue(trp.ContainsKey("webAppUrl")); + Assert.AreEqual("http://localhost", trp["webAppUrl"]); + Assert.IsTrue(trp.ContainsKey("webAppUserName")); + Assert.AreEqual("Admin", trp["webAppUserName"]); + Assert.IsTrue(trp.ContainsKey("webAppPassword")); + Assert.AreEqual("Password", trp["webAppPassword"]); + } - [TestMethod] - public void GetTestRunParametersThrowsWhenTRPNodeHasAttributes() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersThrowsWhenTrpNodeHasAttributes() + { + string settingsXml = + @" .\TestResults @@ -202,14 +203,14 @@ public void GetTestRunParametersThrowsWhenTRPNodeHasAttributes() "; - Assert.ThrowsException(() => XmlRunSettingsUtilities.GetTestRunParameters(settingsXml)); - } + Assert.ThrowsException(() => XmlRunSettingsUtilities.GetTestRunParameters(settingsXml)); + } - [TestMethod] - public void GetTestRunParametersThrowsWhenTRPNodeHasNonParameterTypeChildNodes() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersThrowsWhenTrpNodeHasNonParameterTypeChildNodes() + { + string settingsXml = + @" .\TestResults @@ -222,14 +223,14 @@ public void GetTestRunParametersThrowsWhenTRPNodeHasNonParameterTypeChildNodes() "; - Assert.ThrowsException(() => XmlRunSettingsUtilities.GetTestRunParameters(settingsXml)); - } + Assert.ThrowsException(() => XmlRunSettingsUtilities.GetTestRunParameters(settingsXml)); + } - [TestMethod] - public void GetTestRunParametersIgnoresMalformedKeyValues() - { - string settingsXml = - @" + [TestMethod] + public void GetTestRunParametersIgnoresMalformedKeyValues() + { + string settingsXml = + @" .\TestResults @@ -241,15 +242,15 @@ public void GetTestRunParametersIgnoresMalformedKeyValues() "; - Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); - Assert.IsNotNull(trp); - Assert.AreEqual(0, trp.Count); - } + Dictionary trp = XmlRunSettingsUtilities.GetTestRunParameters(settingsXml); + Assert.IsNotNull(trp); + Assert.AreEqual(0, trp.Count); + } - [TestMethod] - public void GetInProcDataCollectionRunSettingsFromSettings() - { - string settingsXml= @" + [TestMethod] + public void GetInProcDataCollectionRunSettingsFromSettings() + { + string settingsXml = @" @@ -260,15 +261,15 @@ public void GetInProcDataCollectionRunSettingsFromSettings() "; - var inProcDCRunSettings = XmlRunSettingsUtilities.GetInProcDataCollectionRunSettings(settingsXml); - Assert.IsNotNull(inProcDCRunSettings); - Assert.AreEqual(1, inProcDCRunSettings.DataCollectorSettingsList.Count); - } + var inProcDcRunSettings = XmlRunSettingsUtilities.GetInProcDataCollectionRunSettings(settingsXml); + Assert.IsNotNull(inProcDcRunSettings); + Assert.AreEqual(1, inProcDcRunSettings.DataCollectorSettingsList.Count); + } - [TestMethod] - public void GetInProcDataCollectionRunSettingsThrowsExceptionWhenXMLNotValid() - { - string settingsXml = @" + [TestMethod] + public void GetInProcDataCollectionRunSettingsThrowsExceptionWhenXmlNotValid() + { + string settingsXml = @" @@ -280,100 +281,100 @@ public void GetInProcDataCollectionRunSettingsThrowsExceptionWhenXMLNotValid() "; - Assert.ThrowsException( - () => XmlRunSettingsUtilities.GetInProcDataCollectionRunSettings(settingsXml)); - } - #endregion + Assert.ThrowsException( + () => XmlRunSettingsUtilities.GetInProcDataCollectionRunSettings(settingsXml)); + } + #endregion - #region CreateDefaultRunSettings tests + #region CreateDefaultRunSettings tests - [TestMethod] - public void CreateDefaultRunSettingsShouldReturnABasicRunSettings() - { - var defaultRunSettings = XmlRunSettingsUtilities.CreateDefaultRunSettings().CreateNavigator().OuterXml; - var expectedRunSettings = string.Join(Environment.NewLine, - "", - " ", - " ", - " ", - "" - ); - - Assert.AreEqual(expectedRunSettings, defaultRunSettings); - } + [TestMethod] + public void CreateDefaultRunSettingsShouldReturnABasicRunSettings() + { + var defaultRunSettings = XmlRunSettingsUtilities.CreateDefaultRunSettings().CreateNavigator()!.OuterXml; + var expectedRunSettings = string.Join(Environment.NewLine, + "", + " ", + " ", + " ", + "" + ); + + Assert.AreEqual(expectedRunSettings, defaultRunSettings); + } - #endregion + #endregion - #region IsDataCollectionEnabled tests + #region IsDataCollectionEnabled tests - [TestMethod] - public void IsDataCollectionEnabledShouldReturnFalseIfRunSettingsIsNull() - { - Assert.IsFalse(XmlRunSettingsUtilities.IsDataCollectionEnabled(null)); - } + [TestMethod] + public void IsDataCollectionEnabledShouldReturnFalseIfRunSettingsIsNull() + { + Assert.IsFalse(XmlRunSettingsUtilities.IsDataCollectionEnabled(null)); + } - [TestMethod] - public void IsDataCollectionEnabledShouldReturnFalseIfDataCollectionNodeIsNotPresent() - { - Assert.IsFalse(XmlRunSettingsUtilities.IsDataCollectionEnabled(EmptyRunSettings)); - } + [TestMethod] + public void IsDataCollectionEnabledShouldReturnFalseIfDataCollectionNodeIsNotPresent() + { + Assert.IsFalse(XmlRunSettingsUtilities.IsDataCollectionEnabled(_emptyRunSettings)); + } - [TestMethod] - public void IsDataCollectionEnabledShouldReturnFalseIfDataCollectionIsDisabled() - { - Assert.IsFalse(XmlRunSettingsUtilities.IsDataCollectionEnabled(this.runSettingsXmlWithDataCollectorsDisabled)); - } + [TestMethod] + public void IsDataCollectionEnabledShouldReturnFalseIfDataCollectionIsDisabled() + { + Assert.IsFalse(XmlRunSettingsUtilities.IsDataCollectionEnabled(_runSettingsXmlWithDataCollectorsDisabled)); + } - [TestMethod] - public void IsDataCollectionEnabledShouldReturnTrueIfDataCollectionIsEnabled() - { - Assert.IsTrue(XmlRunSettingsUtilities.IsDataCollectionEnabled(this.runSettingsXmlWithDataCollectors)); - } + [TestMethod] + public void IsDataCollectionEnabledShouldReturnTrueIfDataCollectionIsEnabled() + { + Assert.IsTrue(XmlRunSettingsUtilities.IsDataCollectionEnabled(_runSettingsXmlWithDataCollectors)); + } - #endregion + #endregion - #region IsInProcDataCollectionEnabled tests. + #region IsInProcDataCollectionEnabled tests. - [TestMethod] - public void IsInProcDataCollectionEnabledShouldReturnFalseIfRunSettingsIsNull() - { - Assert.IsFalse(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(null)); - } + [TestMethod] + public void IsInProcDataCollectionEnabledShouldReturnFalseIfRunSettingsIsNull() + { + Assert.IsFalse(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(null)); + } - [TestMethod] - public void IsInProcDataCollectionEnabledShouldReturnFalseIfDataCollectionNodeIsNotPresent() - { - Assert.IsFalse(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(EmptyRunSettings)); - } + [TestMethod] + public void IsInProcDataCollectionEnabledShouldReturnFalseIfDataCollectionNodeIsNotPresent() + { + Assert.IsFalse(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(_emptyRunSettings)); + } - [TestMethod] - public void IsInProcDataCollectionEnabledShouldReturnFalseIfDataCollectionIsDisabled() - { - Assert.IsFalse(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(this.ConvertOutOfProcDataCollectionSettingsToInProcDataCollectionSettings(this.runSettingsXmlWithDataCollectorsDisabled))); - } + [TestMethod] + public void IsInProcDataCollectionEnabledShouldReturnFalseIfDataCollectionIsDisabled() + { + Assert.IsFalse(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(ConvertOutOfProcDataCollectionSettingsToInProcDataCollectionSettings(_runSettingsXmlWithDataCollectorsDisabled))); + } - [TestMethod] - public void IsInProcDataCollectionEnabledShouldReturnTrueIfDataCollectionIsEnabled() - { - Assert.IsTrue(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(this.ConvertOutOfProcDataCollectionSettingsToInProcDataCollectionSettings(this.runSettingsXmlWithDataCollectors))); - } + [TestMethod] + public void IsInProcDataCollectionEnabledShouldReturnTrueIfDataCollectionIsEnabled() + { + Assert.IsTrue(XmlRunSettingsUtilities.IsInProcDataCollectionEnabled(ConvertOutOfProcDataCollectionSettingsToInProcDataCollectionSettings(_runSettingsXmlWithDataCollectors))); + } - #endregion + #endregion - #region GetLoggerRunsettings tests + #region GetLoggerRunsettings tests - [TestMethod] - public void GetLoggerRunSettingsShouldReturnNullWhenSettingsIsnull() - { - Assert.IsNull(XmlRunSettingsUtilities.GetLoggerRunSettings(null)); - } + [TestMethod] + public void GetLoggerRunSettingsShouldReturnNullWhenSettingsIsnull() + { + Assert.IsNull(XmlRunSettingsUtilities.GetLoggerRunSettings(null)); + } - [TestMethod] - public void GetLoggerRunSettingShouldReturnNullWhenNoLoggersPresent() - { - string runSettingsXmlWithNoLoggers = - @" + [TestMethod] + public void GetLoggerRunSettingShouldReturnNullWhenNoLoggersPresent() + { + string runSettingsXmlWithNoLoggers = + @" @@ -394,14 +395,14 @@ public void GetLoggerRunSettingShouldReturnNullWhenNoLoggersPresent() "; - Assert.IsNull(XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsXmlWithNoLoggers)); - } + Assert.IsNull(XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsXmlWithNoLoggers)); + } - [TestMethod] - public void GetLoggerRunSettingsShouldNotReturnNullWhenLoggersPresent() - { - string runSettingsWithLoggerHavingFriendlyName = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldNotReturnNullWhenLoggersPresent() + { + string runSettingsWithLoggerHavingFriendlyName = + @" @@ -412,14 +413,14 @@ public void GetLoggerRunSettingsShouldNotReturnNullWhenLoggersPresent() "; - Assert.IsNotNull(XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingFriendlyName)); - } + Assert.IsNotNull(XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingFriendlyName)); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectFriendlyName() - { - string runSettingsWithLoggerHavingFriendlyName = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectFriendlyName() + { + string runSettingsWithLoggerHavingFriendlyName = + @" @@ -430,15 +431,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectFriendlyName() "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingFriendlyName); - Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList.First().FriendlyName); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingFriendlyName)!; + Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList.First().FriendlyName); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectUri() - { - string runSettingsWithLoggerHavingUri = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectUri() + { + string runSettingsWithLoggerHavingUri = + @" @@ -449,15 +450,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectUri() "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingUri); - Assert.IsTrue(new Uri("testlogger://logger").Equals(loggerRunSettings.LoggerSettingsList.First().Uri)); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingUri)!; + Assert.IsTrue(new Uri("testlogger://logger").Equals(loggerRunSettings.LoggerSettingsList.First().Uri)); + } - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenInvalidUri() - { - string runSettingsWithInvalidUri = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenInvalidUri() + { + string runSettingsWithInvalidUri = + @" @@ -468,29 +469,30 @@ public void GetLoggerRunSettingsShouldThrowWhenInvalidUri() "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithInvalidUri); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.IsTrue(exceptionMessage.Contains( - string.Format( - Resources.InvalidUriInSettings, - "invalidUri", - "Logger"))); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectAssemblyQualifiedName() + try { - string runSettingsWithLoggerHavingAssemblyQualifiedName = - @" + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithInvalidUri); + } + catch (SettingsException ex) + { + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains( + string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidUriInSettings, + "invalidUri", + "Logger"))); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectAssemblyQualifiedName() + { + string runSettingsWithLoggerHavingAssemblyQualifiedName = + @" @@ -501,15 +503,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectAssemblyQualifiedNa "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingAssemblyQualifiedName); - Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerRunSettings.LoggerSettingsList.First().AssemblyQualifiedName); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingAssemblyQualifiedName)!; + Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerRunSettings.LoggerSettingsList.First().AssemblyQualifiedName); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectCodeBase() - { - string runSettingsWithLoggerHavingAssemblyQualifiedName = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectCodeBase() + { + string runSettingsWithLoggerHavingAssemblyQualifiedName = + @" @@ -520,15 +522,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectCodeBase() "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingAssemblyQualifiedName); - Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerRunSettings.LoggerSettingsList.First().CodeBase); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingAssemblyQualifiedName)!; + Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerRunSettings.LoggerSettingsList.First().CodeBase); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectEnabledAttributeValue() - { - string runSettingsWithLoggerHavingEnabledAttribute = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectEnabledAttributeValue() + { + string runSettingsWithLoggerHavingEnabledAttribute = + @" @@ -539,15 +541,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectEnabledAttributeVal "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingEnabledAttribute); - Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingEnabledAttribute)!; + Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithEnabledFalseIfInvalidEnabledValue() - { - string runSettingsWithLoggerHavingInvalidEnabledValue = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithEnabledFalseIfInvalidEnabledValue() + { + string runSettingsWithLoggerHavingInvalidEnabledValue = + @" @@ -558,15 +560,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithEnabledFalseIfInvalidEnabl "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingInvalidEnabledValue); - Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingInvalidEnabledValue)!; + Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerAsEnabledWhenEnabledAttributeNotPresent() - { - string runSettingsWithLoggerHavingEnabledAttribute = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerAsEnabledWhenEnabledAttributeNotPresent() + { + string runSettingsWithLoggerHavingEnabledAttribute = + @" @@ -577,15 +579,15 @@ public void GetLoggerRunSettingsShouldReturnLoggerAsEnabledWhenEnabledAttributeN "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingEnabledAttribute); - Assert.IsTrue(loggerRunSettings.LoggerSettingsList.First().IsEnabled); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingEnabledAttribute)!; + Assert.IsTrue(loggerRunSettings.LoggerSettingsList.First().IsEnabled); + } - [TestMethod] - public void GetLoggerRunSettingsShouldThrowIfDuplicateAttributesPresent() - { - string runSettingsWithLoggerHavingDuplicateAttributes = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldThrowIfDuplicateAttributesPresent() + { + string runSettingsWithLoggerHavingDuplicateAttributes = + @" @@ -596,25 +598,25 @@ public void GetLoggerRunSettingsShouldThrowIfDuplicateAttributesPresent() "; - var exceptionMessage = string.Empty; + var exceptionMessage = string.Empty; - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingDuplicateAttributes); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.IsTrue(exceptionMessage.Contains(CommonResources.MalformedRunSettingsFile)); + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingDuplicateAttributes); } - - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectValuesWhenMultipleAttributesPresent() + catch (SettingsException ex) { - string runSettingsWithLoggerHavingMultipleAttributes = - @" + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(CommonResources.MalformedRunSettingsFile)); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectValuesWhenMultipleAttributesPresent() + { + string runSettingsWithLoggerHavingMultipleAttributes = + @" @@ -625,19 +627,19 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectValuesWhenMultipleA "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingMultipleAttributes); - Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList.First().FriendlyName); - Assert.IsTrue(new Uri("testlogger://logger").Equals(loggerRunSettings.LoggerSettingsList.First().Uri)); - Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerRunSettings.LoggerSettingsList.First().AssemblyQualifiedName); - Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerRunSettings.LoggerSettingsList.First().CodeBase); - Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingMultipleAttributes)!; + Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList.First().FriendlyName); + Assert.IsTrue(new Uri("testlogger://logger").Equals(loggerRunSettings.LoggerSettingsList.First().Uri)); + Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerRunSettings.LoggerSettingsList.First().AssemblyQualifiedName); + Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerRunSettings.LoggerSettingsList.First().CodeBase); + Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectValuesWhenCaseSensitivityNotMaintained() - { - string runSettingsWithLoggerHavingAttributesWithRandomCasing = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectValuesWhenCaseSensitivityNotMaintained() + { + string runSettingsWithLoggerHavingAttributesWithRandomCasing = + @" @@ -648,19 +650,19 @@ public void GetLoggerRunSettingsShouldReturnLoggerWithCorrectValuesWhenCaseSensi "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingAttributesWithRandomCasing); - Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList.First().FriendlyName); - Assert.IsTrue(new Uri("testlogger://logger").Equals(loggerRunSettings.LoggerSettingsList.First().Uri)); - Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerRunSettings.LoggerSettingsList.First().AssemblyQualifiedName); - Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerRunSettings.LoggerSettingsList.First().CodeBase); - Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithLoggerHavingAttributesWithRandomCasing)!; + Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList.First().FriendlyName); + Assert.IsTrue(new Uri("testlogger://logger").Equals(loggerRunSettings.LoggerSettingsList.First().Uri)); + Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerRunSettings.LoggerSettingsList.First().AssemblyQualifiedName); + Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerRunSettings.LoggerSettingsList.First().CodeBase); + Assert.IsFalse(loggerRunSettings.LoggerSettingsList.First().IsEnabled); + } - [TestMethod] - public void GetLoggerRunSettingsShouldThrowShouldThrowOnMalformedLoggerSettings() - { - string runSettingsXmlWithMalformedLoggerSettings = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldThrowShouldThrowOnMalformedLoggerSettings() + { + string runSettingsXmlWithMalformedLoggerSettings = + @" @@ -671,25 +673,25 @@ public void GetLoggerRunSettingsShouldThrowShouldThrowOnMalformedLoggerSettings( "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsXmlWithMalformedLoggerSettings); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } + var exceptionMessage = string.Empty; - Assert.IsTrue(exceptionMessage.Contains(CommonResources.MalformedRunSettingsFile)); + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsXmlWithMalformedLoggerSettings); } - - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenAttribtuesPresentInLoggerRunSettingsNode() + catch (SettingsException ex) { - string runSettingsWithAttributesPresentInLoggerRunSettingsNode = - @" + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(CommonResources.MalformedRunSettingsFile)); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenAttribtuesPresentInLoggerRunSettingsNode() + { + string runSettingsWithAttributesPresentInLoggerRunSettingsNode = + @" @@ -700,28 +702,29 @@ public void GetLoggerRunSettingsShouldThrowWhenAttribtuesPresentInLoggerRunSetti "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithAttributesPresentInLoggerRunSettingsNode); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.IsTrue(exceptionMessage.Contains(string.Format( - Resources.InvalidSettingsXmlAttribute, - "LoggerRunSettings", - "name"))); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldReturnEmptyLoggerRunSettingsWhenLoggerRunSettingsNodeIsEmpty() + try { - string runSettingsWithEmptyLoggerRunSettingsNode = - @" + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithAttributesPresentInLoggerRunSettingsNode); + } + catch (SettingsException ex) + { + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidSettingsXmlAttribute, + "LoggerRunSettings", + "name"))); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldReturnEmptyLoggerRunSettingsWhenLoggerRunSettingsNodeIsEmpty() + { + string runSettingsWithEmptyLoggerRunSettingsNode = + @" @@ -729,30 +732,30 @@ public void GetLoggerRunSettingsShouldReturnEmptyLoggerRunSettingsWhenLoggerRunS "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggerRunSettingsNode); - Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggerRunSettingsNode)!; + Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnEmptyLoggerRunSettingsWhenLoggerRunSettingsNodeIsSelfEnding() - { - string runSettingsWithEmptyLoggerRunSettingsNode = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnEmptyLoggerRunSettingsWhenLoggerRunSettingsNodeIsSelfEnding() + { + string runSettingsWithEmptyLoggerRunSettingsNode = + @" "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggerRunSettingsNode); - Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggerRunSettingsNode)!; + Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); + } - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanLoggersPresentInLoggerRunSettings() - { - string runSettingsWithNodeOtherLoggers = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanLoggersPresentInLoggerRunSettings() + { + string runSettingsWithNodeOtherLoggers = + @" @@ -763,28 +766,29 @@ public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanLoggersPresentInLogg "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithNodeOtherLoggers); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.IsTrue(exceptionMessage.Contains(string.Format( - Resources.InvalidSettingsXmlElement, - "LoggerRUNSettings", - "LoggersInvalid"))); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenAttribtuesPresentInLoggersNode() + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithNodeOtherLoggers); + } + catch (SettingsException ex) { - string runSettingsWithAttributesPresentInLoggersNode = - @" + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidSettingsXmlElement, + "LoggerRUNSettings", + "LoggersInvalid"))); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenAttribtuesPresentInLoggersNode() + { + string runSettingsWithAttributesPresentInLoggersNode = + @" @@ -795,28 +799,29 @@ public void GetLoggerRunSettingsShouldThrowWhenAttribtuesPresentInLoggersNode() "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithAttributesPresentInLoggersNode); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.IsTrue(exceptionMessage.Contains(string.Format( - Resources.InvalidSettingsXmlAttribute, - "Loggers", - "nameAttr"))); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldReturnEmptyLoggersWhenLoggersIsEmpty() + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithAttributesPresentInLoggersNode); + } + catch (SettingsException ex) { - string runSettingsWithEmptyLoggersNode = - @" + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidSettingsXmlAttribute, + "Loggers", + "nameAttr"))); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldReturnEmptyLoggersWhenLoggersIsEmpty() + { + string runSettingsWithEmptyLoggersNode = + @" @@ -826,15 +831,15 @@ public void GetLoggerRunSettingsShouldReturnEmptyLoggersWhenLoggersIsEmpty() "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggersNode); - Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggersNode)!; + Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnEmptyLoggersWhenLoggersIsSelfEnding() - { - string runSettingsWithEmptyLoggersNode = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnEmptyLoggersWhenLoggersIsSelfEnding() + { + string runSettingsWithEmptyLoggersNode = + @" @@ -843,15 +848,15 @@ public void GetLoggerRunSettingsShouldReturnEmptyLoggersWhenLoggersIsSelfEnding( "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggersNode); - Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); - } + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithEmptyLoggersNode)!; + Assert.AreEqual(0, loggerRunSettings.LoggerSettingsList.Count); + } - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanLoggerPresentInLoggers() - { - string runSettingsWithNodeOtherLoggers = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanLoggerPresentInLoggers() + { + string runSettingsWithNodeOtherLoggers = + @" @@ -862,29 +867,30 @@ public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanLoggerPresentInLogge "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithNodeOtherLoggers); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.IsTrue(exceptionMessage.Contains(string.Format( - Resources.InvalidSettingsXmlElement, - "Loggers", - "LoggerInvalid"))); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenRequiredAttributesNotPresentInLoggerNode() + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithNodeOtherLoggers); + } + catch (SettingsException ex) { - // One among friendlyName, uri and assemblyQualifiedName should be present. - string runSettingsWithNoneOfRequiredAttributes = - @" + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidSettingsXmlElement, + "Loggers", + "LoggerInvalid"))); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenRequiredAttributesNotPresentInLoggerNode() + { + // One among friendlyName, uri and assemblyQualifiedName should be present. + string runSettingsWithNoneOfRequiredAttributes = + @" @@ -895,27 +901,25 @@ public void GetLoggerRunSettingsShouldThrowWhenRequiredAttributesNotPresentInLog "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithNoneOfRequiredAttributes); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } + var exceptionMessage = string.Empty; - Assert.IsTrue(exceptionMessage.Contains(string.Format( - Resources.MissingLoggerAttributes, - "LogGer"))); + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithNoneOfRequiredAttributes); } - - [TestMethod] - public void GetLoggerRunSettingsShouldReturnConfigurationElementIfPresentInLoggerNode() + catch (SettingsException ex) { - string runSettingsWithConfigurationElementInLoggerNode = - @" + exceptionMessage = ex.Message; + } + + Assert.IsTrue(exceptionMessage.Contains(string.Format(CultureInfo.CurrentCulture, Resources.MissingLoggerAttributes, "LogGer"))); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldReturnConfigurationElementIfPresentInLoggerNode() + { + string runSettingsWithConfigurationElementInLoggerNode = + @" @@ -931,21 +935,21 @@ public void GetLoggerRunSettingsShouldReturnConfigurationElementIfPresentInLogge "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithConfigurationElementInLoggerNode); + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithConfigurationElementInLoggerNode)!; - var expectedConfigurationElement = new XmlDocument().CreateElement("ConfiGUration"); - expectedConfigurationElement.InnerXml = "Value1Value2"; - Assert.AreEqual(expectedConfigurationElement.Name, - loggerRunSettings.LoggerSettingsList.First().Configuration.Name); - Assert.AreEqual(expectedConfigurationElement.InnerXml, - loggerRunSettings.LoggerSettingsList.First().Configuration.InnerXml); - } + var expectedConfigurationElement = new XmlDocument().CreateElement("ConfiGUration"); + expectedConfigurationElement.InnerXml = "Value1Value2"; + Assert.AreEqual(expectedConfigurationElement.Name, + loggerRunSettings.LoggerSettingsList.First().Configuration!.Name); + Assert.AreEqual(expectedConfigurationElement.InnerXml, + loggerRunSettings.LoggerSettingsList.First().Configuration!.InnerXml); + } - [TestMethod] - public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanConfigurationPresentInLogger() - { - string runSettingsWithInvalidConfigurationElement = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanConfigurationPresentInLogger() + { + string runSettingsWithInvalidConfigurationElement = + @" @@ -961,28 +965,29 @@ public void GetLoggerRunSettingsShouldThrowWhenNodeOtherThanConfigurationPresent "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithInvalidConfigurationElement); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.AreEqual(string.Format( - Resources.InvalidSettingsXmlElement, - "Logger", - "ConfiGUrationInvalid"), exceptionMessage); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldThrowOnInvalidAttributeInLoggerNode() + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithInvalidConfigurationElement); + } + catch (SettingsException ex) { - string runSettingsWithInvalidAttributeInLoggerNode = - @" + exceptionMessage = ex.Message; + } + + Assert.AreEqual(string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidSettingsXmlElement, + "Logger", + "ConfiGUrationInvalid"), exceptionMessage); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldThrowOnInvalidAttributeInLoggerNode() + { + string runSettingsWithInvalidAttributeInLoggerNode = + @" @@ -998,28 +1003,29 @@ public void GetLoggerRunSettingsShouldThrowOnInvalidAttributeInLoggerNode() "; - var exceptionMessage = string.Empty; - - try - { - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithInvalidAttributeInLoggerNode); - } - catch (SettingsException ex) - { - exceptionMessage = ex.Message; - } - - Assert.AreEqual(string.Format( - Resources.InvalidSettingsXmlAttribute, - "Logger", - "invalidAttr"), exceptionMessage); - } + var exceptionMessage = string.Empty; - [TestMethod] - public void GetLoggerRunSettingsShouldReturnMultipleLoggersIfPresent() + try + { + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithInvalidAttributeInLoggerNode); + } + catch (SettingsException ex) { - string runSettingsWithMultipleLoggers = - @" + exceptionMessage = ex.Message; + } + + Assert.AreEqual(string.Format( + CultureInfo.CurrentCulture, + Resources.InvalidSettingsXmlAttribute, + "Logger", + "invalidAttr"), exceptionMessage); + } + + [TestMethod] + public void GetLoggerRunSettingsShouldReturnMultipleLoggersIfPresent() + { + string runSettingsWithMultipleLoggers = + @" @@ -1042,44 +1048,44 @@ public void GetLoggerRunSettingsShouldReturnMultipleLoggersIfPresent() "; - var loggerRunSettings = - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithMultipleLoggers); - - Assert.AreEqual(3, loggerRunSettings.LoggerSettingsList.Count); - - // 1st logger - var loggerFirst = loggerRunSettings.LoggerSettingsList[0]; - Assert.AreEqual("TestLoggerWithParameterExtension", loggerFirst.FriendlyName); - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerFirst.Uri?.ToString())); - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerFirst.AssemblyQualifiedName)); - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerFirst.CodeBase)); - Assert.IsTrue(loggerFirst.IsEnabled); - Assert.AreEqual("Value1Value2", loggerFirst.Configuration.InnerXml); - - // 2nd logger - var loggerSecond = loggerRunSettings.LoggerSettingsList[1]; - Assert.AreEqual("TestLogger", loggerSecond.FriendlyName); - Assert.AreEqual(new Uri("testlogger://logger").ToString(), loggerSecond.Uri.ToString()); - Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerSecond.AssemblyQualifiedName); - Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerSecond.CodeBase); - Assert.IsFalse(loggerSecond.IsEnabled); - Assert.IsNull(loggerSecond.Configuration); - - // 3rd logger - var loggerThird = loggerRunSettings.LoggerSettingsList[2]; - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerThird.FriendlyName)); - Assert.AreEqual(new Uri("testlogger://loggerTemp").ToString(), loggerThird.Uri.ToString()); - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerThird.AssemblyQualifiedName)); - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerThird.CodeBase)); - Assert.IsTrue(loggerThird.IsEnabled); - Assert.AreEqual("Value3Value4", loggerThird.Configuration.InnerXml); - } + var loggerRunSettings = + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithMultipleLoggers)!; + + Assert.AreEqual(3, loggerRunSettings.LoggerSettingsList.Count); + + // 1st logger + var loggerFirst = loggerRunSettings.LoggerSettingsList[0]; + Assert.AreEqual("TestLoggerWithParameterExtension", loggerFirst.FriendlyName); + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerFirst.Uri?.ToString())); + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerFirst.AssemblyQualifiedName)); + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerFirst.CodeBase)); + Assert.IsTrue(loggerFirst.IsEnabled); + Assert.AreEqual("Value1Value2", loggerFirst.Configuration!.InnerXml); + + // 2nd logger + var loggerSecond = loggerRunSettings.LoggerSettingsList[1]; + Assert.AreEqual("TestLogger", loggerSecond.FriendlyName); + Assert.AreEqual(new Uri("testlogger://logger").ToString(), loggerSecond.Uri!.ToString()); + Assert.AreEqual("Sample.Sample.Sample.SampleLogger, Sample.Sample.Logger, Version=0.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx", loggerSecond.AssemblyQualifiedName); + Assert.AreEqual(@"C:\Sample\Sample.TestLogger.dll", loggerSecond.CodeBase); + Assert.IsFalse(loggerSecond.IsEnabled); + Assert.IsNull(loggerSecond.Configuration); + + // 3rd logger + var loggerThird = loggerRunSettings.LoggerSettingsList[2]; + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerThird.FriendlyName)); + Assert.AreEqual(new Uri("testlogger://loggerTemp").ToString(), loggerThird.Uri!.ToString()); + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerThird.AssemblyQualifiedName)); + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerThird.CodeBase)); + Assert.IsTrue(loggerThird.IsEnabled); + Assert.AreEqual("Value3Value4", loggerThird.Configuration!.InnerXml); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLoggersWhenLoggerHasSelfEndingTag() - { - string runSettingsWithSelfEndingLoggers = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLoggersWhenLoggerHasSelfEndingTag() + { + string runSettingsWithSelfEndingLoggers = + @" @@ -1093,21 +1099,21 @@ public void GetLoggerRunSettingsShouldReturnLoggersWhenLoggerHasSelfEndingTag() "; - var loggerRunSettings = - XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithSelfEndingLoggers); + var loggerRunSettings = + XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithSelfEndingLoggers)!; - Assert.AreEqual(3, loggerRunSettings.LoggerSettingsList.Count); - Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList[0].FriendlyName); - Assert.AreEqual("TestLogger", loggerRunSettings.LoggerSettingsList[1].FriendlyName); - Assert.AreEqual("TestLogger", loggerRunSettings.LoggerSettingsList[1].FriendlyName); - Assert.IsTrue(string.IsNullOrWhiteSpace(loggerRunSettings.LoggerSettingsList[2].FriendlyName)); - } + Assert.AreEqual(3, loggerRunSettings.LoggerSettingsList.Count); + Assert.AreEqual("TestLoggerWithParameterExtension", loggerRunSettings.LoggerSettingsList[0].FriendlyName); + Assert.AreEqual("TestLogger", loggerRunSettings.LoggerSettingsList[1].FriendlyName); + Assert.AreEqual("TestLogger", loggerRunSettings.LoggerSettingsList[1].FriendlyName); + Assert.IsTrue(string.IsNullOrWhiteSpace(loggerRunSettings.LoggerSettingsList[2].FriendlyName)); + } - [TestMethod] - public void GetLoggerRunSettingsShouldReturnLastConfigurationElementIfMultiplePresent() - { - string runSettingsWithMultipleConfigurationElements = - @" + [TestMethod] + public void GetLoggerRunSettingsShouldReturnLastConfigurationElementIfMultiplePresent() + { + string runSettingsWithMultipleConfigurationElements = + @" @@ -1127,56 +1133,56 @@ public void GetLoggerRunSettingsShouldReturnLastConfigurationElementIfMultiplePr "; - var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithMultipleConfigurationElements); + var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(runSettingsWithMultipleConfigurationElements)!; - var expectedConfigurationElement = new XmlDocument().CreateElement("ConfiGUration"); - expectedConfigurationElement.InnerXml = "Value3Value4"; - Assert.AreEqual(expectedConfigurationElement.Name, - loggerRunSettings.LoggerSettingsList.First().Configuration.Name); - Assert.AreEqual(expectedConfigurationElement.InnerXml, - loggerRunSettings.LoggerSettingsList.First().Configuration.InnerXml); - } + var expectedConfigurationElement = new XmlDocument().CreateElement("ConfiGUration"); + expectedConfigurationElement.InnerXml = "Value3Value4"; + Assert.AreEqual(expectedConfigurationElement.Name, + loggerRunSettings.LoggerSettingsList.First().Configuration!.Name); + Assert.AreEqual(expectedConfigurationElement.InnerXml, + loggerRunSettings.LoggerSettingsList.First().Configuration!.InnerXml); + } - #endregion + #endregion - #region GetDataCollectionRunSettings tests + #region GetDataCollectionRunSettings tests - [TestMethod] - public void GetDataCollectionRunSettingsShouldReturnNullIfSettingsIsNull() - { - Assert.IsNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(null)); - } + [TestMethod] + public void GetDataCollectionRunSettingsShouldReturnNullIfSettingsIsNull() + { + Assert.IsNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(null)); + } - [TestMethod] - public void GetDataCollectionRunSettingsShouldReturnNullOnNoDataCollectorSettings() - { - Assert.IsNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(EmptyRunSettings)); - } + [TestMethod] + public void GetDataCollectionRunSettingsShouldReturnNullOnNoDataCollectorSettings() + { + Assert.IsNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(_emptyRunSettings)); + } - [TestMethod] - public void GetDataCollectionRunSettingsShouldReturnDataCollectorRunSettings() - { - Assert.IsNotNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(this.runSettingsXmlWithDataCollectors)); - } + [TestMethod] + public void GetDataCollectionRunSettingsShouldReturnDataCollectorRunSettings() + { + Assert.IsNotNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(_runSettingsXmlWithDataCollectors)); + } - [TestMethod] - public void GetDataCollectionRunSettingsShouldReturnDataCollectorRunSettingsEvenIfDisabled() - { - Assert.IsNotNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(this.runSettingsXmlWithDataCollectorsDisabled)); - } + [TestMethod] + public void GetDataCollectionRunSettingsShouldReturnDataCollectorRunSettingsEvenIfDisabled() + { + Assert.IsNotNull(XmlRunSettingsUtilities.GetDataCollectionRunSettings(_runSettingsXmlWithDataCollectorsDisabled)); + } - [TestMethod] - public void GetDataCollectionRunSettingsShouldThrowOnMalformedDataCollectorSettings() - { - Assert.ThrowsException(() => XmlRunSettingsUtilities.GetDataCollectionRunSettings(this.runSettingsXmlWithIncorrectDataCollectorSettings)); - } + [TestMethod] + public void GetDataCollectionRunSettingsShouldThrowOnMalformedDataCollectorSettings() + { + Assert.ThrowsException(() => XmlRunSettingsUtilities.GetDataCollectionRunSettings(_runSettingsXmlWithIncorrectDataCollectorSettings)); + } - #endregion + #endregion - [TestMethod] - public void GetDataCollectorsFriendlyNameShouldReturnListOfFriendlyName() - { - var settingsXml = @" + [TestMethod] + public void GetDataCollectorsFriendlyNameShouldReturnListOfFriendlyName() + { + var settingsXml = @" @@ -1187,20 +1193,19 @@ public void GetDataCollectorsFriendlyNameShouldReturnListOfFriendlyName() "; - var friendlyNameList = XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(settingsXml).ToList(); + var friendlyNameList = XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(settingsXml).ToList(); - Assert.AreEqual(2, friendlyNameList.Count, "There should be two friendly name"); - CollectionAssert.AreEqual(friendlyNameList, new List { "DummyDataCollector1", "DummyDataCollector2" }); - } + Assert.AreEqual(2, friendlyNameList.Count, "There should be two friendly name"); + CollectionAssert.AreEqual(friendlyNameList, new List { "DummyDataCollector1", "DummyDataCollector2" }); + } - private string ConvertOutOfProcDataCollectionSettingsToInProcDataCollectionSettings(string settings) - { - return - settings.Replace("DataCollectionRunSettings", "InProcDataCollectionRunSettings") - .Replace("", "") - .Replace("", "") - .Replace("", ""); - } + private static string ConvertOutOfProcDataCollectionSettingsToInProcDataCollectionSettings(string settings) + { + return + settings.Replace("DataCollectionRunSettings", "InProcDataCollectionRunSettings") + .Replace("", "") + .Replace("", "") + .Replace("", ""); } } diff --git a/test/Microsoft.TestPlatform.PerformanceTests/Microsoft.TestPlatform.PerformanceTests.csproj b/test/Microsoft.TestPlatform.PerformanceTests/Microsoft.TestPlatform.PerformanceTests.csproj deleted file mode 100644 index ce245f448d..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/Microsoft.TestPlatform.PerformanceTests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - ..\..\ - true - true - - - - Exe - netcoreapp2.1;net451 - Microsoft.TestPlatform.PerformanceTests - - - - 2.5.0 - - - - - - - - - - - - diff --git a/test/Microsoft.TestPlatform.PerformanceTests/PerformanceTests.cs b/test/Microsoft.TestPlatform.PerformanceTests/PerformanceTests.cs deleted file mode 100644 index f82848e218..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/PerformanceTests.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests -{ - using Microsoft.TestPlatform.TestUtilities.PerfInstrumentation; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - /// - /// The performance tests. - /// - [TestClass] - public class PerformanceTests : PerformanceTestBase - { - [TestMethod] - public void ExecutionPerformanceTest() - { - this.RunExecutionPerformanceTests(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty); - - this.ValidateSummaryStatus(1, 1, 1); - this.ValidatePassedTests("SampleUnitTestProject.UnitTest1.PassingTest"); - this.ValidateFailedTests("SampleUnitTestProject.UnitTest1.FailingTest"); - this.ValidateSkippedTests("SampleUnitTestProject.UnitTest1.SkippingTest"); - - this.AnalyzePerfData(); - var actualExecutionTime = this.GetExecutionTime(); - - // Sample Assert statement to verify the performance. 500 will be replaced by the actual threshold value. - Assert.IsTrue(actualExecutionTime < 500); - } - - [TestMethod] - public void DiscoveryPerformanceTest() - { - this.RunDiscoveryPerformanceTests(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty); - - this.ValidateDiscoveredTests( - "SampleUnitTestProject.UnitTest1.PassingTest", - "SampleUnitTestProject.UnitTest1.FailingTest", - "SampleUnitTestProject.UnitTest1.SkippingTest"); - - this.AnalyzePerfData(); - var actualDiscoveryTime = this.GetDiscoveryTime(); - - // Sample Assert statement to verify the performance. 500 will be replaced by the actual threshold value. - Assert.IsTrue(actualDiscoveryTime < 500); - } - - [TestMethod] - public void VsTestConsolePerformanceTest() - { - this.RunExecutionPerformanceTests(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty); - - this.ValidateSummaryStatus(1, 1, 1); - this.ValidatePassedTests("SampleUnitTestProject.UnitTest1.PassingTest"); - this.ValidateFailedTests("SampleUnitTestProject.UnitTest1.FailingTest"); - this.ValidateSkippedTests("SampleUnitTestProject.UnitTest1.SkippingTest"); - - this.AnalyzePerfData(); - var actualVsTestTime = this.GetVsTestTime(); - - // Sample Assert statement to verify the performance. 1500 will be replaced by the actual threshold value. - Assert.IsTrue(actualVsTestTime < 1500); - } - - [TestMethod] - public void TestHostPerformanceTest() - { - this.RunExecutionPerformanceTests(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty); - - this.ValidateSummaryStatus(1, 1, 1); - this.ValidatePassedTests("SampleUnitTestProject.UnitTest1.PassingTest"); - this.ValidateFailedTests("SampleUnitTestProject.UnitTest1.FailingTest"); - this.ValidateSkippedTests("SampleUnitTestProject.UnitTest1.SkippingTest"); - - this.AnalyzePerfData(); - var actualTestHostTime = this.GetTestHostTime(); - - // Sample Assert statement to verify the performance. 1000 will be replaced by the actual threshold value. - Assert.IsTrue(actualTestHostTime < 1000); - } - - [TestMethod] - public void MsTestV2AdapterPerformanceTest() - { - this.RunExecutionPerformanceTests(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty); - - this.ValidateSummaryStatus(1, 1, 1); - this.ValidatePassedTests("SampleUnitTestProject.UnitTest1.PassingTest"); - this.ValidateFailedTests("SampleUnitTestProject.UnitTest1.FailingTest"); - this.ValidateSkippedTests("SampleUnitTestProject.UnitTest1.SkippingTest"); - - this.AnalyzePerfData(); - - var actualAdapterTimeTaken = this.GetAdapterExecutionTime("executor://mstestadapter/v2"); - - // Sample Assert statement to verify the performance. 300 will be replaced by the actual threshold value. - Assert.IsTrue(actualAdapterTimeTaken < 300); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.PerformanceTests/Program.cs b/test/Microsoft.TestPlatform.PerformanceTests/Program.cs deleted file mode 100644 index f51a7b7fe2..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace testhost.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.PerformanceTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.PerformanceTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 694542bbb7..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.TestPlatform.PerformanceTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("12d59ced-9916-4c3f-af82-12e019757fd2")] diff --git a/test/Microsoft.TestPlatform.PerformanceTests/ProtocolV1Tests.cs b/test/Microsoft.TestPlatform.PerformanceTests/ProtocolV1Tests.cs deleted file mode 100644 index 7f78e23b16..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/ProtocolV1Tests.cs +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests -{ - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using System.Diagnostics; - using System.IO; - - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; - - [TestClass] - public class ProtocolV1Tests - { - private static TestCase testCase = new TestCase( - "sampleTestClass.sampleTestCase", - new Uri("executor://sampleTestExecutor"), - "sampleTest.dll") - { - CodeFilePath = "/user/src/testFile.cs", - DisplayName = "sampleTestCase", - Id = new Guid("be78d6fc-61b0-4882-9d07-40d796fd96ce"), - LineNumber = 999, - Traits = { new Trait("Priority", "0"), new Trait("Category", "unit") } - }; - - private static DateTimeOffset startTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 0, DateTimeKind.Utc)); - - private static TestResult testResult = new TestResult(testCase) - { - // Attachments = ? - // Messages = ? - Outcome = TestOutcome.Passed, - ErrorMessage = "sampleError", - ErrorStackTrace = "sampleStackTrace", - DisplayName = "sampleTestResult", - ComputerName = "sampleComputerName", - Duration = TimeSpan.MaxValue, - StartTime = startTime, - EndTime = DateTimeOffset.MaxValue - }; - - [TestMethod] - public void TestCaseSerialize() - { - Serialize(testCase); - Stopwatch sw = Stopwatch.StartNew(); - - for (int i = 0; i < 10000; i++) - { - Serialize(testCase); - } - sw.Stop(); - - VerifyPerformanceResult("TestCaseSerialize1", 2000, sw.ElapsedMilliseconds); - } - - [TestMethod] - public void TestCaseDeserialize() - { - var json = Serialize(testCase); - Deserialize(json); - - Stopwatch sw = Stopwatch.StartNew(); - for (int i = 0; i < 10000; i++) - { - Deserialize(json); - } - sw.Stop(); - - VerifyPerformanceResult("TestCaseDeserialize1", 2000, sw.ElapsedMilliseconds); - } - - [TestMethod] - public void TestResultSerialize() - { - Serialize(testResult); - Stopwatch sw = Stopwatch.StartNew(); - - for (int i = 0; i < 10000; i++) - { - Serialize(testResult); - } - sw.Stop(); - - VerifyPerformanceResult("TestResultSerialize1", 2000, sw.ElapsedMilliseconds); - } - - [TestMethod] - public void TestResultDeserialize() - { - var json = Serialize(testResult); - Deserialize(json); - - Stopwatch sw = Stopwatch.StartNew(); - for (int i = 0; i < 10000; i++) - { - Deserialize(json); - } - sw.Stop(); - - VerifyPerformanceResult("TestResultDeserialize1", 3500, sw.ElapsedMilliseconds); - } - - private static string Serialize(T data, int version = 1) - { - return JsonDataSerializer.Instance.Serialize(data, version); - } - - private static T Deserialize(string json, int version = 1) - { - return JsonDataSerializer.Instance.Deserialize(json, version); - } - - private static void VerifyPerformanceResult(string scenario, long expectedElapsedTime, long elapsedTime) - { - Assert.IsTrue(elapsedTime < expectedElapsedTime, $"Scenario '{scenario}' doesn't match with expected elapsed time."); - File.AppendAllText(@"E:\ProtocolPerf.txt", $" {scenario} : " + elapsedTime); - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/ProtocolV2Tests.cs b/test/Microsoft.TestPlatform.PerformanceTests/ProtocolV2Tests.cs deleted file mode 100644 index 4e2ca53d51..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/ProtocolV2Tests.cs +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests -{ - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using System.Diagnostics; - using System.IO; - - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; - - [TestClass] - public class ProtocolV2Tests - { - private static TestCase testCase = new TestCase( - "sampleTestClass.sampleTestCase", - new Uri("executor://sampleTestExecutor"), - "sampleTest.dll") - { - CodeFilePath = "/user/src/testFile.cs", - DisplayName = "sampleTestCase", - Id = new Guid("be78d6fc-61b0-4882-9d07-40d796fd96ce"), - LineNumber = 999, - Traits = { new Trait("Priority", "0"), new Trait("Category", "unit") } - }; - - private static DateTimeOffset startTime = new DateTimeOffset(new DateTime(2007, 3, 10, 0, 0, 0, DateTimeKind.Utc)); - - private static TestResult testResult = new TestResult(testCase) - { - // Attachments = ? - // Messages = ? - Outcome = TestOutcome.Passed, - ErrorMessage = "sampleError", - ErrorStackTrace = "sampleStackTrace", - DisplayName = "sampleTestResult", - ComputerName = "sampleComputerName", - Duration = TimeSpan.MaxValue, - StartTime = startTime, - EndTime = DateTimeOffset.MaxValue - }; - - [TestMethod] - public void TestCaseSerialize2() - { - Serialize(testCase, 2); - Stopwatch sw = Stopwatch.StartNew(); - for (int i = 0; i < 10000; i++) - { - Serialize(testCase, 2); - } - sw.Stop(); - - VerifyPerformanceResult("TestCaseSerialize2", 2000, sw.ElapsedMilliseconds); - } - - [TestMethod] - public void TestCaseDeserialize2() - { - var json = Serialize(testCase, 2); - Deserialize(json, 2); - - Stopwatch sw = Stopwatch.StartNew(); - for (int i = 0; i < 10000; i++) - { - Deserialize(json, 2); - } - sw.Stop(); - - VerifyPerformanceResult("TestCaseDeserialize2", 2000, sw.ElapsedMilliseconds); - } - - [TestMethod] - public void TestResultSerialize2() - { - Serialize(testResult, 2); - Stopwatch sw = Stopwatch.StartNew(); - for (int i = 0; i < 10000; i++) - { - Serialize(testResult, 2); - } - sw.Stop(); - - VerifyPerformanceResult("TestResultSerialize2", 2000, sw.ElapsedMilliseconds); - } - - [TestMethod] - public void TestResultDeserialize2() - { - var json = Serialize(testResult, 2); - Deserialize(json, 2); - - Stopwatch sw = Stopwatch.StartNew(); - for (int i = 0; i < 10000; i++) - { - Deserialize(json, 2); - } - sw.Stop(); - - VerifyPerformanceResult("TestResultDeserialize2", 2000, sw.ElapsedMilliseconds); - } - - private static string Serialize(T data, int version = 1) - { - return JsonDataSerializer.Instance.Serialize(data, version); - } - - private static T Deserialize(string json, int version = 1) - { - return JsonDataSerializer.Instance.Deserialize(json, version); - } - - private static void VerifyPerformanceResult(string scenario, long expectedElapsedTime, long elapsedTime) - { - Assert.IsTrue(elapsedTime < expectedElapsedTime, $"Scenario '{scenario}' doesn't match with expected elapsed time."); - File.AppendAllText(@"E:\ProtocolPerf.txt", $" {scenario} : " + elapsedTime); - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/SocketTests.cs b/test/Microsoft.TestPlatform.PerformanceTests/SocketTests.cs deleted file mode 100644 index 5281da2692..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/SocketTests.cs +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests -{ - using System; - using System.Diagnostics; - using System.Net; - using System.Threading; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class SocketTests - { - [TestMethod] - public void SocketThroughput2() - { - // Measure the throughput with socket communication v2 (SocketServer, SocketClient) - // implementation. - var server = new SocketServer(); - var client = new SocketClient(); - ICommunicationChannel serverChannel = null; - ICommunicationChannel clientChannel = null; - ManualResetEventSlim dataTransferred = new ManualResetEventSlim(false); - ManualResetEventSlim clientConnected = new ManualResetEventSlim(false); - ManualResetEventSlim serverConnected = new ManualResetEventSlim(false); - int dataReceived = 0; - var watch = new Stopwatch(); - var thread = new Thread(() => SendData(clientChannel, watch)); - - // Setup server - server.Connected += (sender, args) => - { - serverChannel = args.Channel; - serverChannel.MessageReceived += (channel, messageReceived) => - { - // Keep count of bytes - dataReceived += messageReceived.Data.Length; - - if (dataReceived >= 65536 * 20000) - { - dataTransferred.Set(); - watch.Stop(); - } - }; - - clientConnected.Set(); - }; - - client.Connected += (sender, args) => - { - clientChannel = args.Channel; - - thread.Start(); - - serverConnected.Set(); - }; - - var port = server.Start(IPAddress.Loopback.ToString()+":0"); - client.Start(port); - - clientConnected.Wait(); - serverConnected.Wait(); - thread.Join(); - dataTransferred.Wait(); - - Assert.IsTrue(watch.Elapsed < TimeSpan.FromSeconds(4), "Elapsed: " + watch.Elapsed); - } - - [TestMethod] - public void SocketThroughput1() - { - // Measure the throughput with socket communication v1 (SocketCommunicationManager) - // implementation. - var server = new SocketCommunicationManager(); - var client = new SocketCommunicationManager(); - var watch = new Stopwatch(); - - int port = server.HostServer(new IPEndPoint(IPAddress.Loopback, 0)).Port; - client.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, port)).Wait(); - server.AcceptClientAsync().Wait(); - - server.WaitForClientConnection(1000); - client.WaitForServerConnection(1000); - - var clientThread = new Thread(() => SendData2(client, watch)); - clientThread.Start(); - - var dataReceived = 0; - while (dataReceived < 65536 * 20000) - { - dataReceived += server.ReceiveRawMessage().Length; - } - - watch.Stop(); - clientThread.Join(); - - Assert.IsTrue(watch.Elapsed < TimeSpan.FromSeconds(4), "Elapsed: " + watch.Elapsed); - } - - private static void SendData(ICommunicationChannel channel, Stopwatch watch) - { - var dataBytes = new byte[65536]; - for (int i = 0; i < dataBytes.Length; i++) - { - dataBytes[i] = 0x65; - } - - var dataBytesStr = System.Text.Encoding.UTF8.GetString(dataBytes); - - watch.Start(); - for (int i = 0; i < 20000; i++) - { - channel.Send(dataBytesStr); - } - } - - private static void SendData2(ICommunicationManager communicationManager, Stopwatch watch) - { - var dataBytes = new byte[65536]; - for (int i = 0; i < dataBytes.Length; i++) - { - dataBytes[i] = 0x65; - } - - var dataBytesStr = System.Text.Encoding.UTF8.GetString(dataBytes); - - watch.Start(); - for (int i = 0; i < 20000; i++) - { - communicationManager.SendRawMessage(dataBytesStr); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/DiscoveryPerfTests.cs b/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/DiscoveryPerfTests.cs deleted file mode 100644 index ca2c0cdf9a..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/DiscoveryPerfTests.cs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests.TranslationLayer -{ - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - - [TestClass] - public class DiscoveryPerfTests : TelemetryPerfTestbase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private DiscoveryEventHandler2 discoveryEventHandler2; - - public DiscoveryPerfTests() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.discoveryEventHandler2 = new DiscoveryEventHandler2(); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void DiscoverMsTest10K() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("MSTestAdapterPerfTestProject", "MSTestAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.discoveryEventHandler2); - - this.PostTelemetry("DiscoverMsTest10K", this.discoveryEventHandler2.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void DiscoverXunit10K() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("XunitAdapterPerfTestProject", "XunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.discoveryEventHandler2); - - this.PostTelemetry("DiscoverXunit10K", this.discoveryEventHandler2.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void DiscoverNunit10K() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("NunitAdapterPerfTestProject", "NunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.discoveryEventHandler2); - - this.PostTelemetry("DiscoverNunit10K", this.discoveryEventHandler2.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void DiscoverMsTest10KWithDefaultAdaptersSkipped() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("MSTestAdapterPerfTestProject", "MSTestAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true, SkipDefaultAdapters = true }, this.discoveryEventHandler2); - - this.PostTelemetry("DiscoverMsTest10KWithDefaultAdaptersSkipped", this.discoveryEventHandler2.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void DiscoverXunit10KWithDefaultAdaptersSkipped() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("XunitAdapterPerfTestProject", "XunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true, SkipDefaultAdapters = true }, this.discoveryEventHandler2); - - this.PostTelemetry("DiscoverXunit10KWithDefaultAdaptersSkipped", this.discoveryEventHandler2.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void DiscoverNunit10KWithDefaultAdaptersSkipped() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("NunitAdapterPerfTestProject", "NunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.DiscoverTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true, SkipDefaultAdapters = true }, this.discoveryEventHandler2); - - this.PostTelemetry("DiscoverNunit10KWithDefaultAdaptersSkipped", this.discoveryEventHandler2.Metrics); - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/EventHandler/DiscoveryEventHandler.cs b/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/EventHandler/DiscoveryEventHandler.cs deleted file mode 100644 index ffccb55529..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/EventHandler/DiscoveryEventHandler.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests.TranslationLayer -{ - using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - - /// - public class DiscoveryEventHandler2 : ITestDiscoveryEventsHandler2 - { - /// - /// Gets the discovered test cases. - /// - public List DiscoveredTestCases { get; } - - /// - /// Gets the metrics. - /// - public IDictionary Metrics { get; private set; } - - public DiscoveryEventHandler2() - { - this.DiscoveredTestCases = new List(); - } - - public void HandleRawMessage(string rawMessage) - { - // No Op - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - // No Op - } - - public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable lastChunk) - { - if (lastChunk != null) - { - this.DiscoveredTestCases.AddRange(lastChunk); - } - - this.Metrics = discoveryCompleteEventArgs.Metrics; - } - - public void HandleDiscoveredTests(IEnumerable discoveredTestCases) - { - if (discoveredTestCases != null) - { - this.DiscoveredTestCases.AddRange(discoveredTestCases); - } - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/EventHandler/RunEventHandler.cs b/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/EventHandler/RunEventHandler.cs deleted file mode 100644 index da3ec378d9..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/EventHandler/RunEventHandler.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests.TranslationLayer -{ - using System.Collections.Generic; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - - /// - public class RunEventHandler : ITestRunEventsHandler2 - { - /// - /// Gets the test results. - /// - public List TestResults { get; private set; } - - /// - /// Gets the metrics. - /// - public IDictionary Metrics { get; private set; } - - /// - /// Gets the log message. - /// - public string LogMessage { get; private set; } - - /// - /// Gets the test message level. - /// - public TestMessageLevel TestMessageLevel { get; private set; } - - public RunEventHandler() - { - this.TestResults = new List(); - } - - public void HandleLogMessage(TestMessageLevel level, string message) - { - this.LogMessage = message; - this.TestMessageLevel = level; - } - - public void HandleTestRunComplete( - TestRunCompleteEventArgs testRunCompleteArgs, - TestRunChangedEventArgs lastChunkArgs, - ICollection runContextAttachments, - ICollection executorUris) - { - if (lastChunkArgs != null && lastChunkArgs.NewTestResults != null) - { - this.TestResults.AddRange(lastChunkArgs.NewTestResults); - } - - this.Metrics = testRunCompleteArgs.Metrics; - } - - public void HandleTestRunStatsChange(TestRunChangedEventArgs testRunChangedArgs) - { - if (testRunChangedArgs != null && testRunChangedArgs.NewTestResults != null) - { - this.TestResults.AddRange(testRunChangedArgs.NewTestResults); - } - } - - public void HandleRawMessage(string rawMessage) - { - // No op - } - - public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo testProcessStartInfo) - { - // No op - return -1; - } - - public bool AttachDebuggerToProcess(int pid) - { - // No op - return true; - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/ExecutionPerfTests.cs b/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/ExecutionPerfTests.cs deleted file mode 100644 index 81a45044cd..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/ExecutionPerfTests.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System.Collections.Generic; -using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; -using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Microsoft.TestPlatform.PerformanceTests.TranslationLayer -{ - [TestClass] - public class ExecutionPerfTests : TelemetryPerfTestbase - { - private IVsTestConsoleWrapper vstestConsoleWrapper; - private RunEventHandler runEventHandler; - - public ExecutionPerfTests() - { - this.vstestConsoleWrapper = this.GetVsTestConsoleWrapper(); - this.runEventHandler = new RunEventHandler(); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void RunMsTest10K() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("MSTestAdapterPerfTestProject", "MSTestAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.RunTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.runEventHandler); - - this.PostTelemetry("RunMsTest10K", this.runEventHandler.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void RunXunit10K() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("XunitAdapterPerfTestProject", "XunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.RunTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.runEventHandler); - - this.PostTelemetry("RunXunit10K", this.runEventHandler.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void RunNunit10K() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("NunitAdapterPerfTestProject", "NunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.RunTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true }, this.runEventHandler); - - this.PostTelemetry("RunNunit10K", this.runEventHandler.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void RunMsTest10KWithDefaultAdaptersSkipped() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("MSTestAdapterPerfTestProject", "MSTestAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.RunTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true, SkipDefaultAdapters = true }, this.runEventHandler); - - this.PostTelemetry("RunMsTest10KWithDefaultAdaptersSkipped", this.runEventHandler.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void RunXunit10KWithDefaultAdaptersSkipped() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("XunitAdapterPerfTestProject", "XunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.RunTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true, SkipDefaultAdapters = true }, this.runEventHandler); - - this.PostTelemetry("RunXunit10KWithDefaultAdaptersSkipped", this.runEventHandler.Metrics); - } - - [TestMethod] - [TestCategory("TelemetryPerf")] - public void RunNunit10KWithDefaultAdaptersSkipped() - { - var testAssemblies = new List - { - GetPerfAssetFullPath("NunitAdapterPerfTestProject", "NunitAdapterPerfTestProject.dll"), - }; - - this.vstestConsoleWrapper.RunTests(testAssemblies, this.GetDefaultRunSettings(), new TestPlatformOptions() { CollectMetrics = true, SkipDefaultAdapters = true }, this.runEventHandler); - - this.PostTelemetry("RunNunit10KWithDefaultAdaptersSkipped", this.runEventHandler.Metrics); - } - } -} diff --git a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/TelemetryPerfTestBase.cs b/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/TelemetryPerfTestBase.cs deleted file mode 100644 index 3f2dd5b6a2..0000000000 --- a/test/Microsoft.TestPlatform.PerformanceTests/TranslationLayer/TelemetryPerfTestBase.cs +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.PerformanceTests.TranslationLayer -{ - using Microsoft.ApplicationInsights; - using Microsoft.ApplicationInsights.Extensibility; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.IO; - using System.Reflection; - - [TestClass] - public class TelemetryPerfTestbase - { - private const string TelemetryInstrumentationKey = "76b373ba-8a55-45dd-b6db-7f1a83288691"; - private TelemetryClient client; - private DirectoryInfo currentDirectory = new DirectoryInfo(typeof(DiscoveryPerfTests).GetTypeInfo().Assembly.GetAssemblyLocation()).Parent; - - public TelemetryPerfTestbase() - { - client = new TelemetryClient(); - TelemetryConfiguration.Active.InstrumentationKey = TelemetryInstrumentationKey; - } - - /// - /// Used for posting the telemetry to AppInsights - /// - /// - /// - public void PostTelemetry(string perfScenario, IDictionary handlerMetrics) - { - var properties = new Dictionary(); - var metrics = new Dictionary(); - - foreach (var entry in handlerMetrics) - { - var stringValue = entry.Value.ToString(); - if (double.TryParse(stringValue, out var doubleValue)) - { - metrics.Add(entry.Key, doubleValue); - } - else - { - properties.Add(entry.Key, stringValue); - } - } - this.client.TrackEvent(perfScenario, properties, metrics); - this.client.Flush(); - } - - /// - /// Returns the full path to the test asset dll - /// - /// Name of the directory of the test dll - /// Name of the test dll - /// - public string GetPerfAssetFullPath(string dllDirectory, string dllName) - { - return Path.Combine(this.currentDirectory.FullName, "TestAssets\\PerfAssets", dllDirectory , dllName ); - } - - /// - /// Returns the VsTestConsole Wrapper. - /// - /// - public IVsTestConsoleWrapper GetVsTestConsoleWrapper() - { - var vstestConsoleWrapper = new VsTestConsoleWrapper(this.GetConsoleRunnerPath()); - vstestConsoleWrapper.StartSession(); - - return vstestConsoleWrapper; - } - - private string BuildConfiguration - { - get - { -#if DEBUG - return "Debug"; -#else - return "Release"; -#endif - } - } - - private string GetConsoleRunnerPath() - { - // Find the root - var root = this.currentDirectory.Parent.Parent.Parent; - // Path to artifacts vstest.console - return Path.Combine(root.FullName, BuildConfiguration, "net451", "win7-x64", "vstest.console.exe"); - } - - /// - /// Returns the default runsettings xml - /// - /// - public string GetDefaultRunSettings() - { - string runSettingsXml = $@" - - - Framework45 - - "; - return runSettingsXml; - } - } -} diff --git a/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs b/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs deleted file mode 100644 index ecf57aab6b..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.SmokeTests -{ - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Extensions; - using System; - using System.IO; - using System.Linq; - - [TestClass] - public class DataCollectorTestsCoverlets : IntegrationTestBase - { - [TestMethod] - public void RunCoverletCoverage() - { - // Collector is supported only for netcoreapp2.1, is compiled for netcoreapp2.1 and packaged as netstandard - if (this.testEnvironment.TargetFramework != CoreRunnerFramework) - { - return; - } - - // We use netcoreapp runner - // "...\vstest\tools\dotnet\dotnet.exe "...\vstest\artifacts\Debug\netcoreapp2.1\vstest.console.dll" --collect:"XPlat Code Coverage" ... - this.testEnvironment.RunnerFramework = CoreRunnerFramework; - var resultsDir = GetResultsDirectory(); - - string coverletAdapterPath = Path.GetDirectoryName(Directory.GetFiles(this.testEnvironment.GetNugetPackage("coverlet.collector"), "coverlet.collector.dll", SearchOption.AllDirectories).Single()); - string logId = Guid.NewGuid().ToString("N"); - string assemblyPath = this.BuildMultipleAssemblyPath("CoverletCoverageTestProject.dll").Trim('\"'); - string logPath = Path.Combine(Path.GetDirectoryName(assemblyPath), $"coverletcoverage.{logId}.log"); - string logPathDirectory = Path.GetDirectoryName(logPath); - string argument = $"--collect:{"XPlat Code Coverage".AddDoubleQuote()} {PrepareArguments(assemblyPath, coverletAdapterPath, "", ".NETCoreApp,Version=v2.1", resultsDirectory: resultsDir)} --diag:{logPath.AddDoubleQuote()}"; - this.InvokeVsTest(argument); - - // Verify vstest.console.dll CollectArgumentProcessor fix codeBase for coverlet package - // This assert check that we're sure that we've updated collector setting code base with full path, - // otherwise without "custom coverlet code" inside ProxyExecutionManager coverlet dll won't be resolved inside testhost. - var log = Directory.GetFiles(logPathDirectory, $"coverletcoverage.{logId}.log").Single(); - Assert.IsTrue(File.ReadAllText(log).Contains("CoverletDataCollector in-process codeBase path")); - - // Verify out-of-proc coverlet collector load - var dataCollectorLog = Directory.GetFiles(logPathDirectory, $"coverletcoverage.{logId}.datacollector*log").Single(); - Assert.IsTrue(File.ReadAllText(dataCollectorLog).Contains("[coverlet]Initializing CoverletCoverageDataCollector")); - - // Verify in-proc coverlet collector load - var hostLog = Directory.GetFiles(logPathDirectory, $"coverletcoverage.{logId}.host*log").Single(); - Assert.IsTrue(File.ReadAllText(hostLog).Contains("[coverlet]Initialize CoverletInProcDataCollector")); - - // Verify default coverage file is generated - this.StdOutputContains("coverage.cobertura.xml"); - TryRemoveDirectory(resultsDir); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.cs b/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.cs deleted file mode 100644 index d4fd64d77e..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.SmokeTests -{ - using System.IO; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class DataCollectorTests : IntegrationTestBase - { - private static string InProcTestResultFile = Path.Combine(Path.GetTempPath(), "inproctest.txt"); - private const string InProDataCollectorTestProject = "SimpleTestProject.dll"; - [TestMethod] - public void RunAllWithInProcDataCollectorSettings() - { - // Delete File if already exists - File.Delete(InProcTestResultFile); - - var runSettings = this.GetInProcDataCollectionRunsettingsFile(); - - this.InvokeVsTestForExecution(testEnvironment.GetTestAsset(DataCollectorTests.InProDataCollectorTestProject), this.GetTestAdapterPath(), ".NETFramework,Version=v4.5.1", runSettings); - this.ValidateSummaryStatus(1, 1, 1); - - ValidateInProcDataCollectionOutput(); - } - - private static void ValidateInProcDataCollectionOutput() - { - Assert.IsTrue(File.Exists(InProcTestResultFile), "Datacollector test file doesn't exist: {0}.", InProcTestResultFile); - var actual = File.ReadAllText(InProcTestResultFile); - var expected = @"TestSessionStart : 4312 TestCaseStart : PassingTest TestCaseEnd : PassingTest TestCaseStart : FailingTest TestCaseEnd : FailingTest TestCaseStart : SkippingTest TestCaseEnd : SkippingTest TestSessionEnd"; - actual = actual.Replace(" ", string.Empty).Replace("\r\n", string.Empty); - expected = expected.Replace(" ", string.Empty).Replace("\r\n", string.Empty); - Assert.AreEqual(expected, actual); - } - - private string GetInProcDataCollectionRunsettingsFile() - { - var runSettings = Path.Combine(Path.GetDirectoryName(testEnvironment.GetTestAsset(DataCollectorTests.InProDataCollectorTestProject)), "runsettingstest.runsettings"); - var inprocasm = testEnvironment.GetTestAsset("SimpleDataCollector.dll"); - var fileContents = @" - - - - - 4312 - - - - - "; - - fileContents = string.Format(fileContents, AssemblyUtility.GetAssemblyName(inprocasm), inprocasm); - File.WriteAllText(runSettings, fileContents); - - return runSettings; - } - } -} diff --git a/test/Microsoft.TestPlatform.SmokeTests/DiscoveryTests.cs b/test/Microsoft.TestPlatform.SmokeTests/DiscoveryTests.cs deleted file mode 100644 index 3329868548..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/DiscoveryTests.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.SmokeTests -{ - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class DiscoveryTests : IntegrationTestBase - { - [TestMethod] - public void DiscoverAllTests() - { - this.InvokeVsTestForDiscovery(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, ".NETFramework,Version=v4.5.1"); - var listOfTests = new string[] { "SampleUnitTestProject.UnitTest1.PassingTest", "SampleUnitTestProject.UnitTest1.FailingTest", "SampleUnitTestProject.UnitTest1.SkippingTest" }; - this.ValidateDiscoveredTests(listOfTests); - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.SmokeTests/ExecutionTests.cs b/test/Microsoft.TestPlatform.SmokeTests/ExecutionTests.cs deleted file mode 100644 index ab30fabe3e..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/ExecutionTests.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.SmokeTests -{ - using Microsoft.TestPlatform.TestUtilities; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ExecutionTests : IntegrationTestBase - { - [TestMethod] - public void RunAllTestExecution() - { - this.InvokeVsTestForExecution(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), ".NETFramework,Version=v4.5.1"); - this.ValidateSummaryStatus(1, 1, 1); - this.ValidatePassedTests("SampleUnitTestProject.UnitTest1.PassingTest"); - this.ValidateFailedTests("SampleUnitTestProject.UnitTest1.FailingTest"); - this.ValidateSkippedTests("SampleUnitTestProject.UnitTest1.SkippingTest"); - } - - [TestMethod] - public void RunSelectedTests() - { - var resultsDir = GetResultsDirectory(); - var arguments = PrepareArguments(this.GetSampleTestAssembly(), this.GetTestAdapterPath(), string.Empty, ".NETFramework,Version=v4.5.1", resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /Tests:PassingTest"); - this.InvokeVsTest(arguments); - this.ValidateSummaryStatus(1, 0, 0); - this.ValidatePassedTests("SampleUnitTestProject.UnitTest1.PassingTest"); - TryRemoveDirectory(resultsDir); - } - } -} diff --git a/test/Microsoft.TestPlatform.SmokeTests/Microsoft.TestPlatform.SmokeTests.csproj b/test/Microsoft.TestPlatform.SmokeTests/Microsoft.TestPlatform.SmokeTests.csproj deleted file mode 100644 index f54a5ce17a..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/Microsoft.TestPlatform.SmokeTests.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - ..\..\ - true - true - - - - Microsoft.TestPlatform.SmokeTests - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - - - - - - - - - - - - 4.3.0 - - - - diff --git a/test/Microsoft.TestPlatform.SmokeTests/Program.cs b/test/Microsoft.TestPlatform.SmokeTests/Program.cs deleted file mode 100644 index f51a7b7fe2..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace testhost.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.SmokeTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.SmokeTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 23906b17bb..0000000000 --- a/test/Microsoft.TestPlatform.SmokeTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestingMSTest")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c1497516-acb5-49af-a676-51db65ff8252")] diff --git a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DefaultTestHostManagerTests.cs b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DefaultTestHostManagerTests.cs index 99cb96cf7a..0055035827 100644 --- a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DefaultTestHostManagerTests.cs +++ b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DefaultTestHostManagerTests.cs @@ -1,598 +1,657 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.TestHostProvider.Hosting.UnitTests +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Extensions; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting; +using Microsoft.VisualStudio.TestPlatform.DesktopTestHostRuntimeProvider; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.TestHostProvider.Hosting.UnitTests; + +[TestClass] +public class DefaultTestHostManagerTests { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Linq; - using System.Reflection; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Extensions; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting; - using Microsoft.VisualStudio.TestPlatform.DesktopTestHostRuntimeProvider; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - -#pragma warning disable SA1600 - [TestClass] - public class DefaultTestHostManagerTests - { - private readonly TestProcessStartInfo startInfo; - private readonly Mock mockMessageLogger; - private readonly Mock mockProcessHelper; - private readonly Mock mockFileHelper; - private readonly Mock mockDotnetHostHelper; - private readonly Mock mockEnvironment; - - private DefaultTestHostManager testHostManager; - private TestableTestHostManager testableTestHostManager; - private string errorMessage; - private int exitCode; - private int testHostId; - - public DefaultTestHostManagerTests() - { - this.mockProcessHelper = new Mock(); - this.mockFileHelper = new Mock(); - this.mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("vstest.console.exe"); - this.mockDotnetHostHelper = new Mock(); - this.mockEnvironment = new Mock(); - - this.mockMessageLogger = new Mock(); - - this.testHostManager = new DefaultTestHostManager(this.mockProcessHelper.Object, this.mockFileHelper.Object, this.mockEnvironment.Object, this.mockDotnetHostHelper.Object); - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Architecture.X64} {Framework.DefaultFramework} {false} "); - this.startInfo = this.testHostManager.GetTestHostProcessStartInfo(Enumerable.Empty(), null, default); - } - - [TestMethod] - public void ConstructorShouldSetX86ProcessForX86Architecture() - { - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Architecture.X86} {Framework.DefaultFramework} {false} "); + private readonly TestProcessStartInfo _startInfo; + private readonly Mock _mockMessageLogger; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockFileHelper; + private readonly Mock _mockDotnetHostHelper; + private readonly Mock _mockEnvironment; + private readonly Mock _mockEnvironmentVariable; + private readonly DefaultTestHostManager _testHostManager; + + private TestableTestHostManager? _testableTestHostManager; + private string? _errorMessage; + private int _exitCode; + private int _testHostId; + + public DefaultTestHostManagerTests() + { + _mockProcessHelper = new Mock(); + _mockFileHelper = new Mock(); + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("vstest.console.exe"); + _mockDotnetHostHelper = new Mock(); + _mockEnvironment = new Mock(); + _mockEnvironmentVariable = new Mock(); + + _mockMessageLogger = new Mock(); + + _testHostManager = new DefaultTestHostManager(_mockProcessHelper.Object, _mockFileHelper.Object, _mockDotnetHostHelper.Object, _mockEnvironment.Object, _mockEnvironmentVariable.Object); + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Architecture.X64} {Framework.DefaultFramework} {false} "); + _startInfo = _testHostManager.GetTestHostProcessStartInfo([], null, default); + } - var info = this.testHostManager.GetTestHostProcessStartInfo(Enumerable.Empty(), null, default); + [TestMethod] + public void ConstructorShouldSetX86ProcessForX86Architecture() + { + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Architecture.X86} {Framework.DefaultFramework} {false} "); - StringAssert.EndsWith(info.FileName, "testhost.x86.exe"); - } + var info = _testHostManager.GetTestHostProcessStartInfo([], null, default); - [TestMethod] - public void ConstructorShouldSetX64ProcessForX64Architecture() - { - StringAssert.EndsWith(this.startInfo.FileName, "testhost.exe"); - } + StringAssert.EndsWith(info.FileName, "testhost.x86.exe"); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeFileNameFromSubFolderTestHostWhenCurrentProcessIsDotnet() - { - string subFoler = "TestHost"; + [TestMethod] + public void ConstructorShouldSetX64ProcessForX64Architecture() + { + StringAssert.EndsWith(_startInfo.FileName, "testhost.exe"); + } - var startInfo = this.testHostManager.GetTestHostProcessStartInfo(Enumerable.Empty(), null, default); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeFileNameFromSubFolderTestHostWhenCurrentProcessIsDotnet() + { + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("dotnet.exe"); + _mockFileHelper.Setup(x => x.Exists(It.IsAny())).Returns(false); + var startInfo = _testHostManager.GetTestHostProcessStartInfo([], null, default); - Assert.IsTrue(startInfo.FileName.EndsWith(Path.Combine(subFoler, "testhost.exe"))); - } + Assert.IsTrue(startInfo.FileName!.EndsWith(Path.Combine("TestHostNetFramework", "testhost.exe"))); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeConnectionInfo() - { - var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets }, RunnerProcessId = 101 }; - var info = this.testHostManager.GetTestHostProcessStartInfo( - Enumerable.Empty(), - null, - connectionInfo); + [TestMethod] + public void GetTestHostProcessStartInfoShouldNotIncludeFileNameFromSubFolderTestHostWhenCurrentProcessIsDotnet() + { + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("dotnet.exe"); + _mockFileHelper.Setup(x => x.Exists(It.IsAny())).Returns(true); + var startInfo = _testHostManager.GetTestHostProcessStartInfo([], null, default); - Assert.AreEqual(" --port 123 --endpoint 127.0.0.0:123 --role client --parentprocessid 101", info.Arguments); - } + Assert.IsFalse(startInfo.FileName!.EndsWith(Path.Combine("TestHost", "testhost.exe"))); + Assert.IsTrue(startInfo.FileName!.EndsWith("testhost.exe")); + } - [TestMethod] - public void GetTestHostConnectionInfoShouldIncludeEndpointRoleAndChannelType() - { - var connectionInfo = new TestHostConnectionInfo - { - Endpoint = "127.0.0.1:0", - Role = ConnectionRole.Client, - Transport = Transport.Sockets - }; + [TestMethod] + public void GetTestHostProcessStartInfoShouldNotIncludeFileNameFromSubFolderTestHostWhenCurrentProcessIsIde() + { + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("devenv.exe"); + var startInfo = _testHostManager.GetTestHostProcessStartInfo([], null, default); - var info = this.testHostManager.GetTestHostConnectionInfo(); + Assert.IsFalse(startInfo.FileName!.EndsWith(Path.Combine("TestHost", "testhost.exe"))); + Assert.IsTrue(startInfo.FileName!.EndsWith("testhost.exe")); + } - Assert.AreEqual(connectionInfo, info); - } + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeConnectionInfo() + { + var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets }, RunnerProcessId = 101 }; + var info = _testHostManager.GetTestHostProcessStartInfo( + [], + null, + connectionInfo); - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeEmptyEnvironmentVariables() - { - Assert.AreEqual(0, this.startInfo.EnvironmentVariables.Count); - } + Assert.AreEqual(" --port 123 --endpoint 127.0.0.0:123 --role client --parentprocessid 101", info.Arguments); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeEnvironmentVariables() + [TestMethod] + public void GetTestHostConnectionInfoShouldIncludeEndpointRoleAndChannelType() + { + var connectionInfo = new TestHostConnectionInfo { - var environmentVariables = new Dictionary { { "k1", "v1" } }; + Endpoint = "127.0.0.1:0", + Role = ConnectionRole.Client, + Transport = Transport.Sockets + }; - var info = this.testHostManager.GetTestHostProcessStartInfo(Enumerable.Empty(), environmentVariables, default); + var info = _testHostManager.GetTestHostConnectionInfo(); - Assert.AreEqual(environmentVariables, info.EnvironmentVariables); - } + Assert.AreEqual(connectionInfo, info); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeCurrentWorkingDirectory() - { - Assert.AreEqual(Directory.GetCurrentDirectory(), this.startInfo.WorkingDirectory); - } + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeEmptyEnvironmentVariables() + { + Assert.AreEqual(0, _startInfo.EnvironmentVariables!.Count); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeTestSourcePathInArgumentsIfNonShared() - { - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Architecture.X86} {Framework.DefaultFramework} {true} "); - var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets }, RunnerProcessId = 101 }; - var source = "C:\temp\a.dll"; + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeEnvironmentVariables() + { + var environmentVariables = new Dictionary { { "k1", "v1" } }; - var info = this.testHostManager.GetTestHostProcessStartInfo( - new List() { source }, - null, - connectionInfo); + var info = _testHostManager.GetTestHostProcessStartInfo([], environmentVariables, default); - Assert.AreEqual(" --port 123 --endpoint 127.0.0.0:123 --role client --parentprocessid 101 --testsourcepath " + source.AddDoubleQuote(), info.Arguments); - } + Assert.AreEqual(environmentVariables, info.EnvironmentVariables); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldUseMonoAsHostOnNonWindowsIfNotStartedWithMono() - { - this.mockProcessHelper.Setup(p => p.GetCurrentProcessFileName()).Returns("/usr/bin/dotnet"); - this.mockEnvironment.Setup(e => e.OperatingSystem).Returns(PlatformOperatingSystem.Unix); - this.mockDotnetHostHelper.Setup(d => d.GetMonoPath()).Returns("/usr/bin/mono"); - var source = "C:\temp\a.dll"; - - var info = this.testHostManager.GetTestHostProcessStartInfo( - new List() { source }, - null, - default); - - Assert.AreEqual("/usr/bin/mono", info.FileName); - StringAssert.Contains(info.Arguments, "TestHost" + Path.DirectorySeparatorChar + "testhost.exe\""); - } + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeCurrentWorkingDirectory() + { + Assert.AreEqual(Directory.GetCurrentDirectory(), _startInfo.WorkingDirectory); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldNotUseMonoAsHostOnNonWindowsIfStartedWithMono() - { - this.mockProcessHelper.Setup(p => p.GetCurrentProcessFileName()).Returns("/usr/bin/mono"); - this.mockEnvironment.Setup(e => e.OperatingSystem).Returns(PlatformOperatingSystem.Unix); - this.mockDotnetHostHelper.Setup(d => d.GetMonoPath()).Returns("/usr/bin/mono"); - var source = @"C:\temp\a.dll"; - - var info = this.testHostManager.GetTestHostProcessStartInfo( - new List() { source }, - null, - default); - - StringAssert.Contains(info.FileName, "TestHost" + Path.DirectorySeparatorChar + "testhost.exe"); - Assert.IsFalse(info.Arguments.Contains("TestHost" + Path.DirectorySeparatorChar + "testhost.exe")); - } + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeTestSourcePathInArgumentsIfNonShared() + { + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Architecture.X86} {Framework.DefaultFramework} {true} "); + var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets }, RunnerProcessId = 101 }; + var source = @"C:\temp\a.dll"; - [TestMethod] - public void GetTestPlatformExtensionsShouldReturnExtensionsListAsIsIfSourcesListIsEmpty() - { - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" "); - List currentList = new List { @"FooExtension.dll" }; + var info = _testHostManager.GetTestHostProcessStartInfo( + new List() { source }, + null, + connectionInfo); - // Act - var resultExtensions = this.testHostManager.GetTestPlatformExtensions(new List(), currentList).ToList(); + Assert.AreEqual(" --port 123 --endpoint 127.0.0.0:123 --role client --parentprocessid 101 --testsourcepath " + source.AddDoubleQuote(), info.Arguments); + } - // Verify - CollectionAssert.AreEqual(currentList, resultExtensions); - } + [TestMethod] + public void GetTestHostProcessStartInfoShouldUseMonoAsHostOnNonWindowsIfNotStartedWithMono() + { + _mockProcessHelper.Setup(p => p.GetCurrentProcessFileName()).Returns("/usr/bin/dotnet"); + _mockEnvironment.Setup(e => e.OperatingSystem).Returns(PlatformOperatingSystem.Unix); + _mockDotnetHostHelper.Setup(d => d.GetMonoPath()).Returns("/usr/bin/mono"); + var source = @"C:\temp\a.dll"; + + var info = _testHostManager.GetTestHostProcessStartInfo( + new List() { source }, + null, + default); + + Assert.AreEqual("/usr/bin/mono", info.FileName); + StringAssert.Contains(info.Arguments, Path.Combine("TestHostNetFramework", "testhost.exe")); + } - [TestMethod] - public void GetTestPlatformExtensionsShouldReturnExtensionsListAsIsIfSourcesListIsNull() - { - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" "); - List currentList = new List { @"FooExtension.dll" }; + [TestMethod] + public void GetTestHostProcessStartInfoShouldNotUseMonoAsHostOnNonWindowsIfStartedWithMono() + { + _mockProcessHelper.Setup(p => p.GetCurrentProcessFileName()).Returns("/usr/bin/mono"); + _mockEnvironment.Setup(e => e.OperatingSystem).Returns(PlatformOperatingSystem.Unix); + _mockDotnetHostHelper.Setup(d => d.GetMonoPath()).Returns("/usr/bin/mono"); + var source = @"C:\temp\a.dll"; + + var info = _testHostManager.GetTestHostProcessStartInfo( + new List() { source }, + null, + default); + + var testHostPath = Path.Combine("TestHostNetFramework", "testhost.exe"); + StringAssert.EndsWith(info.FileName, testHostPath); + Assert.IsFalse(info.Arguments!.Contains(testHostPath)); + } - // Act - var resultExtensions = this.testHostManager.GetTestPlatformExtensions(null, currentList).ToList(); + [TestMethod] + public void GetTestPlatformExtensionsShouldReturnExtensionsListAsIsIfSourcesListIsEmpty() + { + _testHostManager.Initialize(_mockMessageLogger.Object, $" "); + List currentList = [@"FooExtension.dll"]; - // Verify - CollectionAssert.AreEqual(currentList, resultExtensions); - } + // Act + var resultExtensions = _testHostManager.GetTestPlatformExtensions(new List(), currentList).ToList(); - [TestMethod] - public void GetTestPlatformExtensionsShouldNotExcludeOutputDirectoryExtensionsIfTestAdapterPathIsSet() - { - List sourcesDir = new List { @"C:\Source1" }; - List sources = new List { @"C:\Source1\source1.dll" }; + // Verify + CollectionAssert.AreEqual(currentList, resultExtensions); + } - List extensionsList1 = new List { @"C:\Source1\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll" }; - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); + [TestMethod] + public void GetTestPlatformExtensionsShouldReturnExtensionsListAsIsIfSourcesListIsNull() + { + _testHostManager.Initialize(_mockMessageLogger.Object, $" "); + List currentList = [@"FooExtension.dll"]; - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[1])).Returns(new Version(5, 5)); + // Act + var resultExtensions = _testHostManager.GetTestPlatformExtensions(null, currentList).ToList(); - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" C:\\Foo "); - List currentList = new List { @"FooExtension.dll", @"C:\Source1\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll" }; + // Verify + CollectionAssert.AreEqual(currentList, resultExtensions); + } - // Act - var resultExtensions = this.testHostManager.GetTestPlatformExtensions(sources, currentList).ToList(); + [TestMethod] + public void GetTestPlatformExtensionsShouldNotExcludeOutputDirectoryExtensionsIfTestAdapterPathIsSet() + { + List sourcesDir = [@"C:\Source1"]; + List sources = [@"C:\Source1\source1.dll"]; - // Verify - CollectionAssert.AreEqual(currentList, resultExtensions); - } + List extensionsList1 = [@"C:\Source1\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll"]; + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); - [TestMethod] - [TestCategory("Windows")] - public void GetTestPlatformExtensionsShouldIncludeOutputDirectoryExtensionsIfTestAdapterPathIsNotSet() - { - List sourcesDir = new List { "C:\\Source1", "C:\\Source2" }; - List sources = new List { @"C:\Source1\source1.dll", @"C:\Source2\source2.dll" }; + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[1])).Returns(new Version(5, 5)); - List extensionsList1 = new List { @"C:\Source1\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll" }; - List extensionsList2 = new List { @"C:\Source2\ext1.TestAdapter.dll", @"C:\Source2\ext2.TestAdapter.dll" }; + _testHostManager.Initialize(_mockMessageLogger.Object, $" C:\\Foo "); + List currentList = [@"FooExtension.dll", @"C:\Source1\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll"]; - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[1])).Returns(new Version(5, 5)); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[0])).Returns(new Version(2, 2)); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[1])).Returns(new Version(5, 0)); + // Act + var resultExtensions = _testHostManager.GetTestPlatformExtensions(sources, currentList).ToList(); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[1], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList2); + // Verify + CollectionAssert.AreEqual(currentList, resultExtensions); + } - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Framework.DefaultFramework} "); + [TestMethod] + [TestCategory("Windows")] + public void GetTestPlatformExtensionsShouldIncludeOutputDirectoryExtensionsIfTestAdapterPathIsNotSet() + { + List sourcesDir = ["C:\\Source1", "C:\\Source2"]; + List sources = [@"C:\Source1\source1.dll", @"C:\Source2\source2.dll"]; - // Act - var resultExtensions = this.testHostManager.GetTestPlatformExtensions(sources, new List()).ToList(); + List extensionsList1 = [@"C:\Source1\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll"]; + List extensionsList2 = [@"C:\Source2\ext1.TestAdapter.dll", @"C:\Source2\ext2.TestAdapter.dll"]; - // Verify - List expectedList = new List { @"C:\Source2\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll" }; - CollectionAssert.AreEqual(expectedList, resultExtensions); - this.mockMessageLogger.Verify(ml => ml.SendMessage(TestMessageLevel.Warning, "Multiple versions of same extension found. Selecting the highest version." + Environment.NewLine + " ext1.TestAdapter : 2.2\n ext2.TestAdapter : 5.5"), Times.Once); - } + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[1])).Returns(new Version(5, 5)); + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[0])).Returns(new Version(2, 2)); + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[1])).Returns(new Version(5, 0)); - [TestMethod] - [TestCategory("Windows")] - public void GetTestPlatformExtensionsShouldReturnPathTheHigherVersionedFileExtensions() - { - List sourcesDir = new List { "C:\\Source1", "C:\\Source2" }; - List sources = new List { @"C:\Source1\source1.dll", @"C:\Source2\source2.dll" }; + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[1], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList2); - List extensionsList1 = new List { @"C:\Source1\ext1.TestAdapter.dll" }; - List extensionsList2 = new List { @"C:\Source2\ext1.TestAdapter.dll" }; + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Framework.DefaultFramework} "); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[0])).Returns(new Version(2, 2)); + // Act + var resultExtensions = _testHostManager.GetTestPlatformExtensions(sources, new List()).ToList(); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[1], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList2); + // Verify + List expectedList = [@"C:\Source2\ext1.TestAdapter.dll", @"C:\Source1\ext2.TestAdapter.dll"]; + CollectionAssert.AreEqual(expectedList, resultExtensions); + _mockMessageLogger.Verify(ml => ml.SendMessage(TestMessageLevel.Warning, "Multiple versions of same extension found. Selecting the highest version." + Environment.NewLine + " ext1.TestAdapter : 2.2\n ext2.TestAdapter : 5.5"), Times.Once); + } - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Framework.DefaultFramework} "); + [TestMethod] + [TestCategory("Windows")] + public void GetTestPlatformExtensionsShouldReturnPathTheHigherVersionedFileExtensions() + { + List sourcesDir = ["C:\\Source1", "C:\\Source2"]; + List sources = [@"C:\Source1\source1.dll", @"C:\Source2\source2.dll"]; - // Act - var resultExtensions = this.testHostManager.GetTestPlatformExtensions(sources, new List()).ToList(); + List extensionsList1 = [@"C:\Source1\ext1.TestAdapter.dll"]; + List extensionsList2 = [@"C:\Source2\ext1.TestAdapter.dll"]; - // Verify - CollectionAssert.AreEqual(extensionsList2, resultExtensions); - this.mockMessageLogger.Verify(ml => ml.SendMessage(TestMessageLevel.Warning, "Multiple versions of same extension found. Selecting the highest version." + Environment.NewLine + " ext1.TestAdapter : 2.2"), Times.Once); - } + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[0])).Returns(new Version(2, 2)); - [TestMethod] - [TestCategory("Windows")] - public void GetTestPlatformExtensionsShouldReturnPathToSingleFileExtensionOfATypeIfVersionsAreSame() - { - List sourcesDir = new List { "C:\\Source1", "C:\\Source2" }; - List sources = new List { @"C:\Source1\source1.dll", @"C:\Source2\source2.dll" }; + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[1], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList2); - List extensionsList1 = new List { @"C:\Source1\ext1.TestAdapter.dll" }; - List extensionsList2 = new List { @"C:\Source2\ext1.TestAdapter.dll" }; + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Framework.DefaultFramework} "); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); - this.mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[0])).Returns(new Version(2, 0)); + // Act + var resultExtensions = _testHostManager.GetTestPlatformExtensions(sources, new List()).ToList(); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[1], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList2); + // Verify + CollectionAssert.AreEqual(extensionsList2, resultExtensions); + _mockMessageLogger.Verify(ml => ml.SendMessage(TestMessageLevel.Warning, "Multiple versions of same extension found. Selecting the highest version." + Environment.NewLine + " ext1.TestAdapter : 2.2"), Times.Once); + } - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Framework.DefaultFramework} "); + [TestMethod] + [TestCategory("Windows")] + public void GetTestPlatformExtensionsShouldReturnPathToSingleFileExtensionOfATypeIfVersionsAreSame() + { + List sourcesDir = ["C:\\Source1", "C:\\Source2"]; + List sources = [@"C:\Source1\source1.dll", @"C:\Source2\source2.dll"]; - // Act - var resultExtensions = this.testHostManager.GetTestPlatformExtensions(sources, new List()).ToList(); + List extensionsList1 = [@"C:\Source1\ext1.TestAdapter.dll"]; + List extensionsList2 = [@"C:\Source2\ext1.TestAdapter.dll"]; - // Verify - CollectionAssert.AreEqual(extensionsList1, resultExtensions); - this.mockMessageLogger.Verify(ml => ml.SendMessage(TestMessageLevel.Warning, It.IsAny()), Times.Never); - } + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList1[0])).Returns(new Version(2, 0)); + _mockFileHelper.Setup(fh => fh.GetFileVersion(extensionsList2[0])).Returns(new Version(2, 0)); - [TestMethod] - public void LaunchTestHostShouldReturnTestHostProcessId() - { - this.mockProcessHelper.Setup( - ph => - ph.LaunchProcess( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>())).Returns(Process.GetCurrentProcess()); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[0], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList1); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(sourcesDir[1], SearchOption.TopDirectoryOnly, "TestAdapter.dll")).Returns(extensionsList2); - this.testHostManager.Initialize(this.mockMessageLogger.Object, $" {Architecture.X64} {Framework.DefaultFramework} {false} "); - var startInfo = this.testHostManager.GetTestHostProcessStartInfo(Enumerable.Empty(), null, default); + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Framework.DefaultFramework} "); - this.testHostManager.HostLaunched += this.TestHostManagerHostLaunched; + // Act + var resultExtensions = _testHostManager.GetTestPlatformExtensions(sources, new List()).ToList(); - Task processId = this.testHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None); - processId.Wait(); + // Verify + CollectionAssert.AreEqual(extensionsList1, resultExtensions); + _mockMessageLogger.Verify(ml => ml.SendMessage(TestMessageLevel.Warning, It.IsAny()), Times.Never); + } - Assert.IsTrue(processId.Result); + [TestMethod] + public void LaunchTestHostShouldReturnTestHostProcessId() + { + _mockProcessHelper.Setup( + ph => + ph.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>())).Returns(Process.GetCurrentProcess()); + + _testHostManager.Initialize(_mockMessageLogger.Object, $" {Architecture.X64} {Framework.DefaultFramework} {false} "); + var startInfo = _testHostManager.GetTestHostProcessStartInfo([], null, default); + + _testHostManager.HostLaunched += TestHostManagerHostLaunched; + + Task processId = _testHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None); + processId.Wait(); + + Assert.IsTrue(processId.Result); + +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + Assert.AreEqual(pid, _testHostId); + } - Assert.AreEqual(Process.GetCurrentProcess().Id, this.testHostId); - } + [TestMethod] + public void LaunchTestHostAsyncShouldNotStartHostProcessIfCancellationTokenIsSet() + { + _testableTestHostManager = new TestableTestHostManager( + Architecture.X64, + Framework.DefaultFramework, + _mockProcessHelper.Object, + true, + _mockMessageLogger.Object); - [TestMethod] - public void LaunchTestHostAsyncShouldNotStartHostProcessIfCancellationTokenIsSet() - { - this.testableTestHostManager = new TestableTestHostManager( - Architecture.X64, - Framework.DefaultFramework, - this.mockProcessHelper.Object, - true, - this.mockMessageLogger.Object); + CancellationTokenSource cancellationTokenSource = new(); + cancellationTokenSource.Cancel(); - CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - cancellationTokenSource.Cancel(); + Assert.ThrowsException(() => _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), cancellationTokenSource.Token).Wait()); + } - Assert.ThrowsException(() => this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), cancellationTokenSource.Token).Wait()); - } + [TestMethod] + public void PropertiesShouldReturnEmptyDictionary() + { + Assert.AreEqual(0, _testHostManager.Properties.Count); + } - [TestMethod] - public void PropertiesShouldReturnEmptyDictionary() - { - Assert.AreEqual(0, this.testHostManager.Properties.Count); - } + [TestMethod] + public void DefaultTestHostManagerShouldNotBeSharedWhenOptedIn() + { + _testHostManager.Initialize(_mockMessageLogger.Object, $""" + + + + {true} + + + """); + Assert.IsFalse(_testHostManager.Shared); + } - [TestMethod] - public void DefaultTestHostManagerShouldBeShared() - { - Assert.IsTrue(this.testHostManager.Shared); - } + [TestMethod] + public void DefaultTestHostManagerShouldBeShared() + { + Assert.IsTrue(_testHostManager.Shared); + } - [TestMethod] - public void LaunchTestHostShouldUseCustomHostIfSet() - { - var mockCustomLauncher = new Mock(); - this.testHostManager.SetCustomLauncher(mockCustomLauncher.Object); - var currentProcess = Process.GetCurrentProcess(); - mockCustomLauncher.Setup(mc => mc.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(currentProcess.Id); + [TestMethod] + public void LaunchTestHostShouldUseCustomHostIfSet() + { + var mockCustomLauncher = new Mock(); + _testHostManager.SetCustomLauncher(mockCustomLauncher.Object); + var currentProcess = Process.GetCurrentProcess(); + mockCustomLauncher.Setup(mc => mc.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(currentProcess.Id); - this.testHostManager.HostLaunched += this.TestHostManagerHostLaunched; + _testHostManager.HostLaunched += TestHostManagerHostLaunched; - Task pid = this.testHostManager.LaunchTestHostAsync(this.startInfo, CancellationToken.None); - pid.Wait(); - mockCustomLauncher.Verify(mc => mc.LaunchTestHost(It.IsAny(), It.IsAny()), Times.Once); + Task pid = _testHostManager.LaunchTestHostAsync(_startInfo, CancellationToken.None); + pid.Wait(); + mockCustomLauncher.Verify(mc => mc.LaunchTestHost(It.IsAny(), It.IsAny()), Times.Once); - Assert.IsTrue(pid.Result); - Assert.AreEqual(currentProcess.Id, this.testHostId); - } + Assert.IsTrue(pid.Result); + Assert.AreEqual(currentProcess.Id, _testHostId); + } - [TestMethod] - public void LaunchTestHostShouldSetExitCallbackInCaseCustomHost() - { - var mockCustomLauncher = new Mock(); - this.testHostManager.SetCustomLauncher(mockCustomLauncher.Object); - var currentProcess = Process.GetCurrentProcess(); - mockCustomLauncher.Setup(mc => mc.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(currentProcess.Id); - this.testHostManager.LaunchTestHostAsync(this.startInfo, CancellationToken.None).Wait(); + [TestMethod] + public void LaunchTestHostShouldSetExitCallbackInCaseCustomHost() + { + var mockCustomLauncher = new Mock(); + _testHostManager.SetCustomLauncher(mockCustomLauncher.Object); + var currentProcess = Process.GetCurrentProcess(); + mockCustomLauncher.Setup(mc => mc.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(currentProcess.Id); + _testHostManager.LaunchTestHostAsync(_startInfo, CancellationToken.None).Wait(); - this.mockProcessHelper.Verify(ph => ph.SetExitCallback(currentProcess.Id, It.IsAny>())); - } + _mockProcessHelper.Verify(ph => ph.SetExitCallback(currentProcess.Id, It.IsAny>())); + } - [TestMethod] - [TestCategory("Windows")] - public void GetTestSourcesShouldReturnAppropriateSourceIfAppxRecipeIsProvided() - { - var sourcePath = Path.Combine(Path.GetDirectoryName(typeof(TestableTestHostManager).GetTypeInfo().Assembly.GetAssemblyLocation()), @"..\..\..\..\TestAssets\UWPTestAssets\UnitTestApp8.build.appxrecipe"); - IEnumerable sources = this.testHostManager.GetTestSources(new List { sourcePath }); - Assert.IsTrue(sources.Any()); - Assert.IsTrue(sources.FirstOrDefault().EndsWith(".exe", StringComparison.OrdinalIgnoreCase)); - } + [TestMethod] + [TestCategory("Windows")] + public void GetTestSourcesShouldReturnAppropriateSourceIfAppxRecipeIsProvided() + { + var sourcePath = Path.Combine(Path.GetDirectoryName(typeof(TestableTestHostManager).Assembly.GetAssemblyLocation())!, @"..\..\..\..\..\test\TestAssets\UWPTestAssets\UnitTestApp8.build.appxrecipe"); + IEnumerable sources = _testHostManager.GetTestSources(new List { sourcePath }); + Assert.IsTrue(sources.Any()); + Assert.IsTrue(sources.First().EndsWith(".exe", StringComparison.OrdinalIgnoreCase)); + } - [TestMethod] - [TestCategory("Windows")] - public void AppxManifestFileShouldReturnAppropriateSourceIfAppxManifestIsProvided() - { - var appxManifestPath = Path.Combine(Path.GetDirectoryName(typeof(TestableTestHostManager).GetTypeInfo().Assembly.GetAssemblyLocation()), @"..\..\..\..\TestAssets\UWPTestAssets\AppxManifest.xml"); - string source = AppxManifestFile.GetApplicationExecutableName(appxManifestPath); - Assert.AreEqual("UnitTestApp8.exe", source); - } + [TestMethod] + [TestCategory("Windows")] + public void AppxManifestFileShouldReturnAppropriateSourceIfAppxManifestIsProvided() + { + var appxManifestPath = Path.Combine(Path.GetDirectoryName(typeof(TestableTestHostManager).Assembly.GetAssemblyLocation())!, @"..\..\..\..\..\test\TestAssets\UWPTestAssets\AppxManifest.xml"); + string? source = AppxManifestFile.GetApplicationExecutableName(appxManifestPath); + Assert.AreEqual("UnitTestApp8.exe", source); + } - [TestMethod] - public async Task ErrorMessageShouldBeReadAsynchronously() - { - string errorData = "Custom Error Strings"; - this.ErrorCallBackTestHelper(errorData, -1); + [TestMethod] + public async Task ErrorMessageShouldBeReadAsynchronously() + { + string errorData = "Custom Error Strings"; + ErrorCallBackTestHelper(errorData, -1); - await this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), CancellationToken.None); + await _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), CancellationToken.None); - Assert.AreEqual(errorData, this.errorMessage); - } + Assert.AreEqual(errorData, _errorMessage); + } - [TestMethod] - public async Task NoErrorMessageIfExitCodeZero() - { - string errorData = string.Empty; - this.ErrorCallBackTestHelper(errorData, 0); + [TestMethod] + public async Task NoErrorMessageIfExitCodeZero() + { + string errorData = string.Empty; + ErrorCallBackTestHelper(errorData, 0); - await this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), CancellationToken.None); + await _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), CancellationToken.None); - Assert.IsNull(this.errorMessage); - } + Assert.IsNull(_errorMessage); + } - [TestMethod] - [DataRow(null)] - [DataRow("")] - public async Task ErrorReceivedCallbackShouldNotLogNullOrEmptyData(string errorData) - { - this.ErrorCallBackTestHelper(errorData, -1); + [TestMethod] + [DataRow(null)] + [DataRow("")] + public async Task ErrorReceivedCallbackShouldNotLogNullOrEmptyData(string errorData) + { + ErrorCallBackTestHelper(errorData, -1); - await this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), CancellationToken.None); + await _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), CancellationToken.None); - Assert.AreEqual(this.errorMessage, string.Empty); - } + Assert.AreEqual(_errorMessage, string.Empty); + } - [TestMethod] - [DataRow(0)] - [DataRow(-1)] - public async Task ProcessExitedButNoErrorMessageIfNoDataWritten(int exitCode) - { - this.ExitCallBackTestHelper(exitCode); + [TestMethod] + [DataRow(0)] + [DataRow(-1)] + public async Task ProcessExitedButNoErrorMessageIfNoDataWritten(int exitCode) + { + ExitCallBackTestHelper(exitCode); - await this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), CancellationToken.None); + await _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), CancellationToken.None); - Assert.AreEqual(this.errorMessage, string.Empty); - Assert.AreEqual(this.exitCode, exitCode); - } + Assert.AreEqual(_errorMessage, string.Empty); + Assert.AreEqual(_exitCode, exitCode); + } - [TestMethod] - public async Task CleanTestHostAsyncShouldKillTestHostProcess() - { - var pid = Process.GetCurrentProcess().Id; - bool isVerified = false; - this.mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())) - .Callback(p => isVerified = ((Process)p).Id == pid); + [TestMethod] + public async Task CleanTestHostAsyncShouldKillTestHostProcess() + { +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + bool isVerified = false; + _mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())) + .Callback(p => isVerified = ((Process)p).Id == pid); + + ExitCallBackTestHelper(0); + await _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), CancellationToken.None); + await _testableTestHostManager.CleanTestHostAsync(CancellationToken.None); + + Assert.IsTrue(isVerified); + } - this.ExitCallBackTestHelper(0); - await this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), CancellationToken.None); - await this.testableTestHostManager.CleanTestHostAsync(CancellationToken.None); + [TestMethod] + public async Task CleanTestHostAsyncShouldNotThrowIfTestHostIsNotStarted() + { +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + bool isVerified = false; + _mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())).Callback(p => isVerified = ((Process)p).Id == pid).Throws(); + + ExitCallBackTestHelper(0); + await _testableTestHostManager.LaunchTestHostAsync(GetDefaultStartInfo(), CancellationToken.None); + await _testableTestHostManager.CleanTestHostAsync(CancellationToken.None); + + Assert.IsTrue(isVerified); + } - Assert.IsTrue(isVerified); - } + private void TestableTestHostManagerHostExited(object? sender, HostProviderEventArgs e) + { + _errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); + _exitCode = e.ErrroCode; + } - [TestMethod] - public async Task CleanTestHostAsyncShouldNotThrowIfTestHostIsNotStarted() + private void TestHostManagerHostExited(object? sender, HostProviderEventArgs e) + { + if (e.ErrroCode != 0) { - var pid = Process.GetCurrentProcess().Id; - bool isVerified = false; - this.mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())).Callback(p => isVerified = ((Process)p).Id == pid).Throws(); + _errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); + } + } - this.ExitCallBackTestHelper(0); - await this.testableTestHostManager.LaunchTestHostAsync(this.GetDefaultStartInfo(), CancellationToken.None); - await this.testableTestHostManager.CleanTestHostAsync(CancellationToken.None); + private void TestHostManagerHostLaunched(object? sender, HostProviderEventArgs e) + { + _testHostId = e.ProcessId; + } - Assert.IsTrue(isVerified); - } + [MemberNotNull(nameof(_testableTestHostManager))] + private void ErrorCallBackTestHelper(string errorMessage, int exitCode) + { + _testableTestHostManager = new TestableTestHostManager( + Architecture.X64, + Framework.DefaultFramework, + _mockProcessHelper.Object, + true, + _mockMessageLogger.Object); - private void TestableTestHostManagerHostExited(object sender, HostProviderEventArgs e) - { - this.errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); - this.exitCode = e.ErrroCode; - } + _testableTestHostManager.HostExited += TestHostManagerHostExited; - private void TestHostManagerHostExited(object sender, HostProviderEventArgs e) - { - if (e.ErrroCode != 0) - { - this.errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); - } - } + _mockProcessHelper.Setup( + ph => + ph.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>())) + .Callback, Action, Action, Action>( + (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => + { + var process = Process.GetCurrentProcess(); + + errorCallback(process, errorMessage); + exitCallback(process); + }).Returns(Process.GetCurrentProcess()); + + _mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); + } - private void TestHostManagerHostLaunched(object sender, HostProviderEventArgs e) - { - this.testHostId = e.ProcessId; - } + [MemberNotNull(nameof(_testableTestHostManager))] + private void ExitCallBackTestHelper(int exitCode) + { + _testableTestHostManager = new TestableTestHostManager( + Architecture.X64, + Framework.DefaultFramework, + _mockProcessHelper.Object, + true, + _mockMessageLogger.Object); - private void ErrorCallBackTestHelper(string errorMessage, int exitCode) - { - this.testableTestHostManager = new TestableTestHostManager( - Architecture.X64, - Framework.DefaultFramework, - this.mockProcessHelper.Object, - true, - this.mockMessageLogger.Object); - - this.testableTestHostManager.HostExited += this.TestHostManagerHostExited; - - this.mockProcessHelper.Setup( - ph => - ph.LaunchProcess( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>())) - .Callback, Action, Action, Action>( - (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => - { - var process = Process.GetCurrentProcess(); - - errorCallback(process, errorMessage); - exitCallback(process); - }).Returns(Process.GetCurrentProcess()); - - this.mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); - } + _testableTestHostManager.HostExited += TestableTestHostManagerHostExited; - private void ExitCallBackTestHelper(int exitCode) - { - this.testableTestHostManager = new TestableTestHostManager( - Architecture.X64, - Framework.DefaultFramework, - this.mockProcessHelper.Object, - true, - this.mockMessageLogger.Object); - - this.testableTestHostManager.HostExited += this.TestableTestHostManagerHostExited; - - this.mockProcessHelper.Setup( - ph => - ph.LaunchProcess( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>())) - .Callback, Action, Action, Action>( - (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => - { - var process = Process.GetCurrentProcess(); - exitCallback(process); - }).Returns(Process.GetCurrentProcess()); - - this.mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); - } + _mockProcessHelper.Setup( + ph => + ph.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>())) + .Callback, Action, Action, Action>( + (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => + { + var process = Process.GetCurrentProcess(); + exitCallback(process); + }).Returns(Process.GetCurrentProcess()); + + _mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); + } - private TestProcessStartInfo GetDefaultStartInfo() - { - return new TestProcessStartInfo(); - } + private static TestProcessStartInfo GetDefaultStartInfo() + { + return new TestProcessStartInfo(); + } - private class TestableTestHostManager : DefaultTestHostManager + private class TestableTestHostManager : DefaultTestHostManager + { + public TestableTestHostManager( + Architecture architecture, + Framework framework, + IProcessHelper processHelper, + bool shared, + IMessageLogger logger) + : base(processHelper, new FileHelper(), new DotnetHostHelper(), new PlatformEnvironment(), new EnvironmentVariableHelper()) { - public TestableTestHostManager( - Architecture architecture, - Framework framework, - IProcessHelper processHelper, - bool shared, - IMessageLogger logger) - : base(processHelper, new FileHelper(), new PlatformEnvironment(), new DotnetHostHelper()) - { - this.Initialize(logger, $" {architecture} {framework} {!shared} "); - } + Initialize(logger, $" {architecture} {framework} {!shared} "); } } -#pragma warning restore SA1600 } diff --git a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DotnetTestHostManagerTests.cs b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DotnetTestHostManagerTests.cs index ff2b077199..015812c4ab 100644 --- a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DotnetTestHostManagerTests.cs +++ b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/DotnetTestHostManagerTests.cs @@ -1,316 +1,312 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.TestHostProvider.UnitTests.Hosting +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +#if NET +using System.Reflection; +#endif +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.TestHostProvider.UnitTests.Hosting; + +[TestClass] +public class DotnetTestHostManagerTests { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Linq; - using System.Reflection; - using System.Text; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - -#pragma warning disable SA1600 - - [TestClass] - public class DotnetTestHostManagerTests + private const string DefaultDotnetPath = "c:\\tmp\\dotnet.exe"; + + private readonly Mock _mockTestHostLauncher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockFileHelper; + private readonly Mock _mockWindowsRegistry; + private readonly Mock _mockMessageLogger; + private readonly Mock _mockEnvironment; + private readonly Mock _mockRunsettingHelper; + private readonly TestRunnerConnectionInfo _defaultConnectionInfo; + private readonly string[] _testSource = ["test.dll"]; + private readonly string _defaultTestHostPath; + private readonly TestProcessStartInfo _defaultTestProcessStartInfo; + private readonly TestableDotnetTestHostManager _dotnetHostManager; + private readonly Mock _mockEnvironmentVariable; + + private string? _errorMessage; + private int _exitCode; + private int _testHostId; + + private readonly string _temp = Path.GetTempPath(); + + public DotnetTestHostManagerTests() { - private const string DefaultDotnetPath = "c:\\tmp\\dotnet.exe"; - - private readonly Mock mockTestHostLauncher; - - private readonly Mock mockProcessHelper; - - private readonly Mock mockFileHelper; - - private readonly Mock mockWindowsRegistry; - - private readonly Mock mockMessageLogger; - - private readonly Mock mockEnvironment; - - private readonly Mock mockRunsettingHelper; - - private readonly TestRunnerConnectionInfo defaultConnectionInfo; - - private readonly string[] testSource = { "test.dll" }; - - private readonly string defaultTestHostPath; - - private readonly TestProcessStartInfo defaultTestProcessStartInfo; - - private readonly TestableDotnetTestHostManager dotnetHostManager; - - private Mock mockEnvironmentVariable; - - private string errorMessage; - - private int exitCode; - - private int testHostId; - - private string temp = Path.GetTempPath(); - - public DotnetTestHostManagerTests() - { - this.mockTestHostLauncher = new Mock(); - this.mockProcessHelper = new Mock(); - this.mockFileHelper = new Mock(); - this.mockMessageLogger = new Mock(); - this.mockEnvironment = new Mock(); - this.mockWindowsRegistry = new Mock(); - this.mockEnvironmentVariable = new Mock(); - this.mockRunsettingHelper = new Mock(); - this.defaultConnectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.1:123", Role = ConnectionRole.Client }, RunnerProcessId = 0 }; - - this.mockEnvironment.SetupGet(e => e.Architecture).Returns((PlatformArchitecture)Enum.Parse(typeof(PlatformArchitecture), Constants.DefaultPlatform.ToString())); - this.mockRunsettingHelper.SetupGet(r => r.IsDefaultTargetArchitecture).Returns(true); - string defaultSourcePath = Path.Combine(this.temp, "test.dll"); - this.defaultTestHostPath = Path.Combine(this.temp, "testhost.dll"); - this.dotnetHostManager = new TestableDotnetTestHostManager( - this.mockProcessHelper.Object, - this.mockFileHelper.Object, - new DotnetHostHelper(this.mockFileHelper.Object, this.mockEnvironment.Object, this.mockWindowsRegistry.Object, this.mockEnvironmentVariable.Object, this.mockProcessHelper.Object), - this.mockEnvironment.Object, - this.mockRunsettingHelper.Object, - this.mockWindowsRegistry.Object, - this.mockEnvironmentVariable.Object); - this.dotnetHostManager.Initialize(this.mockMessageLogger.Object, string.Empty); - - this.dotnetHostManager.HostExited += this.DotnetHostManagerHostExited; - - // Setup a dummy current process for tests - this.mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns(DefaultDotnetPath); - this.mockProcessHelper.Setup(ph => ph.GetTestEngineDirectory()).Returns(DefaultDotnetPath); - this.mockEnvironmentVariable.Setup(ev => ev.GetEnvironmentVariable(It.IsAny())).Returns(Path.GetDirectoryName(DefaultDotnetPath)); - this.mockFileHelper.Setup(ph => ph.Exists(this.defaultTestHostPath)).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists(DefaultDotnetPath)).Returns(true); - - this.mockTestHostLauncher - .Setup(th => th.LaunchTestHost(It.IsAny(), It.IsAny())) - .Returns(Process.GetCurrentProcess().Id); - - this.mockTestHostLauncher - .Setup(th => th.LaunchTestHost(It.IsAny())) - .Returns(Process.GetCurrentProcess().Id); - - this.defaultTestProcessStartInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { defaultSourcePath }, null, this.defaultConnectionInfo); - } + _mockTestHostLauncher = new Mock(); + _mockProcessHelper = new Mock(); + _mockFileHelper = new Mock(); + _mockMessageLogger = new Mock(); + _mockEnvironment = new Mock(); + _mockWindowsRegistry = new Mock(); + _mockEnvironmentVariable = new Mock(); + _mockRunsettingHelper = new Mock(); + _defaultConnectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.1:123", Role = ConnectionRole.Client }, RunnerProcessId = 0 }; + + _mockEnvironment.SetupGet(e => e.Architecture).Returns((PlatformArchitecture)Enum.Parse(typeof(PlatformArchitecture), Constants.DefaultPlatform.ToString())); + _mockRunsettingHelper.SetupGet(r => r.IsDefaultTargetArchitecture).Returns(true); + string defaultSourcePath = Path.Combine(_temp, "test.dll"); + _defaultTestHostPath = Path.Combine(_temp, "testhost.dll"); + _dotnetHostManager = new TestableDotnetTestHostManager( + _mockProcessHelper.Object, + _mockFileHelper.Object, + new DotnetHostHelper(_mockFileHelper.Object, _mockEnvironment.Object, _mockWindowsRegistry.Object, _mockEnvironmentVariable.Object, _mockProcessHelper.Object), + _mockEnvironment.Object, + _mockRunsettingHelper.Object, + _mockWindowsRegistry.Object, + _mockEnvironmentVariable.Object); + _dotnetHostManager.Initialize(_mockMessageLogger.Object, string.Empty); + + _dotnetHostManager.HostExited += DotnetHostManagerHostExited; + + // Setup a dummy current process for tests + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns(DefaultDotnetPath); + _mockProcessHelper.Setup(ph => ph.GetTestEngineDirectory()).Returns(DefaultDotnetPath); + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessArchitecture()).Returns(PlatformArchitecture.X64); + _mockFileHelper.Setup(ph => ph.Exists(_defaultTestHostPath)).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists(DefaultDotnetPath)).Returns(true); + +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + + _mockTestHostLauncher + .Setup(th => th.LaunchTestHost(It.IsAny(), It.IsAny())) + .Returns(pid); + + _mockTestHostLauncher + .Setup(th => th.LaunchTestHost(It.IsAny())) + .Returns(pid); + + _defaultTestProcessStartInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { defaultSourcePath }, null, _defaultConnectionInfo); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldThrowIfSourceIsNull() - { - Action action = () => this.dotnetHostManager.GetTestHostProcessStartInfo(null, null, this.defaultConnectionInfo); + [TestMethod] + public void GetTestHostProcessStartInfoShouldThrowIfSourceIsNull() + { + Action action = () => _dotnetHostManager.GetTestHostProcessStartInfo(null!, null, _defaultConnectionInfo); - Assert.ThrowsException(action); - } + Assert.ThrowsException(action); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldThrowIfMultipleSourcesAreProvided() - { - var sources = new[] { "test1.dll", "test2.dll" }; - Action action = () => this.dotnetHostManager.GetTestHostProcessStartInfo(sources, null, this.defaultConnectionInfo); + [TestMethod] + public void GetTestHostProcessStartInfoShouldThrowIfMultipleSourcesAreProvided() + { + var sources = new[] { "test1.dll", "test2.dll" }; + Action action = () => _dotnetHostManager.GetTestHostProcessStartInfo(sources, null, _defaultConnectionInfo); - Assert.ThrowsException(action); - } + Assert.ThrowsException(action); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldInvokeDotnetCommandline() - { - this.mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns(DefaultDotnetPath); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldInvokeDotnetCommandline() + { + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns(DefaultDotnetPath); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - Assert.AreEqual(DefaultDotnetPath, startInfo.FileName); - } + Assert.AreEqual(DefaultDotnetPath, startInfo.FileName); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldInvokeDotnetXPlatOnLinux() - { - this.mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("/tmp/dotnet"); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldInvokeDotnetXPlatOnLinux() + { + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("/tmp/dotnet"); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - Assert.AreEqual("/tmp/dotnet", startInfo.FileName); - } + Assert.AreEqual("/tmp/dotnet", startInfo.FileName); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldInvokeDotnetExec() - { - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + [TestMethod] + public void GetTestHostProcessStartInfoShouldInvokeDotnetExec() + { + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + var startInfo = GetDefaultStartInfo(); - StringAssert.StartsWith(startInfo.Arguments, "exec"); - } + StringAssert.StartsWith(startInfo.Arguments, "exec"); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldAddRuntimeConfigJsonIfExists() - { - this.mockFileHelper.Setup(fh => fh.Exists("test.runtimeconfig.json")).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldAddRuntimeConfigJsonIfExists() + { + _mockFileHelper.Setup(fh => fh.Exists("test.runtimeconfig.json")).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - StringAssert.Contains(startInfo.Arguments, "--runtimeconfig \"test.runtimeconfig.json\""); - } + StringAssert.Contains(startInfo.Arguments, "--runtimeconfig \"test.runtimeconfig.json\""); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldNotAddRuntimeConfigJsonIfNotExists() - { - this.mockFileHelper.Setup(fh => fh.Exists("test.runtimeconfig.json")).Returns(false); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldNotAddRuntimeConfigJsonIfNotExists() + { + _mockFileHelper.Setup(fh => fh.Exists("test.runtimeconfig.json")).Returns(false); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - Assert.IsFalse(startInfo.Arguments.Contains("--runtimeconfig \"test.runtimeconfig.json\"")); - } + Assert.IsFalse(startInfo.Arguments!.Contains("--runtimeconfig \"test.runtimeconfig.json\"")); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldAddDepsFileJsonIfExists() - { - this.mockFileHelper.Setup(fh => fh.Exists("test.deps.json")).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldAddDepsFileJsonIfExists() + { + _mockFileHelper.Setup(fh => fh.Exists("test.deps.json")).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - StringAssert.Contains(startInfo.Arguments, "--depsfile \"test.deps.json\""); - } + StringAssert.Contains(startInfo.Arguments, "--depsfile \"test.deps.json\""); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldNotAddDepsFileJsonIfNotExists() - { - this.mockFileHelper.Setup(fh => fh.Exists("test.deps.json")).Returns(false); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldNotAddDepsFileJsonIfNotExists() + { + _mockFileHelper.Setup(fh => fh.Exists("test.deps.json")).Returns(false); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - Assert.IsFalse(startInfo.Arguments.Contains("--depsfile \"test.deps.json\"")); - } + Assert.IsFalse(startInfo.Arguments!.Contains("--depsfile \"test.deps.json\"")); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeConnectionInfo() - { - var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets }, RunnerProcessId = 101 }; - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeConnectionInfo() + { + var connectionInfo = new TestRunnerConnectionInfo { Port = 123, ConnectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.0:123", Role = ConnectionRole.Client, Transport = Transport.Sockets }, RunnerProcessId = 101 }; + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(this.testSource, null, connectionInfo); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(_testSource, null, connectionInfo); - StringAssert.Contains(startInfo.Arguments, "--port " + connectionInfo.Port + " --endpoint " + connectionInfo.ConnectionInfo.Endpoint + " --role client --parentprocessid 101"); - } + StringAssert.Contains(startInfo.Arguments, "--port " + connectionInfo.Port + " --endpoint " + connectionInfo.ConnectionInfo.Endpoint + " --role client --parentprocessid 101"); + } - [TestMethod] - public void GetTestHostConnectionInfoShouldIncludeEndpointRoleAndChannelType() - { - var connectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.1:0", Role = ConnectionRole.Client, Transport = Transport.Sockets }; + [TestMethod] + public void GetTestHostConnectionInfoShouldIncludeEndpointRoleAndChannelType() + { + var connectionInfo = new TestHostConnectionInfo { Endpoint = "127.0.0.1:0", Role = ConnectionRole.Client, Transport = Transport.Sockets }; - var info = this.dotnetHostManager.GetTestHostConnectionInfo(); + var info = _dotnetHostManager.GetTestHostConnectionInfo(); - Assert.AreEqual(connectionInfo, info); - } + Assert.AreEqual(connectionInfo, info); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeEnvironmentVariables() - { - var environmentVariables = new Dictionary { { "k1", "v1" }, { "k2", "v2" } }; - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeEnvironmentVariables() + { + var environmentVariables = new Dictionary { { "k1", "v1" }, { "k2", "v2" } }; + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(this.testSource, environmentVariables, this.defaultConnectionInfo); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(_testSource, environmentVariables, _defaultConnectionInfo); - Assert.AreEqual(environmentVariables, startInfo.EnvironmentVariables); - } + Assert.AreEqual(environmentVariables, startInfo.EnvironmentVariables); + } - [TestMethod] - public void GetTestHostProcessStartIfDepsFileNotFoundAndTestHostFoundShouldNotThrowException() - { - this.mockFileHelper.Setup(fh => fh.Exists("test.deps.json")).Returns(false); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartIfDepsFileNotFoundAndTestHostFoundShouldNotThrowException() + { + _mockFileHelper.Setup(fh => fh.Exists("test.deps.json")).Returns(false); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); - StringAssert.Contains(startInfo.Arguments, "testhost.dll"); - } + var startInfo = GetDefaultStartInfo(); + StringAssert.Contains(startInfo.Arguments, "testhost.dll"); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldUseTestHostX64ExePresentOnWindows() - { - var testhostExePath = "testhost.exe"; - this.mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + [TestMethod] + public void GetTestHostProcessStartInfoShouldUseTestHostX64ExePresentOnWindows() + { + var testhostExePath = "testhost.exe"; + _mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - StringAssert.Contains(startInfo.FileName, testhostExePath); - } + StringAssert.Contains(startInfo.FileName, testhostExePath); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldUseDotnetExeOnUnixWithTestHostDllPath() - { - this.mockFileHelper.Setup(ph => ph.Exists("testhost.x86.exe")).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Unix); + [TestMethod] + public void GetTestHostProcessStartInfoShouldUseDotnetExeOnUnixWithTestHostDllPath() + { + _mockFileHelper.Setup(ph => ph.Exists("testhost.x86.exe")).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Unix); - var startInfo = this.GetDefaultStartInfo(); + var startInfo = GetDefaultStartInfo(); - StringAssert.Contains(startInfo.FileName, "dotnet"); - StringAssert.Contains(startInfo.Arguments, "testhost.dll"); - } + StringAssert.Contains(startInfo.FileName, "dotnet"); + StringAssert.Contains(startInfo.Arguments, "testhost.dll"); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldUseTestHostExeIfPresentOnWindows() - { - var testhostExePath = "testhost.exe"; - this.mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + [TestMethod] + public void GetTestHostProcessStartInfoShouldUseTestHostExeIfPresentOnWindows() + { + var testhostExePath = "testhost.exe"; + _mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - this.dotnetHostManager.Initialize(this.mockMessageLogger.Object, "x64"); - var startInfo = this.GetDefaultStartInfo(); + _dotnetHostManager.Initialize(_mockMessageLogger.Object, "x64"); + var startInfo = GetDefaultStartInfo(); - StringAssert.Contains(startInfo.FileName, testhostExePath); - } + StringAssert.Contains(startInfo.FileName, testhostExePath); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldUseDotnetHostPathFromRunsettings() - { - var dotnetHostPath = @"C:\dotnet.exe"; - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - this.dotnetHostManager.Initialize(this.mockMessageLogger.Object, $"{dotnetHostPath}"); - var startInfo = this.GetDefaultStartInfo(); + [TestMethod] + public void GetTestHostProcessStartInfoShouldUseDotnetHostPathFromRunsettings() + { + var dotnetHostPath = @"C:\dotnet.exe"; + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + _dotnetHostManager.Initialize(_mockMessageLogger.Object, $"{dotnetHostPath}"); + var startInfo = GetDefaultStartInfo(); - StringAssert.Contains(startInfo.FileName, dotnetHostPath); - } + StringAssert.Contains(startInfo.FileName, dotnetHostPath); + } - [TestMethod] - [TestCategory("Windows")] - public void GetTestHostProcessStartInfoShouldUseTestHostExeFromNugetIfNotFoundInSourceLocation() - { - var testhostExePath = "testhost.exe"; - this.dotnetHostManager.Initialize(this.mockMessageLogger.Object, "x64"); - this.mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(false); - this.mockFileHelper.Setup(ph => ph.Exists("C:\\packages\\microsoft.testplatform.testhost\\15.0.0-Dev\\build\\netcoreapp2.1\\x64\\testhost.exe")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - var sourcePath = Path.Combine(this.temp, "test.dll"); - - string runtimeConfigFileContent = -@"{ + [TestMethod] + [TestCategory("Windows")] + public void GetTestHostProcessStartInfoShouldUseTestHostExeFromNugetIfNotFoundInSourceLocation() + { + var testhostExePath = "testhost.exe"; + _dotnetHostManager.Initialize(_mockMessageLogger.Object, "x64"); + _mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(false); + _mockFileHelper.Setup(ph => ph.Exists("C:\\packages\\microsoft.testplatform.testhost\\15.0.0-Dev\\build\\net8.0\\x64\\testhost.exe")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + var sourcePath = Path.Combine(_temp, "test.dll"); + + string runtimeConfigFileContent = + @"{ ""runtimeOptions"": { ""additionalProbingPaths"": [ ""C:\\packages"" @@ -318,8 +314,8 @@ public void GetTestHostProcessStartInfoShouldUseTestHostExeFromNugetIfNotFoundIn } }"; - string depsFileContent = -@"{ + string depsFileContent = + @"{ ""runtimeTarget"": { ""name"": "".NETCoreApp,Version=v1.0"", ""signature"": ""8f25843f8e35a3e80ef4ae98b95117ea5c468b3f"" @@ -330,7 +326,7 @@ public void GetTestHostProcessStartInfoShouldUseTestHostExeFromNugetIfNotFoundIn ""microsoft.testplatform.testhost/15.0.0-Dev"": { ""dependencies"": { ""Microsoft.TestPlatform.ObjectModel"": ""15.0.0-Dev"", - ""Newtonsoft.Json"": ""9.0.1"" + ""Newtonsoft.Json"": ""13.0.3"" }, ""runtime"": { ""lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll"": { }, @@ -352,35 +348,38 @@ public void GetTestHostProcessStartInfoShouldUseTestHostExeFromNugetIfNotFoundIn } }"; - MemoryStream runtimeConfigStream = new MemoryStream(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.runtimeconfig.dev.json"))).Returns(true); + MemoryStream runtimeConfigStream = new(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.runtimeconfig.dev.json"))).Returns(true); - MemoryStream depsFileStream = new MemoryStream(Encoding.UTF8.GetBytes(depsFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.deps.json"))).Returns(true); + MemoryStream depsFileStream = new(Encoding.UTF8.GetBytes(depsFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.deps.json"))).Returns(true); - string testHostFullPath = @"C:\packages\microsoft.testplatform.testhost/15.0.0-Dev\lib/netstandard1.5/testhost.dll"; - this.mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); + string testHostFullPath = @"C:\packages\microsoft.testplatform.testhost/15.0.0-Dev\lib/netstandard1.5/testhost.dll"; + _mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - StringAssert.Contains(startInfo.FileName, "C:\\packages\\microsoft.testplatform.testhost\\15.0.0-Dev\\build\\netcoreapp2.1\\x64\\testhost.exe"); - } - [TestMethod] - [TestCategory("Windows")] - public void GetTestHostProcessStartInfoShouldUseTestHostX86ExeFromNugetIfNotFoundInSourceLocation() - { - var testhostExePath = "testhost.x86.exe"; - this.dotnetHostManager.Initialize(this.mockMessageLogger.Object, "x86"); - this.mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(false); - this.mockFileHelper.Setup(ph => ph.Exists($"C:\\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost\\15.0.0-Dev{Path.DirectorySeparatorChar}build\\netcoreapp2.1\\x86\\testhost.x86.exe")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - var sourcePath = Path.Combine(this.temp, "test.dll"); - - string runtimeConfigFileContent = -@"{ + // If this starts failing after updating TFMs of packakges, the GetTestHostProcessStartInfo defines the default version + // to use in GetTestHostProcessStartInfo, change that to the lowest supported netcore version, and pass this test. + StringAssert.Contains(startInfo.FileName, "C:\\packages\\microsoft.testplatform.testhost\\15.0.0-Dev\\build\\net8.0\\x64\\testhost.exe"); + } + + [TestMethod] + [TestCategory("Windows")] + public void GetTestHostProcessStartInfoShouldUseTestHostX86ExeFromNugetIfNotFoundInSourceLocation() + { + var testhostExePath = "testhost.x86.exe"; + _dotnetHostManager.Initialize(_mockMessageLogger.Object, "x86"); + _mockFileHelper.Setup(ph => ph.Exists(testhostExePath)).Returns(false); + _mockFileHelper.Setup(ph => ph.Exists($"C:\\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost\\15.0.0-Dev{Path.DirectorySeparatorChar}build\\net8.0\\x86\\testhost.x86.exe")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + var sourcePath = Path.Combine(_temp, "test.dll"); + + string runtimeConfigFileContent = + @"{ ""runtimeOptions"": { ""additionalProbingPaths"": [ ""C:\\packages"" @@ -388,8 +387,8 @@ public void GetTestHostProcessStartInfoShouldUseTestHostX86ExeFromNugetIfNotFoun } }"; - string depsFileContent = -@"{ + string depsFileContent = + @"{ ""runtimeTarget"": { ""name"": "".NETCoreApp,Version=v1.0"", ""signature"": ""8f25843f8e35a3e80ef4ae98b95117ea5c468b3f"" @@ -400,7 +399,7 @@ public void GetTestHostProcessStartInfoShouldUseTestHostX86ExeFromNugetIfNotFoun ""microsoft.testplatform.testhost/15.0.0-Dev"": { ""dependencies"": { ""Microsoft.TestPlatform.ObjectModel"": ""15.0.0-Dev"", - ""Newtonsoft.Json"": ""9.0.1"" + ""Newtonsoft.Json"": ""13.0.3"" }, ""runtime"": { ""lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll"": { }, @@ -422,274 +421,309 @@ public void GetTestHostProcessStartInfoShouldUseTestHostX86ExeFromNugetIfNotFoun } }"; - MemoryStream runtimeConfigStream = new MemoryStream(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.runtimeconfig.dev.json"))).Returns(true); + MemoryStream runtimeConfigStream = new(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.runtimeconfig.dev.json"))).Returns(true); - MemoryStream depsFileStream = new MemoryStream(Encoding.UTF8.GetBytes(depsFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.deps.json"))).Returns(true); + MemoryStream depsFileStream = new(Encoding.UTF8.GetBytes(depsFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.deps.json"))).Returns(true); - string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; - this.mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); + string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; + _mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); - - StringAssert.Contains(startInfo.FileName, "C:\\packages\\microsoft.testplatform.testhost\\15.0.0-Dev\\build\\netcoreapp2.1\\x86\\testhost.x86.exe"); - } + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - [TestMethod] - public void LaunchTestHostShouldLaunchProcessWithNullEnvironmentVariablesOrArgs() - { - var expectedProcessId = Process.GetCurrentProcess().Id; - this.mockTestHostLauncher.Setup(thl => thl.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(expectedProcessId); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); - this.dotnetHostManager.SetCustomLauncher(this.mockTestHostLauncher.Object); + // If this starts failing after updating TFMs of packakges, the GetTestHostProcessStartInfo defines the default version + // to use in GetTestHostProcessStartInfo, change that to the lowest supported netcore version, and pass this test. + StringAssert.Contains(startInfo.FileName, "C:\\packages\\microsoft.testplatform.testhost\\15.0.0-Dev\\build\\net8.0\\x86\\testhost.x86.exe"); + } - this.dotnetHostManager.HostLaunched += this.DotnetHostManagerHostLaunched; + [TestMethod] + public void LaunchTestHostShouldLaunchProcessWithNullEnvironmentVariablesOrArgs() + { +#if NET5_0_OR_GREATER + var expectedProcessId = Environment.ProcessId; +#else + int expectedProcessId; + using (var p = Process.GetCurrentProcess()) + expectedProcessId = p.Id; +#endif + _mockTestHostLauncher.Setup(thl => thl.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(expectedProcessId); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + var startInfo = GetDefaultStartInfo(); + _dotnetHostManager.SetCustomLauncher(_mockTestHostLauncher.Object); + + _dotnetHostManager.HostLaunched += DotnetHostManagerHostLaunched; + + Task processId = _dotnetHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None); + processId.Wait(); + + Assert.IsTrue(processId.Result); + Assert.AreEqual(expectedProcessId, _testHostId); + } - Task processId = this.dotnetHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None); - processId.Wait(); + [TestMethod] + public void LaunchTestHostAsyncShouldNotStartHostProcessIfCancellationTokenIsSet() + { +#if NET5_0_OR_GREATER + var expectedProcessId = Environment.ProcessId; +#else + int expectedProcessId; + using (var p = Process.GetCurrentProcess()) + expectedProcessId = p.Id; +#endif + _mockTestHostLauncher.Setup(thl => thl.LaunchTestHost(It.IsAny())).Returns(expectedProcessId); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + var startInfo = GetDefaultStartInfo(); + + CancellationTokenSource cancellationTokenSource = new(); + cancellationTokenSource.Cancel(); + + Assert.ThrowsException(() => _dotnetHostManager.LaunchTestHostAsync(startInfo, cancellationTokenSource.Token).Wait()); + } - Assert.IsTrue(processId.Result); - Assert.AreEqual(expectedProcessId, this.testHostId); - } + [TestMethod] + public void LaunchTestHostShouldLaunchProcessWithEnvironmentVariables() + { + var variables = new Dictionary { { "k1", "v1" }, { "k2", "v2" } }; + var startInfo = new TestProcessStartInfo { EnvironmentVariables = variables }; + _dotnetHostManager.SetCustomLauncher(_mockTestHostLauncher.Object); - [TestMethod] - public void LaunchTestHostAsyncShouldNotStartHostProcessIfCancellationTokenIsSet() - { - var expectedProcessId = Process.GetCurrentProcess().Id; - this.mockTestHostLauncher.Setup(thl => thl.LaunchTestHost(It.IsAny())).Returns(expectedProcessId); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var startInfo = this.GetDefaultStartInfo(); + _dotnetHostManager.HostLaunched += DotnetHostManagerHostLaunched; - CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - cancellationTokenSource.Cancel(); + Task processId = _dotnetHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None); + processId.Wait(); - Assert.ThrowsException(() => this.dotnetHostManager.LaunchTestHostAsync(startInfo, cancellationTokenSource.Token).Wait()); - } + Assert.IsTrue(processId.Result); + _mockTestHostLauncher.Verify(thl => thl.LaunchTestHost(It.Is(x => x.EnvironmentVariables!.Equals(variables)), It.IsAny()), Times.Once); + } - [TestMethod] - public void LaunchTestHostShouldLaunchProcessWithEnvironmentVariables() - { - var variables = new Dictionary { { "k1", "v1" }, { "k2", "v2" } }; - var startInfo = new TestProcessStartInfo { EnvironmentVariables = variables }; - this.dotnetHostManager.SetCustomLauncher(this.mockTestHostLauncher.Object); + [TestMethod] + public void DotnetTestHostManagerShouldNotBeShared() + { + Assert.IsFalse(_dotnetHostManager.Shared); + } - this.dotnetHostManager.HostLaunched += this.DotnetHostManagerHostLaunched; + [TestMethod] + public void GetTestHostProcessStartInfoShouldThrowExceptionWhenDotnetIsNotInstalled() + { + // To validate the else part, set current process to exe other than dotnet + _mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("vstest.console.exe"); - Task processId = this.dotnetHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None); - processId.Wait(); + // Reset the muxer + _mockEnvironmentVariable.Setup(ev => ev.GetEnvironmentVariable(It.IsAny())).Returns(string.Empty); - Assert.IsTrue(processId.Result); - this.mockTestHostLauncher.Verify(thl => thl.LaunchTestHost(It.Is(x => x.EnvironmentVariables.Equals(variables)), It.IsAny()), Times.Once); + char separator = ';'; + var dotnetExeName = "dotnet.exe"; + if (!Environment.OSVersion.Platform.ToString().StartsWith("Win")) + { + separator = ':'; + dotnetExeName = "dotnet"; } - [TestMethod] - public void DotnetTestHostManagerShouldNotBeShared() + var paths = Environment.GetEnvironmentVariable("PATH")!.Split(separator); + + foreach (string path in paths) { - Assert.IsFalse(this.dotnetHostManager.Shared); + string dotnetExeFullPath = Path.Combine(path.Trim(), dotnetExeName); + _mockFileHelper.Setup(fh => fh.Exists(dotnetExeFullPath)).Returns(false); } - [TestMethod] - public void GetTestHostProcessStartInfoShouldThrowExceptionWhenDotnetIsNotInstalled() - { - // To validate the else part, set current process to exe other than dotnet - this.mockProcessHelper.Setup(ph => ph.GetCurrentProcessFileName()).Returns("vstest.console.exe"); - - // Reset the muxer - this.mockEnvironmentVariable.Setup(ev => ev.GetEnvironmentVariable(It.IsAny())).Returns(string.Empty); - - char separator = ';'; - var dotnetExeName = "dotnet.exe"; - if (!System.Environment.OSVersion.Platform.ToString().StartsWith("Win")) - { - separator = ':'; - dotnetExeName = "dotnet"; - } + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); - var paths = Environment.GetEnvironmentVariable("PATH").Split(separator); + Action action = () => GetDefaultStartInfo(); - foreach (string path in paths) - { - string dotnetExeFullPath = Path.Combine(path.Trim(), dotnetExeName); - this.mockFileHelper.Setup(fh => fh.Exists(dotnetExeFullPath)).Returns(false); - } + Assert.ThrowsException(action); + } - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeSourceDirectoryAsWorkingDirectory() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "testhost.dll"))).Returns(true); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - Action action = () => this.GetDefaultStartInfo(); + Assert.AreEqual(Path.GetDirectoryName(_temp), startInfo.WorkingDirectory); + } - Assert.ThrowsException(action); - } + [TestMethod] + public void GetTestPlatformExtensionsShouldReturnEmptySetIfSourceDirectoryDoesNotExist() + { + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); + var extensions = _dotnetHostManager.GetTestPlatformExtensions(new[] { $".{Path.DirectorySeparatorChar}foo.dll" }, []); - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeSourceDirectoryAsWorkingDirectory() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "testhost.dll"))).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + Assert.AreEqual(0, extensions.Count()); + } - Assert.AreEqual(Path.GetDirectoryName(this.temp), startInfo.WorkingDirectory); - } + [TestMethod] + public void GetTestPlatformExtensionsShouldReturnLibrariesFromSourceDirectory() + { + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(new[] { "foo.TestAdapter.dll" }); + var extensions = _dotnetHostManager.GetTestPlatformExtensions(new[] { $".{Path.DirectorySeparatorChar}foo.dll" }, []); - [TestMethod] - public void GetTestPlatformExtensionsShouldReturnEmptySetIfSourceDirectoryDoesNotExist() - { - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); - var extensions = this.dotnetHostManager.GetTestPlatformExtensions(new[] { $".{Path.DirectorySeparatorChar}foo.dll" }, Enumerable.Empty()); + CollectionAssert.AreEqual(new[] { "foo.TestAdapter.dll" }, extensions.ToArray()); + } - Assert.AreEqual(0, extensions.Count()); - } + [TestMethod] + public void GetTestPlatformExtensionsShouldReturnEmptySetIfSourceDirectoryIsEmpty() + { + // Parent directory is empty since the input source is file "test.dll" + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(new[] { "foo.dll" }); + var extensions = _dotnetHostManager.GetTestPlatformExtensions(_testSource, []); - [TestMethod] - public void GetTestPlatformExtensionsShouldReturnLibariesFromSourceDirectory() - { - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(new[] { "foo.TestAdapter.dll" }); - var extensions = this.dotnetHostManager.GetTestPlatformExtensions(new[] { $".{Path.DirectorySeparatorChar}foo.dll" }, Enumerable.Empty()); + Assert.AreEqual(0, extensions.Count()); + } - CollectionAssert.AreEqual(new[] { "foo.TestAdapter.dll" }, extensions.ToArray()); - } + [TestMethod] + public void GetTestPlatformExtensionsShouldNotAddNonCoverletDataCollectorsExtensionsIfPresent() + { + _mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + _mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(new[] { "foo.dll" }); + var extensions = _dotnetHostManager.GetTestPlatformExtensions(_testSource, ["abc.dataollector.dll"]); - [TestMethod] - public void GetTestPlatformExtensionsShouldReturnEmptySetIfSourceDirectoryIsEmpty() - { - // Parent directory is empty since the input source is file "test.dll" - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(new[] { "foo.dll" }); - var extensions = this.dotnetHostManager.GetTestPlatformExtensions(this.testSource, Enumerable.Empty()); + Assert.AreEqual(0, extensions.Count()); + } - Assert.AreEqual(0, extensions.Count()); - } + [TestMethod] + public async Task LaunchTestHostShouldLaunchProcessWithConnectionInfo() + { + var expectedArgs = "exec \"" + _defaultTestHostPath + "\"" +#if NET + + " --roll-forward Major" +#endif + + " --port 123 --endpoint 127.0.0.1:123 --role client --parentprocessid 0"; + _dotnetHostManager.SetCustomLauncher(_mockTestHostLauncher.Object); + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); + + _mockTestHostLauncher.Verify(thl => thl.LaunchTestHost(It.Is(x => x.Arguments!.Equals(expectedArgs)), It.IsAny()), Times.Once); + } - [TestMethod] - public void GetTestPlatformExtensionsShouldNotAddNonCoverletDataCollectorsExtensionsIfPresent() - { - this.mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - this.mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, It.IsAny())).Returns(new[] { "foo.dll" }); - var extensions = this.dotnetHostManager.GetTestPlatformExtensions(this.testSource, new List { "abc.dataollector.dll" }); + [TestMethod] + public void LaunchTestHostShouldSetExitCallBackInCaseCustomHost() + { +#if NET5_0_OR_GREATER + var expectedProcessId = Environment.ProcessId; +#else + int expectedProcessId; + using (var p = Process.GetCurrentProcess()) + expectedProcessId = p.Id; +#endif + _mockTestHostLauncher.Setup(thl => thl.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(expectedProcessId); + _mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + + var startInfo = GetDefaultStartInfo(); + _dotnetHostManager.SetCustomLauncher(_mockTestHostLauncher.Object); + _dotnetHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None).Wait(); + + _mockProcessHelper.Verify(ph => ph.SetExitCallback(expectedProcessId, It.IsAny>())); + } - Assert.AreEqual(0, extensions.Count()); - } + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirectoryIfDepsFileNotFound() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); + string expectedTestHostPath = Path.Combine(_temp, "testhost.dll"); + _mockFileHelper.Setup(ph => ph.Exists(expectedTestHostPath)).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.runtimeconfig.dev.json"))).Returns(true); - [TestMethod] - public async Task LaunchTestHostShouldLaunchProcessWithConnectionInfo() - { - var expectedArgs = "exec \"" + this.defaultTestHostPath + "\" --port 123 --endpoint 127.0.0.1:123 --role client --parentprocessid 0"; - this.dotnetHostManager.SetCustomLauncher(this.mockTestHostLauncher.Object); - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - this.mockTestHostLauncher.Verify(thl => thl.LaunchTestHost(It.Is(x => x.Arguments.Equals(expectedArgs)), It.IsAny()), Times.Once); - } + StringAssert.Contains(startInfo.Arguments, expectedTestHostPath); + } - [TestMethod] - public void LaunchTestHostShouldSetExitCallBackInCaseCustomHost() - { - var expectedProcessId = Process.GetCurrentProcess().Id; - this.mockTestHostLauncher.Setup(thl => thl.LaunchTestHost(It.IsAny(), It.IsAny())).Returns(expectedProcessId); - this.mockFileHelper.Setup(ph => ph.Exists("testhost.dll")).Returns(true); + // TODO: This assembly was previously compiled as net472 and so it was skipped and only ran as net8.0. This fails in test, but works in code that is not isolated in appdomain. Might be worth fixing because we get one null here, and another in DotnetTestHostManager. + // Assembly.GetEntryAssembly().Location is null because of running in app domain. +#if NET + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeTestHostPathNextToTestRunnerIfTesthostDllIsNoFoundAndDepsFileNotFound() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); + string testhostNextToTestDll = Path.Combine(_temp, "testhost.dll"); + _mockFileHelper.Setup(ph => ph.Exists(testhostNextToTestDll)).Returns(false); + + var here = Path.GetDirectoryName(Assembly.GetEntryAssembly()!.Location)!; + var expectedTestHostPath = Path.Combine(here, "testhost.dll"); + _mockFileHelper.Setup(ph => ph.Exists(expectedTestHostPath)).Returns(true); + + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); + + StringAssert.Contains(startInfo.Arguments, expectedTestHostPath); + var expectedAdditionalDepsPath = Path.Combine(here, "testhost.deps.json"); + StringAssert.Contains(startInfo.Arguments, $"--additional-deps \"{expectedAdditionalDepsPath}\""); + var expectedAdditionalProbingPath = here; + StringAssert.Contains(startInfo.Arguments, $"--additionalprobingpath \"{expectedAdditionalProbingPath}\""); + var expectedRuntimeConfigPath = Path.Combine(here, "testhost-latest.runtimeconfig.json"); + StringAssert.Contains(startInfo.Arguments, $"--runtimeconfig \"{expectedRuntimeConfigPath}\""); + } - var startInfo = this.GetDefaultStartInfo(); - this.dotnetHostManager.SetCustomLauncher(this.mockTestHostLauncher.Object); - this.dotnetHostManager.LaunchTestHostAsync(startInfo, CancellationToken.None).Wait(); +#endif - this.mockProcessHelper.Verify(ph => ph.SetExitCallback(expectedProcessId, It.IsAny>())); - } + // TODO: This assembly was previously compiled as net472 and so it was skipped and only ran as net8.0. This fails in test, but works in code that is not isolated in appdomain. Might be worth fixing because we get one null here, and another in DotnetTestHostManager. + // Assembly.GetEntryAssembly().Location is null because of running in app domain. +#if NET - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirectoryIfDepsFileNotFound() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); - string expectedTestHostPath = Path.Combine(this.temp, "testhost.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(expectedTestHostPath)).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.runtimeconfig.dev.json"))).Returns(true); + [TestMethod] - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + // we can't put in a "default" value, and we don't have other way to determine if this provided value is the + // runtime default or the actual value that user provided, so right now the default will use the latest, instead + // or the more correct 1.0, it should be okay, as that version is not supported anymore anyway + [DataRow("net8.0", "8.0", true)] - StringAssert.Contains(startInfo.Arguments, expectedTestHostPath); - } + // net9.0 is currently the latest released version, but it still has it's own runtime config, it is not the same as + // "latest" which means the latest you have on system. So if you have only 5.0 SDK then net8.0 will fail because it can't find net8.0, + // but latest would use net9.0 because that is the latest one on your system. + [DataRow("net9.0", "9.0", true)] + [DataRow("net9.0", "latest", false)] + public void GetTestHostProcessStartInfoShouldIncludeTestHostPathNextToTestRunnerIfTesthostDllIsNoFoundAndDepsFileNotFoundWithTheCorrectTfm(string tfm, string suffix, bool runtimeConfigExists) + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); + string testhostNextToTestDll = Path.Combine(_temp, "testhost.dll"); + _mockFileHelper.Setup(ph => ph.Exists(testhostNextToTestDll)).Returns(false); - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeTestHostPathNextToTestRunnerIfTesthostDllIsNoFoundAndDepsFileNotFound() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); - string testhostNextToTestDll = Path.Combine(this.temp, "testhost.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(testhostNextToTestDll)).Returns(false); - - var here = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); - var expectedTestHostPath = Path.Combine(here, "testhost.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(expectedTestHostPath)).Returns(true); - - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); - - StringAssert.Contains(startInfo.Arguments, expectedTestHostPath); - var expectedAdditionalDepsPath = Path.Combine(here, "testhost.deps.json"); - StringAssert.Contains(startInfo.Arguments, $"--additional-deps \"{expectedAdditionalDepsPath}\""); - var expectedAdditionalProbingPath = here; - StringAssert.Contains(startInfo.Arguments, $"--additionalprobingpath \"{expectedAdditionalProbingPath}\""); - var expectedRuntimeConfigPath = Path.Combine(here, "testhost-latest.runtimeconfig.json"); - StringAssert.Contains(startInfo.Arguments, $"--runtimeconfig \"{expectedRuntimeConfigPath}\""); - } + var here = Path.GetDirectoryName(Assembly.GetEntryAssembly()!.Location)!; + var testhostNextToRunner = Path.Combine(here, "testhost.dll"); + _mockFileHelper.Setup(ph => ph.Exists(testhostNextToRunner)).Returns(true); - [TestMethod] - - // we can't put in a "default" value, and we don't have other way to determine if this provided value is the - // runtime default or the actual value that user provided, so right now the default will use the latest, instead - // or the more correct 1.0, it should be okay, as that version is not supported anymore anyway - [DataRow("netcoreapp1.0", "latest")] - [DataRow("netcoreapp2.1", "2.1")] - [DataRow("netcoreapp3.1", "3.1")] - [DataRow("net5.0", "5.0")] - - // net6.0 is currently the latest released version, but it still has it's own runtime config, it is not the same as - // "latest" which means the latest you have on system. So if you have only 5.0 SDK then net6.0 will fail because it can't find net6.0, - // but latest would use net5.0 because that is the latest one on your system. - [DataRow("net6.0", "6.0")] - public void GetTestHostProcessStartInfoShouldIncludeTestHostPathNextToTestRunnerIfTesthostDllIsNoFoundAndDepsFileNotFoundWithTheCorrectTfm(string tfm, string suffix) - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); - string testhostNextToTestDll = Path.Combine(this.temp, "testhost.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(testhostNextToTestDll)).Returns(false); + _mockFileHelper.Setup(ph => ph.Exists(It.Is(s => s.Contains($"{suffix}.runtimeconfig.json")))).Returns(runtimeConfigExists); - var here = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); - var testhostNextToRunner = Path.Combine(here, "testhost.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(testhostNextToRunner)).Returns(true); + _dotnetHostManager.Initialize(_mockMessageLogger.Object, $"{tfm}"); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - this.dotnetHostManager.Initialize(this.mockMessageLogger.Object, $"{tfm}"); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + var expectedRuntimeConfigPath = Path.Combine(here, $"testhost-{suffix}.runtimeconfig.json"); + StringAssert.Contains(startInfo.Arguments, $"--runtimeconfig \"{expectedRuntimeConfigPath}\""); + } - var expectedRuntimeConfigPath = Path.Combine(here, $"testhost-{suffix}.runtimeconfig.json"); - StringAssert.Contains(startInfo.Arguments, $"--runtimeconfig \"{expectedRuntimeConfigPath}\""); - } +#endif - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirectoryIfRunConfigDevFileNotFound() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); - string expectedTestHostPath = Path.Combine(this.temp, "testhost.dll"); - this.mockFileHelper.Setup(ph => ph.Exists(expectedTestHostPath)).Returns(true); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.deps.json"))).Returns(true); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirectoryIfRunConfigDevFileNotFound() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); + string expectedTestHostPath = Path.Combine(_temp, "testhost.dll"); + _mockFileHelper.Setup(ph => ph.Exists(expectedTestHostPath)).Returns(true); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.deps.json"))).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - Assert.IsTrue(startInfo.Arguments.Contains(expectedTestHostPath)); - } + Assert.IsTrue(startInfo.Arguments!.Contains(expectedTestHostPath)); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromDepsFile() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromDepsFile() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); - string runtimeConfigFileContent = -@"{ + string runtimeConfigFileContent = + @"{ ""runtimeOptions"": { ""additionalProbingPaths"": [ ""C:\\packages"" @@ -697,8 +731,8 @@ public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromDepsFile() } }"; - string depsFileContent = -@"{ + string depsFileContent = + @"{ ""runtimeTarget"": { ""name"": "".NETCoreApp,Version=v1.0"", ""signature"": ""8f25843f8e35a3e80ef4ae98b95117ea5c468b3f"" @@ -709,7 +743,7 @@ public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromDepsFile() ""microsoft.testplatform.testhost/15.0.0-Dev"": { ""dependencies"": { ""Microsoft.TestPlatform.ObjectModel"": ""15.0.0-Dev"", - ""Newtonsoft.Json"": ""9.0.1"" + ""Newtonsoft.Json"": ""13.0.3"" }, ""runtime"": { ""lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll"": { }, @@ -731,30 +765,30 @@ public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromDepsFile() } }"; - MemoryStream runtimeConfigStream = new MemoryStream(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.runtimeconfig.dev.json"))).Returns(true); + MemoryStream runtimeConfigStream = new(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.runtimeconfig.dev.json"))).Returns(true); - MemoryStream depsFileStream = new MemoryStream(Encoding.UTF8.GetBytes(depsFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.deps.json"))).Returns(true); + MemoryStream depsFileStream = new(Encoding.UTF8.GetBytes(depsFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.deps.json"))).Returns(true); - string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; - this.mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); + string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; + _mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - Assert.IsTrue(startInfo.Arguments.Contains(testHostFullPath)); - } + Assert.IsTrue(startInfo.Arguments!.Contains(testHostFullPath)); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirectoryIfNugetpathDoesntExist() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); + [TestMethod] + public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirectoryIfNugetpathDoesntExist() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); - string runtimeConfigFileContent = -@"{ + string runtimeConfigFileContent = + @"{ ""runtimeOptions"": { ""additionalProbingPaths"": [ ""C:\\packages"" @@ -762,8 +796,8 @@ public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirect } }"; - string depsFileContent = -@"{ + string depsFileContent = + @"{ ""runtimeTarget"": { ""name"": "".NETCoreApp,Version=v1.0"", ""signature"": ""8f25843f8e35a3e80ef4ae98b95117ea5c468b3f"" @@ -774,7 +808,7 @@ public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirect ""microsoft.testplatform.testhost/15.0.0-Dev"": { ""dependencies"": { ""Microsoft.TestPlatform.ObjectModel"": ""15.0.0-Dev"", - ""Newtonsoft.Json"": ""9.0.1"" + ""Newtonsoft.Json"": ""13.0.3"" }, ""runtime"": { ""lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll"": { }, @@ -796,32 +830,32 @@ public void GetTestHostProcessStartInfoShouldIncludeTestHostPathFromSourceDirect } }"; - MemoryStream runtimeConfigStream = new MemoryStream(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.runtimeconfig.dev.json"))).Returns(true); + MemoryStream runtimeConfigStream = new(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.runtimeconfig.dev.json"))).Returns(true); - MemoryStream depsFileStream = new MemoryStream(Encoding.UTF8.GetBytes(depsFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.deps.json"))).Returns(true); + MemoryStream depsFileStream = new(Encoding.UTF8.GetBytes(depsFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.deps.json"))).Returns(true); - string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; - this.mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(false); + string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; + _mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(false); - string testHostPath = Path.Combine(this.temp, "testhost.dll"); + string testHostPath = Path.Combine(_temp, "testhost.dll"); - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - Assert.IsTrue(startInfo.Arguments.Contains(testHostPath)); - } + Assert.IsTrue(startInfo.Arguments!.Contains(testHostPath)); + } - [TestMethod] - public void GetTestHostProcessStartInfoShouldSkipInvalidAdditionalProbingPaths() - { - // Absolute path to the source directory - var sourcePath = Path.Combine(this.temp, "test.dll"); + [TestMethod] + public void GetTestHostProcessStartInfoShouldSkipInvalidAdditionalProbingPaths() + { + // Absolute path to the source directory + var sourcePath = Path.Combine(_temp, "test.dll"); - string runtimeConfigFileContent = -@"{ + string runtimeConfigFileContent = + @"{ ""runtimeOptions"": { ""additionalProbingPaths"": [ ""C:\\Users\\bob\\.dotnet\\store\\|arch|\\|tfm|"", @@ -830,8 +864,8 @@ public void GetTestHostProcessStartInfoShouldSkipInvalidAdditionalProbingPaths() } }"; - string depsFileContent = -@"{ + string depsFileContent = + @"{ ""runtimeTarget"": { ""name"": "".NETCoreApp,Version=v1.0"", ""signature"": ""8f25843f8e35a3e80ef4ae98b95117ea5c468b3f"" @@ -842,7 +876,7 @@ public void GetTestHostProcessStartInfoShouldSkipInvalidAdditionalProbingPaths() ""microsoft.testplatform.testhost/15.0.0-Dev"": { ""dependencies"": { ""Microsoft.TestPlatform.ObjectModel"": ""15.0.0-Dev"", - ""Newtonsoft.Json"": ""9.0.1"" + ""Newtonsoft.Json"": ""13.0.3"" }, ""runtime"": { ""lib/netstandard1.5/Microsoft.TestPlatform.CommunicationUtilities.dll"": { }, @@ -864,217 +898,222 @@ public void GetTestHostProcessStartInfoShouldSkipInvalidAdditionalProbingPaths() } }"; - MemoryStream runtimeConfigStream = new MemoryStream(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.runtimeconfig.dev.json"))).Returns(true); - - MemoryStream depsFileStream = new MemoryStream(Encoding.UTF8.GetBytes(depsFileContent)); - this.mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(this.temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); - this.mockFileHelper.Setup(ph => ph.Exists(Path.Combine(this.temp, "test.deps.json"))).Returns(true); - - string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; - this.mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); - - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, this.defaultConnectionInfo); - - Assert.IsTrue(startInfo.Arguments.Contains(testHostFullPath)); - } - - [TestMethod] - [DataRow("DOTNET_ROOT(x86)", "x86")] - [DataRow("DOTNET_ROOT", "x64")] - [DataRow("DOTNET_ROOT_WRONG", "")] - [TestCategory("Windows")] - public void GetTestHostProcessStartInfoShouldForwardDOTNET_ROOTEnvVarsForAppHost(string envVar, string expectedValue) - { - this.mockFileHelper.Setup(ph => ph.Exists("testhost.exe")).Returns(true); - this.mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); - this.mockEnvironmentVariable.Reset(); - this.mockEnvironmentVariable.Setup(x => x.GetEnvironmentVariable($"VSTEST_WINAPPHOST_{envVar}")).Returns(expectedValue); - - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo(this.testSource, null, this.defaultConnectionInfo); - if (!string.IsNullOrEmpty(expectedValue)) - { - Assert.AreEqual(1, startInfo.EnvironmentVariables.Count); - Assert.IsNotNull(startInfo.EnvironmentVariables[envVar]); - Assert.AreEqual(startInfo.EnvironmentVariables[envVar], expectedValue); - } - else - { - Assert.AreEqual(0, startInfo.EnvironmentVariables.Count); - } - } + MemoryStream runtimeConfigStream = new(Encoding.UTF8.GetBytes(runtimeConfigFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.runtimeconfig.dev.json"), FileMode.Open, FileAccess.Read)).Returns(runtimeConfigStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.runtimeconfig.dev.json"))).Returns(true); - [TestMethod] - public async Task DotNetCoreErrorMessageShouldBeReadAsynchronouslyAsync() - { - var errorData = "Custom Error Strings"; - this.ErrorCallBackTestHelper(errorData, -1); + MemoryStream depsFileStream = new(Encoding.UTF8.GetBytes(depsFileContent)); + _mockFileHelper.Setup(ph => ph.GetStream(Path.Combine(_temp, "test.deps.json"), FileMode.Open, FileAccess.Read)).Returns(depsFileStream); + _mockFileHelper.Setup(ph => ph.Exists(Path.Combine(_temp, "test.deps.json"))).Returns(true); - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + string testHostFullPath = $@"C:\packages{Path.DirectorySeparatorChar}microsoft.testplatform.testhost/15.0.0-Dev{Path.DirectorySeparatorChar}lib/netstandard1.5/testhost.dll"; + _mockFileHelper.Setup(ph => ph.Exists(testHostFullPath)).Returns(true); - Assert.AreEqual(errorData, this.errorMessage); - } + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(new[] { sourcePath }, null, _defaultConnectionInfo); - [TestMethod] - public async Task DotNetCoreNoErrorMessageIfExitCodeZero() - { - string errorData = string.Empty; - this.ErrorCallBackTestHelper(errorData, 0); - - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + Assert.IsTrue(startInfo.Arguments!.Contains(testHostFullPath)); + } - Assert.IsNull(this.errorMessage); - } + [TestMethod] + [DataRow("x64")] + [DataRow("x86")] + [DataRow("arm64")] + public void GetTestHostProcessStartInfoShouldForwardDOTNET_ROOTEnvVarsForAppHost(string architecture) + { + var path = @"C:\dotnet"; + _mockFileHelper.Setup(ph => ph.Exists("testhost.exe")).Returns(true); + _mockEnvironment.Setup(ev => ev.OperatingSystem).Returns(PlatformOperatingSystem.Windows); + _mockEnvironmentVariable.Reset(); + _mockEnvironmentVariable.Setup(x => x.GetEnvironmentVariable($"VSTEST_DOTNET_ROOT_PATH")).Returns(path); + _mockEnvironmentVariable.Setup(x => x.GetEnvironmentVariable($"VSTEST_DOTNET_ROOT_ARCHITECTURE")).Returns(architecture); + + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo(_testSource, null, _defaultConnectionInfo); + + var envVar = $"DOTNET_ROOT_{architecture.ToUpperInvariant()}"; + Assert.IsNotNull(startInfo.EnvironmentVariables![envVar]); + Assert.AreEqual(startInfo.EnvironmentVariables![envVar], path); + } - [TestMethod] - [DataRow(null)] - [DataRow("")] - public async Task DotNetCoreErrorReceivedCallbackShouldNotLogNullOrEmptyData(string errorData) - { - this.ErrorCallBackTestHelper(errorData, -1); + [TestMethod] + public async Task DotNetCoreErrorMessageShouldBeReadAsynchronouslyAsync() + { + var errorData = "Custom Error Strings"; + ErrorCallBackTestHelper(errorData, -1); - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); - Assert.AreEqual(this.errorMessage, string.Empty); - } + Assert.AreEqual(errorData, _errorMessage); + } - [TestMethod] - [DataRow(0)] - [DataRow(-1)] - public async Task DotNetCoreProcessExitedButNoErrorMessageIfNoDataWritten(int exitCode) - { - var errorData = string.Empty; - this.ExitCallBackTestHelper(exitCode); + [TestMethod] + public async Task DotNetCoreNoErrorMessageIfExitCodeZero() + { + string errorData = string.Empty; + ErrorCallBackTestHelper(errorData, 0); - // override event listener - this.dotnetHostManager.HostExited += this.DotnetHostManagerExitCodeTesterHostExited; + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + Assert.IsNull(_errorMessage); + } - Assert.AreEqual(this.errorMessage, string.Empty); - Assert.AreEqual(this.exitCode, exitCode); - } + [TestMethod] + [DataRow(null)] + [DataRow("")] + public async Task DotNetCoreErrorReceivedCallbackShouldNotLogNullOrEmptyData(string errorData) + { + ErrorCallBackTestHelper(errorData, -1); - [TestMethod] - public async Task CleanTestHostAsyncShouldKillTestHostProcess() - { - var pid = Process.GetCurrentProcess().Id; - bool isVerified = false; - this.mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())) - .Callback(p => isVerified = ((Process)p).Id == pid); + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); - this.ExitCallBackTestHelper(0); - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + Assert.AreEqual(_errorMessage, string.Empty); + } - await this.dotnetHostManager.CleanTestHostAsync(CancellationToken.None); + [TestMethod] + [DataRow(0)] + [DataRow(-1)] + public async Task DotNetCoreProcessExitedButNoErrorMessageIfNoDataWritten(int exitCode) + { + var errorData = string.Empty; + ExitCallBackTestHelper(exitCode); - Assert.IsTrue(isVerified); - } + // override event listener + _dotnetHostManager.HostExited += DotnetHostManagerExitCodeTesterHostExited; - [TestMethod] - public async Task CleanTestHostAsyncShouldNotThrowIfTestHostIsNotStarted() - { - var pid = Process.GetCurrentProcess().Id; - bool isVerified = false; - this.mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())).Callback(p => isVerified = ((Process)p).Id == pid).Throws(); + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); - this.ExitCallBackTestHelper(0); - await this.dotnetHostManager.LaunchTestHostAsync(this.defaultTestProcessStartInfo, CancellationToken.None); + Assert.AreEqual(_errorMessage, string.Empty); + Assert.AreEqual(_exitCode, exitCode); + } - await this.dotnetHostManager.CleanTestHostAsync(CancellationToken.None); + [TestMethod] + public async Task CleanTestHostAsyncShouldKillTestHostProcess() + { +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + bool isVerified = false; + _mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())) + .Callback(p => isVerified = ((Process)p).Id == pid); + + ExitCallBackTestHelper(0); + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); + + await _dotnetHostManager.CleanTestHostAsync(CancellationToken.None); + + Assert.IsTrue(isVerified); + } - Assert.IsTrue(isVerified); - } + [TestMethod] + public async Task CleanTestHostAsyncShouldNotThrowIfTestHostIsNotStarted() + { +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + bool isVerified = false; + _mockProcessHelper.Setup(ph => ph.TerminateProcess(It.IsAny())).Callback(p => isVerified = ((Process)p).Id == pid).Throws(); + + ExitCallBackTestHelper(0); + await _dotnetHostManager.LaunchTestHostAsync(_defaultTestProcessStartInfo, CancellationToken.None); + + await _dotnetHostManager.CleanTestHostAsync(CancellationToken.None); + + Assert.IsTrue(isVerified); + } - private void DotnetHostManagerExitCodeTesterHostExited(object sender, HostProviderEventArgs e) - { - this.errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); - this.exitCode = e.ErrroCode; - } + private void DotnetHostManagerExitCodeTesterHostExited(object? sender, HostProviderEventArgs e) + { + _errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); + _exitCode = e.ErrroCode; + } - private void DotnetHostManagerHostExited(object sender, HostProviderEventArgs e) + private void DotnetHostManagerHostExited(object? sender, HostProviderEventArgs e) + { + if (e.ErrroCode != 0) { - if (e.ErrroCode != 0) - { - this.errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); - } + _errorMessage = e.Data.TrimEnd(Environment.NewLine.ToCharArray()); } + } - private void DotnetHostManagerHostLaunched(object sender, HostProviderEventArgs e) - { - this.testHostId = e.ProcessId; - } + private void DotnetHostManagerHostLaunched(object? sender, HostProviderEventArgs e) + { + _testHostId = e.ProcessId; + } - private void ErrorCallBackTestHelper(string errorMessage, int exitCode) - { - this.mockProcessHelper.Setup( - ph => - ph.LaunchProcess( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>())) - .Callback, Action, Action, Action>( - (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => - { - var process = Process.GetCurrentProcess(); - - errorCallback(process, errorMessage); - exitCallback(process); - }).Returns(Process.GetCurrentProcess()); - - this.mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); - } + private void ErrorCallBackTestHelper(string errorMessage, int exitCode) + { + _mockProcessHelper.Setup( + ph => + ph.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>())) + .Callback, Action, Action, Action>( + (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => + { + var process = Process.GetCurrentProcess(); + + errorCallback(process, errorMessage); + exitCallback(process); + }).Returns(Process.GetCurrentProcess()); + + _mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); + } - private void ExitCallBackTestHelper(int exitCode) - { - this.mockProcessHelper.Setup( - ph => - ph.LaunchProcess( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>(), - It.IsAny>())) - .Callback, Action, Action, Action>( - (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => - { - var process = Process.GetCurrentProcess(); - exitCallback(process); - }).Returns(Process.GetCurrentProcess()); - - this.mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); - } + private void ExitCallBackTestHelper(int exitCode) + { + _mockProcessHelper.Setup( + ph => + ph.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>(), + It.IsAny>())) + .Callback, Action, Action, Action>( + (var1, var2, var3, dictionary, errorCallback, exitCallback, outputCallback) => + { + var process = Process.GetCurrentProcess(); + exitCallback(process); + }).Returns(Process.GetCurrentProcess()); + + _mockProcessHelper.Setup(ph => ph.TryGetExitCode(It.IsAny(), out exitCode)).Returns(true); + } - private TestProcessStartInfo GetDefaultStartInfo() - { - var startInfo = this.dotnetHostManager.GetTestHostProcessStartInfo( - this.testSource, - null, - this.defaultConnectionInfo); - return startInfo; - } + private TestProcessStartInfo GetDefaultStartInfo() + { + var startInfo = _dotnetHostManager.GetTestHostProcessStartInfo( + _testSource, + null, + _defaultConnectionInfo); + return startInfo; + } - internal class TestableDotnetTestHostManager : DotnetTestHostManager + internal class TestableDotnetTestHostManager : DotnetTestHostManager + { + public TestableDotnetTestHostManager( + IProcessHelper processHelper, + IFileHelper fileHelper, + IDotnetHostHelper dotnetTestHostHelper, + IEnvironment environment, + IRunSettingsHelper runsettingsHelper, + IWindowsRegistryHelper windowsRegistryHelper, + IEnvironmentVariableHelper environmentVariableHelper) + : base(processHelper, fileHelper, dotnetTestHostHelper, environment, runsettingsHelper, windowsRegistryHelper, environmentVariableHelper) { - public TestableDotnetTestHostManager( - IProcessHelper processHelper, - IFileHelper fileHelper, - IDotnetHostHelper dotnetTestHostHelper, - IEnvironment environment, - IRunSettingsHelper runsettingsHelper, - IWindowsRegistryHelper windowsRegistryHelper, - IEnvironmentVariableHelper environmentVariableHelper) - : base(processHelper, fileHelper, dotnetTestHostHelper, environment, runsettingsHelper, windowsRegistryHelper, environmentVariableHelper) - { - } } } -#pragma warning restore SA1600 } diff --git a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/TestHostManagerCallbacksTests.cs b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/TestHostManagerCallbacksTests.cs index 98e8f2d9cf..1f433c77bc 100644 --- a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/TestHostManagerCallbacksTests.cs +++ b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Hosting/TestHostManagerCallbacksTests.cs @@ -1,97 +1,124 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.TestHostProvider.Hosting.UnitTests +using System; +using System.Runtime.InteropServices; +using System.Text; + +using Microsoft.TestPlatform.TestHostProvider.Hosting; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace TestPlatform.TestHostProvider.Hosting.UnitTests; + +[TestClass] +public class TestHostManagerCallbacksTests { - using System; - using System.Text; - using Microsoft.TestPlatform.TestHostProvider.Hosting; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private StringBuilder _testHostProcessStdError; - [TestClass] - public class TestHostManagerCallbacksTests + public TestHostManagerCallbacksTests() { - private StringBuilder testHostProcessStdError; + _testHostProcessStdError = new StringBuilder(0, Microsoft.VisualStudio.TestPlatform.CoreUtilities.Constants.StandardErrorMaxLength); + } - public TestHostManagerCallbacksTests() - { - this.testHostProcessStdError = new StringBuilder(0, Microsoft.VisualStudio.TestPlatform.CoreUtilities.Constants.StandardErrorMaxLength); - } + [TestMethod] + public void ErrorReceivedCallbackShouldAppendNoDataOnNullDataReceived() + { + _testHostProcessStdError.Append("NoDataShouldAppend"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, null); - [TestMethod] - public void ErrorReceivedCallbackShouldAppendNoDataOnNullDataReceived() - { - this.testHostProcessStdError.Append("NoDataShouldAppend"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, null); + Assert.AreEqual("NoDataShouldAppend", _testHostProcessStdError.ToString()); + } - Assert.AreEqual("NoDataShouldAppend", this.testHostProcessStdError.ToString()); - } + [TestMethod] + public void ErrorReceivedCallbackShouldAppendNoDataOnEmptyDataReceived() + { + _testHostProcessStdError.Append("NoDataShouldAppend"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, string.Empty); - [TestMethod] - public void ErrorReceivedCallbackShouldAppendNoDataOnEmptyDataReceived() - { - this.testHostProcessStdError.Append("NoDataShouldAppend"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, string.Empty); + Assert.AreEqual("NoDataShouldAppend", _testHostProcessStdError.ToString()); + } - Assert.AreEqual("NoDataShouldAppend", this.testHostProcessStdError.ToString()); - } + [TestMethod] + public void ErrorReceivedCallbackShouldAppendWhiteSpaceString() + { + _testHostProcessStdError.Append("OldData"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, " "); - [TestMethod] - public void ErrorReceivedCallbackShouldAppendWhiteSpaceString() - { - this.testHostProcessStdError.Append("OldData"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, " "); + Assert.AreEqual("OldData " + Environment.NewLine, _testHostProcessStdError.ToString()); + } + + [TestMethod] + public void ErrorReceivedCallbackShouldAppendGivenData() + { + _testHostProcessStdError.Append("NoDataShouldAppend"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, "new data"); - Assert.AreEqual("OldData " + Environment.NewLine, this.testHostProcessStdError.ToString()); - } + Assert.AreEqual("NoDataShouldAppendnew data" + Environment.NewLine, _testHostProcessStdError.ToString()); + } - [TestMethod] - public void ErrorReceivedCallbackShouldAppendGivenData() - { - this.testHostProcessStdError.Append("NoDataShouldAppend"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, "new data"); + [TestMethod] + public void ErrorReceivedCallbackShouldNotAppendNewDataIfErrorMessageAlreadyReachedMaxLength() + { + _testHostProcessStdError = new StringBuilder(0, 5); + _testHostProcessStdError.Append("12345"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, "678"); - Assert.AreEqual("NoDataShouldAppendnew data" + Environment.NewLine, this.testHostProcessStdError.ToString()); - } + Assert.AreEqual("12345", _testHostProcessStdError.ToString()); + } - [TestMethod] - public void ErrorReceivedCallbackShouldNotAppendNewDataIfErrorMessageAlreadyReachedMaxLength() - { - this.testHostProcessStdError = new StringBuilder(0, 5); - this.testHostProcessStdError.Append("12345"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, "678"); + [TestMethod] + public void ErrorReceivedCallbackShouldAppendSubStringOfDataIfErrorMessageReachedMaxLength() + { + _testHostProcessStdError = new StringBuilder(0, 5); + _testHostProcessStdError.Append("1234"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, "5678"); - Assert.AreEqual("12345", this.testHostProcessStdError.ToString()); - } + Assert.AreEqual("12345", _testHostProcessStdError.ToString()); + } - [TestMethod] - public void ErrorReceivedCallbackShouldAppendSubStringOfDataIfErrorMessageReachedMaxLength() - { - this.testHostProcessStdError = new StringBuilder(0, 5); - this.testHostProcessStdError.Append("1234"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, "5678"); + [TestMethod] + public void ErrorReceivedCallbackShouldAppendEntireStringEvenItReachesToMaxLength() + { + _testHostProcessStdError = new StringBuilder(0, 5); + _testHostProcessStdError.Append("12"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, "3"); - Assert.AreEqual("12345", this.testHostProcessStdError.ToString()); - } + Assert.AreEqual("123" + Environment.NewLine, _testHostProcessStdError.ToString()); + } - [TestMethod] - public void ErrorReceivedCallbackShouldAppendEntireStringEvenItReachesToMaxLength() - { - this.testHostProcessStdError = new StringBuilder(0, 5); - this.testHostProcessStdError.Append("12"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, "3"); + [TestMethod] + public void ErrorReceivedCallbackShouldAppendNewLineApproprioritlyWhenReachingMaxLength() + { + _testHostProcessStdError = new StringBuilder(0, 5); + _testHostProcessStdError.Append("123"); + new TestHostManagerCallbacks(false, null).ErrorReceivedCallback(_testHostProcessStdError, "4"); - Assert.AreEqual("123" + Environment.NewLine, this.testHostProcessStdError.ToString()); - } + Assert.AreEqual("1234" + Environment.NewLine.Substring(0, 1), _testHostProcessStdError.ToString()); + } - [TestMethod] - public void ErrorReceivedCallbackShouldAppendNewLineApproprioritlyWhenReachingMaxLength() + [TestMethod] + public void ErrorReceivedCallbackShouldNotCrashIfInvalidProcessHandle() + { + bool onHostExitedCalled = false; + Mock mock = new(); + mock.Setup(m => m.TryGetExitCode(It.IsAny(), out It.Ref.IsAny)).Callback((object process, out int exitCode) => { - this.testHostProcessStdError = new StringBuilder(0, 5); - this.testHostProcessStdError.Append("123"); - TestHostManagerCallbacks.ErrorReceivedCallback(this.testHostProcessStdError, "4"); - - Assert.AreEqual("1234" + Environment.NewLine.Substring(0, 1), this.testHostProcessStdError.ToString()); - } + var err = new COMException("Invalid handle", unchecked((int)0x80070006)); + typeof(COMException).GetProperty("HResult")!.SetValue(err, unchecked((int)0x80070006)); + throw err; + }); + + TestHostManagerCallbacks.ExitCallBack(mock.Object, null, new StringBuilder(), + hostProviderEventArgs => + { + onHostExitedCalled = true; + Assert.AreEqual(-1, hostProviderEventArgs.ErrroCode); + }); + + Assert.IsTrue(onHostExitedCalled, "onHostExited was not called"); + mock.Verify(m => m.TryGetExitCode(It.IsAny(), out It.Ref.IsAny), Times.Once()); } } diff --git a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Microsoft.TestPlatform.TestHostProvider.UnitTests.csproj b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Microsoft.TestPlatform.TestHostProvider.UnitTests.csproj index f0ae08cbd3..09db15d7e8 100644 --- a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Microsoft.TestPlatform.TestHostProvider.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Microsoft.TestPlatform.TestHostProvider.UnitTests.csproj @@ -1,27 +1,16 @@ - + - ..\..\ true true - + Microsoft.TestPlatform.TestHostProvider.UnitTests - netcoreapp2.1;net472 - netcoreapp3.1 - Exe - true + net9.0;net48 + Exe - - - - - - - - diff --git a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Program.cs b/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Program.cs deleted file mode 100644 index 02b716c787..0000000000 --- a/test/Microsoft.TestPlatform.TestHostProvider.UnitTests/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.UnitTests -{ -#pragma warning disable SA1600 - public static class Program - { - public static void Main(string[] args) - { - } - } -#pragma warning restore SA1600 -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.TestUtilities/AssemblyUtility.cs b/test/Microsoft.TestPlatform.TestUtilities/AssemblyUtility.cs index 1e1d29c5d6..866927c808 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/AssemblyUtility.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/AssemblyUtility.cs @@ -1,30 +1,29 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.TestUtilities -{ - using System.Reflection; -#if !NET451 - using System.Runtime.Loader; +using System.Reflection; +#if !NETFRAMEWORK +using System.Runtime.Loader; #endif +namespace Microsoft.TestPlatform.TestUtilities; + +/// +/// Assembly utility to perform assembly related functions. +/// +public class AssemblyUtility +{ /// - /// Assembly utility to perform assembly related functions. + /// Gets the assembly name at a given location. /// - public class AssemblyUtility + /// + /// + public static AssemblyName GetAssemblyName(string assemblyPath) { - /// - /// Gets the assembly name at a given location. - /// - /// - /// - public static AssemblyName GetAssemblyName(string assemblyPath) - { -#if !NET451 - return AssemblyLoadContext.GetAssemblyName(assemblyPath); +#if !NETFRAMEWORK + return AssemblyLoadContext.GetAssemblyName(assemblyPath); #else - return AssemblyName.GetAssemblyName(assemblyPath); + return AssemblyName.GetAssemblyName(assemblyPath); #endif - } } } diff --git a/test/Microsoft.TestPlatform.TestUtilities/BannedSymbols.txt b/test/Microsoft.TestPlatform.TestUtilities/BannedSymbols.txt new file mode 100644 index 0000000000..87ce187c16 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/BannedSymbols.txt @@ -0,0 +1,5 @@ +M:System.IO.Path.GetTempPath(); Use 'IntegrationTestBase.GetTempPath()' instead +M:System.Environment.SetEnvironmentVariable(System.String,System.String); Use one of the overload accepting a dictionary of environment variables instead +M:System.Environment.SetEnvironmentVariable(System.String,System.String,System.EnvironmentVariableTarget); Use one of the overload accepting a dictionary of environment variables instead +M:System.String.IsNullOrEmpty(System.String); Use 'StringUtils.IsNullOrEmpty' instead +M:System.String.IsNullOrWhiteSpace(System.String); Use 'StringUtils.IsNullOrWhiteSpace' instead diff --git a/test/Microsoft.TestPlatform.TestUtilities/DebugInfo.cs b/test/Microsoft.TestPlatform.TestUtilities/DebugInfo.cs new file mode 100644 index 0000000000..12eb25aaa5 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/DebugInfo.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace Microsoft.TestPlatform.TestUtilities; + +[Serializable] +// For data source to serialize correctly to enable splitting testcases to one per test in VS, +// this must be serializable. This is sealed because the exact type must be used, not any child type. +// Otherwise it works, but silently does not split the test cases anymore. +public sealed class DebugInfo +{ + public bool DebugVSTestConsole { get; set; } + public bool DebugTestHost { get; set; } + public bool DebugDataCollector { get; set; } + public bool DebugStopAtEntrypoint { get; set; } +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/DirectoryUtils.cs b/test/Microsoft.TestPlatform.TestUtilities/DirectoryUtils.cs new file mode 100644 index 0000000000..9e37a1c1d9 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/DirectoryUtils.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO; + +using IO = System.IO; + +namespace Microsoft.TestPlatform.TestUtilities; + +public static class DirectoryUtils +{ + public static void CopyDirectory(string sourceDirectory, string targetDirectory) + { + CopyDirectory(new DirectoryInfo(sourceDirectory), new DirectoryInfo(targetDirectory)); + } + + public static void CopyDirectory(DirectoryInfo source, DirectoryInfo target) + { + Directory.CreateDirectory(target.FullName); + + // Copy each file into the new directory. + foreach (FileInfo fi in source.GetFiles()) + { + fi.CopyTo(IO.Path.Combine(target.FullName, fi.Name), true); + } + + // Copy each subdirectory using recursion. + foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()) + { + DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name); + CopyDirectory(diSourceSubDir, nextTargetSubDir); + } + } +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/DllInfo.cs b/test/Microsoft.TestPlatform.TestUtilities/DllInfo.cs new file mode 100644 index 0000000000..f840e9b983 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/DllInfo.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace Microsoft.TestPlatform.TestUtilities; + +// For data source to serialize correctly to enable splitting testcases to one per test in VS, +// this must be serializable. This is NOT sealed because we need this for adapters and testSdk. +// But be aware that the exact type must be used, not any child type for the data on data source object (RunnerInfo). +// Otherwise it works, but silently does not split the test cases anymore. +[Serializable] +public class DllInfo +{ + public string? Name { get; set; } + public string? PropertyName { get; set; } + public string? VersionType { get; set; } + public string? Version { get; set; } + public string? Path { get; set; } + + public override string ToString() => $" {Name} = {Version} [{VersionType}]"; +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/FileAssert.cs b/test/Microsoft.TestPlatform.TestUtilities/FileAssert.cs index 75147b98fc..622f6d2886 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/FileAssert.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/FileAssert.cs @@ -1,24 +1,24 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace TestPlatform.TestUtilities +using System.IO; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TestPlatform.TestUtilities; + +public static class FileAssert { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.IO; + private const string StringHighlighter = "\"\"\""; - public static class FileAssert + public static void Contains(string filePath, params string[] substrs) { - private const string StringHighlighter = "\"\"\""; - - public static void Contains(string filePath, params string[] substrs) + Assert.IsTrue(File.Exists(filePath), $"{filePath}: file doesn't exist."); + var fileContent = File.ReadAllText(filePath); + foreach (var substr in substrs) { - Assert.IsTrue(File.Exists(filePath), $"{filePath}: file doesn't exist."); - var fileContent= File.ReadAllText(filePath); - foreach(var substr in substrs) - { - Assert.IsTrue(fileContent.Contains(substr), + Assert.IsTrue(fileContent.Contains(substr), $"{filePath}: file doesn't contains {StringHighlighter} {substr} {StringHighlighter}"); - } } } } diff --git a/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs b/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs index b7181a2fe6..2fab9fa01c 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs @@ -1,758 +1,1015 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.TestUtilities +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Xml; + +using FluentAssertions; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer; +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Extensions; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.TestUtilities; + +/// +/// Base class for integration tests. +/// +public class IntegrationTestBase { - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Extensions; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Linq; - using System.Text; - using System.Text.RegularExpressions; - using System.Xml; + public const string DesktopRunnerFramework = "net462"; + public const string CoreRunnerFramework = "net8.0"; - /// - /// Base class for integration tests. - /// - public class IntegrationTestBase + private const string TotalTestsMessage = "Total tests: {0}"; + private const string PassedTestsMessage = " Passed: {0}"; + private const string FailedTestsMessage = " Failed: {0}"; + private const string SkippedTestsMessage = " Skipped: {0}"; + private const string TestSummaryStatusMessageFormat = "Total tests: {0} Passed: {1} Failed: {2} Skipped: {3}"; + private string _standardTestOutput = string.Empty; + private string _standardTestError = string.Empty; + private int _runnerExitCode = -1; + + private string? _arguments = string.Empty; + + protected readonly IntegrationTestEnvironment _testEnvironment; + + private readonly string _msTestPre3_0AdapterRelativePath = @"mstest.testadapter\{0}\build\_common".Replace('\\', Path.DirectorySeparatorChar); + private readonly string _msTestAdapterRelativePath = @"mstest.testadapter\{0}\buildTransitive\{1}".Replace('\\', Path.DirectorySeparatorChar); + private readonly string _nUnitTestAdapterRelativePath = @"nunit3testadapter\{0}\build".Replace('\\', Path.DirectorySeparatorChar); + private readonly string _xUnitTestAdapterRelativePath = @"xunit.runner.visualstudio\{0}\build\{1}".Replace('\\', Path.DirectorySeparatorChar); + + public enum UnitTestFramework { - public const string DesktopRunnerFramework = "net451"; - public const string CoreRunnerFramework = "netcoreapp2.1"; + NUnit, XUnit, MSTest, CPP, NonDll + } + + public IntegrationTestBase() + { + _testEnvironment = new IntegrationTestEnvironment(); + BuildConfiguration = IntegrationTestEnvironment.BuildConfiguration; + TempDirectory = new TempDirectory(); - private const string TotalTestsMessage = "Total tests: {0}"; - private const string PassedTestsMessage = " Passed: {0}"; - private const string FailedTestsMessage = " Failed: {0}"; - private const string SkippedTestsMessage = " Skipped: {0}"; - private const string TestSummaryStatusMessageFormat = "Total tests: {0} Passed: {1} Failed: {2} Skipped: {3}"; - private string standardTestOutput = string.Empty; - private string standardTestError = string.Empty; - private string standardTestOutputWithWhiteSpace = string.Empty; - private string standardTestErrorWithWhiteSpace = string.Empty; - private int runnerExitCode = -1; + var drive = new DriveInfo(Directory.GetDirectoryRoot(TempDirectory.Path)); + Console.WriteLine($"Available space for TEMP: {drive.Name} {drive.AvailableFreeSpace / (1024 * 1024)} MB"); + + IsCI = IntegrationTestEnvironment.IsCI; + } - private string arguments = string.Empty; + public string StdOut => _standardTestOutput; + public string StdOutWithWhiteSpace { get; private set; } = string.Empty; - protected readonly IntegrationTestEnvironment testEnvironment; + public string StdErr => _standardTestError; + public string StdErrWithWhiteSpace { get; private set; } = string.Empty; - private readonly string TestAdapterRelativePath = @"mstest.testadapter\{0}\build\_common".Replace('\\', Path.DirectorySeparatorChar); - private readonly string NUnitTestAdapterRelativePath = @"nunit3testadapter\{0}\build".Replace('\\', Path.DirectorySeparatorChar); - private readonly string XUnitTestAdapterRelativePath = @"xunit.runner.visualstudio\{0}\build\_common".Replace('\\', Path.DirectorySeparatorChar); - private readonly string ChutzpahTestAdapterRelativePath = @"chutzpah\{0}\tools".Replace('\\', Path.DirectorySeparatorChar); + public TempDirectory TempDirectory { get; } - protected readonly bool IsWindows = System.Environment.OSVersion.Platform.ToString().StartsWith("Win"); + public TestContext? TestContext { get; set; } - public enum UnitTestFramework + public string BuildConfiguration { get; } + + public bool IsCI { get; } + + [TestCleanup] + public void TempDirectoryCleanup() + { + // In CI always delete the results, because we have limited disk space there. + // + // Locally delete the directory only when the test succeeded, so we can look + // at results and logs of failed tests. + if (IsCI || TestContext?.CurrentTestOutcome == UnitTestOutcome.Passed) { - NUnit, XUnit, MSTest, CPP, Chutzpah + TempDirectory.Dispose(); } + } - public IntegrationTestBase() + /// + /// Prepare arguments for vstest.console.exe. + /// + /// List of test assemblies. + /// Path to test adapter. + /// Text of run settings. + /// Framework to use. + /// If we should run in a separate process. + /// The directory where results are stored. + /// Command line arguments string. + public static string PrepareArguments(string[] testAssemblies, string? testAdapterPath, string? runSettings, + string framework, string? inIsolation = "", string? resultsDirectory = null) + { + var arguments = ""; + foreach (var path in testAssemblies) { - this.testEnvironment = new IntegrationTestEnvironment(); + // The incoming testAssembly path is either a single dll path in quotes or without quotes. + // Or multiple assembly paths in a single string each double quoted and joined by space. + // We trim, and add quotes here to get either: + // C:\1.dll -> "C:\1.dll" + // "C:\1.dll" -> "C:\1.dll" + // "C:\1.dll" "C:\2.dll" -> "C:\1.dll" "C:\2.dll" + // + // For unquoted multi path string C:\1.dll C:\2.dll, we will get "C:\1.dll C:\2.dll" + // which is wrong and will fail later, but it's the test's fault for doing it wrong + // rather than providing an array of strings that this overload takes. + arguments += path.Trim('\"').AddDoubleQuote() + " "; } - public string StdOut => this.standardTestOutput; - public string StdOutWithWhiteSpace => this.standardTestOutputWithWhiteSpace; + arguments = arguments.Trim(); - public string StdErr => this.standardTestError; - public string StdErrWithWhiteSpace => this.standardTestErrorWithWhiteSpace; + if (!testAdapterPath.IsNullOrWhiteSpace()) + { + // Append adapter path + arguments = string.Concat(arguments, " /testadapterpath:", testAdapterPath.AddDoubleQuote()); + } - /// - /// Prepare arguments for vstest.console.exe. - /// - /// Name of the test assembly. - /// Path to test adapter. - /// Text of run settings. - /// - /// - /// Command line arguments string. - public static string PrepareArguments(string testAssembly, string testAdapterPath, string runSettings, - string framework, string inIsolation = "", string resultsDirectory = null) + if (!runSettings.IsNullOrWhiteSpace()) { - var arguments = testAssembly.AddDoubleQuote(); + // Append run settings + arguments = string.Concat(arguments, " /settings:", runSettings.AddDoubleQuote()); + } - if (!string.IsNullOrWhiteSpace(testAdapterPath)) - { - // Append adapter path - arguments = string.Concat(arguments, " /testadapterpath:", testAdapterPath.AddDoubleQuote()); - } + if (!framework.IsNullOrWhiteSpace()) + { + // Append run settings + arguments = string.Concat(arguments, " /framework:", framework.AddDoubleQuote()); + } - if (!string.IsNullOrWhiteSpace(runSettings)) - { - // Append run settings - arguments = string.Concat(arguments, " /settings:", runSettings.AddDoubleQuote()); - } + arguments = string.Concat(arguments, " /logger:", "console;verbosity=normal".AddDoubleQuote()); - if (!string.IsNullOrWhiteSpace(framework)) + if (!inIsolation.IsNullOrWhiteSpace()) + { + if (inIsolation != "/InIsolation") { - // Append run settings - arguments = string.Concat(arguments, " /framework:", framework.AddDoubleQuote()); + // TODO: The whole inIsolation should be just a bool, but it is not, and it's changing in other PR. + throw new InvalidOperationException("InIsolation value must be '/InIsolation'"); } + arguments = string.Concat(arguments, " ", inIsolation); + } - arguments = string.Concat(arguments, " /logger:", "console;verbosity=normal".AddDoubleQuote()); + if (!resultsDirectory.IsNullOrWhiteSpace()) + { + // Append results directory + arguments = string.Concat(arguments, " /ResultsDirectory:", resultsDirectory.AddDoubleQuote()); + } - if (!string.IsNullOrWhiteSpace(inIsolation)) - { - arguments = string.Concat(arguments, " ", inIsolation); - } + return arguments; + } - if (!string.IsNullOrWhiteSpace(resultsDirectory)) - { - // Append results directory - arguments = string.Concat(arguments, " /ResultsDirectory:", resultsDirectory.AddDoubleQuote()); - } + /// + /// Prepare arguments for vstest.console.exe. + /// + /// Name of the test assembly. + /// Path to test adapter. + /// Text of run settings. + /// The framework to use. + /// If we should run in separate process. + /// The directory in which results will be stored. + /// Command line arguments string. + public static string PrepareArguments(string testAssembly, string? testAdapterPath, string? runSettings, + string framework, string? inIsolation = "", string? resultsDirectory = null) + => PrepareArguments([testAssembly], testAdapterPath, runSettings, framework, inIsolation, resultsDirectory); - return arguments; - } - /// - /// Invokes vstest.console with specified arguments. - /// - /// Arguments provided to vstest.console.exe - public void InvokeVsTest(string arguments) + /// + /// Invokes vstest.console with specified arguments. + /// + /// Arguments provided to vstest.console.exe + /// Environment variables to set to the started process. + public void InvokeVsTest(string? arguments, Dictionary? environmentVariables = null) + { + var debugEnvironmentVariables = AddDebugEnvironmentVariables(environmentVariables); + ExecuteVsTestConsole(arguments, out _standardTestOutput, out _standardTestError, out _runnerExitCode, debugEnvironmentVariables); + FormatStandardOutCome(); + } + + /// + /// Invokes our local copy of dotnet that is patched with artifacts from the build with specified arguments. + /// + /// Arguments provided to vstest.console.exe + /// Environment variables to set to the started process. + /// + public void InvokeDotnetTest(string arguments, Dictionary? environmentVariables = null, string? workingDirectory = null) + { + if (workingDirectory is not null && !File.Exists(Path.Combine(workingDirectory, "dotnet.config"))) { - this.ExecuteVsTestConsole(arguments, out this.standardTestOutput, out this.standardTestError, out this.runnerExitCode); - this.FormatStandardOutCome(); + File.WriteAllText(Path.Combine(workingDirectory, "dotnet.config"), """ + [dotnet.test.runner] + name = "VSTest" + """); } + var debugEnvironmentVariables = AddDebugEnvironmentVariables(environmentVariables); - /// - /// Invokes our local copy of dotnet that is patched with artifacts from the build with specified arguments. - /// - /// Arguments provided to vstest.console.exe - public void InvokeDotnetTest(string arguments) - { - var vstestConsolePath = Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, "artifacts", IntegrationTestEnvironment.BuildConfiguration, "netcoreapp2.1", "vstest.console.dll"); - var env = "VSTEST_CONSOLE_PATH"; - var originalVstestConsolePath = Environment.GetEnvironmentVariable(env); + var vstestConsolePath = GetDotnetRunnerPath(); - try + if (arguments.Contains(".csproj")) + { + var consolePathParameter = $@" -p:VsTestConsolePath=""{vstestConsolePath}"""; + var position = arguments.IndexOf(" -- "); + if (position == -1) { - Environment.SetEnvironmentVariable(env, vstestConsolePath); - if (arguments.Contains(".csproj")) - { - arguments = $@"-p:VsTestConsolePath=""{vstestConsolePath}"" " + arguments; - } - - this.ExecutePatchedDotnet("test", arguments, out this.standardTestOutput, out this.standardTestError, out this.runnerExitCode); - this.FormatStandardOutCome(); + // Add at the end. + arguments += consolePathParameter; ; } - finally + else { - Environment.SetEnvironmentVariable(env, originalVstestConsolePath); + // Insert before inline runsettings. + arguments = arguments.Insert(position, consolePathParameter); } } - /// - /// Invokes vstest.console to execute tests in a test assembly. - /// - /// A test assembly. - /// Path to test adapters. - /// Dotnet Framework of test assembly. - /// Run settings for execution. - public void InvokeVsTestForExecution(string testAssembly, - string testAdapterPath, - string framework, - string runSettings = "") - { - var resultsDir = GetResultsDirectory(); - - var arguments = PrepareArguments(testAssembly, testAdapterPath, runSettings, framework, this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - this.InvokeVsTest(arguments); - TryRemoveDirectory(resultsDir); - } - - /// - /// Invokes vstest.console to discover tests in a test assembly. "/listTests" is appended to the arguments. - /// - /// A test assembly. - /// Path to test adapters. - /// Run settings for execution. - public void InvokeVsTestForDiscovery(string testAssembly, string testAdapterPath, string runSettings = "", string targetFramework = "") - { - var resultsDir = GetResultsDirectory(); - var arguments = PrepareArguments(testAssembly, testAdapterPath, runSettings, targetFramework, this.testEnvironment.InIsolationValue, resultsDirectory: resultsDir); - arguments = string.Concat(arguments, " /listtests"); - this.InvokeVsTest(arguments); - TryRemoveDirectory(resultsDir); - } - - /// - /// Execute Tests that are not supported with given Runner framework. - /// - /// Runner Framework - /// Framework for which Tests are not supported - /// Message to be shown - public void ExecuteNotSupportedRunnerFrameworkTests(string runnerFramework, string framework, string message) - { - if (runnerFramework.StartsWith(framework)) - { - Assert.Inconclusive(message); - } - } + // This is used in dotnet/sdk to determine path to vstest.console: + // https://github.com/dotnet/sdk/blob/main/src/Cli/dotnet/commands/dotnet-test/VSTestForwardingApp.cs#L30-L39 + debugEnvironmentVariables["VSTEST_CONSOLE_PATH"] = vstestConsolePath; + + IntegrationTestBase.ExecutePatchedDotnet("test", arguments, out _standardTestOutput, out _standardTestError, out _runnerExitCode, debugEnvironmentVariables, workingDirectory); + FormatStandardOutCome(); + } + + /// + /// Invokes vstest.console to execute tests in a test assembly. + /// + /// A test assembly. + /// Path to test adapters. + /// Dotnet Framework of test assembly. + /// Run settings for execution. + /// Environment variables to set to the started process. + public void InvokeVsTestForExecution(string testAssembly, + string? testAdapterPath, + string framework, + string? runSettings = "", + Dictionary? environmentVariables = null) + { + var arguments = PrepareArguments(testAssembly, testAdapterPath, runSettings, framework, _testEnvironment.InIsolationValue, resultsDirectory: TempDirectory.Path); + InvokeVsTest(arguments, environmentVariables); + } - /// - /// Validate if the overall test count and results are matching. - /// - /// Passed test count - /// Failed test count - /// Skipped test count - public void ValidateSummaryStatus(int passedTestsCount, int failedTestsCount, int skippedTestsCount) + private Dictionary AddDebugEnvironmentVariables(Dictionary? environmentVariables) + { + environmentVariables ??= new(); + + if (_testEnvironment.DebugInfo != null) { - var totalTestCount = passedTestsCount + failedTestsCount + skippedTestsCount; - if (totalTestCount == 0) + if (_testEnvironment.DebugInfo.DebugVSTestConsole) { - // No test should be found/run - var summaryStatus = string.Format( - TestSummaryStatusMessageFormat, - @"\d+", - @"\d+", - @"\d+", - @"\d+"); - StringAssert.DoesNotMatch( - this.standardTestOutput, - new Regex(summaryStatus), - "Excepted: There should not be test summary{2}Actual: {0}{2}Standard Error: {1}{2}Arguments: {3}{2}", - this.standardTestOutput, - this.standardTestError, - Environment.NewLine, - this.arguments); + environmentVariables["VSTEST_RUNNER_DEBUG_ATTACHVS"] = "1"; } - else - { - var summaryStatus = string.Format(TotalTestsMessage, totalTestCount); - if (passedTestsCount != 0) - { - summaryStatus += string.Format(PassedTestsMessage, passedTestsCount); - } - if (failedTestsCount != 0) - { - summaryStatus += string.Format(FailedTestsMessage, failedTestsCount); - } + if (_testEnvironment.DebugInfo.DebugTestHost) + { + environmentVariables["VSTEST_HOST_DEBUG_ATTACHVS"] = "1"; + } - if (skippedTestsCount != 0) - { - summaryStatus += string.Format(SkippedTestsMessage, skippedTestsCount); - } + if (_testEnvironment.DebugInfo.DebugDataCollector) + { + environmentVariables["VSTEST_DATACOLLECTOR_DEBUG_ATTACHVS"] = "1"; + } - Assert.IsTrue( - this.standardTestOutput.Contains(summaryStatus), - "The Test summary does not match.{3}Expected summary: {1}{3}Test Output: {0}{3}Standard Error: {2}{3}Arguments: {4}{3}", - this.standardTestOutput, - summaryStatus, - this.standardTestError, - Environment.NewLine, - this.arguments); + if (!_testEnvironment.DebugInfo.DebugStopAtEntrypoint) + { + environmentVariables["VSTEST_DEBUG_NOBP"] = "1"; } } - public void StdErrorContains(string substring) - { - Assert.IsTrue(this.standardTestError.Contains(substring), "StdErrorOutput - [{0}] did not contain expected string '{1}'", this.standardTestError, substring); - } + return environmentVariables; + } - public void StdErrorDoesNotContains(string substring) - { - Assert.IsFalse(this.standardTestError.Contains(substring), "StdErrorOutput - [{0}] did not contain expected string '{1}'", this.standardTestError, substring); - } + /// + /// Invokes vstest.console to discover tests in a test assembly. "/listTests" is appended to the arguments. + /// + /// A test assembly. + /// Path to test adapters. + /// Run settings for execution. + /// The target framework to use. + /// Environment variables to set to the started process. + public void InvokeVsTestForDiscovery(string testAssembly, string testAdapterPath, string runSettings = "", string targetFramework = "", + Dictionary? environmentVariables = null) + { + var arguments = PrepareArguments(testAssembly, testAdapterPath, runSettings, targetFramework, _testEnvironment.InIsolationValue!, resultsDirectory: TempDirectory.Path); + arguments = string.Concat(arguments, " /listtests"); + InvokeVsTest(arguments, environmentVariables); + } - public void StdOutputContains(string substring) + /// + /// Execute Tests that are not supported with given Runner framework. + /// + /// Runner Framework + /// Framework for which Tests are supported + /// Message to be shown + public static void ExecuteNotSupportedRunnerFrameworkTests(string runnerFramework, string framework, string message) + { + if (!runnerFramework.StartsWith(framework, StringComparison.OrdinalIgnoreCase)) { - Assert.IsTrue(this.standardTestOutput.Contains(substring), $"StdOutout:{Environment.NewLine} Expected substring: {substring}{Environment.NewLine}Actual string: {this.standardTestOutput}"); + Assert.Inconclusive(message); } + } - public void StdOutputDoesNotContains(string substring) + /// + /// Validate if the overall test count and results are matching. + /// + /// Passed test count + /// Failed test count + /// Skipped test count + public void ValidateSummaryStatus(int passed, int failed, int skipped) + { + // TODO: Switch on the actual version of vstest console when we have that set on test environment. + if (_testEnvironment.VSTestConsoleInfo?.Path?.Contains($"{Path.DirectorySeparatorChar}15.") == true) { - Assert.IsFalse(this.standardTestOutput.Contains(substring), $"StdOutout:{Environment.NewLine} Not expected substring: {substring}{Environment.NewLine}Actual string: {this.standardTestOutput}"); + ValidateSummaryStatusv15(passed, failed, skipped); + return; } - public void ExitCodeEquals(int exitCode) + var totalTestCount = passed + failed + skipped; + if (totalTestCount == 0) { - Assert.AreEqual(exitCode, this.runnerExitCode, $"ExitCode - [{this.runnerExitCode}] doesn't match expected '{exitCode}'."); + // No test should be found/run + var summaryStatus = string.Format( + CultureInfo.CurrentCulture, + TestSummaryStatusMessageFormat, + @"\d+", + @"\d+", + @"\d+", + @"\d+"); + StringAssert.DoesNotMatch( + _standardTestOutput, + new Regex(summaryStatus), + "Excepted: There should not be test summary{2}Actual: {0}{2}Standard Error: {1}{2}Arguments: {3}{2}", + _standardTestOutput, + _standardTestError, + Environment.NewLine, + _arguments); } - - /// - /// Validates if the test results have the specified set of passed tests. - /// - /// Set of passed tests. - /// Provide the full test name similar to this format SampleTest.TestCode.TestMethodPass. - public void ValidatePassedTests(params string[] passedTests) + else { - // Convert the unicode character to its unicode value for assertion - this.standardTestOutput = Regex.Replace(this.standardTestOutput, @"[^\x00-\x7F]", c => string.Format(@"\u{0:x4}", (int)c.Value[0])); - foreach (var test in passedTests) + var summaryStatus = string.Format(CultureInfo.CurrentCulture, TotalTestsMessage, totalTestCount); + if (passed != 0) { - // Check for tick or ? both, in some cases as unicode character for tick is not available - // in std out and gets replaced by ? - var flag = this.standardTestOutput.Contains("Passed " + test) - || this.standardTestOutput.Contains("Passed " + GetTestMethodName(test)) - || this.standardTestOutput.Contains("\\ufffd " + test) - || this.standardTestOutput.Contains("\\ufffd " + GetTestMethodName(test)); - Assert.IsTrue(flag, "Test {0} does not appear in passed tests list.", test); + summaryStatus += string.Format(CultureInfo.CurrentCulture, PassedTestsMessage, passed); } - } - /// - /// Validates if the test results have the specified set of failed tests. - /// - /// Set of failed tests. - /// - /// Provide the full test name similar to this format SampleTest.TestCode.TestMethodFailed. - /// Also validates whether these tests have stack trace info. - /// - public void ValidateFailedTests(params string[] failedTests) - { - foreach (var test in failedTests) + if (failed != 0) { - var flag = this.standardTestOutput.Contains("Failed " + test) - || this.standardTestOutput.Contains("Failed " + GetTestMethodName(test)); - Assert.IsTrue(flag, "Test {0} does not appear in failed tests list.", test); + summaryStatus += string.Format(CultureInfo.CurrentCulture, FailedTestsMessage, failed); + } - // Verify stack information as well. - Assert.IsTrue(this.standardTestOutput.Contains(GetTestMethodName(test)), "No stack trace for failed test: {0}", test); + if (skipped != 0) + { + summaryStatus += string.Format(CultureInfo.CurrentCulture, SkippedTestsMessage, skipped); } + + Assert.IsTrue( + _standardTestOutput.Contains(summaryStatus), + "The Test summary does not match.{3}Expected summary: {1}{3}Test Output: {0}{3}Standard Error: {2}{3}Arguments: {4}{3}", + _standardTestOutput, + summaryStatus, + _standardTestError, + Environment.NewLine, + _arguments); } + } - /// - /// Validates if the test results have the specified set of skipped tests. - /// - /// The set of skipped tests. - /// Provide the full test name similar to this format SampleTest.TestCode.TestMethodSkipped. - public void ValidateSkippedTests(params string[] skippedTests) + /// + /// Validate if the overall test count and results are matching. + /// + /// Passed test count + /// Failed test count + /// Skipped test count + public void ValidateSummaryStatusv15(int passed, int failed, int skipped) + { + // example: Total tests: 6. Passed: 2. Failed: 2. Skipped: 2. + var totalTestCount = passed + failed + skipped; + if (totalTestCount == 0) + { + // No test should be found/run + StringAssert.DoesNotMatch( + _standardTestOutput, + new Regex("Total tests\\:"), + "Excepted: There should not be test summary{2}Actual: {0}{2}Standard Error: {1}{2}Arguments: {3}{2}", + _standardTestOutput, + _standardTestError, + Environment.NewLine, + _arguments); + } + else { - foreach (var test in skippedTests) + var summaryStatus = $"Total tests: {totalTestCount}."; + if (passed != 0) { - var flag = this.standardTestOutput.Contains("Skipped " + test) - || this.standardTestOutput.Contains("Skipped " + GetTestMethodName(test)); - Assert.IsTrue(flag, "Test {0} does not appear in skipped tests list.", test); + summaryStatus += $" Passed: {passed}."; } - } - /// - /// Validate if the discovered tests list contains provided tests. - /// - /// List of tests expected to be discovered. - public void ValidateDiscoveredTests(params string[] discoveredTestsList) - { - foreach (var test in discoveredTestsList) + if (failed != 0) { - var flag = this.standardTestOutput.Contains(test) - || this.standardTestOutput.Contains(GetTestMethodName(test)); - Assert.IsTrue(flag, $"Test {test} does not appear in discovered tests list." + - $"{System.Environment.NewLine}Std Output: {this.standardTestOutput}" + - $"{System.Environment.NewLine}Std Error: { this.standardTestError}"); + summaryStatus += $" Failed: {failed}."; } - } - /// - /// Validate that the discovered tests list doesn't contain specified tests. - /// - /// List of tests expected not to be discovered. - public void ValidateTestsNotDiscovered(params string[] testsList) - { - foreach (var test in testsList) + if (skipped != 0) { - var flag = this.standardTestOutput.Contains(test) - || this.standardTestOutput.Contains(GetTestMethodName(test)); - Assert.IsFalse(flag, $"Test {test} should not appear in discovered tests list." + - $"{System.Environment.NewLine}Std Output: {this.standardTestOutput}" + - $"{System.Environment.NewLine}Std Error: { this.standardTestError}"); + summaryStatus += $" Skipped: {skipped}."; } + + Assert.IsTrue( + _standardTestOutput.Contains(summaryStatus), + "The Test summary does not match.{3}Expected summary: {1}{3}Test Output: {0}{3}Standard Error: {2}{3}Arguments: {4}{3}", + _standardTestOutput, + summaryStatus, + _standardTestError, + Environment.NewLine, + _arguments); } + } - public void ValidateFullyQualifiedDiscoveredTests(string filePath, params string[] discoveredTestsList) - { - var fileOutput = File.ReadAllLines(filePath); - Assert.IsTrue(fileOutput.Length == 3); + public void StdErrorContains(string substring) + { + Assert.IsTrue(_standardTestError.Contains(substring), "StdErrorOutput - [{0}] did not contain expected string '{1}'", _standardTestError, substring); + } - foreach (var test in discoveredTestsList) - { - var flag = fileOutput.Contains(test) - || fileOutput.Contains(GetTestMethodName(test)); - Assert.IsTrue(flag, $"Test {test} does not appear in discovered tests list." + - $"{System.Environment.NewLine}Std Output: {this.standardTestOutput}" + - $"{System.Environment.NewLine}Std Error: { this.standardTestError}"); - } + public void StdErrorRegexIsMatch(string pattern) + { + Assert.IsTrue(Regex.IsMatch(_standardTestError, pattern), "StdErrorOutput - [{0}] did not contain expected pattern '{1}'", _standardTestError, pattern); + } + + public void StdErrorDoesNotContains(string substring) + { + Assert.IsFalse(_standardTestError.Contains(substring), "StdErrorOutput - [{0}] did not contain expected string '{1}'", _standardTestError, substring); + } + + public void StdOutputContains(string substring) + { + Assert.IsTrue(_standardTestOutput.Contains(substring), $"{Environment.NewLine}StdOutput:{Environment.NewLine}{Environment.NewLine}Expected substring: {substring}{Environment.NewLine}{Environment.NewLine}Actual string: {_standardTestOutput}"); + } + + public void StdOutputDoesNotContains(string substring) + { + Assert.IsFalse(_standardTestOutput.Contains(substring), $"{Environment.NewLine}StdOutput:{Environment.NewLine}{Environment.NewLine}Not expected substring: {substring}{Environment.NewLine}{Environment.NewLine}Actual string: {_standardTestOutput}"); + } + + public void ExitCodeEquals(int exitCode) + { + Assert.AreEqual(exitCode, _runnerExitCode, $"ExitCode - [{_runnerExitCode}] doesn't match expected '{exitCode}'."); + } + + /// + /// Validates if the test results have the specified set of passed tests. + /// + /// Set of passed tests. + /// Provide the full test name similar to this format SampleTest.TestCode.TestMethodPass. + public void ValidatePassedTests(params string[] passedTests) + { + // Convert the unicode character to its unicode value for assertion + _standardTestOutput = Regex.Replace(_standardTestOutput, @"[^\x00-\x7F]", c => $@"\u{(int)c.Value[0]:x4}"); + foreach (var test in passedTests) + { + // Check for tick or ? both, in some cases as unicode character for tick is not available + // in std out and gets replaced by ? + var flag = _standardTestOutput.Contains("Passed " + test) + || _standardTestOutput.Contains("Passed " + GetTestMethodName(test)) + || _standardTestOutput.Contains("\\ufffd " + test) + || _standardTestOutput.Contains("\\ufffd " + GetTestMethodName(test)); + Assert.IsTrue(flag, "Test {0} does not appear in passed tests list.", test); } + } - protected string GetSampleTestAssembly() + /// + /// Validates if the test results have the specified set of failed tests. + /// + /// Set of failed tests. + /// + /// Provide the full test name similar to this format SampleTest.TestCode.TestMethodFailed. + /// Also validates whether these tests have stack trace info. + /// + public void ValidateFailedTests(params string[] failedTests) + { + foreach (var test in failedTests) { - return this.GetAssetFullPath("SimpleTestProject.dll"); + var flag = _standardTestOutput.Contains("Failed " + test) + || _standardTestOutput.Contains("Failed " + GetTestMethodName(test)); + Assert.IsTrue(flag, "Test {0} does not appear in failed tests list.", test); + + // Verify stack information as well. + Assert.IsTrue(_standardTestOutput.Contains(GetTestMethodName(test)), "No stack trace for failed test: {0}", test); } + } - protected string GetAssetFullPath(string assetName) + /// + /// Validates if the test results have the specified set of skipped tests. + /// + /// The set of skipped tests. + /// Provide the full test name similar to this format SampleTest.TestCode.TestMethodSkipped. + public void ValidateSkippedTests(params string[] skippedTests) + { + foreach (var test in skippedTests) { - return this.testEnvironment.GetTestAsset(assetName); + var flag = _standardTestOutput.Contains("Skipped " + test) + || _standardTestOutput.Contains("Skipped " + GetTestMethodName(test)); + Assert.IsTrue(flag, "Test {0} does not appear in skipped tests list.", test); } + } - protected string GetAssetFullPath(string assetName, string targetFramework) + /// + /// Validate if the discovered tests list contains provided tests. + /// + /// List of tests expected to be discovered. + public void ValidateDiscoveredTests(params string[] discoveredTestsList) + { + foreach (var test in discoveredTestsList) { - return this.testEnvironment.GetTestAsset(assetName, targetFramework); + var flag = _standardTestOutput.Contains(test) + || _standardTestOutput.Contains(GetTestMethodName(test)); + Assert.IsTrue(flag, $"Test {test} does not appear in discovered tests list." + + $"{Environment.NewLine}Std Output: {_standardTestOutput}" + + $"{Environment.NewLine}Std Error: {_standardTestError}"); } + } - protected string GetProjectFullPath(string projectName) + /// + /// Validate that the discovered tests list doesn't contain specified tests. + /// + /// List of tests expected not to be discovered. + public void ValidateTestsNotDiscovered(params string[] testsList) + { + foreach (var test in testsList) { - return this.testEnvironment.GetTestProject(projectName); + var flag = _standardTestOutput.Contains(test) + || _standardTestOutput.Contains(GetTestMethodName(test)); + Assert.IsFalse(flag, $"Test {test} should not appear in discovered tests list." + + $"{Environment.NewLine}Std Output: {_standardTestOutput}" + + $"{Environment.NewLine}Std Error: {_standardTestError}"); } + } - protected string GetProjectAssetFullPath(string projectName, string assetName) + public void ValidateFullyQualifiedDiscoveredTests(string filePath, params string[] discoveredTestsList) + { + var fileOutput = File.ReadAllLines(filePath); + Assert.IsTrue(fileOutput.Length == 3); + + foreach (var test in discoveredTestsList) { - var projectPath = this.testEnvironment.GetTestProject(projectName); - return Path.Combine(Path.GetDirectoryName(projectPath), assetName); + var flag = fileOutput.Contains(test) + || fileOutput.Contains(GetTestMethodName(test)); + Assert.IsTrue(flag, $"Test {test} does not appear in discovered tests list." + + $"{Environment.NewLine}Std Output: {_standardTestOutput}" + + $"{Environment.NewLine}Std Error: {_standardTestError}"); } + } - protected string GetTestAdapterPath(UnitTestFramework testFramework = UnitTestFramework.MSTest) - { - string adapterRelativePath = string.Empty; + protected string GetSampleTestAssembly() + { + return GetAssetFullPath("SimpleTestProject.dll"); + } - if (testFramework == UnitTestFramework.MSTest) - { - adapterRelativePath = string.Format(TestAdapterRelativePath, this.testEnvironment.DependencyVersions["MSTestAdapterVersion"]); - } - else if (testFramework == UnitTestFramework.NUnit) - { - adapterRelativePath = string.Format(NUnitTestAdapterRelativePath, this.testEnvironment.DependencyVersions["NUnit3AdapterVersion"]); - } - else if (testFramework == UnitTestFramework.XUnit) - { - adapterRelativePath = string.Format(XUnitTestAdapterRelativePath, this.testEnvironment.DependencyVersions["XUnitAdapterVersion"]); - } - else if (testFramework == UnitTestFramework.Chutzpah) - { - adapterRelativePath = string.Format(ChutzpahTestAdapterRelativePath, this.testEnvironment.DependencyVersions["ChutzpahAdapterVersion"]); - } + protected string GetAssetFullPath(string assetName) + { + return _testEnvironment.GetTestAsset(assetName); + } - return this.testEnvironment.GetNugetPackage(adapterRelativePath); - } + protected string GetTestDllForFramework(string assetName, string targetFramework) + { + return _testEnvironment.GetTestAsset(assetName, targetFramework); + } - protected bool IsDesktopRunner() + protected List GetTestDlls(params string[] assetNames) + { + var assets = new List(); + foreach (var assetName in assetNames) { - return this.testEnvironment.RunnerFramework == IntegrationTestBase.DesktopRunnerFramework; + assets.Add(GetAssetFullPath(assetName)); } - protected bool IsNetCoreRunner() + return assets; + } + + protected string GetProjectFullPath(string projectName) + { + return _testEnvironment.GetTestProject(projectName); + } + + protected string GetProjectAssetFullPath(string projectName, string assetName) + { + var projectPath = _testEnvironment.GetTestProject(projectName); + return Path.Combine(Path.GetDirectoryName(projectPath)!, assetName); + } + + protected string GetTestAdapterPath(UnitTestFramework testFramework = UnitTestFramework.MSTest) + { + if (testFramework == UnitTestFramework.NonDll) { - return this.testEnvironment.RunnerFramework == IntegrationTestBase.CoreRunnerFramework; + var dllPath = _testEnvironment.GetTestAsset("NonDll.TestAdapter.dll", "netstandard2.0"); + return Path.GetDirectoryName(dllPath)!; } - /// - /// Gets the path to vstest.console.exe. - /// - /// - /// Full path to test runner - /// - public virtual string GetConsoleRunnerPath() - { - string consoleRunnerPath = string.Empty; + string adapterRelativePath = string.Empty; - if (this.IsDesktopRunner()) - { - consoleRunnerPath = Path.Combine(this.testEnvironment.PublishDirectory, "vstest.console.exe"); - } - else if (this.IsNetCoreRunner()) + if (testFramework == UnitTestFramework.MSTest) + { + var version = IntegrationTestEnvironment.DependencyVersions["MSTestTestAdapterVersion"]; + if (version.StartsWith("3")) { - var executablePath = IsWindows ? @"dotnet\dotnet.exe" : @"dotnet-linux/dotnet"; - consoleRunnerPath = Path.Combine(this.testEnvironment.ToolsDirectory, executablePath); + var tfm = _testEnvironment.TargetFramework.StartsWith("net4") ? "net462" : "netcoreapp3.1"; + adapterRelativePath = string.Format(CultureInfo.InvariantCulture, _msTestAdapterRelativePath, version, tfm); } else { - Assert.Fail("Unknown Runner framework - [{0}]", this.testEnvironment.RunnerFramework); + adapterRelativePath = string.Format(CultureInfo.InvariantCulture, _msTestPre3_0AdapterRelativePath, version); } - - Assert.IsTrue(File.Exists(consoleRunnerPath), "GetConsoleRunnerPath: Path not found: {0}", consoleRunnerPath); - return consoleRunnerPath; } - - protected virtual string SetVSTestConsoleDLLPathInArgs(string args) + else if (testFramework == UnitTestFramework.NUnit) { - var vstestConsoleDll = Path.Combine(this.testEnvironment.PublishDirectory, "vstest.console.dll"); - vstestConsoleDll = vstestConsoleDll.AddDoubleQuote(); - args = string.Concat( - vstestConsoleDll, - " ", - args); - return args; + adapterRelativePath = string.Format(CultureInfo.InvariantCulture, _nUnitTestAdapterRelativePath, IntegrationTestEnvironment.DependencyVersions["NUnit3AdapterVersion"]); } - - /// - /// Returns the VsTestConsole Wrapper. - /// - /// - public IVsTestConsoleWrapper GetVsTestConsoleWrapper() + else if (testFramework == UnitTestFramework.XUnit) { - var logFileName = Path.GetFileName(Path.GetTempFileName()); - var logFileDir = Path.Combine(Path.GetTempPath(), "VSTestConsoleWrapperLogs"); + var tfm = _testEnvironment.TargetFramework.StartsWith("net4") ? "net462" : "netcoreapp3.1"; + adapterRelativePath = string.Format(CultureInfo.InvariantCulture, _xUnitTestAdapterRelativePath, IntegrationTestEnvironment.DependencyVersions["XUnitAdapterVersion"], tfm); + } - if (!Directory.Exists(logFileDir)) - { - Directory.CreateDirectory(logFileDir); - } + return _testEnvironment.GetNugetPackage(adapterRelativePath); + } - var logFilePath = Path.Combine(logFileDir, logFileName); + protected bool IsDesktopRunner() + { + return _testEnvironment.RunnerFramework == DesktopRunnerFramework; + } - Console.WriteLine($"Logging diagnostics in {logFilePath}"); + protected bool IsNetCoreRunner() + { + return _testEnvironment.RunnerFramework == CoreRunnerFramework; + } - string consoleRunnerPath; + /// + /// Gets the path to vstest.console.exe or dotnet.exe. + /// + /// + /// Full path to test runner + /// + public virtual string GetConsoleRunnerPath() + { + string consoleRunnerPath = string.Empty; - if (this.IsNetCoreRunner()) - { - consoleRunnerPath = Path.Combine(this.testEnvironment.PublishDirectory, "vstest.console.dll"); - } - else + if (IsDesktopRunner()) + { + consoleRunnerPath = StringUtils.IsNullOrWhiteSpace(_testEnvironment.VSTestConsoleInfo?.Path) + ? Path.Combine(IntegrationTestEnvironment.PublishDirectory, $"Microsoft.TestPlatform.{IntegrationTestEnvironment.LatestLocallyBuiltNugetVersion}.nupkg", "tools", "net462", "Common7", "IDE", "Extensions", "TestPlatform", "vstest.console.exe") + : _testEnvironment.VSTestConsoleInfo.Path; + } + else if (IsNetCoreRunner()) + { + var executablePath = OSUtils.IsWindows ? @".dotnet\dotnet.exe" : @".dotnet/dotnet"; + consoleRunnerPath = Path.Combine(IntegrationTestEnvironment.RepoRootDirectory, executablePath); + } + else + { + Assert.Fail("Unknown Runner framework - [{0}]", _testEnvironment.RunnerFramework); + } + + Assert.IsTrue(File.Exists(consoleRunnerPath), "GetConsoleRunnerPath: Path not found: \"{0}\"", consoleRunnerPath); + return consoleRunnerPath; + } + + protected virtual string SetVSTestConsoleDLLPathInArgs(string? args) + { + var vstestConsoleDll = GetDotnetRunnerPath(); + vstestConsoleDll = vstestConsoleDll.AddDoubleQuote(); + args = string.Concat( + vstestConsoleDll, + " ", + args); + return args; + } + + + /// + /// Returns the VsTestConsole Wrapper. + /// + /// + public IVsTestConsoleWrapper GetVsTestConsoleWrapper(Dictionary? environmentVariables = null, TraceLevel traceLevel = TraceLevel.Verbose) + { + ConsoleParameters consoleParameters = new(); + if (traceLevel != TraceLevel.Off) + { + if (!Directory.Exists(TempDirectory.Path)) { - consoleRunnerPath = this.GetConsoleRunnerPath(); + Directory.CreateDirectory(TempDirectory.Path); } - var executablePath = IsWindows ? @"dotnet\dotnet.exe" : @"dotnet-linux/dotnet"; - var dotnetPath = Path.Combine(this.testEnvironment.ToolsDirectory, executablePath); - if (!File.Exists(dotnetPath)) + // Directory is already unique so there is no need to have a unique file name. + var logFilePath = Path.Combine(TempDirectory.Path, "log.txt"); + if (!File.Exists(logFilePath)) { - throw new FileNotFoundException($"File '{dotnetPath}' was not found."); + File.Create(logFilePath).Close(); } - var vstestConsoleWrapper = new VsTestConsoleWrapper(consoleRunnerPath, dotnetPath, new ConsoleParameters() { LogFilePath = logFilePath }); - vstestConsoleWrapper.StartSession(); + Console.WriteLine($"Logging diagnostics in {logFilePath}"); + consoleParameters.LogFilePath = logFilePath; + } + + var consoleRunnerPath = IsNetCoreRunner() + ? GetDotnetRunnerPath() + : GetConsoleRunnerPath(); + var executablePath = OSUtils.IsWindows ? @".dotnet\dotnet.exe" : @".dotnet/dotnet"; + var dotnetPath = Path.Combine(IntegrationTestEnvironment.RepoRootDirectory, executablePath); - return vstestConsoleWrapper; + if (!File.Exists(dotnetPath)) + { + throw new FileNotFoundException($"File '{dotnetPath}' was not found."); } - /// - /// Gets the test method name from full name. - /// - /// Fully qualified name of the test. - /// Simple name of the test. - private static string GetTestMethodName(string testFullName) + if (!File.Exists(consoleRunnerPath)) { - string testMethodName = string.Empty; + throw new FileNotFoundException($"File '{consoleRunnerPath}' was not found."); + } + + Console.WriteLine($"Console runner path: {consoleRunnerPath}"); - var splits = testFullName.Split('.'); - if (splits.Length >= 3) + // Providing any environment variable to vstest.console will clear all existing environment variables, + // this works around it by copying all existing variables, and adding debug. But we only want to do that + // when we are setting any debug variables. + // TODO: This is scheduled to be fixed in 17.3, where it will start working normally. We will just add those + // variables, unless we explicitly say to clean them. https://github.com/microsoft/vstest/pull/3433 + // Remove this code later, and just pass the variables you want to add. + var debugEnvironmentVariables = AddDebugEnvironmentVariables(new()); + environmentVariables ??= new(); + if (debugEnvironmentVariables.Count > 0) + { + Environment.GetEnvironmentVariables().OfType().ToList().ForEach(e => environmentVariables.Add(e.Key.ToString()!, e.Value?.ToString())); + foreach (var pair in debugEnvironmentVariables) { - testMethodName = testFullName.Split('.')[2]; + environmentVariables[pair.Key] = pair.Value; } - - return testMethodName; } - private void ExecuteVsTestConsole(string args, out string stdOut, out string stdError, out int exitCode) + if (environmentVariables.Count > 0) { - if (this.IsNetCoreRunner()) - { - args = this.SetVSTestConsoleDLLPathInArgs(args); - } + // This clears all variables, so we copy all environment variables, and add the debug ones to them. + consoleParameters.EnvironmentVariables = environmentVariables; + } - this.arguments = args; + var vstestConsoleWrapper = new VsTestConsoleWrapper(consoleRunnerPath, dotnetPath, consoleParameters); + vstestConsoleWrapper.StartSession(); - this.ExecuteApplication(this.GetConsoleRunnerPath(), args, out stdOut, out stdError, out exitCode); - } + return vstestConsoleWrapper; + } - /// - /// Executes a local copy of dotnet that has VSTest task installed and possibly other modifications. Do not use this to - /// do your builds or to run general tests, unless you want your changes to be reflected. - /// - /// - /// - /// - /// - /// - private void ExecutePatchedDotnet(string command, string args, out string stdOut, out string stdError, out int exitCode) - { - var environmentVariables = new Dictionary - { - ["DOTNET_MULTILEVEL_LOOKUP"] = "0" - }; + /// + /// Gets the test method name from full name. + /// + /// Fully qualified name of the test. + /// Simple name of the test. + private static string GetTestMethodName(string testFullName) + { + string testMethodName = string.Empty; - var executablePath = IsWindows ? @"dotnet\dotnet.exe" : @"dotnet-linux/dotnet"; - var patchedDotnetPath = Path.Combine(this.testEnvironment.TestArtifactsDirectory, executablePath); - this.ExecuteApplication(patchedDotnetPath, string.Join(" ", command, args), out stdOut, out stdError, out exitCode, environmentVariables); + var splits = testFullName.Split('.'); + if (splits.Length >= 3) + { + testMethodName = testFullName.Split('.')[2]; } - private void ExecuteApplication(string path, string args, out string stdOut, out string stdError, out int exitCode, Dictionary environmentVariables = null) + return testMethodName; + } + + protected void ExecuteVsTestConsole(string? args, out string stdOut, out string stdError, out int exitCode, Dictionary? environmentVariables = null) + { + if (IsNetCoreRunner()) { - if (string.IsNullOrWhiteSpace(path)) - { - throw new ArgumentException("Executable path must not be null or whitespace.", nameof(path)); - } + args = SetVSTestConsoleDLLPathInArgs(args); + } - var executableName = Path.GetFileName(path); + _arguments = args; - using (Process process = new Process()) - { - Console.WriteLine($"IntegrationTestBase.Execute: Starting {executableName}"); - process.StartInfo.FileName = path; - process.StartInfo.Arguments = args; - process.StartInfo.UseShellExecute = false; - //vstestconsole.StartInfo.WorkingDirectory = testEnvironment.PublishDirectory; - process.StartInfo.RedirectStandardError = true; - process.StartInfo.RedirectStandardOutput = true; - process.StartInfo.CreateNoWindow = true; - process.StartInfo.StandardOutputEncoding = Encoding.UTF8; - process.StartInfo.StandardErrorEncoding = Encoding.UTF8; - if (environmentVariables != null) - { - foreach (var variable in environmentVariables) - { - if (process.StartInfo.EnvironmentVariables.ContainsKey(variable.Key)) - { - process.StartInfo.EnvironmentVariables[variable.Key] = variable.Value; - } - else - { - process.StartInfo.EnvironmentVariables.Add(variable.Key, variable.Value); - } - } - } + ExecuteApplication(GetConsoleRunnerPath(), args, out stdOut, out stdError, out exitCode, environmentVariables); + } - var stdoutBuffer = new StringBuilder(); - var stderrBuffer = new StringBuilder(); - process.OutputDataReceived += (sender, eventArgs) => - { - stdoutBuffer.AppendLine(eventArgs.Data); - }; + /// + /// Executes a local copy of dotnet that has VSTest task installed and possibly other modifications. Do not use this to + /// do your builds or to run general tests, unless you want your changes to be reflected. + /// + /// + /// + /// + /// + /// + /// Environment variables to set to the started process. + /// + private static void ExecutePatchedDotnet(string command, string args, out string stdOut, out string stdError, out int exitCode, + Dictionary? environmentVariables = null, string? workingDirectory = null) + { + environmentVariables ??= new(); + + environmentVariables["DOTNET_MULTILEVEL_LOOKUP"] = "0"; + + var executablePath = OSUtils.IsWindows ? @"dotnet.exe" : @"dotnet"; + var patchedDotnetPath = Path.GetFullPath(Path.Combine(IntegrationTestEnvironment.RepoRootDirectory, "artifacts", "tmp", ".dotnet", executablePath)); + ExecuteApplication(patchedDotnetPath, string.Join(" ", command, args), out stdOut, out stdError, out exitCode, environmentVariables, workingDirectory); + } + + protected static void ExecuteApplication(string path, string? args, out string stdOut, out string stdError, out int exitCode, + Dictionary? environmentVariables = null, string? workingDirectory = null) + { + if (path.IsNullOrWhiteSpace()) + { + throw new ArgumentException("Executable path must not be null or whitespace.", nameof(path)); + } + + if (!File.Exists(path)) + { + throw new ArgumentException($"Executable path '{path}' could not be found.", nameof(path)); + } - process.ErrorDataReceived += (sender, eventArgs) => stderrBuffer.AppendLine(eventArgs.Data); + var executableName = Path.GetFileName(path); - Console.WriteLine("IntegrationTestBase.Execute: Path = {0}", process.StartInfo.FileName); - Console.WriteLine("IntegrationTestBase.Execute: Arguments = {0}", process.StartInfo.Arguments); + using var process = new Process(); + Console.WriteLine($"IntegrationTestBase.Execute: Starting {executableName}"); + process.StartInfo.FileName = path; + process.StartInfo.Arguments = args; + process.StartInfo.UseShellExecute = false; + process.StartInfo.RedirectStandardError = true; + process.StartInfo.RedirectStandardOutput = true; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.StandardOutputEncoding = Encoding.UTF8; + process.StartInfo.StandardErrorEncoding = Encoding.UTF8; - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); + if (workingDirectory != null) + { + process.StartInfo.WorkingDirectory = workingDirectory; + } - process.Start(); - process.BeginOutputReadLine(); - process.BeginErrorReadLine(); - if (!process.WaitForExit(5 * 60 * 1000)) // 5 minutes + if (environmentVariables != null) + { + foreach (var variable in environmentVariables) + { + if (process.StartInfo.EnvironmentVariables.ContainsKey(variable.Key)) { - Console.WriteLine($"IntegrationTestBase.Execute: Timed out waiting for {executableName}. Terminating the process."); - process.Kill(); + process.StartInfo.EnvironmentVariables[variable.Key] = variable.Value; } else { - // Ensure async buffers are flushed - process.WaitForExit(); + process.StartInfo.EnvironmentVariables.Add(variable.Key, variable.Value); } + } + } - stopwatch.Stop(); + var stdoutBuffer = new StringBuilder(); + var stderrBuffer = new StringBuilder(); + process.OutputDataReceived += (sender, eventArgs) => stdoutBuffer.AppendLine(eventArgs.Data); + process.ErrorDataReceived += (sender, eventArgs) => stderrBuffer.AppendLine(eventArgs.Data); - Console.WriteLine($"IntegrationTestBase.Execute: Total execution time: {stopwatch.Elapsed.Duration()}"); + Console.WriteLine("IntegrationTestBase.Execute: Path = {0}", process.StartInfo.FileName); + Console.WriteLine("IntegrationTestBase.Execute: Arguments = {0}", process.StartInfo.Arguments); + Console.WriteLine("IntegrationTestBase.Execute: WorkingDirectory = {0}", StringUtils.IsNullOrWhiteSpace(process.StartInfo.WorkingDirectory) ? $"(Current Directory) {Directory.GetCurrentDirectory()}" : process.StartInfo.WorkingDirectory); - stdError = stderrBuffer.ToString(); - stdOut = stdoutBuffer.ToString(); - exitCode = process.ExitCode; + var stopwatch = new Stopwatch(); + stopwatch.Start(); - Console.WriteLine("IntegrationTestBase.Execute: stdError = {0}", stdError); - Console.WriteLine("IntegrationTestBase.Execute: stdOut = {0}", stdOut); - Console.WriteLine($"IntegrationTestBase.Execute: Stopped {executableName}. Exit code = {0}", exitCode); - } + process.Start(); + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + if (!process.WaitForExit(30 * 60 * 1000)) // 30 minutes + { + Console.WriteLine($"IntegrationTestBase.Execute: Timed out waiting for {executableName}. Terminating the process."); + process.Kill(); } - - private void FormatStandardOutCome() + else { - this.standardTestErrorWithWhiteSpace = this.standardTestError; - this.standardTestError = Regex.Replace(this.standardTestError, @"\s+", " "); - - this.standardTestOutputWithWhiteSpace = this.standardTestOutput; - this.standardTestOutput = Regex.Replace(this.standardTestOutput, @"\s+", " "); + // Ensure async buffers are flushed + process.WaitForExit(); + process.WaitForExit(1000); } - /// - /// Create runsettings file from runConfigurationDictionary at destinationRunsettingsPath - /// - /// - /// Destination runsettings path where resulted file saves - /// - /// - /// Contains run configuration settings - /// - public static void CreateRunSettingsFile(string destinationRunsettingsPath, IDictionary runConfigurationDictionary) - { - var doc = new XmlDocument(); - var xmlDeclaration = doc.CreateNode(XmlNodeType.XmlDeclaration, string.Empty, string.Empty); + stopwatch.Stop(); - doc.AppendChild(xmlDeclaration); - var runSettingsNode = doc.CreateElement(Constants.RunSettingsName); - doc.AppendChild(runSettingsNode); - var runConfigNode = doc.CreateElement(Constants.RunConfigurationSettingsName); - runSettingsNode.AppendChild(runConfigNode); + Console.WriteLine($"IntegrationTestBase.Execute: Total execution time: {stopwatch.Elapsed.Duration()}"); - foreach (var settingsEntry in runConfigurationDictionary) - { - var childNode = doc.CreateElement(settingsEntry.Key); - childNode.InnerText = settingsEntry.Value; - runConfigNode.AppendChild(childNode); - } + stdError = stderrBuffer.ToString(); + stdOut = stdoutBuffer.ToString(); + exitCode = process.ExitCode; - Stream stream = new FileHelper().GetStream(destinationRunsettingsPath, FileMode.Create); - doc.Save(stream); - stream.Dispose(); - } + Console.WriteLine("IntegrationTestBase.Execute: stdError = {0}", stdError); + Console.WriteLine("IntegrationTestBase.Execute: stdOut = {0}", stdOut); + Console.WriteLine($"IntegrationTestBase.Execute: Stopped {executableName}. Exit code = {0}", exitCode); + } + + private void FormatStandardOutCome() + { + StdErrWithWhiteSpace = _standardTestError; + _standardTestError = Regex.Replace(_standardTestError, @"\s+", " "); + + StdOutWithWhiteSpace = _standardTestOutput; + _standardTestOutput = Regex.Replace(_standardTestOutput, @"\s+", " "); + } + + /// + /// Create runsettings file from runConfigurationDictionary at destinationRunsettingsPath + /// + /// + /// Destination runsettings path where resulted file saves + /// + /// + /// Contains run configuration settings + /// + public static void CreateRunSettingsFile(string destinationRunsettingsPath, IDictionary runConfigurationDictionary) + { + var doc = new XmlDocument(); + var xmlDeclaration = doc.CreateNode(XmlNodeType.XmlDeclaration, string.Empty, string.Empty); - /// - /// Create runsettings file at destinationRunsettingsPath with the content from xmlString - /// - /// - /// Destination runsettings path where resulted file is saved - /// - /// - /// Run settings xml string - /// - public static void CreateRunSettingsFile(string destinationRunsettingsPath, string runSettingsXml) + doc.AppendChild(xmlDeclaration); + var runSettingsNode = doc.CreateElement(Constants.RunSettingsName); + doc.AppendChild(runSettingsNode); + var runConfigNode = doc.CreateElement(Constants.RunConfigurationSettingsName); + runSettingsNode.AppendChild(runConfigNode); + + foreach (var settingsEntry in runConfigurationDictionary) { - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXml); - var stream = new FileHelper().GetStream(destinationRunsettingsPath, FileMode.Create); - doc.Save(stream); - stream.Dispose(); + var childNode = doc.CreateElement(settingsEntry.Key); + childNode.InnerText = settingsEntry.Value; + runConfigNode.AppendChild(childNode); } - protected string BuildMultipleAssemblyPath(params string[] assetNames) - { - var assertFullPaths = new string[assetNames.Length]; - for (var i = 0; i < assetNames.Length; i++) - { - assertFullPaths[i] = this.GetAssetFullPath(assetNames[i]).AddDoubleQuote(); - } + Stream stream = new FileHelper().GetStream(destinationRunsettingsPath, FileMode.Create); + doc.Save(stream); + stream.Dispose(); + } - return string.Join(" ", assertFullPaths); - } + /// + /// Create runsettings file at destinationRunsettingsPath with the content from xmlString + /// + /// + /// Destination runsettings path where resulted file is saved + /// + /// + /// Run settings xml string + /// + public static void CreateRunSettingsFile(string destinationRunsettingsPath, string runSettingsXml) + { + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); + var stream = new FileHelper().GetStream(destinationRunsettingsPath, FileMode.Create); + doc.Save(stream); + stream.Dispose(); + } - /// - /// Creates an unique temporary directory for storing test results. - /// - /// - /// Path of the created directory. - /// - protected static string GetResultsDirectory() - { - // AGENT_TEMPDIRECTORY is AzureDevops variable, which is set to path - // that is cleaned up after every job. This is preferable to use over - // just the normal temp. - var temp = Environment.GetEnvironmentVariable("AGENT_TEMPDIRECTORY") ?? Path.GetTempPath(); - var directoryPath = Path.Combine(temp, Guid.NewGuid().ToString("n")); - Directory.CreateDirectory(directoryPath); + protected string BuildMultipleAssemblyPath(params string[] assetNames) + { + // Double quoted sources separated by space. + return string.Join(" ", GetTestDlls(assetNames).Select(a => a.AddDoubleQuote())); + } - return directoryPath; - } + protected static string GetDiagArg(string rootDir) + => " --diag:" + Path.Combine(rootDir, "log.txt"); + + /// + /// Counts the number of logs following the '*.host.*' pattern in the given folder. + /// + protected static int CountTestHostLogs(string diagLogsDir) + => Directory.GetFiles(diagLogsDir, "*.host.*").Length; + + protected static void AssertExpectedNumberOfHostProcesses(int expectedNumOfProcessCreated, string diagLogsDir, IEnumerable testHostProcessNames, + string? arguments = null, string? runnerPath = null) + { + var processCreatedCount = CountTestHostLogs(diagLogsDir); + Assert.AreEqual( + expectedNumOfProcessCreated, + processCreatedCount, + $"Number of {string.Join(", ", testHostProcessNames)} process created, expected: {expectedNumOfProcessCreated} actual: {processCreatedCount} {(arguments == null ? "" : "args: " + arguments)} {(runnerPath == null ? "" : "runner path: " + runnerPath)}"); + } - protected static void TryRemoveDirectory(string directory) + protected static string GetDownloadedDotnetMuxerFromTools(string architecture) + { + if (architecture is not "X86" and not "X64") { - if (Directory.Exists(directory)) - { - try - { - Directory.Delete(directory, true); - } - catch { } - } + throw new NotSupportedException(nameof(architecture)); } + + string path = Path.Combine(IntegrationTestEnvironment.RepoRootDirectory, ".dotnet", + architecture == "X86" ? + "dotnet-sdk-x86" : + "", // x64 is directly in .dotnet folder + $"dotnet{(OSUtils.IsWindows ? ".exe" : "")}"); + + Assert.IsTrue(File.Exists(path), $"Path '{path}' should exist."); + + return path; + } + + protected string GetDotnetRunnerPath() => + _testEnvironment.VSTestConsoleInfo?.Path ?? Path.Combine(IntegrationTestEnvironment.PublishDirectory, $"Microsoft.TestPlatform.CLI.{IntegrationTestEnvironment.LatestLocallyBuiltNugetVersion}.nupkg", "contentFiles", "any", "net9.0", "vstest.console.dll"); + + protected void StdOutHasNoWarnings() + { + StdOut.Should().NotContainEquivalentOf("warning"); + } + + protected void StdErrHasTestRunFailedMessageButNoOtherError() + { + StdErr?.Trim().Should().Be("Test Run Failed."); } } diff --git a/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestEnvironment.cs b/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestEnvironment.cs index a56217f37d..d7743edb87 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestEnvironment.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestEnvironment.cs @@ -1,331 +1,338 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.TestUtilities +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.TestUtilities; + +/// +/// Provider for test environment configuration. +/// Currently reads configuration from environment variables. We may support a +/// different provider later. E.g. run settings. +/// +public class IntegrationTestEnvironment { - using System; - using System.Collections.Generic; - using System.IO; - using System.Xml; + public static string RepoRootDirectory { get; } = + Environment.GetEnvironmentVariable("TP_ROOT_DIR") + // Running in VS/IDE. Use artifacts directory as root. + // Get root directory from test assembly output directory + ?? Path.GetFullPath(@"..\..\..\..\..".Replace('\\', Path.DirectorySeparatorChar)); - using Microsoft.VisualStudio.TestTools.UnitTesting; + public static string ArtifactsTempDirectory { get; } = Path.Combine(RepoRootDirectory, "artifacts", "tmp", BuildConfiguration); + + public static string LocalPackageSource { get; } = Path.Combine(RepoRootDirectory, "artifacts", "packages", BuildConfiguration, "Shipping").TrimEnd(Path.DirectorySeparatorChar); + public static string LatestLocallyBuiltNugetVersion { get; } = GetLatestLocallyBuiltPackageVersion(); /// - /// Provider for test environment configuration. - /// Currently reads configuration from environment variables. We may support a - /// different provider later. E.g. run settings. + /// Gets the publish directory for vstest.console package. /// - public class IntegrationTestEnvironment - { - public static string TestPlatformRootDirectory = Environment.GetEnvironmentVariable("TP_ROOT_DIR") - ?? Path.GetFullPath(@"..\..\..\..\..".Replace('\\', Path.DirectorySeparatorChar)); + public static string PublishDirectory { get; } = + // this used to switch to src\package\package\bin\based on whether + // this is running in cli, but that's a bad idea, the console there does not have + // a runtime config and will fail to start with error testhostpolicy.dll not found + Path.Combine(ArtifactsTempDirectory, "extractedPackages"); - private static Dictionary dependencyVersions; - - private string targetRuntime; + /// + /// Gets the extensions directory for vstest.console package. + /// + public static string ExtensionsDirectory { get; } = Path.Combine(PublishDirectory, $"Microsoft.TestPlatform.{IntegrationTestEnvironment.LatestLocallyBuiltNugetVersion}.nupkg", "tools", "net462", "Common7", "IDE", "Extensions", "TestPlatform", "Extensions"); - public IntegrationTestEnvironment() - { - // These environment variables are set in scripts/test.ps1 or scripts/test.sh. - this.TargetFramework = Environment.GetEnvironmentVariable("TPT_TargetFramework"); - this.TargetRuntime = Environment.GetEnvironmentVariable("TPT_TargetRuntime"); + private static Dictionary? s_dependencyVersions; - // If the variables are not set, valid defaults are assumed. - if (string.IsNullOrEmpty(this.TargetFramework)) - { - // Run integration tests for net451 by default. - this.TargetFramework = "net451"; - } + private string? _targetRuntime; - if (string.IsNullOrEmpty(TestPlatformRootDirectory)) - { - // Running in VS/IDE. Use artifacts directory as root. - // Get root directory from test assembly output directory - TestPlatformRootDirectory = Path.GetFullPath(@"..\..\..\..\..".Replace('\\', Path.DirectorySeparatorChar)); - } + public IntegrationTestEnvironment() + { + // If the variables are not set, valid defaults are assumed. + if (TargetFramework.IsNullOrEmpty()) + { + // Run integration tests for net462 by default. + TargetFramework = "net462"; + } - this.TestAssetsPath = Path.Combine(TestPlatformRootDirectory, $@"test{Path.DirectorySeparatorChar}TestAssets"); + TestAssetsPath = Path.Combine(RepoRootDirectory, "test", "TestAssets"); - // There is an assumption that integration tests will always run from a source enlistment. - // Need to remove this assumption when we move to a CDP. - this.PackageDirectory = Path.Combine(TestPlatformRootDirectory, @"packages"); - this.ToolsDirectory = Path.Combine(TestPlatformRootDirectory, @"tools"); - this.TestArtifactsDirectory = Path.Combine(TestPlatformRootDirectory, "artifacts", "testArtifacts"); - this.RunnerFramework = "net451"; - } + // There is an assumption that integration tests will always run from a source enlistment. + // Need to remove this assumption when we move to a CDP. + PackageDirectory = Path.Combine(RepoRootDirectory, @".packages"); + TestArtifactsDirectory = Path.Combine(RepoRootDirectory, "artifacts", "testArtifacts"); + RunnerFramework = "net462"; + } - /// - /// Gets the build configuration for the test run. - /// - public static string BuildConfiguration + /// + /// Gets the build configuration for the test run. + /// + public static string BuildConfiguration + { + get { - get - { #if DEBUG - return "Debug"; + return "Debug"; #else - return "Release"; + return "Release"; #endif - } } + } - public Dictionary DependencyVersions - { - get - { - if (dependencyVersions == null) - { - dependencyVersions = GetDependencies(TestPlatformRootDirectory); - } + public static Dictionary DependencyVersions + => s_dependencyVersions ??= GetDependencies(RepoRootDirectory); - return dependencyVersions; - } - } + /// + /// Gets the nuget packages directory for enlistment. + /// + public string PackageDirectory { get; } - /// - /// Gets the nuget packages directory for enlistment. - /// - public string PackageDirectory - { - get; - private set; - } + /// + /// Gets the target framework. + /// Supported values = net462, net8.0. + /// + [NotNull] + public string? TargetFramework { get; set; } - /// - /// Gets the publish directory for vstest.console package. - /// - public string PublishDirectory + /// + /// Gets the target runtime. + /// Supported values = win7-x64. + /// + public string? TargetRuntime + { + get { - get + if (RunnerFramework == IntegrationTestBase.DesktopRunnerFramework) { - // this used to switch to src\package\package\bin\based on whether - // this is running in cli, but that's a bad idea, the console there does not have - // a runtime config and will fail to start with error testhostpolicy.dll not found - var publishDirectory = Path.Combine( - TestPlatformRootDirectory, - "artifacts", - BuildConfiguration, - this.RunnerFramework, - this.TargetRuntime); - - if (!Directory.Exists(publishDirectory)) + if (_targetRuntime.IsNullOrEmpty()) { - throw new InvalidOperationException($"Path '{publishDirectory}' does not exist, did you build the solution via build.cmd?"); + _targetRuntime = "win7-x64"; } - - return publishDirectory; } - } - - /// - /// Gets the extensions directory for vstest.console package. - /// - public string ExtensionsDirectory => Path.Combine(PublishDirectory, "Extensions"); + else + { + _targetRuntime = ""; + } - /// - /// Gets the target framework. - /// Supported values = net451, netcoreapp1.0. - /// - public string TargetFramework + return _targetRuntime; + } + set { - get; - set; + _targetRuntime = value; } + } - /// - /// Gets the target runtime. - /// Supported values = win7-x64. - /// - public string TargetRuntime - { - get - { - if (this.RunnerFramework == IntegrationTestBase.DesktopRunnerFramework) - { - if (string.IsNullOrEmpty(this.targetRuntime)) - { - this.targetRuntime = "win7-x64"; - } - } - else - { - this.targetRuntime = ""; - } + /// + /// Gets the inIsolation. + /// Supported values = /InIsolation. + /// + public string? InIsolationValue { get; set; } - return this.targetRuntime; - } - set - { - this.targetRuntime = value; - } - } + /// + /// Gets the root directory for test assets. + /// + public string TestAssetsPath { get; } - /// - /// Gets the inIsolation. - /// Supported values = /InIsolation. - /// - public string InIsolationValue - { - get; set; - } + /// + /// Gets the test artifacts directory. + /// + public string TestArtifactsDirectory { get; private set; } - /// - /// Gets the root directory for test assets. - /// - public string TestAssetsPath - { - get; - } + /// + /// Gets the application type. + /// Supported values = net462, net8.0. + /// + public string RunnerFramework { get; set; } - /// - /// Gets the tools directory for dependent tools - /// - public string ToolsDirectory - { - get; - private set; - } + // A known AzureDevOps env variable meaning we are running in CI. + public static bool IsCI { get; } = Environment.GetEnvironmentVariable("TF_BUILD") == "True"; + public DebugInfo? DebugInfo { get; set; } + public VSTestConsoleInfo? VSTestConsoleInfo { get; set; } + public List DllInfos { get; set; } = new(); - /// - /// Gets the test artifacts directory. - /// - public string TestArtifactsDirectory - { - get; - private set; - } + /// + /// Gets the full path to a test asset. + /// + /// Name of the asset with extension. E.g. SimpleUnitTest.dll + /// Full path to the test asset. + /// + /// Test assets follow several conventions: + /// (a) They are built for supported frameworks. See . + /// (b) They are built for provided build configuration. + /// (c) Name of the test asset matches the parent directory name. E.g. TestAssets\SimpleUnitTest\SimpleUnitTest.csproj must + /// produce TestAssets\SimpleUnitTest\bin\Debug\net462\SimpleUnitTest.dll + /// + public string GetTestAsset(string assetName) + { + return GetTestAsset(assetName, TargetFramework!); + } - /// - /// Gets the application type. - /// Supported values = net451, netcoreapp1.0. - /// - public string RunnerFramework + /// + /// Gets the full path to a test asset. + /// + /// Name of the asset with extension. E.g. SimpleUnitTest.dll + /// asset project target framework. E.g net462 + /// Full path to the test asset. + /// + /// Test assets follow several conventions: + /// (a) They are built for supported frameworks. See . + /// (b) They are built for provided build configuration. + /// (c) Name of the test asset matches the parent directory name. E.g. TestAssets\SimpleUnitTest\SimpleUnitTest.csproj must + /// produce TestAssets\SimpleUnitTest\bin\Debug\net462\SimpleUnitTest.dll + /// + public string GetTestAsset(string assetName, string targetFramework) + { + var simpleAssetName = Path.GetFileNameWithoutExtension(assetName); + var assetPath = Path.Combine( + RepoRootDirectory, + "artifacts", + "bin", + "TestAssets", + simpleAssetName, + BuildConfiguration, + targetFramework, + assetName); + + // Update the path to be taken from the compatibility matrix instead of from the root folder. + if (DllInfos.Count > 0) { - get; - set; + // The path is really ugly: S:\p\vstest3\test\GeneratedTestAssets\NETTestSdkLegacyStable-15.9.2--MSTestMostDownloaded-2.1.0--MSTestProject2\bin\Debug\net462\MSTestProject2-NETTestSdkLegacyStable-15.9.2--MSTestMostDownloaded-2.1.0.dll + // And we need to hash the versions in it to get shorter path as well. + var versions = string.Join("--", DllInfos.Select(d => d.Path)); + var versionsHash = GetPathHash(versions); + assetPath = Path.Combine(RepoRootDirectory, "artifacts", "bin", "TestAssets", $"{simpleAssetName}--{versionsHash}", BuildConfiguration, targetFramework, $"{simpleAssetName}--{versionsHash}.dll"); } - /// - /// Gets the full path to a test asset. - /// - /// Name of the asset with extension. E.g. SimpleUnitTest.dll - /// Full path to the test asset. - /// - /// Test assets follow several conventions: - /// (a) They are built for supported frameworks. See . - /// (b) They are built for provided build configuration. - /// (c) Name of the test asset matches the parent directory name. E.g. TestAssets\SimpleUnitTest\SimpleUnitTest.csproj must - /// produce TestAssets\SimpleUnitTest\bin\Debug\net451\SimpleUnitTest.dll - /// - public string GetTestAsset(string assetName) - { - return GetTestAsset(assetName, this.TargetFramework); - } + Assert.IsTrue(File.Exists(assetPath), "GetTestAsset: Path not found: \"{0}\". Most likely you need to build using build.cmd -s PrepareAcceptanceTests.", assetPath); + + // If you are thinking about wrapping the path in double quotes here, + // then don't. File.Exist cannot handle quoted paths, and we use it in a lot of places. + return assetPath; + } - /// - /// Gets the full path to a test asset. - /// - /// Name of the asset with extension. E.g. SimpleUnitTest.dll - /// asset project target framework. E.g net451 - /// Full path to the test asset. - /// - /// Test assets follow several conventions: - /// (a) They are built for supported frameworks. See . - /// (b) They are built for provided build configuration. - /// (c) Name of the test asset matches the parent directory name. E.g. TestAssets\SimpleUnitTest\SimpleUnitTest.csproj must - /// produce TestAssets\SimpleUnitTest\bin\Debug\net451\SimpleUnitTest.dll - /// - public string GetTestAsset(string assetName, string targetFramework) + public static string GetPathHash(string value) + { + unchecked { - var simpleAssetName = Path.GetFileNameWithoutExtension(assetName); - var assetPath = Path.Combine( - this.TestAssetsPath, - simpleAssetName, - "bin", - BuildConfiguration, - targetFramework, - assetName); - - Assert.IsTrue(File.Exists(assetPath), "GetTestAsset: Path not found: {0}.", assetPath); - - return assetPath; + long hash = 23; + foreach (char ch in value) + { + hash = hash * 31 + ch; + } + + return $"{hash:X}"; } + } - /// - /// Gets the full path to a nuget package. - /// - /// Suffix for the nuget package. - /// Complete path to a nuget package. - /// GetNugetPackage("foobar") will return a path to packages\foobar. - public string GetNugetPackage(string packageSuffix) - { - var packagePath = Path.Combine(this.PackageDirectory, packageSuffix); + /// + /// Gets the full path to a nuget package. + /// + /// Suffix for the nuget package. + /// Complete path to a nuget package. + /// GetNugetPackage("foobar") will return a path to packages\foobar. + public string GetNugetPackage(string packageSuffix) + { + var packagePath = Path.Combine(PackageDirectory, packageSuffix); + + Assert.IsTrue(Directory.Exists(packagePath), "GetNugetPackage: Directory not found: {0}.", packagePath); - Assert.IsTrue(Directory.Exists(packagePath), "GetNugetPackage: Directory not found: {0}.", packagePath); + return packagePath; + } - return packagePath; + private static Dictionary GetDependencies(string repoRoot) + { + var dependencyPropsFile = Path.GetFullPath(Path.Combine(repoRoot, @"eng", "Versions.props")); + var dependencyProps = new Dictionary(); + if (!File.Exists(dependencyPropsFile)) + { + throw new FileNotFoundException("Dependency props file not found: " + dependencyPropsFile); } - private static Dictionary GetDependencies(string testPlatformRoot) + using (var reader = XmlReader.Create(dependencyPropsFile)) { - var dependencyPropsFile = Path.Combine(testPlatformRoot, @"scripts\build\TestPlatform.Dependencies.props".Replace('\\', Path.DirectorySeparatorChar)); - var dependencyProps = new Dictionary(); - if (!File.Exists(dependencyPropsFile)) + while (reader.Read()) { - throw new FileNotFoundException("Dependency props file not found: " + dependencyPropsFile); + if (reader.NodeType == XmlNodeType.Element && reader.Name == "PropertyGroup" && reader.GetAttribute("Label") == "VSTest dependencies") + { + break; + } } - using (var reader = XmlReader.Create(dependencyPropsFile)) + reader.ReadToFollowing("PropertyGroup"); + using var props = reader.ReadSubtree(); + props.MoveToContent(); + props.Read(); // Read thru the PropertyGroup node + while (!props.EOF) { - reader.ReadToFollowing("PropertyGroup"); - using (var props = reader.ReadSubtree()) + if (props.IsStartElement() && !props.Name.IsNullOrEmpty()) { - props.MoveToContent(); - props.Read(); // Read thru the PropertyGroup node - while (!props.EOF) + if (!dependencyProps.ContainsKey(props.Name)) { - if (props.IsStartElement() && !string.IsNullOrEmpty(props.Name)) - { - if (!dependencyProps.ContainsKey(props.Name)) - { - dependencyProps.Add(props.Name, props.ReadElementContentAsString()); - } - else - { - dependencyProps[props.Name] = string.Join(", ", dependencyProps[props.Name], props.ReadElementContentAsString()); - } - } - props.Read(); + dependencyProps.Add(props.Name, props.ReadElementContentAsString()); + } + else + { + dependencyProps[props.Name] = string.Join(", ", dependencyProps[props.Name], props.ReadElementContentAsString()); } } + props.Read(); } - - return dependencyProps; } - /// - /// Gets the full path to a test asset. - /// - /// Name of the asset with extension. E.g. SimpleUnitTest.csproj - /// Full path to the test asset. - /// - /// Test assets follow several conventions: - /// (a) They are built for supported frameworks. See . - /// (b) They are built for provided build configuration. - /// (c) Name of the test asset matches the parent directory name. E.g. TestAssets\SimpleUnitTest\SimpleUnitTest.csproj must - /// produce TestAssets\SimpleUnitTest\SimpleUnitTest.csproj - /// - public string GetTestProject(string assetName) + return dependencyProps; + } + + /// + /// Gets the full path to a test asset. + /// + /// Name of the asset with extension. E.g. SimpleUnitTest.csproj + /// Full path to the test asset. + /// + /// Test assets follow several conventions: + /// (a) They are built for supported frameworks. See . + /// (b) They are built for provided build configuration. + /// (c) Name of the test asset matches the parent directory name. E.g. TestAssets\SimpleUnitTest\SimpleUnitTest.csproj must + /// produce TestAssets\SimpleUnitTest\SimpleUnitTest.csproj + /// + public string GetTestProject(string assetName) + { + var simpleAssetName = Path.GetFileNameWithoutExtension(assetName); + var assetPath = Path.Combine( + TestAssetsPath, + simpleAssetName, + assetName); + + Assert.IsTrue(File.Exists(assetPath), "GetTestAsset: Path not found: \"{0}\".", assetPath); + + return assetPath; + } + + private static string GetLatestLocallyBuiltPackageVersion() + { + // Latest version is determined by inspecting the locally built packages in artifacts/packages. The package name changes during build, + // e.g. -dev locally, but -ci on CI server, etc., and we cannot always guarantee that we will have the build properties available (e.g. + // when building under VS). + + if (!Directory.Exists(LocalPackageSource)) { - var simpleAssetName = Path.GetFileNameWithoutExtension(assetName); - var assetPath = Path.Combine( - this.TestAssetsPath, - simpleAssetName, - assetName); + throw new InvalidOperationException($"Directory {LocalPackageSource}' does not exist, did you run build.cmd -pack?"); + } - Assert.IsTrue(File.Exists(assetPath), "GetTestAsset: Path not found: {0}.", assetPath); + var nugets = Directory.GetFiles(LocalPackageSource, "Microsoft.TestPlatform.ObjectModel.*.nupkg") + .Where(f => !f.Contains(".symbols.")) + .Select(f => new FileInfo(f)) + .ToList(); - return assetPath; + if (nugets.Count == 0) + { + throw new InvalidOperationException($"No Microsoft.TestPlatform.ObjectModel nugets were found in '{LocalPackageSource}', did you run build.cmd -pack?"); } + + var nuget = nugets.OrderByDescending(n => n.LastWriteTime).First().Name!; + var version = nuget.Replace("Microsoft.TestPlatform.ObjectModel.", "").Replace(".nupkg", ""); + return version; } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/Microsoft.TestPlatform.TestUtilities.csproj b/test/Microsoft.TestPlatform.TestUtilities/Microsoft.TestPlatform.TestUtilities.csproj index 6c5ec02fda..14a64925bc 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/Microsoft.TestPlatform.TestUtilities.csproj +++ b/test/Microsoft.TestPlatform.TestUtilities/Microsoft.TestPlatform.TestUtilities.csproj @@ -1,16 +1,21 @@ - + - - ..\..\ - - + Microsoft.TestPlatform.TestUtilities - netcoreapp2.1;net451 - netcoreapp3.1 - true + net9.0;net48 false + true + + + + + + + + + @@ -20,18 +25,16 @@ + - + - + - - - - - - - + + + + diff --git a/test/Microsoft.TestPlatform.TestUtilities/NetTestSdkInfo.cs b/test/Microsoft.TestPlatform.TestUtilities/NetTestSdkInfo.cs new file mode 100644 index 0000000000..00deda8823 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/NetTestSdkInfo.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace Microsoft.TestPlatform.TestUtilities; + +[Serializable] // Type should be serializable to allow the tree-view behavior of test discovery in Test Explorer +public class NetTestSdkInfo : DllInfo +{ + public NetTestSdkInfo() + { + Name = "Testhost"; + PropertyName = "VSTestConsole"; + } +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/NumberOfProcessLaunchedUtility.cs b/test/Microsoft.TestPlatform.TestUtilities/NumberOfProcessLaunchedUtility.cs deleted file mode 100644 index 3b5a8bdb14..0000000000 --- a/test/Microsoft.TestPlatform.TestUtilities/NumberOfProcessLaunchedUtility.cs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace TestPlatform.TestUtilities -{ - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - - /// - /// The number of process launched utility. - /// - public class NumberOfProcessLaunchedUtility - { - /// - /// Counts processes that are created until cancellation is requested. - /// - /// - /// To cancel the task and finish counting - /// - /// - /// Name of the process, or a library that is launched by dotnet.exe - /// - /// - /// The . - /// - public static async Task> NumberOfProcessCreated(CancellationTokenSource cts, string processName) - { - return await NumberOfProcessCreated(cts, new[] { processName }); - } - - public static async Task> NumberOfProcessCreated(CancellationTokenSource cts, IEnumerable processNames) - { - var processesBeforeRun = GetProcesses(processNames); - - var processesCreated = Task.Run(() => NumberOfProcessLaunchedDuringRun(cts.Token, processesBeforeRun, processNames)); - return await processesCreated; - } - - /// - /// The number of process launched during run. - /// - /// - /// The token. - /// - /// - /// The processes that were already running. - /// - /// - /// The process name. - /// - /// - /// The . - /// - public static ICollection NumberOfProcessLaunchedDuringRun( - CancellationToken token, - IEnumerable processesBeforeRun, - IEnumerable processNames) - { - var existingProcessIDs = processesBeforeRun.Select(p => p.Id).ToList(); - var startedNames = new List(); - - while (!token.IsCancellationRequested) - { - var startedDuringRun = GetProcesses(processNames); - - foreach (var process in startedDuringRun) - { - if (existingProcessIDs.Contains(process.Id)) - { - continue; - } - - startedNames.Add(process.ProcessName); - existingProcessIDs.Add(process.Id); - } - } - - return startedNames; - } - - private static IEnumerable GetProcesses(IEnumerable processNames) - { - var processes = new List(); - foreach (var processName in processNames) - { - processes.AddRange(Process.GetProcessesByName(processName)); - } - - return processes; - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.TestUtilities/OSUtils.cs b/test/Microsoft.TestPlatform.TestUtilities/OSUtils.cs new file mode 100644 index 0000000000..4b6daaf8fe --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/OSUtils.cs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Microsoft.TestPlatform.TestUtilities; + +public static class OSUtils +{ + public static bool IsWindows { get; } = System.Environment.OSVersion.Platform.ToString().StartsWith("Win"); +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/Constants.cs b/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/Constants.cs deleted file mode 100644 index fd5e633154..0000000000 --- a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/Constants.cs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.TestUtilities.PerfInstrumentation -{ - /// - /// The constants. - /// - public class Constants - { - /// - /// The discovery task. - /// - public const string DiscoveryTask = "Discovery"; - - /// - /// The execution task. - /// - public const string ExecutionTask = "Execution"; - - /// - /// The execution request task. - /// - public const string ExecutionRequestTask = "ExecutionRequest"; - - /// - /// The discovery request task. - /// - public const string DiscoveryRequestTask = "DiscoveryRequest"; - - /// - /// The test host task. - /// - public const string TestHostTask = "TestHost"; - - /// - /// The vs test console task. - /// - public const string VsTestConsoleTask = "VsTestConsole"; - - /// - /// The adapter search task. - /// - public const string AdapterSearchTask = "AdapterSearch"; - - /// - /// The adapter execution task. - /// - public const string AdapterExecutionTask = "AdapterExecution"; - - /// - /// The adapter discovery task. - /// - public const string AdapterDiscoveryTask = "AdapterDiscovery"; - - #region PayLoad Property Names - - /// - /// The execution uri property. - /// - public const string ExecutionUriProperty = "executorUri"; - - /// - /// The number of tests property. - /// - public const string NumberOfTestsProperty = "numberOfTests"; - #endregion - - } -} diff --git a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/PerfAnalyzer.cs b/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/PerfAnalyzer.cs deleted file mode 100644 index 2cc24960b6..0000000000 --- a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/PerfAnalyzer.cs +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.TestUtilities.PerfInstrumentation -{ - using System.Collections.Generic; - -#if NETFRAMEWORK - using Microsoft.Diagnostics.Tracing; - using Microsoft.Diagnostics.Tracing.Parsers; - using Microsoft.Diagnostics.Tracing.Session; - using System; - using System.Linq; -#endif - - /// - /// The performance analyzer. - /// - public class PerfAnalyzer - { - /// - /// The etw session provider name. - /// - private const string ETWSessionProviderName = "TestPlatform"; - -#if NETFRAMEWORK - private string perfDataFileName; - private TraceEventSession traceEventSession; - private Dictionary> testPlatformTaskMap; -#endif - - /// - /// Initializes a new instance of the class. - /// - public PerfAnalyzer() - { -#if NETFRAMEWORK - this.perfDataFileName = "TestPlatformEventsData.etl"; - this.testPlatformTaskMap = new Dictionary>(); - this.traceEventSession = new TraceEventSession("TestPlatformSession", this.perfDataFileName); -#endif - } - - /// - /// The enable provider. - /// - public void EnableProvider() - { -#if NETFRAMEWORK - this.traceEventSession.StopOnDispose = true; - this.traceEventSession.EnableProvider(ETWSessionProviderName); -#endif - } - - /// - /// The disable provider. - /// - public void DisableProvider() - { -#if NETFRAMEWORK - this.traceEventSession.Dispose(); -#endif - } - - /// - /// The analyze events data. - /// - public void AnalyzeEventsData() - { -#if NETFRAMEWORK - using (var source = new ETWTraceEventSource(this.perfDataFileName)) - { - // Open the file - var parser = new DynamicTraceEventParser(source); - parser.All += delegate(TraceEvent data) - { - try - { - if (data.ProviderName.Equals("TestPlatform") && !data.EventName.Equals("ManifestData")) - { - Console.WriteLine("Received Event : {0}", data.ToString()); - var key = data.ProcessID + "_" + data.ThreadID.ToString() + "_" + data.TaskName; - - if (!testPlatformTaskMap.ContainsKey(key)) - { - var list = new List { CreateTestPlatformTask(data) }; - testPlatformTaskMap.Add(key, list); - } - else - { - if (data.Opcode == TraceEventOpcode.Start) - { - testPlatformTaskMap[key].Add(CreateTestPlatformTask(data)); - } - else - { - UpdateTask(testPlatformTaskMap[key].Last(), data); - } - } - } - } - catch (Exception ex) - { - Console.WriteLine(ex.ToString()); - } - }; - source.Process(); // Read the file, processing the callbacks. - } -#endif - } - - /// - /// The get elapsed time by task name. - /// - /// - /// The task name. - /// - /// - /// The . - /// - public double GetElapsedTimeByTaskName(string taskName) - { - var timeTaken = 0.0; -#if NETFRAMEWORK - var key = GetEventKey(taskName); - - if (key != null) - { - var task = testPlatformTaskMap[key].First(); - timeTaken = task.EventStopped - task.EventStarted; - } -#endif - return timeTaken; - } - - /// - /// The get event data by task name. - /// - /// - /// The task name. - /// - /// - /// The . - /// - public IDictionary GetEventDataByTaskName(string taskName) - { - IDictionary properties = new Dictionary(); -#if NETFRAMEWORK - var key = GetEventKey(taskName); - - if(key != null) - { - properties = testPlatformTaskMap[key].First().PayLoadProperties; - } -#endif - return properties; - } - - public double GetAdapterExecutionTime(string executorUri) - { - var timeTaken = 0.0; -#if NETFRAMEWORK - var key = GetEventKey(Constants.AdapterExecutionTask); - - if(key != null) - { - var task = testPlatformTaskMap[key].Find(t => t.PayLoadProperties["executorUri"].Equals(executorUri)); - timeTaken = task.EventStopped - task.EventStarted; - } -#endif - return timeTaken; - } - - public long GetAdapterExecutedTests(string executorUri) - { - long totalTestsExecuted = 0; -#if NETFRAMEWORK - var key = GetEventKey(Constants.AdapterExecutionTask); - - if (key != null) - { - var task = testPlatformTaskMap[key].Find(t => t.PayLoadProperties["executorUri"].Equals(executorUri)); - long.TryParse(task.PayLoadProperties["numberOfTests"], out totalTestsExecuted); - } -#endif - return totalTestsExecuted; - } - -#if NETFRAMEWORK - - private string GetEventKey(string taskName) - { - string key = null; - - key = testPlatformTaskMap.Keys.FirstOrDefault(k => k.Split('_')[2].Equals(taskName)); - - return key; - } - - private static TestPlatformTask CreateTestPlatformTask(TraceEvent data) - { - var task = new TestPlatformTask(data.TaskName, data.TimeStampRelativeMSec); - task.PayLoadProperties = GetPayloadProperties(data); - return task; - } - - private static void UpdateTask(TestPlatformTask task, TraceEvent data) - { - task.EventStopped = data.TimeStampRelativeMSec; - var payLoadProperties = GetPayloadProperties(data); - - //Merging dictionaries look for better way - foreach (var k in payLoadProperties.Keys) - { - if (!task.PayLoadProperties.ContainsKey(k)) - { - task.PayLoadProperties.Add(k, payLoadProperties[k]); - } - } - } - - private static IDictionary GetPayloadProperties(TraceEvent data) - { - var payLoadProperties = new Dictionary(); - - foreach (var payLoad in data.PayloadNames) - { - var payLoadData = data.PayloadByName(payLoad).ToString(); - if (!payLoadProperties.ContainsKey(payLoad)) - { - payLoadProperties.Add(payLoad, payLoadData); - } - else - { - payLoadProperties[payLoad] = payLoadData; - } - } - - return payLoadProperties; - } -#endif - } -} diff --git a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/PerformanceTestBase.cs b/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/PerformanceTestBase.cs deleted file mode 100644 index 476d7c7684..0000000000 --- a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/PerformanceTestBase.cs +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.TestUtilities.PerfInstrumentation -{ - using System.Collections.Generic; - - /// - /// The performance test base. - /// - public class PerformanceTestBase : IntegrationTestBase - { - private PerfAnalyzer perfAnalyzer; - - /// - /// Initializes a new instance of the class. - /// - public PerformanceTestBase() - : base() - { - this.perfAnalyzer = new PerfAnalyzer(); - } - - /// - /// The run execution performance tests. - /// - /// - /// The test asset. - /// - /// - /// The test adapter path. - /// - /// - /// The run settings. - /// - public void RunExecutionPerformanceTests(string testAsset, string testAdapterPath, string runSettings) - { - // Start session and listen -#if NETFRAMEWORK - this.perfAnalyzer.EnableProvider(); -#endif - // Run Test - this.InvokeVsTestForExecution(testAsset, testAdapterPath, ".NETFramework,Version=v4.5.1", runSettings); - - // Stop Listening -#if NETFRAMEWORK - this.perfAnalyzer.DisableProvider(); -#endif - } - - /// - /// The run discovery performance tests. - /// - /// - /// The test asset. - /// - /// - /// The test adapter path. - /// - /// - /// The run settings. - /// - public void RunDiscoveryPerformanceTests(string testAsset, string testAdapterPath, string runSettings) - { - // Start session and listen -#if NETFRAMEWORK - this.perfAnalyzer.EnableProvider(); -#endif - // Run Test - this.InvokeVsTestForDiscovery(testAsset, testAdapterPath, runSettings, ".NETFramework,Version=v4.5.1"); - - // Stop Listening -#if NETFRAMEWORK - this.perfAnalyzer.DisableProvider(); -#endif - } - - /// - /// The analyze performance data. - /// - public void AnalyzePerfData() - { - this.perfAnalyzer.AnalyzeEventsData(); - } - - /// - /// The get execution time. - /// - /// - /// The . - /// - public double GetExecutionTime() - { - return this.perfAnalyzer.GetElapsedTimeByTaskName(Constants.ExecutionTask); - } - - public double GetDiscoveryTime() - { - return this.perfAnalyzer.GetElapsedTimeByTaskName(Constants.DiscoveryTask); - } - - public double GetVsTestTime() - { - return this.perfAnalyzer.GetElapsedTimeByTaskName(Constants.VsTestConsoleTask); - } - - public double GetTestHostTime() - { - return this.perfAnalyzer.GetElapsedTimeByTaskName(Constants.TestHostTask); - } - - public double GetAdapterSearchTime() - { - return this.perfAnalyzer.GetElapsedTimeByTaskName(Constants.AdapterSearchTask); - } - - public IDictionary GetDiscoveryData() - { - return this.perfAnalyzer.GetEventDataByTaskName(Constants.AdapterDiscoveryTask); - } - - public IDictionary GetExecutionData() - { - return this.perfAnalyzer.GetEventDataByTaskName(Constants.AdapterExecutionTask); - } - - public double GetAdapterExecutionTime(string executorUri) - { - return this.perfAnalyzer.GetAdapterExecutionTime(executorUri); - } - } -} diff --git a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/TestPlatformTask.cs b/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/TestPlatformTask.cs deleted file mode 100644 index b6b63343e8..0000000000 --- a/test/Microsoft.TestPlatform.TestUtilities/PerfInstrumentation/TestPlatformTask.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.TestUtilities.PerfInstrumentation -{ - using System.Collections.Generic; - - /// - /// The test platform task. - /// - public class TestPlatformTask - { - public string TaskName { get; set; } - - public double EventStarted { get; set; } - - public double EventStopped { get; set; } - - public IDictionary PayLoadProperties { get; set; } - - public TestPlatformTask(string taskName, double eventStarted) - { - this.EventStarted = eventStarted; - this.TaskName = taskName; - this.PayLoadProperties = new Dictionary(); - } - } -} diff --git a/test/Microsoft.TestPlatform.TestUtilities/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.TestUtilities/Properties/AssemblyInfo.cs deleted file mode 100644 index 6a3cf582da..0000000000 --- a/test/Microsoft.TestPlatform.TestUtilities/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("TestPlatform.TestUtilities")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f52a4d48-90b3-4004-8c98-d2786cc9b965")] diff --git a/test/Microsoft.TestPlatform.TestUtilities/RandomId.cs b/test/Microsoft.TestPlatform.TestUtilities/RandomId.cs new file mode 100644 index 0000000000..cad0f84330 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/RandomId.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Security.Cryptography; + +namespace Microsoft.TestPlatform.TestUtilities; + +/// +/// Slightly random id that is just good enough for creating disctinct directories for each test. +/// +public static class RandomId +{ + private static readonly RandomNumberGenerator Rng = RandomNumberGenerator.Create(); + private const string Pool = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + + /// + /// 5 character long id from 0-9A-Za-z0, for example fUfko, A6uvM, sOMXa, RY1ei, KvdJZ. + /// + /// + public static string Next() + { + return Next(5); + } + + private static string Next(int length) + { + var poolLength = Pool.Length; + var id = new char[length]; + lock (Pool) + { + for (var idIndex = 0; idIndex < length; idIndex++) + { + var poolIndex = poolLength + 1; + while (poolIndex >= poolLength) + { + var bytes = new byte[1]; + Rng.GetNonZeroBytes(bytes); + poolIndex = bytes[0]; + } + id[idIndex] = Pool[poolIndex]; + } + } + + return new string(id); + } +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/TempDirectory.cs b/test/Microsoft.TestPlatform.TestUtilities/TempDirectory.cs new file mode 100644 index 0000000000..e8fb8fa0ad --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/TempDirectory.cs @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.IO; + +using IO = System.IO; + +namespace Microsoft.TestPlatform.TestUtilities; + +public class TempDirectory : IDisposable +{ + private bool _isDisposed; + + /// + /// Creates a unique temporary directory. + /// + public TempDirectory() + { + Path = CreateUniqueDirectory(); + } + + public string Path { get; } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (_isDisposed) + return; + + if (disposing) + { + TryRemoveDirectory(Path); + } + + _isDisposed = true; + } + + public DirectoryInfo CreateDirectory(string dir) + => Directory.CreateDirectory(IO.Path.Combine(Path, dir)); + public void CopyDirectory(string sourceDirectory, string targetDirectory) + { + CopyDirectory(new DirectoryInfo(sourceDirectory), new DirectoryInfo(targetDirectory)); + } + +#pragma warning disable CA1822 // Mark members as static + public void CopyDirectory(DirectoryInfo source, DirectoryInfo target) +#pragma warning restore CA1822 // Mark members as static + { + DirectoryUtils.CopyDirectory(source, target); + } + /// + /// Copy given files into the TempDirectory and return the updated paths that are pointing to TempDirectory. + /// + /// + /// + public string[] CopyFile(params string[] filePaths) + { + var paths = new List(filePaths.Length); + foreach (var filePath in filePaths) + { + var destination = IO.Path.Combine(Path, IO.Path.GetFileName(filePath)); + File.Copy(filePath, destination); + paths.Add(destination); + } + + return paths.ToArray(); + } + + /// + /// Copy given file into TempDirectory and return the updated path. + /// + /// + /// + public string CopyFile(string filePath) + { + var destination = IO.Path.Combine(Path, IO.Path.GetFileName(filePath)); + File.Copy(filePath, destination); + return destination; + } + + /// + /// Creates an unique temporary directory. + /// + /// + /// Path of the created directory. + /// + internal static string CreateUniqueDirectory() + { + var temp = GetTempPath(); + var directoryPath = IO.Path.Combine(temp, "vstest", RandomId.Next()); + Directory.CreateDirectory(directoryPath); + + return directoryPath; + } + + private static string GetTempPath() + { + // AGENT_TEMPDIRECTORY is AzureDevops variable, which is set to path + // that is cleaned up after every job. This is preferable to use over + // just the normal TEMP, because that is not cleaned up for every run. + // + // System.IO.Path.GetTempPath is banned from the rest of the code. This is the only + // place where we are allowed to use it. All other methods should use our GetTempPath (this method). +#pragma warning disable RS0030 // Do not used banned APIs + return Environment.GetEnvironmentVariable("AGENT_TEMPDIRECTORY") + ?? IO.Path.GetTempPath(); +#pragma warning restore RS0030 // Do not used banned APIs + } + + public static void TryRemoveDirectory(string directory) + { + if (Directory.Exists(directory)) + { + try + { + Directory.Delete(directory, recursive: true); + } + catch { } + } + } +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/TestPluginCacheHelper.cs b/test/Microsoft.TestPlatform.TestUtilities/TestPluginCacheHelper.cs index 869d8897d7..e9c401a7b6 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/TestPluginCacheHelper.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/TestPluginCacheHelper.cs @@ -1,70 +1,67 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; +using System.Linq; + using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; + using Moq; -using System; -using System.Linq; -using System.Reflection; -namespace Microsoft.TestPlatform.TestUtilities +namespace Microsoft.TestPlatform.TestUtilities; + +public static class TestPluginCacheHelper { - public static class TestPluginCacheHelper + public static TestableTestPluginCache SetupMockAdditionalPathExtensions(Type callingTest) + { + return SetupMockAdditionalPathExtensions( + [callingTest.Assembly.Location]); + } + + public static TestableTestPluginCache SetupMockAdditionalPathExtensions(string[] extensions) + { + var mockFileHelper = new Mock(); + var testPluginCache = new TestableTestPluginCache(); + + TestPluginCache.Instance = testPluginCache; + + // Stub the default extensions folder. + mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); + + TestPluginCache.Instance.UpdateExtensions(extensions, true); + + return testPluginCache; + } + + public static void SetupMockExtensions(Type callingTest, Mock? mockFileHelper = null) + { + SetupMockExtensions(callingTest, () => { }, mockFileHelper); + } + + public static void SetupMockExtensions(Type callingTest, Action callback, Mock? mockFileHelper = null) + { + SetupMockExtensions([callingTest.Assembly.Location], callback, mockFileHelper); + } + + public static void SetupMockExtensions(string[] extensions, Action callback, Mock? mockFileHelper = null) + { + // Setup mocks. + mockFileHelper ??= new Mock(); + + mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + + var testableTestPluginCache = new TestableTestPluginCache(extensions.ToList()); + testableTestPluginCache.Action = callback; + + // Setup the testable instance. + TestPluginCache.Instance = testableTestPluginCache; + } + + public static void ResetExtensionsCache() { - public static TestableTestPluginCache SetupMockAdditionalPathExtensions(Type callingTest) - { - return SetupMockAdditionalPathExtensions( - new string[] { callingTest.GetTypeInfo().Assembly.Location }); - } - - public static TestableTestPluginCache SetupMockAdditionalPathExtensions(string[] extensions) - { - var mockFileHelper = new Mock(); - var testPluginCache = new TestableTestPluginCache(); - - TestPluginCache.Instance = testPluginCache; - - // Stub the default extensions folder. - mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); - - TestPluginCache.Instance.UpdateExtensions(extensions, true); - - return testPluginCache; - } - - public static void SetupMockExtensions(Type callingTest, Mock mockFileHelper = null) - { - SetupMockExtensions(callingTest, () => { }, mockFileHelper); - } - - public static void SetupMockExtensions(Type callingTest, Action callback, Mock mockFileHelper = null) - { - SetupMockExtensions(new[] { callingTest.GetTypeInfo().Assembly.Location }, callback, mockFileHelper); - } - - public static void SetupMockExtensions(string[] extensions, Action callback, Mock mockFileHelper = null) - { - // Setup mocks. - if (mockFileHelper == null) - { - mockFileHelper = new Mock(); - } - - mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - - var testableTestPluginCache = new TestableTestPluginCache(extensions.ToList()); - testableTestPluginCache.Action = callback; - - // Setup the testable instance. - TestPluginCache.Instance = testableTestPluginCache; - } - - public static void ResetExtensionsCache() - { - TestPluginCache.Instance = null; - SettingsProviderExtensionManager.Destroy(); - } + TestPluginCache.Instance = null; + SettingsProviderExtensionManager.Destroy(); } } diff --git a/test/Microsoft.TestPlatform.TestUtilities/TestableTestPluginCache.cs b/test/Microsoft.TestPlatform.TestUtilities/TestableTestPluginCache.cs index 58c234b378..98097a2972 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/TestableTestPluginCache.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/TestableTestPluginCache.cs @@ -1,37 +1,38 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.TestUtilities +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; + +namespace Microsoft.TestPlatform.TestUtilities; + +public class TestableTestPluginCache : TestPluginCache { - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.SettingsProvider; - using System; - using System.Collections.Generic; + public Action? Action { get; set; } + + public TestableTestPluginCache(List extensionsPath) + { + TestDiscoveryExtensionManager.Destroy(); + TestExecutorExtensionManager.Destroy(); + SettingsProviderExtensionManager.Destroy(); + UpdateExtensions(extensionsPath, skipExtensionFilters: false); + } + + public TestableTestPluginCache() : this(new List()) + { + } + + protected override IEnumerable GetFilteredExtensions(List extensions, string searchPattern) + { + Action?.Invoke(); + return extensions; + } - public class TestableTestPluginCache : TestPluginCache + new public void SetupAssemblyResolver(string extensionAssembly) { - public Action Action; - public TestableTestPluginCache(List extensionsPath) - { - TestDiscoveryExtensionManager.Destroy(); - TestExecutorExtensionManager.Destroy(); - SettingsProviderExtensionManager.Destroy(); - this.UpdateExtensions(extensionsPath, skipExtensionFilters: false); - } - - public TestableTestPluginCache() : this(new List()) - { - } - - protected override IEnumerable GetFilteredExtensions(List extensions, string searchPattern) - { - this.Action?.Invoke(); - return extensions; - } - - new public void SetupAssemblyResolver(string extensionAssembly) - { - base.SetupAssemblyResolver(extensionAssembly); - } + base.SetupAssemblyResolver(extensionAssembly); } -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/VSTestConsoleInfo.cs b/test/Microsoft.TestPlatform.TestUtilities/VSTestConsoleInfo.cs new file mode 100644 index 0000000000..3ba8deabc9 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/VSTestConsoleInfo.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace Microsoft.TestPlatform.TestUtilities; + +[Serializable] // Type should be serializable to allow the tree-view behavior of test discovery in Test Explorer +public class VSTestConsoleInfo +{ + public string? VersionType { get; set; } + public string? Version { get; set; } + public string? Path { get; set; } + + public override string ToString() => $" vstest.console = {Version} [{VersionType}]"; +} + diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/ClientUtilitiesTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/ClientUtilitiesTests.cs index 1616cbd9f4..50849cada2 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/ClientUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/ClientUtilitiesTests.cs @@ -1,223 +1,227 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Utilities.Tests +using System; +using System.IO; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Utilities; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Utilities.Tests; + +[TestClass] +public class ClientUtilitiesTests { - using System; - using System.IO; - using System.Reflection; - using System.Xml; + [TestMethod] + public void FixRelativePathsInRunSettingsShouldThrowIfDocumentIsNull() + { + Assert.ThrowsException(() => ClientUtilities.FixRelativePathsInRunSettings(null!, "c:\\temp")); + } - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void FixRelativePathsInRunSettingsShouldThrowIfPathIsNullOrEmpty() + { + Assert.ThrowsException(() => ClientUtilities.FixRelativePathsInRunSettings(new XmlDocument(), null!)); + Assert.ThrowsException(() => ClientUtilities.FixRelativePathsInRunSettings(new XmlDocument(), "")); + } - [TestClass] - public class ClientUtilitiesTests + [TestMethod] + public void FixRelativePathsInRunSettingsShouldNotModifyAnEmptyRunSettings() { - [TestMethod] - public void FixRelativePathsInRunSettingsShouldThrowIfDocumentIsNull() - { - Assert.ThrowsException(() => ClientUtilities.FixRelativePathsInRunSettings(null, "c:\\temp")); - } + var runSettingsXml = ""; - [TestMethod] - public void FixRelativePathsInRunSettingsShouldThrowIfPathIsNullOrEmpty() - { - Assert.ThrowsException(() => ClientUtilities.FixRelativePathsInRunSettings(new XmlDocument(), null)); - Assert.ThrowsException(() => ClientUtilities.FixRelativePathsInRunSettings(new XmlDocument(), "")); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldNotModifyAnEmptyRunSettings() - { - var runSettingsXML = ""; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var finalSettingsXml = doc.OuterXml; - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); + var expectedRunSettingsXml = string.Concat("", + Path.GetDirectoryName(currentAssemblyLocation), + ""); - var finalSettingsXml = doc.OuterXml; + Assert.AreEqual(expectedRunSettingsXml, finalSettingsXml); + } - var expectedRunSettingsXML = string.Concat("", - Path.GetDirectoryName(currentAssemblyLocation), - ""); + [TestMethod] + public void FixRelativePathsInRunSettingsShouldModifyRelativeTestSettingsFilePath() + { + var runSettingsXml = "..\\remote.testsettings"; - Assert.AreEqual(expectedRunSettingsXML, finalSettingsXml); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldModifyRelativeTestSettingsFilePath() - { - var runSettingsXML = "..\\remote.testsettings"; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var finalSettingsXml = doc.OuterXml; - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); + var expectedPath = Path.GetFullPath(Path.Combine( + Path.GetDirectoryName(currentAssemblyLocation)!, "..\\remote.testsettings")); + var expectedSettingsXml = string.Concat( + "", + expectedPath, + "", + Path.GetDirectoryName(currentAssemblyLocation), + ""); - var finalSettingsXml = doc.OuterXml; + Assert.AreEqual(expectedSettingsXml, finalSettingsXml); + } - var expectedPath = Path.GetFullPath(Path.Combine( - Path.GetDirectoryName(currentAssemblyLocation), "..\\remote.testsettings")); - var expectedSettingsXml = string.Concat( - "", - expectedPath, - "", - Path.GetDirectoryName(currentAssemblyLocation), - ""); + [TestMethod] + public void FixRelativePathsInRunSettingsShouldNotModifyAbsoluteTestSettingsFilePath() + { + var absolutePath = Path.Combine(Path.GetTempPath(), "remote.testsettings"); + var runSettingsXml = $"{absolutePath}"; - Assert.AreEqual(expectedSettingsXml, finalSettingsXml); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldNotModifyAbsoluteTestSettingsFilePath() - { - var absolutePath = Path.Combine(Path.GetTempPath(), "remote.testsettings"); - var runSettingsXML = $"{absolutePath}"; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var finalSettingsXml = doc.OuterXml; - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); + var expectedRunSettingsXml = string.Concat($"{absolutePath}", + Path.GetDirectoryName(currentAssemblyLocation), + ""); - var finalSettingsXml = doc.OuterXml; + Assert.AreEqual(expectedRunSettingsXml, finalSettingsXml); + } - var expectedRunSettingsXML = string.Concat($"{absolutePath}", - Path.GetDirectoryName(currentAssemblyLocation), - ""); + [TestMethod] + public void FixRelativePathsInRunSettingsShouldNotModifyEmptyTestSettingsFilePath() + { + var runSettingsXml = ""; - Assert.AreEqual(expectedRunSettingsXML, finalSettingsXml); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldNotModifyEmptyTestSettingsFilePath() - { - var runSettingsXML = ""; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var finalSettingsXml = doc.OuterXml; - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); + var expectedRunSettingsXml = string.Concat("", + Path.GetDirectoryName(currentAssemblyLocation), + ""); - var finalSettingsXml = doc.OuterXml; + Assert.AreEqual(expectedRunSettingsXml, finalSettingsXml); + } - var expectedRunSettingsXML = string.Concat("", - Path.GetDirectoryName(currentAssemblyLocation), - ""); + [TestMethod] + public void FixRelativePathsInRunSettingsShouldModifyRelativeResultsDirectory() + { + var runSettingsXml = "..\\results"; - Assert.AreEqual(expectedRunSettingsXML, finalSettingsXml); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldModifyRelativeResultsDirectory() - { - var runSettingsXML = "..\\results"; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var finalSettingsXml = doc.OuterXml; - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); + var expectedPath = Path.GetFullPath(Path.Combine( + Path.GetDirectoryName(currentAssemblyLocation)!, "..\\results")); + var expectedSettingsXml = string.Concat( + "", + expectedPath, + "", + Path.GetDirectoryName(currentAssemblyLocation), + ""); - var finalSettingsXml = doc.OuterXml; + Assert.AreEqual(expectedSettingsXml, finalSettingsXml); + } - var expectedPath = Path.GetFullPath(Path.Combine( - Path.GetDirectoryName(currentAssemblyLocation), "..\\results")); - var expectedSettingsXml = string.Concat( - "", - expectedPath, - "", - Path.GetDirectoryName(currentAssemblyLocation), - ""); + [TestMethod] + public void FixRelativePathsInRunSettingsShouldNotModifyAbsoluteResultsDirectory() + { + var absolutePath = Path.Combine(Path.GetTempPath(), "results"); + var runSettingsXml = $"{absolutePath}"; - Assert.AreEqual(expectedSettingsXml, finalSettingsXml); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldNotModifyAbsoluteResultsDirectory() - { - var absolutePath = Path.Combine(Path.GetTempPath(), "results"); - var runSettingsXML = $"{absolutePath}"; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var finalSettingsXml = doc.OuterXml; - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); + var expectedRunSettingsXml = string.Concat($"{absolutePath}", + Path.GetDirectoryName(currentAssemblyLocation), + ""); - var finalSettingsXml = doc.OuterXml; + Assert.AreEqual(expectedRunSettingsXml, finalSettingsXml); + } - var expectedRunSettingsXML = string.Concat($"{absolutePath}", - Path.GetDirectoryName(currentAssemblyLocation), - ""); + [TestMethod] + public void FixRelativePathsInRunSettingsShouldNotModifyEmptyResultsDirectory() + { + var runSettingsXml = ""; - Assert.AreEqual(expectedRunSettingsXML, finalSettingsXml); - } + var doc = new XmlDocument(); + doc.LoadXml(runSettingsXml); + + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; + + ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - [TestMethod] - public void FixRelativePathsInRunSettingsShouldNotModifyEmptyResultsDirectory() + var finalSettingsXml = doc.OuterXml; + + var expectedRunSettingsXml = string.Concat("", + Path.GetDirectoryName(currentAssemblyLocation), + ""); + + Assert.AreEqual(expectedRunSettingsXml, finalSettingsXml); + } + + [TestMethod] + public void FixRelativePathsInRunSettingsShouldExpandEnvironmentVariable() + { + try { - var runSettingsXML = ""; + Environment.SetEnvironmentVariable("TEST_TEMP", Path.GetTempPath()); + // using TEST_TEMP because TMP or TEMP, or HOME are not defined across all tested OSes + // Using \\ instead of platform specifc path separator does not matter, because the paths are not interpreted by the OS. + var runSettingsXml = "%TEST_TEMP%\\results%TEST_TEMP%\\hostpath"; var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); + doc.LoadXml(runSettingsXml); - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; + var currentAssemblyLocation = typeof(ClientUtilitiesTests).Assembly.Location; ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); var finalSettingsXml = doc.OuterXml; - var expectedRunSettingsXML = string.Concat("", + var expectedResultsPath = $"{Environment.GetEnvironmentVariable("TEST_TEMP")}\\results"; + var expectedDotNetHostPath = $"{Environment.GetEnvironmentVariable("TEST_TEMP")}\\hostpath"; + + var expectedSettingsXml = string.Concat( + "", + expectedResultsPath, + "", + expectedDotNetHostPath, + "", Path.GetDirectoryName(currentAssemblyLocation), ""); - Assert.AreEqual(expectedRunSettingsXML, finalSettingsXml); + Assert.AreEqual(expectedSettingsXml, finalSettingsXml); } - - [TestMethod] - public void FixRelativePathsInRunSettingsShouldExpandEnvironmentVariable() + finally { - try { - Environment.SetEnvironmentVariable("TEST_TEMP", Path.GetTempPath()); - // using TEST_TEMP because TMP or TEMP, or HOME are not defined across all tested OSes - // Using \\ instead of platform specifc path separator does not matter, because the paths are not interpreted by the OS. - var runSettingsXML = "%TEST_TEMP%\\results"; - - var doc = new XmlDocument(); - doc.LoadXml(runSettingsXML); - - var currentAssemblyLocation = typeof(ClientUtilitiesTests).GetTypeInfo().Assembly.Location; - - ClientUtilities.FixRelativePathsInRunSettings(doc, currentAssemblyLocation); - - var finalSettingsXml = doc.OuterXml; - - var expectedPath = $"{Environment.GetEnvironmentVariable("TEST_TEMP")}\\results"; - - var expectedSettingsXml = string.Concat( - "", - expectedPath, - "", - Path.GetDirectoryName(currentAssemblyLocation), - ""); - - Assert.AreEqual(expectedSettingsXml, finalSettingsXml); - } - finally { - Environment.SetEnvironmentVariable("TEST_TEMP", null); - } + Environment.SetEnvironmentVariable("TEST_TEMP", null); } } } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAttachmentsHandlerTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAttachmentsHandlerTests.cs index e805dde084..0dfa24dd46 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAttachmentsHandlerTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAttachmentsHandlerTests.cs @@ -1,186 +1,219 @@ -namespace Microsoft.TestPlatform.Utilities.UnitTests +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +#if !NETFRAMEWORK +using System.Runtime.InteropServices; +#endif +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.Utilities.UnitTests; + +[TestClass] +public class CodeCoverageDataAttachmentsHandlerTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.IO; - using System.Linq; - using System.Runtime.InteropServices; - using System.Threading; - using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class CodeCoverageDataAttachmentsHandlerTests - { - private readonly Mock> mockProgressReporter; - private readonly CodeCoverageDataAttachmentsHandler coverageDataAttachmentsHandler; - private readonly string _filePrefix; + private readonly Mock> _mockProgressReporter; + private readonly Mock _messageLogger; + private readonly XmlElement _configurationElement; + private readonly CodeCoverageDataAttachmentsHandler _coverageDataAttachmentsHandler; + private readonly string _filePrefix; - public TestContext TestContext { get; set; } + public TestContext? TestContext { get; set; } - internal string TestFilesDirectory => Path.Combine(TestContext.DeploymentDirectory, "TestFiles"); + internal string TestFilesDirectory => Path.Combine(TestContext!.DeploymentDirectory!, "TestFiles"); - public CodeCoverageDataAttachmentsHandlerTests() - { - mockProgressReporter = new Mock>(); - coverageDataAttachmentsHandler = new CodeCoverageDataAttachmentsHandler(); + public CodeCoverageDataAttachmentsHandlerTests() + { + var doc = new XmlDocument(); + doc.LoadXml(""); + _configurationElement = doc.DocumentElement!; + _mockProgressReporter = new Mock>(); + _messageLogger = new Mock(); + _coverageDataAttachmentsHandler = new CodeCoverageDataAttachmentsHandler(); #if NETFRAMEWORK - _filePrefix = "file:///"; + _filePrefix = "file:///"; #else - _filePrefix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "file:///" : "file://"; + _filePrefix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "file:///" : "file://"; #endif - } + } -#if NETFRAMEWORK - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - // Copying test files to correct place, - var assemblyPath = AppDomain.CurrentDomain.BaseDirectory; - var testFilesDirectory = Path.Combine(context.DeploymentDirectory, "TestFiles"); - Directory.CreateDirectory(testFilesDirectory); - var files = Directory.GetFiles(Path.Combine(assemblyPath, "TestFiles")); - foreach (var file in files) - File.Copy(file, Path.Combine(testFilesDirectory, Path.GetFileName(file))); - } -#endif + [ClassInitialize] + public static void ClassInitialize(TestContext context) + { + // Copying test files to correct place, + var assemblyPath = AppDomain.CurrentDomain.BaseDirectory; + var testFilesDirectory = Path.Combine(context.DeploymentDirectory!, "TestFiles"); + Directory.CreateDirectory(testFilesDirectory); + var files = Directory.GetFiles(Path.Combine(assemblyPath, "TestFiles")); + foreach (var file in files) + File.Copy(file, Path.Combine(testFilesDirectory, Path.GetFileName(file))); + } - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldReturnEmptySetWhenNoAttachmentsOrAttachmentsAreNull() - { - Collection attachment = new Collection(); - ICollection resultAttachmentSets = await - coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 0); - - resultAttachmentSets = await coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(null, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 0); - - mockProgressReporter.Verify(p => p.Report(It.IsAny()), Times.Never); - } - - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIfOnly1Attachment() - { - var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.coverage"), "coverage")); - - Collection attachment = new Collection { attachmentSet }; - ICollection resultAttachmentSets = await - coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 1); - Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); - Assert.AreEqual("file:///C:/temp/aa.coverage", resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); - } - - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIf2DifferentFormatAttachments() - { - var file1Path = Path.Combine(TestFilesDirectory, "fullcovered.cobertura.xml"); - var file2Path = Path.Combine(Path.Combine(TestFilesDirectory, "fullcovered.coverage")); - var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file2Path), "coverage")); - - Collection attachment = new Collection { attachmentSet }; - ICollection resultAttachmentSets = await - coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 1); - Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 2); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.Last().Uri.AbsoluteUri); - Assert.AreEqual(_filePrefix + file1Path.Replace("\\", "/").Replace(" ", "%20"), resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); - Assert.AreEqual(_filePrefix + file2Path.Replace("\\", "/").Replace(" ", "%20"), resultAttachmentSets.First().Attachments.Last().Uri.AbsoluteUri); - } - - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIf2SameFormatAttachments() - { - var file1Path = Path.Combine(TestFilesDirectory, "fullcovered.cobertura.xml"); - var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); - - Collection attachment = new Collection { attachmentSet }; - ICollection resultAttachmentSets = await - coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 1); - Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); - Assert.AreEqual(_filePrefix + file1Path.Replace("\\", "/").Replace(" ", "%20"), resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); - } - - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIfOnly1LogsAttachment() - { - var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.logs"), "coverage")); - - Collection attachment = new Collection { attachmentSet }; - ICollection resultAttachmentSets = await - coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 1); - Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); - Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); - Assert.AreEqual("file:///C:/temp/aa.logs", resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); - } - - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIfOnlySeveralLogsAttachmentAnd1Report() - { - var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.coverage"), "coverage")); - - var attachmentSet1 = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); - attachmentSet1.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.logs"), "coverage")); - attachmentSet1.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\bb.logs"), "coverage")); - - Collection attachment = new Collection { attachmentSet, attachmentSet1 }; - ICollection resultAttachmentSets = await - coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, CancellationToken.None); - - Assert.IsNotNull(resultAttachmentSets); - Assert.IsTrue(resultAttachmentSets.Count == 2); - Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); - Assert.IsTrue(resultAttachmentSets.Last().Attachments.Count == 2); - } - - [TestMethod] - public async Task HandleDataCollectionAttachmentSetsShouldThrowIfCancellationRequested() - { - var attachmentSet = new AttachmentSet(new Uri("//badrui//"), string.Empty); - attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.coverage"), "coverage")); - CancellationTokenSource cts = new CancellationTokenSource(); - cts.Cancel(); - - Collection attachment = new Collection - { - attachmentSet, - attachmentSet - }; - - await Assert.ThrowsExceptionAsync(async () => await coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(attachment, mockProgressReporter.Object, null, cts.Token)); - - Assert.AreEqual(2, attachment.Count); - - mockProgressReporter.Verify(p => p.Report(It.IsAny()), Times.Never); - } + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldReturnEmptySetWhenNoAttachmentsOrAttachmentsAreNull() + { + Collection attachment = new(); + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 0); + + resultAttachmentSets = await _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, null, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 0); + + _mockProgressReporter.Verify(p => p.Report(It.IsAny()), Times.Never); + } + + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIfOnly1Attachment() + { + var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.coverage"), "coverage")); + + Collection attachment = [attachmentSet]; + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 1); + Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); + Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); + Assert.AreEqual("file:///C:/temp/aa.coverage", resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); + } + + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIf2DifferentFormatAttachments() + { + var file1Path = Path.Combine(TestFilesDirectory, "fullcovered.cobertura.xml"); + var file2Path = Path.Combine(Path.Combine(TestFilesDirectory, "fullcovered.coverage")); + var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file2Path), "coverage")); + + Collection attachment = [attachmentSet]; + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 1); + Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 2); + Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); + Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.Last().Uri.AbsoluteUri); + Assert.AreEqual(_filePrefix + file1Path.Replace("\\", "/").Replace(" ", "%20"), resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); + Assert.AreEqual(_filePrefix + file2Path.Replace("\\", "/").Replace(" ", "%20"), resultAttachmentSets.First().Attachments.Last().Uri.AbsoluteUri); + } + + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIf2SameFormatAttachments() + { + var file1Path = Path.Combine(TestFilesDirectory, "fullcovered.cobertura.xml"); + var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); + + Collection attachment = [attachmentSet]; + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 1); + Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); + Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); + Assert.AreEqual(_filePrefix + file1Path.Replace("\\", "/").Replace(" ", "%20"), resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); + } + + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIfOnly1LogsAttachment() + { + var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.logs"), "coverage")); + + Collection attachment = [attachmentSet]; + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 1); + Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); + Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); + Assert.AreEqual("file:///C:/temp/aa.logs", resultAttachmentSets.First().Attachments.First().Uri.AbsoluteUri); + } + + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldReturnInputIfOnlySeveralLogsAttachmentAnd1Report() + { + var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.coverage"), "coverage")); + + var attachmentSet1 = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet1.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.logs"), "coverage")); + attachmentSet1.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\bb.logs"), "coverage")); + + Collection attachment = [attachmentSet, attachmentSet1]; + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 2); + Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); + Assert.IsTrue(resultAttachmentSets.Last().Attachments.Count == 2); + } + + [TestMethod] + public async Task HandleDataCollectionAttachmentSetsShouldThrowIfCancellationRequested() + { + var attachmentSet = new AttachmentSet(new Uri("//badrui//"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri("C:\\temp\\aa.coverage"), "coverage")); + CancellationTokenSource cts = new(); + cts.Cancel(); + + Collection attachment = + [ + attachmentSet, + attachmentSet + ]; + + await Assert.ThrowsExceptionAsync(async () => await _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(_configurationElement, attachment, _mockProgressReporter.Object, null, cts.Token)); + + Assert.AreEqual(2, attachment.Count); + + _mockProgressReporter.Verify(p => p.Report(It.IsAny()), Times.Never); + } + + [TestMethod] + public async Task MergingPerTestCodeCoverageReturnsOneCoverageFile() + { + string file1Path = Path.Combine(TestFilesDirectory, "fullcovered.cobertura.xml"); + var attachmentSet = new AttachmentSet(new Uri("datacollector://microsoft/CodeCoverage/2.0"), string.Empty); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); + attachmentSet.Attachments.Add(new UriDataAttachment(new Uri(file1Path), "coverage")); + + var attachment = new Collection { attachmentSet }; + + var doc = new XmlDocument(); + doc.LoadXml("TrUe"); + ICollection resultAttachmentSets = await + _coverageDataAttachmentsHandler.ProcessAttachmentSetsAsync(doc.DocumentElement!, attachment, _mockProgressReporter.Object, _messageLogger.Object, CancellationToken.None); + + Assert.IsNotNull(resultAttachmentSets); + Assert.IsTrue(resultAttachmentSets.Count == 1); + Assert.IsTrue(resultAttachmentSets.First().Attachments.Count == 1); + Assert.AreEqual("datacollector://microsoft/CodeCoverage/2.0", resultAttachmentSets.First().Uri.AbsoluteUri); } } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageRunSettingsProcessorTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageRunSettingsProcessorTests.cs index 03b51f7d41..e6023e99b7 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageRunSettingsProcessorTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageRunSettingsProcessorTests.cs @@ -1,284 +1,278 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Utilities.UnitTests +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Utilities; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Utilities.UnitTests; + +[TestClass] +public class CodeCoverageRunSettingsProcessorTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Reflection; - using System.Xml; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class CodeCoverageRunSettingsProcessorTests + private readonly XmlElement _defaultSettings; + private readonly CodeCoverageRunSettingsProcessor _processor; + + public CodeCoverageRunSettingsProcessorTests() { - #region Members - private XmlElement defaultSettings; + _defaultSettings = GetDefaultConfiguration(); + _processor = new CodeCoverageRunSettingsProcessor(_defaultSettings); + } - private CodeCoverageRunSettingsProcessor processor; - #endregion + #region Test Methods + [TestMethod] + public void ProcessingShouldReturnNullForNullOrEmptySettings() + { + Assert.IsNull(_processor.Process((string?)null)); + Assert.IsNull(_processor.Process("")); - #region Constructors - public CodeCoverageRunSettingsProcessorTests() - { - this.defaultSettings = this.GetDefaultConfiguration(); - this.processor = new CodeCoverageRunSettingsProcessor(this.defaultSettings); - } - #endregion + Assert.IsNull(_processor.Process((XmlNode?)null)); - #region Test Methods - [TestMethod] - public void ProcessingShouldReturnNullForNullOrEmptySettings() - { - Assert.IsNull(processor.Process((string)null)); - Assert.IsNull(processor.Process("")); + Assert.IsNull(_processor.Process((XmlDocument?)null)); + } - Assert.IsNull(processor.Process((XmlNode)null)); + [TestMethod] + public void MissingCodeCoverageTagShouldAddDefaultTag() + { + const string settings = ""; + string expected = $"{_defaultSettings.OuterXml}"; - Assert.IsNull(processor.Process((XmlDocument)null)); - } + Assert.AreEqual(expected, _processor.Process(settings)!.OuterXml); + } - [TestMethod] - public void MissingCodeCoverageTagShouldAddDefaultTag() - { - const string settings = ""; - string expected = $"{this.defaultSettings.OuterXml}"; + [TestMethod] + public void EmptyCodeCoverageTagShouldAddDefaultTag() + { + const string settings = ""; + var processedNode = _processor.Process(settings); + Assert.IsNotNull(processedNode); - Assert.AreEqual(expected, processor.Process(settings).OuterXml); - } + var codeCoverageNodes = ExtractNodes(processedNode, _defaultSettings, "./CodeCoverage"); - [TestMethod] - public void EmptyCodeCoverageTagShouldAddDefaultTag() - { - const string settings = ""; - var processedNode = processor.Process(settings); - Assert.IsNotNull(processedNode); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./ModulePaths/Exclude"); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Functions/Exclude"); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Attributes/Exclude"); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Sources/Exclude"); + } - var codeCoverageNodes = this.ExtractNodes(processedNode, this.defaultSettings, "./CodeCoverage"); + [TestMethod] + public void MergeDefaultsDisabledShouldReturnInputUnaltered() + { + var settings = string.Join( + Environment.NewLine, + @"", + @" ", + @" ", + @" ", + @" ", + @" ", + @" ", + @" ", + @" .*\\atlmfc\\.*", + @" .*\\atlmbfc\\.*", + @" .*\\vctools\\.*", + @" .*\\public\\sdk2\\.*", + @" .*\\externalapis\\.*", + @" .*\\microsoft sdks\\.*", + @" .*\\vc\\include\\.*", + @" .*\\msclr\\.*", + @" .*\\ucrt\\.*", + @" ", + @" ", + @" ", + @" ", + @""); + + var document = new XmlDocument(); + document.LoadXml(settings); + + Assert.AreEqual(document.OuterXml, _processor.Process(settings)!.OuterXml); + } - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./ModulePaths/Exclude"); - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Functions/Exclude"); - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Attributes/Exclude"); - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Sources/Exclude"); - } + [TestMethod] + public void MixedTestShouldCorrectlyAddMissingTags() + { + var settings = string.Join( + Environment.NewLine, + @"", + @" ", + @" ", + @" ", + @" ", + @" ", + @" ", + @" ", + @" .*\\atlmfc\\.*", + @" .*\\atlmbfc\\.*", + @" .*\\vctools\\.*", + @" .*\\public\\sdk2\\.*", + @" .*\\externalapis\\.*", + @" .*\\microsoft sdks\\.*", + @" .*\\vc\\include\\.*", + @" .*\\msclr\\.*", + @" .*\\ucrt\\.*", + @" ", + @" ", + @" ", + @""); + + var expectedResult = string.Join( + Environment.NewLine, + @"", + @" ", + @" ", + @" ", + @" .*CPPUnitTestFramework.*", + @" .*vstest.console.*", + @" .*microsoft.intellitrace.*", + @" .*testhost.*", + @" .*datacollector.*", + @" .*microsoft.teamfoundation.testplatform.*", + @" .*microsoft.visualstudio.testplatform.*", + @" .*microsoft.visualstudio.testwindow.*", + @" .*microsoft.visualstudio.mstest.*", + @" .*microsoft.visualstudio.qualitytools.*", + @" .*microsoft.vssdk.testhostadapter.*", + @" .*microsoft.vssdk.testhostframework.*", + @" .*qtagent32.*", + @" .*msvcr.*dll$", + @" .*msvcp.*dll$", + @" .*clr.dll$", + @" .*clr.ni.dll$", + @" .*clrjit.dll$", + @" .*clrjit.ni.dll$", + @" .*mscoree.dll$", + @" .*mscoreei.dll$", + @" .*mscoreei.ni.dll$", + @" .*mscorlib.dll$", + @" .*mscorlib.ni.dll$", + @" .*cryptbase.dll$", + @" .*bcryptPrimitives.dll$", + @" ", + @" ", + @" ", + @" ", + @" ^std::.*", + @" ^ATL::.*", + @" .*::__GetTestMethodInfo.*", + @" .*__CxxPureMSILEntry.*", + @" ^Microsoft::VisualStudio::CppCodeCoverageFramework::.*", + @" ^Microsoft::VisualStudio::CppUnitTestFramework::.*", + @" .*::YOU_CAN_ONLY_DESIGNATE_ONE_.*", + @" ^__empty_global_delete.*", + @" ", + @" ", + @" ", + @" ", + @" ^System.Diagnostics.DebuggerHiddenAttribute$", + @" ^System.Diagnostics.DebuggerNonUserCodeAttribute$", + @" System.Runtime.CompilerServices.CompilerGeneratedAttribute$", + @" ^System.CodeDom.Compiler.GeneratedCodeAttribute$", + @" ^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$", + @" ^Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode.*", + @" ", + @" ", + @" ", + @" ", + @" .*\\atlmfc\\.*", + @" .*\\atlmbfc\\.*", + @" .*\\vctools\\.*", + @" .*\\public\\sdk2\\.*", + @" .*\\externalapis\\.*", + @" .*\\microsoft sdks\\.*", + @" .*\\vc\\include\\.*", + @" .*\\msclr\\.*", + @" .*\\ucrt\\.*", + @" .*\\public\\sdk\\.*", + @" ", + @" ", + @" ", + @""); + + var expectedResultDocument = new XmlDocument(); + expectedResultDocument.LoadXml(expectedResult); + + var processedNode = _processor.Process(settings); + Assert.IsNotNull(processedNode); + + var codeCoverageNodes = ExtractNodes(processedNode, expectedResultDocument.DocumentElement!, "./CodeCoverage"); + + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./ModulePaths/Exclude"); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Functions/Exclude"); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Attributes/Exclude"); + CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Sources/Exclude"); + } + #endregion - [TestMethod] - public void MergeDefaultsDisabledShouldReturnInputUnaltered() + #region Helpers + private static XmlNode? ExtractNode(XmlNode node, string path) + { + try { - var settings = string.Join( - Environment.NewLine, - @"", - @" ", - @" ", - @" ", - @" ", - @" ", - @" ", - @" ", - @" .*\\atlmfc\\.*", - @" .*\\atlmbfc\\.*", - @" .*\\vctools\\.*", - @" .*\\public\\sdk2\\.*", - @" .*\\externalapis\\.*", - @" .*\\microsoft sdks\\.*", - @" .*\\vc\\include\\.*", - @" .*\\msclr\\.*", - @" .*\\ucrt\\.*", - @" ", - @" ", - @" ", - @" ", - @""); - - var document = new XmlDocument(); - document.LoadXml(settings); - - Assert.AreEqual(document.OuterXml, processor.Process(settings).OuterXml); + return node.SelectSingleNode(path); } - - [TestMethod] - public void MixedTestShouldCorrectlyAddMissingTags() + catch { - var settings = string.Join( - Environment.NewLine, - @"", - @" ", - @" ", - @" ", - @" ", - @" ", - @" ", - @" ", - @" .*\\atlmfc\\.*", - @" .*\\atlmbfc\\.*", - @" .*\\vctools\\.*", - @" .*\\public\\sdk2\\.*", - @" .*\\externalapis\\.*", - @" .*\\microsoft sdks\\.*", - @" .*\\vc\\include\\.*", - @" .*\\msclr\\.*", - @" .*\\ucrt\\.*", - @" ", - @" ", - @" ", - @""); - - var expectedResult = string.Join( - Environment.NewLine, - @"", - @" ", - @" ", - @" ", - @" .*CPPUnitTestFramework.*", - @" .*vstest.console.*", - @" .*microsoft.intellitrace.*", - @" .*testhost.*", - @" .*datacollector.*", - @" .*microsoft.teamfoundation.testplatform.*", - @" .*microsoft.visualstudio.testplatform.*", - @" .*microsoft.visualstudio.testwindow.*", - @" .*microsoft.visualstudio.mstest.*", - @" .*microsoft.visualstudio.qualitytools.*", - @" .*microsoft.vssdk.testhostadapter.*", - @" .*microsoft.vssdk.testhostframework.*", - @" .*qtagent32.*", - @" .*msvcr.*dll$", - @" .*msvcp.*dll$", - @" .*clr.dll$", - @" .*clr.ni.dll$", - @" .*clrjit.dll$", - @" .*clrjit.ni.dll$", - @" .*mscoree.dll$", - @" .*mscoreei.dll$", - @" .*mscoreei.ni.dll$", - @" .*mscorlib.dll$", - @" .*mscorlib.ni.dll$", - @" .*cryptbase.dll$", - @" .*bcryptPrimitives.dll$", - @" ", - @" ", - @" ", - @" ", - @" ^std::.*", - @" ^ATL::.*", - @" .*::__GetTestMethodInfo.*", - @" .*__CxxPureMSILEntry.*", - @" ^Microsoft::VisualStudio::CppCodeCoverageFramework::.*", - @" ^Microsoft::VisualStudio::CppUnitTestFramework::.*", - @" .*::YOU_CAN_ONLY_DESIGNATE_ONE_.*", - @" ^__.*", - @" .*::__.*", - @" ", - @" ", - @" ", - @" ", - @" ^System.Diagnostics.DebuggerHiddenAttribute$", - @" ^System.Diagnostics.DebuggerNonUserCodeAttribute$", - @" System.Runtime.CompilerServices.CompilerGeneratedAttribute$", - @" ^System.CodeDom.Compiler.GeneratedCodeAttribute$", - @" ^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$", - @" ^Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode.*", - @" ", - @" ", - @" ", - @" ", - @" .*\\atlmfc\\.*", - @" .*\\atlmbfc\\.*", - @" .*\\vctools\\.*", - @" .*\\public\\sdk2\\.*", - @" .*\\externalapis\\.*", - @" .*\\microsoft sdks\\.*", - @" .*\\vc\\include\\.*", - @" .*\\msclr\\.*", - @" .*\\ucrt\\.*", - @" .*\\public\\sdk\\.*", - @" ", - @" ", - @" ", - @""); - - var expectedResultDocument = new XmlDocument(); - expectedResultDocument.LoadXml(expectedResult); - - var processedNode = processor.Process(settings); - Assert.IsNotNull(processedNode); - - var codeCoverageNodes = this.ExtractNodes(processedNode, expectedResultDocument.DocumentElement, "./CodeCoverage"); - - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./ModulePaths/Exclude"); - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Functions/Exclude"); - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Attributes/Exclude"); - this.CompareResults(codeCoverageNodes.Item1, codeCoverageNodes.Item2, "./Sources/Exclude"); } - #endregion - #region Helpers - private XmlNode ExtractNode(XmlNode node, string path) - { - try - { - return node.SelectSingleNode(path); - } - catch - { - } - - return null; - } + return null; + } - private XmlElement GetDefaultConfiguration() + private static XmlElement GetDefaultConfiguration() + { + var document = new XmlDocument(); + Assembly assembly = typeof(CodeCoverageRunSettingsProcessorTests).Assembly; + using (Stream stream = assembly.GetManifestResourceStream("Microsoft.TestPlatform.Utilities.UnitTests.DefaultCodeCoverageConfig.xml")!) { - var document = new XmlDocument(); - Assembly assembly = typeof(CodeCoverageRunSettingsProcessorTests).GetTypeInfo().Assembly; - using (Stream stream = assembly.GetManifestResourceStream( - "Microsoft.TestPlatform.Utilities.UnitTests.DefaultCodeCoverageConfig.xml")) - { - document.Load(stream); - } - - return document.DocumentElement; + document.Load(stream); } - private Tuple ExtractNodes(XmlNode currentSettingsRoot, XmlNode defaultSettingsRoot, string path) - { - var currentNode = this.ExtractNode(currentSettingsRoot, path); - var defaultNode = this.ExtractNode(defaultSettingsRoot, path); - Assert.IsNotNull(currentNode); - Assert.IsNotNull(defaultNode); + return document.DocumentElement!; + } - return new Tuple(currentNode, defaultNode); - } + private static Tuple ExtractNodes(XmlNode currentSettingsRoot, XmlNode defaultSettingsRoot, string path) + { + var currentNode = ExtractNode(currentSettingsRoot, path); + var defaultNode = ExtractNode(defaultSettingsRoot, path); + Assert.IsNotNull(currentNode); + Assert.IsNotNull(defaultNode); - private void CompareResults(XmlNode currentSettingsRoot, XmlNode defaultSettingsRoot, string path) - { - var nodes = this.ExtractNodes(currentSettingsRoot, defaultSettingsRoot, path); + return new Tuple(currentNode, defaultNode); + } + + private static void CompareResults(XmlNode currentSettingsRoot, XmlNode defaultSettingsRoot, string path) + { + var nodes = ExtractNodes(currentSettingsRoot, defaultSettingsRoot, path); - Assert.AreEqual(nodes.Item1.ChildNodes.Count, nodes.Item2.ChildNodes.Count); + Assert.AreEqual(nodes.Item1.ChildNodes.Count, nodes.Item2.ChildNodes.Count); - var set = new HashSet(); - foreach (XmlNode child in nodes.Item1.ChildNodes) + var set = new HashSet(); + foreach (XmlNode child in nodes.Item1.ChildNodes) + { + if (!set.Contains(child.OuterXml)) { - if (!set.Contains(child.OuterXml)) - { - set.Add(child.OuterXml); - } + set.Add(child.OuterXml); } + } - foreach (XmlNode child in nodes.Item2.ChildNodes) + foreach (XmlNode child in nodes.Item2.ChildNodes) + { + if (!set.Contains(child.OuterXml)) { - if (!set.Contains(child.OuterXml)) - { - set.Add(child.OuterXml); - continue; - } - - set.Remove(child.OuterXml); + set.Add(child.OuterXml); + continue; } - Assert.AreEqual(0, set.Count); + set.Remove(child.OuterXml); } - #endregion + + Assert.AreEqual(0, set.Count); } + #endregion } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/CommandLineUtilitiesTest.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/CommandLineUtilitiesTest.cs index f63ec574b6..c1106695a7 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/CommandLineUtilitiesTest.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/CommandLineUtilitiesTest.cs @@ -1,32 +1,32 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Utilities.Tests -{ - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Utilities; - [TestClass] - public class CommandLineUtilitiesTest - { - private void VerifyCommandLineSplitter(string commandLine, string[] expected) - { - CommandLineUtilities.SplitCommandLineIntoArguments(commandLine, out var actual); +using Microsoft.VisualStudio.TestTools.UnitTesting; - Assert.AreEqual(expected.Length, actual.Length); - for (int i = 0; i < actual.Length; ++i) - { - Assert.AreEqual(expected[i], actual[i]); - } - } +namespace Microsoft.TestPlatform.Utilities.Tests; + +[TestClass] +public class CommandLineUtilitiesTest +{ + private static void VerifyCommandLineSplitter(string commandLine, string[] expected) + { + CommandLineUtilities.SplitCommandLineIntoArguments(commandLine, out var actual); - [TestMethod] - public void TestCommandLineSplitter() + Assert.AreEqual(expected.Length, actual.Length); + for (int i = 0; i < actual.Length; ++i) { - VerifyCommandLineSplitter("", new string[0]); - VerifyCommandLineSplitter("/testadapterpath:\"c:\\Path\"", new[] { @"/testadapterpath:c:\Path" }); - VerifyCommandLineSplitter("/testadapterpath:\"c:\\Path\" /logger:\"trx\"", new[] { @"/testadapterpath:c:\Path", "/logger:trx" }); - VerifyCommandLineSplitter("/testadapterpath:\"c:\\Path\" /logger:\"trx\" /diag:\"log.txt\"", new[] { @"/testadapterpath:c:\Path", "/logger:trx", "/diag:log.txt" }); + Assert.AreEqual(expected[i], actual[i]); } } + + [TestMethod] + public void TestCommandLineSplitter() + { + VerifyCommandLineSplitter("", []); + VerifyCommandLineSplitter("/testadapterpath:\"c:\\Path\"", [@"/testadapterpath:c:\Path"]); + VerifyCommandLineSplitter("/testadapterpath:\"c:\\Path\" /logger:\"trx\"", [@"/testadapterpath:c:\Path", "/logger:trx"]); + VerifyCommandLineSplitter("/testadapterpath:\"c:\\Path\" /logger:\"trx\" /diag:\"log.txt\"", [@"/testadapterpath:c:\Path", "/logger:trx", "/diag:log.txt"]); + } } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/DefaultCodeCoverageConfig.xml b/test/Microsoft.TestPlatform.Utilities.UnitTests/DefaultCodeCoverageConfig.xml index 3bc0b33877..693028e3e8 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/DefaultCodeCoverageConfig.xml +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/DefaultCodeCoverageConfig.xml @@ -45,8 +45,7 @@ ^Microsoft::VisualStudio::CppCodeCoverageFramework::.* ^Microsoft::VisualStudio::CppUnitTestFramework::.* .*::YOU_CAN_ONLY_DESIGNATE_ONE_.* - ^__.* - .*::__.* + ^__empty_global_delete.* diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/InferRunSettingsHelperTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/InferRunSettingsHelperTests.cs index bd928e4965..d5c1de85a1 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/InferRunSettingsHelperTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/InferRunSettingsHelperTests.cs @@ -1,841 +1,810 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Utilities.UnitTests +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using OMResources = Microsoft.VisualStudio.TestPlatform.ObjectModel.Resources.CommonResources; + +namespace Microsoft.TestPlatform.Utilities.UnitTests; + +[TestClass] +public class InferRunSettingsHelperTests { - using System; - using System.Xml; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using OMResources = Microsoft.VisualStudio.TestPlatform.ObjectModel.Resources.CommonResources; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using MSTest.TestFramework.AssertExtensions; - using System.Collections.Generic; - using System.Linq; - using System.Globalization; - using System.Text; - - [TestClass] - public class InferRunSettingsHelperTests - { - private IDictionary sourceArchitectures; - private IDictionary sourceFrameworks; - private readonly Framework frameworkNet45 = Framework.FromString(".NETFramework,Version=4.5"); - private readonly Framework frameworkNet46 = Framework.FromString(".NETFramework,Version=4.6"); - private readonly Framework frameworkNet47 = Framework.FromString(".NETFramework,Version=4.7"); - private const string multiTargettingForwardLink = @"https://aka.ms/tp/vstest/multitargetingdoc?view=vs-2019"; - - public InferRunSettingsHelperTests() - { - sourceArchitectures = new Dictionary(); - sourceFrameworks = new Dictionary(); - } - - [TestMethod] - public void UpdateRunSettingsShouldThrowIfRunSettingsNodeDoesNotExist() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); - - Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - - Assert.That.Throws(action) - .WithMessage(string.Format("An error occurred while loading the settings. Error: {0}.", - "Could not find 'RunSettings' node.")); - } - - [TestMethod] - public void UpdateRunSettingsShouldThrowIfPlatformNodeIsInvalid() - { - var settings = @"foo"; - var xmlDocument = this.GetXmlDocument(settings); - - Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - - Assert.That.Throws(action) - .WithMessage(string.Format("An error occurred while loading the settings. Error: {0}.", - string.Format("Invalid setting '{0}'. Invalid value '{1}' specified for '{2}'", - "RunConfiguration", - "foo", - "TargetPlatform"))); - } - - [TestMethod] - public void UpdateRunSettingsShouldThrowIfFrameworkNodeIsInvalid() - { - var settings = @"foo"; - var xmlDocument = this.GetXmlDocument(settings); + private readonly IDictionary _sourceArchitectures; + private readonly IDictionary _sourceFrameworks; + private readonly Framework _frameworkNet45 = Framework.FromString(".NETFramework,Version=4.5")!; + private readonly Framework _frameworkNet46 = Framework.FromString(".NETFramework,Version=4.6")!; + private readonly Framework _frameworkNet47 = Framework.FromString(".NETFramework,Version=4.7")!; + private const string MultiTargettingForwardLink = @"https://aka.ms/tp/vstest/multitargetingdoc?view=vs-2019"; + + public InferRunSettingsHelperTests() + { + _sourceArchitectures = new Dictionary(); + _sourceFrameworks = new Dictionary(); + } + + [TestMethod] + public void UpdateRunSettingsShouldThrowIfRunSettingsNodeDoesNotExist() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); + + Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); + + var exception = Assert.ThrowsExactly(action); + Assert.AreEqual("An error occurred while loading the settings. Error: Could not find 'RunSettings' node..", exception.Message); + } + + [TestMethod] + public void UpdateRunSettingsShouldThrowIfPlatformNodeIsInvalid() + { + var settings = @"foo"; + var xmlDocument = GetXmlDocument(settings); - Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); + Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - Assert.That.Throws(action) - .WithMessage(string.Format("An error occurred while loading the settings. Error: {0}.", - string.Format("Invalid setting '{0}'. Invalid value '{1}' specified for '{2}'", - "RunConfiguration", - "foo", - "TargetFrameworkVersion"))); - } + var exception = Assert.ThrowsExactly(action); + Assert.AreEqual("An error occurred while loading the settings. Error: Invalid setting 'RunConfiguration'. Invalid value 'foo' specified for 'TargetPlatform'..", exception.Message); + } - [TestMethod] - public void UpdateRunSettingsShouldUpdateWithPlatformSettings() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldThrowIfFrameworkNodeIsInvalid() + { + var settings = @"foo"; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); + Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var exception = Assert.ThrowsExactly(action); + Assert.AreEqual("An error occurred while loading the settings. Error: Invalid setting 'RunConfiguration'. Invalid value 'foo' specified for 'TargetFrameworkVersion'..", exception.Message); + } - StringAssert.Contains(xml, "X86"); - } - - [TestMethod] - public void UpdateRunSettingsShouldUpdateWithFrameworkSettings() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldUpdateWithPlatformSettings() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, $"{Framework.DefaultFramework.Name}"); - } + StringAssert.Contains(xml, "X86"); + } - [TestMethod] - public void UpdateRunSettingsShouldUpdateWithResultsDirectorySettings() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldUpdateWithFrameworkSettings() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, "temp"); - } + StringAssert.Contains(xml, $"{Framework.DefaultFramework.Name}"); + } - [TestMethod] - public void UpdateRunSettingsShouldNotUpdatePlatformIfRunSettingsAlreadyHasIt() - { - var settings = @"X86"; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldUpdateWithResultsDirectorySettings() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X86, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, "X86"); - } + StringAssert.Contains(xml, "temp"); + } - [TestMethod] - public void UpdateRunSettingsShouldNotUpdateFrameworkIfRunSettingsAlreadyHasIt() - { - var settings = @"Framework40"; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldNotUpdatePlatformIfRunSettingsAlreadyHasIt() + { + var settings = @"X86"; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, ".NETFramework,Version=v4.0"); - } - //TargetFrameworkMoniker + StringAssert.Contains(xml, "X86"); + } - [TestMethod] - public void UpdateRunSettingsShouldAllowTargetFrameworkMonikerValue() - { + [TestMethod] + public void UpdateRunSettingsShouldNotUpdateFrameworkIfRunSettingsAlreadyHasIt() + { + var settings = @"Framework40"; + var xmlDocument = GetXmlDocument(settings); - var settings = @".NETFramework,Version=v4.0"; - var xmlDocument = this.GetXmlDocument(settings); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + var xml = xmlDocument.OuterXml; - var xml = xmlDocument.OuterXml; + StringAssert.Contains(xml, ".NETFramework,Version=v4.0"); + } + //TargetFrameworkMoniker - StringAssert.Contains(xml, ".NETFramework,Version=v4.0"); - } + [TestMethod] + public void UpdateRunSettingsShouldAllowTargetFrameworkMonikerValue() + { - [TestMethod] - public void UpdateRunSettingsShouldNotUpdateResultsDirectoryIfRunSettingsAlreadyHasIt() - { - var settings = @"someplace"; - var xmlDocument = this.GetXmlDocument(settings); + var settings = @".NETFramework,Version=v4.0"; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, "someplace"); - } + StringAssert.Contains(xml, ".NETFramework,Version=v4.0"); + } - [TestMethod] - public void UpdateRunSettingsShouldNotUpdatePlatformOrFrameworkOrResultsDirectoryIfRunSettingsAlreadyHasIt() - { - var settings = @"X86Framework40someplace"; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldNotUpdateResultsDirectoryIfRunSettingsAlreadyHasIt() + { + var settings = @"someplace"; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, "X86"); - StringAssert.Contains(xml, "Framework40"); - StringAssert.Contains(xml, "someplace"); - } + StringAssert.Contains(xml, "someplace"); + } - [TestMethod] - public void UpdateRunSettingsWithAnEmptyRunSettingsShouldAddValuesSpecifiedInRunConfiguration() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); + [TestMethod] + public void UpdateRunSettingsShouldNotUpdatePlatformOrFrameworkOrResultsDirectoryIfRunSettingsAlreadyHasIt() + { + var settings = @"X86Framework40someplace"; + var xmlDocument = GetXmlDocument(settings); - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); - var xml = xmlDocument.OuterXml; + var xml = xmlDocument.OuterXml; - StringAssert.Contains(xml, "X64"); - StringAssert.Contains(xml, $"{Framework.DefaultFramework.Name}"); - StringAssert.Contains(xml, "temp"); - } + StringAssert.Contains(xml, "X86"); + StringAssert.Contains(xml, "Framework40"); + StringAssert.Contains(xml, "someplace"); + } - [TestMethod] - public void UpdateRunSettingsShouldReturnBackACompleteRunSettings() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); - - var xml = xmlDocument.OuterXml; - var expectedRunSettings = string.Format("tempX64{0}", Framework.DefaultFramework.Name); - - Assert.AreEqual(expectedRunSettings, xml); - } - - [TestMethod] - public void UpdateRunSettingsShouldThrowIfArchitectureSetIsIncompatibleWithCurrentSystemArchitecture() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); - - Action action = () => InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.ARM, Framework.DefaultFramework, "temp"); - - Assert.That.Throws(action) - .WithMessage(string.Format( - "Incompatible Target platform settings '{0}' with system architecture '{1}'.", - "ARM", - XmlRunSettingsUtilities.OSArchitecture.ToString())); - } - - [TestMethod] - public void UpdateDesignModeOrCsiShouldNotModifyXmlIfNodeIsAlreadyPresent() - { - var settings = @"FalseFalse"; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateDesignMode(xmlDocument, true); - InferRunSettingsHelper.UpdateCollectSourceInformation(xmlDocument, true); - - Assert.AreEqual("False", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/DesignMode")); - Assert.AreEqual("False", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/CollectSourceInformation")); - } - - [DataTestMethod] - [DataRow(true)] - [DataRow(false)] - public void UpdateDesignModeOrCsiShouldModifyXmlToValueProvided(bool val) - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateDesignMode(xmlDocument, val); - InferRunSettingsHelper.UpdateCollectSourceInformation(xmlDocument, val); - - Assert.AreEqual(val.ToString(), this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/DesignMode")); - Assert.AreEqual(val.ToString(), this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/CollectSourceInformation")); - } - - [TestMethod] - public void MakeRunsettingsCompatibleShouldDeleteNewlyAddedRunConfigurationNode() - { - var settings = @"FalseFalse"; - - var result = InferRunSettingsHelper.MakeRunsettingsCompatible(settings); - - Assert.IsTrue(result.IndexOf("DesignMode", StringComparison.OrdinalIgnoreCase) < 0); - } - - [TestMethod] - public void MakeRunsettingsCompatibleShouldNotDeleteOldRunConfigurationNode() - { - var settings = @" - - False - False - x86 - net46 - dummypath - dummypath - dummypath - 2 - False - False - - "; - - var result = InferRunSettingsHelper.MakeRunsettingsCompatible(settings); - - Assert.IsTrue(result.IndexOf("TargetPlatform", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("TargetFrameworkVersion", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("TestAdaptersPaths", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("ResultsDirectory", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("SolutionDirectory", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("MaxCpuCount", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("DisableParallelization", StringComparison.OrdinalIgnoreCase) > 0); - Assert.IsTrue(result.IndexOf("DisableAppDomain", StringComparison.OrdinalIgnoreCase) > 0); - } - - [TestMethod] - public void UpdateTargetDeviceValueFromOldMsTestSettings() - { - var settings = @" - - 2 - False - False - - - 169.254.193.190 - - "; - - var xmlDocument = this.GetXmlDocument(settings); - - var result = InferRunSettingsHelper.TryGetDeviceXml(xmlDocument.CreateNavigator(), out string deviceXml); - Assert.IsTrue(result); - - InferRunSettingsHelper.UpdateTargetDevice(xmlDocument, deviceXml); - Assert.AreEqual(deviceXml.ToString(), this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetDevice")); - } - - [TestMethod] - public void UpdateTargetPlatformShouldNotModifyXmlIfNodeIsAlreadyPresentForOverwriteFalse() - { - var settings = @"x86"; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateTargetPlatform(xmlDocument, "X64", overwrite: false); - - Assert.AreEqual("x86", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetPlatform")); - } - - [TestMethod] - public void UpdateTargetPlatformShouldModifyXmlIfNodeIsAlreadyPresentForOverwriteTrue() - { - var settings = @"x86"; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateTargetPlatform(xmlDocument, "X64", overwrite: true); - - Assert.AreEqual("X64", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetPlatform")); - } - - [TestMethod] - public void UpdateTargetPlatformShouldAddPlatformXmlNodeIfNotPresent() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateTargetPlatform(xmlDocument, "X64"); - - Assert.AreEqual("X64", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetPlatform")); - } - - [TestMethod] - public void UpdateTargetFrameworkShouldNotModifyXmlIfNodeIsAlreadyPresentForOverwriteFalse() - { - var settings = @".NETFramework,Version=v4.5"; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateTargetFramework(xmlDocument, ".NETCoreApp,Version=v1.0", overwrite: false); - - Assert.AreEqual(".NETFramework,Version=v4.5", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetFrameworkVersion")); - } - - [TestMethod] - public void UpdateTargetFrameworkShouldModifyXmlIfNodeIsAlreadyPresentForOverwriteTrue() - { - var settings = @".NETFramework,Version=v4.5"; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateTargetFramework(xmlDocument, ".NETCoreApp,Version=v1.0", overwrite: true); - - Assert.AreEqual(".NETCoreApp,Version=v1.0", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetFrameworkVersion")); - } - - [TestMethod] - public void UpdateTargetFrameworkShouldAddFrameworkXmlNodeIfNotPresent() - { - var settings = @""; - var xmlDocument = this.GetXmlDocument(settings); - - InferRunSettingsHelper.UpdateTargetFramework(xmlDocument, ".NETCoreApp,Version=v1.0"); - - Assert.AreEqual(".NETCoreApp,Version=v1.0", this.GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetFrameworkVersion")); - } - - [TestMethod] - public void FilterCompatibleSourcesShouldIdentifyIncomaptiableSourcesAndConstructWarningMessage() - { - #region Arrange - sourceArchitectures["AnyCPU1net46.dll"] = Architecture.AnyCPU; - sourceArchitectures["x64net47.exe"] = Architecture.X64; - sourceArchitectures["x86net45.dll"] = Architecture.X86; - - sourceFrameworks["AnyCPU1net46.dll"] = frameworkNet46; - sourceFrameworks["x64net47.exe"] = frameworkNet47; - sourceFrameworks["x86net45.dll"] = frameworkNet45; - - StringBuilder sb = new StringBuilder(); - sb.AppendLine(); - sb.AppendLine(GetSourceIncompatibleMessage("AnyCPU1net46.dll")); - sb.AppendLine(GetSourceIncompatibleMessage("x64net47.exe")); - sb.AppendLine(GetSourceIncompatibleMessage("x86net45.dll")); - - var expected = string.Format(CultureInfo.CurrentCulture, OMResources.DisplayChosenSettings, frameworkNet45, Constants.DefaultPlatform, sb.ToString(), multiTargettingForwardLink); - #endregion - - string warningMessage = string.Empty; - var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Constants.DefaultPlatform, Constants.DefaultPlatform, frameworkNet45, sourceArchitectures, sourceFrameworks, out warningMessage); - - // None of the DLLs passed are compatible to the chosen settings - Assert.AreEqual(0, compatibleSources.Count()); - Assert.AreEqual(expected, warningMessage); - } - - [TestMethod] - public void FilterCompatibleSourcesShouldIdentifyCompatibleSources() - { - sourceArchitectures["x64net45.exe"] = Architecture.X64; - sourceArchitectures["x86net45.dll"] = Architecture.X86; - - sourceFrameworks["x64net45.exe"] = frameworkNet45; - sourceFrameworks["x86net45.dll"] = frameworkNet45; - - StringBuilder sb = new StringBuilder(); - sb.AppendLine(); - sb.AppendLine(GetSourceIncompatibleMessage("x86net45.dll")); - - var expected = string.Format(CultureInfo.CurrentCulture, OMResources.DisplayChosenSettings, frameworkNet45, Constants.DefaultPlatform, sb.ToString(), multiTargettingForwardLink); - - string warningMessage = string.Empty; - var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Constants.DefaultPlatform, Constants.DefaultPlatform, frameworkNet45, sourceArchitectures, sourceFrameworks, out warningMessage); - - // only "x64net45.exe" is the compatible source - Assert.AreEqual(1, compatibleSources.Count()); - Assert.AreEqual(expected, warningMessage); - } - - [TestMethod] - public void FilterCompatibleSourcesShouldNotComposeWarningIfSettingsAreCorrect() - { - sourceArchitectures["x86net45.dll"] = Architecture.X86; - sourceFrameworks["x86net45.dll"] = frameworkNet45; - - string warningMessage = string.Empty; - var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Architecture.X86, Constants.DefaultPlatform, frameworkNet45, sourceArchitectures, sourceFrameworks, out warningMessage); - - // only "x86net45.dll" is the compatible source - Assert.AreEqual(1, compatibleSources.Count()); - Assert.IsTrue(string.IsNullOrEmpty(warningMessage)); - } - - [TestMethod] - public void FilterCompatibleSourcesShouldRetrunWarningMessageIfNoConflict() - { - sourceArchitectures["x64net45.exe"] = Architecture.X64; - sourceFrameworks["x64net45.exe"] = frameworkNet45; - - string warningMessage = string.Empty; - var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Constants.DefaultPlatform, Constants.DefaultPlatform, frameworkNet45, sourceArchitectures, sourceFrameworks, out warningMessage); - - Assert.IsTrue(string.IsNullOrEmpty(warningMessage)); - } - - [TestMethod] - public void IsTestSettingsEnabledShouldReturnTrueIfRunsettingsHasTestSettings() - { - string runsettingsString = @" - - C:\temp.testsettings - true - - "; - - Assert.IsTrue(InferRunSettingsHelper.IsTestSettingsEnabled(runsettingsString)); - } - - [TestMethod] - public void IsTestSettingsEnabledShouldReturnFalseIfRunsettingsDoesnotHaveTestSettings() - { - string runsettingsString = @" - - true - - "; - - Assert.IsFalse(InferRunSettingsHelper.IsTestSettingsEnabled(runsettingsString)); - } - - [TestMethod] - public void TryGetLegacySettingsForRunSettingsWithoutLegacySettingsShouldReturnFalse() - { - string runSettingsXml = @" - "; - - Assert.IsFalse(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out Dictionary legacySettings)); - } - - [TestMethod] - public void TryGetLegacySettingsForRunSettingsWithInvalidLegacySettingsShouldReturnFalse() - { - string runSettingsXml = @" - - - - "; - - Assert.IsFalse(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out Dictionary legacySettings)); - } - - [TestMethod] - public void TryGetLegacySettingsForRunSettingsWithEmptyLegacySettingsShouldReturnTrueAndEmptyListForLegacySettingElements() - { - string runSettingsXml = @" - - - "; - - Assert.IsTrue(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out Dictionary legacySettings)); - Assert.AreEqual(0, legacySettings.Count); - } - - [TestMethod] - public void TryGetLegacySettingsForRunSettingsWithValidLegacySettingsShouldReturnTrueAndListForLegacySettingElements() - { - string runSettingsXml = @" - - - - - - - - - - - - - - - - "; - - var expectedElements = "Deployment, Scripts, Execution, AssemblyResolution, Timeouts, Hosts"; - var expectedDeploymentAttributes = "enabled, deploySatelliteAssemblies"; - var expectedExecutionAttributes = "hostProcessPlatform, parallelTestCount"; - - Assert.IsTrue(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out Dictionary legacySettings)); - Assert.AreEqual(3, legacySettings.Count, "count does not match"); - Assert.AreEqual(expectedElements, legacySettings["Elements"]); - Assert.AreEqual(expectedDeploymentAttributes, legacySettings["DeploymentAttributes"]); - Assert.AreEqual(expectedExecutionAttributes, legacySettings["ExecutionAttributes"]); - } - - [TestMethod] - public void GetEnvironmentVariablesWithValidValuesInRunSettingsShouldReturnValidDictionary() - { - string runSettingsXml = @" - - - C:\temp - C:\temp2 - - - "; - - var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); - - Assert.AreEqual(2, envVars.Count); - Assert.AreEqual(@"C:\temp", envVars["RANDOM_PATH"]); - Assert.AreEqual(@"C:\temp2", envVars["RANDOM_PATH2"]); - } - - [TestMethod] - public void GetEnvironmentVariablesWithDuplicateEnvValuesInRunSettingsShouldReturnValidDictionary() - { - string runSettingsXml = @" - - - C:\temp - C:\temp2 - - - "; - - var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); - - Assert.AreEqual(1, envVars.Count); - Assert.AreEqual(@"C:\temp", envVars["RANDOM_PATH"]); - } - - [TestMethod] - public void GetEnvironmentVariablesWithEmptyVariablesInRunSettingsShouldReturnEmptyDictionary() - { - string runSettingsXml = @" - - - - - "; - - var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); - Assert.AreEqual(0, envVars.Count); - } - - [TestMethod] - public void GetEnvironmentVariablesWithInvalidValuesInRunSettingsShouldReturnNull() - { - string runSettingsXml = @" - - - - - - "; - - var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); - Assert.IsNull(envVars); - } - - [TestMethod] - public void GetEnvironmentVariablesWithoutEnvVarNodeInRunSettingsShouldReturnNull() - { - string runSettingsXml = @" - - - "; - - var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); - Assert.IsNull(envVars); - } - - #region RunSettingsIncompatibeWithTestSettings Tests - - [TestMethod] - public void RunSettingsWithCodeCoverageAndInlineTestSettingsXml() - { - // Setup - var runSettingsWithCodeCoverageAndInlineTestSettingsXml = @" - - - Framework45 - C:\TestProject1\TestResults - C:\TestProject1\ - X86 - - - C:\TestProject1\TestSettings1.testsettings - true - true - - - - - - DevBox 2018-01-07 20_42_30.coverage - - - - - - - "; - - // Act and validate - Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - runSettingsWithCodeCoverageAndInlineTestSettingsXml), "Invalid response"); - Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithCodeCoverageAndInlineTestSettingsXml)), "Invalid response"); - } - - [TestMethod] - public void RunSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml() - { - var runSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml = @" - - - Framework45 - C:\TestProject1\TestResults - C:\TestProject1\ - X86 - - - C:\TestProject1\TestSettings1.testsettings - true - true - - - - - - - - - - "; - - // Act and validate - Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - runSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml), "Invalid response"); - Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml)), "Invalid response"); - } - - [TestMethod] - public void RunSettingsWithEnabledAndDisabledCollectorAndNoEmbeddedTestSettingsXml() - { - var runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml = @" - - - Framework45 - C:\TestProject1\TestResults - C:\TestProject1\ - X86 - - - - - - - - - - - - "; - - // Act and validate - Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml), "Invalid response"); - Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml)), "Invalid response"); - } - - [TestMethod] - public void RunSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml() - { - var runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml = @" - - - Framework45 - C:\TestProject1\TestResults - C:\TestProject1\ - X86 - - - C:\TestProject1\TestSettings1.testsettings - true - true - - - - - - - - - - - - "; - - // Act and validate - Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml), "Invalid response"); - Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml)), "Invalid response"); - } - - [TestMethod] - public void RunSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml() - { - var runSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml = @" - - - Framework45 - C:\TestProject1\TestResults - C:\TestProject1\ - X86 - - - C:\TestProject1\TestSettings1.testsettings - true - true - - - - - - - - - - - - "; - - // Act and validate - Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - runSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml), "Invalid response"); - Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( - ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml)), "Invalid response"); - } - - #endregion - - #region Private Methods - - private string GetSourceIncompatibleMessage(string source) - { - return string.Format(CultureInfo.CurrentCulture, OMResources.SourceIncompatible, source, sourceFrameworks[source].Name, sourceArchitectures[source]); - } - - private XmlDocument GetXmlDocument(string settingsXml) - { - var doc = new XmlDocument(); - doc.LoadXml(settingsXml); - - return doc; - } - - private string GetValueOf(XmlDocument xmlDocument, string xpath) - { - return xmlDocument.SelectSingleNode(xpath).InnerText; - } - - private string ConvertOutOfProcToInProcDataCollectionSettings(string settings) - { - return settings.Replace("DataCollectionRunSettings", "InProcDataCollectionRunSettings") - .Replace("", "") - .Replace("", "") - .Replace("", ""); - } - - #endregion - } + [TestMethod] + public void UpdateRunSettingsWithAnEmptyRunSettingsShouldAddValuesSpecifiedInRunConfiguration() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + + var xml = xmlDocument.OuterXml; + + StringAssert.Contains(xml, "X64"); + StringAssert.Contains(xml, $"{Framework.DefaultFramework.Name}"); + StringAssert.Contains(xml, "temp"); + } + + [TestMethod] + public void UpdateRunSettingsShouldReturnBackACompleteRunSettings() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateRunSettingsWithUserProvidedSwitches(xmlDocument, Architecture.X64, Framework.DefaultFramework, "temp"); + + var xml = xmlDocument.OuterXml; + var expectedRunSettings = $"tempX64{Framework.DefaultFramework.Name}"; + + Assert.AreEqual(expectedRunSettings, xml); + } + + [TestMethod] + public void UpdateDesignModeOrCsiShouldNotModifyXmlIfNodeIsAlreadyPresent() + { + var settings = @"FalseFalse"; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateDesignMode(xmlDocument, true); + InferRunSettingsHelper.UpdateCollectSourceInformation(xmlDocument, true); + + Assert.AreEqual("False", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/DesignMode")); + Assert.AreEqual("False", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/CollectSourceInformation")); + } + + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void UpdateDesignModeOrCsiShouldModifyXmlToValueProvided(bool val) + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateDesignMode(xmlDocument, val); + InferRunSettingsHelper.UpdateCollectSourceInformation(xmlDocument, val); + + Assert.AreEqual(val.ToString(), GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/DesignMode")); + Assert.AreEqual(val.ToString(), GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/CollectSourceInformation")); + } + + [TestMethod] + public void MakeRunsettingsCompatibleShouldDeleteNewlyAddedRunConfigurationNode() + { + var settings = @"FalseFalse"; + + var result = InferRunSettingsHelper.MakeRunsettingsCompatible(settings)!; + + Assert.IsTrue(result.IndexOf("DesignMode", StringComparison.OrdinalIgnoreCase) < 0); + } + + [TestMethod] + public void MakeRunsettingsCompatibleShouldNotDeleteOldRunConfigurationNode() + { + var settings = @" + + False + False + x86 + net46 + dummypath + dummypath + dummypath + 2 + False + False + + "; + + var result = InferRunSettingsHelper.MakeRunsettingsCompatible(settings)!; + + Assert.IsTrue(result.IndexOf("TargetPlatform", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("TargetFrameworkVersion", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("TestAdaptersPaths", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("ResultsDirectory", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("SolutionDirectory", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("MaxCpuCount", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("DisableParallelization", StringComparison.OrdinalIgnoreCase) > 0); + Assert.IsTrue(result.IndexOf("DisableAppDomain", StringComparison.OrdinalIgnoreCase) > 0); + } + + [TestMethod] + public void UpdateTargetDeviceValueFromOldMsTestSettings() + { + var settings = @" + + 2 + False + False + + + 169.254.193.190 + + "; + + var xmlDocument = GetXmlDocument(settings); + + var result = InferRunSettingsHelper.TryGetDeviceXml(xmlDocument.CreateNavigator()!, out string? deviceXml); + Assert.IsTrue(result); + Assert.IsNotNull(deviceXml); + + InferRunSettingsHelper.UpdateTargetDevice(xmlDocument, deviceXml); + Assert.AreEqual(deviceXml.ToString(), GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetDevice")); + } + + [TestMethod] + public void UpdateTargetPlatformShouldNotModifyXmlIfNodeIsAlreadyPresentForOverwriteFalse() + { + var settings = @"x86"; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateTargetPlatform(xmlDocument, "X64", overwrite: false); + + Assert.AreEqual("x86", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetPlatform")); + } + + [TestMethod] + public void UpdateTargetPlatformShouldModifyXmlIfNodeIsAlreadyPresentForOverwriteTrue() + { + var settings = @"x86"; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateTargetPlatform(xmlDocument, "X64", overwrite: true); + + Assert.AreEqual("X64", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetPlatform")); + } + + [TestMethod] + public void UpdateTargetPlatformShouldAddPlatformXmlNodeIfNotPresent() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateTargetPlatform(xmlDocument, "X64"); + + Assert.AreEqual("X64", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetPlatform")); + } + + [TestMethod] + public void UpdateTargetFrameworkShouldNotModifyXmlIfNodeIsAlreadyPresentForOverwriteFalse() + { + var settings = @".NETFramework,Version=v4.5"; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateTargetFramework(xmlDocument, ".NETCoreApp,Version=v1.0", overwrite: false); + + Assert.AreEqual(".NETFramework,Version=v4.5", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetFrameworkVersion")); + } + + [TestMethod] + public void UpdateTargetFrameworkShouldModifyXmlIfNodeIsAlreadyPresentForOverwriteTrue() + { + var settings = @".NETFramework,Version=v4.5"; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateTargetFramework(xmlDocument, ".NETCoreApp,Version=v1.0", overwrite: true); + + Assert.AreEqual(".NETCoreApp,Version=v1.0", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetFrameworkVersion")); + } + + [TestMethod] + public void UpdateTargetFrameworkShouldAddFrameworkXmlNodeIfNotPresent() + { + var settings = @""; + var xmlDocument = GetXmlDocument(settings); + + InferRunSettingsHelper.UpdateTargetFramework(xmlDocument, ".NETCoreApp,Version=v1.0"); + + Assert.AreEqual(".NETCoreApp,Version=v1.0", GetValueOf(xmlDocument, "/RunSettings/RunConfiguration/TargetFrameworkVersion")); + } + + [TestMethod] + public void FilterCompatibleSourcesShouldIdentifyIncomaptiableSourcesAndConstructWarningMessage() + { + #region Arrange + _sourceArchitectures["AnyCPU1net46.dll"] = Architecture.AnyCPU; + _sourceArchitectures["x64net47.exe"] = Architecture.X64; + _sourceArchitectures["x86net45.dll"] = Architecture.X86; + + _sourceFrameworks["AnyCPU1net46.dll"] = _frameworkNet46; + _sourceFrameworks["x64net47.exe"] = _frameworkNet47; + _sourceFrameworks["x86net45.dll"] = _frameworkNet45; + + StringBuilder sb = new(); + sb.AppendLine(); + sb.AppendLine(GetSourceIncompatibleMessage("AnyCPU1net46.dll")); + sb.AppendLine(GetSourceIncompatibleMessage("x64net47.exe")); + sb.AppendLine(GetSourceIncompatibleMessage("x86net45.dll")); + + var expected = string.Format(CultureInfo.CurrentCulture, OMResources.DisplayChosenSettings, _frameworkNet45, Constants.DefaultPlatform, sb.ToString(), MultiTargettingForwardLink); + + + #endregion + var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Constants.DefaultPlatform, Constants.DefaultPlatform, _frameworkNet45, _sourceArchitectures, _sourceFrameworks, out string warningMessage); + + // None of the DLLs passed are compatible to the chosen settings + Assert.AreEqual(0, compatibleSources.Count()); + Assert.AreEqual(expected, warningMessage); + } + + [TestMethod] + public void FilterCompatibleSourcesShouldIdentifyCompatibleSources() + { + _sourceArchitectures["x64net45.exe"] = Architecture.X64; + _sourceArchitectures["x86net45.dll"] = Architecture.X86; + + _sourceFrameworks["x64net45.exe"] = _frameworkNet45; + _sourceFrameworks["x86net45.dll"] = _frameworkNet45; + + StringBuilder sb = new(); + sb.AppendLine(); + sb.AppendLine(GetSourceIncompatibleMessage("x86net45.dll")); + + var expected = string.Format(CultureInfo.CurrentCulture, OMResources.DisplayChosenSettings, _frameworkNet45, Constants.DefaultPlatform, sb.ToString(), MultiTargettingForwardLink); + + var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Constants.DefaultPlatform, Constants.DefaultPlatform, _frameworkNet45, _sourceArchitectures, _sourceFrameworks, out string warningMessage); + + // only "x64net45.exe" is the compatible source + Assert.AreEqual(1, compatibleSources.Count()); + Assert.AreEqual(expected, warningMessage); + } + + [TestMethod] + public void FilterCompatibleSourcesShouldNotComposeWarningIfSettingsAreCorrect() + { + _sourceArchitectures["x86net45.dll"] = Architecture.X86; + _sourceFrameworks["x86net45.dll"] = _frameworkNet45; + + var compatibleSources = InferRunSettingsHelper.FilterCompatibleSources(Architecture.X86, Constants.DefaultPlatform, _frameworkNet45, _sourceArchitectures, _sourceFrameworks, out string warningMessage); + + // only "x86net45.dll" is the compatible source + Assert.AreEqual(1, compatibleSources.Count()); + Assert.IsTrue(string.IsNullOrEmpty(warningMessage)); + } + + [TestMethod] + public void FilterCompatibleSourcesShouldRetrunWarningMessageIfNoConflict() + { + _sourceArchitectures["x64net45.exe"] = Architecture.X64; + _sourceFrameworks["x64net45.exe"] = _frameworkNet45; + _ = InferRunSettingsHelper.FilterCompatibleSources(Constants.DefaultPlatform, Constants.DefaultPlatform, _frameworkNet45, _sourceArchitectures, _sourceFrameworks, out string warningMessage); + + Assert.IsTrue(string.IsNullOrEmpty(warningMessage)); + } + + [TestMethod] + public void IsTestSettingsEnabledShouldReturnTrueIfRunsettingsHasTestSettings() + { + string runsettingsString = @" + + C:\temp.testsettings + true + + "; + + Assert.IsTrue(InferRunSettingsHelper.IsTestSettingsEnabled(runsettingsString)); + } + + [TestMethod] + public void IsTestSettingsEnabledShouldReturnFalseIfRunsettingsDoesnotHaveTestSettings() + { + string runsettingsString = @" + + true + + "; + + Assert.IsFalse(InferRunSettingsHelper.IsTestSettingsEnabled(runsettingsString)); + } + + [TestMethod] + public void TryGetLegacySettingsForRunSettingsWithoutLegacySettingsShouldReturnFalse() + { + string runSettingsXml = @" + "; + Assert.IsFalse(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out _)); + } + + [TestMethod] + public void TryGetLegacySettingsForRunSettingsWithInvalidLegacySettingsShouldReturnFalse() + { + string runSettingsXml = @" + + + + "; + Assert.IsFalse(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out _)); + } + + [TestMethod] + public void TryGetLegacySettingsForRunSettingsWithEmptyLegacySettingsShouldReturnTrueAndEmptyListForLegacySettingElements() + { + string runSettingsXml = @" + + + "; + + Assert.IsTrue(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out Dictionary legacySettings)); + Assert.AreEqual(0, legacySettings.Count); + } + + [TestMethod] + public void TryGetLegacySettingsForRunSettingsWithValidLegacySettingsShouldReturnTrueAndListForLegacySettingElements() + { + string runSettingsXml = @" + + + + + + + + + + + + + + + + "; + + var expectedElements = "Deployment, Scripts, Execution, AssemblyResolution, Timeouts, Hosts"; + var expectedDeploymentAttributes = "enabled, deploySatelliteAssemblies"; + var expectedExecutionAttributes = "hostProcessPlatform, parallelTestCount"; + + Assert.IsTrue(InferRunSettingsHelper.TryGetLegacySettingElements(runSettingsXml, out Dictionary legacySettings)); + Assert.AreEqual(3, legacySettings.Count, "count does not match"); + Assert.AreEqual(expectedElements, legacySettings["Elements"]); + Assert.AreEqual(expectedDeploymentAttributes, legacySettings["DeploymentAttributes"]); + Assert.AreEqual(expectedExecutionAttributes, legacySettings["ExecutionAttributes"]); + } + + [TestMethod] + public void GetEnvironmentVariablesWithValidValuesInRunSettingsShouldReturnValidDictionary() + { + string runSettingsXml = @" + + + C:\temp + C:\temp2 + + + "; + + var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml)!; + + Assert.AreEqual(2, envVars.Count); + Assert.AreEqual(@"C:\temp", envVars["RANDOM_PATH"]); + Assert.AreEqual(@"C:\temp2", envVars["RANDOM_PATH2"]); + } + + [TestMethod] + public void GetEnvironmentVariablesWithDuplicateEnvValuesInRunSettingsShouldReturnValidDictionary() + { + string runSettingsXml = @" + + + C:\temp + C:\temp2 + + + "; + + var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml)!; + + Assert.AreEqual(1, envVars.Count); + Assert.AreEqual(@"C:\temp", envVars["RANDOM_PATH"]); + } + + [TestMethod] + public void GetEnvironmentVariablesWithEmptyVariablesInRunSettingsShouldReturnEmptyDictionary() + { + string runSettingsXml = @" + + + + + "; + + var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml)!; + Assert.AreEqual(0, envVars.Count); + } + + [TestMethod] + public void GetEnvironmentVariablesWithInvalidValuesInRunSettingsShouldReturnNull() + { + string runSettingsXml = @" + + + + + + "; + + var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); + Assert.IsNull(envVars); + } + + [TestMethod] + public void GetEnvironmentVariablesWithoutEnvVarNodeInRunSettingsShouldReturnNull() + { + string runSettingsXml = @" + + + "; + + var envVars = InferRunSettingsHelper.GetEnvironmentVariables(runSettingsXml); + Assert.IsNull(envVars); + } + + #region RunSettingsIncompatibeWithTestSettings Tests + + [TestMethod] + public void RunSettingsWithCodeCoverageAndInlineTestSettingsXml() + { + // Setup + var runSettingsWithCodeCoverageAndInlineTestSettingsXml = @" + + + Framework45 + C:\TestProject1\TestResults + C:\TestProject1\ + X86 + + + C:\TestProject1\TestSettings1.testsettings + true + true + + + + + + DevBox 2018-01-07 20_42_30.coverage + + + + + + + "; + + // Act and validate + Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + runSettingsWithCodeCoverageAndInlineTestSettingsXml), "Invalid response"); + Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithCodeCoverageAndInlineTestSettingsXml)), "Invalid response"); + } + + [TestMethod] + public void RunSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml() + { + var runSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml = @" + + + Framework45 + C:\TestProject1\TestResults + C:\TestProject1\ + X86 + + + C:\TestProject1\TestSettings1.testsettings + true + true + + + + + + + + + + "; + + // Act and validate + Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + runSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml), "Invalid response"); + Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithFakesAndCodeCoverageAndInlineTestSettingsXml)), "Invalid response"); + } + + [TestMethod] + public void RunSettingsWithEnabledAndDisabledCollectorAndNoEmbeddedTestSettingsXml() + { + var runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml = @" + + + Framework45 + C:\TestProject1\TestResults + C:\TestProject1\ + X86 + + + + + + + + + + + + "; + + // Act and validate + Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml), "Invalid response"); + Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml)), "Invalid response"); + } + + [TestMethod] + public void RunSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml() + { + var runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml = @" + + + Framework45 + C:\TestProject1\TestResults + C:\TestProject1\ + X86 + + + C:\TestProject1\TestSettings1.testsettings + true + true + + + + + + + + + + + + "; + + // Act and validate + Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml), "Invalid response"); + Assert.IsTrue(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithEnabledAndDisabledCollectorAndInlineTestSettingsXml)), "Invalid response"); + } + + [TestMethod] + public void RunSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml() + { + var runSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml = @" + + + Framework45 + C:\TestProject1\TestResults + C:\TestProject1\ + X86 + + + C:\TestProject1\TestSettings1.testsettings + true + true + + + + + + + + + + + + "; + + // Act and validate + Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + runSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml), "Invalid response"); + Assert.IsFalse(InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings( + ConvertOutOfProcToInProcDataCollectionSettings(runSettingsWithDisabledCollectionSettingsAndInlineTestSettingsXml)), "Invalid response"); + } + + #endregion + + #region Private Methods + + private string GetSourceIncompatibleMessage(string source) + { + return string.Format(CultureInfo.CurrentCulture, OMResources.SourceIncompatible, source, _sourceFrameworks[source].Name, _sourceArchitectures[source]); + } + + private static XmlDocument GetXmlDocument(string settingsXml) + { + var doc = new XmlDocument(); + doc.LoadXml(settingsXml); + + return doc; + } + + private static string GetValueOf(XmlDocument xmlDocument, string xpath) + { + return xmlDocument.SelectSingleNode(xpath)!.InnerText; + } + + private static string ConvertOutOfProcToInProcDataCollectionSettings(string settings) + { + return settings.Replace("DataCollectionRunSettings", "InProcDataCollectionRunSettings") + .Replace("", "") + .Replace("", "") + .Replace("", ""); + } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs index 366e32871a..d7b3e8baf0 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs @@ -1,122 +1,122 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Utilities.Tests +using System; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Utilities.Tests; + +[TestClass] +public class MsTestSettingsUtilitiesTests { - using System; - using System.Xml; + #region IsLegacyTestSettingsFile tests + + [TestMethod] + public void IsLegacyTestSettingsFileShouldReturnTrueIfTestSettingsExtension() + { + Assert.IsTrue(MSTestSettingsUtilities.IsLegacyTestSettingsFile("C:\\temp\\t.testsettings")); + } + + [TestMethod] + public void IsLegacyTestSettingsFileShouldReturnTrueIfTestRunConfigExtension() + { + Assert.IsTrue(MSTestSettingsUtilities.IsLegacyTestSettingsFile("C:\\temp\\t.testrunConfig")); + } + + [TestMethod] + public void IsLegacyTestSettingsFileShouldReturnTrueIfVsmdiExtension() + { + Assert.IsTrue(MSTestSettingsUtilities.IsLegacyTestSettingsFile("C:\\temp\\t.vsmdi")); + } + + #endregion - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using MSTest.TestFramework.AssertExtensions; + #region Import tests - [TestClass] - public class MSTestSettingsUtilitiesTests + [TestMethod] + public void ImportShouldThrowIfNotLegacySettingsFile() { - #region IsLegacyTestSettingsFile tests - - [TestMethod] - public void IsLegacyTestSettingsFileShouldReturnTrueIfTestSettingsExtension() - { - Assert.IsTrue(MSTestSettingsUtilities.IsLegacyTestSettingsFile("C:\\temp\\t.testsettings")); - } - - [TestMethod] - public void IsLegacyTestSettingsFileShouldReturnTrueIfTestRunConfigExtension() - { - Assert.IsTrue(MSTestSettingsUtilities.IsLegacyTestSettingsFile("C:\\temp\\t.testrunConfig")); - } - - [TestMethod] - public void IsLegacyTestSettingsFileShouldReturnTrueIfVSMDIExtension() - { - Assert.IsTrue(MSTestSettingsUtilities.IsLegacyTestSettingsFile("C:\\temp\\t.vsmdi")); - } - - #endregion - - #region Import tests - - [TestMethod] - public void ImportShouldThrowIfNotLegacySettingsFile() - { - var defaultRunSettingsXml = ""; - var xmlDocument = new XmlDocument(); - xmlDocument.LoadXml(defaultRunSettingsXml); - - Action action = - () => + var defaultRunSettingsXml = ""; + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(defaultRunSettingsXml); + + Action action = + () => MSTestSettingsUtilities.Import( "C:\\temp\\r.runsettings", xmlDocument); - Assert.That.Throws(action).WithMessage("Unexpected settings file specified."); - } - - [TestMethod] - public void ImportShouldThrowIfDefaultRunSettingsIsIncorrect() - { - var defaultRunSettingsXml = ""; - var xmlDocument = new XmlDocument(); - xmlDocument.LoadXml(defaultRunSettingsXml); - - Action action = - () => + var exception = Assert.ThrowsExactly(action); + Assert.AreEqual("Unexpected settings file specified.", exception.Message); + } + + [TestMethod] + public void ImportShouldThrowIfDefaultRunSettingsIsIncorrect() + { + var defaultRunSettingsXml = ""; + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(defaultRunSettingsXml); + + Action action = + () => MSTestSettingsUtilities.Import( "C:\\temp\\r.testsettings", xmlDocument); - Assert.That.Throws(action).WithMessage("Could not find 'RunSettings' node."); - } - - [TestMethod] - public void ImportShouldEmbedTestSettingsInformation() - { - var defaultRunSettingsXml = ""; - var xmlDocument = new XmlDocument(); - xmlDocument.LoadXml(defaultRunSettingsXml); - var finalxPath = MSTestSettingsUtilities.Import( - "C:\\temp\\r.testsettings", - xmlDocument); - - var finalSettingsXml = finalxPath.CreateNavigator().OuterXml; - - var expectedSettingsXml = string.Join(Environment.NewLine, - "", - " ", - " C:\\temp\\r.testsettings", - " true", - " ", - " ", - "" - ); - - Assert.AreEqual(expectedSettingsXml, finalSettingsXml); - } - - [TestMethod] - public void ImportShouldEmbedTestSettingsAndDefaultRunConfigurationInformation() - { - var defaultRunSettingsXml = ""; - var xmlDocument = new XmlDocument(); - xmlDocument.LoadXml(defaultRunSettingsXml); - var finalxPath = MSTestSettingsUtilities.Import( - "C:\\temp\\r.testsettings", - xmlDocument); - - var finalSettingsXml = finalxPath.CreateNavigator().OuterXml; - - var expectedSettingsXml = string.Join(Environment.NewLine, - "", - " ", - " ", - " C:\\temp\\r.testsettings", - " true", - " ", - "" - ); - - Assert.AreEqual(expectedSettingsXml, finalSettingsXml); - } - - #endregion + var exception = Assert.ThrowsExactly(action); + Assert.AreEqual("Could not find 'RunSettings' node.", exception.Message); + } + + [TestMethod] + public void ImportShouldEmbedTestSettingsInformation() + { + var defaultRunSettingsXml = ""; + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(defaultRunSettingsXml); + var finalxPath = MSTestSettingsUtilities.Import( + "C:\\temp\\r.testsettings", + xmlDocument); + + var finalSettingsXml = finalxPath.CreateNavigator()!.OuterXml; + + var expectedSettingsXml = string.Join(Environment.NewLine, + "", + " ", + " C:\\temp\\r.testsettings", + " true", + " ", + " ", + "" + ); + + Assert.AreEqual(expectedSettingsXml, finalSettingsXml); + } + + [TestMethod] + public void ImportShouldEmbedTestSettingsAndDefaultRunConfigurationInformation() + { + var defaultRunSettingsXml = ""; + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(defaultRunSettingsXml); + var finalxPath = MSTestSettingsUtilities.Import( + "C:\\temp\\r.testsettings", + xmlDocument); + + var finalSettingsXml = finalxPath.CreateNavigator()!.OuterXml; + + var expectedSettingsXml = string.Join(Environment.NewLine, + "", + " ", + " ", + " C:\\temp\\r.testsettings", + " true", + " ", + "" + ); + + Assert.AreEqual(expectedSettingsXml, finalSettingsXml); } + + #endregion } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/Microsoft.TestPlatform.Utilities.UnitTests.csproj b/test/Microsoft.TestPlatform.Utilities.UnitTests/Microsoft.TestPlatform.Utilities.UnitTests.csproj index f87f3be25f..86bbf395d8 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/Microsoft.TestPlatform.Utilities.UnitTests.csproj +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/Microsoft.TestPlatform.Utilities.UnitTests.csproj @@ -1,41 +1,29 @@ - + - ..\..\ - true - true - true + true + true + true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - Microsoft.TestPlatform.Utilities.UnitTests + net9.0;net48 + Exe + Microsoft.TestPlatform.Utilities.UnitTests - + - - 1.0.3 - - - - - - - - - + - - Always - + + Always + - + - + diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/Program.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/Program.cs deleted file mode 100644 index 7feda95b4b..0000000000 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.Utilities.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/Properties/AssemblyInfo.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index dc4d031c99..0000000000 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.TestPlatform.Utilities.Tests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("78a40fa0-835f-453e-8883-95eaac5f348d")] diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/StringUtilitiesTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/StringUtilitiesTests.cs index c285f3a155..85bb55149b 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/StringUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/StringUtilitiesTests.cs @@ -3,96 +3,97 @@ using System.Linq; -namespace Microsoft.TestPlatform.Utilities.UnitTests +using Castle.Core.Internal; + +using Microsoft.VisualStudio.TestPlatform.Utilities; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.Utilities.UnitTests; + +[TestClass] +public class StringUtilitiesTests { - using Castle.Core.Internal; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void SplitShouldReturnWhenStringisNullOrEmpty() + { + var argsList = string.Empty.Tokenize(SplitChar, EscapeChar); + + Assert.IsTrue(argsList.IsNullOrEmpty()); + } + + [TestMethod] + public void SplitShouldReturnWhenStringDoesntContainSplitChar() + { + var data = "foobar"; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); + + Assert.IsTrue(enumerable.Length == 1); + Assert.IsTrue(enumerable.First().Equals(data)); + } + + [TestMethod] + public void SplitShouldSplitWhenStringContainsSplitChar() + { + var data = "foo,bar"; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); + + Assert.IsTrue(enumerable.Length == 2); + } + + [TestMethod] + public void SplitShouldSplitWhenStringWithSplitCharStartEnd() + { + var data = ",foo,bar,"; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); + + Assert.IsTrue(enumerable.Length == 4); + } + + [TestMethod] + public void SplitShouldEscapeSplitCharWhenEscapedCharPresent() + { + var data = "foo\\,bar"; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); + + Assert.IsTrue(enumerable.Length == 1); + Assert.IsTrue(enumerable.First().Equals("foo,bar")); + } + + [TestMethod] + public void SplitShouldEscapeSplitCharWhenEscapedNonEscapedCharPresent() + { + var data = "foo\\,,bar"; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); + Assert.IsTrue(enumerable.Length == 2); + Assert.IsTrue(enumerable.First().Equals("foo,")); + } + + [TestMethod] + public void SplitShouldSplitWhenOnlySplitCharPresent() + { + var data = ","; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); - [TestClass] - public class StringUtilitiesTests + Assert.IsTrue(enumerable.Length == 2); + } + + [TestMethod] + public void SplitShouldNotSplitWhenNoSplitCharPresent() { - [TestMethod] - public void SplitShouldReturnWhenStringisNullOrEmpty() - { - var argsList = string.Empty.Tokenize(SplitChar, EscapeChar); - - Assert.IsTrue(argsList.IsNullOrEmpty()); - } - - [TestMethod] - public void SplitShouldReturnWhenStringDoesntContainSplitChar() - { - var data = "foobar"; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - - Assert.IsTrue(enumerable.Length == 1); - Assert.IsTrue(enumerable.First().Equals(data)); - } - - [TestMethod] - public void SplitShouldSplitWhenStringContainsSplitChar() - { - var data = "foo,bar"; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - - Assert.IsTrue(enumerable.Length == 2); - } - - [TestMethod] - public void SplitShouldSplitWhenStringWithSplitCharStartEnd() - { - var data = ",foo,bar,"; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - - Assert.IsTrue(enumerable.Length == 4); - } - - [TestMethod] - public void SplitShouldEscapeSplitCharWhenEscapedCharPresent() - { - var data = "foo\\,bar"; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - - Assert.IsTrue(enumerable.Length == 1); - Assert.IsTrue(enumerable.First().Equals("foo,bar")); - } - - [TestMethod] - public void SplitShouldEscapeSplitCharWhenEscapedNonEscapedCharPresent() - { - var data = "foo\\,,bar"; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - Assert.IsTrue(enumerable.Length == 2); - Assert.IsTrue(enumerable.First().Equals("foo,")); - } - - [TestMethod] - public void SplitShouldSplitWhenOnlySplitCharPresent() - { - var data = ","; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - - Assert.IsTrue(enumerable.Length == 2); - } - - [TestMethod] - public void SplitShouldNotSplitWhenNoSplitCharPresent() - { - var data = "foo\\bar"; - var argsList = data.Tokenize(SplitChar, EscapeChar); - var enumerable = argsList as string[] ?? argsList.ToArray(); - - Assert.IsTrue(enumerable.Length == 1); - } - - private const char SplitChar = ','; - private const char EscapeChar = '\\'; + var data = "foo\\bar"; + var argsList = data.Tokenize(SplitChar, EscapeChar); + var enumerable = argsList as string[] ?? argsList.ToArray(); + + Assert.IsTrue(enumerable.Length == 1); } + + private const char SplitChar = ','; + private const char EscapeChar = '\\'; } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/XmlUtilitiesTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/XmlUtilitiesTests.cs index 76cc3772dc..41c4f3c481 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/XmlUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/XmlUtilitiesTests.cs @@ -1,221 +1,214 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.Utilities.UnitTests -{ - using System; - using System.Xml; - using System.Xml.XPath; - - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Xml; +using System.Xml.XPath; - [TestClass] - public class XmlUtilitiesTests - { - #region GetNodeXml tests +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestMethod] - public void GetNodeXmlShouldThrowIfxmlDocumentIsNull() - { - Assert.ThrowsException(() => XmlUtilities.GetNodeXml(null, @"/RunSettings/RunConfiguration")); - } +namespace Microsoft.TestPlatform.Utilities.UnitTests; - [TestMethod] - public void GetNodeXmlShouldThrowIfXPathIsNull() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); +[TestClass] +public class XmlUtilitiesTests +{ + #region GetNodeXml tests - Assert.ThrowsException(() => XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator(), null)); - } + [TestMethod] + public void GetNodeXmlShouldThrowIfxmlDocumentIsNull() + { + Assert.ThrowsException(() => XmlUtilities.GetNodeXml(null!, @"/RunSettings/RunConfiguration")); + } - [TestMethod] - public void GetNodeXmlShouldThrowIfXPathIsInvalid() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + [TestMethod] + public void GetNodeXmlShouldThrowIfXPathIsNull() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - Assert.ThrowsException(() => XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator(), @"Rs\r")); - } + Assert.ThrowsException(() => XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator()!, null!)); + } - [TestMethod] - public void GetNodeXmlShouldReturnNullIfNodeDoesNotExist() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + [TestMethod] + public void GetNodeXmlShouldThrowIfXPathIsInvalid() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - Assert.IsNull(XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator(), @"/RunSettings/RunConfiguration")); - } + Assert.ThrowsException(() => XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator()!, @"Rs\r")); + } - [TestMethod] - public void GetNodeXmlShouldReturnNodeValue() - { - var settingsXml = @"abc"; - var xmlDocument = this.GetXmlDocument(settingsXml); + [TestMethod] + public void GetNodeXmlShouldReturnNullIfNodeDoesNotExist() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - Assert.AreEqual("abc", XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator(), @"/RunSettings/RC")); - } + Assert.IsNull(XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator()!, @"/RunSettings/RunConfiguration")); + } - #endregion + [TestMethod] + public void GetNodeXmlShouldReturnNodeValue() + { + var settingsXml = @"abc"; + var xmlDocument = GetXmlDocument(settingsXml); - #region IsValidNodeXmlValue tests + Assert.AreEqual("abc", XmlUtilities.GetNodeXml(xmlDocument.CreateNavigator()!, @"/RunSettings/RC")); + } - [TestMethod] - public void IsValidNodeXmlValueShouldReturnFalseOnArgumentException() - { - Func validator = (string xml) => - { - Enum.Parse(typeof(Architecture), xml); - return true; - }; + #endregion - Assert.IsFalse(XmlUtilities.IsValidNodeXmlValue("foo", validator)); - } + #region IsValidNodeXmlValue tests - [TestMethod] - public void IsValidNodeXmlValueShouldReturnFalseIfValidatorReturnsFalse() + [TestMethod] + public void IsValidNodeXmlValueShouldReturnFalseOnArgumentException() + { + Func validator = (string xml) => { - Func validator = (string xml) => - { - return false; - }; + Enum.Parse(typeof(Architecture), xml); + return true; + }; - Assert.IsFalse(XmlUtilities.IsValidNodeXmlValue("foo", validator)); - } + Assert.IsFalse(XmlUtilities.IsValidNodeXmlValue("foo", validator)); + } - [TestMethod] - public void IsValidNodeXmlValueShouldReturnTrueIfValidatorReturnsTrue() - { - Func validator = (string xml) => - { - return true; - }; + [TestMethod] + public void IsValidNodeXmlValueShouldReturnFalseIfValidatorReturnsFalse() + { + Func validator = (string xml) => false; - Assert.IsTrue(XmlUtilities.IsValidNodeXmlValue("foo", validator)); - } + Assert.IsFalse(XmlUtilities.IsValidNodeXmlValue("foo", validator)); + } - #endregion + [TestMethod] + public void IsValidNodeXmlValueShouldReturnTrueIfValidatorReturnsTrue() + { + Func validator = (string xml) => true; - #region AppendOrModifyChild tests + Assert.IsTrue(XmlUtilities.IsValidNodeXmlValue("foo", validator)); + } - [TestMethod] - public void AppendOrModifyChildShouldModifyExistingNode() - { - var settingsXml = @"abc"; - var xmlDocument = this.GetXmlDocument(settingsXml); + #endregion - XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", "ab"); + #region AppendOrModifyChild tests - var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); - Assert.IsNotNull(rcxmlDocument); - Assert.AreEqual("ab", rcxmlDocument.InnerXml); - } + [TestMethod] + public void AppendOrModifyChildShouldModifyExistingNode() + { + var settingsXml = @"abc"; + var xmlDocument = GetXmlDocument(settingsXml); - [TestMethod] - public void AppendOrModifyChildShouldAppendANewNode() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", "ab"); - XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", "abc"); + var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); + Assert.IsNotNull(rcxmlDocument); + Assert.AreEqual("ab", rcxmlDocument.InnerXml); + } - var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); - Assert.IsNotNull(rcxmlDocument); - Assert.AreEqual("abc", rcxmlDocument.InnerXml); - } + [TestMethod] + public void AppendOrModifyChildShouldAppendANewNode() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - [TestMethod] - public void AppendOrModifyChildShouldNotModifyExistingXmlIfInnerXmlPassedInIsNull() - { - var settingsXml = @"abc"; - var xmlDocument = this.GetXmlDocument(settingsXml); + XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", "abc"); - XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", null); + var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); + Assert.IsNotNull(rcxmlDocument); + Assert.AreEqual("abc", rcxmlDocument.InnerXml); + } - var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); - Assert.IsNotNull(rcxmlDocument); - Assert.AreEqual("abc", rcxmlDocument.InnerXml); - } + [TestMethod] + public void AppendOrModifyChildShouldNotModifyExistingXmlIfInnerXmlPassedInIsNull() + { + var settingsXml = @"abc"; + var xmlDocument = GetXmlDocument(settingsXml); - [TestMethod] - public void AppendOrModifyChildShouldCreateAnEmptyNewNodeIfInnerXmlPassedInIsNull() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", null); - XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", null); + var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); + Assert.IsNotNull(rcxmlDocument); + Assert.AreEqual("abc", rcxmlDocument.InnerXml); + } - var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); - Assert.IsNotNull(rcxmlDocument); - Assert.AreEqual(string.Empty, rcxmlDocument.InnerXml); - } + [TestMethod] + public void AppendOrModifyChildShouldCreateAnEmptyNewNodeIfInnerXmlPassedInIsNull() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - [TestMethod] - public void AppendOrModifyChildShouldNotModifyIfParentNodeDoesNotExist() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", null); - XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC/RD", "RD", null); + var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); + Assert.IsNotNull(rcxmlDocument); + Assert.AreEqual(string.Empty, rcxmlDocument.InnerXml); + } - Assert.AreEqual(settingsXml, xmlDocument.OuterXml); - } + [TestMethod] + public void AppendOrModifyChildShouldNotModifyIfParentNodeDoesNotExist() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - [TestMethod] - public void AppendOrModifyChildShouldAppendANewNodeWithEscapingSpecialChars() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC/RD", "RD", null); - XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", "a&bd\"e'f"); + Assert.AreEqual(settingsXml, xmlDocument.OuterXml); + } - var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); - Assert.IsNotNull(rcxmlDocument); - Assert.AreEqual("a&b<c>d\"e'f", rcxmlDocument.InnerXml); - Assert.AreEqual("a&bd\"e'f", rcxmlDocument.InnerText); - } + [TestMethod] + public void AppendOrModifyChildShouldAppendANewNodeWithEscapingSpecialChars() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - #endregion + XmlUtilities.AppendOrModifyChild(xmlDocument, @"/RunSettings/RC", "RC", "a&bd\"e'f"); - #region RemoveChildNode tests + var rcxmlDocument = xmlDocument.SelectSingleNode(@"/RunSettings/RC"); + Assert.IsNotNull(rcxmlDocument); + Assert.AreEqual("a&b<c>d\"e'f", rcxmlDocument.InnerXml); + Assert.AreEqual("a&bd\"e'f", rcxmlDocument.InnerText); + } - [TestMethod] - public void RemoveChildNodeShouldNotModifyExistingXmlIfNodeDoesnotExist() - { - var settingsXml = @""; - var xmlDocument = this.GetXmlDocument(settingsXml); + #endregion - XmlUtilities.RemoveChildNode(xmlDocument.CreateNavigator(), @"/RunSettings/RC", "RC"); + #region RemoveChildNode tests - Assert.AreEqual(settingsXml, xmlDocument.OuterXml); - } + [TestMethod] + public void RemoveChildNodeShouldNotModifyExistingXmlIfNodeDoesnotExist() + { + var settingsXml = @""; + var xmlDocument = GetXmlDocument(settingsXml); - [TestMethod] - public void RemoveChildNodeShouldRemoveXmlIfExist() - { - var settingsXml = @"abc"; - var xmlDocument = this.GetXmlDocument(settingsXml); - var navigator = xmlDocument.CreateNavigator(); - navigator.MoveToChild("RunSettings", string.Empty); - XmlUtilities.RemoveChildNode(navigator, @"/RunSettings/RC", "RC"); + XmlUtilities.RemoveChildNode(xmlDocument.CreateNavigator(), @"/RunSettings/RC", "RC"); - Assert.AreEqual(@"", xmlDocument.OuterXml); - } + Assert.AreEqual(settingsXml, xmlDocument.OuterXml); + } - #endregion + [TestMethod] + public void RemoveChildNodeShouldRemoveXmlIfExist() + { + var settingsXml = @"abc"; + var xmlDocument = GetXmlDocument(settingsXml); + var navigator = xmlDocument.CreateNavigator(); + navigator!.MoveToChild("RunSettings", string.Empty); + XmlUtilities.RemoveChildNode(navigator, @"/RunSettings/RC", "RC"); - #region Private Methods + Assert.AreEqual(@"", xmlDocument.OuterXml); + } - private XmlDocument GetXmlDocument(string settingsXml) - { - var doc = new XmlDocument(); - doc.LoadXml(settingsXml); + #endregion - return doc; - } + #region Private Methods - #endregion + private static XmlDocument GetXmlDocument(string settingsXml) + { + var doc = new XmlDocument(); + doc.LoadXml(settingsXml); + + return doc; } + + #endregion } diff --git a/test/SettingsMigrator.UnitTests/MigratorTests.cs b/test/SettingsMigrator.UnitTests/MigratorTests.cs index 4fe25372a7..10dfd8440a 100644 --- a/test/SettingsMigrator.UnitTests/MigratorTests.cs +++ b/test/SettingsMigrator.UnitTests/MigratorTests.cs @@ -1,175 +1,182 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.SettingsMigrator.UnitTests +using System.IO; +using System.Xml; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.SettingsMigrator.UnitTests; + +[TestClass] +public class MigratorTests { - using System.IO; - using System.Xml; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private const string InvalidSettings = ""; + + private const string OldRunSettings = "" + + "" + + "true" + + "" + + "" + + ""; + + private readonly Migrator _migrator; + private readonly string _newRunsettingsPath; + + private string _oldTestsettingsPath; + private string _oldRunsettingsPath; - [TestClass] - public class MigratorTests + public MigratorTests() { - private const string InvalidSettings = ""; - - private const string OldRunSettings = "" + - "" + - "true" + - "" + - "" + - ""; - - private Migrator migrator; - private string newRunsettingsPath; - private string oldTestsettingsPath; - private string oldRunsettingsPath; - - [TestInitialize] - public void TestInit() - { - this.migrator = new Migrator(); - this.newRunsettingsPath = Path.Combine(Path.GetTempPath(), "generatedRunsettings.runsettings"); - this.oldTestsettingsPath = Path.GetFullPath(Path.Combine(".", "oldTestsettings.testsettings")); - this.oldRunsettingsPath = Path.Combine(Path.GetTempPath(), "oldRunsettings.runsettings"); - } + _migrator = new Migrator(); + _newRunsettingsPath = Path.Combine(Path.GetTempPath(), "generatedRunsettings.runsettings"); + _oldTestsettingsPath = Path.GetFullPath(Path.Combine(".", "oldTestsettings.testsettings")); + _oldRunsettingsPath = Path.Combine(Path.GetTempPath(), "oldRunsettings.runsettings"); + } - [TestCleanup] - public void TestCleanup() + [TestCleanup] + public void TestCleanup() + { + if (File.Exists(_newRunsettingsPath)) { - if (File.Exists(this.newRunsettingsPath)) - { - File.Delete(this.newRunsettingsPath); - } + File.Delete(_newRunsettingsPath); } + } - [TestMethod] - public void NonRootedPathIsNotMigrated() - { - this.migrator.Migrate("asda", this.newRunsettingsPath); + [TestMethod] + public void NonRootedPathIsNotMigrated() + { + _migrator.Migrate("asda", _newRunsettingsPath); - Assert.IsFalse(File.Exists(this.newRunsettingsPath), "Run settings should not be generated."); - } + Assert.IsFalse(File.Exists(_newRunsettingsPath), "Run settings should not be generated."); + } - [TestMethod] - public void MigratorGeneratesCorrectRunsettingsForEmbeddedTestSettings() - { - var doc = new XmlDocument(); - doc.LoadXml(OldRunSettings); - var settingsnode = doc.DocumentElement.SelectSingleNode(@"/RunSettings/MSTest/SettingsFile"); - settingsnode.InnerText = this.oldTestsettingsPath; - File.WriteAllText(this.oldRunsettingsPath, doc.InnerXml); + [TestMethod] + public void MigratorGeneratesCorrectRunsettingsForEmbeddedTestSettings() + { + var doc = new XmlDocument(); + doc.LoadXml(OldRunSettings); + Assert.IsNotNull(doc.DocumentElement); + var settingsnode = doc.DocumentElement.SelectSingleNode(@"/RunSettings/MSTest/SettingsFile"); + Assert.IsNotNull(settingsnode); + settingsnode.InnerText = _oldTestsettingsPath; + File.WriteAllText(_oldRunsettingsPath, doc.InnerXml); - this.migrator.Migrate(this.oldRunsettingsPath, this.newRunsettingsPath); + _migrator.Migrate(_oldRunsettingsPath, _newRunsettingsPath); - Validate(this.newRunsettingsPath); + Validate(_newRunsettingsPath); - File.Delete(this.oldRunsettingsPath); - } + File.Delete(_oldRunsettingsPath); + } - [TestMethod] - public void MigratorGeneratesCorrectRunsettingsForEmbeddedTestSettingsOfRelativePath() - { - this.oldRunsettingsPath = Path.GetFullPath(Path.Combine(".", "oldRunSettingsWithEmbeddedSettings.runSEttings")); + [TestMethod] + public void MigratorGeneratesCorrectRunsettingsForEmbeddedTestSettingsOfRelativePath() + { + _oldRunsettingsPath = Path.GetFullPath(Path.Combine(".", "oldRunSettingsWithEmbeddedSettings.runSEttings")); - this.migrator.Migrate(this.oldRunsettingsPath, this.newRunsettingsPath); - Validate(this.newRunsettingsPath); - } + _migrator.Migrate(_oldRunsettingsPath, _newRunsettingsPath); + Validate(_newRunsettingsPath); + } - [TestMethod] - public void MigratorGeneratesCorrectRunsettingsWithDC() - { - this.oldRunsettingsPath = Path.GetFullPath(Path.Combine(".", "oldRunSettingsWithDataCollector.runsettings")); - - this.migrator.Migrate(this.oldRunsettingsPath, this.newRunsettingsPath); - - using (XmlTextReader reader = new XmlTextReader(this.newRunsettingsPath)) - { - reader.Namespaces = false; - var document = new XmlDocument(); - document.Load(reader); - var root = document.DocumentElement; - var dataCollectorNode = root.SelectNodes(@"/RunSettings/DataCollectionRunSettings/DataCollectors/DataCollector"); - Assert.AreEqual(2, dataCollectorNode.Count, "Data collector is missing"); - } - } + [TestMethod] + public void MigratorGeneratesCorrectRunsettingsWithDc() + { + _oldRunsettingsPath = Path.GetFullPath(Path.Combine(".", "oldRunSettingsWithDataCollector.runsettings")); + + _migrator.Migrate(_oldRunsettingsPath, _newRunsettingsPath); + + using XmlTextReader reader = new(_newRunsettingsPath); + reader.Namespaces = false; + var document = new XmlDocument(); + document.Load(reader); + var root = document.DocumentElement; + Assert.IsNotNull(root); + var dataCollectorNode = root.SelectNodes(@"/RunSettings/DataCollectionRunSettings/DataCollectors/DataCollector"); + Assert.IsNotNull(dataCollectorNode); + Assert.AreEqual(2, dataCollectorNode.Count, "Data collector is missing"); + } - [TestMethod] - public void MigratorGeneratesCorrectRunsettingsForTestSettings() - { - this.migrator.Migrate(this.oldTestsettingsPath, this.newRunsettingsPath); + [TestMethod] + public void MigratorGeneratesCorrectRunsettingsForTestSettings() + { + _migrator.Migrate(_oldTestsettingsPath, _newRunsettingsPath); - Validate(this.newRunsettingsPath); - } + Validate(_newRunsettingsPath); + } - [TestMethod] - [ExpectedException(typeof(XmlException))] - public void InvalidSettingsThrowsException() - { - this.oldTestsettingsPath = Path.Combine(Path.GetTempPath(), "oldTestsettings.testsettings"); + [TestMethod] + [ExpectedException(typeof(XmlException))] + public void InvalidSettingsThrowsException() + { + _oldTestsettingsPath = Path.Combine(Path.GetTempPath(), "oldTestsettings.testsettings"); - File.WriteAllText(this.oldTestsettingsPath, InvalidSettings); - File.WriteAllText(this.newRunsettingsPath, string.Empty); + File.WriteAllText(_oldTestsettingsPath, InvalidSettings); + File.WriteAllText(_newRunsettingsPath, string.Empty); - this.migrator.Migrate(this.oldTestsettingsPath, this.newRunsettingsPath); + _migrator.Migrate(_oldTestsettingsPath, _newRunsettingsPath); - File.Delete(this.oldTestsettingsPath); - } + File.Delete(_oldTestsettingsPath); + } - [TestMethod] - [ExpectedException(typeof(DirectoryNotFoundException))] - public void InvalidPathThrowsException() - { - string oldTestsettingsPath = @"X:\generatedRun,settings.runsettings"; + [TestMethod] + // On some systems this throws file not found, on some it throws directory not found, + // I don't know why and it does not matter for the test. As long as it throws. + [ExpectedException(typeof(IOException), AllowDerivedTypes = true)] + public void InvalidPathThrowsException() + { + string oldTestsettingsPath = @"X:\generatedRun,settings.runsettings"; - this.migrator.Migrate(oldTestsettingsPath, this.newRunsettingsPath); - } + _migrator.Migrate(oldTestsettingsPath, _newRunsettingsPath); + } - private static void Validate(string newRunsettingsPath) - { - Assert.IsTrue(File.Exists(newRunsettingsPath), "Run settings should be generated."); + private static void Validate(string newRunsettingsPath) + { + Assert.IsTrue(File.Exists(newRunsettingsPath), "Run settings should be generated."); - using (XmlTextReader reader = new XmlTextReader(newRunsettingsPath)) - { - reader.Namespaces = false; + using XmlTextReader reader = new(newRunsettingsPath); + reader.Namespaces = false; - var document = new XmlDocument(); - document.Load(reader); - var root = document.DocumentElement; + var document = new XmlDocument(); + document.Load(reader); + var root = document.DocumentElement; + Assert.IsNotNull(root); - Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/WebTestRunConfiguration/Browser/Headers/Header"), "There should be a WebTestRunConfiguration node"); - Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings"), "There should be a LegacySettings node"); - Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings/Deployment/DeploymentItem"), "There should be a DeploymentItem node"); + Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/WebTestRunConfiguration/Browser/Headers/Header"), "There should be a WebTestRunConfiguration node"); + Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings"), "There should be a LegacySettings node"); + Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings/Deployment/DeploymentItem"), "There should be a DeploymentItem node"); - var scriptNode = root.SelectSingleNode(@"/RunSettings/LegacySettings/Scripts"); - Assert.IsNotNull(scriptNode, "There should be a WebTestRunConfiguration node"); - Assert.AreEqual(".\\setup.bat", scriptNode.Attributes["setupScript"].Value, "setupScript does not match."); - Assert.AreEqual(".\\cleanup.bat", scriptNode.Attributes["cleanupScript"].Value, "cleanupScript does not match."); + var scriptNode = root.SelectSingleNode(@"/RunSettings/LegacySettings/Scripts"); + Assert.IsNotNull(scriptNode, "There should be a WebTestRunConfiguration node"); + Assert.IsNotNull(scriptNode.Attributes); + Assert.AreEqual(".\\setup.bat", scriptNode.Attributes["setupScript"]!.Value, "setupScript does not match."); + Assert.AreEqual(".\\cleanup.bat", scriptNode.Attributes["cleanupScript"]!.Value, "cleanupScript does not match."); - var forcedLegacyNode = root.SelectSingleNode(@"/RunSettings/MSTest/ForcedLegacyMode"); - Assert.IsNotNull(forcedLegacyNode, "ForcedLegacy node should be present"); - Assert.AreEqual("true", forcedLegacyNode.InnerText, "Forced legacy should be true"); + var forcedLegacyNode = root.SelectSingleNode(@"/RunSettings/MSTest/ForcedLegacyMode"); + Assert.IsNotNull(forcedLegacyNode, "ForcedLegacy node should be present"); + Assert.AreEqual("true", forcedLegacyNode.InnerText, "Forced legacy should be true"); - var executionNode = root.SelectSingleNode(@" / RunSettings/LegacySettings/Execution"); - Assert.IsNotNull(executionNode, "There should be a Execution node"); - Assert.AreEqual("2", executionNode.Attributes["parallelTestCount"].Value, "parallelTestCount value does not match."); - Assert.AreEqual("MSIL", executionNode.Attributes["hostProcessPlatform"].Value, "hostProcessPlatform value does not match."); + var executionNode = root.SelectSingleNode(@" / RunSettings/LegacySettings/Execution"); + Assert.IsNotNull(executionNode, "There should be a Execution node"); + Assert.IsNotNull(executionNode.Attributes); + Assert.AreEqual("2", executionNode.Attributes["parallelTestCount"]!.Value, "parallelTestCount value does not match."); + Assert.AreEqual("MSIL", executionNode.Attributes["hostProcessPlatform"]!.Value, "hostProcessPlatform value does not match."); - Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings/Execution/Hosts"), "There should be a Hosts node"); + Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings/Execution/Hosts"), "There should be a Hosts node"); - var timeoutNode = root.SelectSingleNode(@"/RunSettings/LegacySettings/Execution/Timeouts"); - Assert.IsNotNull(timeoutNode, "There should be a Timeouts node"); - Assert.AreEqual("120000", timeoutNode.Attributes["testTimeout"].Value, "testTimeout value does not match."); + var timeoutNode = root.SelectSingleNode(@"/RunSettings/LegacySettings/Execution/Timeouts"); + Assert.IsNotNull(timeoutNode, "There should be a Timeouts node"); + Assert.IsNotNull(timeoutNode.Attributes); + Assert.AreEqual("120000", timeoutNode.Attributes["testTimeout"]!.Value, "testTimeout value does not match."); - Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings/Execution/TestTypeSpecific/UnitTestRunConfig/AssemblyResolution/TestDirectory"), "There should be a Assembly resolution node"); + Assert.IsNotNull(root.SelectSingleNode(@"/RunSettings/LegacySettings/Execution/TestTypeSpecific/UnitTestRunConfig/AssemblyResolution/TestDirectory"), "There should be a Assembly resolution node"); - var testSessionTimeoutNode = root.SelectSingleNode(@"/RunSettings/RunConfiguration/TestSessionTimeout"); - Assert.IsNotNull(testSessionTimeoutNode, "There should be a TestSessionTimeout node"); - Assert.AreEqual("60000", testSessionTimeoutNode.InnerText, "Timeout value does not match."); + var testSessionTimeoutNode = root.SelectSingleNode(@"/RunSettings/RunConfiguration/TestSessionTimeout"); + Assert.IsNotNull(testSessionTimeoutNode, "There should be a TestSessionTimeout node"); + Assert.AreEqual("60000", testSessionTimeoutNode.InnerText, "Timeout value does not match."); - var dataCollectorNode = root.SelectSingleNode(@"/RunSettings/DataCollectionRunSettings/DataCollectors/DataCollector"); - Assert.IsNotNull(dataCollectorNode, "There should be a DataCollector node"); - Assert.AreEqual("Event Log", dataCollectorNode.Attributes["friendlyName"].Value, "Data collector does not match."); - } - } + var dataCollectorNode = root.SelectSingleNode(@"/RunSettings/DataCollectionRunSettings/DataCollectors/DataCollector"); + Assert.IsNotNull(dataCollectorNode, "There should be a DataCollector node"); + Assert.IsNotNull(dataCollectorNode.Attributes); + Assert.AreEqual("Event Log", dataCollectorNode.Attributes["friendlyName"]!.Value, "Data collector does not match."); } } diff --git a/test/SettingsMigrator.UnitTests/PathResolverTests.cs b/test/SettingsMigrator.UnitTests/PathResolverTests.cs index 9acd635236..678865ddd4 100644 --- a/test/SettingsMigrator.UnitTests/PathResolverTests.cs +++ b/test/SettingsMigrator.UnitTests/PathResolverTests.cs @@ -1,75 +1,74 @@ -// Copyright(c) Microsoft Corporation.All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.SettingsMigrator.UnitTests +using System; +using System.Globalization; +using System.IO; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.SettingsMigrator.UnitTests; + +[TestClass] +public class PathResolverTests { - using System; - using System.Globalization; - using System.IO; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly PathResolver _pathResolver; - [TestClass] - public class PathResolverTests + public PathResolverTests() { - private PathResolver pathResolver; - - [TestInitialize] - public void TestInit() - { - this.pathResolver = new PathResolver(); - } + _pathResolver = new PathResolver(); + } - [TestMethod] - public void PathResolverShouldReturnNullForEmptyArguments() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { }); - Assert.IsNull(newFilePath, "Empty arguments should return null"); - } + [TestMethod] + public void PathResolverShouldReturnNullForEmptyArguments() + { + var newFilePath = _pathResolver.GetTargetPath([]); + Assert.IsNull(newFilePath, "Empty arguments should return null"); + } - [TestMethod] - public void PathResolverShouldReturnNullForInvalidArguments() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { "asd", "asd", "asd" }); - Assert.IsNull(newFilePath, "Invalid arguments should return null"); - } + [TestMethod] + public void PathResolverShouldReturnNullForInvalidArguments() + { + var newFilePath = _pathResolver.GetTargetPath(["asd", "asd", "asd"]); + Assert.IsNull(newFilePath, "Invalid arguments should return null"); + } - [TestMethod] - public void PathResolverShouldReturnNullForRelativePaths() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { "asd.testsettings" }); - Assert.IsNull(newFilePath, "Relative paths should return null"); - } + [TestMethod] + public void PathResolverShouldReturnNullForRelativePaths() + { + var newFilePath = _pathResolver.GetTargetPath(["asd.testsettings"]); + Assert.IsNull(newFilePath, "Relative paths should return null"); + } - [TestMethod] - public void PathResolverShouldReturnNullForRelativePathsWithTwoArguments() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { "asd.Testsettings", "C:\\asd.runsettings" }); - Assert.IsNull(newFilePath, "Relative paths should return null"); - } + [TestMethod] + public void PathResolverShouldReturnNullForRelativePathsWithTwoArguments() + { + var newFilePath = _pathResolver.GetTargetPath(["asd.Testsettings", "C:\\asd.runsettings"]); + Assert.IsNull(newFilePath, "Relative paths should return null"); + } - [TestMethod] - public void PathResolverShouldNotReturnNullForPathsWithExtensionInCapitals() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { "C:\\asd.TestSEettings", "C:\\asd.RuNSettings" }); - Assert.IsNotNull(newFilePath, "Relative paths should not return null"); - } + [TestMethod] + public void PathResolverShouldNotReturnNullForPathsWithExtensionInCapitals() + { + var newFilePath = _pathResolver.GetTargetPath(["C:\\asd.TestSEettings", "C:\\asd.RuNSettings"]); + Assert.IsNotNull(newFilePath, "Relative paths should not return null"); + } - [TestMethod] - public void PathResolverShouldReturnNullForRelativePathsForRunsettings() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { "C:\\asd.testsettings", "asd.runsettings" }); - Assert.IsNull(newFilePath, "Relative paths should return null"); - } + [TestMethod] + public void PathResolverShouldReturnNullForRelativePathsForRunsettings() + { + var newFilePath = _pathResolver.GetTargetPath(["C:\\asd.testsettings", "asd.runsettings"]); + Assert.IsNull(newFilePath, "Relative paths should return null"); + } - [TestMethod] - public void PathResolverShouldReturnRunsettingsPathOfSameLocationAsTestSettings() - { - var newFilePath = this.pathResolver.GetTargetPath(new string[] { "C:\\asd.testsettings" }); - Assert.IsNotNull(newFilePath, "File path should not be null."); - Assert.IsTrue(string.Equals(Path.GetExtension(newFilePath), ".runsettings"), "File path should be .runsettings"); - Assert.IsTrue(newFilePath.Contains("C:\\asd_"), "File should be of same name as testsettings"); - var time = newFilePath.Substring(7, 19); - Assert.IsTrue(DateTime.TryParseExact(time, "MM-dd-yyyy_hh-mm-ss", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime date), "File name should have datetime"); - } + [TestMethod] + public void PathResolverShouldReturnRunsettingsPathOfSameLocationAsTestSettings() + { + var newFilePath = _pathResolver.GetTargetPath(["C:\\asd.testsettings"]); + Assert.IsNotNull(newFilePath, "File path should not be null."); + Assert.IsTrue(string.Equals(Path.GetExtension(newFilePath), ".runsettings"), "File path should be .runsettings"); + Assert.IsTrue(newFilePath!.Contains("C:\\asd_"), "File should be of same name as testsettings"); + var time = newFilePath.Substring(7, 19); + Assert.IsTrue(DateTime.TryParseExact(time, "MM-dd-yyyy_hh-mm-ss", CultureInfo.CurrentCulture, DateTimeStyles.None, out _), "File name should have datetime"); } -} \ No newline at end of file +} diff --git a/test/SettingsMigrator.UnitTests/ProgramTests.cs b/test/SettingsMigrator.UnitTests/ProgramTests.cs index 6ce0729e71..9e4ef90675 100644 --- a/test/SettingsMigrator.UnitTests/ProgramTests.cs +++ b/test/SettingsMigrator.UnitTests/ProgramTests.cs @@ -1,25 +1,24 @@ -// Copyright(c) Microsoft Corporation.All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.SettingsMigrator.UnitTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.SettingsMigrator.UnitTests; - [TestClass] - public class ProgramTests +[TestClass] +public class ProgramTests +{ + [TestMethod] + public void MoreThanTwoArgumentsShouldNotBeAccepted() { - [TestMethod] - public void MoreThanTwoArgumentsShouldNotBeAccepted() - { - int returnCode = Program.Main(new string[] { "asd", "asd", "asd" }); - Assert.AreEqual(1, returnCode, "More than 2 arguments should not be accepted."); - } + int returnCode = Program.Main(["asd", "asd", "asd"]); + Assert.AreEqual(1, returnCode, "More than 2 arguments should not be accepted."); + } - [TestMethod] - public void NoArgumentsShouldNotBeAccepted() - { - int returnCode = Program.Main(new string[] { }); - Assert.AreEqual(1, returnCode, "No arguments should not be accepted."); - } + [TestMethod] + public void NoArgumentsShouldNotBeAccepted() + { + int returnCode = Program.Main([]); + Assert.AreEqual(1, returnCode, "No arguments should not be accepted."); } -} \ No newline at end of file +} diff --git a/test/SettingsMigrator.UnitTests/SettingsMigrator.UnitTests.csproj b/test/SettingsMigrator.UnitTests/SettingsMigrator.UnitTests.csproj index 0c0c7f839c..03f7b9ec40 100644 --- a/test/SettingsMigrator.UnitTests/SettingsMigrator.UnitTests.csproj +++ b/test/SettingsMigrator.UnitTests/SettingsMigrator.UnitTests.csproj @@ -1,31 +1,28 @@ - + - ..\..\ true true + false + Exe - + - net451 - true - true + + net48 SettingsMigrator.UnitTests + + + - - + + - - - - - - - - + + diff --git a/test/TestAssets/AppDomainGetAssembliesTestProject/AppDomainGetAssembliesTestProject.csproj b/test/TestAssets/AppDomainGetAssembliesTestProject/AppDomainGetAssembliesTestProject.csproj index f156940b22..f771066c14 100644 --- a/test/TestAssets/AppDomainGetAssembliesTestProject/AppDomainGetAssembliesTestProject.csproj +++ b/test/TestAssets/AppDomainGetAssembliesTestProject/AppDomainGetAssembliesTestProject.csproj @@ -1,17 +1,14 @@ - + - netcoreapp2.1;net451 - netcoreapp3.1 - false - + $(NetFrameworkMinimum);$(NetCoreAppMinimum) false - - - + + + diff --git a/test/TestAssets/AppDomainGetAssembliesTestProject/UnitTest1.cs b/test/TestAssets/AppDomainGetAssembliesTestProject/UnitTest1.cs index 0cfa179995..d5a15789c5 100644 --- a/test/TestAssets/AppDomainGetAssembliesTestProject/UnitTest1.cs +++ b/test/TestAssets/AppDomainGetAssembliesTestProject/UnitTest1.cs @@ -1,24 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System; -using System.Linq; -namespace AppDomainGetAssembliesTestProject +namespace AppDomainGetAssembliesTestProject; + +[TestClass] +public class UnitTest1 { - [TestClass] - public class UnitTest1 + [TestMethod] + public void TestMethod1() { - [TestMethod] - public void TestMethod1() - { - // https://github.com/microsoft/vstest/issues/2008 - // GetAssemblies adds datacollectors to test host appdomain which was failing in the above issue + // https://github.com/microsoft/vstest/issues/2008 + // GetAssemblies adds datacollectors to test host appdomain which was failing in the above issue - var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); - foreach(var assembly in allAssemblies) - { - var typeInfo = assembly.GetTypes(); - } + foreach (var assembly in allAssemblies) + { + var _ = assembly.GetTypes(); } } } diff --git a/test/TestAssets/ArchitectureSwitch/ArchitectureSwitch.csproj b/test/TestAssets/ArchitectureSwitch/ArchitectureSwitch.csproj new file mode 100644 index 0000000000..ca790a13f9 --- /dev/null +++ b/test/TestAssets/ArchitectureSwitch/ArchitectureSwitch.csproj @@ -0,0 +1,12 @@ + + + net8.0;net9.0 + net8.0;net9.0 + false + + + + + + + diff --git a/test/TestAssets/ArchitectureSwitch/UnitTest1.cs b/test/TestAssets/ArchitectureSwitch/UnitTest1.cs new file mode 100644 index 0000000000..e298ffc99d --- /dev/null +++ b/test/TestAssets/ArchitectureSwitch/UnitTest1.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections; +using System.Runtime.InteropServices; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +#pragma warning disable IDE0161 // Convert to file-scoped namespace +namespace TestProjectNetcore +#pragma warning restore IDE0161 // Convert to file-scoped namespace +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + foreach (DictionaryEntry envVar in Environment.GetEnvironmentVariables()) + { + if (envVar.Key.ToString().StartsWith("DOTNET_ROOT")) + { + Console.WriteLine($"{envVar.Key}: {envVar.Value}"); + } + } + + Console.WriteLine("OSArchitecture: " + RuntimeInformation.OSArchitecture.ToString()); + Console.WriteLine("ProcessArchitecture: " + RuntimeInformation.ProcessArchitecture.ToString()); + Console.WriteLine("Runtime location: " + typeof(object).Assembly.Location); + Assert.IsTrue(false); + } + } +} \ No newline at end of file diff --git a/test/TestAssets/AttachmentProcessorDataCollector/AttachmentProcessorDataCollector.csproj b/test/TestAssets/AttachmentProcessorDataCollector/AttachmentProcessorDataCollector.csproj new file mode 100644 index 0000000000..8d1d9edec7 --- /dev/null +++ b/test/TestAssets/AttachmentProcessorDataCollector/AttachmentProcessorDataCollector.csproj @@ -0,0 +1,12 @@ + + + netstandard2.0 + enable + false + + + + + + + diff --git a/test/TestAssets/AttachmentProcessorDataCollector/SampleDataCollector.cs b/test/TestAssets/AttachmentProcessorDataCollector/SampleDataCollector.cs new file mode 100644 index 0000000000..dfd265ccfd --- /dev/null +++ b/test/TestAssets/AttachmentProcessorDataCollector/SampleDataCollector.cs @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace AttachmentProcessorDataCollector; + +internal class ExtensionInfo +{ + public const string ExtensionType = "DataCollector"; + public const string ExtensionIdentifier = "my://sample/datacollector"; +} + +[DataCollectorFriendlyName("SampleDataCollector")] +[DataCollectorTypeUri(ExtensionInfo.ExtensionIdentifier)] +[DataCollectorAttachmentProcessor(typeof(SampleDataCollectorAttachmentProcessor))] +public class SampleDataCollectorV2 : SampleDataCollectorV1 { } + +[DataCollectorFriendlyName("SampleDataCollector")] +[DataCollectorTypeUri(ExtensionInfo.ExtensionIdentifier)] +public class SampleDataCollectorV1 : DataCollector +{ + private DataCollectionSink? _dataCollectionSink; + private DataCollectionEnvironmentContext? _context; + private readonly string _tempDirectoryPath = Path.GetTempPath(); + + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + events.SessionEnd += SessionEnded_Handler; + _dataCollectionSink = dataSink; + _context = environmentContext; + } + + private void SessionEnded_Handler(object? sender, SessionEndEventArgs e) + { + string tmpAttachment = Path.Combine(_tempDirectoryPath, Guid.NewGuid().ToString("N"), "DataCollectorAttachmentProcessor_1.txt"); + Directory.CreateDirectory(Path.GetDirectoryName(tmpAttachment)!); + File.WriteAllText(tmpAttachment, $"SessionEnded_Handler_{Guid.NewGuid():N}"); + _dataCollectionSink!.SendFileAsync(_context!.SessionDataCollectionContext, tmpAttachment, true); + } +} + +public class SampleDataCollectorAttachmentProcessor : IDataCollectorAttachmentProcessor +{ + public bool SupportsIncrementalProcessing => true; + + public IEnumerable GetExtensionUris() + => new List() { new Uri(ExtensionInfo.ExtensionIdentifier) }; + + public Task> ProcessAttachmentSetsAsync(XmlElement configurationElement, ICollection attachments, IProgress progressReporter, IMessageLogger logger, CancellationToken cancellationToken) + { + string finalFileName = configurationElement.FirstChild!.InnerText; + StringBuilder stringBuilder = new(); + string? finalFolder = null; + foreach (var attachmentSet in attachments) + { + foreach (var attachment in attachmentSet.Attachments.OrderBy(f => f.Uri.AbsolutePath)) + { + finalFolder ??= Path.GetDirectoryName(attachment.Uri.AbsolutePath); + + stringBuilder.AppendLine(File.ReadAllText(attachment.Uri.AbsolutePath).Trim()); + } + } + + File.WriteAllText(Path.Combine(finalFolder!, finalFileName), stringBuilder.ToString()); + + List mergedAttachment = new(); + var mergedAttachmentSet = new AttachmentSet(new Uri("my://sample/datacollector"), "SampleDataCollector"); + mergedAttachmentSet.Attachments.Add(UriDataAttachment.CreateFrom(Path.Combine(finalFolder!, finalFileName), string.Empty)); + mergedAttachment.Add(mergedAttachmentSet); + + return Task.FromResult((ICollection)new Collection(mergedAttachment)); + } +} diff --git a/test/TestAssets/AttachmentProcessorDataCollector/TestExtensionTypesAttribute.cs b/test/TestAssets/AttachmentProcessorDataCollector/TestExtensionTypesAttribute.cs new file mode 100644 index 0000000000..995d752bad --- /dev/null +++ b/test/TestAssets/AttachmentProcessorDataCollector/TestExtensionTypesAttribute.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +using AttachmentProcessorDataCollector; + +using Microsoft.VisualStudio.TestPlatform; + +[assembly: TestExtensionTypes(typeof(SampleDataCollectorV1))] +[assembly: TestExtensionTypesV2(ExtensionInfo.ExtensionType, ExtensionInfo.ExtensionIdentifier, typeof(SampleDataCollectorV1), 1, "futureUnused")] +[assembly: TestExtensionTypesV2(ExtensionInfo.ExtensionType, ExtensionInfo.ExtensionIdentifier, typeof(SampleDataCollectorV2), 2)] + +namespace Microsoft.VisualStudio.TestPlatform; + +[AttributeUsage(AttributeTargets.Assembly, Inherited = false, AllowMultiple = false)] +internal sealed class TestExtensionTypesAttribute : Attribute +{ + public TestExtensionTypesAttribute(params Type[] types) + { + Types = types; + } + + public Type[] Types { get; } +} + +[AttributeUsage(AttributeTargets.Assembly, Inherited = false, AllowMultiple = true)] +internal sealed class TestExtensionTypesV2Attribute : Attribute +{ + public string ExtensionType { get; } + public string ExtensionIdentifier { get; } + public Type ExtensionImplementation { get; } + public int Version { get; } + + public TestExtensionTypesV2Attribute(string extensionType, string extensionIdentifier, Type extensionImplementation, + int version, string? _ = null) + { + ExtensionType = extensionType; + ExtensionIdentifier = extensionIdentifier; + ExtensionImplementation = extensionImplementation; + Version = version; + } +} diff --git a/test/TestAssets/BlameUnitTestProject/BlameUnitTestProject.csproj b/test/TestAssets/BlameUnitTestProject/BlameUnitTestProject.csproj index 7857fd0c9d..cdefdc3c6f 100644 --- a/test/TestAssets/BlameUnitTestProject/BlameUnitTestProject.csproj +++ b/test/TestAssets/BlameUnitTestProject/BlameUnitTestProject.csproj @@ -1,22 +1,24 @@ - + - ..\..\..\ true true - - - BlameUnitTestProject - netcoreapp2.1;net451 + $(NetFrameworkMinimum);$(NetCoreAppMinimum) Exe + + + + + + - + diff --git a/test/TestAssets/BlameUnitTestProject/Program.cs b/test/TestAssets/BlameUnitTestProject/Program.cs deleted file mode 100644 index 8cd953b668..0000000000 --- a/test/TestAssets/BlameUnitTestProject/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace BlameUnitTestProject -{ - public class Program - { - public static void Main(string[] args) - { - - } - } -} diff --git a/test/TestAssets/BlameUnitTestProject/UnitTest1.cs b/test/TestAssets/BlameUnitTestProject/UnitTest1.cs index 9e8f7c5f33..52d02f72fe 100644 --- a/test/TestAssets/BlameUnitTestProject/UnitTest1.cs +++ b/test/TestAssets/BlameUnitTestProject/UnitTest1.cs @@ -1,11 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace BlameUnitTestProject -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using System; +namespace BlameUnitTestProject +{ [TestClass] public class UnitTest1 { diff --git a/test/TestAssets/CILProject/CILProject.proj b/test/TestAssets/CILProject/CILProject.proj index cefbd5f276..294c781c9a 100644 --- a/test/TestAssets/CILProject/CILProject.proj +++ b/test/TestAssets/CILProject/CILProject.proj @@ -1,16 +1,14 @@ - ..\..\..\ $(TP_PACKAGES_DIR)\ - $(TestPlatformRoot)\packages\ + $(RepoRoot).packages\ - - net451 + $(NetFrameworkMinimum) bin\$(Configuration) true false @@ -39,6 +37,10 @@ + + + + @@ -65,4 +67,4 @@ - \ No newline at end of file + diff --git a/test/TestAssets/CILProject/OrphanMethod.il b/test/TestAssets/CILProject/OrphanMethod.il index e13ddf6858..d7d9d1f9d5 100644 --- a/test/TestAssets/CILProject/OrphanMethod.il +++ b/test/TestAssets/CILProject/OrphanMethod.il @@ -2,24 +2,43 @@ .assembly extern mscorlib {} .assembly extern System.Core {} -.method static public int32 Add(int32 x, int32 y) cil managed +.class public CleanNamespaceName.ClassName { - .maxstack 2 + .method static public int32 Add(int32 x, int32 y) cil managed + { + .maxstack 2 - ldarg.0 - ldarg.1 - add - ret -} + ldarg.0 + ldarg.1 + add + ret + } -.method static public int32 'An awesome method to add 𝓧➕𝓨'(int32 '𝓧', int32 '𝓨') cil managed -{ - .maxstack 2 + .method static public int32 'An awesome method to add 𝓧➕𝓨'(int32 '𝓧', int32 '𝓨') cil managed + { + .maxstack 2 + + ldarg.0 + ldarg.1 + add + ret + } + + // has ' and no spaces, e.g. coming from F# method ``don't`` + .method static public void 'don\'t'() cil managed + { + .maxstack 1 + + ret + } - ldarg.0 - ldarg.1 - add - ret + // has ' and a space, e.g. coming from F# method ``don't pass`` + .method static public void 'don\'t pass'() cil managed + { + .maxstack 1 + + ret + } } .class public CleanNamespaceName.SecondLevel.'𝐌𝐲 𝗮𝘄𝗲𝘀𝗼𝗺𝗲 𝘤𝘭𝘢𝘴𝘴 𝘢𝘯 𝒊𝒏𝒂𝒄𝒄𝒆𝒔𝒔𝒊𝒃𝒍𝒆 𝙣𝙖𝙢𝙚 😭' diff --git a/test/TestAssets/CPPSimpleTestProject/Microsoft.TestPlatform.Asset.NativeCPP.nuspec b/test/TestAssets/CPPSimpleTestProject/Microsoft.TestPlatform.Asset.NativeCPP.nuspec index b2df3444ec..76685c8231 100644 --- a/test/TestAssets/CPPSimpleTestProject/Microsoft.TestPlatform.Asset.NativeCPP.nuspec +++ b/test/TestAssets/CPPSimpleTestProject/Microsoft.TestPlatform.Asset.NativeCPP.nuspec @@ -7,7 +7,7 @@ Microsoft Microsoft false - LICENSE_NET.txt + LICENSE_MIT.txt http://go.microsoft.com/fwlink/?LinkID=288859 MSDia typelib for reading debug symbols from managed code. Copyright © Microsoft Corporation @@ -17,7 +17,7 @@ - + diff --git a/test/TestAssets/CUITTestProject/CUITTestProject.csproj b/test/TestAssets/CUITTestProject/CUITTestProject.csproj deleted file mode 100644 index d4f7755a51..0000000000 --- a/test/TestAssets/CUITTestProject/CUITTestProject.csproj +++ /dev/null @@ -1,51 +0,0 @@ - - - - - ..\..\..\ - true - true - - - - - - - CUITTestProject - net451 - Exe - - - - - ..\..\..\packages\microsoft.visualstudio.cuit\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll - - - ..\..\..\packages\microsoft.visualstudio.qualitytools\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll - - - ..\..\..\packages\microsoft.visualstudio.cuit\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.TestTools.UITest.Common.dll - - - ..\..\..\packages\microsoft.visualstudio.cuit\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.TestTools.UITest.Extension.dll - - - ..\..\..\packages\microsoft.visualstudio.cuit\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.TestTools.UITesting.dll - - - - - - - - $(TestPlatformExternalsVersion) - - - $(TestPlatformExternalsVersion) - - - - - - - diff --git a/test/TestAssets/CUITTestProject/CodedUITest1.cs b/test/TestAssets/CUITTestProject/CodedUITest1.cs deleted file mode 100644 index ffefca4985..0000000000 --- a/test/TestAssets/CUITTestProject/CodedUITest1.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace CodedUITestProject -{ - using System; - using System.Collections.Generic; - using System.Text.RegularExpressions; - using System.Windows.Input; - using System.Drawing; - using Microsoft.VisualStudio.TestTools.UITesting; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestTools.UITest.Extension; - - [CodedUITest] - public class CodedUITestProject - { - [TestMethod] - public void CodedUITestMethod1() - { - UITestControl.Desktop.DrawHighlight(); - } - } -} diff --git a/test/TestAssets/CodeCoverageTest/CodeCoverageTest.csproj b/test/TestAssets/CodeCoverageTest/CodeCoverageTest.csproj index 17d4ea6f56..549fb66abc 100644 --- a/test/TestAssets/CodeCoverageTest/CodeCoverageTest.csproj +++ b/test/TestAssets/CodeCoverageTest/CodeCoverageTest.csproj @@ -1,27 +1,23 @@ - + - - CodeCoverageTest - netcoreapp2.1;net451 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) - + - $(MSTestFrameworkVersion) + $(MSTestTestFrameworkVersion) - $(MSTestAdapterVersion) + $(MSTestTestAdapterVersion) - $(NETTestSdkVersion) + $(PackageVersion) - + diff --git a/test/TestAssets/CodeCoverageTest/Logic.cs b/test/TestAssets/CodeCoverageTest/Logic.cs index a6481b04af..cb2f7532a2 100644 --- a/test/TestAssets/CodeCoverageTest/Logic.cs +++ b/test/TestAssets/CodeCoverageTest/Logic.cs @@ -1,8 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. namespace CodeCoverageTest { diff --git a/test/TestAssets/CodeCoverageTest/UnitTest1.cs b/test/TestAssets/CodeCoverageTest/UnitTest1.cs index 071d4dfe93..6213c4c3ec 100644 --- a/test/TestAssets/CodeCoverageTest/UnitTest1.cs +++ b/test/TestAssets/CodeCoverageTest/UnitTest1.cs @@ -1,4 +1,6 @@ -using System; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; namespace CodeCoverageTest @@ -6,33 +8,35 @@ namespace CodeCoverageTest [TestClass] public class UnitTest1 { - private Logic logic; + private readonly Logic _logic; public UnitTest1() { - this.logic = new Logic(); + _logic = new Logic(); } [TestMethod] public void TestAbs() { - Assert.AreEqual(logic.Abs(0), 0); - Assert.AreEqual(logic.Abs(-5), 5); - Assert.AreEqual(logic.Abs(7), 7); + Assert.AreEqual(_logic.Abs(0), 0); + Assert.AreEqual(_logic.Abs(-5), 5); + Assert.AreEqual(_logic.Abs(7), 7); } [TestMethod] public void TestSign() { - Assert.AreEqual(logic.Sign(0), 0); - Assert.AreEqual(logic.Sign(-5), -1); - Assert.AreEqual(logic.Sign(7), 1); + Assert.AreEqual(_logic.Sign(0), 0); + Assert.AreEqual(_logic.Sign(-5), -1); + Assert.AreEqual(_logic.Sign(7), 1); } [TestMethod] +#pragma warning disable IDE1006 // Naming Styles public void __CxxPureMSILEntry_Test() +#pragma warning restore IDE1006 // Naming Styles { - Assert.AreEqual(logic.Abs(0), 0); + Assert.AreEqual(_logic.Abs(0), 0); } } } diff --git a/test/TestAssets/CompatTestExtension/Properties/AssemblyInfo.cs b/test/TestAssets/CompatTestExtension/Properties/AssemblyInfo.cs index 5cf30251d6..7c49e6ed22 100644 --- a/test/TestAssets/CompatTestExtension/Properties/AssemblyInfo.cs +++ b/test/TestAssets/CompatTestExtension/Properties/AssemblyInfo.cs @@ -13,7 +13,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CompatTestExtension")] -[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/test/TestAssets/CompatTestProject/Properties/AssemblyInfo.cs b/test/TestAssets/CompatTestProject/Properties/AssemblyInfo.cs index 8aae766cd9..d4655ba825 100644 --- a/test/TestAssets/CompatTestProject/Properties/AssemblyInfo.cs +++ b/test/TestAssets/CompatTestProject/Properties/AssemblyInfo.cs @@ -13,7 +13,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("SampleUnitTestProject")] -[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/test/TestAssets/ConsoleManagedApp/ConsoleManagedApp.csproj b/test/TestAssets/ConsoleManagedApp/ConsoleManagedApp.csproj index 5a7cfc1b43..a2788b9408 100644 --- a/test/TestAssets/ConsoleManagedApp/ConsoleManagedApp.csproj +++ b/test/TestAssets/ConsoleManagedApp/ConsoleManagedApp.csproj @@ -1,13 +1,9 @@ - - - + ConsoleManagedApp - netcoreapp2.1;net451 + $(NetFrameworkMinimum);$(NetCoreAppMinimum) Exe - netcoreapp3.1 - false diff --git a/test/TestAssets/ConsoleManagedApp/Program.cs b/test/TestAssets/ConsoleManagedApp/Program.cs index 247024f0a0..566447dfac 100644 --- a/test/TestAssets/ConsoleManagedApp/Program.cs +++ b/test/TestAssets/ConsoleManagedApp/Program.cs @@ -1,10 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System; namespace ConsoleManagedApp { class Program { - static void Main(string[] args) + static void Main() { Console.WriteLine("Hello World!"); } diff --git a/test/TestAssets/ConsoleRunners/ConsoleRunners.csproj b/test/TestAssets/ConsoleRunners/ConsoleRunners.csproj index 2a49271788..b64c2b099b 100644 --- a/test/TestAssets/ConsoleRunners/ConsoleRunners.csproj +++ b/test/TestAssets/ConsoleRunners/ConsoleRunners.csproj @@ -1,10 +1,7 @@ - - - + - netcoreapp2.1;net452 - netcoreapp3.1 + $(NetFrameworkMinimum);$(NetCoreAppMinimum) false diff --git a/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj b/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj index 6aaaa6026c..15cc3f0e8c 100644 --- a/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj +++ b/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj @@ -1,18 +1,15 @@ - - - netcoreapp2.1 - netcoreapp3.1 + $(NetCoreAppMinimum) false - + - \ No newline at end of file + diff --git a/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs b/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs index 7183e4941d..4f0f2868f9 100644 --- a/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs +++ b/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Xunit; namespace CoverletCoverageTestProject diff --git a/test/TestAssets/CrashingOnDebugAssertTestProject/CrashingOnDebugAssertTestProject.csproj b/test/TestAssets/CrashingOnDebugAssertTestProject/CrashingOnDebugAssertTestProject.csproj index 722ad2858e..ab41561921 100644 Binary files a/test/TestAssets/CrashingOnDebugAssertTestProject/CrashingOnDebugAssertTestProject.csproj and b/test/TestAssets/CrashingOnDebugAssertTestProject/CrashingOnDebugAssertTestProject.csproj differ diff --git a/test/TestAssets/CrashingOnDebugAssertTestProject/DebugTests.cs b/test/TestAssets/CrashingOnDebugAssertTestProject/DebugTests.cs index 52d252f1aa..f512bf7a13 100644 --- a/test/TestAssets/CrashingOnDebugAssertTestProject/DebugTests.cs +++ b/test/TestAssets/CrashingOnDebugAssertTestProject/DebugTests.cs @@ -1,5 +1,8 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System.Diagnostics; -using Microsoft.VisualStudio.TestPlatform.ObjectModel; + using Microsoft.VisualStudio.TestTools.UnitTesting; namespace CrashingOnDebugAssertTestProject diff --git a/test/TestAssets/Directory.Build.props b/test/TestAssets/Directory.Build.props new file mode 100644 index 0000000000..5e3b60555a --- /dev/null +++ b/test/TestAssets/Directory.Build.props @@ -0,0 +1,32 @@ + + + + + $(MSBuildThisFileDirectory)../../ + $(RepoRoot)artifacts/bin/TestAssets/$(MSBuildProjectName)/ + $(RepoRoot)artifacts/obj/TestAssets/$(MSBuildProjectName)/ + + + + + $(NoWarn); + + MSB3270; + + NETSDK1138; + + NU1603 + + + + + + net462 + net8.0 + Latest + + + + diff --git a/test/TestAssets/Directory.Build.targets b/test/TestAssets/Directory.Build.targets new file mode 100644 index 0000000000..fb8841991d --- /dev/null +++ b/test/TestAssets/Directory.Build.targets @@ -0,0 +1,6 @@ + + + + diff --git a/test/TestAssets/DisableAppdomainTest1/DisableAppdomainTest1.csproj b/test/TestAssets/DisableAppdomainTest1/DisableAppdomainTest1.csproj index 78f8ba77c7..512e92b4e6 100644 --- a/test/TestAssets/DisableAppdomainTest1/DisableAppdomainTest1.csproj +++ b/test/TestAssets/DisableAppdomainTest1/DisableAppdomainTest1.csproj @@ -1,30 +1,33 @@ - + - + - ..\..\..\ true true - - - DisableAppdomainTest1 - net451 + $(NetFrameworkMinimum) Exe - + + + + + + + + - + diff --git a/test/TestAssets/DisableAppdomainTest1/UnitTest1.cs b/test/TestAssets/DisableAppdomainTest1/UnitTest1.cs index 09a13aa6cb..98e074e67d 100644 --- a/test/TestAssets/DisableAppdomainTest1/UnitTest1.cs +++ b/test/TestAssets/DisableAppdomainTest1/UnitTest1.cs @@ -1,30 +1,31 @@ -using System; -using System.Diagnostics; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.IO; -using System.Threading; + using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace UnitTestProject1 +namespace UnitTestProject1; + +[TestClass] +public class UnitTest1 { - [TestClass] - public class UnitTest1 + [TestMethod] + public void TestMethod1() { - [TestMethod] - public void TestMethod1() - { - // make sure the last test was run in different process. - var envvariable = Environment.GetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); - Assert.IsTrue(string.IsNullOrEmpty(envvariable)); + // make sure the last test was run in different process. + var envvariable = Environment.GetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); + Assert.IsTrue(string.IsNullOrEmpty(envvariable)); - // make sure the appdomain is the one created by testhost - var config = File.ReadAllText(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); - Assert.AreEqual("TestHostAppDomain", AppDomain.CurrentDomain.FriendlyName); + // make sure the appdomain is the one created by testhost + var config = File.ReadAllText(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); + Assert.AreEqual("TestHostAppDomain", AppDomain.CurrentDomain.FriendlyName); - // make sure config file is honoured - Assert.IsTrue(config.Contains("Assembly1")); + // make sure config file is honoured + Assert.IsTrue(config.Contains("Assembly1")); - // set env variable so that next test can assert if this is not carried forward - Environment.SetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}", "{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); - } + // set env variable so that next test can assert if this is not carried forward + Environment.SetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}", "{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); } } diff --git a/test/TestAssets/DisableAppdomainTest2/DisableAppdomainTest2.csproj b/test/TestAssets/DisableAppdomainTest2/DisableAppdomainTest2.csproj index bc1d297d64..da92a884e4 100644 --- a/test/TestAssets/DisableAppdomainTest2/DisableAppdomainTest2.csproj +++ b/test/TestAssets/DisableAppdomainTest2/DisableAppdomainTest2.csproj @@ -1,30 +1,32 @@ - + - + - ..\..\..\ true true - - - DisableAppDomainTest2 - net451 + $(NetFrameworkMinimum) Exe - + + + + + + + - + diff --git a/test/TestAssets/DisableAppdomainTest2/UnitTest1.cs b/test/TestAssets/DisableAppdomainTest2/UnitTest1.cs index 90cbc8550c..92dc3831ff 100644 --- a/test/TestAssets/DisableAppdomainTest2/UnitTest1.cs +++ b/test/TestAssets/DisableAppdomainTest2/UnitTest1.cs @@ -1,30 +1,31 @@ -using System; -using System.Diagnostics; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.IO; -using System.Threading; + using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace UnitTestProject17 +namespace UnitTestProject17; + +[TestClass] +public class UnitTest1 { - [TestClass] - public class UnitTest1 + [TestMethod] + public void TestMethod1() { - [TestMethod] - public void TestMethod1() - { - // make sure the last test was run in different process. - var envvariable = Environment.GetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); - Assert.IsTrue(string.IsNullOrEmpty(envvariable)); + // make sure the last test was run in different process. + var envvariable = Environment.GetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); + Assert.IsTrue(string.IsNullOrEmpty(envvariable)); - // make sure the appdomain is the one created by testhost - var config = File.ReadAllText(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); - Assert.AreEqual("TestHostAppDomain", AppDomain.CurrentDomain.FriendlyName); + // make sure the appdomain is the one created by testhost + var config = File.ReadAllText(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); + Assert.AreEqual("TestHostAppDomain", AppDomain.CurrentDomain.FriendlyName); - // make sure config file is honoured - Assert.IsTrue(config.Contains("Assembly2")); + // make sure config file is honoured + Assert.IsTrue(config.Contains("Assembly2")); - // set env variable so that next test can assert if this is not carried forward - Environment.SetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}", "{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); - } + // set env variable so that next test can assert if this is not carried forward + Environment.SetEnvironmentVariable("{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}", "{60BBC8A3-3AEB-40C4-AAD5-F6DA6305C6C7}"); } } diff --git a/test/TestAssets/DiscoveryTestProject/DiscoveryTestProject.csproj b/test/TestAssets/DiscoveryTestProject/DiscoveryTestProject.csproj index e60a9a4041..454c931654 100644 --- a/test/TestAssets/DiscoveryTestProject/DiscoveryTestProject.csproj +++ b/test/TestAssets/DiscoveryTestProject/DiscoveryTestProject.csproj @@ -1,21 +1,18 @@ - + - - DiscoveryTestProject - netcoreapp1.0;netcoreapp1.1;netcoreapp2.0;net451 - netcoreapp3.1 + $(NetFrameworkMinimum);$(NetCoreAppMinimum) x64 - + - - - + + + - + diff --git a/test/TestAssets/DiscoveryTestProject/LongDiscoveryTestClass.cs b/test/TestAssets/DiscoveryTestProject/LongDiscoveryTestClass.cs index 2d5c65feeb..ea1516eac8 100644 --- a/test/TestAssets/DiscoveryTestProject/LongDiscoveryTestClass.cs +++ b/test/TestAssets/DiscoveryTestProject/LongDiscoveryTestClass.cs @@ -1,7 +1,8 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.Text; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + using System.Threading; namespace DiscoveryTestProject3 @@ -9,18 +10,26 @@ namespace DiscoveryTestProject3 [TestClass] public class LongDiscoveryTestClass { - [MyTestMethod] - public void CustomTestMethod() + // This is for discovery cancellation test. + // LongDiscoveryTestMethod has attribute attribute that + // takes a very long time to create, which prolongs the + // discovery time and keeps us discovering while we + // are cancelling the discovery from the CancelTestDiscovery test. + + [TestMethodWithDelay] + public void LongDiscoveryTestMethod() { } } - internal class MyTestMethodAttribute : TestMethodAttribute + internal class TestMethodWithDelayAttribute : TestMethodAttribute { - public MyTestMethodAttribute() + public TestMethodWithDelayAttribute() { - Thread.Sleep(10000); + // This will be multiplied by 3 because the framework will internally create this + // attribute 3 times. + Thread.Sleep(1000); } } } diff --git a/test/TestAssets/EnvironmentVariablesTestProject/EnvironmentVariablesTestProject.csproj b/test/TestAssets/EnvironmentVariablesTestProject/EnvironmentVariablesTestProject.csproj index 70e6228436..f771066c14 100644 --- a/test/TestAssets/EnvironmentVariablesTestProject/EnvironmentVariablesTestProject.csproj +++ b/test/TestAssets/EnvironmentVariablesTestProject/EnvironmentVariablesTestProject.csproj @@ -1,17 +1,14 @@ - + - net451;netcoreapp2.1 - netcoreapp3.1 - false - + $(NetFrameworkMinimum);$(NetCoreAppMinimum) false - - - + + + diff --git a/test/TestAssets/EnvironmentVariablesTestProject/UnitTest1.cs b/test/TestAssets/EnvironmentVariablesTestProject/UnitTest1.cs index bb6b2fcadc..783a51e865 100644 --- a/test/TestAssets/EnvironmentVariablesTestProject/UnitTest1.cs +++ b/test/TestAssets/EnvironmentVariablesTestProject/UnitTest1.cs @@ -1,4 +1,8 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System; namespace EnvironmentVariablesTestProject diff --git a/test/TestAssets/EventLogUnitTestProject/EventLogUnitTestProject.csproj b/test/TestAssets/EventLogUnitTestProject/EventLogUnitTestProject.csproj index 8a76f7e919..dfec5464d0 100644 --- a/test/TestAssets/EventLogUnitTestProject/EventLogUnitTestProject.csproj +++ b/test/TestAssets/EventLogUnitTestProject/EventLogUnitTestProject.csproj @@ -1,29 +1,31 @@ - + - ..\..\..\ true true - - - EventLogUnitTestProject - net451 + $(NetFrameworkMinimum) Exe - + + + + + + + - + diff --git a/test/TestAssets/EventLogUnitTestProject/UnitTest1.cs b/test/TestAssets/EventLogUnitTestProject/UnitTest1.cs index cd54859fc5..006e565a5b 100644 --- a/test/TestAssets/EventLogUnitTestProject/UnitTest1.cs +++ b/test/TestAssets/EventLogUnitTestProject/UnitTest1.cs @@ -1,40 +1,37 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace EventLogUnitTestProject -{ - using System.Diagnostics; - using System.Threading; +using System.Diagnostics; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace EventLogUnitTestProject; - [TestClass] - public class UnitTest1 +[TestClass] +public class UnitTest1 +{ + [TestMethod] + public void TestMethod1() { - [TestMethod] - public void TestMethod1() - { - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 110); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 111); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 112); - } + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 110); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 111); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 112); + } - [TestMethod] - public void TestMethod2() - { - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 220); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 221); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 222); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 223); - } + [TestMethod] + public void TestMethod2() + { + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 220); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 221); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 222); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 223); + } - [TestMethod] - public void TestMethod3() - { - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 330); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 331); - EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 332); - } + [TestMethod] + public void TestMethod3() + { + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 330); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 331); + EventLog.WriteEntry("Application", "Application", EventLogEntryType.Error, 332); } } diff --git a/test/TestAssets/LegacySettingsUnitTestProject/LegacySettingsUnitTestProject.csproj b/test/TestAssets/LegacySettingsUnitTestProject/LegacySettingsUnitTestProject.csproj index 81a3800789..b5c73fc491 100644 --- a/test/TestAssets/LegacySettingsUnitTestProject/LegacySettingsUnitTestProject.csproj +++ b/test/TestAssets/LegacySettingsUnitTestProject/LegacySettingsUnitTestProject.csproj @@ -1,14 +1,12 @@ - + - ..\..\..\ true true - library - net451 + $(NetFrameworkMinimum) LegacySettingsUnitTestProject @@ -20,7 +18,7 @@ - ..\..\..\packages\microsoft.visualstudio.qualitytools\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll + ..\..\..\.packages\microsoft.visualstudio.qualitytools\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll @@ -32,5 +30,5 @@ - + diff --git a/test/TestAssets/LegacySettingsUnitTestProject/UnitTest1.cs b/test/TestAssets/LegacySettingsUnitTestProject/UnitTest1.cs index ad08ec679c..89490d09f3 100644 --- a/test/TestAssets/LegacySettingsUnitTestProject/UnitTest1.cs +++ b/test/TestAssets/LegacySettingsUnitTestProject/UnitTest1.cs @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace LegacySettingsUnitTestProject -{ - using System.IO; - using System.Reflection; +using System.IO; +using System.Reflection; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace LegacySettingsUnitTestProject +{ [TestClass] public class UnitTest1 - { + { /// /// Test for scripts /// diff --git a/test/TestAssets/MSTestProject1/MSTestProject1.csproj b/test/TestAssets/MSTestProject1/MSTestProject1.csproj new file mode 100644 index 0000000000..9bd9e59217 --- /dev/null +++ b/test/TestAssets/MSTestProject1/MSTestProject1.csproj @@ -0,0 +1,24 @@ + + + + + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + + + + + $(MSTestTestFrameworkVersion) + + + $(MSTestTestAdapterVersion) + + + $(PackageVersion) + + + + + + + + diff --git a/test/TestAssets/MSTestProject1/UnitTest1.cs b/test/TestAssets/MSTestProject1/UnitTest1.cs new file mode 100644 index 0000000000..17c1760f18 --- /dev/null +++ b/test/TestAssets/MSTestProject1/UnitTest1.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace MSTestProject1; + +[TestClass] +public class UnitTest1 +{ + [TestMethod] + public void PassingTest() + { + Assert.AreEqual(2, 2); + } + + [TestMethod] + public void FailingTest() + { + Assert.AreEqual(2, 3); + } + + [Ignore] + [TestMethod] + public void SkippedTest() + { + } +} diff --git a/test/TestAssets/MSTestProject2/MSTestProject2.csproj b/test/TestAssets/MSTestProject2/MSTestProject2.csproj new file mode 100644 index 0000000000..9bd9e59217 --- /dev/null +++ b/test/TestAssets/MSTestProject2/MSTestProject2.csproj @@ -0,0 +1,24 @@ + + + + + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + + + + + $(MSTestTestFrameworkVersion) + + + $(MSTestTestAdapterVersion) + + + $(PackageVersion) + + + + + + + + diff --git a/test/TestAssets/MSTestProject2/UnitTest1.cs b/test/TestAssets/MSTestProject2/UnitTest1.cs new file mode 100644 index 0000000000..1f6d2bf47e --- /dev/null +++ b/test/TestAssets/MSTestProject2/UnitTest1.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace MSTestProject2; + +[TestClass] +public class UnitTest1 +{ + [TestMethod] + public void PassingTest() + { + Assert.AreEqual(2, 2); + } + + [TestMethod] + public void FailingTest() + { + Assert.AreEqual(2, 3); + } + + [Ignore] + [TestMethod] + public void SkippedTest() + { + } +} diff --git a/test/TestAssets/MstestV1UnitTestProject/MstestV1UnitTestProject.csproj b/test/TestAssets/MstestV1UnitTestProject/MstestV1UnitTestProject.csproj index 776b6f86a7..a4dc9f9322 100644 --- a/test/TestAssets/MstestV1UnitTestProject/MstestV1UnitTestProject.csproj +++ b/test/TestAssets/MstestV1UnitTestProject/MstestV1UnitTestProject.csproj @@ -1,15 +1,13 @@ - + - ..\..\..\ true true - library - net451 + $(NetFrameworkMinimum) MstestV1UnitTestProject @@ -17,7 +15,7 @@ - ..\..\..\packages\microsoft.visualstudio.qualitytools\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll + ..\..\..\.packages\microsoft.visualstudio.qualitytools\$(TestPlatformExternalsVersion)\tools\net451\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll @@ -33,5 +31,5 @@ - + diff --git a/test/TestAssets/MstestV1UnitTestProject/UnitTest1.cs b/test/TestAssets/MstestV1UnitTestProject/UnitTest1.cs index 877ea916b3..9c5206bcd0 100644 --- a/test/TestAssets/MstestV1UnitTestProject/UnitTest1.cs +++ b/test/TestAssets/MstestV1UnitTestProject/UnitTest1.cs @@ -1,16 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using Microsoft.VisualStudio.TestTools.UnitTesting; + namespace MstestV1UnitTestProject { - using System; - using System.Diagnostics; - using System.Threading; - using System.IO; - using System.Reflection; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] public class UnitTest1 { diff --git a/test/TestAssets/MultiHostTestExecutionProject/MultiHostTestExecutionProject.csproj b/test/TestAssets/MultiHostTestExecutionProject/MultiHostTestExecutionProject.csproj new file mode 100644 index 0000000000..02776870c2 --- /dev/null +++ b/test/TestAssets/MultiHostTestExecutionProject/MultiHostTestExecutionProject.csproj @@ -0,0 +1,24 @@ + + + + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + + + + + $(MSTestTestFrameworkVersion) + + + $(MSTestTestAdapterVersion) + + + $(PackageVersion) + + + + + + + + + diff --git a/test/TestAssets/MultiHostTestExecutionProject/UnitTest1.cs b/test/TestAssets/MultiHostTestExecutionProject/UnitTest1.cs new file mode 100644 index 0000000000..fc3a3e6f4d --- /dev/null +++ b/test/TestAssets/MultiHostTestExecutionProject/UnitTest1.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Diagnostics; +using System.IO; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +// Parallelize the execution +[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] + +namespace SerializeTestRunTestProject +{ + [TestClass] + public class UnitTest1 + { + private static readonly object Lock = new object(); + + private void LogToFile(string testName) + { + lock (Lock) + { + string folderToLogTo = Environment.GetEnvironmentVariable("VSTEST_LOGFOLDER"); + File.AppendAllText(Path.Combine(folderToLogTo, $"TestHost_{Process.GetCurrentProcess().Id}.txt"), testName + "\n"); + } + } + + [TestMethod] + public void TestMethod1() => LogToFile(nameof(TestMethod1)); + + [TestMethod] + public void TestMethod2() => LogToFile(nameof(TestMethod2)); + + [TestMethod] + public void TestMethod3() => LogToFile(nameof(TestMethod3)); + + [TestMethod] + public void TestMethod4() => LogToFile(nameof(TestMethod4)); + + [TestMethod] + public void TestMethod5() => LogToFile(nameof(TestMethod5)); + + [TestMethod] + public void TestMethod6() => LogToFile(nameof(TestMethod6)); + + [TestMethod] + public void TestMethod7() => LogToFile(nameof(TestMethod7)); + + [TestMethod] + public void TestMethod8() => LogToFile(nameof(TestMethod8)); + + [TestMethod] + public void TestMethod9() => LogToFile(nameof(TestMethod9)); + + [TestMethod] + public void TestMethod10() => LogToFile(nameof(TestMethod10)); + } +} diff --git a/test/TestAssets/MultitargetedNetFrameworkProject/MultitargetedNetFrameworkProject.csproj b/test/TestAssets/MultitargetedNetFrameworkProject/MultitargetedNetFrameworkProject.csproj index 264e952756..11e097b528 100644 Binary files a/test/TestAssets/MultitargetedNetFrameworkProject/MultitargetedNetFrameworkProject.csproj and b/test/TestAssets/MultitargetedNetFrameworkProject/MultitargetedNetFrameworkProject.csproj differ diff --git a/test/TestAssets/MultitargetedNetFrameworkProject/UnitTest1.cs b/test/TestAssets/MultitargetedNetFrameworkProject/UnitTest1.cs index a7b364d9a0..587a62af3b 100644 --- a/test/TestAssets/MultitargetedNetFrameworkProject/UnitTest1.cs +++ b/test/TestAssets/MultitargetedNetFrameworkProject/UnitTest1.cs @@ -1,85 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using System; -using System.IO; -using System.Net.Security; -using System.Security.Authentication; + using Xunit; namespace MultitargetedNetFrameworkProject { public class UnitTest1 { - -#if NET451 - public string TargetFramework { get; } = "NET451"; -#endif - -#if NET452 - public string TargetFramework { get; } = "NET452"; -#endif - -#if NET46 - public string TargetFramework { get; } = "NET46"; -#endif - -#if NET461 - public string TargetFramework { get; } = "NET461"; -#endif - #if NET462 - public string TargetFramework { get; } = "NET462"; + public string TargetFramework { get; } = "NET462"; #endif #if NET47 - public string TargetFramework { get; } = "NET47"; + public string TargetFramework { get; } = "NET47"; #endif #if NET471 - public string TargetFramework { get; } = "NET471"; + public string TargetFramework { get; } = "NET471"; #endif #if NET472 - public string TargetFramework { get; } = "NET472"; + public string TargetFramework { get; } = "NET472"; #endif #if NET48 - public string TargetFramework { get; } = "NET48"; + public string TargetFramework { get; } = "NET48"; #endif - // Using xUnit here because MSTest uses AppDomains by default and fixes this problem for us - // as long as the appdomains are enabled and modern .NET Framework is installed. [Fact] public void FailsUntilNet462ButPassesOnNewerNetFramework() { - Exception exception = null; - try - { - MemoryStream stream = new MemoryStream(); - SslStream sslStream = new SslStream(stream); - - // this throws SSLException on net451-net462, on net471 onwards it passes so we can use it to test that we target correctly - sslStream.BeginAuthenticateAsClient("microsoft.com", null, SslProtocols.None, false, new AsyncCallback(ProcessInformation), null); - } - catch (Exception ex) - { - exception = ex; - } + var expected = Environment.GetEnvironmentVariable("EXPECTED_TARGET_FRAMEWORK"); - switch (this.TargetFramework) - { - case "NET451": - case "NET452": - case "NET46": - case "NET461": - case "NET462": - Assert.NotNull(exception); - break; - default: - Assert.Null(exception); - break; - } - } - - static void ProcessInformation(IAsyncResult result) - { + Assert.Equal(expected, TargetFramework, ignoreCase: true); } } } diff --git a/test/TestAssets/NUTestProject/Class1.cs b/test/TestAssets/NUTestProject/Class1.cs index ec97dd18bf..4917511817 100644 --- a/test/TestAssets/NUTestProject/Class1.cs +++ b/test/TestAssets/NUTestProject/Class1.cs @@ -1,20 +1,22 @@ -using NUnit.Framework; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace NUnitTestProject +using NUnit.Framework; + +namespace NUnitTestProject; + +[TestFixture] +public class NUnitTest1 { - [TestFixture] - public class NUnitTest1 + [Test] + public void PassTestMethod1() { - [Test] - public void PassTestMethod1() - { - Assert.AreEqual(5, 5); - } + Assert.AreEqual(5, 5); + } - [Test] - public void FailTestMethod1() - { - Assert.AreEqual(5, 6); - } + [Test] + public void FailTestMethod1() + { + Assert.AreEqual(5, 6); } } diff --git a/test/TestAssets/NUTestProject/NUTestProject.csproj b/test/TestAssets/NUTestProject/NUTestProject.csproj index 17f1b47419..731bd2c81d 100644 --- a/test/TestAssets/NUTestProject/NUTestProject.csproj +++ b/test/TestAssets/NUTestProject/NUTestProject.csproj @@ -1,12 +1,8 @@ - + - - - net451;netcoreapp2.1 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) NUTestProject @@ -18,7 +14,7 @@ $(NUnit3AdapterVersion) - $(NETTestSdkVersion) + $(PackageVersion) diff --git a/test/TestAssets/NetStandard2Library/Class1.cs b/test/TestAssets/NetStandard2Library/Class1.cs new file mode 100644 index 0000000000..036fa82d3a --- /dev/null +++ b/test/TestAssets/NetStandard2Library/Class1.cs @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace NetStandard2Library; + +public class Class1 +{ + +} diff --git a/test/TestAssets/NetStandard2Library/NetStandard2Library.csproj b/test/TestAssets/NetStandard2Library/NetStandard2Library.csproj new file mode 100644 index 0000000000..9f5c4f4abb --- /dev/null +++ b/test/TestAssets/NetStandard2Library/NetStandard2Library.csproj @@ -0,0 +1,7 @@ + + + + netstandard2.0 + + + diff --git a/test/TestAssets/NewtonSoftDependency/App.config b/test/TestAssets/NewtonSoftDependency/App.config index 776d09c68c..f71f97e6bb 100644 --- a/test/TestAssets/NewtonSoftDependency/App.config +++ b/test/TestAssets/NewtonSoftDependency/App.config @@ -4,7 +4,7 @@ - + diff --git a/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj b/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj index b7bddcb34c..598ecfb843 100644 --- a/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj +++ b/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj @@ -1,22 +1,19 @@ - + - + - ..\..\..\ true true - - NewtonSoftDependency - net451 + $(NetFrameworkMinimum) Exe - + @@ -24,9 +21,11 @@ - - - + + + + diff --git a/test/TestAssets/NewtonSoftDependency/UnitTest1.cs b/test/TestAssets/NewtonSoftDependency/UnitTest1.cs index 522f819653..b18567b985 100644 --- a/test/TestAssets/NewtonSoftDependency/UnitTest1.cs +++ b/test/TestAssets/NewtonSoftDependency/UnitTest1.cs @@ -1,9 +1,12 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Newtonsoft.Json; namespace NewtonSoftDependency { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Newtonsoft.Json; - public class Account { public string Email { get; set; } diff --git a/test/TestAssets/NonDll.TestAdapter/NonDll.TestAdapter.csproj b/test/TestAssets/NonDll.TestAdapter/NonDll.TestAdapter.csproj new file mode 100644 index 0000000000..9f585892a3 --- /dev/null +++ b/test/TestAssets/NonDll.TestAdapter/NonDll.TestAdapter.csproj @@ -0,0 +1,11 @@ + + + + + netstandard2.0 + + + + + + diff --git a/test/TestAssets/NonDll.TestAdapter/TestAdapter.cs b/test/TestAssets/NonDll.TestAdapter/TestAdapter.cs new file mode 100644 index 0000000000..b1811d25e4 --- /dev/null +++ b/test/TestAssets/NonDll.TestAdapter/TestAdapter.cs @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace NonDll.TestAdapter; +[FileExtension(".js")] +[DefaultExecutorUri(Uri)] +[ExtensionUri(Uri)] +public class TestAdapter : ITestExecutor, ITestDiscoverer +{ + public const string Uri = "executor://nondll.testadapter"; + + public void DiscoverTests(IEnumerable sources, IDiscoveryContext discoveryContext, + IMessageLogger logger, ITestCaseDiscoverySink discoverySink) + { + var count = 1; + foreach (var source in sources) + { + TestCase testCase = new() + { + Source = source, + CodeFilePath = source, + DisplayName = $"Test{count++}", + ExecutorUri = new Uri(Uri), + }; + discoverySink.SendTestCase(testCase); + } + } + + public void Cancel() + { + } + + public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) + { + foreach (var test in tests) + { + TestResult testResult = new(test) + { + Outcome = TestOutcome.Passed, + }; + frameworkHandle.RecordResult(testResult); + } + } + + public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) + { + var count = 1; + foreach (var source in sources) + { + TestCase testCase = new() + { + Source = source, + CodeFilePath = source, + DisplayName = $"Test{count++}", + ExecutorUri = new Uri(Uri), + }; + TestResult testResult = new(testCase) + { + Outcome = TestOutcome.Passed, + }; + frameworkHandle.RecordResult(testResult); + } + } +} diff --git a/test/TestAssets/NuGet.config b/test/TestAssets/NuGet.config deleted file mode 100644 index 6f8bd3e5a2..0000000000 --- a/test/TestAssets/NuGet.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/test/TestAssets/OutOfProcDataCollector/OutOfProcDataCollector.csproj b/test/TestAssets/OutOfProcDataCollector/OutOfProcDataCollector.csproj index f172b1ecb5..586f788a0c 100644 --- a/test/TestAssets/OutOfProcDataCollector/OutOfProcDataCollector.csproj +++ b/test/TestAssets/OutOfProcDataCollector/OutOfProcDataCollector.csproj @@ -1,13 +1,12 @@ - + - netcoreapp2.1;net451 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) 15.0.0.0 1.6.0 + false - + diff --git a/test/TestAssets/OutOfProcDataCollector/SampleDataCollector.cs b/test/TestAssets/OutOfProcDataCollector/SampleDataCollector.cs index 0422dad3ee..ab1be46dbe 100644 --- a/test/TestAssets/OutOfProcDataCollector/SampleDataCollector.cs +++ b/test/TestAssets/OutOfProcDataCollector/SampleDataCollector.cs @@ -1,76 +1,76 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace OutOfProcDataCollector -{ - using System; - using System.Collections.Generic; - using System.IO; +using System; +using System.Collections.Generic; +using System.IO; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +namespace OutOfProcDataCollector +{ [DataCollectorFriendlyName("SampleDataCollector")] [DataCollectorTypeUri("my://sample/datacollector")] public class SampleDataCollector : DataCollector, ITestExecutionEnvironmentSpecifier { - int i = 0; - private DataCollectionSink dataCollectionSink; - private DataCollectionEnvironmentContext context; - private DataCollectionLogger logger; - private string tempDirectoryPath = Path.GetTempPath(); + int _i; + private DataCollectionSink? _dataCollectionSink; + private DataCollectionEnvironmentContext? _context; + private DataCollectionLogger? _logger; + private readonly string _tempDirectoryPath = Environment.GetEnvironmentVariable("TEST_ASSET_SAMPLE_COLLECTOR_PATH") ?? Path.GetTempPath(); public override void Initialize( - System.Xml.XmlElement configurationElement, + System.Xml.XmlElement? configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) + DataCollectionEnvironmentContext? environmentContext) { - events.TestHostLaunched += this.TestHostLaunched_Handler; - events.SessionStart += this.SessionStarted_Handler; - events.SessionEnd += this.SessionEnded_Handler; - events.TestCaseStart += this.Events_TestCaseStart; - events.TestCaseEnd += this.Events_TestCaseEnd; - this.dataCollectionSink = dataSink; - this.context = environmentContext; - this.logger = logger; + events.TestHostLaunched += TestHostLaunched_Handler; + events.SessionStart += SessionStarted_Handler; + events.SessionEnd += SessionEnded_Handler; + events.TestCaseStart += Events_TestCaseStart; + events.TestCaseEnd += Events_TestCaseEnd; + _dataCollectionSink = dataSink; + _context = environmentContext; + _logger = logger; } - private void Events_TestCaseEnd(object sender, TestCaseEndEventArgs e) + private void Events_TestCaseEnd(object? sender, TestCaseEndEventArgs e) { - this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestCaseEnded " + e.TestCaseName); + _logger!.LogWarning(_context!.SessionDataCollectionContext, "TestCaseEnded " + e.TestCaseName); } - private void Events_TestCaseStart(object sender, TestCaseStartEventArgs e) + private void Events_TestCaseStart(object? sender, TestCaseStartEventArgs e) { - this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestCaseStarted " + e.TestCaseName); - this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestCaseStarted " + e.TestElement.FullyQualifiedName); - var filename = Path.Combine(this.tempDirectoryPath, "testcasefilename" + i++ + ".txt"); + _logger!.LogWarning(_context!.SessionDataCollectionContext, "TestCaseStarted " + e.TestCaseName); + _logger.LogWarning(_context.SessionDataCollectionContext, "TestCaseStarted " + e.TestElement!.FullyQualifiedName); + var filename = Path.Combine(_tempDirectoryPath, "testcasefilename" + _i++ + ".txt"); File.WriteAllText(filename, string.Empty); - this.dataCollectionSink.SendFileAsync(e.Context, filename, true); + _dataCollectionSink!.SendFileAsync(e.Context, filename, true); } - private void SessionStarted_Handler(object sender, SessionStartEventArgs args) + private void SessionStarted_Handler(object? sender, SessionStartEventArgs args) { - var filename = Path.Combine(this.tempDirectoryPath, "filename.txt"); + var filename = Path.Combine(_tempDirectoryPath, "filename.txt"); File.WriteAllText(filename, string.Empty); - this.dataCollectionSink.SendFileAsync(this.context.SessionDataCollectionContext, filename, true); - this.logger.LogWarning(this.context.SessionDataCollectionContext, "SessionStarted"); + _dataCollectionSink!.SendFileAsync(_context!.SessionDataCollectionContext, filename, true); + _logger!.LogWarning(_context.SessionDataCollectionContext, "SessionStarted"); } - private void SessionEnded_Handler(object sender, SessionEndEventArgs args) + private void SessionEnded_Handler(object? sender, SessionEndEventArgs args) { - this.logger.LogError(this.context.SessionDataCollectionContext, new Exception("my exception")); - this.logger.LogWarning(this.context.SessionDataCollectionContext, "my warning"); - this.logger.LogException(this.context.SessionDataCollectionContext, new Exception("abc"), DataCollectorMessageLevel.Error); + _logger!.LogError(_context!.SessionDataCollectionContext, new Exception("my exception")); + _logger.LogWarning(_context.SessionDataCollectionContext, "my warning"); + _logger.LogException(_context.SessionDataCollectionContext, new Exception("abc"), DataCollectorMessageLevel.Error); - this.logger.LogWarning(this.context.SessionDataCollectionContext, "SessionEnded"); + _logger.LogWarning(_context.SessionDataCollectionContext, "SessionEnded"); } - private void TestHostLaunched_Handler(object sender, TestHostLaunchedEventArgs e) + private void TestHostLaunched_Handler(object? sender, TestHostLaunchedEventArgs e) { - this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestHostLaunched " + e.TestHostProcessId); + _logger!.LogWarning(_context!.SessionDataCollectionContext, "TestHostLaunched " + e.TestHostProcessId); } public IEnumerable> GetTestExecutionEnvironmentVariables() @@ -80,7 +80,8 @@ public IEnumerable> GetTestExecutionEnvironmentVari protected override void Dispose(bool disposing) { - this.logger.LogWarning(this.context.SessionDataCollectionContext, "Dispose called."); + _logger!.LogWarning(_context!.SessionDataCollectionContext, "Dispose called."); + base.Dispose(disposing); } } -} \ No newline at end of file +} diff --git a/test/TestAssets/OutputtingTestProject/OutputtingTestProject.csproj b/test/TestAssets/OutputtingTestProject/OutputtingTestProject.csproj new file mode 100644 index 0000000000..9d5a70e0fa --- /dev/null +++ b/test/TestAssets/OutputtingTestProject/OutputtingTestProject.csproj @@ -0,0 +1,25 @@ + + + + + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + Exe + x64 + + + + + + + + + + + + + + + + + + diff --git a/test/TestAssets/OutputtingTestProject/UnitTest1.cs b/test/TestAssets/OutputtingTestProject/UnitTest1.cs new file mode 100644 index 0000000000..d71da20d2a --- /dev/null +++ b/test/TestAssets/OutputtingTestProject/UnitTest1.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using System; +using System.IO; + +namespace OutputtingTestProject; + +[TestClass] +public class UnitTest1 +{ + [TestMethod] + public void TestThatWritesOutput() + { + // This is a trick to bypass the console output capturing that MSTest does, and write directly + // to console output. The same bypass can be configured by false + // in MSTest 3.3.2 and newer. + using StreamWriter writer = new StreamWriter(Console.OpenStandardOutput()); + writer.WriteLine("MY OUTPUT FROM TEST"); + } +} diff --git a/test/TestAssets/ParametrizedTestProject/ParametrizedTestProject.csproj b/test/TestAssets/ParametrizedTestProject/ParametrizedTestProject.csproj index 5f7d6ec0d0..0999951177 100644 Binary files a/test/TestAssets/ParametrizedTestProject/ParametrizedTestProject.csproj and b/test/TestAssets/ParametrizedTestProject/ParametrizedTestProject.csproj differ diff --git a/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTestAdapterPerfTestProject.csproj b/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTestAdapterPerfTestProject.csproj deleted file mode 100644 index 47c125a329..0000000000 --- a/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTestAdapterPerfTestProject.csproj +++ /dev/null @@ -1,36 +0,0 @@ - - - - - netcoreapp2.1;net451 - netcoreapp3.1 - false - false - - - - - - - - - - - TextTemplatingFileGenerator - MSTests.cs - - - - - - - - - - True - True - MSTests.tt - - - - diff --git a/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTests.cs b/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTests.cs deleted file mode 100644 index b544f41cd7..0000000000 --- a/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTests.cs +++ /dev/null @@ -1,40017 +0,0 @@ -using System; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace UnitTestinProgress -{ - [TestClass] - public class MSTests - { - - #region PassingTests - [TestMethod] - public void Test_01() - { - } - [TestMethod] - public void Test_02() - { - } - [TestMethod] - public void Test_03() - { - } - [TestMethod] - public void Test_04() - { - } - [TestMethod] - public void Test_05() - { - } - [TestMethod] - public void Test_06() - { - } - [TestMethod] - public void Test_07() - { - } - [TestMethod] - public void Test_08() - { - } - [TestMethod] - public void Test_09() - { - } - [TestMethod] - public void Test_10() - { - } - [TestMethod] - public void Test_11() - { - } - [TestMethod] - public void Test_12() - { - } - [TestMethod] - public void Test_13() - { - } - [TestMethod] - public void Test_14() - { - } - [TestMethod] - public void Test_15() - { - } - [TestMethod] - public void Test_16() - { - } - [TestMethod] - public void Test_17() - { - } - [TestMethod] - public void Test_18() - { - } - [TestMethod] - public void Test_19() - { - } - [TestMethod] - public void Test_20() - { - } - [TestMethod] - public void Test_21() - { - } - [TestMethod] - public void Test_22() - { - } - [TestMethod] - public void Test_23() - { - } - [TestMethod] - public void Test_24() - { - } - [TestMethod] - public void Test_25() - { - } - [TestMethod] - public void Test_26() - { - } - [TestMethod] - public void Test_27() - { - } - [TestMethod] - public void Test_28() - { - } - [TestMethod] - public void Test_29() - { - } - [TestMethod] - public void Test_30() - { - } - [TestMethod] - public void Test_31() - { - } - [TestMethod] - public void Test_32() - { - } - [TestMethod] - public void Test_33() - { - } - [TestMethod] - public void Test_34() - { - } - [TestMethod] - public void Test_35() - { - } - [TestMethod] - public void Test_36() - { - } - [TestMethod] - public void Test_37() - { - } - [TestMethod] - public void Test_38() - { - } - [TestMethod] - public void Test_39() - { - } - [TestMethod] - public void Test_40() - { - } - [TestMethod] - public void Test_41() - { - } - [TestMethod] - public void Test_42() - { - } - [TestMethod] - public void Test_43() - { - } - [TestMethod] - public void Test_44() - { - } - [TestMethod] - public void Test_45() - { - } - [TestMethod] - public void Test_46() - { - } - [TestMethod] - public void Test_47() - { - } - [TestMethod] - public void Test_48() - { - } - [TestMethod] - public void Test_49() - { - } - [TestMethod] - public void Test_50() - { - } - [TestMethod] - public void Test_51() - { - } - [TestMethod] - public void Test_52() - { - } - [TestMethod] - public void Test_53() - { - } - [TestMethod] - public void Test_54() - { - } - [TestMethod] - public void Test_55() - { - } - [TestMethod] - public void Test_56() - { - } - [TestMethod] - public void Test_57() - { - } - [TestMethod] - public void Test_58() - { - } - [TestMethod] - public void Test_59() - { - } - [TestMethod] - public void Test_60() - { - } - [TestMethod] - public void Test_61() - { - } - [TestMethod] - public void Test_62() - { - } - [TestMethod] - public void Test_63() - { - } - [TestMethod] - public void Test_64() - { - } - [TestMethod] - public void Test_65() - { - } - [TestMethod] - public void Test_66() - { - } - [TestMethod] - public void Test_67() - { - } - [TestMethod] - public void Test_68() - { - } - [TestMethod] - public void Test_69() - { - } - [TestMethod] - public void Test_70() - { - } - [TestMethod] - public void Test_71() - { - } - [TestMethod] - public void Test_72() - { - } - [TestMethod] - public void Test_73() - { - } - [TestMethod] - public void Test_74() - { - } - [TestMethod] - public void Test_75() - { - } - [TestMethod] - public void Test_76() - { - } - [TestMethod] - public void Test_77() - { - } - [TestMethod] - public void Test_78() - { - } - [TestMethod] - public void Test_79() - { - } - [TestMethod] - public void Test_80() - { - } - [TestMethod] - public void Test_81() - { - } - [TestMethod] - public void Test_82() - { - } - [TestMethod] - public void Test_83() - { - } - [TestMethod] - public void Test_84() - { - } - [TestMethod] - public void Test_85() - { - } - [TestMethod] - public void Test_86() - { - } - [TestMethod] - public void Test_87() - { - } - [TestMethod] - public void Test_88() - { - } - [TestMethod] - public void Test_89() - { - } - [TestMethod] - public void Test_90() - { - } - [TestMethod] - public void Test_91() - { - } - [TestMethod] - public void Test_92() - { - } - [TestMethod] - public void Test_93() - { - } - [TestMethod] - public void Test_94() - { - } - [TestMethod] - public void Test_95() - { - } - [TestMethod] - public void Test_96() - { - } - [TestMethod] - public void Test_97() - { - } - [TestMethod] - public void Test_98() - { - } - [TestMethod] - public void Test_99() - { - } - [TestMethod] - public void Test_100() - { - } - [TestMethod] - public void Test_101() - { - } - [TestMethod] - public void Test_102() - { - } - [TestMethod] - public void Test_103() - { - } - [TestMethod] - public void Test_104() - { - } - [TestMethod] - public void Test_105() - { - } - [TestMethod] - public void Test_106() - { - } - [TestMethod] - public void Test_107() - { - } - [TestMethod] - public void Test_108() - { - } - [TestMethod] - public void Test_109() - { - } - [TestMethod] - public void Test_110() - { - } - [TestMethod] - public void Test_111() - { - } - [TestMethod] - public void Test_112() - { - } - [TestMethod] - public void Test_113() - { - } - [TestMethod] - public void Test_114() - { - } - [TestMethod] - public void Test_115() - { - } - [TestMethod] - public void Test_116() - { - } - [TestMethod] - public void Test_117() - { - } - [TestMethod] - public void Test_118() - { - } - [TestMethod] - public void Test_119() - { - } - [TestMethod] - public void Test_120() - { - } - [TestMethod] - public void Test_121() - { - } - [TestMethod] - public void Test_122() - { - } - [TestMethod] - public void Test_123() - { - } - [TestMethod] - public void Test_124() - { - } - [TestMethod] - public void Test_125() - { - } - [TestMethod] - public void Test_126() - { - } - [TestMethod] - public void Test_127() - { - } - [TestMethod] - public void Test_128() - { - } - [TestMethod] - public void Test_129() - { - } - [TestMethod] - public void Test_130() - { - } - [TestMethod] - public void Test_131() - { - } - [TestMethod] - public void Test_132() - { - } - [TestMethod] - public void Test_133() - { - } - [TestMethod] - public void Test_134() - { - } - [TestMethod] - public void Test_135() - { - } - [TestMethod] - public void Test_136() - { - } - [TestMethod] - public void Test_137() - { - } - [TestMethod] - public void Test_138() - { - } - [TestMethod] - public void Test_139() - { - } - [TestMethod] - public void Test_140() - { - } - [TestMethod] - public void Test_141() - { - } - [TestMethod] - public void Test_142() - { - } - [TestMethod] - public void Test_143() - { - } - [TestMethod] - public void Test_144() - { - } - [TestMethod] - public void Test_145() - { - } - [TestMethod] - public void Test_146() - { - } - [TestMethod] - public void Test_147() - { - } - [TestMethod] - public void Test_148() - { - } - [TestMethod] - public void Test_149() - { - } - [TestMethod] - public void Test_150() - { - } - [TestMethod] - public void Test_151() - { - } - [TestMethod] - public void Test_152() - { - } - [TestMethod] - public void Test_153() - { - } - [TestMethod] - public void Test_154() - { - } - [TestMethod] - public void Test_155() - { - } - [TestMethod] - public void Test_156() - { - } - [TestMethod] - public void Test_157() - { - } - [TestMethod] - public void Test_158() - { - } - [TestMethod] - public void Test_159() - { - } - [TestMethod] - public void Test_160() - { - } - [TestMethod] - public void Test_161() - { - } - [TestMethod] - public void Test_162() - { - } - [TestMethod] - public void Test_163() - { - } - [TestMethod] - public void Test_164() - { - } - [TestMethod] - public void Test_165() - { - } - [TestMethod] - public void Test_166() - { - } - [TestMethod] - public void Test_167() - { - } - [TestMethod] - public void Test_168() - { - } - [TestMethod] - public void Test_169() - { - } - [TestMethod] - public void Test_170() - { - } - [TestMethod] - public void Test_171() - { - } - [TestMethod] - public void Test_172() - { - } - [TestMethod] - public void Test_173() - { - } - [TestMethod] - public void Test_174() - { - } - [TestMethod] - public void Test_175() - { - } - [TestMethod] - public void Test_176() - { - } - [TestMethod] - public void Test_177() - { - } - [TestMethod] - public void Test_178() - { - } - [TestMethod] - public void Test_179() - { - } - [TestMethod] - public void Test_180() - { - } - [TestMethod] - public void Test_181() - { - } - [TestMethod] - public void Test_182() - { - } - [TestMethod] - public void Test_183() - { - } - [TestMethod] - public void Test_184() - { - } - [TestMethod] - public void Test_185() - { - } - [TestMethod] - public void Test_186() - { - } - [TestMethod] - public void Test_187() - { - } - [TestMethod] - public void Test_188() - { - } - [TestMethod] - public void Test_189() - { - } - [TestMethod] - public void Test_190() - { - } - [TestMethod] - public void Test_191() - { - } - [TestMethod] - public void Test_192() - { - } - [TestMethod] - public void Test_193() - { - } - [TestMethod] - public void Test_194() - { - } - [TestMethod] - public void Test_195() - { - } - [TestMethod] - public void Test_196() - { - } - [TestMethod] - public void Test_197() - { - } - [TestMethod] - public void Test_198() - { - } - [TestMethod] - public void Test_199() - { - } - [TestMethod] - public void Test_200() - { - } - [TestMethod] - public void Test_201() - { - } - [TestMethod] - public void Test_202() - { - } - [TestMethod] - public void Test_203() - { - } - [TestMethod] - public void Test_204() - { - } - [TestMethod] - public void Test_205() - { - } - [TestMethod] - public void Test_206() - { - } - [TestMethod] - public void Test_207() - { - } - [TestMethod] - public void Test_208() - { - } - [TestMethod] - public void Test_209() - { - } - [TestMethod] - public void Test_210() - { - } - [TestMethod] - public void Test_211() - { - } - [TestMethod] - public void Test_212() - { - } - [TestMethod] - public void Test_213() - { - } - [TestMethod] - public void Test_214() - { - } - [TestMethod] - public void Test_215() - { - } - [TestMethod] - public void Test_216() - { - } - [TestMethod] - public void Test_217() - { - } - [TestMethod] - public void Test_218() - { - } - [TestMethod] - public void Test_219() - { - } - [TestMethod] - public void Test_220() - { - } - [TestMethod] - public void Test_221() - { - } - [TestMethod] - public void Test_222() - { - } - [TestMethod] - public void Test_223() - { - } - [TestMethod] - public void Test_224() - { - } - [TestMethod] - public void Test_225() - { - } - [TestMethod] - public void Test_226() - { - } - [TestMethod] - public void Test_227() - { - } - [TestMethod] - public void Test_228() - { - } - [TestMethod] - public void Test_229() - { - } - [TestMethod] - public void Test_230() - { - } - [TestMethod] - public void Test_231() - { - } - [TestMethod] - public void Test_232() - { - } - [TestMethod] - public void Test_233() - { - } - [TestMethod] - public void Test_234() - { - } - [TestMethod] - public void Test_235() - { - } - [TestMethod] - public void Test_236() - { - } - [TestMethod] - public void Test_237() - { - } - [TestMethod] - public void Test_238() - { - } - [TestMethod] - public void Test_239() - { - } - [TestMethod] - public void Test_240() - { - } - [TestMethod] - public void Test_241() - { - } - [TestMethod] - public void Test_242() - { - } - [TestMethod] - public void Test_243() - { - } - [TestMethod] - public void Test_244() - { - } - [TestMethod] - public void Test_245() - { - } - [TestMethod] - public void Test_246() - { - } - [TestMethod] - public void Test_247() - { - } - [TestMethod] - public void Test_248() - { - } - [TestMethod] - public void Test_249() - { - } - [TestMethod] - public void Test_250() - { - } - [TestMethod] - public void Test_251() - { - } - [TestMethod] - public void Test_252() - { - } - [TestMethod] - public void Test_253() - { - } - [TestMethod] - public void Test_254() - { - } - [TestMethod] - public void Test_255() - { - } - [TestMethod] - public void Test_256() - { - } - [TestMethod] - public void Test_257() - { - } - [TestMethod] - public void Test_258() - { - } - [TestMethod] - public void Test_259() - { - } - [TestMethod] - public void Test_260() - { - } - [TestMethod] - public void Test_261() - { - } - [TestMethod] - public void Test_262() - { - } - [TestMethod] - public void Test_263() - { - } - [TestMethod] - public void Test_264() - { - } - [TestMethod] - public void Test_265() - { - } - [TestMethod] - public void Test_266() - { - } - [TestMethod] - public void Test_267() - { - } - [TestMethod] - public void Test_268() - { - } - [TestMethod] - public void Test_269() - { - } - [TestMethod] - public void Test_270() - { - } - [TestMethod] - public void Test_271() - { - } - [TestMethod] - public void Test_272() - { - } - [TestMethod] - public void Test_273() - { - } - [TestMethod] - public void Test_274() - { - } - [TestMethod] - public void Test_275() - { - } - [TestMethod] - public void Test_276() - { - } - [TestMethod] - public void Test_277() - { - } - [TestMethod] - public void Test_278() - { - } - [TestMethod] - public void Test_279() - { - } - [TestMethod] - public void Test_280() - { - } - [TestMethod] - public void Test_281() - { - } - [TestMethod] - public void Test_282() - { - } - [TestMethod] - public void Test_283() - { - } - [TestMethod] - public void Test_284() - { - } - [TestMethod] - public void Test_285() - { - } - [TestMethod] - public void Test_286() - { - } - [TestMethod] - public void Test_287() - { - } - [TestMethod] - public void Test_288() - { - } - [TestMethod] - public void Test_289() - { - } - [TestMethod] - public void Test_290() - { - } - [TestMethod] - public void Test_291() - { - } - [TestMethod] - public void Test_292() - { - } - [TestMethod] - public void Test_293() - { - } - [TestMethod] - public void Test_294() - { - } - [TestMethod] - public void Test_295() - { - } - [TestMethod] - public void Test_296() - { - } - [TestMethod] - public void Test_297() - { - } - [TestMethod] - public void Test_298() - { - } - [TestMethod] - public void Test_299() - { - } - [TestMethod] - public void Test_300() - { - } - [TestMethod] - public void Test_301() - { - } - [TestMethod] - public void Test_302() - { - } - [TestMethod] - public void Test_303() - { - } - [TestMethod] - public void Test_304() - { - } - [TestMethod] - public void Test_305() - { - } - [TestMethod] - public void Test_306() - { - } - [TestMethod] - public void Test_307() - { - } - [TestMethod] - public void Test_308() - { - } - [TestMethod] - public void Test_309() - { - } - [TestMethod] - public void Test_310() - { - } - [TestMethod] - public void Test_311() - { - } - [TestMethod] - public void Test_312() - { - } - [TestMethod] - public void Test_313() - { - } - [TestMethod] - public void Test_314() - { - } - [TestMethod] - public void Test_315() - { - } - [TestMethod] - public void Test_316() - { - } - [TestMethod] - public void Test_317() - { - } - [TestMethod] - public void Test_318() - { - } - [TestMethod] - public void Test_319() - { - } - [TestMethod] - public void Test_320() - { - } - [TestMethod] - public void Test_321() - { - } - [TestMethod] - public void Test_322() - { - } - [TestMethod] - public void Test_323() - { - } - [TestMethod] - public void Test_324() - { - } - [TestMethod] - public void Test_325() - { - } - [TestMethod] - public void Test_326() - { - } - [TestMethod] - public void Test_327() - { - } - [TestMethod] - public void Test_328() - { - } - [TestMethod] - public void Test_329() - { - } - [TestMethod] - public void Test_330() - { - } - [TestMethod] - public void Test_331() - { - } - [TestMethod] - public void Test_332() - { - } - [TestMethod] - public void Test_333() - { - } - [TestMethod] - public void Test_334() - { - } - [TestMethod] - public void Test_335() - { - } - [TestMethod] - public void Test_336() - { - } - [TestMethod] - public void Test_337() - { - } - [TestMethod] - public void Test_338() - { - } - [TestMethod] - public void Test_339() - { - } - [TestMethod] - public void Test_340() - { - } - [TestMethod] - public void Test_341() - { - } - [TestMethod] - public void Test_342() - { - } - [TestMethod] - public void Test_343() - { - } - [TestMethod] - public void Test_344() - { - } - [TestMethod] - public void Test_345() - { - } - [TestMethod] - public void Test_346() - { - } - [TestMethod] - public void Test_347() - { - } - [TestMethod] - public void Test_348() - { - } - [TestMethod] - public void Test_349() - { - } - [TestMethod] - public void Test_350() - { - } - [TestMethod] - public void Test_351() - { - } - [TestMethod] - public void Test_352() - { - } - [TestMethod] - public void Test_353() - { - } - [TestMethod] - public void Test_354() - { - } - [TestMethod] - public void Test_355() - { - } - [TestMethod] - public void Test_356() - { - } - [TestMethod] - public void Test_357() - { - } - [TestMethod] - public void Test_358() - { - } - [TestMethod] - public void Test_359() - { - } - [TestMethod] - public void Test_360() - { - } - [TestMethod] - public void Test_361() - { - } - [TestMethod] - public void Test_362() - { - } - [TestMethod] - public void Test_363() - { - } - [TestMethod] - public void Test_364() - { - } - [TestMethod] - public void Test_365() - { - } - [TestMethod] - public void Test_366() - { - } - [TestMethod] - public void Test_367() - { - } - [TestMethod] - public void Test_368() - { - } - [TestMethod] - public void Test_369() - { - } - [TestMethod] - public void Test_370() - { - } - [TestMethod] - public void Test_371() - { - } - [TestMethod] - public void Test_372() - { - } - [TestMethod] - public void Test_373() - { - } - [TestMethod] - public void Test_374() - { - } - [TestMethod] - public void Test_375() - { - } - [TestMethod] - public void Test_376() - { - } - [TestMethod] - public void Test_377() - { - } - [TestMethod] - public void Test_378() - { - } - [TestMethod] - public void Test_379() - { - } - [TestMethod] - public void Test_380() - { - } - [TestMethod] - public void Test_381() - { - } - [TestMethod] - public void Test_382() - { - } - [TestMethod] - public void Test_383() - { - } - [TestMethod] - public void Test_384() - { - } - [TestMethod] - public void Test_385() - { - } - [TestMethod] - public void Test_386() - { - } - [TestMethod] - public void Test_387() - { - } - [TestMethod] - public void Test_388() - { - } - [TestMethod] - public void Test_389() - { - } - [TestMethod] - public void Test_390() - { - } - [TestMethod] - public void Test_391() - { - } - [TestMethod] - public void Test_392() - { - } - [TestMethod] - public void Test_393() - { - } - [TestMethod] - public void Test_394() - { - } - [TestMethod] - public void Test_395() - { - } - [TestMethod] - public void Test_396() - { - } - [TestMethod] - public void Test_397() - { - } - [TestMethod] - public void Test_398() - { - } - [TestMethod] - public void Test_399() - { - } - [TestMethod] - public void Test_400() - { - } - [TestMethod] - public void Test_401() - { - } - [TestMethod] - public void Test_402() - { - } - [TestMethod] - public void Test_403() - { - } - [TestMethod] - public void Test_404() - { - } - [TestMethod] - public void Test_405() - { - } - [TestMethod] - public void Test_406() - { - } - [TestMethod] - public void Test_407() - { - } - [TestMethod] - public void Test_408() - { - } - [TestMethod] - public void Test_409() - { - } - [TestMethod] - public void Test_410() - { - } - [TestMethod] - public void Test_411() - { - } - [TestMethod] - public void Test_412() - { - } - [TestMethod] - public void Test_413() - { - } - [TestMethod] - public void Test_414() - { - } - [TestMethod] - public void Test_415() - { - } - [TestMethod] - public void Test_416() - { - } - [TestMethod] - public void Test_417() - { - } - [TestMethod] - public void Test_418() - { - } - [TestMethod] - public void Test_419() - { - } - [TestMethod] - public void Test_420() - { - } - [TestMethod] - public void Test_421() - { - } - [TestMethod] - public void Test_422() - { - } - [TestMethod] - public void Test_423() - { - } - [TestMethod] - public void Test_424() - { - } - [TestMethod] - public void Test_425() - { - } - [TestMethod] - public void Test_426() - { - } - [TestMethod] - public void Test_427() - { - } - [TestMethod] - public void Test_428() - { - } - [TestMethod] - public void Test_429() - { - } - [TestMethod] - public void Test_430() - { - } - [TestMethod] - public void Test_431() - { - } - [TestMethod] - public void Test_432() - { - } - [TestMethod] - public void Test_433() - { - } - [TestMethod] - public void Test_434() - { - } - [TestMethod] - public void Test_435() - { - } - [TestMethod] - public void Test_436() - { - } - [TestMethod] - public void Test_437() - { - } - [TestMethod] - public void Test_438() - { - } - [TestMethod] - public void Test_439() - { - } - [TestMethod] - public void Test_440() - { - } - [TestMethod] - public void Test_441() - { - } - [TestMethod] - public void Test_442() - { - } - [TestMethod] - public void Test_443() - { - } - [TestMethod] - public void Test_444() - { - } - [TestMethod] - public void Test_445() - { - } - [TestMethod] - public void Test_446() - { - } - [TestMethod] - public void Test_447() - { - } - [TestMethod] - public void Test_448() - { - } - [TestMethod] - public void Test_449() - { - } - [TestMethod] - public void Test_450() - { - } - [TestMethod] - public void Test_451() - { - } - [TestMethod] - public void Test_452() - { - } - [TestMethod] - public void Test_453() - { - } - [TestMethod] - public void Test_454() - { - } - [TestMethod] - public void Test_455() - { - } - [TestMethod] - public void Test_456() - { - } - [TestMethod] - public void Test_457() - { - } - [TestMethod] - public void Test_458() - { - } - [TestMethod] - public void Test_459() - { - } - [TestMethod] - public void Test_460() - { - } - [TestMethod] - public void Test_461() - { - } - [TestMethod] - public void Test_462() - { - } - [TestMethod] - public void Test_463() - { - } - [TestMethod] - public void Test_464() - { - } - [TestMethod] - public void Test_465() - { - } - [TestMethod] - public void Test_466() - { - } - [TestMethod] - public void Test_467() - { - } - [TestMethod] - public void Test_468() - { - } - [TestMethod] - public void Test_469() - { - } - [TestMethod] - public void Test_470() - { - } - [TestMethod] - public void Test_471() - { - } - [TestMethod] - public void Test_472() - { - } - [TestMethod] - public void Test_473() - { - } - [TestMethod] - public void Test_474() - { - } - [TestMethod] - public void Test_475() - { - } - [TestMethod] - public void Test_476() - { - } - [TestMethod] - public void Test_477() - { - } - [TestMethod] - public void Test_478() - { - } - [TestMethod] - public void Test_479() - { - } - [TestMethod] - public void Test_480() - { - } - [TestMethod] - public void Test_481() - { - } - [TestMethod] - public void Test_482() - { - } - [TestMethod] - public void Test_483() - { - } - [TestMethod] - public void Test_484() - { - } - [TestMethod] - public void Test_485() - { - } - [TestMethod] - public void Test_486() - { - } - [TestMethod] - public void Test_487() - { - } - [TestMethod] - public void Test_488() - { - } - [TestMethod] - public void Test_489() - { - } - [TestMethod] - public void Test_490() - { - } - [TestMethod] - public void Test_491() - { - } - [TestMethod] - public void Test_492() - { - } - [TestMethod] - public void Test_493() - { - } - [TestMethod] - public void Test_494() - { - } - [TestMethod] - public void Test_495() - { - } - [TestMethod] - public void Test_496() - { - } - [TestMethod] - public void Test_497() - { - } - [TestMethod] - public void Test_498() - { - } - [TestMethod] - public void Test_499() - { - } - [TestMethod] - public void Test_500() - { - } - [TestMethod] - public void Test_501() - { - } - [TestMethod] - public void Test_502() - { - } - [TestMethod] - public void Test_503() - { - } - [TestMethod] - public void Test_504() - { - } - [TestMethod] - public void Test_505() - { - } - [TestMethod] - public void Test_506() - { - } - [TestMethod] - public void Test_507() - { - } - [TestMethod] - public void Test_508() - { - } - [TestMethod] - public void Test_509() - { - } - [TestMethod] - public void Test_510() - { - } - [TestMethod] - public void Test_511() - { - } - [TestMethod] - public void Test_512() - { - } - [TestMethod] - public void Test_513() - { - } - [TestMethod] - public void Test_514() - { - } - [TestMethod] - public void Test_515() - { - } - [TestMethod] - public void Test_516() - { - } - [TestMethod] - public void Test_517() - { - } - [TestMethod] - public void Test_518() - { - } - [TestMethod] - public void Test_519() - { - } - [TestMethod] - public void Test_520() - { - } - [TestMethod] - public void Test_521() - { - } - [TestMethod] - public void Test_522() - { - } - [TestMethod] - public void Test_523() - { - } - [TestMethod] - public void Test_524() - { - } - [TestMethod] - public void Test_525() - { - } - [TestMethod] - public void Test_526() - { - } - [TestMethod] - public void Test_527() - { - } - [TestMethod] - public void Test_528() - { - } - [TestMethod] - public void Test_529() - { - } - [TestMethod] - public void Test_530() - { - } - [TestMethod] - public void Test_531() - { - } - [TestMethod] - public void Test_532() - { - } - [TestMethod] - public void Test_533() - { - } - [TestMethod] - public void Test_534() - { - } - [TestMethod] - public void Test_535() - { - } - [TestMethod] - public void Test_536() - { - } - [TestMethod] - public void Test_537() - { - } - [TestMethod] - public void Test_538() - { - } - [TestMethod] - public void Test_539() - { - } - [TestMethod] - public void Test_540() - { - } - [TestMethod] - public void Test_541() - { - } - [TestMethod] - public void Test_542() - { - } - [TestMethod] - public void Test_543() - { - } - [TestMethod] - public void Test_544() - { - } - [TestMethod] - public void Test_545() - { - } - [TestMethod] - public void Test_546() - { - } - [TestMethod] - public void Test_547() - { - } - [TestMethod] - public void Test_548() - { - } - [TestMethod] - public void Test_549() - { - } - [TestMethod] - public void Test_550() - { - } - [TestMethod] - public void Test_551() - { - } - [TestMethod] - public void Test_552() - { - } - [TestMethod] - public void Test_553() - { - } - [TestMethod] - public void Test_554() - { - } - [TestMethod] - public void Test_555() - { - } - [TestMethod] - public void Test_556() - { - } - [TestMethod] - public void Test_557() - { - } - [TestMethod] - public void Test_558() - { - } - [TestMethod] - public void Test_559() - { - } - [TestMethod] - public void Test_560() - { - } - [TestMethod] - public void Test_561() - { - } - [TestMethod] - public void Test_562() - { - } - [TestMethod] - public void Test_563() - { - } - [TestMethod] - public void Test_564() - { - } - [TestMethod] - public void Test_565() - { - } - [TestMethod] - public void Test_566() - { - } - [TestMethod] - public void Test_567() - { - } - [TestMethod] - public void Test_568() - { - } - [TestMethod] - public void Test_569() - { - } - [TestMethod] - public void Test_570() - { - } - [TestMethod] - public void Test_571() - { - } - [TestMethod] - public void Test_572() - { - } - [TestMethod] - public void Test_573() - { - } - [TestMethod] - public void Test_574() - { - } - [TestMethod] - public void Test_575() - { - } - [TestMethod] - public void Test_576() - { - } - [TestMethod] - public void Test_577() - { - } - [TestMethod] - public void Test_578() - { - } - [TestMethod] - public void Test_579() - { - } - [TestMethod] - public void Test_580() - { - } - [TestMethod] - public void Test_581() - { - } - [TestMethod] - public void Test_582() - { - } - [TestMethod] - public void Test_583() - { - } - [TestMethod] - public void Test_584() - { - } - [TestMethod] - public void Test_585() - { - } - [TestMethod] - public void Test_586() - { - } - [TestMethod] - public void Test_587() - { - } - [TestMethod] - public void Test_588() - { - } - [TestMethod] - public void Test_589() - { - } - [TestMethod] - public void Test_590() - { - } - [TestMethod] - public void Test_591() - { - } - [TestMethod] - public void Test_592() - { - } - [TestMethod] - public void Test_593() - { - } - [TestMethod] - public void Test_594() - { - } - [TestMethod] - public void Test_595() - { - } - [TestMethod] - public void Test_596() - { - } - [TestMethod] - public void Test_597() - { - } - [TestMethod] - public void Test_598() - { - } - [TestMethod] - public void Test_599() - { - } - [TestMethod] - public void Test_600() - { - } - [TestMethod] - public void Test_601() - { - } - [TestMethod] - public void Test_602() - { - } - [TestMethod] - public void Test_603() - { - } - [TestMethod] - public void Test_604() - { - } - [TestMethod] - public void Test_605() - { - } - [TestMethod] - public void Test_606() - { - } - [TestMethod] - public void Test_607() - { - } - [TestMethod] - public void Test_608() - { - } - [TestMethod] - public void Test_609() - { - } - [TestMethod] - public void Test_610() - { - } - [TestMethod] - public void Test_611() - { - } - [TestMethod] - public void Test_612() - { - } - [TestMethod] - public void Test_613() - { - } - [TestMethod] - public void Test_614() - { - } - [TestMethod] - public void Test_615() - { - } - [TestMethod] - public void Test_616() - { - } - [TestMethod] - public void Test_617() - { - } - [TestMethod] - public void Test_618() - { - } - [TestMethod] - public void Test_619() - { - } - [TestMethod] - public void Test_620() - { - } - [TestMethod] - public void Test_621() - { - } - [TestMethod] - public void Test_622() - { - } - [TestMethod] - public void Test_623() - { - } - [TestMethod] - public void Test_624() - { - } - [TestMethod] - public void Test_625() - { - } - [TestMethod] - public void Test_626() - { - } - [TestMethod] - public void Test_627() - { - } - [TestMethod] - public void Test_628() - { - } - [TestMethod] - public void Test_629() - { - } - [TestMethod] - public void Test_630() - { - } - [TestMethod] - public void Test_631() - { - } - [TestMethod] - public void Test_632() - { - } - [TestMethod] - public void Test_633() - { - } - [TestMethod] - public void Test_634() - { - } - [TestMethod] - public void Test_635() - { - } - [TestMethod] - public void Test_636() - { - } - [TestMethod] - public void Test_637() - { - } - [TestMethod] - public void Test_638() - { - } - [TestMethod] - public void Test_639() - { - } - [TestMethod] - public void Test_640() - { - } - [TestMethod] - public void Test_641() - { - } - [TestMethod] - public void Test_642() - { - } - [TestMethod] - public void Test_643() - { - } - [TestMethod] - public void Test_644() - { - } - [TestMethod] - public void Test_645() - { - } - [TestMethod] - public void Test_646() - { - } - [TestMethod] - public void Test_647() - { - } - [TestMethod] - public void Test_648() - { - } - [TestMethod] - public void Test_649() - { - } - [TestMethod] - public void Test_650() - { - } - [TestMethod] - public void Test_651() - { - } - [TestMethod] - public void Test_652() - { - } - [TestMethod] - public void Test_653() - { - } - [TestMethod] - public void Test_654() - { - } - [TestMethod] - public void Test_655() - { - } - [TestMethod] - public void Test_656() - { - } - [TestMethod] - public void Test_657() - { - } - [TestMethod] - public void Test_658() - { - } - [TestMethod] - public void Test_659() - { - } - [TestMethod] - public void Test_660() - { - } - [TestMethod] - public void Test_661() - { - } - [TestMethod] - public void Test_662() - { - } - [TestMethod] - public void Test_663() - { - } - [TestMethod] - public void Test_664() - { - } - [TestMethod] - public void Test_665() - { - } - [TestMethod] - public void Test_666() - { - } - [TestMethod] - public void Test_667() - { - } - [TestMethod] - public void Test_668() - { - } - [TestMethod] - public void Test_669() - { - } - [TestMethod] - public void Test_670() - { - } - [TestMethod] - public void Test_671() - { - } - [TestMethod] - public void Test_672() - { - } - [TestMethod] - public void Test_673() - { - } - [TestMethod] - public void Test_674() - { - } - [TestMethod] - public void Test_675() - { - } - [TestMethod] - public void Test_676() - { - } - [TestMethod] - public void Test_677() - { - } - [TestMethod] - public void Test_678() - { - } - [TestMethod] - public void Test_679() - { - } - [TestMethod] - public void Test_680() - { - } - [TestMethod] - public void Test_681() - { - } - [TestMethod] - public void Test_682() - { - } - [TestMethod] - public void Test_683() - { - } - [TestMethod] - public void Test_684() - { - } - [TestMethod] - public void Test_685() - { - } - [TestMethod] - public void Test_686() - { - } - [TestMethod] - public void Test_687() - { - } - [TestMethod] - public void Test_688() - { - } - [TestMethod] - public void Test_689() - { - } - [TestMethod] - public void Test_690() - { - } - [TestMethod] - public void Test_691() - { - } - [TestMethod] - public void Test_692() - { - } - [TestMethod] - public void Test_693() - { - } - [TestMethod] - public void Test_694() - { - } - [TestMethod] - public void Test_695() - { - } - [TestMethod] - public void Test_696() - { - } - [TestMethod] - public void Test_697() - { - } - [TestMethod] - public void Test_698() - { - } - [TestMethod] - public void Test_699() - { - } - [TestMethod] - public void Test_700() - { - } - [TestMethod] - public void Test_701() - { - } - [TestMethod] - public void Test_702() - { - } - [TestMethod] - public void Test_703() - { - } - [TestMethod] - public void Test_704() - { - } - [TestMethod] - public void Test_705() - { - } - [TestMethod] - public void Test_706() - { - } - [TestMethod] - public void Test_707() - { - } - [TestMethod] - public void Test_708() - { - } - [TestMethod] - public void Test_709() - { - } - [TestMethod] - public void Test_710() - { - } - [TestMethod] - public void Test_711() - { - } - [TestMethod] - public void Test_712() - { - } - [TestMethod] - public void Test_713() - { - } - [TestMethod] - public void Test_714() - { - } - [TestMethod] - public void Test_715() - { - } - [TestMethod] - public void Test_716() - { - } - [TestMethod] - public void Test_717() - { - } - [TestMethod] - public void Test_718() - { - } - [TestMethod] - public void Test_719() - { - } - [TestMethod] - public void Test_720() - { - } - [TestMethod] - public void Test_721() - { - } - [TestMethod] - public void Test_722() - { - } - [TestMethod] - public void Test_723() - { - } - [TestMethod] - public void Test_724() - { - } - [TestMethod] - public void Test_725() - { - } - [TestMethod] - public void Test_726() - { - } - [TestMethod] - public void Test_727() - { - } - [TestMethod] - public void Test_728() - { - } - [TestMethod] - public void Test_729() - { - } - [TestMethod] - public void Test_730() - { - } - [TestMethod] - public void Test_731() - { - } - [TestMethod] - public void Test_732() - { - } - [TestMethod] - public void Test_733() - { - } - [TestMethod] - public void Test_734() - { - } - [TestMethod] - public void Test_735() - { - } - [TestMethod] - public void Test_736() - { - } - [TestMethod] - public void Test_737() - { - } - [TestMethod] - public void Test_738() - { - } - [TestMethod] - public void Test_739() - { - } - [TestMethod] - public void Test_740() - { - } - [TestMethod] - public void Test_741() - { - } - [TestMethod] - public void Test_742() - { - } - [TestMethod] - public void Test_743() - { - } - [TestMethod] - public void Test_744() - { - } - [TestMethod] - public void Test_745() - { - } - [TestMethod] - public void Test_746() - { - } - [TestMethod] - public void Test_747() - { - } - [TestMethod] - public void Test_748() - { - } - [TestMethod] - public void Test_749() - { - } - [TestMethod] - public void Test_750() - { - } - [TestMethod] - public void Test_751() - { - } - [TestMethod] - public void Test_752() - { - } - [TestMethod] - public void Test_753() - { - } - [TestMethod] - public void Test_754() - { - } - [TestMethod] - public void Test_755() - { - } - [TestMethod] - public void Test_756() - { - } - [TestMethod] - public void Test_757() - { - } - [TestMethod] - public void Test_758() - { - } - [TestMethod] - public void Test_759() - { - } - [TestMethod] - public void Test_760() - { - } - [TestMethod] - public void Test_761() - { - } - [TestMethod] - public void Test_762() - { - } - [TestMethod] - public void Test_763() - { - } - [TestMethod] - public void Test_764() - { - } - [TestMethod] - public void Test_765() - { - } - [TestMethod] - public void Test_766() - { - } - [TestMethod] - public void Test_767() - { - } - [TestMethod] - public void Test_768() - { - } - [TestMethod] - public void Test_769() - { - } - [TestMethod] - public void Test_770() - { - } - [TestMethod] - public void Test_771() - { - } - [TestMethod] - public void Test_772() - { - } - [TestMethod] - public void Test_773() - { - } - [TestMethod] - public void Test_774() - { - } - [TestMethod] - public void Test_775() - { - } - [TestMethod] - public void Test_776() - { - } - [TestMethod] - public void Test_777() - { - } - [TestMethod] - public void Test_778() - { - } - [TestMethod] - public void Test_779() - { - } - [TestMethod] - public void Test_780() - { - } - [TestMethod] - public void Test_781() - { - } - [TestMethod] - public void Test_782() - { - } - [TestMethod] - public void Test_783() - { - } - [TestMethod] - public void Test_784() - { - } - [TestMethod] - public void Test_785() - { - } - [TestMethod] - public void Test_786() - { - } - [TestMethod] - public void Test_787() - { - } - [TestMethod] - public void Test_788() - { - } - [TestMethod] - public void Test_789() - { - } - [TestMethod] - public void Test_790() - { - } - [TestMethod] - public void Test_791() - { - } - [TestMethod] - public void Test_792() - { - } - [TestMethod] - public void Test_793() - { - } - [TestMethod] - public void Test_794() - { - } - [TestMethod] - public void Test_795() - { - } - [TestMethod] - public void Test_796() - { - } - [TestMethod] - public void Test_797() - { - } - [TestMethod] - public void Test_798() - { - } - [TestMethod] - public void Test_799() - { - } - [TestMethod] - public void Test_800() - { - } - [TestMethod] - public void Test_801() - { - } - [TestMethod] - public void Test_802() - { - } - [TestMethod] - public void Test_803() - { - } - [TestMethod] - public void Test_804() - { - } - [TestMethod] - public void Test_805() - { - } - [TestMethod] - public void Test_806() - { - } - [TestMethod] - public void Test_807() - { - } - [TestMethod] - public void Test_808() - { - } - [TestMethod] - public void Test_809() - { - } - [TestMethod] - public void Test_810() - { - } - [TestMethod] - public void Test_811() - { - } - [TestMethod] - public void Test_812() - { - } - [TestMethod] - public void Test_813() - { - } - [TestMethod] - public void Test_814() - { - } - [TestMethod] - public void Test_815() - { - } - [TestMethod] - public void Test_816() - { - } - [TestMethod] - public void Test_817() - { - } - [TestMethod] - public void Test_818() - { - } - [TestMethod] - public void Test_819() - { - } - [TestMethod] - public void Test_820() - { - } - [TestMethod] - public void Test_821() - { - } - [TestMethod] - public void Test_822() - { - } - [TestMethod] - public void Test_823() - { - } - [TestMethod] - public void Test_824() - { - } - [TestMethod] - public void Test_825() - { - } - [TestMethod] - public void Test_826() - { - } - [TestMethod] - public void Test_827() - { - } - [TestMethod] - public void Test_828() - { - } - [TestMethod] - public void Test_829() - { - } - [TestMethod] - public void Test_830() - { - } - [TestMethod] - public void Test_831() - { - } - [TestMethod] - public void Test_832() - { - } - [TestMethod] - public void Test_833() - { - } - [TestMethod] - public void Test_834() - { - } - [TestMethod] - public void Test_835() - { - } - [TestMethod] - public void Test_836() - { - } - [TestMethod] - public void Test_837() - { - } - [TestMethod] - public void Test_838() - { - } - [TestMethod] - public void Test_839() - { - } - [TestMethod] - public void Test_840() - { - } - [TestMethod] - public void Test_841() - { - } - [TestMethod] - public void Test_842() - { - } - [TestMethod] - public void Test_843() - { - } - [TestMethod] - public void Test_844() - { - } - [TestMethod] - public void Test_845() - { - } - [TestMethod] - public void Test_846() - { - } - [TestMethod] - public void Test_847() - { - } - [TestMethod] - public void Test_848() - { - } - [TestMethod] - public void Test_849() - { - } - [TestMethod] - public void Test_850() - { - } - [TestMethod] - public void Test_851() - { - } - [TestMethod] - public void Test_852() - { - } - [TestMethod] - public void Test_853() - { - } - [TestMethod] - public void Test_854() - { - } - [TestMethod] - public void Test_855() - { - } - [TestMethod] - public void Test_856() - { - } - [TestMethod] - public void Test_857() - { - } - [TestMethod] - public void Test_858() - { - } - [TestMethod] - public void Test_859() - { - } - [TestMethod] - public void Test_860() - { - } - [TestMethod] - public void Test_861() - { - } - [TestMethod] - public void Test_862() - { - } - [TestMethod] - public void Test_863() - { - } - [TestMethod] - public void Test_864() - { - } - [TestMethod] - public void Test_865() - { - } - [TestMethod] - public void Test_866() - { - } - [TestMethod] - public void Test_867() - { - } - [TestMethod] - public void Test_868() - { - } - [TestMethod] - public void Test_869() - { - } - [TestMethod] - public void Test_870() - { - } - [TestMethod] - public void Test_871() - { - } - [TestMethod] - public void Test_872() - { - } - [TestMethod] - public void Test_873() - { - } - [TestMethod] - public void Test_874() - { - } - [TestMethod] - public void Test_875() - { - } - [TestMethod] - public void Test_876() - { - } - [TestMethod] - public void Test_877() - { - } - [TestMethod] - public void Test_878() - { - } - [TestMethod] - public void Test_879() - { - } - [TestMethod] - public void Test_880() - { - } - [TestMethod] - public void Test_881() - { - } - [TestMethod] - public void Test_882() - { - } - [TestMethod] - public void Test_883() - { - } - [TestMethod] - public void Test_884() - { - } - [TestMethod] - public void Test_885() - { - } - [TestMethod] - public void Test_886() - { - } - [TestMethod] - public void Test_887() - { - } - [TestMethod] - public void Test_888() - { - } - [TestMethod] - public void Test_889() - { - } - [TestMethod] - public void Test_890() - { - } - [TestMethod] - public void Test_891() - { - } - [TestMethod] - public void Test_892() - { - } - [TestMethod] - public void Test_893() - { - } - [TestMethod] - public void Test_894() - { - } - [TestMethod] - public void Test_895() - { - } - [TestMethod] - public void Test_896() - { - } - [TestMethod] - public void Test_897() - { - } - [TestMethod] - public void Test_898() - { - } - [TestMethod] - public void Test_899() - { - } - [TestMethod] - public void Test_900() - { - } - [TestMethod] - public void Test_901() - { - } - [TestMethod] - public void Test_902() - { - } - [TestMethod] - public void Test_903() - { - } - [TestMethod] - public void Test_904() - { - } - [TestMethod] - public void Test_905() - { - } - [TestMethod] - public void Test_906() - { - } - [TestMethod] - public void Test_907() - { - } - [TestMethod] - public void Test_908() - { - } - [TestMethod] - public void Test_909() - { - } - [TestMethod] - public void Test_910() - { - } - [TestMethod] - public void Test_911() - { - } - [TestMethod] - public void Test_912() - { - } - [TestMethod] - public void Test_913() - { - } - [TestMethod] - public void Test_914() - { - } - [TestMethod] - public void Test_915() - { - } - [TestMethod] - public void Test_916() - { - } - [TestMethod] - public void Test_917() - { - } - [TestMethod] - public void Test_918() - { - } - [TestMethod] - public void Test_919() - { - } - [TestMethod] - public void Test_920() - { - } - [TestMethod] - public void Test_921() - { - } - [TestMethod] - public void Test_922() - { - } - [TestMethod] - public void Test_923() - { - } - [TestMethod] - public void Test_924() - { - } - [TestMethod] - public void Test_925() - { - } - [TestMethod] - public void Test_926() - { - } - [TestMethod] - public void Test_927() - { - } - [TestMethod] - public void Test_928() - { - } - [TestMethod] - public void Test_929() - { - } - [TestMethod] - public void Test_930() - { - } - [TestMethod] - public void Test_931() - { - } - [TestMethod] - public void Test_932() - { - } - [TestMethod] - public void Test_933() - { - } - [TestMethod] - public void Test_934() - { - } - [TestMethod] - public void Test_935() - { - } - [TestMethod] - public void Test_936() - { - } - [TestMethod] - public void Test_937() - { - } - [TestMethod] - public void Test_938() - { - } - [TestMethod] - public void Test_939() - { - } - [TestMethod] - public void Test_940() - { - } - [TestMethod] - public void Test_941() - { - } - [TestMethod] - public void Test_942() - { - } - [TestMethod] - public void Test_943() - { - } - [TestMethod] - public void Test_944() - { - } - [TestMethod] - public void Test_945() - { - } - [TestMethod] - public void Test_946() - { - } - [TestMethod] - public void Test_947() - { - } - [TestMethod] - public void Test_948() - { - } - [TestMethod] - public void Test_949() - { - } - [TestMethod] - public void Test_950() - { - } - [TestMethod] - public void Test_951() - { - } - [TestMethod] - public void Test_952() - { - } - [TestMethod] - public void Test_953() - { - } - [TestMethod] - public void Test_954() - { - } - [TestMethod] - public void Test_955() - { - } - [TestMethod] - public void Test_956() - { - } - [TestMethod] - public void Test_957() - { - } - [TestMethod] - public void Test_958() - { - } - [TestMethod] - public void Test_959() - { - } - [TestMethod] - public void Test_960() - { - } - [TestMethod] - public void Test_961() - { - } - [TestMethod] - public void Test_962() - { - } - [TestMethod] - public void Test_963() - { - } - [TestMethod] - public void Test_964() - { - } - [TestMethod] - public void Test_965() - { - } - [TestMethod] - public void Test_966() - { - } - [TestMethod] - public void Test_967() - { - } - [TestMethod] - public void Test_968() - { - } - [TestMethod] - public void Test_969() - { - } - [TestMethod] - public void Test_970() - { - } - [TestMethod] - public void Test_971() - { - } - [TestMethod] - public void Test_972() - { - } - [TestMethod] - public void Test_973() - { - } - [TestMethod] - public void Test_974() - { - } - [TestMethod] - public void Test_975() - { - } - [TestMethod] - public void Test_976() - { - } - [TestMethod] - public void Test_977() - { - } - [TestMethod] - public void Test_978() - { - } - [TestMethod] - public void Test_979() - { - } - [TestMethod] - public void Test_980() - { - } - [TestMethod] - public void Test_981() - { - } - [TestMethod] - public void Test_982() - { - } - [TestMethod] - public void Test_983() - { - } - [TestMethod] - public void Test_984() - { - } - [TestMethod] - public void Test_985() - { - } - [TestMethod] - public void Test_986() - { - } - [TestMethod] - public void Test_987() - { - } - [TestMethod] - public void Test_988() - { - } - [TestMethod] - public void Test_989() - { - } - [TestMethod] - public void Test_990() - { - } - [TestMethod] - public void Test_991() - { - } - [TestMethod] - public void Test_992() - { - } - [TestMethod] - public void Test_993() - { - } - [TestMethod] - public void Test_994() - { - } - [TestMethod] - public void Test_995() - { - } - [TestMethod] - public void Test_996() - { - } - [TestMethod] - public void Test_997() - { - } - [TestMethod] - public void Test_998() - { - } - [TestMethod] - public void Test_999() - { - } - [TestMethod] - public void Test_1000() - { - } - [TestMethod] - public void Test_1001() - { - } - [TestMethod] - public void Test_1002() - { - } - [TestMethod] - public void Test_1003() - { - } - [TestMethod] - public void Test_1004() - { - } - [TestMethod] - public void Test_1005() - { - } - [TestMethod] - public void Test_1006() - { - } - [TestMethod] - public void Test_1007() - { - } - [TestMethod] - public void Test_1008() - { - } - [TestMethod] - public void Test_1009() - { - } - [TestMethod] - public void Test_1010() - { - } - [TestMethod] - public void Test_1011() - { - } - [TestMethod] - public void Test_1012() - { - } - [TestMethod] - public void Test_1013() - { - } - [TestMethod] - public void Test_1014() - { - } - [TestMethod] - public void Test_1015() - { - } - [TestMethod] - public void Test_1016() - { - } - [TestMethod] - public void Test_1017() - { - } - [TestMethod] - public void Test_1018() - { - } - [TestMethod] - public void Test_1019() - { - } - [TestMethod] - public void Test_1020() - { - } - [TestMethod] - public void Test_1021() - { - } - [TestMethod] - public void Test_1022() - { - } - [TestMethod] - public void Test_1023() - { - } - [TestMethod] - public void Test_1024() - { - } - [TestMethod] - public void Test_1025() - { - } - [TestMethod] - public void Test_1026() - { - } - [TestMethod] - public void Test_1027() - { - } - [TestMethod] - public void Test_1028() - { - } - [TestMethod] - public void Test_1029() - { - } - [TestMethod] - public void Test_1030() - { - } - [TestMethod] - public void Test_1031() - { - } - [TestMethod] - public void Test_1032() - { - } - [TestMethod] - public void Test_1033() - { - } - [TestMethod] - public void Test_1034() - { - } - [TestMethod] - public void Test_1035() - { - } - [TestMethod] - public void Test_1036() - { - } - [TestMethod] - public void Test_1037() - { - } - [TestMethod] - public void Test_1038() - { - } - [TestMethod] - public void Test_1039() - { - } - [TestMethod] - public void Test_1040() - { - } - [TestMethod] - public void Test_1041() - { - } - [TestMethod] - public void Test_1042() - { - } - [TestMethod] - public void Test_1043() - { - } - [TestMethod] - public void Test_1044() - { - } - [TestMethod] - public void Test_1045() - { - } - [TestMethod] - public void Test_1046() - { - } - [TestMethod] - public void Test_1047() - { - } - [TestMethod] - public void Test_1048() - { - } - [TestMethod] - public void Test_1049() - { - } - [TestMethod] - public void Test_1050() - { - } - [TestMethod] - public void Test_1051() - { - } - [TestMethod] - public void Test_1052() - { - } - [TestMethod] - public void Test_1053() - { - } - [TestMethod] - public void Test_1054() - { - } - [TestMethod] - public void Test_1055() - { - } - [TestMethod] - public void Test_1056() - { - } - [TestMethod] - public void Test_1057() - { - } - [TestMethod] - public void Test_1058() - { - } - [TestMethod] - public void Test_1059() - { - } - [TestMethod] - public void Test_1060() - { - } - [TestMethod] - public void Test_1061() - { - } - [TestMethod] - public void Test_1062() - { - } - [TestMethod] - public void Test_1063() - { - } - [TestMethod] - public void Test_1064() - { - } - [TestMethod] - public void Test_1065() - { - } - [TestMethod] - public void Test_1066() - { - } - [TestMethod] - public void Test_1067() - { - } - [TestMethod] - public void Test_1068() - { - } - [TestMethod] - public void Test_1069() - { - } - [TestMethod] - public void Test_1070() - { - } - [TestMethod] - public void Test_1071() - { - } - [TestMethod] - public void Test_1072() - { - } - [TestMethod] - public void Test_1073() - { - } - [TestMethod] - public void Test_1074() - { - } - [TestMethod] - public void Test_1075() - { - } - [TestMethod] - public void Test_1076() - { - } - [TestMethod] - public void Test_1077() - { - } - [TestMethod] - public void Test_1078() - { - } - [TestMethod] - public void Test_1079() - { - } - [TestMethod] - public void Test_1080() - { - } - [TestMethod] - public void Test_1081() - { - } - [TestMethod] - public void Test_1082() - { - } - [TestMethod] - public void Test_1083() - { - } - [TestMethod] - public void Test_1084() - { - } - [TestMethod] - public void Test_1085() - { - } - [TestMethod] - public void Test_1086() - { - } - [TestMethod] - public void Test_1087() - { - } - [TestMethod] - public void Test_1088() - { - } - [TestMethod] - public void Test_1089() - { - } - [TestMethod] - public void Test_1090() - { - } - [TestMethod] - public void Test_1091() - { - } - [TestMethod] - public void Test_1092() - { - } - [TestMethod] - public void Test_1093() - { - } - [TestMethod] - public void Test_1094() - { - } - [TestMethod] - public void Test_1095() - { - } - [TestMethod] - public void Test_1096() - { - } - [TestMethod] - public void Test_1097() - { - } - [TestMethod] - public void Test_1098() - { - } - [TestMethod] - public void Test_1099() - { - } - [TestMethod] - public void Test_1100() - { - } - [TestMethod] - public void Test_1101() - { - } - [TestMethod] - public void Test_1102() - { - } - [TestMethod] - public void Test_1103() - { - } - [TestMethod] - public void Test_1104() - { - } - [TestMethod] - public void Test_1105() - { - } - [TestMethod] - public void Test_1106() - { - } - [TestMethod] - public void Test_1107() - { - } - [TestMethod] - public void Test_1108() - { - } - [TestMethod] - public void Test_1109() - { - } - [TestMethod] - public void Test_1110() - { - } - [TestMethod] - public void Test_1111() - { - } - [TestMethod] - public void Test_1112() - { - } - [TestMethod] - public void Test_1113() - { - } - [TestMethod] - public void Test_1114() - { - } - [TestMethod] - public void Test_1115() - { - } - [TestMethod] - public void Test_1116() - { - } - [TestMethod] - public void Test_1117() - { - } - [TestMethod] - public void Test_1118() - { - } - [TestMethod] - public void Test_1119() - { - } - [TestMethod] - public void Test_1120() - { - } - [TestMethod] - public void Test_1121() - { - } - [TestMethod] - public void Test_1122() - { - } - [TestMethod] - public void Test_1123() - { - } - [TestMethod] - public void Test_1124() - { - } - [TestMethod] - public void Test_1125() - { - } - [TestMethod] - public void Test_1126() - { - } - [TestMethod] - public void Test_1127() - { - } - [TestMethod] - public void Test_1128() - { - } - [TestMethod] - public void Test_1129() - { - } - [TestMethod] - public void Test_1130() - { - } - [TestMethod] - public void Test_1131() - { - } - [TestMethod] - public void Test_1132() - { - } - [TestMethod] - public void Test_1133() - { - } - [TestMethod] - public void Test_1134() - { - } - [TestMethod] - public void Test_1135() - { - } - [TestMethod] - public void Test_1136() - { - } - [TestMethod] - public void Test_1137() - { - } - [TestMethod] - public void Test_1138() - { - } - [TestMethod] - public void Test_1139() - { - } - [TestMethod] - public void Test_1140() - { - } - [TestMethod] - public void Test_1141() - { - } - [TestMethod] - public void Test_1142() - { - } - [TestMethod] - public void Test_1143() - { - } - [TestMethod] - public void Test_1144() - { - } - [TestMethod] - public void Test_1145() - { - } - [TestMethod] - public void Test_1146() - { - } - [TestMethod] - public void Test_1147() - { - } - [TestMethod] - public void Test_1148() - { - } - [TestMethod] - public void Test_1149() - { - } - [TestMethod] - public void Test_1150() - { - } - [TestMethod] - public void Test_1151() - { - } - [TestMethod] - public void Test_1152() - { - } - [TestMethod] - public void Test_1153() - { - } - [TestMethod] - public void Test_1154() - { - } - [TestMethod] - public void Test_1155() - { - } - [TestMethod] - public void Test_1156() - { - } - [TestMethod] - public void Test_1157() - { - } - [TestMethod] - public void Test_1158() - { - } - [TestMethod] - public void Test_1159() - { - } - [TestMethod] - public void Test_1160() - { - } - [TestMethod] - public void Test_1161() - { - } - [TestMethod] - public void Test_1162() - { - } - [TestMethod] - public void Test_1163() - { - } - [TestMethod] - public void Test_1164() - { - } - [TestMethod] - public void Test_1165() - { - } - [TestMethod] - public void Test_1166() - { - } - [TestMethod] - public void Test_1167() - { - } - [TestMethod] - public void Test_1168() - { - } - [TestMethod] - public void Test_1169() - { - } - [TestMethod] - public void Test_1170() - { - } - [TestMethod] - public void Test_1171() - { - } - [TestMethod] - public void Test_1172() - { - } - [TestMethod] - public void Test_1173() - { - } - [TestMethod] - public void Test_1174() - { - } - [TestMethod] - public void Test_1175() - { - } - [TestMethod] - public void Test_1176() - { - } - [TestMethod] - public void Test_1177() - { - } - [TestMethod] - public void Test_1178() - { - } - [TestMethod] - public void Test_1179() - { - } - [TestMethod] - public void Test_1180() - { - } - [TestMethod] - public void Test_1181() - { - } - [TestMethod] - public void Test_1182() - { - } - [TestMethod] - public void Test_1183() - { - } - [TestMethod] - public void Test_1184() - { - } - [TestMethod] - public void Test_1185() - { - } - [TestMethod] - public void Test_1186() - { - } - [TestMethod] - public void Test_1187() - { - } - [TestMethod] - public void Test_1188() - { - } - [TestMethod] - public void Test_1189() - { - } - [TestMethod] - public void Test_1190() - { - } - [TestMethod] - public void Test_1191() - { - } - [TestMethod] - public void Test_1192() - { - } - [TestMethod] - public void Test_1193() - { - } - [TestMethod] - public void Test_1194() - { - } - [TestMethod] - public void Test_1195() - { - } - [TestMethod] - public void Test_1196() - { - } - [TestMethod] - public void Test_1197() - { - } - [TestMethod] - public void Test_1198() - { - } - [TestMethod] - public void Test_1199() - { - } - [TestMethod] - public void Test_1200() - { - } - [TestMethod] - public void Test_1201() - { - } - [TestMethod] - public void Test_1202() - { - } - [TestMethod] - public void Test_1203() - { - } - [TestMethod] - public void Test_1204() - { - } - [TestMethod] - public void Test_1205() - { - } - [TestMethod] - public void Test_1206() - { - } - [TestMethod] - public void Test_1207() - { - } - [TestMethod] - public void Test_1208() - { - } - [TestMethod] - public void Test_1209() - { - } - [TestMethod] - public void Test_1210() - { - } - [TestMethod] - public void Test_1211() - { - } - [TestMethod] - public void Test_1212() - { - } - [TestMethod] - public void Test_1213() - { - } - [TestMethod] - public void Test_1214() - { - } - [TestMethod] - public void Test_1215() - { - } - [TestMethod] - public void Test_1216() - { - } - [TestMethod] - public void Test_1217() - { - } - [TestMethod] - public void Test_1218() - { - } - [TestMethod] - public void Test_1219() - { - } - [TestMethod] - public void Test_1220() - { - } - [TestMethod] - public void Test_1221() - { - } - [TestMethod] - public void Test_1222() - { - } - [TestMethod] - public void Test_1223() - { - } - [TestMethod] - public void Test_1224() - { - } - [TestMethod] - public void Test_1225() - { - } - [TestMethod] - public void Test_1226() - { - } - [TestMethod] - public void Test_1227() - { - } - [TestMethod] - public void Test_1228() - { - } - [TestMethod] - public void Test_1229() - { - } - [TestMethod] - public void Test_1230() - { - } - [TestMethod] - public void Test_1231() - { - } - [TestMethod] - public void Test_1232() - { - } - [TestMethod] - public void Test_1233() - { - } - [TestMethod] - public void Test_1234() - { - } - [TestMethod] - public void Test_1235() - { - } - [TestMethod] - public void Test_1236() - { - } - [TestMethod] - public void Test_1237() - { - } - [TestMethod] - public void Test_1238() - { - } - [TestMethod] - public void Test_1239() - { - } - [TestMethod] - public void Test_1240() - { - } - [TestMethod] - public void Test_1241() - { - } - [TestMethod] - public void Test_1242() - { - } - [TestMethod] - public void Test_1243() - { - } - [TestMethod] - public void Test_1244() - { - } - [TestMethod] - public void Test_1245() - { - } - [TestMethod] - public void Test_1246() - { - } - [TestMethod] - public void Test_1247() - { - } - [TestMethod] - public void Test_1248() - { - } - [TestMethod] - public void Test_1249() - { - } - [TestMethod] - public void Test_1250() - { - } - [TestMethod] - public void Test_1251() - { - } - [TestMethod] - public void Test_1252() - { - } - [TestMethod] - public void Test_1253() - { - } - [TestMethod] - public void Test_1254() - { - } - [TestMethod] - public void Test_1255() - { - } - [TestMethod] - public void Test_1256() - { - } - [TestMethod] - public void Test_1257() - { - } - [TestMethod] - public void Test_1258() - { - } - [TestMethod] - public void Test_1259() - { - } - [TestMethod] - public void Test_1260() - { - } - [TestMethod] - public void Test_1261() - { - } - [TestMethod] - public void Test_1262() - { - } - [TestMethod] - public void Test_1263() - { - } - [TestMethod] - public void Test_1264() - { - } - [TestMethod] - public void Test_1265() - { - } - [TestMethod] - public void Test_1266() - { - } - [TestMethod] - public void Test_1267() - { - } - [TestMethod] - public void Test_1268() - { - } - [TestMethod] - public void Test_1269() - { - } - [TestMethod] - public void Test_1270() - { - } - [TestMethod] - public void Test_1271() - { - } - [TestMethod] - public void Test_1272() - { - } - [TestMethod] - public void Test_1273() - { - } - [TestMethod] - public void Test_1274() - { - } - [TestMethod] - public void Test_1275() - { - } - [TestMethod] - public void Test_1276() - { - } - [TestMethod] - public void Test_1277() - { - } - [TestMethod] - public void Test_1278() - { - } - [TestMethod] - public void Test_1279() - { - } - [TestMethod] - public void Test_1280() - { - } - [TestMethod] - public void Test_1281() - { - } - [TestMethod] - public void Test_1282() - { - } - [TestMethod] - public void Test_1283() - { - } - [TestMethod] - public void Test_1284() - { - } - [TestMethod] - public void Test_1285() - { - } - [TestMethod] - public void Test_1286() - { - } - [TestMethod] - public void Test_1287() - { - } - [TestMethod] - public void Test_1288() - { - } - [TestMethod] - public void Test_1289() - { - } - [TestMethod] - public void Test_1290() - { - } - [TestMethod] - public void Test_1291() - { - } - [TestMethod] - public void Test_1292() - { - } - [TestMethod] - public void Test_1293() - { - } - [TestMethod] - public void Test_1294() - { - } - [TestMethod] - public void Test_1295() - { - } - [TestMethod] - public void Test_1296() - { - } - [TestMethod] - public void Test_1297() - { - } - [TestMethod] - public void Test_1298() - { - } - [TestMethod] - public void Test_1299() - { - } - [TestMethod] - public void Test_1300() - { - } - [TestMethod] - public void Test_1301() - { - } - [TestMethod] - public void Test_1302() - { - } - [TestMethod] - public void Test_1303() - { - } - [TestMethod] - public void Test_1304() - { - } - [TestMethod] - public void Test_1305() - { - } - [TestMethod] - public void Test_1306() - { - } - [TestMethod] - public void Test_1307() - { - } - [TestMethod] - public void Test_1308() - { - } - [TestMethod] - public void Test_1309() - { - } - [TestMethod] - public void Test_1310() - { - } - [TestMethod] - public void Test_1311() - { - } - [TestMethod] - public void Test_1312() - { - } - [TestMethod] - public void Test_1313() - { - } - [TestMethod] - public void Test_1314() - { - } - [TestMethod] - public void Test_1315() - { - } - [TestMethod] - public void Test_1316() - { - } - [TestMethod] - public void Test_1317() - { - } - [TestMethod] - public void Test_1318() - { - } - [TestMethod] - public void Test_1319() - { - } - [TestMethod] - public void Test_1320() - { - } - [TestMethod] - public void Test_1321() - { - } - [TestMethod] - public void Test_1322() - { - } - [TestMethod] - public void Test_1323() - { - } - [TestMethod] - public void Test_1324() - { - } - [TestMethod] - public void Test_1325() - { - } - [TestMethod] - public void Test_1326() - { - } - [TestMethod] - public void Test_1327() - { - } - [TestMethod] - public void Test_1328() - { - } - [TestMethod] - public void Test_1329() - { - } - [TestMethod] - public void Test_1330() - { - } - [TestMethod] - public void Test_1331() - { - } - [TestMethod] - public void Test_1332() - { - } - [TestMethod] - public void Test_1333() - { - } - [TestMethod] - public void Test_1334() - { - } - [TestMethod] - public void Test_1335() - { - } - [TestMethod] - public void Test_1336() - { - } - [TestMethod] - public void Test_1337() - { - } - [TestMethod] - public void Test_1338() - { - } - [TestMethod] - public void Test_1339() - { - } - [TestMethod] - public void Test_1340() - { - } - [TestMethod] - public void Test_1341() - { - } - [TestMethod] - public void Test_1342() - { - } - [TestMethod] - public void Test_1343() - { - } - [TestMethod] - public void Test_1344() - { - } - [TestMethod] - public void Test_1345() - { - } - [TestMethod] - public void Test_1346() - { - } - [TestMethod] - public void Test_1347() - { - } - [TestMethod] - public void Test_1348() - { - } - [TestMethod] - public void Test_1349() - { - } - [TestMethod] - public void Test_1350() - { - } - [TestMethod] - public void Test_1351() - { - } - [TestMethod] - public void Test_1352() - { - } - [TestMethod] - public void Test_1353() - { - } - [TestMethod] - public void Test_1354() - { - } - [TestMethod] - public void Test_1355() - { - } - [TestMethod] - public void Test_1356() - { - } - [TestMethod] - public void Test_1357() - { - } - [TestMethod] - public void Test_1358() - { - } - [TestMethod] - public void Test_1359() - { - } - [TestMethod] - public void Test_1360() - { - } - [TestMethod] - public void Test_1361() - { - } - [TestMethod] - public void Test_1362() - { - } - [TestMethod] - public void Test_1363() - { - } - [TestMethod] - public void Test_1364() - { - } - [TestMethod] - public void Test_1365() - { - } - [TestMethod] - public void Test_1366() - { - } - [TestMethod] - public void Test_1367() - { - } - [TestMethod] - public void Test_1368() - { - } - [TestMethod] - public void Test_1369() - { - } - [TestMethod] - public void Test_1370() - { - } - [TestMethod] - public void Test_1371() - { - } - [TestMethod] - public void Test_1372() - { - } - [TestMethod] - public void Test_1373() - { - } - [TestMethod] - public void Test_1374() - { - } - [TestMethod] - public void Test_1375() - { - } - [TestMethod] - public void Test_1376() - { - } - [TestMethod] - public void Test_1377() - { - } - [TestMethod] - public void Test_1378() - { - } - [TestMethod] - public void Test_1379() - { - } - [TestMethod] - public void Test_1380() - { - } - [TestMethod] - public void Test_1381() - { - } - [TestMethod] - public void Test_1382() - { - } - [TestMethod] - public void Test_1383() - { - } - [TestMethod] - public void Test_1384() - { - } - [TestMethod] - public void Test_1385() - { - } - [TestMethod] - public void Test_1386() - { - } - [TestMethod] - public void Test_1387() - { - } - [TestMethod] - public void Test_1388() - { - } - [TestMethod] - public void Test_1389() - { - } - [TestMethod] - public void Test_1390() - { - } - [TestMethod] - public void Test_1391() - { - } - [TestMethod] - public void Test_1392() - { - } - [TestMethod] - public void Test_1393() - { - } - [TestMethod] - public void Test_1394() - { - } - [TestMethod] - public void Test_1395() - { - } - [TestMethod] - public void Test_1396() - { - } - [TestMethod] - public void Test_1397() - { - } - [TestMethod] - public void Test_1398() - { - } - [TestMethod] - public void Test_1399() - { - } - [TestMethod] - public void Test_1400() - { - } - [TestMethod] - public void Test_1401() - { - } - [TestMethod] - public void Test_1402() - { - } - [TestMethod] - public void Test_1403() - { - } - [TestMethod] - public void Test_1404() - { - } - [TestMethod] - public void Test_1405() - { - } - [TestMethod] - public void Test_1406() - { - } - [TestMethod] - public void Test_1407() - { - } - [TestMethod] - public void Test_1408() - { - } - [TestMethod] - public void Test_1409() - { - } - [TestMethod] - public void Test_1410() - { - } - [TestMethod] - public void Test_1411() - { - } - [TestMethod] - public void Test_1412() - { - } - [TestMethod] - public void Test_1413() - { - } - [TestMethod] - public void Test_1414() - { - } - [TestMethod] - public void Test_1415() - { - } - [TestMethod] - public void Test_1416() - { - } - [TestMethod] - public void Test_1417() - { - } - [TestMethod] - public void Test_1418() - { - } - [TestMethod] - public void Test_1419() - { - } - [TestMethod] - public void Test_1420() - { - } - [TestMethod] - public void Test_1421() - { - } - [TestMethod] - public void Test_1422() - { - } - [TestMethod] - public void Test_1423() - { - } - [TestMethod] - public void Test_1424() - { - } - [TestMethod] - public void Test_1425() - { - } - [TestMethod] - public void Test_1426() - { - } - [TestMethod] - public void Test_1427() - { - } - [TestMethod] - public void Test_1428() - { - } - [TestMethod] - public void Test_1429() - { - } - [TestMethod] - public void Test_1430() - { - } - [TestMethod] - public void Test_1431() - { - } - [TestMethod] - public void Test_1432() - { - } - [TestMethod] - public void Test_1433() - { - } - [TestMethod] - public void Test_1434() - { - } - [TestMethod] - public void Test_1435() - { - } - [TestMethod] - public void Test_1436() - { - } - [TestMethod] - public void Test_1437() - { - } - [TestMethod] - public void Test_1438() - { - } - [TestMethod] - public void Test_1439() - { - } - [TestMethod] - public void Test_1440() - { - } - [TestMethod] - public void Test_1441() - { - } - [TestMethod] - public void Test_1442() - { - } - [TestMethod] - public void Test_1443() - { - } - [TestMethod] - public void Test_1444() - { - } - [TestMethod] - public void Test_1445() - { - } - [TestMethod] - public void Test_1446() - { - } - [TestMethod] - public void Test_1447() - { - } - [TestMethod] - public void Test_1448() - { - } - [TestMethod] - public void Test_1449() - { - } - [TestMethod] - public void Test_1450() - { - } - [TestMethod] - public void Test_1451() - { - } - [TestMethod] - public void Test_1452() - { - } - [TestMethod] - public void Test_1453() - { - } - [TestMethod] - public void Test_1454() - { - } - [TestMethod] - public void Test_1455() - { - } - [TestMethod] - public void Test_1456() - { - } - [TestMethod] - public void Test_1457() - { - } - [TestMethod] - public void Test_1458() - { - } - [TestMethod] - public void Test_1459() - { - } - [TestMethod] - public void Test_1460() - { - } - [TestMethod] - public void Test_1461() - { - } - [TestMethod] - public void Test_1462() - { - } - [TestMethod] - public void Test_1463() - { - } - [TestMethod] - public void Test_1464() - { - } - [TestMethod] - public void Test_1465() - { - } - [TestMethod] - public void Test_1466() - { - } - [TestMethod] - public void Test_1467() - { - } - [TestMethod] - public void Test_1468() - { - } - [TestMethod] - public void Test_1469() - { - } - [TestMethod] - public void Test_1470() - { - } - [TestMethod] - public void Test_1471() - { - } - [TestMethod] - public void Test_1472() - { - } - [TestMethod] - public void Test_1473() - { - } - [TestMethod] - public void Test_1474() - { - } - [TestMethod] - public void Test_1475() - { - } - [TestMethod] - public void Test_1476() - { - } - [TestMethod] - public void Test_1477() - { - } - [TestMethod] - public void Test_1478() - { - } - [TestMethod] - public void Test_1479() - { - } - [TestMethod] - public void Test_1480() - { - } - [TestMethod] - public void Test_1481() - { - } - [TestMethod] - public void Test_1482() - { - } - [TestMethod] - public void Test_1483() - { - } - [TestMethod] - public void Test_1484() - { - } - [TestMethod] - public void Test_1485() - { - } - [TestMethod] - public void Test_1486() - { - } - [TestMethod] - public void Test_1487() - { - } - [TestMethod] - public void Test_1488() - { - } - [TestMethod] - public void Test_1489() - { - } - [TestMethod] - public void Test_1490() - { - } - [TestMethod] - public void Test_1491() - { - } - [TestMethod] - public void Test_1492() - { - } - [TestMethod] - public void Test_1493() - { - } - [TestMethod] - public void Test_1494() - { - } - [TestMethod] - public void Test_1495() - { - } - [TestMethod] - public void Test_1496() - { - } - [TestMethod] - public void Test_1497() - { - } - [TestMethod] - public void Test_1498() - { - } - [TestMethod] - public void Test_1499() - { - } - [TestMethod] - public void Test_1500() - { - } - [TestMethod] - public void Test_1501() - { - } - [TestMethod] - public void Test_1502() - { - } - [TestMethod] - public void Test_1503() - { - } - [TestMethod] - public void Test_1504() - { - } - [TestMethod] - public void Test_1505() - { - } - [TestMethod] - public void Test_1506() - { - } - [TestMethod] - public void Test_1507() - { - } - [TestMethod] - public void Test_1508() - { - } - [TestMethod] - public void Test_1509() - { - } - [TestMethod] - public void Test_1510() - { - } - [TestMethod] - public void Test_1511() - { - } - [TestMethod] - public void Test_1512() - { - } - [TestMethod] - public void Test_1513() - { - } - [TestMethod] - public void Test_1514() - { - } - [TestMethod] - public void Test_1515() - { - } - [TestMethod] - public void Test_1516() - { - } - [TestMethod] - public void Test_1517() - { - } - [TestMethod] - public void Test_1518() - { - } - [TestMethod] - public void Test_1519() - { - } - [TestMethod] - public void Test_1520() - { - } - [TestMethod] - public void Test_1521() - { - } - [TestMethod] - public void Test_1522() - { - } - [TestMethod] - public void Test_1523() - { - } - [TestMethod] - public void Test_1524() - { - } - [TestMethod] - public void Test_1525() - { - } - [TestMethod] - public void Test_1526() - { - } - [TestMethod] - public void Test_1527() - { - } - [TestMethod] - public void Test_1528() - { - } - [TestMethod] - public void Test_1529() - { - } - [TestMethod] - public void Test_1530() - { - } - [TestMethod] - public void Test_1531() - { - } - [TestMethod] - public void Test_1532() - { - } - [TestMethod] - public void Test_1533() - { - } - [TestMethod] - public void Test_1534() - { - } - [TestMethod] - public void Test_1535() - { - } - [TestMethod] - public void Test_1536() - { - } - [TestMethod] - public void Test_1537() - { - } - [TestMethod] - public void Test_1538() - { - } - [TestMethod] - public void Test_1539() - { - } - [TestMethod] - public void Test_1540() - { - } - [TestMethod] - public void Test_1541() - { - } - [TestMethod] - public void Test_1542() - { - } - [TestMethod] - public void Test_1543() - { - } - [TestMethod] - public void Test_1544() - { - } - [TestMethod] - public void Test_1545() - { - } - [TestMethod] - public void Test_1546() - { - } - [TestMethod] - public void Test_1547() - { - } - [TestMethod] - public void Test_1548() - { - } - [TestMethod] - public void Test_1549() - { - } - [TestMethod] - public void Test_1550() - { - } - [TestMethod] - public void Test_1551() - { - } - [TestMethod] - public void Test_1552() - { - } - [TestMethod] - public void Test_1553() - { - } - [TestMethod] - public void Test_1554() - { - } - [TestMethod] - public void Test_1555() - { - } - [TestMethod] - public void Test_1556() - { - } - [TestMethod] - public void Test_1557() - { - } - [TestMethod] - public void Test_1558() - { - } - [TestMethod] - public void Test_1559() - { - } - [TestMethod] - public void Test_1560() - { - } - [TestMethod] - public void Test_1561() - { - } - [TestMethod] - public void Test_1562() - { - } - [TestMethod] - public void Test_1563() - { - } - [TestMethod] - public void Test_1564() - { - } - [TestMethod] - public void Test_1565() - { - } - [TestMethod] - public void Test_1566() - { - } - [TestMethod] - public void Test_1567() - { - } - [TestMethod] - public void Test_1568() - { - } - [TestMethod] - public void Test_1569() - { - } - [TestMethod] - public void Test_1570() - { - } - [TestMethod] - public void Test_1571() - { - } - [TestMethod] - public void Test_1572() - { - } - [TestMethod] - public void Test_1573() - { - } - [TestMethod] - public void Test_1574() - { - } - [TestMethod] - public void Test_1575() - { - } - [TestMethod] - public void Test_1576() - { - } - [TestMethod] - public void Test_1577() - { - } - [TestMethod] - public void Test_1578() - { - } - [TestMethod] - public void Test_1579() - { - } - [TestMethod] - public void Test_1580() - { - } - [TestMethod] - public void Test_1581() - { - } - [TestMethod] - public void Test_1582() - { - } - [TestMethod] - public void Test_1583() - { - } - [TestMethod] - public void Test_1584() - { - } - [TestMethod] - public void Test_1585() - { - } - [TestMethod] - public void Test_1586() - { - } - [TestMethod] - public void Test_1587() - { - } - [TestMethod] - public void Test_1588() - { - } - [TestMethod] - public void Test_1589() - { - } - [TestMethod] - public void Test_1590() - { - } - [TestMethod] - public void Test_1591() - { - } - [TestMethod] - public void Test_1592() - { - } - [TestMethod] - public void Test_1593() - { - } - [TestMethod] - public void Test_1594() - { - } - [TestMethod] - public void Test_1595() - { - } - [TestMethod] - public void Test_1596() - { - } - [TestMethod] - public void Test_1597() - { - } - [TestMethod] - public void Test_1598() - { - } - [TestMethod] - public void Test_1599() - { - } - [TestMethod] - public void Test_1600() - { - } - [TestMethod] - public void Test_1601() - { - } - [TestMethod] - public void Test_1602() - { - } - [TestMethod] - public void Test_1603() - { - } - [TestMethod] - public void Test_1604() - { - } - [TestMethod] - public void Test_1605() - { - } - [TestMethod] - public void Test_1606() - { - } - [TestMethod] - public void Test_1607() - { - } - [TestMethod] - public void Test_1608() - { - } - [TestMethod] - public void Test_1609() - { - } - [TestMethod] - public void Test_1610() - { - } - [TestMethod] - public void Test_1611() - { - } - [TestMethod] - public void Test_1612() - { - } - [TestMethod] - public void Test_1613() - { - } - [TestMethod] - public void Test_1614() - { - } - [TestMethod] - public void Test_1615() - { - } - [TestMethod] - public void Test_1616() - { - } - [TestMethod] - public void Test_1617() - { - } - [TestMethod] - public void Test_1618() - { - } - [TestMethod] - public void Test_1619() - { - } - [TestMethod] - public void Test_1620() - { - } - [TestMethod] - public void Test_1621() - { - } - [TestMethod] - public void Test_1622() - { - } - [TestMethod] - public void Test_1623() - { - } - [TestMethod] - public void Test_1624() - { - } - [TestMethod] - public void Test_1625() - { - } - [TestMethod] - public void Test_1626() - { - } - [TestMethod] - public void Test_1627() - { - } - [TestMethod] - public void Test_1628() - { - } - [TestMethod] - public void Test_1629() - { - } - [TestMethod] - public void Test_1630() - { - } - [TestMethod] - public void Test_1631() - { - } - [TestMethod] - public void Test_1632() - { - } - [TestMethod] - public void Test_1633() - { - } - [TestMethod] - public void Test_1634() - { - } - [TestMethod] - public void Test_1635() - { - } - [TestMethod] - public void Test_1636() - { - } - [TestMethod] - public void Test_1637() - { - } - [TestMethod] - public void Test_1638() - { - } - [TestMethod] - public void Test_1639() - { - } - [TestMethod] - public void Test_1640() - { - } - [TestMethod] - public void Test_1641() - { - } - [TestMethod] - public void Test_1642() - { - } - [TestMethod] - public void Test_1643() - { - } - [TestMethod] - public void Test_1644() - { - } - [TestMethod] - public void Test_1645() - { - } - [TestMethod] - public void Test_1646() - { - } - [TestMethod] - public void Test_1647() - { - } - [TestMethod] - public void Test_1648() - { - } - [TestMethod] - public void Test_1649() - { - } - [TestMethod] - public void Test_1650() - { - } - [TestMethod] - public void Test_1651() - { - } - [TestMethod] - public void Test_1652() - { - } - [TestMethod] - public void Test_1653() - { - } - [TestMethod] - public void Test_1654() - { - } - [TestMethod] - public void Test_1655() - { - } - [TestMethod] - public void Test_1656() - { - } - [TestMethod] - public void Test_1657() - { - } - [TestMethod] - public void Test_1658() - { - } - [TestMethod] - public void Test_1659() - { - } - [TestMethod] - public void Test_1660() - { - } - [TestMethod] - public void Test_1661() - { - } - [TestMethod] - public void Test_1662() - { - } - [TestMethod] - public void Test_1663() - { - } - [TestMethod] - public void Test_1664() - { - } - [TestMethod] - public void Test_1665() - { - } - [TestMethod] - public void Test_1666() - { - } - [TestMethod] - public void Test_1667() - { - } - [TestMethod] - public void Test_1668() - { - } - [TestMethod] - public void Test_1669() - { - } - [TestMethod] - public void Test_1670() - { - } - [TestMethod] - public void Test_1671() - { - } - [TestMethod] - public void Test_1672() - { - } - [TestMethod] - public void Test_1673() - { - } - [TestMethod] - public void Test_1674() - { - } - [TestMethod] - public void Test_1675() - { - } - [TestMethod] - public void Test_1676() - { - } - [TestMethod] - public void Test_1677() - { - } - [TestMethod] - public void Test_1678() - { - } - [TestMethod] - public void Test_1679() - { - } - [TestMethod] - public void Test_1680() - { - } - [TestMethod] - public void Test_1681() - { - } - [TestMethod] - public void Test_1682() - { - } - [TestMethod] - public void Test_1683() - { - } - [TestMethod] - public void Test_1684() - { - } - [TestMethod] - public void Test_1685() - { - } - [TestMethod] - public void Test_1686() - { - } - [TestMethod] - public void Test_1687() - { - } - [TestMethod] - public void Test_1688() - { - } - [TestMethod] - public void Test_1689() - { - } - [TestMethod] - public void Test_1690() - { - } - [TestMethod] - public void Test_1691() - { - } - [TestMethod] - public void Test_1692() - { - } - [TestMethod] - public void Test_1693() - { - } - [TestMethod] - public void Test_1694() - { - } - [TestMethod] - public void Test_1695() - { - } - [TestMethod] - public void Test_1696() - { - } - [TestMethod] - public void Test_1697() - { - } - [TestMethod] - public void Test_1698() - { - } - [TestMethod] - public void Test_1699() - { - } - [TestMethod] - public void Test_1700() - { - } - [TestMethod] - public void Test_1701() - { - } - [TestMethod] - public void Test_1702() - { - } - [TestMethod] - public void Test_1703() - { - } - [TestMethod] - public void Test_1704() - { - } - [TestMethod] - public void Test_1705() - { - } - [TestMethod] - public void Test_1706() - { - } - [TestMethod] - public void Test_1707() - { - } - [TestMethod] - public void Test_1708() - { - } - [TestMethod] - public void Test_1709() - { - } - [TestMethod] - public void Test_1710() - { - } - [TestMethod] - public void Test_1711() - { - } - [TestMethod] - public void Test_1712() - { - } - [TestMethod] - public void Test_1713() - { - } - [TestMethod] - public void Test_1714() - { - } - [TestMethod] - public void Test_1715() - { - } - [TestMethod] - public void Test_1716() - { - } - [TestMethod] - public void Test_1717() - { - } - [TestMethod] - public void Test_1718() - { - } - [TestMethod] - public void Test_1719() - { - } - [TestMethod] - public void Test_1720() - { - } - [TestMethod] - public void Test_1721() - { - } - [TestMethod] - public void Test_1722() - { - } - [TestMethod] - public void Test_1723() - { - } - [TestMethod] - public void Test_1724() - { - } - [TestMethod] - public void Test_1725() - { - } - [TestMethod] - public void Test_1726() - { - } - [TestMethod] - public void Test_1727() - { - } - [TestMethod] - public void Test_1728() - { - } - [TestMethod] - public void Test_1729() - { - } - [TestMethod] - public void Test_1730() - { - } - [TestMethod] - public void Test_1731() - { - } - [TestMethod] - public void Test_1732() - { - } - [TestMethod] - public void Test_1733() - { - } - [TestMethod] - public void Test_1734() - { - } - [TestMethod] - public void Test_1735() - { - } - [TestMethod] - public void Test_1736() - { - } - [TestMethod] - public void Test_1737() - { - } - [TestMethod] - public void Test_1738() - { - } - [TestMethod] - public void Test_1739() - { - } - [TestMethod] - public void Test_1740() - { - } - [TestMethod] - public void Test_1741() - { - } - [TestMethod] - public void Test_1742() - { - } - [TestMethod] - public void Test_1743() - { - } - [TestMethod] - public void Test_1744() - { - } - [TestMethod] - public void Test_1745() - { - } - [TestMethod] - public void Test_1746() - { - } - [TestMethod] - public void Test_1747() - { - } - [TestMethod] - public void Test_1748() - { - } - [TestMethod] - public void Test_1749() - { - } - [TestMethod] - public void Test_1750() - { - } - [TestMethod] - public void Test_1751() - { - } - [TestMethod] - public void Test_1752() - { - } - [TestMethod] - public void Test_1753() - { - } - [TestMethod] - public void Test_1754() - { - } - [TestMethod] - public void Test_1755() - { - } - [TestMethod] - public void Test_1756() - { - } - [TestMethod] - public void Test_1757() - { - } - [TestMethod] - public void Test_1758() - { - } - [TestMethod] - public void Test_1759() - { - } - [TestMethod] - public void Test_1760() - { - } - [TestMethod] - public void Test_1761() - { - } - [TestMethod] - public void Test_1762() - { - } - [TestMethod] - public void Test_1763() - { - } - [TestMethod] - public void Test_1764() - { - } - [TestMethod] - public void Test_1765() - { - } - [TestMethod] - public void Test_1766() - { - } - [TestMethod] - public void Test_1767() - { - } - [TestMethod] - public void Test_1768() - { - } - [TestMethod] - public void Test_1769() - { - } - [TestMethod] - public void Test_1770() - { - } - [TestMethod] - public void Test_1771() - { - } - [TestMethod] - public void Test_1772() - { - } - [TestMethod] - public void Test_1773() - { - } - [TestMethod] - public void Test_1774() - { - } - [TestMethod] - public void Test_1775() - { - } - [TestMethod] - public void Test_1776() - { - } - [TestMethod] - public void Test_1777() - { - } - [TestMethod] - public void Test_1778() - { - } - [TestMethod] - public void Test_1779() - { - } - [TestMethod] - public void Test_1780() - { - } - [TestMethod] - public void Test_1781() - { - } - [TestMethod] - public void Test_1782() - { - } - [TestMethod] - public void Test_1783() - { - } - [TestMethod] - public void Test_1784() - { - } - [TestMethod] - public void Test_1785() - { - } - [TestMethod] - public void Test_1786() - { - } - [TestMethod] - public void Test_1787() - { - } - [TestMethod] - public void Test_1788() - { - } - [TestMethod] - public void Test_1789() - { - } - [TestMethod] - public void Test_1790() - { - } - [TestMethod] - public void Test_1791() - { - } - [TestMethod] - public void Test_1792() - { - } - [TestMethod] - public void Test_1793() - { - } - [TestMethod] - public void Test_1794() - { - } - [TestMethod] - public void Test_1795() - { - } - [TestMethod] - public void Test_1796() - { - } - [TestMethod] - public void Test_1797() - { - } - [TestMethod] - public void Test_1798() - { - } - [TestMethod] - public void Test_1799() - { - } - [TestMethod] - public void Test_1800() - { - } - [TestMethod] - public void Test_1801() - { - } - [TestMethod] - public void Test_1802() - { - } - [TestMethod] - public void Test_1803() - { - } - [TestMethod] - public void Test_1804() - { - } - [TestMethod] - public void Test_1805() - { - } - [TestMethod] - public void Test_1806() - { - } - [TestMethod] - public void Test_1807() - { - } - [TestMethod] - public void Test_1808() - { - } - [TestMethod] - public void Test_1809() - { - } - [TestMethod] - public void Test_1810() - { - } - [TestMethod] - public void Test_1811() - { - } - [TestMethod] - public void Test_1812() - { - } - [TestMethod] - public void Test_1813() - { - } - [TestMethod] - public void Test_1814() - { - } - [TestMethod] - public void Test_1815() - { - } - [TestMethod] - public void Test_1816() - { - } - [TestMethod] - public void Test_1817() - { - } - [TestMethod] - public void Test_1818() - { - } - [TestMethod] - public void Test_1819() - { - } - [TestMethod] - public void Test_1820() - { - } - [TestMethod] - public void Test_1821() - { - } - [TestMethod] - public void Test_1822() - { - } - [TestMethod] - public void Test_1823() - { - } - [TestMethod] - public void Test_1824() - { - } - [TestMethod] - public void Test_1825() - { - } - [TestMethod] - public void Test_1826() - { - } - [TestMethod] - public void Test_1827() - { - } - [TestMethod] - public void Test_1828() - { - } - [TestMethod] - public void Test_1829() - { - } - [TestMethod] - public void Test_1830() - { - } - [TestMethod] - public void Test_1831() - { - } - [TestMethod] - public void Test_1832() - { - } - [TestMethod] - public void Test_1833() - { - } - [TestMethod] - public void Test_1834() - { - } - [TestMethod] - public void Test_1835() - { - } - [TestMethod] - public void Test_1836() - { - } - [TestMethod] - public void Test_1837() - { - } - [TestMethod] - public void Test_1838() - { - } - [TestMethod] - public void Test_1839() - { - } - [TestMethod] - public void Test_1840() - { - } - [TestMethod] - public void Test_1841() - { - } - [TestMethod] - public void Test_1842() - { - } - [TestMethod] - public void Test_1843() - { - } - [TestMethod] - public void Test_1844() - { - } - [TestMethod] - public void Test_1845() - { - } - [TestMethod] - public void Test_1846() - { - } - [TestMethod] - public void Test_1847() - { - } - [TestMethod] - public void Test_1848() - { - } - [TestMethod] - public void Test_1849() - { - } - [TestMethod] - public void Test_1850() - { - } - [TestMethod] - public void Test_1851() - { - } - [TestMethod] - public void Test_1852() - { - } - [TestMethod] - public void Test_1853() - { - } - [TestMethod] - public void Test_1854() - { - } - [TestMethod] - public void Test_1855() - { - } - [TestMethod] - public void Test_1856() - { - } - [TestMethod] - public void Test_1857() - { - } - [TestMethod] - public void Test_1858() - { - } - [TestMethod] - public void Test_1859() - { - } - [TestMethod] - public void Test_1860() - { - } - [TestMethod] - public void Test_1861() - { - } - [TestMethod] - public void Test_1862() - { - } - [TestMethod] - public void Test_1863() - { - } - [TestMethod] - public void Test_1864() - { - } - [TestMethod] - public void Test_1865() - { - } - [TestMethod] - public void Test_1866() - { - } - [TestMethod] - public void Test_1867() - { - } - [TestMethod] - public void Test_1868() - { - } - [TestMethod] - public void Test_1869() - { - } - [TestMethod] - public void Test_1870() - { - } - [TestMethod] - public void Test_1871() - { - } - [TestMethod] - public void Test_1872() - { - } - [TestMethod] - public void Test_1873() - { - } - [TestMethod] - public void Test_1874() - { - } - [TestMethod] - public void Test_1875() - { - } - [TestMethod] - public void Test_1876() - { - } - [TestMethod] - public void Test_1877() - { - } - [TestMethod] - public void Test_1878() - { - } - [TestMethod] - public void Test_1879() - { - } - [TestMethod] - public void Test_1880() - { - } - [TestMethod] - public void Test_1881() - { - } - [TestMethod] - public void Test_1882() - { - } - [TestMethod] - public void Test_1883() - { - } - [TestMethod] - public void Test_1884() - { - } - [TestMethod] - public void Test_1885() - { - } - [TestMethod] - public void Test_1886() - { - } - [TestMethod] - public void Test_1887() - { - } - [TestMethod] - public void Test_1888() - { - } - [TestMethod] - public void Test_1889() - { - } - [TestMethod] - public void Test_1890() - { - } - [TestMethod] - public void Test_1891() - { - } - [TestMethod] - public void Test_1892() - { - } - [TestMethod] - public void Test_1893() - { - } - [TestMethod] - public void Test_1894() - { - } - [TestMethod] - public void Test_1895() - { - } - [TestMethod] - public void Test_1896() - { - } - [TestMethod] - public void Test_1897() - { - } - [TestMethod] - public void Test_1898() - { - } - [TestMethod] - public void Test_1899() - { - } - [TestMethod] - public void Test_1900() - { - } - [TestMethod] - public void Test_1901() - { - } - [TestMethod] - public void Test_1902() - { - } - [TestMethod] - public void Test_1903() - { - } - [TestMethod] - public void Test_1904() - { - } - [TestMethod] - public void Test_1905() - { - } - [TestMethod] - public void Test_1906() - { - } - [TestMethod] - public void Test_1907() - { - } - [TestMethod] - public void Test_1908() - { - } - [TestMethod] - public void Test_1909() - { - } - [TestMethod] - public void Test_1910() - { - } - [TestMethod] - public void Test_1911() - { - } - [TestMethod] - public void Test_1912() - { - } - [TestMethod] - public void Test_1913() - { - } - [TestMethod] - public void Test_1914() - { - } - [TestMethod] - public void Test_1915() - { - } - [TestMethod] - public void Test_1916() - { - } - [TestMethod] - public void Test_1917() - { - } - [TestMethod] - public void Test_1918() - { - } - [TestMethod] - public void Test_1919() - { - } - [TestMethod] - public void Test_1920() - { - } - [TestMethod] - public void Test_1921() - { - } - [TestMethod] - public void Test_1922() - { - } - [TestMethod] - public void Test_1923() - { - } - [TestMethod] - public void Test_1924() - { - } - [TestMethod] - public void Test_1925() - { - } - [TestMethod] - public void Test_1926() - { - } - [TestMethod] - public void Test_1927() - { - } - [TestMethod] - public void Test_1928() - { - } - [TestMethod] - public void Test_1929() - { - } - [TestMethod] - public void Test_1930() - { - } - [TestMethod] - public void Test_1931() - { - } - [TestMethod] - public void Test_1932() - { - } - [TestMethod] - public void Test_1933() - { - } - [TestMethod] - public void Test_1934() - { - } - [TestMethod] - public void Test_1935() - { - } - [TestMethod] - public void Test_1936() - { - } - [TestMethod] - public void Test_1937() - { - } - [TestMethod] - public void Test_1938() - { - } - [TestMethod] - public void Test_1939() - { - } - [TestMethod] - public void Test_1940() - { - } - [TestMethod] - public void Test_1941() - { - } - [TestMethod] - public void Test_1942() - { - } - [TestMethod] - public void Test_1943() - { - } - [TestMethod] - public void Test_1944() - { - } - [TestMethod] - public void Test_1945() - { - } - [TestMethod] - public void Test_1946() - { - } - [TestMethod] - public void Test_1947() - { - } - [TestMethod] - public void Test_1948() - { - } - [TestMethod] - public void Test_1949() - { - } - [TestMethod] - public void Test_1950() - { - } - [TestMethod] - public void Test_1951() - { - } - [TestMethod] - public void Test_1952() - { - } - [TestMethod] - public void Test_1953() - { - } - [TestMethod] - public void Test_1954() - { - } - [TestMethod] - public void Test_1955() - { - } - [TestMethod] - public void Test_1956() - { - } - [TestMethod] - public void Test_1957() - { - } - [TestMethod] - public void Test_1958() - { - } - [TestMethod] - public void Test_1959() - { - } - [TestMethod] - public void Test_1960() - { - } - [TestMethod] - public void Test_1961() - { - } - [TestMethod] - public void Test_1962() - { - } - [TestMethod] - public void Test_1963() - { - } - [TestMethod] - public void Test_1964() - { - } - [TestMethod] - public void Test_1965() - { - } - [TestMethod] - public void Test_1966() - { - } - [TestMethod] - public void Test_1967() - { - } - [TestMethod] - public void Test_1968() - { - } - [TestMethod] - public void Test_1969() - { - } - [TestMethod] - public void Test_1970() - { - } - [TestMethod] - public void Test_1971() - { - } - [TestMethod] - public void Test_1972() - { - } - [TestMethod] - public void Test_1973() - { - } - [TestMethod] - public void Test_1974() - { - } - [TestMethod] - public void Test_1975() - { - } - [TestMethod] - public void Test_1976() - { - } - [TestMethod] - public void Test_1977() - { - } - [TestMethod] - public void Test_1978() - { - } - [TestMethod] - public void Test_1979() - { - } - [TestMethod] - public void Test_1980() - { - } - [TestMethod] - public void Test_1981() - { - } - [TestMethod] - public void Test_1982() - { - } - [TestMethod] - public void Test_1983() - { - } - [TestMethod] - public void Test_1984() - { - } - [TestMethod] - public void Test_1985() - { - } - [TestMethod] - public void Test_1986() - { - } - [TestMethod] - public void Test_1987() - { - } - [TestMethod] - public void Test_1988() - { - } - [TestMethod] - public void Test_1989() - { - } - [TestMethod] - public void Test_1990() - { - } - [TestMethod] - public void Test_1991() - { - } - [TestMethod] - public void Test_1992() - { - } - [TestMethod] - public void Test_1993() - { - } - [TestMethod] - public void Test_1994() - { - } - [TestMethod] - public void Test_1995() - { - } - [TestMethod] - public void Test_1996() - { - } - [TestMethod] - public void Test_1997() - { - } - [TestMethod] - public void Test_1998() - { - } - [TestMethod] - public void Test_1999() - { - } - [TestMethod] - public void Test_2000() - { - } - [TestMethod] - public void Test_2001() - { - } - [TestMethod] - public void Test_2002() - { - } - [TestMethod] - public void Test_2003() - { - } - [TestMethod] - public void Test_2004() - { - } - [TestMethod] - public void Test_2005() - { - } - [TestMethod] - public void Test_2006() - { - } - [TestMethod] - public void Test_2007() - { - } - [TestMethod] - public void Test_2008() - { - } - [TestMethod] - public void Test_2009() - { - } - [TestMethod] - public void Test_2010() - { - } - [TestMethod] - public void Test_2011() - { - } - [TestMethod] - public void Test_2012() - { - } - [TestMethod] - public void Test_2013() - { - } - [TestMethod] - public void Test_2014() - { - } - [TestMethod] - public void Test_2015() - { - } - [TestMethod] - public void Test_2016() - { - } - [TestMethod] - public void Test_2017() - { - } - [TestMethod] - public void Test_2018() - { - } - [TestMethod] - public void Test_2019() - { - } - [TestMethod] - public void Test_2020() - { - } - [TestMethod] - public void Test_2021() - { - } - [TestMethod] - public void Test_2022() - { - } - [TestMethod] - public void Test_2023() - { - } - [TestMethod] - public void Test_2024() - { - } - [TestMethod] - public void Test_2025() - { - } - [TestMethod] - public void Test_2026() - { - } - [TestMethod] - public void Test_2027() - { - } - [TestMethod] - public void Test_2028() - { - } - [TestMethod] - public void Test_2029() - { - } - [TestMethod] - public void Test_2030() - { - } - [TestMethod] - public void Test_2031() - { - } - [TestMethod] - public void Test_2032() - { - } - [TestMethod] - public void Test_2033() - { - } - [TestMethod] - public void Test_2034() - { - } - [TestMethod] - public void Test_2035() - { - } - [TestMethod] - public void Test_2036() - { - } - [TestMethod] - public void Test_2037() - { - } - [TestMethod] - public void Test_2038() - { - } - [TestMethod] - public void Test_2039() - { - } - [TestMethod] - public void Test_2040() - { - } - [TestMethod] - public void Test_2041() - { - } - [TestMethod] - public void Test_2042() - { - } - [TestMethod] - public void Test_2043() - { - } - [TestMethod] - public void Test_2044() - { - } - [TestMethod] - public void Test_2045() - { - } - [TestMethod] - public void Test_2046() - { - } - [TestMethod] - public void Test_2047() - { - } - [TestMethod] - public void Test_2048() - { - } - [TestMethod] - public void Test_2049() - { - } - [TestMethod] - public void Test_2050() - { - } - [TestMethod] - public void Test_2051() - { - } - [TestMethod] - public void Test_2052() - { - } - [TestMethod] - public void Test_2053() - { - } - [TestMethod] - public void Test_2054() - { - } - [TestMethod] - public void Test_2055() - { - } - [TestMethod] - public void Test_2056() - { - } - [TestMethod] - public void Test_2057() - { - } - [TestMethod] - public void Test_2058() - { - } - [TestMethod] - public void Test_2059() - { - } - [TestMethod] - public void Test_2060() - { - } - [TestMethod] - public void Test_2061() - { - } - [TestMethod] - public void Test_2062() - { - } - [TestMethod] - public void Test_2063() - { - } - [TestMethod] - public void Test_2064() - { - } - [TestMethod] - public void Test_2065() - { - } - [TestMethod] - public void Test_2066() - { - } - [TestMethod] - public void Test_2067() - { - } - [TestMethod] - public void Test_2068() - { - } - [TestMethod] - public void Test_2069() - { - } - [TestMethod] - public void Test_2070() - { - } - [TestMethod] - public void Test_2071() - { - } - [TestMethod] - public void Test_2072() - { - } - [TestMethod] - public void Test_2073() - { - } - [TestMethod] - public void Test_2074() - { - } - [TestMethod] - public void Test_2075() - { - } - [TestMethod] - public void Test_2076() - { - } - [TestMethod] - public void Test_2077() - { - } - [TestMethod] - public void Test_2078() - { - } - [TestMethod] - public void Test_2079() - { - } - [TestMethod] - public void Test_2080() - { - } - [TestMethod] - public void Test_2081() - { - } - [TestMethod] - public void Test_2082() - { - } - [TestMethod] - public void Test_2083() - { - } - [TestMethod] - public void Test_2084() - { - } - [TestMethod] - public void Test_2085() - { - } - [TestMethod] - public void Test_2086() - { - } - [TestMethod] - public void Test_2087() - { - } - [TestMethod] - public void Test_2088() - { - } - [TestMethod] - public void Test_2089() - { - } - [TestMethod] - public void Test_2090() - { - } - [TestMethod] - public void Test_2091() - { - } - [TestMethod] - public void Test_2092() - { - } - [TestMethod] - public void Test_2093() - { - } - [TestMethod] - public void Test_2094() - { - } - [TestMethod] - public void Test_2095() - { - } - [TestMethod] - public void Test_2096() - { - } - [TestMethod] - public void Test_2097() - { - } - [TestMethod] - public void Test_2098() - { - } - [TestMethod] - public void Test_2099() - { - } - [TestMethod] - public void Test_2100() - { - } - [TestMethod] - public void Test_2101() - { - } - [TestMethod] - public void Test_2102() - { - } - [TestMethod] - public void Test_2103() - { - } - [TestMethod] - public void Test_2104() - { - } - [TestMethod] - public void Test_2105() - { - } - [TestMethod] - public void Test_2106() - { - } - [TestMethod] - public void Test_2107() - { - } - [TestMethod] - public void Test_2108() - { - } - [TestMethod] - public void Test_2109() - { - } - [TestMethod] - public void Test_2110() - { - } - [TestMethod] - public void Test_2111() - { - } - [TestMethod] - public void Test_2112() - { - } - [TestMethod] - public void Test_2113() - { - } - [TestMethod] - public void Test_2114() - { - } - [TestMethod] - public void Test_2115() - { - } - [TestMethod] - public void Test_2116() - { - } - [TestMethod] - public void Test_2117() - { - } - [TestMethod] - public void Test_2118() - { - } - [TestMethod] - public void Test_2119() - { - } - [TestMethod] - public void Test_2120() - { - } - [TestMethod] - public void Test_2121() - { - } - [TestMethod] - public void Test_2122() - { - } - [TestMethod] - public void Test_2123() - { - } - [TestMethod] - public void Test_2124() - { - } - [TestMethod] - public void Test_2125() - { - } - [TestMethod] - public void Test_2126() - { - } - [TestMethod] - public void Test_2127() - { - } - [TestMethod] - public void Test_2128() - { - } - [TestMethod] - public void Test_2129() - { - } - [TestMethod] - public void Test_2130() - { - } - [TestMethod] - public void Test_2131() - { - } - [TestMethod] - public void Test_2132() - { - } - [TestMethod] - public void Test_2133() - { - } - [TestMethod] - public void Test_2134() - { - } - [TestMethod] - public void Test_2135() - { - } - [TestMethod] - public void Test_2136() - { - } - [TestMethod] - public void Test_2137() - { - } - [TestMethod] - public void Test_2138() - { - } - [TestMethod] - public void Test_2139() - { - } - [TestMethod] - public void Test_2140() - { - } - [TestMethod] - public void Test_2141() - { - } - [TestMethod] - public void Test_2142() - { - } - [TestMethod] - public void Test_2143() - { - } - [TestMethod] - public void Test_2144() - { - } - [TestMethod] - public void Test_2145() - { - } - [TestMethod] - public void Test_2146() - { - } - [TestMethod] - public void Test_2147() - { - } - [TestMethod] - public void Test_2148() - { - } - [TestMethod] - public void Test_2149() - { - } - [TestMethod] - public void Test_2150() - { - } - [TestMethod] - public void Test_2151() - { - } - [TestMethod] - public void Test_2152() - { - } - [TestMethod] - public void Test_2153() - { - } - [TestMethod] - public void Test_2154() - { - } - [TestMethod] - public void Test_2155() - { - } - [TestMethod] - public void Test_2156() - { - } - [TestMethod] - public void Test_2157() - { - } - [TestMethod] - public void Test_2158() - { - } - [TestMethod] - public void Test_2159() - { - } - [TestMethod] - public void Test_2160() - { - } - [TestMethod] - public void Test_2161() - { - } - [TestMethod] - public void Test_2162() - { - } - [TestMethod] - public void Test_2163() - { - } - [TestMethod] - public void Test_2164() - { - } - [TestMethod] - public void Test_2165() - { - } - [TestMethod] - public void Test_2166() - { - } - [TestMethod] - public void Test_2167() - { - } - [TestMethod] - public void Test_2168() - { - } - [TestMethod] - public void Test_2169() - { - } - [TestMethod] - public void Test_2170() - { - } - [TestMethod] - public void Test_2171() - { - } - [TestMethod] - public void Test_2172() - { - } - [TestMethod] - public void Test_2173() - { - } - [TestMethod] - public void Test_2174() - { - } - [TestMethod] - public void Test_2175() - { - } - [TestMethod] - public void Test_2176() - { - } - [TestMethod] - public void Test_2177() - { - } - [TestMethod] - public void Test_2178() - { - } - [TestMethod] - public void Test_2179() - { - } - [TestMethod] - public void Test_2180() - { - } - [TestMethod] - public void Test_2181() - { - } - [TestMethod] - public void Test_2182() - { - } - [TestMethod] - public void Test_2183() - { - } - [TestMethod] - public void Test_2184() - { - } - [TestMethod] - public void Test_2185() - { - } - [TestMethod] - public void Test_2186() - { - } - [TestMethod] - public void Test_2187() - { - } - [TestMethod] - public void Test_2188() - { - } - [TestMethod] - public void Test_2189() - { - } - [TestMethod] - public void Test_2190() - { - } - [TestMethod] - public void Test_2191() - { - } - [TestMethod] - public void Test_2192() - { - } - [TestMethod] - public void Test_2193() - { - } - [TestMethod] - public void Test_2194() - { - } - [TestMethod] - public void Test_2195() - { - } - [TestMethod] - public void Test_2196() - { - } - [TestMethod] - public void Test_2197() - { - } - [TestMethod] - public void Test_2198() - { - } - [TestMethod] - public void Test_2199() - { - } - [TestMethod] - public void Test_2200() - { - } - [TestMethod] - public void Test_2201() - { - } - [TestMethod] - public void Test_2202() - { - } - [TestMethod] - public void Test_2203() - { - } - [TestMethod] - public void Test_2204() - { - } - [TestMethod] - public void Test_2205() - { - } - [TestMethod] - public void Test_2206() - { - } - [TestMethod] - public void Test_2207() - { - } - [TestMethod] - public void Test_2208() - { - } - [TestMethod] - public void Test_2209() - { - } - [TestMethod] - public void Test_2210() - { - } - [TestMethod] - public void Test_2211() - { - } - [TestMethod] - public void Test_2212() - { - } - [TestMethod] - public void Test_2213() - { - } - [TestMethod] - public void Test_2214() - { - } - [TestMethod] - public void Test_2215() - { - } - [TestMethod] - public void Test_2216() - { - } - [TestMethod] - public void Test_2217() - { - } - [TestMethod] - public void Test_2218() - { - } - [TestMethod] - public void Test_2219() - { - } - [TestMethod] - public void Test_2220() - { - } - [TestMethod] - public void Test_2221() - { - } - [TestMethod] - public void Test_2222() - { - } - [TestMethod] - public void Test_2223() - { - } - [TestMethod] - public void Test_2224() - { - } - [TestMethod] - public void Test_2225() - { - } - [TestMethod] - public void Test_2226() - { - } - [TestMethod] - public void Test_2227() - { - } - [TestMethod] - public void Test_2228() - { - } - [TestMethod] - public void Test_2229() - { - } - [TestMethod] - public void Test_2230() - { - } - [TestMethod] - public void Test_2231() - { - } - [TestMethod] - public void Test_2232() - { - } - [TestMethod] - public void Test_2233() - { - } - [TestMethod] - public void Test_2234() - { - } - [TestMethod] - public void Test_2235() - { - } - [TestMethod] - public void Test_2236() - { - } - [TestMethod] - public void Test_2237() - { - } - [TestMethod] - public void Test_2238() - { - } - [TestMethod] - public void Test_2239() - { - } - [TestMethod] - public void Test_2240() - { - } - [TestMethod] - public void Test_2241() - { - } - [TestMethod] - public void Test_2242() - { - } - [TestMethod] - public void Test_2243() - { - } - [TestMethod] - public void Test_2244() - { - } - [TestMethod] - public void Test_2245() - { - } - [TestMethod] - public void Test_2246() - { - } - [TestMethod] - public void Test_2247() - { - } - [TestMethod] - public void Test_2248() - { - } - [TestMethod] - public void Test_2249() - { - } - [TestMethod] - public void Test_2250() - { - } - [TestMethod] - public void Test_2251() - { - } - [TestMethod] - public void Test_2252() - { - } - [TestMethod] - public void Test_2253() - { - } - [TestMethod] - public void Test_2254() - { - } - [TestMethod] - public void Test_2255() - { - } - [TestMethod] - public void Test_2256() - { - } - [TestMethod] - public void Test_2257() - { - } - [TestMethod] - public void Test_2258() - { - } - [TestMethod] - public void Test_2259() - { - } - [TestMethod] - public void Test_2260() - { - } - [TestMethod] - public void Test_2261() - { - } - [TestMethod] - public void Test_2262() - { - } - [TestMethod] - public void Test_2263() - { - } - [TestMethod] - public void Test_2264() - { - } - [TestMethod] - public void Test_2265() - { - } - [TestMethod] - public void Test_2266() - { - } - [TestMethod] - public void Test_2267() - { - } - [TestMethod] - public void Test_2268() - { - } - [TestMethod] - public void Test_2269() - { - } - [TestMethod] - public void Test_2270() - { - } - [TestMethod] - public void Test_2271() - { - } - [TestMethod] - public void Test_2272() - { - } - [TestMethod] - public void Test_2273() - { - } - [TestMethod] - public void Test_2274() - { - } - [TestMethod] - public void Test_2275() - { - } - [TestMethod] - public void Test_2276() - { - } - [TestMethod] - public void Test_2277() - { - } - [TestMethod] - public void Test_2278() - { - } - [TestMethod] - public void Test_2279() - { - } - [TestMethod] - public void Test_2280() - { - } - [TestMethod] - public void Test_2281() - { - } - [TestMethod] - public void Test_2282() - { - } - [TestMethod] - public void Test_2283() - { - } - [TestMethod] - public void Test_2284() - { - } - [TestMethod] - public void Test_2285() - { - } - [TestMethod] - public void Test_2286() - { - } - [TestMethod] - public void Test_2287() - { - } - [TestMethod] - public void Test_2288() - { - } - [TestMethod] - public void Test_2289() - { - } - [TestMethod] - public void Test_2290() - { - } - [TestMethod] - public void Test_2291() - { - } - [TestMethod] - public void Test_2292() - { - } - [TestMethod] - public void Test_2293() - { - } - [TestMethod] - public void Test_2294() - { - } - [TestMethod] - public void Test_2295() - { - } - [TestMethod] - public void Test_2296() - { - } - [TestMethod] - public void Test_2297() - { - } - [TestMethod] - public void Test_2298() - { - } - [TestMethod] - public void Test_2299() - { - } - [TestMethod] - public void Test_2300() - { - } - [TestMethod] - public void Test_2301() - { - } - [TestMethod] - public void Test_2302() - { - } - [TestMethod] - public void Test_2303() - { - } - [TestMethod] - public void Test_2304() - { - } - [TestMethod] - public void Test_2305() - { - } - [TestMethod] - public void Test_2306() - { - } - [TestMethod] - public void Test_2307() - { - } - [TestMethod] - public void Test_2308() - { - } - [TestMethod] - public void Test_2309() - { - } - [TestMethod] - public void Test_2310() - { - } - [TestMethod] - public void Test_2311() - { - } - [TestMethod] - public void Test_2312() - { - } - [TestMethod] - public void Test_2313() - { - } - [TestMethod] - public void Test_2314() - { - } - [TestMethod] - public void Test_2315() - { - } - [TestMethod] - public void Test_2316() - { - } - [TestMethod] - public void Test_2317() - { - } - [TestMethod] - public void Test_2318() - { - } - [TestMethod] - public void Test_2319() - { - } - [TestMethod] - public void Test_2320() - { - } - [TestMethod] - public void Test_2321() - { - } - [TestMethod] - public void Test_2322() - { - } - [TestMethod] - public void Test_2323() - { - } - [TestMethod] - public void Test_2324() - { - } - [TestMethod] - public void Test_2325() - { - } - [TestMethod] - public void Test_2326() - { - } - [TestMethod] - public void Test_2327() - { - } - [TestMethod] - public void Test_2328() - { - } - [TestMethod] - public void Test_2329() - { - } - [TestMethod] - public void Test_2330() - { - } - [TestMethod] - public void Test_2331() - { - } - [TestMethod] - public void Test_2332() - { - } - [TestMethod] - public void Test_2333() - { - } - [TestMethod] - public void Test_2334() - { - } - [TestMethod] - public void Test_2335() - { - } - [TestMethod] - public void Test_2336() - { - } - [TestMethod] - public void Test_2337() - { - } - [TestMethod] - public void Test_2338() - { - } - [TestMethod] - public void Test_2339() - { - } - [TestMethod] - public void Test_2340() - { - } - [TestMethod] - public void Test_2341() - { - } - [TestMethod] - public void Test_2342() - { - } - [TestMethod] - public void Test_2343() - { - } - [TestMethod] - public void Test_2344() - { - } - [TestMethod] - public void Test_2345() - { - } - [TestMethod] - public void Test_2346() - { - } - [TestMethod] - public void Test_2347() - { - } - [TestMethod] - public void Test_2348() - { - } - [TestMethod] - public void Test_2349() - { - } - [TestMethod] - public void Test_2350() - { - } - [TestMethod] - public void Test_2351() - { - } - [TestMethod] - public void Test_2352() - { - } - [TestMethod] - public void Test_2353() - { - } - [TestMethod] - public void Test_2354() - { - } - [TestMethod] - public void Test_2355() - { - } - [TestMethod] - public void Test_2356() - { - } - [TestMethod] - public void Test_2357() - { - } - [TestMethod] - public void Test_2358() - { - } - [TestMethod] - public void Test_2359() - { - } - [TestMethod] - public void Test_2360() - { - } - [TestMethod] - public void Test_2361() - { - } - [TestMethod] - public void Test_2362() - { - } - [TestMethod] - public void Test_2363() - { - } - [TestMethod] - public void Test_2364() - { - } - [TestMethod] - public void Test_2365() - { - } - [TestMethod] - public void Test_2366() - { - } - [TestMethod] - public void Test_2367() - { - } - [TestMethod] - public void Test_2368() - { - } - [TestMethod] - public void Test_2369() - { - } - [TestMethod] - public void Test_2370() - { - } - [TestMethod] - public void Test_2371() - { - } - [TestMethod] - public void Test_2372() - { - } - [TestMethod] - public void Test_2373() - { - } - [TestMethod] - public void Test_2374() - { - } - [TestMethod] - public void Test_2375() - { - } - [TestMethod] - public void Test_2376() - { - } - [TestMethod] - public void Test_2377() - { - } - [TestMethod] - public void Test_2378() - { - } - [TestMethod] - public void Test_2379() - { - } - [TestMethod] - public void Test_2380() - { - } - [TestMethod] - public void Test_2381() - { - } - [TestMethod] - public void Test_2382() - { - } - [TestMethod] - public void Test_2383() - { - } - [TestMethod] - public void Test_2384() - { - } - [TestMethod] - public void Test_2385() - { - } - [TestMethod] - public void Test_2386() - { - } - [TestMethod] - public void Test_2387() - { - } - [TestMethod] - public void Test_2388() - { - } - [TestMethod] - public void Test_2389() - { - } - [TestMethod] - public void Test_2390() - { - } - [TestMethod] - public void Test_2391() - { - } - [TestMethod] - public void Test_2392() - { - } - [TestMethod] - public void Test_2393() - { - } - [TestMethod] - public void Test_2394() - { - } - [TestMethod] - public void Test_2395() - { - } - [TestMethod] - public void Test_2396() - { - } - [TestMethod] - public void Test_2397() - { - } - [TestMethod] - public void Test_2398() - { - } - [TestMethod] - public void Test_2399() - { - } - [TestMethod] - public void Test_2400() - { - } - [TestMethod] - public void Test_2401() - { - } - [TestMethod] - public void Test_2402() - { - } - [TestMethod] - public void Test_2403() - { - } - [TestMethod] - public void Test_2404() - { - } - [TestMethod] - public void Test_2405() - { - } - [TestMethod] - public void Test_2406() - { - } - [TestMethod] - public void Test_2407() - { - } - [TestMethod] - public void Test_2408() - { - } - [TestMethod] - public void Test_2409() - { - } - [TestMethod] - public void Test_2410() - { - } - [TestMethod] - public void Test_2411() - { - } - [TestMethod] - public void Test_2412() - { - } - [TestMethod] - public void Test_2413() - { - } - [TestMethod] - public void Test_2414() - { - } - [TestMethod] - public void Test_2415() - { - } - [TestMethod] - public void Test_2416() - { - } - [TestMethod] - public void Test_2417() - { - } - [TestMethod] - public void Test_2418() - { - } - [TestMethod] - public void Test_2419() - { - } - [TestMethod] - public void Test_2420() - { - } - [TestMethod] - public void Test_2421() - { - } - [TestMethod] - public void Test_2422() - { - } - [TestMethod] - public void Test_2423() - { - } - [TestMethod] - public void Test_2424() - { - } - [TestMethod] - public void Test_2425() - { - } - [TestMethod] - public void Test_2426() - { - } - [TestMethod] - public void Test_2427() - { - } - [TestMethod] - public void Test_2428() - { - } - [TestMethod] - public void Test_2429() - { - } - [TestMethod] - public void Test_2430() - { - } - [TestMethod] - public void Test_2431() - { - } - [TestMethod] - public void Test_2432() - { - } - [TestMethod] - public void Test_2433() - { - } - [TestMethod] - public void Test_2434() - { - } - [TestMethod] - public void Test_2435() - { - } - [TestMethod] - public void Test_2436() - { - } - [TestMethod] - public void Test_2437() - { - } - [TestMethod] - public void Test_2438() - { - } - [TestMethod] - public void Test_2439() - { - } - [TestMethod] - public void Test_2440() - { - } - [TestMethod] - public void Test_2441() - { - } - [TestMethod] - public void Test_2442() - { - } - [TestMethod] - public void Test_2443() - { - } - [TestMethod] - public void Test_2444() - { - } - [TestMethod] - public void Test_2445() - { - } - [TestMethod] - public void Test_2446() - { - } - [TestMethod] - public void Test_2447() - { - } - [TestMethod] - public void Test_2448() - { - } - [TestMethod] - public void Test_2449() - { - } - [TestMethod] - public void Test_2450() - { - } - [TestMethod] - public void Test_2451() - { - } - [TestMethod] - public void Test_2452() - { - } - [TestMethod] - public void Test_2453() - { - } - [TestMethod] - public void Test_2454() - { - } - [TestMethod] - public void Test_2455() - { - } - [TestMethod] - public void Test_2456() - { - } - [TestMethod] - public void Test_2457() - { - } - [TestMethod] - public void Test_2458() - { - } - [TestMethod] - public void Test_2459() - { - } - [TestMethod] - public void Test_2460() - { - } - [TestMethod] - public void Test_2461() - { - } - [TestMethod] - public void Test_2462() - { - } - [TestMethod] - public void Test_2463() - { - } - [TestMethod] - public void Test_2464() - { - } - [TestMethod] - public void Test_2465() - { - } - [TestMethod] - public void Test_2466() - { - } - [TestMethod] - public void Test_2467() - { - } - [TestMethod] - public void Test_2468() - { - } - [TestMethod] - public void Test_2469() - { - } - [TestMethod] - public void Test_2470() - { - } - [TestMethod] - public void Test_2471() - { - } - [TestMethod] - public void Test_2472() - { - } - [TestMethod] - public void Test_2473() - { - } - [TestMethod] - public void Test_2474() - { - } - [TestMethod] - public void Test_2475() - { - } - [TestMethod] - public void Test_2476() - { - } - [TestMethod] - public void Test_2477() - { - } - [TestMethod] - public void Test_2478() - { - } - [TestMethod] - public void Test_2479() - { - } - [TestMethod] - public void Test_2480() - { - } - [TestMethod] - public void Test_2481() - { - } - [TestMethod] - public void Test_2482() - { - } - [TestMethod] - public void Test_2483() - { - } - [TestMethod] - public void Test_2484() - { - } - [TestMethod] - public void Test_2485() - { - } - [TestMethod] - public void Test_2486() - { - } - [TestMethod] - public void Test_2487() - { - } - [TestMethod] - public void Test_2488() - { - } - [TestMethod] - public void Test_2489() - { - } - [TestMethod] - public void Test_2490() - { - } - [TestMethod] - public void Test_2491() - { - } - [TestMethod] - public void Test_2492() - { - } - [TestMethod] - public void Test_2493() - { - } - [TestMethod] - public void Test_2494() - { - } - [TestMethod] - public void Test_2495() - { - } - [TestMethod] - public void Test_2496() - { - } - [TestMethod] - public void Test_2497() - { - } - [TestMethod] - public void Test_2498() - { - } - [TestMethod] - public void Test_2499() - { - } - [TestMethod] - public void Test_2500() - { - } - [TestMethod] - public void Test_2501() - { - } - [TestMethod] - public void Test_2502() - { - } - [TestMethod] - public void Test_2503() - { - } - [TestMethod] - public void Test_2504() - { - } - [TestMethod] - public void Test_2505() - { - } - [TestMethod] - public void Test_2506() - { - } - [TestMethod] - public void Test_2507() - { - } - [TestMethod] - public void Test_2508() - { - } - [TestMethod] - public void Test_2509() - { - } - [TestMethod] - public void Test_2510() - { - } - [TestMethod] - public void Test_2511() - { - } - [TestMethod] - public void Test_2512() - { - } - [TestMethod] - public void Test_2513() - { - } - [TestMethod] - public void Test_2514() - { - } - [TestMethod] - public void Test_2515() - { - } - [TestMethod] - public void Test_2516() - { - } - [TestMethod] - public void Test_2517() - { - } - [TestMethod] - public void Test_2518() - { - } - [TestMethod] - public void Test_2519() - { - } - [TestMethod] - public void Test_2520() - { - } - [TestMethod] - public void Test_2521() - { - } - [TestMethod] - public void Test_2522() - { - } - [TestMethod] - public void Test_2523() - { - } - [TestMethod] - public void Test_2524() - { - } - [TestMethod] - public void Test_2525() - { - } - [TestMethod] - public void Test_2526() - { - } - [TestMethod] - public void Test_2527() - { - } - [TestMethod] - public void Test_2528() - { - } - [TestMethod] - public void Test_2529() - { - } - [TestMethod] - public void Test_2530() - { - } - [TestMethod] - public void Test_2531() - { - } - [TestMethod] - public void Test_2532() - { - } - [TestMethod] - public void Test_2533() - { - } - [TestMethod] - public void Test_2534() - { - } - [TestMethod] - public void Test_2535() - { - } - [TestMethod] - public void Test_2536() - { - } - [TestMethod] - public void Test_2537() - { - } - [TestMethod] - public void Test_2538() - { - } - [TestMethod] - public void Test_2539() - { - } - [TestMethod] - public void Test_2540() - { - } - [TestMethod] - public void Test_2541() - { - } - [TestMethod] - public void Test_2542() - { - } - [TestMethod] - public void Test_2543() - { - } - [TestMethod] - public void Test_2544() - { - } - [TestMethod] - public void Test_2545() - { - } - [TestMethod] - public void Test_2546() - { - } - [TestMethod] - public void Test_2547() - { - } - [TestMethod] - public void Test_2548() - { - } - [TestMethod] - public void Test_2549() - { - } - [TestMethod] - public void Test_2550() - { - } - [TestMethod] - public void Test_2551() - { - } - [TestMethod] - public void Test_2552() - { - } - [TestMethod] - public void Test_2553() - { - } - [TestMethod] - public void Test_2554() - { - } - [TestMethod] - public void Test_2555() - { - } - [TestMethod] - public void Test_2556() - { - } - [TestMethod] - public void Test_2557() - { - } - [TestMethod] - public void Test_2558() - { - } - [TestMethod] - public void Test_2559() - { - } - [TestMethod] - public void Test_2560() - { - } - [TestMethod] - public void Test_2561() - { - } - [TestMethod] - public void Test_2562() - { - } - [TestMethod] - public void Test_2563() - { - } - [TestMethod] - public void Test_2564() - { - } - [TestMethod] - public void Test_2565() - { - } - [TestMethod] - public void Test_2566() - { - } - [TestMethod] - public void Test_2567() - { - } - [TestMethod] - public void Test_2568() - { - } - [TestMethod] - public void Test_2569() - { - } - [TestMethod] - public void Test_2570() - { - } - [TestMethod] - public void Test_2571() - { - } - [TestMethod] - public void Test_2572() - { - } - [TestMethod] - public void Test_2573() - { - } - [TestMethod] - public void Test_2574() - { - } - [TestMethod] - public void Test_2575() - { - } - [TestMethod] - public void Test_2576() - { - } - [TestMethod] - public void Test_2577() - { - } - [TestMethod] - public void Test_2578() - { - } - [TestMethod] - public void Test_2579() - { - } - [TestMethod] - public void Test_2580() - { - } - [TestMethod] - public void Test_2581() - { - } - [TestMethod] - public void Test_2582() - { - } - [TestMethod] - public void Test_2583() - { - } - [TestMethod] - public void Test_2584() - { - } - [TestMethod] - public void Test_2585() - { - } - [TestMethod] - public void Test_2586() - { - } - [TestMethod] - public void Test_2587() - { - } - [TestMethod] - public void Test_2588() - { - } - [TestMethod] - public void Test_2589() - { - } - [TestMethod] - public void Test_2590() - { - } - [TestMethod] - public void Test_2591() - { - } - [TestMethod] - public void Test_2592() - { - } - [TestMethod] - public void Test_2593() - { - } - [TestMethod] - public void Test_2594() - { - } - [TestMethod] - public void Test_2595() - { - } - [TestMethod] - public void Test_2596() - { - } - [TestMethod] - public void Test_2597() - { - } - [TestMethod] - public void Test_2598() - { - } - [TestMethod] - public void Test_2599() - { - } - [TestMethod] - public void Test_2600() - { - } - [TestMethod] - public void Test_2601() - { - } - [TestMethod] - public void Test_2602() - { - } - [TestMethod] - public void Test_2603() - { - } - [TestMethod] - public void Test_2604() - { - } - [TestMethod] - public void Test_2605() - { - } - [TestMethod] - public void Test_2606() - { - } - [TestMethod] - public void Test_2607() - { - } - [TestMethod] - public void Test_2608() - { - } - [TestMethod] - public void Test_2609() - { - } - [TestMethod] - public void Test_2610() - { - } - [TestMethod] - public void Test_2611() - { - } - [TestMethod] - public void Test_2612() - { - } - [TestMethod] - public void Test_2613() - { - } - [TestMethod] - public void Test_2614() - { - } - [TestMethod] - public void Test_2615() - { - } - [TestMethod] - public void Test_2616() - { - } - [TestMethod] - public void Test_2617() - { - } - [TestMethod] - public void Test_2618() - { - } - [TestMethod] - public void Test_2619() - { - } - [TestMethod] - public void Test_2620() - { - } - [TestMethod] - public void Test_2621() - { - } - [TestMethod] - public void Test_2622() - { - } - [TestMethod] - public void Test_2623() - { - } - [TestMethod] - public void Test_2624() - { - } - [TestMethod] - public void Test_2625() - { - } - [TestMethod] - public void Test_2626() - { - } - [TestMethod] - public void Test_2627() - { - } - [TestMethod] - public void Test_2628() - { - } - [TestMethod] - public void Test_2629() - { - } - [TestMethod] - public void Test_2630() - { - } - [TestMethod] - public void Test_2631() - { - } - [TestMethod] - public void Test_2632() - { - } - [TestMethod] - public void Test_2633() - { - } - [TestMethod] - public void Test_2634() - { - } - [TestMethod] - public void Test_2635() - { - } - [TestMethod] - public void Test_2636() - { - } - [TestMethod] - public void Test_2637() - { - } - [TestMethod] - public void Test_2638() - { - } - [TestMethod] - public void Test_2639() - { - } - [TestMethod] - public void Test_2640() - { - } - [TestMethod] - public void Test_2641() - { - } - [TestMethod] - public void Test_2642() - { - } - [TestMethod] - public void Test_2643() - { - } - [TestMethod] - public void Test_2644() - { - } - [TestMethod] - public void Test_2645() - { - } - [TestMethod] - public void Test_2646() - { - } - [TestMethod] - public void Test_2647() - { - } - [TestMethod] - public void Test_2648() - { - } - [TestMethod] - public void Test_2649() - { - } - [TestMethod] - public void Test_2650() - { - } - [TestMethod] - public void Test_2651() - { - } - [TestMethod] - public void Test_2652() - { - } - [TestMethod] - public void Test_2653() - { - } - [TestMethod] - public void Test_2654() - { - } - [TestMethod] - public void Test_2655() - { - } - [TestMethod] - public void Test_2656() - { - } - [TestMethod] - public void Test_2657() - { - } - [TestMethod] - public void Test_2658() - { - } - [TestMethod] - public void Test_2659() - { - } - [TestMethod] - public void Test_2660() - { - } - [TestMethod] - public void Test_2661() - { - } - [TestMethod] - public void Test_2662() - { - } - [TestMethod] - public void Test_2663() - { - } - [TestMethod] - public void Test_2664() - { - } - [TestMethod] - public void Test_2665() - { - } - [TestMethod] - public void Test_2666() - { - } - [TestMethod] - public void Test_2667() - { - } - [TestMethod] - public void Test_2668() - { - } - [TestMethod] - public void Test_2669() - { - } - [TestMethod] - public void Test_2670() - { - } - [TestMethod] - public void Test_2671() - { - } - [TestMethod] - public void Test_2672() - { - } - [TestMethod] - public void Test_2673() - { - } - [TestMethod] - public void Test_2674() - { - } - [TestMethod] - public void Test_2675() - { - } - [TestMethod] - public void Test_2676() - { - } - [TestMethod] - public void Test_2677() - { - } - [TestMethod] - public void Test_2678() - { - } - [TestMethod] - public void Test_2679() - { - } - [TestMethod] - public void Test_2680() - { - } - [TestMethod] - public void Test_2681() - { - } - [TestMethod] - public void Test_2682() - { - } - [TestMethod] - public void Test_2683() - { - } - [TestMethod] - public void Test_2684() - { - } - [TestMethod] - public void Test_2685() - { - } - [TestMethod] - public void Test_2686() - { - } - [TestMethod] - public void Test_2687() - { - } - [TestMethod] - public void Test_2688() - { - } - [TestMethod] - public void Test_2689() - { - } - [TestMethod] - public void Test_2690() - { - } - [TestMethod] - public void Test_2691() - { - } - [TestMethod] - public void Test_2692() - { - } - [TestMethod] - public void Test_2693() - { - } - [TestMethod] - public void Test_2694() - { - } - [TestMethod] - public void Test_2695() - { - } - [TestMethod] - public void Test_2696() - { - } - [TestMethod] - public void Test_2697() - { - } - [TestMethod] - public void Test_2698() - { - } - [TestMethod] - public void Test_2699() - { - } - [TestMethod] - public void Test_2700() - { - } - [TestMethod] - public void Test_2701() - { - } - [TestMethod] - public void Test_2702() - { - } - [TestMethod] - public void Test_2703() - { - } - [TestMethod] - public void Test_2704() - { - } - [TestMethod] - public void Test_2705() - { - } - [TestMethod] - public void Test_2706() - { - } - [TestMethod] - public void Test_2707() - { - } - [TestMethod] - public void Test_2708() - { - } - [TestMethod] - public void Test_2709() - { - } - [TestMethod] - public void Test_2710() - { - } - [TestMethod] - public void Test_2711() - { - } - [TestMethod] - public void Test_2712() - { - } - [TestMethod] - public void Test_2713() - { - } - [TestMethod] - public void Test_2714() - { - } - [TestMethod] - public void Test_2715() - { - } - [TestMethod] - public void Test_2716() - { - } - [TestMethod] - public void Test_2717() - { - } - [TestMethod] - public void Test_2718() - { - } - [TestMethod] - public void Test_2719() - { - } - [TestMethod] - public void Test_2720() - { - } - [TestMethod] - public void Test_2721() - { - } - [TestMethod] - public void Test_2722() - { - } - [TestMethod] - public void Test_2723() - { - } - [TestMethod] - public void Test_2724() - { - } - [TestMethod] - public void Test_2725() - { - } - [TestMethod] - public void Test_2726() - { - } - [TestMethod] - public void Test_2727() - { - } - [TestMethod] - public void Test_2728() - { - } - [TestMethod] - public void Test_2729() - { - } - [TestMethod] - public void Test_2730() - { - } - [TestMethod] - public void Test_2731() - { - } - [TestMethod] - public void Test_2732() - { - } - [TestMethod] - public void Test_2733() - { - } - [TestMethod] - public void Test_2734() - { - } - [TestMethod] - public void Test_2735() - { - } - [TestMethod] - public void Test_2736() - { - } - [TestMethod] - public void Test_2737() - { - } - [TestMethod] - public void Test_2738() - { - } - [TestMethod] - public void Test_2739() - { - } - [TestMethod] - public void Test_2740() - { - } - [TestMethod] - public void Test_2741() - { - } - [TestMethod] - public void Test_2742() - { - } - [TestMethod] - public void Test_2743() - { - } - [TestMethod] - public void Test_2744() - { - } - [TestMethod] - public void Test_2745() - { - } - [TestMethod] - public void Test_2746() - { - } - [TestMethod] - public void Test_2747() - { - } - [TestMethod] - public void Test_2748() - { - } - [TestMethod] - public void Test_2749() - { - } - [TestMethod] - public void Test_2750() - { - } - [TestMethod] - public void Test_2751() - { - } - [TestMethod] - public void Test_2752() - { - } - [TestMethod] - public void Test_2753() - { - } - [TestMethod] - public void Test_2754() - { - } - [TestMethod] - public void Test_2755() - { - } - [TestMethod] - public void Test_2756() - { - } - [TestMethod] - public void Test_2757() - { - } - [TestMethod] - public void Test_2758() - { - } - [TestMethod] - public void Test_2759() - { - } - [TestMethod] - public void Test_2760() - { - } - [TestMethod] - public void Test_2761() - { - } - [TestMethod] - public void Test_2762() - { - } - [TestMethod] - public void Test_2763() - { - } - [TestMethod] - public void Test_2764() - { - } - [TestMethod] - public void Test_2765() - { - } - [TestMethod] - public void Test_2766() - { - } - [TestMethod] - public void Test_2767() - { - } - [TestMethod] - public void Test_2768() - { - } - [TestMethod] - public void Test_2769() - { - } - [TestMethod] - public void Test_2770() - { - } - [TestMethod] - public void Test_2771() - { - } - [TestMethod] - public void Test_2772() - { - } - [TestMethod] - public void Test_2773() - { - } - [TestMethod] - public void Test_2774() - { - } - [TestMethod] - public void Test_2775() - { - } - [TestMethod] - public void Test_2776() - { - } - [TestMethod] - public void Test_2777() - { - } - [TestMethod] - public void Test_2778() - { - } - [TestMethod] - public void Test_2779() - { - } - [TestMethod] - public void Test_2780() - { - } - [TestMethod] - public void Test_2781() - { - } - [TestMethod] - public void Test_2782() - { - } - [TestMethod] - public void Test_2783() - { - } - [TestMethod] - public void Test_2784() - { - } - [TestMethod] - public void Test_2785() - { - } - [TestMethod] - public void Test_2786() - { - } - [TestMethod] - public void Test_2787() - { - } - [TestMethod] - public void Test_2788() - { - } - [TestMethod] - public void Test_2789() - { - } - [TestMethod] - public void Test_2790() - { - } - [TestMethod] - public void Test_2791() - { - } - [TestMethod] - public void Test_2792() - { - } - [TestMethod] - public void Test_2793() - { - } - [TestMethod] - public void Test_2794() - { - } - [TestMethod] - public void Test_2795() - { - } - [TestMethod] - public void Test_2796() - { - } - [TestMethod] - public void Test_2797() - { - } - [TestMethod] - public void Test_2798() - { - } - [TestMethod] - public void Test_2799() - { - } - [TestMethod] - public void Test_2800() - { - } - [TestMethod] - public void Test_2801() - { - } - [TestMethod] - public void Test_2802() - { - } - [TestMethod] - public void Test_2803() - { - } - [TestMethod] - public void Test_2804() - { - } - [TestMethod] - public void Test_2805() - { - } - [TestMethod] - public void Test_2806() - { - } - [TestMethod] - public void Test_2807() - { - } - [TestMethod] - public void Test_2808() - { - } - [TestMethod] - public void Test_2809() - { - } - [TestMethod] - public void Test_2810() - { - } - [TestMethod] - public void Test_2811() - { - } - [TestMethod] - public void Test_2812() - { - } - [TestMethod] - public void Test_2813() - { - } - [TestMethod] - public void Test_2814() - { - } - [TestMethod] - public void Test_2815() - { - } - [TestMethod] - public void Test_2816() - { - } - [TestMethod] - public void Test_2817() - { - } - [TestMethod] - public void Test_2818() - { - } - [TestMethod] - public void Test_2819() - { - } - [TestMethod] - public void Test_2820() - { - } - [TestMethod] - public void Test_2821() - { - } - [TestMethod] - public void Test_2822() - { - } - [TestMethod] - public void Test_2823() - { - } - [TestMethod] - public void Test_2824() - { - } - [TestMethod] - public void Test_2825() - { - } - [TestMethod] - public void Test_2826() - { - } - [TestMethod] - public void Test_2827() - { - } - [TestMethod] - public void Test_2828() - { - } - [TestMethod] - public void Test_2829() - { - } - [TestMethod] - public void Test_2830() - { - } - [TestMethod] - public void Test_2831() - { - } - [TestMethod] - public void Test_2832() - { - } - [TestMethod] - public void Test_2833() - { - } - [TestMethod] - public void Test_2834() - { - } - [TestMethod] - public void Test_2835() - { - } - [TestMethod] - public void Test_2836() - { - } - [TestMethod] - public void Test_2837() - { - } - [TestMethod] - public void Test_2838() - { - } - [TestMethod] - public void Test_2839() - { - } - [TestMethod] - public void Test_2840() - { - } - [TestMethod] - public void Test_2841() - { - } - [TestMethod] - public void Test_2842() - { - } - [TestMethod] - public void Test_2843() - { - } - [TestMethod] - public void Test_2844() - { - } - [TestMethod] - public void Test_2845() - { - } - [TestMethod] - public void Test_2846() - { - } - [TestMethod] - public void Test_2847() - { - } - [TestMethod] - public void Test_2848() - { - } - [TestMethod] - public void Test_2849() - { - } - [TestMethod] - public void Test_2850() - { - } - [TestMethod] - public void Test_2851() - { - } - [TestMethod] - public void Test_2852() - { - } - [TestMethod] - public void Test_2853() - { - } - [TestMethod] - public void Test_2854() - { - } - [TestMethod] - public void Test_2855() - { - } - [TestMethod] - public void Test_2856() - { - } - [TestMethod] - public void Test_2857() - { - } - [TestMethod] - public void Test_2858() - { - } - [TestMethod] - public void Test_2859() - { - } - [TestMethod] - public void Test_2860() - { - } - [TestMethod] - public void Test_2861() - { - } - [TestMethod] - public void Test_2862() - { - } - [TestMethod] - public void Test_2863() - { - } - [TestMethod] - public void Test_2864() - { - } - [TestMethod] - public void Test_2865() - { - } - [TestMethod] - public void Test_2866() - { - } - [TestMethod] - public void Test_2867() - { - } - [TestMethod] - public void Test_2868() - { - } - [TestMethod] - public void Test_2869() - { - } - [TestMethod] - public void Test_2870() - { - } - [TestMethod] - public void Test_2871() - { - } - [TestMethod] - public void Test_2872() - { - } - [TestMethod] - public void Test_2873() - { - } - [TestMethod] - public void Test_2874() - { - } - [TestMethod] - public void Test_2875() - { - } - [TestMethod] - public void Test_2876() - { - } - [TestMethod] - public void Test_2877() - { - } - [TestMethod] - public void Test_2878() - { - } - [TestMethod] - public void Test_2879() - { - } - [TestMethod] - public void Test_2880() - { - } - [TestMethod] - public void Test_2881() - { - } - [TestMethod] - public void Test_2882() - { - } - [TestMethod] - public void Test_2883() - { - } - [TestMethod] - public void Test_2884() - { - } - [TestMethod] - public void Test_2885() - { - } - [TestMethod] - public void Test_2886() - { - } - [TestMethod] - public void Test_2887() - { - } - [TestMethod] - public void Test_2888() - { - } - [TestMethod] - public void Test_2889() - { - } - [TestMethod] - public void Test_2890() - { - } - [TestMethod] - public void Test_2891() - { - } - [TestMethod] - public void Test_2892() - { - } - [TestMethod] - public void Test_2893() - { - } - [TestMethod] - public void Test_2894() - { - } - [TestMethod] - public void Test_2895() - { - } - [TestMethod] - public void Test_2896() - { - } - [TestMethod] - public void Test_2897() - { - } - [TestMethod] - public void Test_2898() - { - } - [TestMethod] - public void Test_2899() - { - } - [TestMethod] - public void Test_2900() - { - } - [TestMethod] - public void Test_2901() - { - } - [TestMethod] - public void Test_2902() - { - } - [TestMethod] - public void Test_2903() - { - } - [TestMethod] - public void Test_2904() - { - } - [TestMethod] - public void Test_2905() - { - } - [TestMethod] - public void Test_2906() - { - } - [TestMethod] - public void Test_2907() - { - } - [TestMethod] - public void Test_2908() - { - } - [TestMethod] - public void Test_2909() - { - } - [TestMethod] - public void Test_2910() - { - } - [TestMethod] - public void Test_2911() - { - } - [TestMethod] - public void Test_2912() - { - } - [TestMethod] - public void Test_2913() - { - } - [TestMethod] - public void Test_2914() - { - } - [TestMethod] - public void Test_2915() - { - } - [TestMethod] - public void Test_2916() - { - } - [TestMethod] - public void Test_2917() - { - } - [TestMethod] - public void Test_2918() - { - } - [TestMethod] - public void Test_2919() - { - } - [TestMethod] - public void Test_2920() - { - } - [TestMethod] - public void Test_2921() - { - } - [TestMethod] - public void Test_2922() - { - } - [TestMethod] - public void Test_2923() - { - } - [TestMethod] - public void Test_2924() - { - } - [TestMethod] - public void Test_2925() - { - } - [TestMethod] - public void Test_2926() - { - } - [TestMethod] - public void Test_2927() - { - } - [TestMethod] - public void Test_2928() - { - } - [TestMethod] - public void Test_2929() - { - } - [TestMethod] - public void Test_2930() - { - } - [TestMethod] - public void Test_2931() - { - } - [TestMethod] - public void Test_2932() - { - } - [TestMethod] - public void Test_2933() - { - } - [TestMethod] - public void Test_2934() - { - } - [TestMethod] - public void Test_2935() - { - } - [TestMethod] - public void Test_2936() - { - } - [TestMethod] - public void Test_2937() - { - } - [TestMethod] - public void Test_2938() - { - } - [TestMethod] - public void Test_2939() - { - } - [TestMethod] - public void Test_2940() - { - } - [TestMethod] - public void Test_2941() - { - } - [TestMethod] - public void Test_2942() - { - } - [TestMethod] - public void Test_2943() - { - } - [TestMethod] - public void Test_2944() - { - } - [TestMethod] - public void Test_2945() - { - } - [TestMethod] - public void Test_2946() - { - } - [TestMethod] - public void Test_2947() - { - } - [TestMethod] - public void Test_2948() - { - } - [TestMethod] - public void Test_2949() - { - } - [TestMethod] - public void Test_2950() - { - } - [TestMethod] - public void Test_2951() - { - } - [TestMethod] - public void Test_2952() - { - } - [TestMethod] - public void Test_2953() - { - } - [TestMethod] - public void Test_2954() - { - } - [TestMethod] - public void Test_2955() - { - } - [TestMethod] - public void Test_2956() - { - } - [TestMethod] - public void Test_2957() - { - } - [TestMethod] - public void Test_2958() - { - } - [TestMethod] - public void Test_2959() - { - } - [TestMethod] - public void Test_2960() - { - } - [TestMethod] - public void Test_2961() - { - } - [TestMethod] - public void Test_2962() - { - } - [TestMethod] - public void Test_2963() - { - } - [TestMethod] - public void Test_2964() - { - } - [TestMethod] - public void Test_2965() - { - } - [TestMethod] - public void Test_2966() - { - } - [TestMethod] - public void Test_2967() - { - } - [TestMethod] - public void Test_2968() - { - } - [TestMethod] - public void Test_2969() - { - } - [TestMethod] - public void Test_2970() - { - } - [TestMethod] - public void Test_2971() - { - } - [TestMethod] - public void Test_2972() - { - } - [TestMethod] - public void Test_2973() - { - } - [TestMethod] - public void Test_2974() - { - } - [TestMethod] - public void Test_2975() - { - } - [TestMethod] - public void Test_2976() - { - } - [TestMethod] - public void Test_2977() - { - } - [TestMethod] - public void Test_2978() - { - } - [TestMethod] - public void Test_2979() - { - } - [TestMethod] - public void Test_2980() - { - } - [TestMethod] - public void Test_2981() - { - } - [TestMethod] - public void Test_2982() - { - } - [TestMethod] - public void Test_2983() - { - } - [TestMethod] - public void Test_2984() - { - } - [TestMethod] - public void Test_2985() - { - } - [TestMethod] - public void Test_2986() - { - } - [TestMethod] - public void Test_2987() - { - } - [TestMethod] - public void Test_2988() - { - } - [TestMethod] - public void Test_2989() - { - } - [TestMethod] - public void Test_2990() - { - } - [TestMethod] - public void Test_2991() - { - } - [TestMethod] - public void Test_2992() - { - } - [TestMethod] - public void Test_2993() - { - } - [TestMethod] - public void Test_2994() - { - } - [TestMethod] - public void Test_2995() - { - } - [TestMethod] - public void Test_2996() - { - } - [TestMethod] - public void Test_2997() - { - } - [TestMethod] - public void Test_2998() - { - } - [TestMethod] - public void Test_2999() - { - } - [TestMethod] - public void Test_3000() - { - } - [TestMethod] - public void Test_3001() - { - } - [TestMethod] - public void Test_3002() - { - } - [TestMethod] - public void Test_3003() - { - } - [TestMethod] - public void Test_3004() - { - } - [TestMethod] - public void Test_3005() - { - } - [TestMethod] - public void Test_3006() - { - } - [TestMethod] - public void Test_3007() - { - } - [TestMethod] - public void Test_3008() - { - } - [TestMethod] - public void Test_3009() - { - } - [TestMethod] - public void Test_3010() - { - } - [TestMethod] - public void Test_3011() - { - } - [TestMethod] - public void Test_3012() - { - } - [TestMethod] - public void Test_3013() - { - } - [TestMethod] - public void Test_3014() - { - } - [TestMethod] - public void Test_3015() - { - } - [TestMethod] - public void Test_3016() - { - } - [TestMethod] - public void Test_3017() - { - } - [TestMethod] - public void Test_3018() - { - } - [TestMethod] - public void Test_3019() - { - } - [TestMethod] - public void Test_3020() - { - } - [TestMethod] - public void Test_3021() - { - } - [TestMethod] - public void Test_3022() - { - } - [TestMethod] - public void Test_3023() - { - } - [TestMethod] - public void Test_3024() - { - } - [TestMethod] - public void Test_3025() - { - } - [TestMethod] - public void Test_3026() - { - } - [TestMethod] - public void Test_3027() - { - } - [TestMethod] - public void Test_3028() - { - } - [TestMethod] - public void Test_3029() - { - } - [TestMethod] - public void Test_3030() - { - } - [TestMethod] - public void Test_3031() - { - } - [TestMethod] - public void Test_3032() - { - } - [TestMethod] - public void Test_3033() - { - } - [TestMethod] - public void Test_3034() - { - } - [TestMethod] - public void Test_3035() - { - } - [TestMethod] - public void Test_3036() - { - } - [TestMethod] - public void Test_3037() - { - } - [TestMethod] - public void Test_3038() - { - } - [TestMethod] - public void Test_3039() - { - } - [TestMethod] - public void Test_3040() - { - } - [TestMethod] - public void Test_3041() - { - } - [TestMethod] - public void Test_3042() - { - } - [TestMethod] - public void Test_3043() - { - } - [TestMethod] - public void Test_3044() - { - } - [TestMethod] - public void Test_3045() - { - } - [TestMethod] - public void Test_3046() - { - } - [TestMethod] - public void Test_3047() - { - } - [TestMethod] - public void Test_3048() - { - } - [TestMethod] - public void Test_3049() - { - } - [TestMethod] - public void Test_3050() - { - } - [TestMethod] - public void Test_3051() - { - } - [TestMethod] - public void Test_3052() - { - } - [TestMethod] - public void Test_3053() - { - } - [TestMethod] - public void Test_3054() - { - } - [TestMethod] - public void Test_3055() - { - } - [TestMethod] - public void Test_3056() - { - } - [TestMethod] - public void Test_3057() - { - } - [TestMethod] - public void Test_3058() - { - } - [TestMethod] - public void Test_3059() - { - } - [TestMethod] - public void Test_3060() - { - } - [TestMethod] - public void Test_3061() - { - } - [TestMethod] - public void Test_3062() - { - } - [TestMethod] - public void Test_3063() - { - } - [TestMethod] - public void Test_3064() - { - } - [TestMethod] - public void Test_3065() - { - } - [TestMethod] - public void Test_3066() - { - } - [TestMethod] - public void Test_3067() - { - } - [TestMethod] - public void Test_3068() - { - } - [TestMethod] - public void Test_3069() - { - } - [TestMethod] - public void Test_3070() - { - } - [TestMethod] - public void Test_3071() - { - } - [TestMethod] - public void Test_3072() - { - } - [TestMethod] - public void Test_3073() - { - } - [TestMethod] - public void Test_3074() - { - } - [TestMethod] - public void Test_3075() - { - } - [TestMethod] - public void Test_3076() - { - } - [TestMethod] - public void Test_3077() - { - } - [TestMethod] - public void Test_3078() - { - } - [TestMethod] - public void Test_3079() - { - } - [TestMethod] - public void Test_3080() - { - } - [TestMethod] - public void Test_3081() - { - } - [TestMethod] - public void Test_3082() - { - } - [TestMethod] - public void Test_3083() - { - } - [TestMethod] - public void Test_3084() - { - } - [TestMethod] - public void Test_3085() - { - } - [TestMethod] - public void Test_3086() - { - } - [TestMethod] - public void Test_3087() - { - } - [TestMethod] - public void Test_3088() - { - } - [TestMethod] - public void Test_3089() - { - } - [TestMethod] - public void Test_3090() - { - } - [TestMethod] - public void Test_3091() - { - } - [TestMethod] - public void Test_3092() - { - } - [TestMethod] - public void Test_3093() - { - } - [TestMethod] - public void Test_3094() - { - } - [TestMethod] - public void Test_3095() - { - } - [TestMethod] - public void Test_3096() - { - } - [TestMethod] - public void Test_3097() - { - } - [TestMethod] - public void Test_3098() - { - } - [TestMethod] - public void Test_3099() - { - } - [TestMethod] - public void Test_3100() - { - } - [TestMethod] - public void Test_3101() - { - } - [TestMethod] - public void Test_3102() - { - } - [TestMethod] - public void Test_3103() - { - } - [TestMethod] - public void Test_3104() - { - } - [TestMethod] - public void Test_3105() - { - } - [TestMethod] - public void Test_3106() - { - } - [TestMethod] - public void Test_3107() - { - } - [TestMethod] - public void Test_3108() - { - } - [TestMethod] - public void Test_3109() - { - } - [TestMethod] - public void Test_3110() - { - } - [TestMethod] - public void Test_3111() - { - } - [TestMethod] - public void Test_3112() - { - } - [TestMethod] - public void Test_3113() - { - } - [TestMethod] - public void Test_3114() - { - } - [TestMethod] - public void Test_3115() - { - } - [TestMethod] - public void Test_3116() - { - } - [TestMethod] - public void Test_3117() - { - } - [TestMethod] - public void Test_3118() - { - } - [TestMethod] - public void Test_3119() - { - } - [TestMethod] - public void Test_3120() - { - } - [TestMethod] - public void Test_3121() - { - } - [TestMethod] - public void Test_3122() - { - } - [TestMethod] - public void Test_3123() - { - } - [TestMethod] - public void Test_3124() - { - } - [TestMethod] - public void Test_3125() - { - } - [TestMethod] - public void Test_3126() - { - } - [TestMethod] - public void Test_3127() - { - } - [TestMethod] - public void Test_3128() - { - } - [TestMethod] - public void Test_3129() - { - } - [TestMethod] - public void Test_3130() - { - } - [TestMethod] - public void Test_3131() - { - } - [TestMethod] - public void Test_3132() - { - } - [TestMethod] - public void Test_3133() - { - } - [TestMethod] - public void Test_3134() - { - } - [TestMethod] - public void Test_3135() - { - } - [TestMethod] - public void Test_3136() - { - } - [TestMethod] - public void Test_3137() - { - } - [TestMethod] - public void Test_3138() - { - } - [TestMethod] - public void Test_3139() - { - } - [TestMethod] - public void Test_3140() - { - } - [TestMethod] - public void Test_3141() - { - } - [TestMethod] - public void Test_3142() - { - } - [TestMethod] - public void Test_3143() - { - } - [TestMethod] - public void Test_3144() - { - } - [TestMethod] - public void Test_3145() - { - } - [TestMethod] - public void Test_3146() - { - } - [TestMethod] - public void Test_3147() - { - } - [TestMethod] - public void Test_3148() - { - } - [TestMethod] - public void Test_3149() - { - } - [TestMethod] - public void Test_3150() - { - } - [TestMethod] - public void Test_3151() - { - } - [TestMethod] - public void Test_3152() - { - } - [TestMethod] - public void Test_3153() - { - } - [TestMethod] - public void Test_3154() - { - } - [TestMethod] - public void Test_3155() - { - } - [TestMethod] - public void Test_3156() - { - } - [TestMethod] - public void Test_3157() - { - } - [TestMethod] - public void Test_3158() - { - } - [TestMethod] - public void Test_3159() - { - } - [TestMethod] - public void Test_3160() - { - } - [TestMethod] - public void Test_3161() - { - } - [TestMethod] - public void Test_3162() - { - } - [TestMethod] - public void Test_3163() - { - } - [TestMethod] - public void Test_3164() - { - } - [TestMethod] - public void Test_3165() - { - } - [TestMethod] - public void Test_3166() - { - } - [TestMethod] - public void Test_3167() - { - } - [TestMethod] - public void Test_3168() - { - } - [TestMethod] - public void Test_3169() - { - } - [TestMethod] - public void Test_3170() - { - } - [TestMethod] - public void Test_3171() - { - } - [TestMethod] - public void Test_3172() - { - } - [TestMethod] - public void Test_3173() - { - } - [TestMethod] - public void Test_3174() - { - } - [TestMethod] - public void Test_3175() - { - } - [TestMethod] - public void Test_3176() - { - } - [TestMethod] - public void Test_3177() - { - } - [TestMethod] - public void Test_3178() - { - } - [TestMethod] - public void Test_3179() - { - } - [TestMethod] - public void Test_3180() - { - } - [TestMethod] - public void Test_3181() - { - } - [TestMethod] - public void Test_3182() - { - } - [TestMethod] - public void Test_3183() - { - } - [TestMethod] - public void Test_3184() - { - } - [TestMethod] - public void Test_3185() - { - } - [TestMethod] - public void Test_3186() - { - } - [TestMethod] - public void Test_3187() - { - } - [TestMethod] - public void Test_3188() - { - } - [TestMethod] - public void Test_3189() - { - } - [TestMethod] - public void Test_3190() - { - } - [TestMethod] - public void Test_3191() - { - } - [TestMethod] - public void Test_3192() - { - } - [TestMethod] - public void Test_3193() - { - } - [TestMethod] - public void Test_3194() - { - } - [TestMethod] - public void Test_3195() - { - } - [TestMethod] - public void Test_3196() - { - } - [TestMethod] - public void Test_3197() - { - } - [TestMethod] - public void Test_3198() - { - } - [TestMethod] - public void Test_3199() - { - } - [TestMethod] - public void Test_3200() - { - } - [TestMethod] - public void Test_3201() - { - } - [TestMethod] - public void Test_3202() - { - } - [TestMethod] - public void Test_3203() - { - } - [TestMethod] - public void Test_3204() - { - } - [TestMethod] - public void Test_3205() - { - } - [TestMethod] - public void Test_3206() - { - } - [TestMethod] - public void Test_3207() - { - } - [TestMethod] - public void Test_3208() - { - } - [TestMethod] - public void Test_3209() - { - } - [TestMethod] - public void Test_3210() - { - } - [TestMethod] - public void Test_3211() - { - } - [TestMethod] - public void Test_3212() - { - } - [TestMethod] - public void Test_3213() - { - } - [TestMethod] - public void Test_3214() - { - } - [TestMethod] - public void Test_3215() - { - } - [TestMethod] - public void Test_3216() - { - } - [TestMethod] - public void Test_3217() - { - } - [TestMethod] - public void Test_3218() - { - } - [TestMethod] - public void Test_3219() - { - } - [TestMethod] - public void Test_3220() - { - } - [TestMethod] - public void Test_3221() - { - } - [TestMethod] - public void Test_3222() - { - } - [TestMethod] - public void Test_3223() - { - } - [TestMethod] - public void Test_3224() - { - } - [TestMethod] - public void Test_3225() - { - } - [TestMethod] - public void Test_3226() - { - } - [TestMethod] - public void Test_3227() - { - } - [TestMethod] - public void Test_3228() - { - } - [TestMethod] - public void Test_3229() - { - } - [TestMethod] - public void Test_3230() - { - } - [TestMethod] - public void Test_3231() - { - } - [TestMethod] - public void Test_3232() - { - } - [TestMethod] - public void Test_3233() - { - } - [TestMethod] - public void Test_3234() - { - } - [TestMethod] - public void Test_3235() - { - } - [TestMethod] - public void Test_3236() - { - } - [TestMethod] - public void Test_3237() - { - } - [TestMethod] - public void Test_3238() - { - } - [TestMethod] - public void Test_3239() - { - } - [TestMethod] - public void Test_3240() - { - } - [TestMethod] - public void Test_3241() - { - } - [TestMethod] - public void Test_3242() - { - } - [TestMethod] - public void Test_3243() - { - } - [TestMethod] - public void Test_3244() - { - } - [TestMethod] - public void Test_3245() - { - } - [TestMethod] - public void Test_3246() - { - } - [TestMethod] - public void Test_3247() - { - } - [TestMethod] - public void Test_3248() - { - } - [TestMethod] - public void Test_3249() - { - } - [TestMethod] - public void Test_3250() - { - } - [TestMethod] - public void Test_3251() - { - } - [TestMethod] - public void Test_3252() - { - } - [TestMethod] - public void Test_3253() - { - } - [TestMethod] - public void Test_3254() - { - } - [TestMethod] - public void Test_3255() - { - } - [TestMethod] - public void Test_3256() - { - } - [TestMethod] - public void Test_3257() - { - } - [TestMethod] - public void Test_3258() - { - } - [TestMethod] - public void Test_3259() - { - } - [TestMethod] - public void Test_3260() - { - } - [TestMethod] - public void Test_3261() - { - } - [TestMethod] - public void Test_3262() - { - } - [TestMethod] - public void Test_3263() - { - } - [TestMethod] - public void Test_3264() - { - } - [TestMethod] - public void Test_3265() - { - } - [TestMethod] - public void Test_3266() - { - } - [TestMethod] - public void Test_3267() - { - } - [TestMethod] - public void Test_3268() - { - } - [TestMethod] - public void Test_3269() - { - } - [TestMethod] - public void Test_3270() - { - } - [TestMethod] - public void Test_3271() - { - } - [TestMethod] - public void Test_3272() - { - } - [TestMethod] - public void Test_3273() - { - } - [TestMethod] - public void Test_3274() - { - } - [TestMethod] - public void Test_3275() - { - } - [TestMethod] - public void Test_3276() - { - } - [TestMethod] - public void Test_3277() - { - } - [TestMethod] - public void Test_3278() - { - } - [TestMethod] - public void Test_3279() - { - } - [TestMethod] - public void Test_3280() - { - } - [TestMethod] - public void Test_3281() - { - } - [TestMethod] - public void Test_3282() - { - } - [TestMethod] - public void Test_3283() - { - } - [TestMethod] - public void Test_3284() - { - } - [TestMethod] - public void Test_3285() - { - } - [TestMethod] - public void Test_3286() - { - } - [TestMethod] - public void Test_3287() - { - } - [TestMethod] - public void Test_3288() - { - } - [TestMethod] - public void Test_3289() - { - } - [TestMethod] - public void Test_3290() - { - } - [TestMethod] - public void Test_3291() - { - } - [TestMethod] - public void Test_3292() - { - } - [TestMethod] - public void Test_3293() - { - } - [TestMethod] - public void Test_3294() - { - } - [TestMethod] - public void Test_3295() - { - } - [TestMethod] - public void Test_3296() - { - } - [TestMethod] - public void Test_3297() - { - } - [TestMethod] - public void Test_3298() - { - } - [TestMethod] - public void Test_3299() - { - } - [TestMethod] - public void Test_3300() - { - } - [TestMethod] - public void Test_3301() - { - } - [TestMethod] - public void Test_3302() - { - } - [TestMethod] - public void Test_3303() - { - } - [TestMethod] - public void Test_3304() - { - } - [TestMethod] - public void Test_3305() - { - } - [TestMethod] - public void Test_3306() - { - } - [TestMethod] - public void Test_3307() - { - } - [TestMethod] - public void Test_3308() - { - } - [TestMethod] - public void Test_3309() - { - } - [TestMethod] - public void Test_3310() - { - } - [TestMethod] - public void Test_3311() - { - } - [TestMethod] - public void Test_3312() - { - } - [TestMethod] - public void Test_3313() - { - } - [TestMethod] - public void Test_3314() - { - } - [TestMethod] - public void Test_3315() - { - } - [TestMethod] - public void Test_3316() - { - } - [TestMethod] - public void Test_3317() - { - } - [TestMethod] - public void Test_3318() - { - } - [TestMethod] - public void Test_3319() - { - } - [TestMethod] - public void Test_3320() - { - } - [TestMethod] - public void Test_3321() - { - } - [TestMethod] - public void Test_3322() - { - } - [TestMethod] - public void Test_3323() - { - } - [TestMethod] - public void Test_3324() - { - } - [TestMethod] - public void Test_3325() - { - } - [TestMethod] - public void Test_3326() - { - } - [TestMethod] - public void Test_3327() - { - } - [TestMethod] - public void Test_3328() - { - } - [TestMethod] - public void Test_3329() - { - } - [TestMethod] - public void Test_3330() - { - } - [TestMethod] - public void Test_3331() - { - } - [TestMethod] - public void Test_3332() - { - } - [TestMethod] - public void Test_3333() - { - } - [TestMethod] - public void Test_3334() - { - } - [TestMethod] - public void Test_3335() - { - } - [TestMethod] - public void Test_3336() - { - } - [TestMethod] - public void Test_3337() - { - } - [TestMethod] - public void Test_3338() - { - } - [TestMethod] - public void Test_3339() - { - } - [TestMethod] - public void Test_3340() - { - } - [TestMethod] - public void Test_3341() - { - } - [TestMethod] - public void Test_3342() - { - } - [TestMethod] - public void Test_3343() - { - } - [TestMethod] - public void Test_3344() - { - } - [TestMethod] - public void Test_3345() - { - } - [TestMethod] - public void Test_3346() - { - } - [TestMethod] - public void Test_3347() - { - } - [TestMethod] - public void Test_3348() - { - } - [TestMethod] - public void Test_3349() - { - } - [TestMethod] - public void Test_3350() - { - } - [TestMethod] - public void Test_3351() - { - } - [TestMethod] - public void Test_3352() - { - } - [TestMethod] - public void Test_3353() - { - } - [TestMethod] - public void Test_3354() - { - } - [TestMethod] - public void Test_3355() - { - } - [TestMethod] - public void Test_3356() - { - } - [TestMethod] - public void Test_3357() - { - } - [TestMethod] - public void Test_3358() - { - } - [TestMethod] - public void Test_3359() - { - } - [TestMethod] - public void Test_3360() - { - } - [TestMethod] - public void Test_3361() - { - } - [TestMethod] - public void Test_3362() - { - } - [TestMethod] - public void Test_3363() - { - } - [TestMethod] - public void Test_3364() - { - } - [TestMethod] - public void Test_3365() - { - } - [TestMethod] - public void Test_3366() - { - } - [TestMethod] - public void Test_3367() - { - } - [TestMethod] - public void Test_3368() - { - } - [TestMethod] - public void Test_3369() - { - } - [TestMethod] - public void Test_3370() - { - } - [TestMethod] - public void Test_3371() - { - } - [TestMethod] - public void Test_3372() - { - } - [TestMethod] - public void Test_3373() - { - } - [TestMethod] - public void Test_3374() - { - } - [TestMethod] - public void Test_3375() - { - } - [TestMethod] - public void Test_3376() - { - } - [TestMethod] - public void Test_3377() - { - } - [TestMethod] - public void Test_3378() - { - } - [TestMethod] - public void Test_3379() - { - } - [TestMethod] - public void Test_3380() - { - } - [TestMethod] - public void Test_3381() - { - } - [TestMethod] - public void Test_3382() - { - } - [TestMethod] - public void Test_3383() - { - } - [TestMethod] - public void Test_3384() - { - } - [TestMethod] - public void Test_3385() - { - } - [TestMethod] - public void Test_3386() - { - } - [TestMethod] - public void Test_3387() - { - } - [TestMethod] - public void Test_3388() - { - } - [TestMethod] - public void Test_3389() - { - } - [TestMethod] - public void Test_3390() - { - } - [TestMethod] - public void Test_3391() - { - } - [TestMethod] - public void Test_3392() - { - } - [TestMethod] - public void Test_3393() - { - } - [TestMethod] - public void Test_3394() - { - } - [TestMethod] - public void Test_3395() - { - } - [TestMethod] - public void Test_3396() - { - } - [TestMethod] - public void Test_3397() - { - } - [TestMethod] - public void Test_3398() - { - } - [TestMethod] - public void Test_3399() - { - } - [TestMethod] - public void Test_3400() - { - } - [TestMethod] - public void Test_3401() - { - } - [TestMethod] - public void Test_3402() - { - } - [TestMethod] - public void Test_3403() - { - } - [TestMethod] - public void Test_3404() - { - } - [TestMethod] - public void Test_3405() - { - } - [TestMethod] - public void Test_3406() - { - } - [TestMethod] - public void Test_3407() - { - } - [TestMethod] - public void Test_3408() - { - } - [TestMethod] - public void Test_3409() - { - } - [TestMethod] - public void Test_3410() - { - } - [TestMethod] - public void Test_3411() - { - } - [TestMethod] - public void Test_3412() - { - } - [TestMethod] - public void Test_3413() - { - } - [TestMethod] - public void Test_3414() - { - } - [TestMethod] - public void Test_3415() - { - } - [TestMethod] - public void Test_3416() - { - } - [TestMethod] - public void Test_3417() - { - } - [TestMethod] - public void Test_3418() - { - } - [TestMethod] - public void Test_3419() - { - } - [TestMethod] - public void Test_3420() - { - } - [TestMethod] - public void Test_3421() - { - } - [TestMethod] - public void Test_3422() - { - } - [TestMethod] - public void Test_3423() - { - } - [TestMethod] - public void Test_3424() - { - } - [TestMethod] - public void Test_3425() - { - } - [TestMethod] - public void Test_3426() - { - } - [TestMethod] - public void Test_3427() - { - } - [TestMethod] - public void Test_3428() - { - } - [TestMethod] - public void Test_3429() - { - } - [TestMethod] - public void Test_3430() - { - } - [TestMethod] - public void Test_3431() - { - } - [TestMethod] - public void Test_3432() - { - } - [TestMethod] - public void Test_3433() - { - } - [TestMethod] - public void Test_3434() - { - } - [TestMethod] - public void Test_3435() - { - } - [TestMethod] - public void Test_3436() - { - } - [TestMethod] - public void Test_3437() - { - } - [TestMethod] - public void Test_3438() - { - } - [TestMethod] - public void Test_3439() - { - } - [TestMethod] - public void Test_3440() - { - } - [TestMethod] - public void Test_3441() - { - } - [TestMethod] - public void Test_3442() - { - } - [TestMethod] - public void Test_3443() - { - } - [TestMethod] - public void Test_3444() - { - } - [TestMethod] - public void Test_3445() - { - } - [TestMethod] - public void Test_3446() - { - } - [TestMethod] - public void Test_3447() - { - } - [TestMethod] - public void Test_3448() - { - } - [TestMethod] - public void Test_3449() - { - } - [TestMethod] - public void Test_3450() - { - } - [TestMethod] - public void Test_3451() - { - } - [TestMethod] - public void Test_3452() - { - } - [TestMethod] - public void Test_3453() - { - } - [TestMethod] - public void Test_3454() - { - } - [TestMethod] - public void Test_3455() - { - } - [TestMethod] - public void Test_3456() - { - } - [TestMethod] - public void Test_3457() - { - } - [TestMethod] - public void Test_3458() - { - } - [TestMethod] - public void Test_3459() - { - } - [TestMethod] - public void Test_3460() - { - } - [TestMethod] - public void Test_3461() - { - } - [TestMethod] - public void Test_3462() - { - } - [TestMethod] - public void Test_3463() - { - } - [TestMethod] - public void Test_3464() - { - } - [TestMethod] - public void Test_3465() - { - } - [TestMethod] - public void Test_3466() - { - } - [TestMethod] - public void Test_3467() - { - } - [TestMethod] - public void Test_3468() - { - } - [TestMethod] - public void Test_3469() - { - } - [TestMethod] - public void Test_3470() - { - } - [TestMethod] - public void Test_3471() - { - } - [TestMethod] - public void Test_3472() - { - } - [TestMethod] - public void Test_3473() - { - } - [TestMethod] - public void Test_3474() - { - } - [TestMethod] - public void Test_3475() - { - } - [TestMethod] - public void Test_3476() - { - } - [TestMethod] - public void Test_3477() - { - } - [TestMethod] - public void Test_3478() - { - } - [TestMethod] - public void Test_3479() - { - } - [TestMethod] - public void Test_3480() - { - } - [TestMethod] - public void Test_3481() - { - } - [TestMethod] - public void Test_3482() - { - } - [TestMethod] - public void Test_3483() - { - } - [TestMethod] - public void Test_3484() - { - } - [TestMethod] - public void Test_3485() - { - } - [TestMethod] - public void Test_3486() - { - } - [TestMethod] - public void Test_3487() - { - } - [TestMethod] - public void Test_3488() - { - } - [TestMethod] - public void Test_3489() - { - } - [TestMethod] - public void Test_3490() - { - } - [TestMethod] - public void Test_3491() - { - } - [TestMethod] - public void Test_3492() - { - } - [TestMethod] - public void Test_3493() - { - } - [TestMethod] - public void Test_3494() - { - } - [TestMethod] - public void Test_3495() - { - } - [TestMethod] - public void Test_3496() - { - } - [TestMethod] - public void Test_3497() - { - } - [TestMethod] - public void Test_3498() - { - } - [TestMethod] - public void Test_3499() - { - } - [TestMethod] - public void Test_3500() - { - } - [TestMethod] - public void Test_3501() - { - } - [TestMethod] - public void Test_3502() - { - } - [TestMethod] - public void Test_3503() - { - } - [TestMethod] - public void Test_3504() - { - } - [TestMethod] - public void Test_3505() - { - } - [TestMethod] - public void Test_3506() - { - } - [TestMethod] - public void Test_3507() - { - } - [TestMethod] - public void Test_3508() - { - } - [TestMethod] - public void Test_3509() - { - } - [TestMethod] - public void Test_3510() - { - } - [TestMethod] - public void Test_3511() - { - } - [TestMethod] - public void Test_3512() - { - } - [TestMethod] - public void Test_3513() - { - } - [TestMethod] - public void Test_3514() - { - } - [TestMethod] - public void Test_3515() - { - } - [TestMethod] - public void Test_3516() - { - } - [TestMethod] - public void Test_3517() - { - } - [TestMethod] - public void Test_3518() - { - } - [TestMethod] - public void Test_3519() - { - } - [TestMethod] - public void Test_3520() - { - } - [TestMethod] - public void Test_3521() - { - } - [TestMethod] - public void Test_3522() - { - } - [TestMethod] - public void Test_3523() - { - } - [TestMethod] - public void Test_3524() - { - } - [TestMethod] - public void Test_3525() - { - } - [TestMethod] - public void Test_3526() - { - } - [TestMethod] - public void Test_3527() - { - } - [TestMethod] - public void Test_3528() - { - } - [TestMethod] - public void Test_3529() - { - } - [TestMethod] - public void Test_3530() - { - } - [TestMethod] - public void Test_3531() - { - } - [TestMethod] - public void Test_3532() - { - } - [TestMethod] - public void Test_3533() - { - } - [TestMethod] - public void Test_3534() - { - } - [TestMethod] - public void Test_3535() - { - } - [TestMethod] - public void Test_3536() - { - } - [TestMethod] - public void Test_3537() - { - } - [TestMethod] - public void Test_3538() - { - } - [TestMethod] - public void Test_3539() - { - } - [TestMethod] - public void Test_3540() - { - } - [TestMethod] - public void Test_3541() - { - } - [TestMethod] - public void Test_3542() - { - } - [TestMethod] - public void Test_3543() - { - } - [TestMethod] - public void Test_3544() - { - } - [TestMethod] - public void Test_3545() - { - } - [TestMethod] - public void Test_3546() - { - } - [TestMethod] - public void Test_3547() - { - } - [TestMethod] - public void Test_3548() - { - } - [TestMethod] - public void Test_3549() - { - } - [TestMethod] - public void Test_3550() - { - } - [TestMethod] - public void Test_3551() - { - } - [TestMethod] - public void Test_3552() - { - } - [TestMethod] - public void Test_3553() - { - } - [TestMethod] - public void Test_3554() - { - } - [TestMethod] - public void Test_3555() - { - } - [TestMethod] - public void Test_3556() - { - } - [TestMethod] - public void Test_3557() - { - } - [TestMethod] - public void Test_3558() - { - } - [TestMethod] - public void Test_3559() - { - } - [TestMethod] - public void Test_3560() - { - } - [TestMethod] - public void Test_3561() - { - } - [TestMethod] - public void Test_3562() - { - } - [TestMethod] - public void Test_3563() - { - } - [TestMethod] - public void Test_3564() - { - } - [TestMethod] - public void Test_3565() - { - } - [TestMethod] - public void Test_3566() - { - } - [TestMethod] - public void Test_3567() - { - } - [TestMethod] - public void Test_3568() - { - } - [TestMethod] - public void Test_3569() - { - } - [TestMethod] - public void Test_3570() - { - } - [TestMethod] - public void Test_3571() - { - } - [TestMethod] - public void Test_3572() - { - } - [TestMethod] - public void Test_3573() - { - } - [TestMethod] - public void Test_3574() - { - } - [TestMethod] - public void Test_3575() - { - } - [TestMethod] - public void Test_3576() - { - } - [TestMethod] - public void Test_3577() - { - } - [TestMethod] - public void Test_3578() - { - } - [TestMethod] - public void Test_3579() - { - } - [TestMethod] - public void Test_3580() - { - } - [TestMethod] - public void Test_3581() - { - } - [TestMethod] - public void Test_3582() - { - } - [TestMethod] - public void Test_3583() - { - } - [TestMethod] - public void Test_3584() - { - } - [TestMethod] - public void Test_3585() - { - } - [TestMethod] - public void Test_3586() - { - } - [TestMethod] - public void Test_3587() - { - } - [TestMethod] - public void Test_3588() - { - } - [TestMethod] - public void Test_3589() - { - } - [TestMethod] - public void Test_3590() - { - } - [TestMethod] - public void Test_3591() - { - } - [TestMethod] - public void Test_3592() - { - } - [TestMethod] - public void Test_3593() - { - } - [TestMethod] - public void Test_3594() - { - } - [TestMethod] - public void Test_3595() - { - } - [TestMethod] - public void Test_3596() - { - } - [TestMethod] - public void Test_3597() - { - } - [TestMethod] - public void Test_3598() - { - } - [TestMethod] - public void Test_3599() - { - } - [TestMethod] - public void Test_3600() - { - } - [TestMethod] - public void Test_3601() - { - } - [TestMethod] - public void Test_3602() - { - } - [TestMethod] - public void Test_3603() - { - } - [TestMethod] - public void Test_3604() - { - } - [TestMethod] - public void Test_3605() - { - } - [TestMethod] - public void Test_3606() - { - } - [TestMethod] - public void Test_3607() - { - } - [TestMethod] - public void Test_3608() - { - } - [TestMethod] - public void Test_3609() - { - } - [TestMethod] - public void Test_3610() - { - } - [TestMethod] - public void Test_3611() - { - } - [TestMethod] - public void Test_3612() - { - } - [TestMethod] - public void Test_3613() - { - } - [TestMethod] - public void Test_3614() - { - } - [TestMethod] - public void Test_3615() - { - } - [TestMethod] - public void Test_3616() - { - } - [TestMethod] - public void Test_3617() - { - } - [TestMethod] - public void Test_3618() - { - } - [TestMethod] - public void Test_3619() - { - } - [TestMethod] - public void Test_3620() - { - } - [TestMethod] - public void Test_3621() - { - } - [TestMethod] - public void Test_3622() - { - } - [TestMethod] - public void Test_3623() - { - } - [TestMethod] - public void Test_3624() - { - } - [TestMethod] - public void Test_3625() - { - } - [TestMethod] - public void Test_3626() - { - } - [TestMethod] - public void Test_3627() - { - } - [TestMethod] - public void Test_3628() - { - } - [TestMethod] - public void Test_3629() - { - } - [TestMethod] - public void Test_3630() - { - } - [TestMethod] - public void Test_3631() - { - } - [TestMethod] - public void Test_3632() - { - } - [TestMethod] - public void Test_3633() - { - } - [TestMethod] - public void Test_3634() - { - } - [TestMethod] - public void Test_3635() - { - } - [TestMethod] - public void Test_3636() - { - } - [TestMethod] - public void Test_3637() - { - } - [TestMethod] - public void Test_3638() - { - } - [TestMethod] - public void Test_3639() - { - } - [TestMethod] - public void Test_3640() - { - } - [TestMethod] - public void Test_3641() - { - } - [TestMethod] - public void Test_3642() - { - } - [TestMethod] - public void Test_3643() - { - } - [TestMethod] - public void Test_3644() - { - } - [TestMethod] - public void Test_3645() - { - } - [TestMethod] - public void Test_3646() - { - } - [TestMethod] - public void Test_3647() - { - } - [TestMethod] - public void Test_3648() - { - } - [TestMethod] - public void Test_3649() - { - } - [TestMethod] - public void Test_3650() - { - } - [TestMethod] - public void Test_3651() - { - } - [TestMethod] - public void Test_3652() - { - } - [TestMethod] - public void Test_3653() - { - } - [TestMethod] - public void Test_3654() - { - } - [TestMethod] - public void Test_3655() - { - } - [TestMethod] - public void Test_3656() - { - } - [TestMethod] - public void Test_3657() - { - } - [TestMethod] - public void Test_3658() - { - } - [TestMethod] - public void Test_3659() - { - } - [TestMethod] - public void Test_3660() - { - } - [TestMethod] - public void Test_3661() - { - } - [TestMethod] - public void Test_3662() - { - } - [TestMethod] - public void Test_3663() - { - } - [TestMethod] - public void Test_3664() - { - } - [TestMethod] - public void Test_3665() - { - } - [TestMethod] - public void Test_3666() - { - } - [TestMethod] - public void Test_3667() - { - } - [TestMethod] - public void Test_3668() - { - } - [TestMethod] - public void Test_3669() - { - } - [TestMethod] - public void Test_3670() - { - } - [TestMethod] - public void Test_3671() - { - } - [TestMethod] - public void Test_3672() - { - } - [TestMethod] - public void Test_3673() - { - } - [TestMethod] - public void Test_3674() - { - } - [TestMethod] - public void Test_3675() - { - } - [TestMethod] - public void Test_3676() - { - } - [TestMethod] - public void Test_3677() - { - } - [TestMethod] - public void Test_3678() - { - } - [TestMethod] - public void Test_3679() - { - } - [TestMethod] - public void Test_3680() - { - } - [TestMethod] - public void Test_3681() - { - } - [TestMethod] - public void Test_3682() - { - } - [TestMethod] - public void Test_3683() - { - } - [TestMethod] - public void Test_3684() - { - } - [TestMethod] - public void Test_3685() - { - } - [TestMethod] - public void Test_3686() - { - } - [TestMethod] - public void Test_3687() - { - } - [TestMethod] - public void Test_3688() - { - } - [TestMethod] - public void Test_3689() - { - } - [TestMethod] - public void Test_3690() - { - } - [TestMethod] - public void Test_3691() - { - } - [TestMethod] - public void Test_3692() - { - } - [TestMethod] - public void Test_3693() - { - } - [TestMethod] - public void Test_3694() - { - } - [TestMethod] - public void Test_3695() - { - } - [TestMethod] - public void Test_3696() - { - } - [TestMethod] - public void Test_3697() - { - } - [TestMethod] - public void Test_3698() - { - } - [TestMethod] - public void Test_3699() - { - } - [TestMethod] - public void Test_3700() - { - } - [TestMethod] - public void Test_3701() - { - } - [TestMethod] - public void Test_3702() - { - } - [TestMethod] - public void Test_3703() - { - } - [TestMethod] - public void Test_3704() - { - } - [TestMethod] - public void Test_3705() - { - } - [TestMethod] - public void Test_3706() - { - } - [TestMethod] - public void Test_3707() - { - } - [TestMethod] - public void Test_3708() - { - } - [TestMethod] - public void Test_3709() - { - } - [TestMethod] - public void Test_3710() - { - } - [TestMethod] - public void Test_3711() - { - } - [TestMethod] - public void Test_3712() - { - } - [TestMethod] - public void Test_3713() - { - } - [TestMethod] - public void Test_3714() - { - } - [TestMethod] - public void Test_3715() - { - } - [TestMethod] - public void Test_3716() - { - } - [TestMethod] - public void Test_3717() - { - } - [TestMethod] - public void Test_3718() - { - } - [TestMethod] - public void Test_3719() - { - } - [TestMethod] - public void Test_3720() - { - } - [TestMethod] - public void Test_3721() - { - } - [TestMethod] - public void Test_3722() - { - } - [TestMethod] - public void Test_3723() - { - } - [TestMethod] - public void Test_3724() - { - } - [TestMethod] - public void Test_3725() - { - } - [TestMethod] - public void Test_3726() - { - } - [TestMethod] - public void Test_3727() - { - } - [TestMethod] - public void Test_3728() - { - } - [TestMethod] - public void Test_3729() - { - } - [TestMethod] - public void Test_3730() - { - } - [TestMethod] - public void Test_3731() - { - } - [TestMethod] - public void Test_3732() - { - } - [TestMethod] - public void Test_3733() - { - } - [TestMethod] - public void Test_3734() - { - } - [TestMethod] - public void Test_3735() - { - } - [TestMethod] - public void Test_3736() - { - } - [TestMethod] - public void Test_3737() - { - } - [TestMethod] - public void Test_3738() - { - } - [TestMethod] - public void Test_3739() - { - } - [TestMethod] - public void Test_3740() - { - } - [TestMethod] - public void Test_3741() - { - } - [TestMethod] - public void Test_3742() - { - } - [TestMethod] - public void Test_3743() - { - } - [TestMethod] - public void Test_3744() - { - } - [TestMethod] - public void Test_3745() - { - } - [TestMethod] - public void Test_3746() - { - } - [TestMethod] - public void Test_3747() - { - } - [TestMethod] - public void Test_3748() - { - } - [TestMethod] - public void Test_3749() - { - } - [TestMethod] - public void Test_3750() - { - } - [TestMethod] - public void Test_3751() - { - } - [TestMethod] - public void Test_3752() - { - } - [TestMethod] - public void Test_3753() - { - } - [TestMethod] - public void Test_3754() - { - } - [TestMethod] - public void Test_3755() - { - } - [TestMethod] - public void Test_3756() - { - } - [TestMethod] - public void Test_3757() - { - } - [TestMethod] - public void Test_3758() - { - } - [TestMethod] - public void Test_3759() - { - } - [TestMethod] - public void Test_3760() - { - } - [TestMethod] - public void Test_3761() - { - } - [TestMethod] - public void Test_3762() - { - } - [TestMethod] - public void Test_3763() - { - } - [TestMethod] - public void Test_3764() - { - } - [TestMethod] - public void Test_3765() - { - } - [TestMethod] - public void Test_3766() - { - } - [TestMethod] - public void Test_3767() - { - } - [TestMethod] - public void Test_3768() - { - } - [TestMethod] - public void Test_3769() - { - } - [TestMethod] - public void Test_3770() - { - } - [TestMethod] - public void Test_3771() - { - } - [TestMethod] - public void Test_3772() - { - } - [TestMethod] - public void Test_3773() - { - } - [TestMethod] - public void Test_3774() - { - } - [TestMethod] - public void Test_3775() - { - } - [TestMethod] - public void Test_3776() - { - } - [TestMethod] - public void Test_3777() - { - } - [TestMethod] - public void Test_3778() - { - } - [TestMethod] - public void Test_3779() - { - } - [TestMethod] - public void Test_3780() - { - } - [TestMethod] - public void Test_3781() - { - } - [TestMethod] - public void Test_3782() - { - } - [TestMethod] - public void Test_3783() - { - } - [TestMethod] - public void Test_3784() - { - } - [TestMethod] - public void Test_3785() - { - } - [TestMethod] - public void Test_3786() - { - } - [TestMethod] - public void Test_3787() - { - } - [TestMethod] - public void Test_3788() - { - } - [TestMethod] - public void Test_3789() - { - } - [TestMethod] - public void Test_3790() - { - } - [TestMethod] - public void Test_3791() - { - } - [TestMethod] - public void Test_3792() - { - } - [TestMethod] - public void Test_3793() - { - } - [TestMethod] - public void Test_3794() - { - } - [TestMethod] - public void Test_3795() - { - } - [TestMethod] - public void Test_3796() - { - } - [TestMethod] - public void Test_3797() - { - } - [TestMethod] - public void Test_3798() - { - } - [TestMethod] - public void Test_3799() - { - } - [TestMethod] - public void Test_3800() - { - } - [TestMethod] - public void Test_3801() - { - } - [TestMethod] - public void Test_3802() - { - } - [TestMethod] - public void Test_3803() - { - } - [TestMethod] - public void Test_3804() - { - } - [TestMethod] - public void Test_3805() - { - } - [TestMethod] - public void Test_3806() - { - } - [TestMethod] - public void Test_3807() - { - } - [TestMethod] - public void Test_3808() - { - } - [TestMethod] - public void Test_3809() - { - } - [TestMethod] - public void Test_3810() - { - } - [TestMethod] - public void Test_3811() - { - } - [TestMethod] - public void Test_3812() - { - } - [TestMethod] - public void Test_3813() - { - } - [TestMethod] - public void Test_3814() - { - } - [TestMethod] - public void Test_3815() - { - } - [TestMethod] - public void Test_3816() - { - } - [TestMethod] - public void Test_3817() - { - } - [TestMethod] - public void Test_3818() - { - } - [TestMethod] - public void Test_3819() - { - } - [TestMethod] - public void Test_3820() - { - } - [TestMethod] - public void Test_3821() - { - } - [TestMethod] - public void Test_3822() - { - } - [TestMethod] - public void Test_3823() - { - } - [TestMethod] - public void Test_3824() - { - } - [TestMethod] - public void Test_3825() - { - } - [TestMethod] - public void Test_3826() - { - } - [TestMethod] - public void Test_3827() - { - } - [TestMethod] - public void Test_3828() - { - } - [TestMethod] - public void Test_3829() - { - } - [TestMethod] - public void Test_3830() - { - } - [TestMethod] - public void Test_3831() - { - } - [TestMethod] - public void Test_3832() - { - } - [TestMethod] - public void Test_3833() - { - } - [TestMethod] - public void Test_3834() - { - } - [TestMethod] - public void Test_3835() - { - } - [TestMethod] - public void Test_3836() - { - } - [TestMethod] - public void Test_3837() - { - } - [TestMethod] - public void Test_3838() - { - } - [TestMethod] - public void Test_3839() - { - } - [TestMethod] - public void Test_3840() - { - } - [TestMethod] - public void Test_3841() - { - } - [TestMethod] - public void Test_3842() - { - } - [TestMethod] - public void Test_3843() - { - } - [TestMethod] - public void Test_3844() - { - } - [TestMethod] - public void Test_3845() - { - } - [TestMethod] - public void Test_3846() - { - } - [TestMethod] - public void Test_3847() - { - } - [TestMethod] - public void Test_3848() - { - } - [TestMethod] - public void Test_3849() - { - } - [TestMethod] - public void Test_3850() - { - } - [TestMethod] - public void Test_3851() - { - } - [TestMethod] - public void Test_3852() - { - } - [TestMethod] - public void Test_3853() - { - } - [TestMethod] - public void Test_3854() - { - } - [TestMethod] - public void Test_3855() - { - } - [TestMethod] - public void Test_3856() - { - } - [TestMethod] - public void Test_3857() - { - } - [TestMethod] - public void Test_3858() - { - } - [TestMethod] - public void Test_3859() - { - } - [TestMethod] - public void Test_3860() - { - } - [TestMethod] - public void Test_3861() - { - } - [TestMethod] - public void Test_3862() - { - } - [TestMethod] - public void Test_3863() - { - } - [TestMethod] - public void Test_3864() - { - } - [TestMethod] - public void Test_3865() - { - } - [TestMethod] - public void Test_3866() - { - } - [TestMethod] - public void Test_3867() - { - } - [TestMethod] - public void Test_3868() - { - } - [TestMethod] - public void Test_3869() - { - } - [TestMethod] - public void Test_3870() - { - } - [TestMethod] - public void Test_3871() - { - } - [TestMethod] - public void Test_3872() - { - } - [TestMethod] - public void Test_3873() - { - } - [TestMethod] - public void Test_3874() - { - } - [TestMethod] - public void Test_3875() - { - } - [TestMethod] - public void Test_3876() - { - } - [TestMethod] - public void Test_3877() - { - } - [TestMethod] - public void Test_3878() - { - } - [TestMethod] - public void Test_3879() - { - } - [TestMethod] - public void Test_3880() - { - } - [TestMethod] - public void Test_3881() - { - } - [TestMethod] - public void Test_3882() - { - } - [TestMethod] - public void Test_3883() - { - } - [TestMethod] - public void Test_3884() - { - } - [TestMethod] - public void Test_3885() - { - } - [TestMethod] - public void Test_3886() - { - } - [TestMethod] - public void Test_3887() - { - } - [TestMethod] - public void Test_3888() - { - } - [TestMethod] - public void Test_3889() - { - } - [TestMethod] - public void Test_3890() - { - } - [TestMethod] - public void Test_3891() - { - } - [TestMethod] - public void Test_3892() - { - } - [TestMethod] - public void Test_3893() - { - } - [TestMethod] - public void Test_3894() - { - } - [TestMethod] - public void Test_3895() - { - } - [TestMethod] - public void Test_3896() - { - } - [TestMethod] - public void Test_3897() - { - } - [TestMethod] - public void Test_3898() - { - } - [TestMethod] - public void Test_3899() - { - } - [TestMethod] - public void Test_3900() - { - } - [TestMethod] - public void Test_3901() - { - } - [TestMethod] - public void Test_3902() - { - } - [TestMethod] - public void Test_3903() - { - } - [TestMethod] - public void Test_3904() - { - } - [TestMethod] - public void Test_3905() - { - } - [TestMethod] - public void Test_3906() - { - } - [TestMethod] - public void Test_3907() - { - } - [TestMethod] - public void Test_3908() - { - } - [TestMethod] - public void Test_3909() - { - } - [TestMethod] - public void Test_3910() - { - } - [TestMethod] - public void Test_3911() - { - } - [TestMethod] - public void Test_3912() - { - } - [TestMethod] - public void Test_3913() - { - } - [TestMethod] - public void Test_3914() - { - } - [TestMethod] - public void Test_3915() - { - } - [TestMethod] - public void Test_3916() - { - } - [TestMethod] - public void Test_3917() - { - } - [TestMethod] - public void Test_3918() - { - } - [TestMethod] - public void Test_3919() - { - } - [TestMethod] - public void Test_3920() - { - } - [TestMethod] - public void Test_3921() - { - } - [TestMethod] - public void Test_3922() - { - } - [TestMethod] - public void Test_3923() - { - } - [TestMethod] - public void Test_3924() - { - } - [TestMethod] - public void Test_3925() - { - } - [TestMethod] - public void Test_3926() - { - } - [TestMethod] - public void Test_3927() - { - } - [TestMethod] - public void Test_3928() - { - } - [TestMethod] - public void Test_3929() - { - } - [TestMethod] - public void Test_3930() - { - } - [TestMethod] - public void Test_3931() - { - } - [TestMethod] - public void Test_3932() - { - } - [TestMethod] - public void Test_3933() - { - } - [TestMethod] - public void Test_3934() - { - } - [TestMethod] - public void Test_3935() - { - } - [TestMethod] - public void Test_3936() - { - } - [TestMethod] - public void Test_3937() - { - } - [TestMethod] - public void Test_3938() - { - } - [TestMethod] - public void Test_3939() - { - } - [TestMethod] - public void Test_3940() - { - } - [TestMethod] - public void Test_3941() - { - } - [TestMethod] - public void Test_3942() - { - } - [TestMethod] - public void Test_3943() - { - } - [TestMethod] - public void Test_3944() - { - } - [TestMethod] - public void Test_3945() - { - } - [TestMethod] - public void Test_3946() - { - } - [TestMethod] - public void Test_3947() - { - } - [TestMethod] - public void Test_3948() - { - } - [TestMethod] - public void Test_3949() - { - } - [TestMethod] - public void Test_3950() - { - } - [TestMethod] - public void Test_3951() - { - } - [TestMethod] - public void Test_3952() - { - } - [TestMethod] - public void Test_3953() - { - } - [TestMethod] - public void Test_3954() - { - } - [TestMethod] - public void Test_3955() - { - } - [TestMethod] - public void Test_3956() - { - } - [TestMethod] - public void Test_3957() - { - } - [TestMethod] - public void Test_3958() - { - } - [TestMethod] - public void Test_3959() - { - } - [TestMethod] - public void Test_3960() - { - } - [TestMethod] - public void Test_3961() - { - } - [TestMethod] - public void Test_3962() - { - } - [TestMethod] - public void Test_3963() - { - } - [TestMethod] - public void Test_3964() - { - } - [TestMethod] - public void Test_3965() - { - } - [TestMethod] - public void Test_3966() - { - } - [TestMethod] - public void Test_3967() - { - } - [TestMethod] - public void Test_3968() - { - } - [TestMethod] - public void Test_3969() - { - } - [TestMethod] - public void Test_3970() - { - } - [TestMethod] - public void Test_3971() - { - } - [TestMethod] - public void Test_3972() - { - } - [TestMethod] - public void Test_3973() - { - } - [TestMethod] - public void Test_3974() - { - } - [TestMethod] - public void Test_3975() - { - } - [TestMethod] - public void Test_3976() - { - } - [TestMethod] - public void Test_3977() - { - } - [TestMethod] - public void Test_3978() - { - } - [TestMethod] - public void Test_3979() - { - } - [TestMethod] - public void Test_3980() - { - } - [TestMethod] - public void Test_3981() - { - } - [TestMethod] - public void Test_3982() - { - } - [TestMethod] - public void Test_3983() - { - } - [TestMethod] - public void Test_3984() - { - } - [TestMethod] - public void Test_3985() - { - } - [TestMethod] - public void Test_3986() - { - } - [TestMethod] - public void Test_3987() - { - } - [TestMethod] - public void Test_3988() - { - } - [TestMethod] - public void Test_3989() - { - } - [TestMethod] - public void Test_3990() - { - } - [TestMethod] - public void Test_3991() - { - } - [TestMethod] - public void Test_3992() - { - } - [TestMethod] - public void Test_3993() - { - } - [TestMethod] - public void Test_3994() - { - } - [TestMethod] - public void Test_3995() - { - } - [TestMethod] - public void Test_3996() - { - } - [TestMethod] - public void Test_3997() - { - } - [TestMethod] - public void Test_3998() - { - } - [TestMethod] - public void Test_3999() - { - } - [TestMethod] - public void Test_4000() - { - } - [TestMethod] - public void Test_4001() - { - } - [TestMethod] - public void Test_4002() - { - } - [TestMethod] - public void Test_4003() - { - } - [TestMethod] - public void Test_4004() - { - } - [TestMethod] - public void Test_4005() - { - } - [TestMethod] - public void Test_4006() - { - } - [TestMethod] - public void Test_4007() - { - } - [TestMethod] - public void Test_4008() - { - } - [TestMethod] - public void Test_4009() - { - } - [TestMethod] - public void Test_4010() - { - } - [TestMethod] - public void Test_4011() - { - } - [TestMethod] - public void Test_4012() - { - } - [TestMethod] - public void Test_4013() - { - } - [TestMethod] - public void Test_4014() - { - } - [TestMethod] - public void Test_4015() - { - } - [TestMethod] - public void Test_4016() - { - } - [TestMethod] - public void Test_4017() - { - } - [TestMethod] - public void Test_4018() - { - } - [TestMethod] - public void Test_4019() - { - } - [TestMethod] - public void Test_4020() - { - } - [TestMethod] - public void Test_4021() - { - } - [TestMethod] - public void Test_4022() - { - } - [TestMethod] - public void Test_4023() - { - } - [TestMethod] - public void Test_4024() - { - } - [TestMethod] - public void Test_4025() - { - } - [TestMethod] - public void Test_4026() - { - } - [TestMethod] - public void Test_4027() - { - } - [TestMethod] - public void Test_4028() - { - } - [TestMethod] - public void Test_4029() - { - } - [TestMethod] - public void Test_4030() - { - } - [TestMethod] - public void Test_4031() - { - } - [TestMethod] - public void Test_4032() - { - } - [TestMethod] - public void Test_4033() - { - } - [TestMethod] - public void Test_4034() - { - } - [TestMethod] - public void Test_4035() - { - } - [TestMethod] - public void Test_4036() - { - } - [TestMethod] - public void Test_4037() - { - } - [TestMethod] - public void Test_4038() - { - } - [TestMethod] - public void Test_4039() - { - } - [TestMethod] - public void Test_4040() - { - } - [TestMethod] - public void Test_4041() - { - } - [TestMethod] - public void Test_4042() - { - } - [TestMethod] - public void Test_4043() - { - } - [TestMethod] - public void Test_4044() - { - } - [TestMethod] - public void Test_4045() - { - } - [TestMethod] - public void Test_4046() - { - } - [TestMethod] - public void Test_4047() - { - } - [TestMethod] - public void Test_4048() - { - } - [TestMethod] - public void Test_4049() - { - } - [TestMethod] - public void Test_4050() - { - } - [TestMethod] - public void Test_4051() - { - } - [TestMethod] - public void Test_4052() - { - } - [TestMethod] - public void Test_4053() - { - } - [TestMethod] - public void Test_4054() - { - } - [TestMethod] - public void Test_4055() - { - } - [TestMethod] - public void Test_4056() - { - } - [TestMethod] - public void Test_4057() - { - } - [TestMethod] - public void Test_4058() - { - } - [TestMethod] - public void Test_4059() - { - } - [TestMethod] - public void Test_4060() - { - } - [TestMethod] - public void Test_4061() - { - } - [TestMethod] - public void Test_4062() - { - } - [TestMethod] - public void Test_4063() - { - } - [TestMethod] - public void Test_4064() - { - } - [TestMethod] - public void Test_4065() - { - } - [TestMethod] - public void Test_4066() - { - } - [TestMethod] - public void Test_4067() - { - } - [TestMethod] - public void Test_4068() - { - } - [TestMethod] - public void Test_4069() - { - } - [TestMethod] - public void Test_4070() - { - } - [TestMethod] - public void Test_4071() - { - } - [TestMethod] - public void Test_4072() - { - } - [TestMethod] - public void Test_4073() - { - } - [TestMethod] - public void Test_4074() - { - } - [TestMethod] - public void Test_4075() - { - } - [TestMethod] - public void Test_4076() - { - } - [TestMethod] - public void Test_4077() - { - } - [TestMethod] - public void Test_4078() - { - } - [TestMethod] - public void Test_4079() - { - } - [TestMethod] - public void Test_4080() - { - } - [TestMethod] - public void Test_4081() - { - } - [TestMethod] - public void Test_4082() - { - } - [TestMethod] - public void Test_4083() - { - } - [TestMethod] - public void Test_4084() - { - } - [TestMethod] - public void Test_4085() - { - } - [TestMethod] - public void Test_4086() - { - } - [TestMethod] - public void Test_4087() - { - } - [TestMethod] - public void Test_4088() - { - } - [TestMethod] - public void Test_4089() - { - } - [TestMethod] - public void Test_4090() - { - } - [TestMethod] - public void Test_4091() - { - } - [TestMethod] - public void Test_4092() - { - } - [TestMethod] - public void Test_4093() - { - } - [TestMethod] - public void Test_4094() - { - } - [TestMethod] - public void Test_4095() - { - } - [TestMethod] - public void Test_4096() - { - } - [TestMethod] - public void Test_4097() - { - } - [TestMethod] - public void Test_4098() - { - } - [TestMethod] - public void Test_4099() - { - } - [TestMethod] - public void Test_4100() - { - } - [TestMethod] - public void Test_4101() - { - } - [TestMethod] - public void Test_4102() - { - } - [TestMethod] - public void Test_4103() - { - } - [TestMethod] - public void Test_4104() - { - } - [TestMethod] - public void Test_4105() - { - } - [TestMethod] - public void Test_4106() - { - } - [TestMethod] - public void Test_4107() - { - } - [TestMethod] - public void Test_4108() - { - } - [TestMethod] - public void Test_4109() - { - } - [TestMethod] - public void Test_4110() - { - } - [TestMethod] - public void Test_4111() - { - } - [TestMethod] - public void Test_4112() - { - } - [TestMethod] - public void Test_4113() - { - } - [TestMethod] - public void Test_4114() - { - } - [TestMethod] - public void Test_4115() - { - } - [TestMethod] - public void Test_4116() - { - } - [TestMethod] - public void Test_4117() - { - } - [TestMethod] - public void Test_4118() - { - } - [TestMethod] - public void Test_4119() - { - } - [TestMethod] - public void Test_4120() - { - } - [TestMethod] - public void Test_4121() - { - } - [TestMethod] - public void Test_4122() - { - } - [TestMethod] - public void Test_4123() - { - } - [TestMethod] - public void Test_4124() - { - } - [TestMethod] - public void Test_4125() - { - } - [TestMethod] - public void Test_4126() - { - } - [TestMethod] - public void Test_4127() - { - } - [TestMethod] - public void Test_4128() - { - } - [TestMethod] - public void Test_4129() - { - } - [TestMethod] - public void Test_4130() - { - } - [TestMethod] - public void Test_4131() - { - } - [TestMethod] - public void Test_4132() - { - } - [TestMethod] - public void Test_4133() - { - } - [TestMethod] - public void Test_4134() - { - } - [TestMethod] - public void Test_4135() - { - } - [TestMethod] - public void Test_4136() - { - } - [TestMethod] - public void Test_4137() - { - } - [TestMethod] - public void Test_4138() - { - } - [TestMethod] - public void Test_4139() - { - } - [TestMethod] - public void Test_4140() - { - } - [TestMethod] - public void Test_4141() - { - } - [TestMethod] - public void Test_4142() - { - } - [TestMethod] - public void Test_4143() - { - } - [TestMethod] - public void Test_4144() - { - } - [TestMethod] - public void Test_4145() - { - } - [TestMethod] - public void Test_4146() - { - } - [TestMethod] - public void Test_4147() - { - } - [TestMethod] - public void Test_4148() - { - } - [TestMethod] - public void Test_4149() - { - } - [TestMethod] - public void Test_4150() - { - } - [TestMethod] - public void Test_4151() - { - } - [TestMethod] - public void Test_4152() - { - } - [TestMethod] - public void Test_4153() - { - } - [TestMethod] - public void Test_4154() - { - } - [TestMethod] - public void Test_4155() - { - } - [TestMethod] - public void Test_4156() - { - } - [TestMethod] - public void Test_4157() - { - } - [TestMethod] - public void Test_4158() - { - } - [TestMethod] - public void Test_4159() - { - } - [TestMethod] - public void Test_4160() - { - } - [TestMethod] - public void Test_4161() - { - } - [TestMethod] - public void Test_4162() - { - } - [TestMethod] - public void Test_4163() - { - } - [TestMethod] - public void Test_4164() - { - } - [TestMethod] - public void Test_4165() - { - } - [TestMethod] - public void Test_4166() - { - } - [TestMethod] - public void Test_4167() - { - } - [TestMethod] - public void Test_4168() - { - } - [TestMethod] - public void Test_4169() - { - } - [TestMethod] - public void Test_4170() - { - } - [TestMethod] - public void Test_4171() - { - } - [TestMethod] - public void Test_4172() - { - } - [TestMethod] - public void Test_4173() - { - } - [TestMethod] - public void Test_4174() - { - } - [TestMethod] - public void Test_4175() - { - } - [TestMethod] - public void Test_4176() - { - } - [TestMethod] - public void Test_4177() - { - } - [TestMethod] - public void Test_4178() - { - } - [TestMethod] - public void Test_4179() - { - } - [TestMethod] - public void Test_4180() - { - } - [TestMethod] - public void Test_4181() - { - } - [TestMethod] - public void Test_4182() - { - } - [TestMethod] - public void Test_4183() - { - } - [TestMethod] - public void Test_4184() - { - } - [TestMethod] - public void Test_4185() - { - } - [TestMethod] - public void Test_4186() - { - } - [TestMethod] - public void Test_4187() - { - } - [TestMethod] - public void Test_4188() - { - } - [TestMethod] - public void Test_4189() - { - } - [TestMethod] - public void Test_4190() - { - } - [TestMethod] - public void Test_4191() - { - } - [TestMethod] - public void Test_4192() - { - } - [TestMethod] - public void Test_4193() - { - } - [TestMethod] - public void Test_4194() - { - } - [TestMethod] - public void Test_4195() - { - } - [TestMethod] - public void Test_4196() - { - } - [TestMethod] - public void Test_4197() - { - } - [TestMethod] - public void Test_4198() - { - } - [TestMethod] - public void Test_4199() - { - } - [TestMethod] - public void Test_4200() - { - } - [TestMethod] - public void Test_4201() - { - } - [TestMethod] - public void Test_4202() - { - } - [TestMethod] - public void Test_4203() - { - } - [TestMethod] - public void Test_4204() - { - } - [TestMethod] - public void Test_4205() - { - } - [TestMethod] - public void Test_4206() - { - } - [TestMethod] - public void Test_4207() - { - } - [TestMethod] - public void Test_4208() - { - } - [TestMethod] - public void Test_4209() - { - } - [TestMethod] - public void Test_4210() - { - } - [TestMethod] - public void Test_4211() - { - } - [TestMethod] - public void Test_4212() - { - } - [TestMethod] - public void Test_4213() - { - } - [TestMethod] - public void Test_4214() - { - } - [TestMethod] - public void Test_4215() - { - } - [TestMethod] - public void Test_4216() - { - } - [TestMethod] - public void Test_4217() - { - } - [TestMethod] - public void Test_4218() - { - } - [TestMethod] - public void Test_4219() - { - } - [TestMethod] - public void Test_4220() - { - } - [TestMethod] - public void Test_4221() - { - } - [TestMethod] - public void Test_4222() - { - } - [TestMethod] - public void Test_4223() - { - } - [TestMethod] - public void Test_4224() - { - } - [TestMethod] - public void Test_4225() - { - } - [TestMethod] - public void Test_4226() - { - } - [TestMethod] - public void Test_4227() - { - } - [TestMethod] - public void Test_4228() - { - } - [TestMethod] - public void Test_4229() - { - } - [TestMethod] - public void Test_4230() - { - } - [TestMethod] - public void Test_4231() - { - } - [TestMethod] - public void Test_4232() - { - } - [TestMethod] - public void Test_4233() - { - } - [TestMethod] - public void Test_4234() - { - } - [TestMethod] - public void Test_4235() - { - } - [TestMethod] - public void Test_4236() - { - } - [TestMethod] - public void Test_4237() - { - } - [TestMethod] - public void Test_4238() - { - } - [TestMethod] - public void Test_4239() - { - } - [TestMethod] - public void Test_4240() - { - } - [TestMethod] - public void Test_4241() - { - } - [TestMethod] - public void Test_4242() - { - } - [TestMethod] - public void Test_4243() - { - } - [TestMethod] - public void Test_4244() - { - } - [TestMethod] - public void Test_4245() - { - } - [TestMethod] - public void Test_4246() - { - } - [TestMethod] - public void Test_4247() - { - } - [TestMethod] - public void Test_4248() - { - } - [TestMethod] - public void Test_4249() - { - } - [TestMethod] - public void Test_4250() - { - } - [TestMethod] - public void Test_4251() - { - } - [TestMethod] - public void Test_4252() - { - } - [TestMethod] - public void Test_4253() - { - } - [TestMethod] - public void Test_4254() - { - } - [TestMethod] - public void Test_4255() - { - } - [TestMethod] - public void Test_4256() - { - } - [TestMethod] - public void Test_4257() - { - } - [TestMethod] - public void Test_4258() - { - } - [TestMethod] - public void Test_4259() - { - } - [TestMethod] - public void Test_4260() - { - } - [TestMethod] - public void Test_4261() - { - } - [TestMethod] - public void Test_4262() - { - } - [TestMethod] - public void Test_4263() - { - } - [TestMethod] - public void Test_4264() - { - } - [TestMethod] - public void Test_4265() - { - } - [TestMethod] - public void Test_4266() - { - } - [TestMethod] - public void Test_4267() - { - } - [TestMethod] - public void Test_4268() - { - } - [TestMethod] - public void Test_4269() - { - } - [TestMethod] - public void Test_4270() - { - } - [TestMethod] - public void Test_4271() - { - } - [TestMethod] - public void Test_4272() - { - } - [TestMethod] - public void Test_4273() - { - } - [TestMethod] - public void Test_4274() - { - } - [TestMethod] - public void Test_4275() - { - } - [TestMethod] - public void Test_4276() - { - } - [TestMethod] - public void Test_4277() - { - } - [TestMethod] - public void Test_4278() - { - } - [TestMethod] - public void Test_4279() - { - } - [TestMethod] - public void Test_4280() - { - } - [TestMethod] - public void Test_4281() - { - } - [TestMethod] - public void Test_4282() - { - } - [TestMethod] - public void Test_4283() - { - } - [TestMethod] - public void Test_4284() - { - } - [TestMethod] - public void Test_4285() - { - } - [TestMethod] - public void Test_4286() - { - } - [TestMethod] - public void Test_4287() - { - } - [TestMethod] - public void Test_4288() - { - } - [TestMethod] - public void Test_4289() - { - } - [TestMethod] - public void Test_4290() - { - } - [TestMethod] - public void Test_4291() - { - } - [TestMethod] - public void Test_4292() - { - } - [TestMethod] - public void Test_4293() - { - } - [TestMethod] - public void Test_4294() - { - } - [TestMethod] - public void Test_4295() - { - } - [TestMethod] - public void Test_4296() - { - } - [TestMethod] - public void Test_4297() - { - } - [TestMethod] - public void Test_4298() - { - } - [TestMethod] - public void Test_4299() - { - } - [TestMethod] - public void Test_4300() - { - } - [TestMethod] - public void Test_4301() - { - } - [TestMethod] - public void Test_4302() - { - } - [TestMethod] - public void Test_4303() - { - } - [TestMethod] - public void Test_4304() - { - } - [TestMethod] - public void Test_4305() - { - } - [TestMethod] - public void Test_4306() - { - } - [TestMethod] - public void Test_4307() - { - } - [TestMethod] - public void Test_4308() - { - } - [TestMethod] - public void Test_4309() - { - } - [TestMethod] - public void Test_4310() - { - } - [TestMethod] - public void Test_4311() - { - } - [TestMethod] - public void Test_4312() - { - } - [TestMethod] - public void Test_4313() - { - } - [TestMethod] - public void Test_4314() - { - } - [TestMethod] - public void Test_4315() - { - } - [TestMethod] - public void Test_4316() - { - } - [TestMethod] - public void Test_4317() - { - } - [TestMethod] - public void Test_4318() - { - } - [TestMethod] - public void Test_4319() - { - } - [TestMethod] - public void Test_4320() - { - } - [TestMethod] - public void Test_4321() - { - } - [TestMethod] - public void Test_4322() - { - } - [TestMethod] - public void Test_4323() - { - } - [TestMethod] - public void Test_4324() - { - } - [TestMethod] - public void Test_4325() - { - } - [TestMethod] - public void Test_4326() - { - } - [TestMethod] - public void Test_4327() - { - } - [TestMethod] - public void Test_4328() - { - } - [TestMethod] - public void Test_4329() - { - } - [TestMethod] - public void Test_4330() - { - } - [TestMethod] - public void Test_4331() - { - } - [TestMethod] - public void Test_4332() - { - } - [TestMethod] - public void Test_4333() - { - } - [TestMethod] - public void Test_4334() - { - } - [TestMethod] - public void Test_4335() - { - } - [TestMethod] - public void Test_4336() - { - } - [TestMethod] - public void Test_4337() - { - } - [TestMethod] - public void Test_4338() - { - } - [TestMethod] - public void Test_4339() - { - } - [TestMethod] - public void Test_4340() - { - } - [TestMethod] - public void Test_4341() - { - } - [TestMethod] - public void Test_4342() - { - } - [TestMethod] - public void Test_4343() - { - } - [TestMethod] - public void Test_4344() - { - } - [TestMethod] - public void Test_4345() - { - } - [TestMethod] - public void Test_4346() - { - } - [TestMethod] - public void Test_4347() - { - } - [TestMethod] - public void Test_4348() - { - } - [TestMethod] - public void Test_4349() - { - } - [TestMethod] - public void Test_4350() - { - } - [TestMethod] - public void Test_4351() - { - } - [TestMethod] - public void Test_4352() - { - } - [TestMethod] - public void Test_4353() - { - } - [TestMethod] - public void Test_4354() - { - } - [TestMethod] - public void Test_4355() - { - } - [TestMethod] - public void Test_4356() - { - } - [TestMethod] - public void Test_4357() - { - } - [TestMethod] - public void Test_4358() - { - } - [TestMethod] - public void Test_4359() - { - } - [TestMethod] - public void Test_4360() - { - } - [TestMethod] - public void Test_4361() - { - } - [TestMethod] - public void Test_4362() - { - } - [TestMethod] - public void Test_4363() - { - } - [TestMethod] - public void Test_4364() - { - } - [TestMethod] - public void Test_4365() - { - } - [TestMethod] - public void Test_4366() - { - } - [TestMethod] - public void Test_4367() - { - } - [TestMethod] - public void Test_4368() - { - } - [TestMethod] - public void Test_4369() - { - } - [TestMethod] - public void Test_4370() - { - } - [TestMethod] - public void Test_4371() - { - } - [TestMethod] - public void Test_4372() - { - } - [TestMethod] - public void Test_4373() - { - } - [TestMethod] - public void Test_4374() - { - } - [TestMethod] - public void Test_4375() - { - } - [TestMethod] - public void Test_4376() - { - } - [TestMethod] - public void Test_4377() - { - } - [TestMethod] - public void Test_4378() - { - } - [TestMethod] - public void Test_4379() - { - } - [TestMethod] - public void Test_4380() - { - } - [TestMethod] - public void Test_4381() - { - } - [TestMethod] - public void Test_4382() - { - } - [TestMethod] - public void Test_4383() - { - } - [TestMethod] - public void Test_4384() - { - } - [TestMethod] - public void Test_4385() - { - } - [TestMethod] - public void Test_4386() - { - } - [TestMethod] - public void Test_4387() - { - } - [TestMethod] - public void Test_4388() - { - } - [TestMethod] - public void Test_4389() - { - } - [TestMethod] - public void Test_4390() - { - } - [TestMethod] - public void Test_4391() - { - } - [TestMethod] - public void Test_4392() - { - } - [TestMethod] - public void Test_4393() - { - } - [TestMethod] - public void Test_4394() - { - } - [TestMethod] - public void Test_4395() - { - } - [TestMethod] - public void Test_4396() - { - } - [TestMethod] - public void Test_4397() - { - } - [TestMethod] - public void Test_4398() - { - } - [TestMethod] - public void Test_4399() - { - } - [TestMethod] - public void Test_4400() - { - } - [TestMethod] - public void Test_4401() - { - } - [TestMethod] - public void Test_4402() - { - } - [TestMethod] - public void Test_4403() - { - } - [TestMethod] - public void Test_4404() - { - } - [TestMethod] - public void Test_4405() - { - } - [TestMethod] - public void Test_4406() - { - } - [TestMethod] - public void Test_4407() - { - } - [TestMethod] - public void Test_4408() - { - } - [TestMethod] - public void Test_4409() - { - } - [TestMethod] - public void Test_4410() - { - } - [TestMethod] - public void Test_4411() - { - } - [TestMethod] - public void Test_4412() - { - } - [TestMethod] - public void Test_4413() - { - } - [TestMethod] - public void Test_4414() - { - } - [TestMethod] - public void Test_4415() - { - } - [TestMethod] - public void Test_4416() - { - } - [TestMethod] - public void Test_4417() - { - } - [TestMethod] - public void Test_4418() - { - } - [TestMethod] - public void Test_4419() - { - } - [TestMethod] - public void Test_4420() - { - } - [TestMethod] - public void Test_4421() - { - } - [TestMethod] - public void Test_4422() - { - } - [TestMethod] - public void Test_4423() - { - } - [TestMethod] - public void Test_4424() - { - } - [TestMethod] - public void Test_4425() - { - } - [TestMethod] - public void Test_4426() - { - } - [TestMethod] - public void Test_4427() - { - } - [TestMethod] - public void Test_4428() - { - } - [TestMethod] - public void Test_4429() - { - } - [TestMethod] - public void Test_4430() - { - } - [TestMethod] - public void Test_4431() - { - } - [TestMethod] - public void Test_4432() - { - } - [TestMethod] - public void Test_4433() - { - } - [TestMethod] - public void Test_4434() - { - } - [TestMethod] - public void Test_4435() - { - } - [TestMethod] - public void Test_4436() - { - } - [TestMethod] - public void Test_4437() - { - } - [TestMethod] - public void Test_4438() - { - } - [TestMethod] - public void Test_4439() - { - } - [TestMethod] - public void Test_4440() - { - } - [TestMethod] - public void Test_4441() - { - } - [TestMethod] - public void Test_4442() - { - } - [TestMethod] - public void Test_4443() - { - } - [TestMethod] - public void Test_4444() - { - } - [TestMethod] - public void Test_4445() - { - } - [TestMethod] - public void Test_4446() - { - } - [TestMethod] - public void Test_4447() - { - } - [TestMethod] - public void Test_4448() - { - } - [TestMethod] - public void Test_4449() - { - } - [TestMethod] - public void Test_4450() - { - } - [TestMethod] - public void Test_4451() - { - } - [TestMethod] - public void Test_4452() - { - } - [TestMethod] - public void Test_4453() - { - } - [TestMethod] - public void Test_4454() - { - } - [TestMethod] - public void Test_4455() - { - } - [TestMethod] - public void Test_4456() - { - } - [TestMethod] - public void Test_4457() - { - } - [TestMethod] - public void Test_4458() - { - } - [TestMethod] - public void Test_4459() - { - } - [TestMethod] - public void Test_4460() - { - } - [TestMethod] - public void Test_4461() - { - } - [TestMethod] - public void Test_4462() - { - } - [TestMethod] - public void Test_4463() - { - } - [TestMethod] - public void Test_4464() - { - } - [TestMethod] - public void Test_4465() - { - } - [TestMethod] - public void Test_4466() - { - } - [TestMethod] - public void Test_4467() - { - } - [TestMethod] - public void Test_4468() - { - } - [TestMethod] - public void Test_4469() - { - } - [TestMethod] - public void Test_4470() - { - } - [TestMethod] - public void Test_4471() - { - } - [TestMethod] - public void Test_4472() - { - } - [TestMethod] - public void Test_4473() - { - } - [TestMethod] - public void Test_4474() - { - } - [TestMethod] - public void Test_4475() - { - } - [TestMethod] - public void Test_4476() - { - } - [TestMethod] - public void Test_4477() - { - } - [TestMethod] - public void Test_4478() - { - } - [TestMethod] - public void Test_4479() - { - } - [TestMethod] - public void Test_4480() - { - } - [TestMethod] - public void Test_4481() - { - } - [TestMethod] - public void Test_4482() - { - } - [TestMethod] - public void Test_4483() - { - } - [TestMethod] - public void Test_4484() - { - } - [TestMethod] - public void Test_4485() - { - } - [TestMethod] - public void Test_4486() - { - } - [TestMethod] - public void Test_4487() - { - } - [TestMethod] - public void Test_4488() - { - } - [TestMethod] - public void Test_4489() - { - } - [TestMethod] - public void Test_4490() - { - } - [TestMethod] - public void Test_4491() - { - } - [TestMethod] - public void Test_4492() - { - } - [TestMethod] - public void Test_4493() - { - } - [TestMethod] - public void Test_4494() - { - } - [TestMethod] - public void Test_4495() - { - } - [TestMethod] - public void Test_4496() - { - } - [TestMethod] - public void Test_4497() - { - } - [TestMethod] - public void Test_4498() - { - } - [TestMethod] - public void Test_4499() - { - } - [TestMethod] - public void Test_4500() - { - } - [TestMethod] - public void Test_4501() - { - } - [TestMethod] - public void Test_4502() - { - } - [TestMethod] - public void Test_4503() - { - } - [TestMethod] - public void Test_4504() - { - } - [TestMethod] - public void Test_4505() - { - } - [TestMethod] - public void Test_4506() - { - } - [TestMethod] - public void Test_4507() - { - } - [TestMethod] - public void Test_4508() - { - } - [TestMethod] - public void Test_4509() - { - } - [TestMethod] - public void Test_4510() - { - } - [TestMethod] - public void Test_4511() - { - } - [TestMethod] - public void Test_4512() - { - } - [TestMethod] - public void Test_4513() - { - } - [TestMethod] - public void Test_4514() - { - } - [TestMethod] - public void Test_4515() - { - } - [TestMethod] - public void Test_4516() - { - } - [TestMethod] - public void Test_4517() - { - } - [TestMethod] - public void Test_4518() - { - } - [TestMethod] - public void Test_4519() - { - } - [TestMethod] - public void Test_4520() - { - } - [TestMethod] - public void Test_4521() - { - } - [TestMethod] - public void Test_4522() - { - } - [TestMethod] - public void Test_4523() - { - } - [TestMethod] - public void Test_4524() - { - } - [TestMethod] - public void Test_4525() - { - } - [TestMethod] - public void Test_4526() - { - } - [TestMethod] - public void Test_4527() - { - } - [TestMethod] - public void Test_4528() - { - } - [TestMethod] - public void Test_4529() - { - } - [TestMethod] - public void Test_4530() - { - } - [TestMethod] - public void Test_4531() - { - } - [TestMethod] - public void Test_4532() - { - } - [TestMethod] - public void Test_4533() - { - } - [TestMethod] - public void Test_4534() - { - } - [TestMethod] - public void Test_4535() - { - } - [TestMethod] - public void Test_4536() - { - } - [TestMethod] - public void Test_4537() - { - } - [TestMethod] - public void Test_4538() - { - } - [TestMethod] - public void Test_4539() - { - } - [TestMethod] - public void Test_4540() - { - } - [TestMethod] - public void Test_4541() - { - } - [TestMethod] - public void Test_4542() - { - } - [TestMethod] - public void Test_4543() - { - } - [TestMethod] - public void Test_4544() - { - } - [TestMethod] - public void Test_4545() - { - } - [TestMethod] - public void Test_4546() - { - } - [TestMethod] - public void Test_4547() - { - } - [TestMethod] - public void Test_4548() - { - } - [TestMethod] - public void Test_4549() - { - } - [TestMethod] - public void Test_4550() - { - } - [TestMethod] - public void Test_4551() - { - } - [TestMethod] - public void Test_4552() - { - } - [TestMethod] - public void Test_4553() - { - } - [TestMethod] - public void Test_4554() - { - } - [TestMethod] - public void Test_4555() - { - } - [TestMethod] - public void Test_4556() - { - } - [TestMethod] - public void Test_4557() - { - } - [TestMethod] - public void Test_4558() - { - } - [TestMethod] - public void Test_4559() - { - } - [TestMethod] - public void Test_4560() - { - } - [TestMethod] - public void Test_4561() - { - } - [TestMethod] - public void Test_4562() - { - } - [TestMethod] - public void Test_4563() - { - } - [TestMethod] - public void Test_4564() - { - } - [TestMethod] - public void Test_4565() - { - } - [TestMethod] - public void Test_4566() - { - } - [TestMethod] - public void Test_4567() - { - } - [TestMethod] - public void Test_4568() - { - } - [TestMethod] - public void Test_4569() - { - } - [TestMethod] - public void Test_4570() - { - } - [TestMethod] - public void Test_4571() - { - } - [TestMethod] - public void Test_4572() - { - } - [TestMethod] - public void Test_4573() - { - } - [TestMethod] - public void Test_4574() - { - } - [TestMethod] - public void Test_4575() - { - } - [TestMethod] - public void Test_4576() - { - } - [TestMethod] - public void Test_4577() - { - } - [TestMethod] - public void Test_4578() - { - } - [TestMethod] - public void Test_4579() - { - } - [TestMethod] - public void Test_4580() - { - } - [TestMethod] - public void Test_4581() - { - } - [TestMethod] - public void Test_4582() - { - } - [TestMethod] - public void Test_4583() - { - } - [TestMethod] - public void Test_4584() - { - } - [TestMethod] - public void Test_4585() - { - } - [TestMethod] - public void Test_4586() - { - } - [TestMethod] - public void Test_4587() - { - } - [TestMethod] - public void Test_4588() - { - } - [TestMethod] - public void Test_4589() - { - } - [TestMethod] - public void Test_4590() - { - } - [TestMethod] - public void Test_4591() - { - } - [TestMethod] - public void Test_4592() - { - } - [TestMethod] - public void Test_4593() - { - } - [TestMethod] - public void Test_4594() - { - } - [TestMethod] - public void Test_4595() - { - } - [TestMethod] - public void Test_4596() - { - } - [TestMethod] - public void Test_4597() - { - } - [TestMethod] - public void Test_4598() - { - } - [TestMethod] - public void Test_4599() - { - } - [TestMethod] - public void Test_4600() - { - } - [TestMethod] - public void Test_4601() - { - } - [TestMethod] - public void Test_4602() - { - } - [TestMethod] - public void Test_4603() - { - } - [TestMethod] - public void Test_4604() - { - } - [TestMethod] - public void Test_4605() - { - } - [TestMethod] - public void Test_4606() - { - } - [TestMethod] - public void Test_4607() - { - } - [TestMethod] - public void Test_4608() - { - } - [TestMethod] - public void Test_4609() - { - } - [TestMethod] - public void Test_4610() - { - } - [TestMethod] - public void Test_4611() - { - } - [TestMethod] - public void Test_4612() - { - } - [TestMethod] - public void Test_4613() - { - } - [TestMethod] - public void Test_4614() - { - } - [TestMethod] - public void Test_4615() - { - } - [TestMethod] - public void Test_4616() - { - } - [TestMethod] - public void Test_4617() - { - } - [TestMethod] - public void Test_4618() - { - } - [TestMethod] - public void Test_4619() - { - } - [TestMethod] - public void Test_4620() - { - } - [TestMethod] - public void Test_4621() - { - } - [TestMethod] - public void Test_4622() - { - } - [TestMethod] - public void Test_4623() - { - } - [TestMethod] - public void Test_4624() - { - } - [TestMethod] - public void Test_4625() - { - } - [TestMethod] - public void Test_4626() - { - } - [TestMethod] - public void Test_4627() - { - } - [TestMethod] - public void Test_4628() - { - } - [TestMethod] - public void Test_4629() - { - } - [TestMethod] - public void Test_4630() - { - } - [TestMethod] - public void Test_4631() - { - } - [TestMethod] - public void Test_4632() - { - } - [TestMethod] - public void Test_4633() - { - } - [TestMethod] - public void Test_4634() - { - } - [TestMethod] - public void Test_4635() - { - } - [TestMethod] - public void Test_4636() - { - } - [TestMethod] - public void Test_4637() - { - } - [TestMethod] - public void Test_4638() - { - } - [TestMethod] - public void Test_4639() - { - } - [TestMethod] - public void Test_4640() - { - } - [TestMethod] - public void Test_4641() - { - } - [TestMethod] - public void Test_4642() - { - } - [TestMethod] - public void Test_4643() - { - } - [TestMethod] - public void Test_4644() - { - } - [TestMethod] - public void Test_4645() - { - } - [TestMethod] - public void Test_4646() - { - } - [TestMethod] - public void Test_4647() - { - } - [TestMethod] - public void Test_4648() - { - } - [TestMethod] - public void Test_4649() - { - } - [TestMethod] - public void Test_4650() - { - } - [TestMethod] - public void Test_4651() - { - } - [TestMethod] - public void Test_4652() - { - } - [TestMethod] - public void Test_4653() - { - } - [TestMethod] - public void Test_4654() - { - } - [TestMethod] - public void Test_4655() - { - } - [TestMethod] - public void Test_4656() - { - } - [TestMethod] - public void Test_4657() - { - } - [TestMethod] - public void Test_4658() - { - } - [TestMethod] - public void Test_4659() - { - } - [TestMethod] - public void Test_4660() - { - } - [TestMethod] - public void Test_4661() - { - } - [TestMethod] - public void Test_4662() - { - } - [TestMethod] - public void Test_4663() - { - } - [TestMethod] - public void Test_4664() - { - } - [TestMethod] - public void Test_4665() - { - } - [TestMethod] - public void Test_4666() - { - } - [TestMethod] - public void Test_4667() - { - } - [TestMethod] - public void Test_4668() - { - } - [TestMethod] - public void Test_4669() - { - } - [TestMethod] - public void Test_4670() - { - } - [TestMethod] - public void Test_4671() - { - } - [TestMethod] - public void Test_4672() - { - } - [TestMethod] - public void Test_4673() - { - } - [TestMethod] - public void Test_4674() - { - } - [TestMethod] - public void Test_4675() - { - } - [TestMethod] - public void Test_4676() - { - } - [TestMethod] - public void Test_4677() - { - } - [TestMethod] - public void Test_4678() - { - } - [TestMethod] - public void Test_4679() - { - } - [TestMethod] - public void Test_4680() - { - } - [TestMethod] - public void Test_4681() - { - } - [TestMethod] - public void Test_4682() - { - } - [TestMethod] - public void Test_4683() - { - } - [TestMethod] - public void Test_4684() - { - } - [TestMethod] - public void Test_4685() - { - } - [TestMethod] - public void Test_4686() - { - } - [TestMethod] - public void Test_4687() - { - } - [TestMethod] - public void Test_4688() - { - } - [TestMethod] - public void Test_4689() - { - } - [TestMethod] - public void Test_4690() - { - } - [TestMethod] - public void Test_4691() - { - } - [TestMethod] - public void Test_4692() - { - } - [TestMethod] - public void Test_4693() - { - } - [TestMethod] - public void Test_4694() - { - } - [TestMethod] - public void Test_4695() - { - } - [TestMethod] - public void Test_4696() - { - } - [TestMethod] - public void Test_4697() - { - } - [TestMethod] - public void Test_4698() - { - } - [TestMethod] - public void Test_4699() - { - } - [TestMethod] - public void Test_4700() - { - } - [TestMethod] - public void Test_4701() - { - } - [TestMethod] - public void Test_4702() - { - } - [TestMethod] - public void Test_4703() - { - } - [TestMethod] - public void Test_4704() - { - } - [TestMethod] - public void Test_4705() - { - } - [TestMethod] - public void Test_4706() - { - } - [TestMethod] - public void Test_4707() - { - } - [TestMethod] - public void Test_4708() - { - } - [TestMethod] - public void Test_4709() - { - } - [TestMethod] - public void Test_4710() - { - } - [TestMethod] - public void Test_4711() - { - } - [TestMethod] - public void Test_4712() - { - } - [TestMethod] - public void Test_4713() - { - } - [TestMethod] - public void Test_4714() - { - } - [TestMethod] - public void Test_4715() - { - } - [TestMethod] - public void Test_4716() - { - } - [TestMethod] - public void Test_4717() - { - } - [TestMethod] - public void Test_4718() - { - } - [TestMethod] - public void Test_4719() - { - } - [TestMethod] - public void Test_4720() - { - } - [TestMethod] - public void Test_4721() - { - } - [TestMethod] - public void Test_4722() - { - } - [TestMethod] - public void Test_4723() - { - } - [TestMethod] - public void Test_4724() - { - } - [TestMethod] - public void Test_4725() - { - } - [TestMethod] - public void Test_4726() - { - } - [TestMethod] - public void Test_4727() - { - } - [TestMethod] - public void Test_4728() - { - } - [TestMethod] - public void Test_4729() - { - } - [TestMethod] - public void Test_4730() - { - } - [TestMethod] - public void Test_4731() - { - } - [TestMethod] - public void Test_4732() - { - } - [TestMethod] - public void Test_4733() - { - } - [TestMethod] - public void Test_4734() - { - } - [TestMethod] - public void Test_4735() - { - } - [TestMethod] - public void Test_4736() - { - } - [TestMethod] - public void Test_4737() - { - } - [TestMethod] - public void Test_4738() - { - } - [TestMethod] - public void Test_4739() - { - } - [TestMethod] - public void Test_4740() - { - } - [TestMethod] - public void Test_4741() - { - } - [TestMethod] - public void Test_4742() - { - } - [TestMethod] - public void Test_4743() - { - } - [TestMethod] - public void Test_4744() - { - } - [TestMethod] - public void Test_4745() - { - } - [TestMethod] - public void Test_4746() - { - } - [TestMethod] - public void Test_4747() - { - } - [TestMethod] - public void Test_4748() - { - } - [TestMethod] - public void Test_4749() - { - } - [TestMethod] - public void Test_4750() - { - } - [TestMethod] - public void Test_4751() - { - } - [TestMethod] - public void Test_4752() - { - } - [TestMethod] - public void Test_4753() - { - } - [TestMethod] - public void Test_4754() - { - } - [TestMethod] - public void Test_4755() - { - } - [TestMethod] - public void Test_4756() - { - } - [TestMethod] - public void Test_4757() - { - } - [TestMethod] - public void Test_4758() - { - } - [TestMethod] - public void Test_4759() - { - } - [TestMethod] - public void Test_4760() - { - } - [TestMethod] - public void Test_4761() - { - } - [TestMethod] - public void Test_4762() - { - } - [TestMethod] - public void Test_4763() - { - } - [TestMethod] - public void Test_4764() - { - } - [TestMethod] - public void Test_4765() - { - } - [TestMethod] - public void Test_4766() - { - } - [TestMethod] - public void Test_4767() - { - } - [TestMethod] - public void Test_4768() - { - } - [TestMethod] - public void Test_4769() - { - } - [TestMethod] - public void Test_4770() - { - } - [TestMethod] - public void Test_4771() - { - } - [TestMethod] - public void Test_4772() - { - } - [TestMethod] - public void Test_4773() - { - } - [TestMethod] - public void Test_4774() - { - } - [TestMethod] - public void Test_4775() - { - } - [TestMethod] - public void Test_4776() - { - } - [TestMethod] - public void Test_4777() - { - } - [TestMethod] - public void Test_4778() - { - } - [TestMethod] - public void Test_4779() - { - } - [TestMethod] - public void Test_4780() - { - } - [TestMethod] - public void Test_4781() - { - } - [TestMethod] - public void Test_4782() - { - } - [TestMethod] - public void Test_4783() - { - } - [TestMethod] - public void Test_4784() - { - } - [TestMethod] - public void Test_4785() - { - } - [TestMethod] - public void Test_4786() - { - } - [TestMethod] - public void Test_4787() - { - } - [TestMethod] - public void Test_4788() - { - } - [TestMethod] - public void Test_4789() - { - } - [TestMethod] - public void Test_4790() - { - } - [TestMethod] - public void Test_4791() - { - } - [TestMethod] - public void Test_4792() - { - } - [TestMethod] - public void Test_4793() - { - } - [TestMethod] - public void Test_4794() - { - } - [TestMethod] - public void Test_4795() - { - } - [TestMethod] - public void Test_4796() - { - } - [TestMethod] - public void Test_4797() - { - } - [TestMethod] - public void Test_4798() - { - } - [TestMethod] - public void Test_4799() - { - } - [TestMethod] - public void Test_4800() - { - } - [TestMethod] - public void Test_4801() - { - } - [TestMethod] - public void Test_4802() - { - } - [TestMethod] - public void Test_4803() - { - } - [TestMethod] - public void Test_4804() - { - } - [TestMethod] - public void Test_4805() - { - } - [TestMethod] - public void Test_4806() - { - } - [TestMethod] - public void Test_4807() - { - } - [TestMethod] - public void Test_4808() - { - } - [TestMethod] - public void Test_4809() - { - } - [TestMethod] - public void Test_4810() - { - } - [TestMethod] - public void Test_4811() - { - } - [TestMethod] - public void Test_4812() - { - } - [TestMethod] - public void Test_4813() - { - } - [TestMethod] - public void Test_4814() - { - } - [TestMethod] - public void Test_4815() - { - } - [TestMethod] - public void Test_4816() - { - } - [TestMethod] - public void Test_4817() - { - } - [TestMethod] - public void Test_4818() - { - } - [TestMethod] - public void Test_4819() - { - } - [TestMethod] - public void Test_4820() - { - } - [TestMethod] - public void Test_4821() - { - } - [TestMethod] - public void Test_4822() - { - } - [TestMethod] - public void Test_4823() - { - } - [TestMethod] - public void Test_4824() - { - } - [TestMethod] - public void Test_4825() - { - } - [TestMethod] - public void Test_4826() - { - } - [TestMethod] - public void Test_4827() - { - } - [TestMethod] - public void Test_4828() - { - } - [TestMethod] - public void Test_4829() - { - } - [TestMethod] - public void Test_4830() - { - } - [TestMethod] - public void Test_4831() - { - } - [TestMethod] - public void Test_4832() - { - } - [TestMethod] - public void Test_4833() - { - } - [TestMethod] - public void Test_4834() - { - } - [TestMethod] - public void Test_4835() - { - } - [TestMethod] - public void Test_4836() - { - } - [TestMethod] - public void Test_4837() - { - } - [TestMethod] - public void Test_4838() - { - } - [TestMethod] - public void Test_4839() - { - } - [TestMethod] - public void Test_4840() - { - } - [TestMethod] - public void Test_4841() - { - } - [TestMethod] - public void Test_4842() - { - } - [TestMethod] - public void Test_4843() - { - } - [TestMethod] - public void Test_4844() - { - } - [TestMethod] - public void Test_4845() - { - } - [TestMethod] - public void Test_4846() - { - } - [TestMethod] - public void Test_4847() - { - } - [TestMethod] - public void Test_4848() - { - } - [TestMethod] - public void Test_4849() - { - } - [TestMethod] - public void Test_4850() - { - } - [TestMethod] - public void Test_4851() - { - } - [TestMethod] - public void Test_4852() - { - } - [TestMethod] - public void Test_4853() - { - } - [TestMethod] - public void Test_4854() - { - } - [TestMethod] - public void Test_4855() - { - } - [TestMethod] - public void Test_4856() - { - } - [TestMethod] - public void Test_4857() - { - } - [TestMethod] - public void Test_4858() - { - } - [TestMethod] - public void Test_4859() - { - } - [TestMethod] - public void Test_4860() - { - } - [TestMethod] - public void Test_4861() - { - } - [TestMethod] - public void Test_4862() - { - } - [TestMethod] - public void Test_4863() - { - } - [TestMethod] - public void Test_4864() - { - } - [TestMethod] - public void Test_4865() - { - } - [TestMethod] - public void Test_4866() - { - } - [TestMethod] - public void Test_4867() - { - } - [TestMethod] - public void Test_4868() - { - } - [TestMethod] - public void Test_4869() - { - } - [TestMethod] - public void Test_4870() - { - } - [TestMethod] - public void Test_4871() - { - } - [TestMethod] - public void Test_4872() - { - } - [TestMethod] - public void Test_4873() - { - } - [TestMethod] - public void Test_4874() - { - } - [TestMethod] - public void Test_4875() - { - } - [TestMethod] - public void Test_4876() - { - } - [TestMethod] - public void Test_4877() - { - } - [TestMethod] - public void Test_4878() - { - } - [TestMethod] - public void Test_4879() - { - } - [TestMethod] - public void Test_4880() - { - } - [TestMethod] - public void Test_4881() - { - } - [TestMethod] - public void Test_4882() - { - } - [TestMethod] - public void Test_4883() - { - } - [TestMethod] - public void Test_4884() - { - } - [TestMethod] - public void Test_4885() - { - } - [TestMethod] - public void Test_4886() - { - } - [TestMethod] - public void Test_4887() - { - } - [TestMethod] - public void Test_4888() - { - } - [TestMethod] - public void Test_4889() - { - } - [TestMethod] - public void Test_4890() - { - } - [TestMethod] - public void Test_4891() - { - } - [TestMethod] - public void Test_4892() - { - } - [TestMethod] - public void Test_4893() - { - } - [TestMethod] - public void Test_4894() - { - } - [TestMethod] - public void Test_4895() - { - } - [TestMethod] - public void Test_4896() - { - } - [TestMethod] - public void Test_4897() - { - } - [TestMethod] - public void Test_4898() - { - } - [TestMethod] - public void Test_4899() - { - } - [TestMethod] - public void Test_4900() - { - } - [TestMethod] - public void Test_4901() - { - } - [TestMethod] - public void Test_4902() - { - } - [TestMethod] - public void Test_4903() - { - } - [TestMethod] - public void Test_4904() - { - } - [TestMethod] - public void Test_4905() - { - } - [TestMethod] - public void Test_4906() - { - } - [TestMethod] - public void Test_4907() - { - } - [TestMethod] - public void Test_4908() - { - } - [TestMethod] - public void Test_4909() - { - } - [TestMethod] - public void Test_4910() - { - } - [TestMethod] - public void Test_4911() - { - } - [TestMethod] - public void Test_4912() - { - } - [TestMethod] - public void Test_4913() - { - } - [TestMethod] - public void Test_4914() - { - } - [TestMethod] - public void Test_4915() - { - } - [TestMethod] - public void Test_4916() - { - } - [TestMethod] - public void Test_4917() - { - } - [TestMethod] - public void Test_4918() - { - } - [TestMethod] - public void Test_4919() - { - } - [TestMethod] - public void Test_4920() - { - } - [TestMethod] - public void Test_4921() - { - } - [TestMethod] - public void Test_4922() - { - } - [TestMethod] - public void Test_4923() - { - } - [TestMethod] - public void Test_4924() - { - } - [TestMethod] - public void Test_4925() - { - } - [TestMethod] - public void Test_4926() - { - } - [TestMethod] - public void Test_4927() - { - } - [TestMethod] - public void Test_4928() - { - } - [TestMethod] - public void Test_4929() - { - } - [TestMethod] - public void Test_4930() - { - } - [TestMethod] - public void Test_4931() - { - } - [TestMethod] - public void Test_4932() - { - } - [TestMethod] - public void Test_4933() - { - } - [TestMethod] - public void Test_4934() - { - } - [TestMethod] - public void Test_4935() - { - } - [TestMethod] - public void Test_4936() - { - } - [TestMethod] - public void Test_4937() - { - } - [TestMethod] - public void Test_4938() - { - } - [TestMethod] - public void Test_4939() - { - } - [TestMethod] - public void Test_4940() - { - } - [TestMethod] - public void Test_4941() - { - } - [TestMethod] - public void Test_4942() - { - } - [TestMethod] - public void Test_4943() - { - } - [TestMethod] - public void Test_4944() - { - } - [TestMethod] - public void Test_4945() - { - } - [TestMethod] - public void Test_4946() - { - } - [TestMethod] - public void Test_4947() - { - } - [TestMethod] - public void Test_4948() - { - } - [TestMethod] - public void Test_4949() - { - } - [TestMethod] - public void Test_4950() - { - } - [TestMethod] - public void Test_4951() - { - } - [TestMethod] - public void Test_4952() - { - } - [TestMethod] - public void Test_4953() - { - } - [TestMethod] - public void Test_4954() - { - } - [TestMethod] - public void Test_4955() - { - } - [TestMethod] - public void Test_4956() - { - } - [TestMethod] - public void Test_4957() - { - } - [TestMethod] - public void Test_4958() - { - } - [TestMethod] - public void Test_4959() - { - } - [TestMethod] - public void Test_4960() - { - } - [TestMethod] - public void Test_4961() - { - } - [TestMethod] - public void Test_4962() - { - } - [TestMethod] - public void Test_4963() - { - } - [TestMethod] - public void Test_4964() - { - } - [TestMethod] - public void Test_4965() - { - } - [TestMethod] - public void Test_4966() - { - } - [TestMethod] - public void Test_4967() - { - } - [TestMethod] - public void Test_4968() - { - } - [TestMethod] - public void Test_4969() - { - } - [TestMethod] - public void Test_4970() - { - } - [TestMethod] - public void Test_4971() - { - } - [TestMethod] - public void Test_4972() - { - } - [TestMethod] - public void Test_4973() - { - } - [TestMethod] - public void Test_4974() - { - } - [TestMethod] - public void Test_4975() - { - } - [TestMethod] - public void Test_4976() - { - } - [TestMethod] - public void Test_4977() - { - } - [TestMethod] - public void Test_4978() - { - } - [TestMethod] - public void Test_4979() - { - } - [TestMethod] - public void Test_4980() - { - } - [TestMethod] - public void Test_4981() - { - } - [TestMethod] - public void Test_4982() - { - } - [TestMethod] - public void Test_4983() - { - } - [TestMethod] - public void Test_4984() - { - } - [TestMethod] - public void Test_4985() - { - } - [TestMethod] - public void Test_4986() - { - } - [TestMethod] - public void Test_4987() - { - } - [TestMethod] - public void Test_4988() - { - } - [TestMethod] - public void Test_4989() - { - } - [TestMethod] - public void Test_4990() - { - } - [TestMethod] - public void Test_4991() - { - } - [TestMethod] - public void Test_4992() - { - } - [TestMethod] - public void Test_4993() - { - } - [TestMethod] - public void Test_4994() - { - } - [TestMethod] - public void Test_4995() - { - } - [TestMethod] - public void Test_4996() - { - } - [TestMethod] - public void Test_4997() - { - } - [TestMethod] - public void Test_4998() - { - } - [TestMethod] - public void Test_4999() - { - } - [TestMethod] - public void Test_5000() - { - } - [TestMethod] - public void Test_5001() - { - } - [TestMethod] - public void Test_5002() - { - } - [TestMethod] - public void Test_5003() - { - } - [TestMethod] - public void Test_5004() - { - } - [TestMethod] - public void Test_5005() - { - } - [TestMethod] - public void Test_5006() - { - } - [TestMethod] - public void Test_5007() - { - } - [TestMethod] - public void Test_5008() - { - } - [TestMethod] - public void Test_5009() - { - } - [TestMethod] - public void Test_5010() - { - } - [TestMethod] - public void Test_5011() - { - } - [TestMethod] - public void Test_5012() - { - } - [TestMethod] - public void Test_5013() - { - } - [TestMethod] - public void Test_5014() - { - } - [TestMethod] - public void Test_5015() - { - } - [TestMethod] - public void Test_5016() - { - } - [TestMethod] - public void Test_5017() - { - } - [TestMethod] - public void Test_5018() - { - } - [TestMethod] - public void Test_5019() - { - } - [TestMethod] - public void Test_5020() - { - } - [TestMethod] - public void Test_5021() - { - } - [TestMethod] - public void Test_5022() - { - } - [TestMethod] - public void Test_5023() - { - } - [TestMethod] - public void Test_5024() - { - } - [TestMethod] - public void Test_5025() - { - } - [TestMethod] - public void Test_5026() - { - } - [TestMethod] - public void Test_5027() - { - } - [TestMethod] - public void Test_5028() - { - } - [TestMethod] - public void Test_5029() - { - } - [TestMethod] - public void Test_5030() - { - } - [TestMethod] - public void Test_5031() - { - } - [TestMethod] - public void Test_5032() - { - } - [TestMethod] - public void Test_5033() - { - } - [TestMethod] - public void Test_5034() - { - } - [TestMethod] - public void Test_5035() - { - } - [TestMethod] - public void Test_5036() - { - } - [TestMethod] - public void Test_5037() - { - } - [TestMethod] - public void Test_5038() - { - } - [TestMethod] - public void Test_5039() - { - } - [TestMethod] - public void Test_5040() - { - } - [TestMethod] - public void Test_5041() - { - } - [TestMethod] - public void Test_5042() - { - } - [TestMethod] - public void Test_5043() - { - } - [TestMethod] - public void Test_5044() - { - } - [TestMethod] - public void Test_5045() - { - } - [TestMethod] - public void Test_5046() - { - } - [TestMethod] - public void Test_5047() - { - } - [TestMethod] - public void Test_5048() - { - } - [TestMethod] - public void Test_5049() - { - } - [TestMethod] - public void Test_5050() - { - } - [TestMethod] - public void Test_5051() - { - } - [TestMethod] - public void Test_5052() - { - } - [TestMethod] - public void Test_5053() - { - } - [TestMethod] - public void Test_5054() - { - } - [TestMethod] - public void Test_5055() - { - } - [TestMethod] - public void Test_5056() - { - } - [TestMethod] - public void Test_5057() - { - } - [TestMethod] - public void Test_5058() - { - } - [TestMethod] - public void Test_5059() - { - } - [TestMethod] - public void Test_5060() - { - } - [TestMethod] - public void Test_5061() - { - } - [TestMethod] - public void Test_5062() - { - } - [TestMethod] - public void Test_5063() - { - } - [TestMethod] - public void Test_5064() - { - } - [TestMethod] - public void Test_5065() - { - } - [TestMethod] - public void Test_5066() - { - } - [TestMethod] - public void Test_5067() - { - } - [TestMethod] - public void Test_5068() - { - } - [TestMethod] - public void Test_5069() - { - } - [TestMethod] - public void Test_5070() - { - } - [TestMethod] - public void Test_5071() - { - } - [TestMethod] - public void Test_5072() - { - } - [TestMethod] - public void Test_5073() - { - } - [TestMethod] - public void Test_5074() - { - } - [TestMethod] - public void Test_5075() - { - } - [TestMethod] - public void Test_5076() - { - } - [TestMethod] - public void Test_5077() - { - } - [TestMethod] - public void Test_5078() - { - } - [TestMethod] - public void Test_5079() - { - } - [TestMethod] - public void Test_5080() - { - } - [TestMethod] - public void Test_5081() - { - } - [TestMethod] - public void Test_5082() - { - } - [TestMethod] - public void Test_5083() - { - } - [TestMethod] - public void Test_5084() - { - } - [TestMethod] - public void Test_5085() - { - } - [TestMethod] - public void Test_5086() - { - } - [TestMethod] - public void Test_5087() - { - } - [TestMethod] - public void Test_5088() - { - } - [TestMethod] - public void Test_5089() - { - } - [TestMethod] - public void Test_5090() - { - } - [TestMethod] - public void Test_5091() - { - } - [TestMethod] - public void Test_5092() - { - } - [TestMethod] - public void Test_5093() - { - } - [TestMethod] - public void Test_5094() - { - } - [TestMethod] - public void Test_5095() - { - } - [TestMethod] - public void Test_5096() - { - } - [TestMethod] - public void Test_5097() - { - } - [TestMethod] - public void Test_5098() - { - } - [TestMethod] - public void Test_5099() - { - } - [TestMethod] - public void Test_5100() - { - } - [TestMethod] - public void Test_5101() - { - } - [TestMethod] - public void Test_5102() - { - } - [TestMethod] - public void Test_5103() - { - } - [TestMethod] - public void Test_5104() - { - } - [TestMethod] - public void Test_5105() - { - } - [TestMethod] - public void Test_5106() - { - } - [TestMethod] - public void Test_5107() - { - } - [TestMethod] - public void Test_5108() - { - } - [TestMethod] - public void Test_5109() - { - } - [TestMethod] - public void Test_5110() - { - } - [TestMethod] - public void Test_5111() - { - } - [TestMethod] - public void Test_5112() - { - } - [TestMethod] - public void Test_5113() - { - } - [TestMethod] - public void Test_5114() - { - } - [TestMethod] - public void Test_5115() - { - } - [TestMethod] - public void Test_5116() - { - } - [TestMethod] - public void Test_5117() - { - } - [TestMethod] - public void Test_5118() - { - } - [TestMethod] - public void Test_5119() - { - } - [TestMethod] - public void Test_5120() - { - } - [TestMethod] - public void Test_5121() - { - } - [TestMethod] - public void Test_5122() - { - } - [TestMethod] - public void Test_5123() - { - } - [TestMethod] - public void Test_5124() - { - } - [TestMethod] - public void Test_5125() - { - } - [TestMethod] - public void Test_5126() - { - } - [TestMethod] - public void Test_5127() - { - } - [TestMethod] - public void Test_5128() - { - } - [TestMethod] - public void Test_5129() - { - } - [TestMethod] - public void Test_5130() - { - } - [TestMethod] - public void Test_5131() - { - } - [TestMethod] - public void Test_5132() - { - } - [TestMethod] - public void Test_5133() - { - } - [TestMethod] - public void Test_5134() - { - } - [TestMethod] - public void Test_5135() - { - } - [TestMethod] - public void Test_5136() - { - } - [TestMethod] - public void Test_5137() - { - } - [TestMethod] - public void Test_5138() - { - } - [TestMethod] - public void Test_5139() - { - } - [TestMethod] - public void Test_5140() - { - } - [TestMethod] - public void Test_5141() - { - } - [TestMethod] - public void Test_5142() - { - } - [TestMethod] - public void Test_5143() - { - } - [TestMethod] - public void Test_5144() - { - } - [TestMethod] - public void Test_5145() - { - } - [TestMethod] - public void Test_5146() - { - } - [TestMethod] - public void Test_5147() - { - } - [TestMethod] - public void Test_5148() - { - } - [TestMethod] - public void Test_5149() - { - } - [TestMethod] - public void Test_5150() - { - } - [TestMethod] - public void Test_5151() - { - } - [TestMethod] - public void Test_5152() - { - } - [TestMethod] - public void Test_5153() - { - } - [TestMethod] - public void Test_5154() - { - } - [TestMethod] - public void Test_5155() - { - } - [TestMethod] - public void Test_5156() - { - } - [TestMethod] - public void Test_5157() - { - } - [TestMethod] - public void Test_5158() - { - } - [TestMethod] - public void Test_5159() - { - } - [TestMethod] - public void Test_5160() - { - } - [TestMethod] - public void Test_5161() - { - } - [TestMethod] - public void Test_5162() - { - } - [TestMethod] - public void Test_5163() - { - } - [TestMethod] - public void Test_5164() - { - } - [TestMethod] - public void Test_5165() - { - } - [TestMethod] - public void Test_5166() - { - } - [TestMethod] - public void Test_5167() - { - } - [TestMethod] - public void Test_5168() - { - } - [TestMethod] - public void Test_5169() - { - } - [TestMethod] - public void Test_5170() - { - } - [TestMethod] - public void Test_5171() - { - } - [TestMethod] - public void Test_5172() - { - } - [TestMethod] - public void Test_5173() - { - } - [TestMethod] - public void Test_5174() - { - } - [TestMethod] - public void Test_5175() - { - } - [TestMethod] - public void Test_5176() - { - } - [TestMethod] - public void Test_5177() - { - } - [TestMethod] - public void Test_5178() - { - } - [TestMethod] - public void Test_5179() - { - } - [TestMethod] - public void Test_5180() - { - } - [TestMethod] - public void Test_5181() - { - } - [TestMethod] - public void Test_5182() - { - } - [TestMethod] - public void Test_5183() - { - } - [TestMethod] - public void Test_5184() - { - } - [TestMethod] - public void Test_5185() - { - } - [TestMethod] - public void Test_5186() - { - } - [TestMethod] - public void Test_5187() - { - } - [TestMethod] - public void Test_5188() - { - } - [TestMethod] - public void Test_5189() - { - } - [TestMethod] - public void Test_5190() - { - } - [TestMethod] - public void Test_5191() - { - } - [TestMethod] - public void Test_5192() - { - } - [TestMethod] - public void Test_5193() - { - } - [TestMethod] - public void Test_5194() - { - } - [TestMethod] - public void Test_5195() - { - } - [TestMethod] - public void Test_5196() - { - } - [TestMethod] - public void Test_5197() - { - } - [TestMethod] - public void Test_5198() - { - } - [TestMethod] - public void Test_5199() - { - } - [TestMethod] - public void Test_5200() - { - } - [TestMethod] - public void Test_5201() - { - } - [TestMethod] - public void Test_5202() - { - } - [TestMethod] - public void Test_5203() - { - } - [TestMethod] - public void Test_5204() - { - } - [TestMethod] - public void Test_5205() - { - } - [TestMethod] - public void Test_5206() - { - } - [TestMethod] - public void Test_5207() - { - } - [TestMethod] - public void Test_5208() - { - } - [TestMethod] - public void Test_5209() - { - } - [TestMethod] - public void Test_5210() - { - } - [TestMethod] - public void Test_5211() - { - } - [TestMethod] - public void Test_5212() - { - } - [TestMethod] - public void Test_5213() - { - } - [TestMethod] - public void Test_5214() - { - } - [TestMethod] - public void Test_5215() - { - } - [TestMethod] - public void Test_5216() - { - } - [TestMethod] - public void Test_5217() - { - } - [TestMethod] - public void Test_5218() - { - } - [TestMethod] - public void Test_5219() - { - } - [TestMethod] - public void Test_5220() - { - } - [TestMethod] - public void Test_5221() - { - } - [TestMethod] - public void Test_5222() - { - } - [TestMethod] - public void Test_5223() - { - } - [TestMethod] - public void Test_5224() - { - } - [TestMethod] - public void Test_5225() - { - } - [TestMethod] - public void Test_5226() - { - } - [TestMethod] - public void Test_5227() - { - } - [TestMethod] - public void Test_5228() - { - } - [TestMethod] - public void Test_5229() - { - } - [TestMethod] - public void Test_5230() - { - } - [TestMethod] - public void Test_5231() - { - } - [TestMethod] - public void Test_5232() - { - } - [TestMethod] - public void Test_5233() - { - } - [TestMethod] - public void Test_5234() - { - } - [TestMethod] - public void Test_5235() - { - } - [TestMethod] - public void Test_5236() - { - } - [TestMethod] - public void Test_5237() - { - } - [TestMethod] - public void Test_5238() - { - } - [TestMethod] - public void Test_5239() - { - } - [TestMethod] - public void Test_5240() - { - } - [TestMethod] - public void Test_5241() - { - } - [TestMethod] - public void Test_5242() - { - } - [TestMethod] - public void Test_5243() - { - } - [TestMethod] - public void Test_5244() - { - } - [TestMethod] - public void Test_5245() - { - } - [TestMethod] - public void Test_5246() - { - } - [TestMethod] - public void Test_5247() - { - } - [TestMethod] - public void Test_5248() - { - } - [TestMethod] - public void Test_5249() - { - } - [TestMethod] - public void Test_5250() - { - } - [TestMethod] - public void Test_5251() - { - } - [TestMethod] - public void Test_5252() - { - } - [TestMethod] - public void Test_5253() - { - } - [TestMethod] - public void Test_5254() - { - } - [TestMethod] - public void Test_5255() - { - } - [TestMethod] - public void Test_5256() - { - } - [TestMethod] - public void Test_5257() - { - } - [TestMethod] - public void Test_5258() - { - } - [TestMethod] - public void Test_5259() - { - } - [TestMethod] - public void Test_5260() - { - } - [TestMethod] - public void Test_5261() - { - } - [TestMethod] - public void Test_5262() - { - } - [TestMethod] - public void Test_5263() - { - } - [TestMethod] - public void Test_5264() - { - } - [TestMethod] - public void Test_5265() - { - } - [TestMethod] - public void Test_5266() - { - } - [TestMethod] - public void Test_5267() - { - } - [TestMethod] - public void Test_5268() - { - } - [TestMethod] - public void Test_5269() - { - } - [TestMethod] - public void Test_5270() - { - } - [TestMethod] - public void Test_5271() - { - } - [TestMethod] - public void Test_5272() - { - } - [TestMethod] - public void Test_5273() - { - } - [TestMethod] - public void Test_5274() - { - } - [TestMethod] - public void Test_5275() - { - } - [TestMethod] - public void Test_5276() - { - } - [TestMethod] - public void Test_5277() - { - } - [TestMethod] - public void Test_5278() - { - } - [TestMethod] - public void Test_5279() - { - } - [TestMethod] - public void Test_5280() - { - } - [TestMethod] - public void Test_5281() - { - } - [TestMethod] - public void Test_5282() - { - } - [TestMethod] - public void Test_5283() - { - } - [TestMethod] - public void Test_5284() - { - } - [TestMethod] - public void Test_5285() - { - } - [TestMethod] - public void Test_5286() - { - } - [TestMethod] - public void Test_5287() - { - } - [TestMethod] - public void Test_5288() - { - } - [TestMethod] - public void Test_5289() - { - } - [TestMethod] - public void Test_5290() - { - } - [TestMethod] - public void Test_5291() - { - } - [TestMethod] - public void Test_5292() - { - } - [TestMethod] - public void Test_5293() - { - } - [TestMethod] - public void Test_5294() - { - } - [TestMethod] - public void Test_5295() - { - } - [TestMethod] - public void Test_5296() - { - } - [TestMethod] - public void Test_5297() - { - } - [TestMethod] - public void Test_5298() - { - } - [TestMethod] - public void Test_5299() - { - } - [TestMethod] - public void Test_5300() - { - } - [TestMethod] - public void Test_5301() - { - } - [TestMethod] - public void Test_5302() - { - } - [TestMethod] - public void Test_5303() - { - } - [TestMethod] - public void Test_5304() - { - } - [TestMethod] - public void Test_5305() - { - } - [TestMethod] - public void Test_5306() - { - } - [TestMethod] - public void Test_5307() - { - } - [TestMethod] - public void Test_5308() - { - } - [TestMethod] - public void Test_5309() - { - } - [TestMethod] - public void Test_5310() - { - } - [TestMethod] - public void Test_5311() - { - } - [TestMethod] - public void Test_5312() - { - } - [TestMethod] - public void Test_5313() - { - } - [TestMethod] - public void Test_5314() - { - } - [TestMethod] - public void Test_5315() - { - } - [TestMethod] - public void Test_5316() - { - } - [TestMethod] - public void Test_5317() - { - } - [TestMethod] - public void Test_5318() - { - } - [TestMethod] - public void Test_5319() - { - } - [TestMethod] - public void Test_5320() - { - } - [TestMethod] - public void Test_5321() - { - } - [TestMethod] - public void Test_5322() - { - } - [TestMethod] - public void Test_5323() - { - } - [TestMethod] - public void Test_5324() - { - } - [TestMethod] - public void Test_5325() - { - } - [TestMethod] - public void Test_5326() - { - } - [TestMethod] - public void Test_5327() - { - } - [TestMethod] - public void Test_5328() - { - } - [TestMethod] - public void Test_5329() - { - } - [TestMethod] - public void Test_5330() - { - } - [TestMethod] - public void Test_5331() - { - } - [TestMethod] - public void Test_5332() - { - } - [TestMethod] - public void Test_5333() - { - } - [TestMethod] - public void Test_5334() - { - } - [TestMethod] - public void Test_5335() - { - } - [TestMethod] - public void Test_5336() - { - } - [TestMethod] - public void Test_5337() - { - } - [TestMethod] - public void Test_5338() - { - } - [TestMethod] - public void Test_5339() - { - } - [TestMethod] - public void Test_5340() - { - } - [TestMethod] - public void Test_5341() - { - } - [TestMethod] - public void Test_5342() - { - } - [TestMethod] - public void Test_5343() - { - } - [TestMethod] - public void Test_5344() - { - } - [TestMethod] - public void Test_5345() - { - } - [TestMethod] - public void Test_5346() - { - } - [TestMethod] - public void Test_5347() - { - } - [TestMethod] - public void Test_5348() - { - } - [TestMethod] - public void Test_5349() - { - } - [TestMethod] - public void Test_5350() - { - } - [TestMethod] - public void Test_5351() - { - } - [TestMethod] - public void Test_5352() - { - } - [TestMethod] - public void Test_5353() - { - } - [TestMethod] - public void Test_5354() - { - } - [TestMethod] - public void Test_5355() - { - } - [TestMethod] - public void Test_5356() - { - } - [TestMethod] - public void Test_5357() - { - } - [TestMethod] - public void Test_5358() - { - } - [TestMethod] - public void Test_5359() - { - } - [TestMethod] - public void Test_5360() - { - } - [TestMethod] - public void Test_5361() - { - } - [TestMethod] - public void Test_5362() - { - } - [TestMethod] - public void Test_5363() - { - } - [TestMethod] - public void Test_5364() - { - } - [TestMethod] - public void Test_5365() - { - } - [TestMethod] - public void Test_5366() - { - } - [TestMethod] - public void Test_5367() - { - } - [TestMethod] - public void Test_5368() - { - } - [TestMethod] - public void Test_5369() - { - } - [TestMethod] - public void Test_5370() - { - } - [TestMethod] - public void Test_5371() - { - } - [TestMethod] - public void Test_5372() - { - } - [TestMethod] - public void Test_5373() - { - } - [TestMethod] - public void Test_5374() - { - } - [TestMethod] - public void Test_5375() - { - } - [TestMethod] - public void Test_5376() - { - } - [TestMethod] - public void Test_5377() - { - } - [TestMethod] - public void Test_5378() - { - } - [TestMethod] - public void Test_5379() - { - } - [TestMethod] - public void Test_5380() - { - } - [TestMethod] - public void Test_5381() - { - } - [TestMethod] - public void Test_5382() - { - } - [TestMethod] - public void Test_5383() - { - } - [TestMethod] - public void Test_5384() - { - } - [TestMethod] - public void Test_5385() - { - } - [TestMethod] - public void Test_5386() - { - } - [TestMethod] - public void Test_5387() - { - } - [TestMethod] - public void Test_5388() - { - } - [TestMethod] - public void Test_5389() - { - } - [TestMethod] - public void Test_5390() - { - } - [TestMethod] - public void Test_5391() - { - } - [TestMethod] - public void Test_5392() - { - } - [TestMethod] - public void Test_5393() - { - } - [TestMethod] - public void Test_5394() - { - } - [TestMethod] - public void Test_5395() - { - } - [TestMethod] - public void Test_5396() - { - } - [TestMethod] - public void Test_5397() - { - } - [TestMethod] - public void Test_5398() - { - } - [TestMethod] - public void Test_5399() - { - } - [TestMethod] - public void Test_5400() - { - } - [TestMethod] - public void Test_5401() - { - } - [TestMethod] - public void Test_5402() - { - } - [TestMethod] - public void Test_5403() - { - } - [TestMethod] - public void Test_5404() - { - } - [TestMethod] - public void Test_5405() - { - } - [TestMethod] - public void Test_5406() - { - } - [TestMethod] - public void Test_5407() - { - } - [TestMethod] - public void Test_5408() - { - } - [TestMethod] - public void Test_5409() - { - } - [TestMethod] - public void Test_5410() - { - } - [TestMethod] - public void Test_5411() - { - } - [TestMethod] - public void Test_5412() - { - } - [TestMethod] - public void Test_5413() - { - } - [TestMethod] - public void Test_5414() - { - } - [TestMethod] - public void Test_5415() - { - } - [TestMethod] - public void Test_5416() - { - } - [TestMethod] - public void Test_5417() - { - } - [TestMethod] - public void Test_5418() - { - } - [TestMethod] - public void Test_5419() - { - } - [TestMethod] - public void Test_5420() - { - } - [TestMethod] - public void Test_5421() - { - } - [TestMethod] - public void Test_5422() - { - } - [TestMethod] - public void Test_5423() - { - } - [TestMethod] - public void Test_5424() - { - } - [TestMethod] - public void Test_5425() - { - } - [TestMethod] - public void Test_5426() - { - } - [TestMethod] - public void Test_5427() - { - } - [TestMethod] - public void Test_5428() - { - } - [TestMethod] - public void Test_5429() - { - } - [TestMethod] - public void Test_5430() - { - } - [TestMethod] - public void Test_5431() - { - } - [TestMethod] - public void Test_5432() - { - } - [TestMethod] - public void Test_5433() - { - } - [TestMethod] - public void Test_5434() - { - } - [TestMethod] - public void Test_5435() - { - } - [TestMethod] - public void Test_5436() - { - } - [TestMethod] - public void Test_5437() - { - } - [TestMethod] - public void Test_5438() - { - } - [TestMethod] - public void Test_5439() - { - } - [TestMethod] - public void Test_5440() - { - } - [TestMethod] - public void Test_5441() - { - } - [TestMethod] - public void Test_5442() - { - } - [TestMethod] - public void Test_5443() - { - } - [TestMethod] - public void Test_5444() - { - } - [TestMethod] - public void Test_5445() - { - } - [TestMethod] - public void Test_5446() - { - } - [TestMethod] - public void Test_5447() - { - } - [TestMethod] - public void Test_5448() - { - } - [TestMethod] - public void Test_5449() - { - } - [TestMethod] - public void Test_5450() - { - } - [TestMethod] - public void Test_5451() - { - } - [TestMethod] - public void Test_5452() - { - } - [TestMethod] - public void Test_5453() - { - } - [TestMethod] - public void Test_5454() - { - } - [TestMethod] - public void Test_5455() - { - } - [TestMethod] - public void Test_5456() - { - } - [TestMethod] - public void Test_5457() - { - } - [TestMethod] - public void Test_5458() - { - } - [TestMethod] - public void Test_5459() - { - } - [TestMethod] - public void Test_5460() - { - } - [TestMethod] - public void Test_5461() - { - } - [TestMethod] - public void Test_5462() - { - } - [TestMethod] - public void Test_5463() - { - } - [TestMethod] - public void Test_5464() - { - } - [TestMethod] - public void Test_5465() - { - } - [TestMethod] - public void Test_5466() - { - } - [TestMethod] - public void Test_5467() - { - } - [TestMethod] - public void Test_5468() - { - } - [TestMethod] - public void Test_5469() - { - } - [TestMethod] - public void Test_5470() - { - } - [TestMethod] - public void Test_5471() - { - } - [TestMethod] - public void Test_5472() - { - } - [TestMethod] - public void Test_5473() - { - } - [TestMethod] - public void Test_5474() - { - } - [TestMethod] - public void Test_5475() - { - } - [TestMethod] - public void Test_5476() - { - } - [TestMethod] - public void Test_5477() - { - } - [TestMethod] - public void Test_5478() - { - } - [TestMethod] - public void Test_5479() - { - } - [TestMethod] - public void Test_5480() - { - } - [TestMethod] - public void Test_5481() - { - } - [TestMethod] - public void Test_5482() - { - } - [TestMethod] - public void Test_5483() - { - } - [TestMethod] - public void Test_5484() - { - } - [TestMethod] - public void Test_5485() - { - } - [TestMethod] - public void Test_5486() - { - } - [TestMethod] - public void Test_5487() - { - } - [TestMethod] - public void Test_5488() - { - } - [TestMethod] - public void Test_5489() - { - } - [TestMethod] - public void Test_5490() - { - } - [TestMethod] - public void Test_5491() - { - } - [TestMethod] - public void Test_5492() - { - } - [TestMethod] - public void Test_5493() - { - } - [TestMethod] - public void Test_5494() - { - } - [TestMethod] - public void Test_5495() - { - } - [TestMethod] - public void Test_5496() - { - } - [TestMethod] - public void Test_5497() - { - } - [TestMethod] - public void Test_5498() - { - } - [TestMethod] - public void Test_5499() - { - } - [TestMethod] - public void Test_5500() - { - } - [TestMethod] - public void Test_5501() - { - } - [TestMethod] - public void Test_5502() - { - } - [TestMethod] - public void Test_5503() - { - } - [TestMethod] - public void Test_5504() - { - } - [TestMethod] - public void Test_5505() - { - } - [TestMethod] - public void Test_5506() - { - } - [TestMethod] - public void Test_5507() - { - } - [TestMethod] - public void Test_5508() - { - } - [TestMethod] - public void Test_5509() - { - } - [TestMethod] - public void Test_5510() - { - } - [TestMethod] - public void Test_5511() - { - } - [TestMethod] - public void Test_5512() - { - } - [TestMethod] - public void Test_5513() - { - } - [TestMethod] - public void Test_5514() - { - } - [TestMethod] - public void Test_5515() - { - } - [TestMethod] - public void Test_5516() - { - } - [TestMethod] - public void Test_5517() - { - } - [TestMethod] - public void Test_5518() - { - } - [TestMethod] - public void Test_5519() - { - } - [TestMethod] - public void Test_5520() - { - } - [TestMethod] - public void Test_5521() - { - } - [TestMethod] - public void Test_5522() - { - } - [TestMethod] - public void Test_5523() - { - } - [TestMethod] - public void Test_5524() - { - } - [TestMethod] - public void Test_5525() - { - } - [TestMethod] - public void Test_5526() - { - } - [TestMethod] - public void Test_5527() - { - } - [TestMethod] - public void Test_5528() - { - } - [TestMethod] - public void Test_5529() - { - } - [TestMethod] - public void Test_5530() - { - } - [TestMethod] - public void Test_5531() - { - } - [TestMethod] - public void Test_5532() - { - } - [TestMethod] - public void Test_5533() - { - } - [TestMethod] - public void Test_5534() - { - } - [TestMethod] - public void Test_5535() - { - } - [TestMethod] - public void Test_5536() - { - } - [TestMethod] - public void Test_5537() - { - } - [TestMethod] - public void Test_5538() - { - } - [TestMethod] - public void Test_5539() - { - } - [TestMethod] - public void Test_5540() - { - } - [TestMethod] - public void Test_5541() - { - } - [TestMethod] - public void Test_5542() - { - } - [TestMethod] - public void Test_5543() - { - } - [TestMethod] - public void Test_5544() - { - } - [TestMethod] - public void Test_5545() - { - } - [TestMethod] - public void Test_5546() - { - } - [TestMethod] - public void Test_5547() - { - } - [TestMethod] - public void Test_5548() - { - } - [TestMethod] - public void Test_5549() - { - } - [TestMethod] - public void Test_5550() - { - } - [TestMethod] - public void Test_5551() - { - } - [TestMethod] - public void Test_5552() - { - } - [TestMethod] - public void Test_5553() - { - } - [TestMethod] - public void Test_5554() - { - } - [TestMethod] - public void Test_5555() - { - } - [TestMethod] - public void Test_5556() - { - } - [TestMethod] - public void Test_5557() - { - } - [TestMethod] - public void Test_5558() - { - } - [TestMethod] - public void Test_5559() - { - } - [TestMethod] - public void Test_5560() - { - } - [TestMethod] - public void Test_5561() - { - } - [TestMethod] - public void Test_5562() - { - } - [TestMethod] - public void Test_5563() - { - } - [TestMethod] - public void Test_5564() - { - } - [TestMethod] - public void Test_5565() - { - } - [TestMethod] - public void Test_5566() - { - } - [TestMethod] - public void Test_5567() - { - } - [TestMethod] - public void Test_5568() - { - } - [TestMethod] - public void Test_5569() - { - } - [TestMethod] - public void Test_5570() - { - } - [TestMethod] - public void Test_5571() - { - } - [TestMethod] - public void Test_5572() - { - } - [TestMethod] - public void Test_5573() - { - } - [TestMethod] - public void Test_5574() - { - } - [TestMethod] - public void Test_5575() - { - } - [TestMethod] - public void Test_5576() - { - } - [TestMethod] - public void Test_5577() - { - } - [TestMethod] - public void Test_5578() - { - } - [TestMethod] - public void Test_5579() - { - } - [TestMethod] - public void Test_5580() - { - } - [TestMethod] - public void Test_5581() - { - } - [TestMethod] - public void Test_5582() - { - } - [TestMethod] - public void Test_5583() - { - } - [TestMethod] - public void Test_5584() - { - } - [TestMethod] - public void Test_5585() - { - } - [TestMethod] - public void Test_5586() - { - } - [TestMethod] - public void Test_5587() - { - } - [TestMethod] - public void Test_5588() - { - } - [TestMethod] - public void Test_5589() - { - } - [TestMethod] - public void Test_5590() - { - } - [TestMethod] - public void Test_5591() - { - } - [TestMethod] - public void Test_5592() - { - } - [TestMethod] - public void Test_5593() - { - } - [TestMethod] - public void Test_5594() - { - } - [TestMethod] - public void Test_5595() - { - } - [TestMethod] - public void Test_5596() - { - } - [TestMethod] - public void Test_5597() - { - } - [TestMethod] - public void Test_5598() - { - } - [TestMethod] - public void Test_5599() - { - } - [TestMethod] - public void Test_5600() - { - } - [TestMethod] - public void Test_5601() - { - } - [TestMethod] - public void Test_5602() - { - } - [TestMethod] - public void Test_5603() - { - } - [TestMethod] - public void Test_5604() - { - } - [TestMethod] - public void Test_5605() - { - } - [TestMethod] - public void Test_5606() - { - } - [TestMethod] - public void Test_5607() - { - } - [TestMethod] - public void Test_5608() - { - } - [TestMethod] - public void Test_5609() - { - } - [TestMethod] - public void Test_5610() - { - } - [TestMethod] - public void Test_5611() - { - } - [TestMethod] - public void Test_5612() - { - } - [TestMethod] - public void Test_5613() - { - } - [TestMethod] - public void Test_5614() - { - } - [TestMethod] - public void Test_5615() - { - } - [TestMethod] - public void Test_5616() - { - } - [TestMethod] - public void Test_5617() - { - } - [TestMethod] - public void Test_5618() - { - } - [TestMethod] - public void Test_5619() - { - } - [TestMethod] - public void Test_5620() - { - } - [TestMethod] - public void Test_5621() - { - } - [TestMethod] - public void Test_5622() - { - } - [TestMethod] - public void Test_5623() - { - } - [TestMethod] - public void Test_5624() - { - } - [TestMethod] - public void Test_5625() - { - } - [TestMethod] - public void Test_5626() - { - } - [TestMethod] - public void Test_5627() - { - } - [TestMethod] - public void Test_5628() - { - } - [TestMethod] - public void Test_5629() - { - } - [TestMethod] - public void Test_5630() - { - } - [TestMethod] - public void Test_5631() - { - } - [TestMethod] - public void Test_5632() - { - } - [TestMethod] - public void Test_5633() - { - } - [TestMethod] - public void Test_5634() - { - } - [TestMethod] - public void Test_5635() - { - } - [TestMethod] - public void Test_5636() - { - } - [TestMethod] - public void Test_5637() - { - } - [TestMethod] - public void Test_5638() - { - } - [TestMethod] - public void Test_5639() - { - } - [TestMethod] - public void Test_5640() - { - } - [TestMethod] - public void Test_5641() - { - } - [TestMethod] - public void Test_5642() - { - } - [TestMethod] - public void Test_5643() - { - } - [TestMethod] - public void Test_5644() - { - } - [TestMethod] - public void Test_5645() - { - } - [TestMethod] - public void Test_5646() - { - } - [TestMethod] - public void Test_5647() - { - } - [TestMethod] - public void Test_5648() - { - } - [TestMethod] - public void Test_5649() - { - } - [TestMethod] - public void Test_5650() - { - } - [TestMethod] - public void Test_5651() - { - } - [TestMethod] - public void Test_5652() - { - } - [TestMethod] - public void Test_5653() - { - } - [TestMethod] - public void Test_5654() - { - } - [TestMethod] - public void Test_5655() - { - } - [TestMethod] - public void Test_5656() - { - } - [TestMethod] - public void Test_5657() - { - } - [TestMethod] - public void Test_5658() - { - } - [TestMethod] - public void Test_5659() - { - } - [TestMethod] - public void Test_5660() - { - } - [TestMethod] - public void Test_5661() - { - } - [TestMethod] - public void Test_5662() - { - } - [TestMethod] - public void Test_5663() - { - } - [TestMethod] - public void Test_5664() - { - } - [TestMethod] - public void Test_5665() - { - } - [TestMethod] - public void Test_5666() - { - } - [TestMethod] - public void Test_5667() - { - } - [TestMethod] - public void Test_5668() - { - } - [TestMethod] - public void Test_5669() - { - } - [TestMethod] - public void Test_5670() - { - } - [TestMethod] - public void Test_5671() - { - } - [TestMethod] - public void Test_5672() - { - } - [TestMethod] - public void Test_5673() - { - } - [TestMethod] - public void Test_5674() - { - } - [TestMethod] - public void Test_5675() - { - } - [TestMethod] - public void Test_5676() - { - } - [TestMethod] - public void Test_5677() - { - } - [TestMethod] - public void Test_5678() - { - } - [TestMethod] - public void Test_5679() - { - } - [TestMethod] - public void Test_5680() - { - } - [TestMethod] - public void Test_5681() - { - } - [TestMethod] - public void Test_5682() - { - } - [TestMethod] - public void Test_5683() - { - } - [TestMethod] - public void Test_5684() - { - } - [TestMethod] - public void Test_5685() - { - } - [TestMethod] - public void Test_5686() - { - } - [TestMethod] - public void Test_5687() - { - } - [TestMethod] - public void Test_5688() - { - } - [TestMethod] - public void Test_5689() - { - } - [TestMethod] - public void Test_5690() - { - } - [TestMethod] - public void Test_5691() - { - } - [TestMethod] - public void Test_5692() - { - } - [TestMethod] - public void Test_5693() - { - } - [TestMethod] - public void Test_5694() - { - } - [TestMethod] - public void Test_5695() - { - } - [TestMethod] - public void Test_5696() - { - } - [TestMethod] - public void Test_5697() - { - } - [TestMethod] - public void Test_5698() - { - } - [TestMethod] - public void Test_5699() - { - } - [TestMethod] - public void Test_5700() - { - } - [TestMethod] - public void Test_5701() - { - } - [TestMethod] - public void Test_5702() - { - } - [TestMethod] - public void Test_5703() - { - } - [TestMethod] - public void Test_5704() - { - } - [TestMethod] - public void Test_5705() - { - } - [TestMethod] - public void Test_5706() - { - } - [TestMethod] - public void Test_5707() - { - } - [TestMethod] - public void Test_5708() - { - } - [TestMethod] - public void Test_5709() - { - } - [TestMethod] - public void Test_5710() - { - } - [TestMethod] - public void Test_5711() - { - } - [TestMethod] - public void Test_5712() - { - } - [TestMethod] - public void Test_5713() - { - } - [TestMethod] - public void Test_5714() - { - } - [TestMethod] - public void Test_5715() - { - } - [TestMethod] - public void Test_5716() - { - } - [TestMethod] - public void Test_5717() - { - } - [TestMethod] - public void Test_5718() - { - } - [TestMethod] - public void Test_5719() - { - } - [TestMethod] - public void Test_5720() - { - } - [TestMethod] - public void Test_5721() - { - } - [TestMethod] - public void Test_5722() - { - } - [TestMethod] - public void Test_5723() - { - } - [TestMethod] - public void Test_5724() - { - } - [TestMethod] - public void Test_5725() - { - } - [TestMethod] - public void Test_5726() - { - } - [TestMethod] - public void Test_5727() - { - } - [TestMethod] - public void Test_5728() - { - } - [TestMethod] - public void Test_5729() - { - } - [TestMethod] - public void Test_5730() - { - } - [TestMethod] - public void Test_5731() - { - } - [TestMethod] - public void Test_5732() - { - } - [TestMethod] - public void Test_5733() - { - } - [TestMethod] - public void Test_5734() - { - } - [TestMethod] - public void Test_5735() - { - } - [TestMethod] - public void Test_5736() - { - } - [TestMethod] - public void Test_5737() - { - } - [TestMethod] - public void Test_5738() - { - } - [TestMethod] - public void Test_5739() - { - } - [TestMethod] - public void Test_5740() - { - } - [TestMethod] - public void Test_5741() - { - } - [TestMethod] - public void Test_5742() - { - } - [TestMethod] - public void Test_5743() - { - } - [TestMethod] - public void Test_5744() - { - } - [TestMethod] - public void Test_5745() - { - } - [TestMethod] - public void Test_5746() - { - } - [TestMethod] - public void Test_5747() - { - } - [TestMethod] - public void Test_5748() - { - } - [TestMethod] - public void Test_5749() - { - } - [TestMethod] - public void Test_5750() - { - } - [TestMethod] - public void Test_5751() - { - } - [TestMethod] - public void Test_5752() - { - } - [TestMethod] - public void Test_5753() - { - } - [TestMethod] - public void Test_5754() - { - } - [TestMethod] - public void Test_5755() - { - } - [TestMethod] - public void Test_5756() - { - } - [TestMethod] - public void Test_5757() - { - } - [TestMethod] - public void Test_5758() - { - } - [TestMethod] - public void Test_5759() - { - } - [TestMethod] - public void Test_5760() - { - } - [TestMethod] - public void Test_5761() - { - } - [TestMethod] - public void Test_5762() - { - } - [TestMethod] - public void Test_5763() - { - } - [TestMethod] - public void Test_5764() - { - } - [TestMethod] - public void Test_5765() - { - } - [TestMethod] - public void Test_5766() - { - } - [TestMethod] - public void Test_5767() - { - } - [TestMethod] - public void Test_5768() - { - } - [TestMethod] - public void Test_5769() - { - } - [TestMethod] - public void Test_5770() - { - } - [TestMethod] - public void Test_5771() - { - } - [TestMethod] - public void Test_5772() - { - } - [TestMethod] - public void Test_5773() - { - } - [TestMethod] - public void Test_5774() - { - } - [TestMethod] - public void Test_5775() - { - } - [TestMethod] - public void Test_5776() - { - } - [TestMethod] - public void Test_5777() - { - } - [TestMethod] - public void Test_5778() - { - } - [TestMethod] - public void Test_5779() - { - } - [TestMethod] - public void Test_5780() - { - } - [TestMethod] - public void Test_5781() - { - } - [TestMethod] - public void Test_5782() - { - } - [TestMethod] - public void Test_5783() - { - } - [TestMethod] - public void Test_5784() - { - } - [TestMethod] - public void Test_5785() - { - } - [TestMethod] - public void Test_5786() - { - } - [TestMethod] - public void Test_5787() - { - } - [TestMethod] - public void Test_5788() - { - } - [TestMethod] - public void Test_5789() - { - } - [TestMethod] - public void Test_5790() - { - } - [TestMethod] - public void Test_5791() - { - } - [TestMethod] - public void Test_5792() - { - } - [TestMethod] - public void Test_5793() - { - } - [TestMethod] - public void Test_5794() - { - } - [TestMethod] - public void Test_5795() - { - } - [TestMethod] - public void Test_5796() - { - } - [TestMethod] - public void Test_5797() - { - } - [TestMethod] - public void Test_5798() - { - } - [TestMethod] - public void Test_5799() - { - } - [TestMethod] - public void Test_5800() - { - } - [TestMethod] - public void Test_5801() - { - } - [TestMethod] - public void Test_5802() - { - } - [TestMethod] - public void Test_5803() - { - } - [TestMethod] - public void Test_5804() - { - } - [TestMethod] - public void Test_5805() - { - } - [TestMethod] - public void Test_5806() - { - } - [TestMethod] - public void Test_5807() - { - } - [TestMethod] - public void Test_5808() - { - } - [TestMethod] - public void Test_5809() - { - } - [TestMethod] - public void Test_5810() - { - } - [TestMethod] - public void Test_5811() - { - } - [TestMethod] - public void Test_5812() - { - } - [TestMethod] - public void Test_5813() - { - } - [TestMethod] - public void Test_5814() - { - } - [TestMethod] - public void Test_5815() - { - } - [TestMethod] - public void Test_5816() - { - } - [TestMethod] - public void Test_5817() - { - } - [TestMethod] - public void Test_5818() - { - } - [TestMethod] - public void Test_5819() - { - } - [TestMethod] - public void Test_5820() - { - } - [TestMethod] - public void Test_5821() - { - } - [TestMethod] - public void Test_5822() - { - } - [TestMethod] - public void Test_5823() - { - } - [TestMethod] - public void Test_5824() - { - } - [TestMethod] - public void Test_5825() - { - } - [TestMethod] - public void Test_5826() - { - } - [TestMethod] - public void Test_5827() - { - } - [TestMethod] - public void Test_5828() - { - } - [TestMethod] - public void Test_5829() - { - } - [TestMethod] - public void Test_5830() - { - } - [TestMethod] - public void Test_5831() - { - } - [TestMethod] - public void Test_5832() - { - } - [TestMethod] - public void Test_5833() - { - } - [TestMethod] - public void Test_5834() - { - } - [TestMethod] - public void Test_5835() - { - } - [TestMethod] - public void Test_5836() - { - } - [TestMethod] - public void Test_5837() - { - } - [TestMethod] - public void Test_5838() - { - } - [TestMethod] - public void Test_5839() - { - } - [TestMethod] - public void Test_5840() - { - } - [TestMethod] - public void Test_5841() - { - } - [TestMethod] - public void Test_5842() - { - } - [TestMethod] - public void Test_5843() - { - } - [TestMethod] - public void Test_5844() - { - } - [TestMethod] - public void Test_5845() - { - } - [TestMethod] - public void Test_5846() - { - } - [TestMethod] - public void Test_5847() - { - } - [TestMethod] - public void Test_5848() - { - } - [TestMethod] - public void Test_5849() - { - } - [TestMethod] - public void Test_5850() - { - } - [TestMethod] - public void Test_5851() - { - } - [TestMethod] - public void Test_5852() - { - } - [TestMethod] - public void Test_5853() - { - } - [TestMethod] - public void Test_5854() - { - } - [TestMethod] - public void Test_5855() - { - } - [TestMethod] - public void Test_5856() - { - } - [TestMethod] - public void Test_5857() - { - } - [TestMethod] - public void Test_5858() - { - } - [TestMethod] - public void Test_5859() - { - } - [TestMethod] - public void Test_5860() - { - } - [TestMethod] - public void Test_5861() - { - } - [TestMethod] - public void Test_5862() - { - } - [TestMethod] - public void Test_5863() - { - } - [TestMethod] - public void Test_5864() - { - } - [TestMethod] - public void Test_5865() - { - } - [TestMethod] - public void Test_5866() - { - } - [TestMethod] - public void Test_5867() - { - } - [TestMethod] - public void Test_5868() - { - } - [TestMethod] - public void Test_5869() - { - } - [TestMethod] - public void Test_5870() - { - } - [TestMethod] - public void Test_5871() - { - } - [TestMethod] - public void Test_5872() - { - } - [TestMethod] - public void Test_5873() - { - } - [TestMethod] - public void Test_5874() - { - } - [TestMethod] - public void Test_5875() - { - } - [TestMethod] - public void Test_5876() - { - } - [TestMethod] - public void Test_5877() - { - } - [TestMethod] - public void Test_5878() - { - } - [TestMethod] - public void Test_5879() - { - } - [TestMethod] - public void Test_5880() - { - } - [TestMethod] - public void Test_5881() - { - } - [TestMethod] - public void Test_5882() - { - } - [TestMethod] - public void Test_5883() - { - } - [TestMethod] - public void Test_5884() - { - } - [TestMethod] - public void Test_5885() - { - } - [TestMethod] - public void Test_5886() - { - } - [TestMethod] - public void Test_5887() - { - } - [TestMethod] - public void Test_5888() - { - } - [TestMethod] - public void Test_5889() - { - } - [TestMethod] - public void Test_5890() - { - } - [TestMethod] - public void Test_5891() - { - } - [TestMethod] - public void Test_5892() - { - } - [TestMethod] - public void Test_5893() - { - } - [TestMethod] - public void Test_5894() - { - } - [TestMethod] - public void Test_5895() - { - } - [TestMethod] - public void Test_5896() - { - } - [TestMethod] - public void Test_5897() - { - } - [TestMethod] - public void Test_5898() - { - } - [TestMethod] - public void Test_5899() - { - } - [TestMethod] - public void Test_5900() - { - } - [TestMethod] - public void Test_5901() - { - } - [TestMethod] - public void Test_5902() - { - } - [TestMethod] - public void Test_5903() - { - } - [TestMethod] - public void Test_5904() - { - } - [TestMethod] - public void Test_5905() - { - } - [TestMethod] - public void Test_5906() - { - } - [TestMethod] - public void Test_5907() - { - } - [TestMethod] - public void Test_5908() - { - } - [TestMethod] - public void Test_5909() - { - } - [TestMethod] - public void Test_5910() - { - } - [TestMethod] - public void Test_5911() - { - } - [TestMethod] - public void Test_5912() - { - } - [TestMethod] - public void Test_5913() - { - } - [TestMethod] - public void Test_5914() - { - } - [TestMethod] - public void Test_5915() - { - } - [TestMethod] - public void Test_5916() - { - } - [TestMethod] - public void Test_5917() - { - } - [TestMethod] - public void Test_5918() - { - } - [TestMethod] - public void Test_5919() - { - } - [TestMethod] - public void Test_5920() - { - } - [TestMethod] - public void Test_5921() - { - } - [TestMethod] - public void Test_5922() - { - } - [TestMethod] - public void Test_5923() - { - } - [TestMethod] - public void Test_5924() - { - } - [TestMethod] - public void Test_5925() - { - } - [TestMethod] - public void Test_5926() - { - } - [TestMethod] - public void Test_5927() - { - } - [TestMethod] - public void Test_5928() - { - } - [TestMethod] - public void Test_5929() - { - } - [TestMethod] - public void Test_5930() - { - } - [TestMethod] - public void Test_5931() - { - } - [TestMethod] - public void Test_5932() - { - } - [TestMethod] - public void Test_5933() - { - } - [TestMethod] - public void Test_5934() - { - } - [TestMethod] - public void Test_5935() - { - } - [TestMethod] - public void Test_5936() - { - } - [TestMethod] - public void Test_5937() - { - } - [TestMethod] - public void Test_5938() - { - } - [TestMethod] - public void Test_5939() - { - } - [TestMethod] - public void Test_5940() - { - } - [TestMethod] - public void Test_5941() - { - } - [TestMethod] - public void Test_5942() - { - } - [TestMethod] - public void Test_5943() - { - } - [TestMethod] - public void Test_5944() - { - } - [TestMethod] - public void Test_5945() - { - } - [TestMethod] - public void Test_5946() - { - } - [TestMethod] - public void Test_5947() - { - } - [TestMethod] - public void Test_5948() - { - } - [TestMethod] - public void Test_5949() - { - } - [TestMethod] - public void Test_5950() - { - } - [TestMethod] - public void Test_5951() - { - } - [TestMethod] - public void Test_5952() - { - } - [TestMethod] - public void Test_5953() - { - } - [TestMethod] - public void Test_5954() - { - } - [TestMethod] - public void Test_5955() - { - } - [TestMethod] - public void Test_5956() - { - } - [TestMethod] - public void Test_5957() - { - } - [TestMethod] - public void Test_5958() - { - } - [TestMethod] - public void Test_5959() - { - } - [TestMethod] - public void Test_5960() - { - } - [TestMethod] - public void Test_5961() - { - } - [TestMethod] - public void Test_5962() - { - } - [TestMethod] - public void Test_5963() - { - } - [TestMethod] - public void Test_5964() - { - } - [TestMethod] - public void Test_5965() - { - } - [TestMethod] - public void Test_5966() - { - } - [TestMethod] - public void Test_5967() - { - } - [TestMethod] - public void Test_5968() - { - } - [TestMethod] - public void Test_5969() - { - } - [TestMethod] - public void Test_5970() - { - } - [TestMethod] - public void Test_5971() - { - } - [TestMethod] - public void Test_5972() - { - } - [TestMethod] - public void Test_5973() - { - } - [TestMethod] - public void Test_5974() - { - } - [TestMethod] - public void Test_5975() - { - } - [TestMethod] - public void Test_5976() - { - } - [TestMethod] - public void Test_5977() - { - } - [TestMethod] - public void Test_5978() - { - } - [TestMethod] - public void Test_5979() - { - } - [TestMethod] - public void Test_5980() - { - } - [TestMethod] - public void Test_5981() - { - } - [TestMethod] - public void Test_5982() - { - } - [TestMethod] - public void Test_5983() - { - } - [TestMethod] - public void Test_5984() - { - } - [TestMethod] - public void Test_5985() - { - } - [TestMethod] - public void Test_5986() - { - } - [TestMethod] - public void Test_5987() - { - } - [TestMethod] - public void Test_5988() - { - } - [TestMethod] - public void Test_5989() - { - } - [TestMethod] - public void Test_5990() - { - } - [TestMethod] - public void Test_5991() - { - } - [TestMethod] - public void Test_5992() - { - } - [TestMethod] - public void Test_5993() - { - } - [TestMethod] - public void Test_5994() - { - } - [TestMethod] - public void Test_5995() - { - } - [TestMethod] - public void Test_5996() - { - } - [TestMethod] - public void Test_5997() - { - } - [TestMethod] - public void Test_5998() - { - } - [TestMethod] - public void Test_5999() - { - } - [TestMethod] - public void Test_6000() - { - } - [TestMethod] - public void Test_6001() - { - } - [TestMethod] - public void Test_6002() - { - } - [TestMethod] - public void Test_6003() - { - } - [TestMethod] - public void Test_6004() - { - } - [TestMethod] - public void Test_6005() - { - } - [TestMethod] - public void Test_6006() - { - } - [TestMethod] - public void Test_6007() - { - } - [TestMethod] - public void Test_6008() - { - } - [TestMethod] - public void Test_6009() - { - } - [TestMethod] - public void Test_6010() - { - } - [TestMethod] - public void Test_6011() - { - } - [TestMethod] - public void Test_6012() - { - } - [TestMethod] - public void Test_6013() - { - } - [TestMethod] - public void Test_6014() - { - } - [TestMethod] - public void Test_6015() - { - } - [TestMethod] - public void Test_6016() - { - } - [TestMethod] - public void Test_6017() - { - } - [TestMethod] - public void Test_6018() - { - } - [TestMethod] - public void Test_6019() - { - } - [TestMethod] - public void Test_6020() - { - } - [TestMethod] - public void Test_6021() - { - } - [TestMethod] - public void Test_6022() - { - } - [TestMethod] - public void Test_6023() - { - } - [TestMethod] - public void Test_6024() - { - } - [TestMethod] - public void Test_6025() - { - } - [TestMethod] - public void Test_6026() - { - } - [TestMethod] - public void Test_6027() - { - } - [TestMethod] - public void Test_6028() - { - } - [TestMethod] - public void Test_6029() - { - } - [TestMethod] - public void Test_6030() - { - } - [TestMethod] - public void Test_6031() - { - } - [TestMethod] - public void Test_6032() - { - } - [TestMethod] - public void Test_6033() - { - } - [TestMethod] - public void Test_6034() - { - } - [TestMethod] - public void Test_6035() - { - } - [TestMethod] - public void Test_6036() - { - } - [TestMethod] - public void Test_6037() - { - } - [TestMethod] - public void Test_6038() - { - } - [TestMethod] - public void Test_6039() - { - } - [TestMethod] - public void Test_6040() - { - } - [TestMethod] - public void Test_6041() - { - } - [TestMethod] - public void Test_6042() - { - } - [TestMethod] - public void Test_6043() - { - } - [TestMethod] - public void Test_6044() - { - } - [TestMethod] - public void Test_6045() - { - } - [TestMethod] - public void Test_6046() - { - } - [TestMethod] - public void Test_6047() - { - } - [TestMethod] - public void Test_6048() - { - } - [TestMethod] - public void Test_6049() - { - } - [TestMethod] - public void Test_6050() - { - } - [TestMethod] - public void Test_6051() - { - } - [TestMethod] - public void Test_6052() - { - } - [TestMethod] - public void Test_6053() - { - } - [TestMethod] - public void Test_6054() - { - } - [TestMethod] - public void Test_6055() - { - } - [TestMethod] - public void Test_6056() - { - } - [TestMethod] - public void Test_6057() - { - } - [TestMethod] - public void Test_6058() - { - } - [TestMethod] - public void Test_6059() - { - } - [TestMethod] - public void Test_6060() - { - } - [TestMethod] - public void Test_6061() - { - } - [TestMethod] - public void Test_6062() - { - } - [TestMethod] - public void Test_6063() - { - } - [TestMethod] - public void Test_6064() - { - } - [TestMethod] - public void Test_6065() - { - } - [TestMethod] - public void Test_6066() - { - } - [TestMethod] - public void Test_6067() - { - } - [TestMethod] - public void Test_6068() - { - } - [TestMethod] - public void Test_6069() - { - } - [TestMethod] - public void Test_6070() - { - } - [TestMethod] - public void Test_6071() - { - } - [TestMethod] - public void Test_6072() - { - } - [TestMethod] - public void Test_6073() - { - } - [TestMethod] - public void Test_6074() - { - } - [TestMethod] - public void Test_6075() - { - } - [TestMethod] - public void Test_6076() - { - } - [TestMethod] - public void Test_6077() - { - } - [TestMethod] - public void Test_6078() - { - } - [TestMethod] - public void Test_6079() - { - } - [TestMethod] - public void Test_6080() - { - } - [TestMethod] - public void Test_6081() - { - } - [TestMethod] - public void Test_6082() - { - } - [TestMethod] - public void Test_6083() - { - } - [TestMethod] - public void Test_6084() - { - } - [TestMethod] - public void Test_6085() - { - } - [TestMethod] - public void Test_6086() - { - } - [TestMethod] - public void Test_6087() - { - } - [TestMethod] - public void Test_6088() - { - } - [TestMethod] - public void Test_6089() - { - } - [TestMethod] - public void Test_6090() - { - } - [TestMethod] - public void Test_6091() - { - } - [TestMethod] - public void Test_6092() - { - } - [TestMethod] - public void Test_6093() - { - } - [TestMethod] - public void Test_6094() - { - } - [TestMethod] - public void Test_6095() - { - } - [TestMethod] - public void Test_6096() - { - } - [TestMethod] - public void Test_6097() - { - } - [TestMethod] - public void Test_6098() - { - } - [TestMethod] - public void Test_6099() - { - } - [TestMethod] - public void Test_6100() - { - } - [TestMethod] - public void Test_6101() - { - } - [TestMethod] - public void Test_6102() - { - } - [TestMethod] - public void Test_6103() - { - } - [TestMethod] - public void Test_6104() - { - } - [TestMethod] - public void Test_6105() - { - } - [TestMethod] - public void Test_6106() - { - } - [TestMethod] - public void Test_6107() - { - } - [TestMethod] - public void Test_6108() - { - } - [TestMethod] - public void Test_6109() - { - } - [TestMethod] - public void Test_6110() - { - } - [TestMethod] - public void Test_6111() - { - } - [TestMethod] - public void Test_6112() - { - } - [TestMethod] - public void Test_6113() - { - } - [TestMethod] - public void Test_6114() - { - } - [TestMethod] - public void Test_6115() - { - } - [TestMethod] - public void Test_6116() - { - } - [TestMethod] - public void Test_6117() - { - } - [TestMethod] - public void Test_6118() - { - } - [TestMethod] - public void Test_6119() - { - } - [TestMethod] - public void Test_6120() - { - } - [TestMethod] - public void Test_6121() - { - } - [TestMethod] - public void Test_6122() - { - } - [TestMethod] - public void Test_6123() - { - } - [TestMethod] - public void Test_6124() - { - } - [TestMethod] - public void Test_6125() - { - } - [TestMethod] - public void Test_6126() - { - } - [TestMethod] - public void Test_6127() - { - } - [TestMethod] - public void Test_6128() - { - } - [TestMethod] - public void Test_6129() - { - } - [TestMethod] - public void Test_6130() - { - } - [TestMethod] - public void Test_6131() - { - } - [TestMethod] - public void Test_6132() - { - } - [TestMethod] - public void Test_6133() - { - } - [TestMethod] - public void Test_6134() - { - } - [TestMethod] - public void Test_6135() - { - } - [TestMethod] - public void Test_6136() - { - } - [TestMethod] - public void Test_6137() - { - } - [TestMethod] - public void Test_6138() - { - } - [TestMethod] - public void Test_6139() - { - } - [TestMethod] - public void Test_6140() - { - } - [TestMethod] - public void Test_6141() - { - } - [TestMethod] - public void Test_6142() - { - } - [TestMethod] - public void Test_6143() - { - } - [TestMethod] - public void Test_6144() - { - } - [TestMethod] - public void Test_6145() - { - } - [TestMethod] - public void Test_6146() - { - } - [TestMethod] - public void Test_6147() - { - } - [TestMethod] - public void Test_6148() - { - } - [TestMethod] - public void Test_6149() - { - } - [TestMethod] - public void Test_6150() - { - } - [TestMethod] - public void Test_6151() - { - } - [TestMethod] - public void Test_6152() - { - } - [TestMethod] - public void Test_6153() - { - } - [TestMethod] - public void Test_6154() - { - } - [TestMethod] - public void Test_6155() - { - } - [TestMethod] - public void Test_6156() - { - } - [TestMethod] - public void Test_6157() - { - } - [TestMethod] - public void Test_6158() - { - } - [TestMethod] - public void Test_6159() - { - } - [TestMethod] - public void Test_6160() - { - } - [TestMethod] - public void Test_6161() - { - } - [TestMethod] - public void Test_6162() - { - } - [TestMethod] - public void Test_6163() - { - } - [TestMethod] - public void Test_6164() - { - } - [TestMethod] - public void Test_6165() - { - } - [TestMethod] - public void Test_6166() - { - } - [TestMethod] - public void Test_6167() - { - } - [TestMethod] - public void Test_6168() - { - } - [TestMethod] - public void Test_6169() - { - } - [TestMethod] - public void Test_6170() - { - } - [TestMethod] - public void Test_6171() - { - } - [TestMethod] - public void Test_6172() - { - } - [TestMethod] - public void Test_6173() - { - } - [TestMethod] - public void Test_6174() - { - } - [TestMethod] - public void Test_6175() - { - } - [TestMethod] - public void Test_6176() - { - } - [TestMethod] - public void Test_6177() - { - } - [TestMethod] - public void Test_6178() - { - } - [TestMethod] - public void Test_6179() - { - } - [TestMethod] - public void Test_6180() - { - } - [TestMethod] - public void Test_6181() - { - } - [TestMethod] - public void Test_6182() - { - } - [TestMethod] - public void Test_6183() - { - } - [TestMethod] - public void Test_6184() - { - } - [TestMethod] - public void Test_6185() - { - } - [TestMethod] - public void Test_6186() - { - } - [TestMethod] - public void Test_6187() - { - } - [TestMethod] - public void Test_6188() - { - } - [TestMethod] - public void Test_6189() - { - } - [TestMethod] - public void Test_6190() - { - } - [TestMethod] - public void Test_6191() - { - } - [TestMethod] - public void Test_6192() - { - } - [TestMethod] - public void Test_6193() - { - } - [TestMethod] - public void Test_6194() - { - } - [TestMethod] - public void Test_6195() - { - } - [TestMethod] - public void Test_6196() - { - } - [TestMethod] - public void Test_6197() - { - } - [TestMethod] - public void Test_6198() - { - } - [TestMethod] - public void Test_6199() - { - } - [TestMethod] - public void Test_6200() - { - } - [TestMethod] - public void Test_6201() - { - } - [TestMethod] - public void Test_6202() - { - } - [TestMethod] - public void Test_6203() - { - } - [TestMethod] - public void Test_6204() - { - } - [TestMethod] - public void Test_6205() - { - } - [TestMethod] - public void Test_6206() - { - } - [TestMethod] - public void Test_6207() - { - } - [TestMethod] - public void Test_6208() - { - } - [TestMethod] - public void Test_6209() - { - } - [TestMethod] - public void Test_6210() - { - } - [TestMethod] - public void Test_6211() - { - } - [TestMethod] - public void Test_6212() - { - } - [TestMethod] - public void Test_6213() - { - } - [TestMethod] - public void Test_6214() - { - } - [TestMethod] - public void Test_6215() - { - } - [TestMethod] - public void Test_6216() - { - } - [TestMethod] - public void Test_6217() - { - } - [TestMethod] - public void Test_6218() - { - } - [TestMethod] - public void Test_6219() - { - } - [TestMethod] - public void Test_6220() - { - } - [TestMethod] - public void Test_6221() - { - } - [TestMethod] - public void Test_6222() - { - } - [TestMethod] - public void Test_6223() - { - } - [TestMethod] - public void Test_6224() - { - } - [TestMethod] - public void Test_6225() - { - } - [TestMethod] - public void Test_6226() - { - } - [TestMethod] - public void Test_6227() - { - } - [TestMethod] - public void Test_6228() - { - } - [TestMethod] - public void Test_6229() - { - } - [TestMethod] - public void Test_6230() - { - } - [TestMethod] - public void Test_6231() - { - } - [TestMethod] - public void Test_6232() - { - } - [TestMethod] - public void Test_6233() - { - } - [TestMethod] - public void Test_6234() - { - } - [TestMethod] - public void Test_6235() - { - } - [TestMethod] - public void Test_6236() - { - } - [TestMethod] - public void Test_6237() - { - } - [TestMethod] - public void Test_6238() - { - } - [TestMethod] - public void Test_6239() - { - } - [TestMethod] - public void Test_6240() - { - } - [TestMethod] - public void Test_6241() - { - } - [TestMethod] - public void Test_6242() - { - } - [TestMethod] - public void Test_6243() - { - } - [TestMethod] - public void Test_6244() - { - } - [TestMethod] - public void Test_6245() - { - } - [TestMethod] - public void Test_6246() - { - } - [TestMethod] - public void Test_6247() - { - } - [TestMethod] - public void Test_6248() - { - } - [TestMethod] - public void Test_6249() - { - } - [TestMethod] - public void Test_6250() - { - } - [TestMethod] - public void Test_6251() - { - } - [TestMethod] - public void Test_6252() - { - } - [TestMethod] - public void Test_6253() - { - } - [TestMethod] - public void Test_6254() - { - } - [TestMethod] - public void Test_6255() - { - } - [TestMethod] - public void Test_6256() - { - } - [TestMethod] - public void Test_6257() - { - } - [TestMethod] - public void Test_6258() - { - } - [TestMethod] - public void Test_6259() - { - } - [TestMethod] - public void Test_6260() - { - } - [TestMethod] - public void Test_6261() - { - } - [TestMethod] - public void Test_6262() - { - } - [TestMethod] - public void Test_6263() - { - } - [TestMethod] - public void Test_6264() - { - } - [TestMethod] - public void Test_6265() - { - } - [TestMethod] - public void Test_6266() - { - } - [TestMethod] - public void Test_6267() - { - } - [TestMethod] - public void Test_6268() - { - } - [TestMethod] - public void Test_6269() - { - } - [TestMethod] - public void Test_6270() - { - } - [TestMethod] - public void Test_6271() - { - } - [TestMethod] - public void Test_6272() - { - } - [TestMethod] - public void Test_6273() - { - } - [TestMethod] - public void Test_6274() - { - } - [TestMethod] - public void Test_6275() - { - } - [TestMethod] - public void Test_6276() - { - } - [TestMethod] - public void Test_6277() - { - } - [TestMethod] - public void Test_6278() - { - } - [TestMethod] - public void Test_6279() - { - } - [TestMethod] - public void Test_6280() - { - } - [TestMethod] - public void Test_6281() - { - } - [TestMethod] - public void Test_6282() - { - } - [TestMethod] - public void Test_6283() - { - } - [TestMethod] - public void Test_6284() - { - } - [TestMethod] - public void Test_6285() - { - } - [TestMethod] - public void Test_6286() - { - } - [TestMethod] - public void Test_6287() - { - } - [TestMethod] - public void Test_6288() - { - } - [TestMethod] - public void Test_6289() - { - } - [TestMethod] - public void Test_6290() - { - } - [TestMethod] - public void Test_6291() - { - } - [TestMethod] - public void Test_6292() - { - } - [TestMethod] - public void Test_6293() - { - } - [TestMethod] - public void Test_6294() - { - } - [TestMethod] - public void Test_6295() - { - } - [TestMethod] - public void Test_6296() - { - } - [TestMethod] - public void Test_6297() - { - } - [TestMethod] - public void Test_6298() - { - } - [TestMethod] - public void Test_6299() - { - } - [TestMethod] - public void Test_6300() - { - } - [TestMethod] - public void Test_6301() - { - } - [TestMethod] - public void Test_6302() - { - } - [TestMethod] - public void Test_6303() - { - } - [TestMethod] - public void Test_6304() - { - } - [TestMethod] - public void Test_6305() - { - } - [TestMethod] - public void Test_6306() - { - } - [TestMethod] - public void Test_6307() - { - } - [TestMethod] - public void Test_6308() - { - } - [TestMethod] - public void Test_6309() - { - } - [TestMethod] - public void Test_6310() - { - } - [TestMethod] - public void Test_6311() - { - } - [TestMethod] - public void Test_6312() - { - } - [TestMethod] - public void Test_6313() - { - } - [TestMethod] - public void Test_6314() - { - } - [TestMethod] - public void Test_6315() - { - } - [TestMethod] - public void Test_6316() - { - } - [TestMethod] - public void Test_6317() - { - } - [TestMethod] - public void Test_6318() - { - } - [TestMethod] - public void Test_6319() - { - } - [TestMethod] - public void Test_6320() - { - } - [TestMethod] - public void Test_6321() - { - } - [TestMethod] - public void Test_6322() - { - } - [TestMethod] - public void Test_6323() - { - } - [TestMethod] - public void Test_6324() - { - } - [TestMethod] - public void Test_6325() - { - } - [TestMethod] - public void Test_6326() - { - } - [TestMethod] - public void Test_6327() - { - } - [TestMethod] - public void Test_6328() - { - } - [TestMethod] - public void Test_6329() - { - } - [TestMethod] - public void Test_6330() - { - } - [TestMethod] - public void Test_6331() - { - } - [TestMethod] - public void Test_6332() - { - } - [TestMethod] - public void Test_6333() - { - } - [TestMethod] - public void Test_6334() - { - } - [TestMethod] - public void Test_6335() - { - } - [TestMethod] - public void Test_6336() - { - } - [TestMethod] - public void Test_6337() - { - } - [TestMethod] - public void Test_6338() - { - } - [TestMethod] - public void Test_6339() - { - } - [TestMethod] - public void Test_6340() - { - } - [TestMethod] - public void Test_6341() - { - } - [TestMethod] - public void Test_6342() - { - } - [TestMethod] - public void Test_6343() - { - } - [TestMethod] - public void Test_6344() - { - } - [TestMethod] - public void Test_6345() - { - } - [TestMethod] - public void Test_6346() - { - } - [TestMethod] - public void Test_6347() - { - } - [TestMethod] - public void Test_6348() - { - } - [TestMethod] - public void Test_6349() - { - } - [TestMethod] - public void Test_6350() - { - } - [TestMethod] - public void Test_6351() - { - } - [TestMethod] - public void Test_6352() - { - } - [TestMethod] - public void Test_6353() - { - } - [TestMethod] - public void Test_6354() - { - } - [TestMethod] - public void Test_6355() - { - } - [TestMethod] - public void Test_6356() - { - } - [TestMethod] - public void Test_6357() - { - } - [TestMethod] - public void Test_6358() - { - } - [TestMethod] - public void Test_6359() - { - } - [TestMethod] - public void Test_6360() - { - } - [TestMethod] - public void Test_6361() - { - } - [TestMethod] - public void Test_6362() - { - } - [TestMethod] - public void Test_6363() - { - } - [TestMethod] - public void Test_6364() - { - } - [TestMethod] - public void Test_6365() - { - } - [TestMethod] - public void Test_6366() - { - } - [TestMethod] - public void Test_6367() - { - } - [TestMethod] - public void Test_6368() - { - } - [TestMethod] - public void Test_6369() - { - } - [TestMethod] - public void Test_6370() - { - } - [TestMethod] - public void Test_6371() - { - } - [TestMethod] - public void Test_6372() - { - } - [TestMethod] - public void Test_6373() - { - } - [TestMethod] - public void Test_6374() - { - } - [TestMethod] - public void Test_6375() - { - } - [TestMethod] - public void Test_6376() - { - } - [TestMethod] - public void Test_6377() - { - } - [TestMethod] - public void Test_6378() - { - } - [TestMethod] - public void Test_6379() - { - } - [TestMethod] - public void Test_6380() - { - } - [TestMethod] - public void Test_6381() - { - } - [TestMethod] - public void Test_6382() - { - } - [TestMethod] - public void Test_6383() - { - } - [TestMethod] - public void Test_6384() - { - } - [TestMethod] - public void Test_6385() - { - } - [TestMethod] - public void Test_6386() - { - } - [TestMethod] - public void Test_6387() - { - } - [TestMethod] - public void Test_6388() - { - } - [TestMethod] - public void Test_6389() - { - } - [TestMethod] - public void Test_6390() - { - } - [TestMethod] - public void Test_6391() - { - } - [TestMethod] - public void Test_6392() - { - } - [TestMethod] - public void Test_6393() - { - } - [TestMethod] - public void Test_6394() - { - } - [TestMethod] - public void Test_6395() - { - } - [TestMethod] - public void Test_6396() - { - } - [TestMethod] - public void Test_6397() - { - } - [TestMethod] - public void Test_6398() - { - } - [TestMethod] - public void Test_6399() - { - } - [TestMethod] - public void Test_6400() - { - } - [TestMethod] - public void Test_6401() - { - } - [TestMethod] - public void Test_6402() - { - } - [TestMethod] - public void Test_6403() - { - } - [TestMethod] - public void Test_6404() - { - } - [TestMethod] - public void Test_6405() - { - } - [TestMethod] - public void Test_6406() - { - } - [TestMethod] - public void Test_6407() - { - } - [TestMethod] - public void Test_6408() - { - } - [TestMethod] - public void Test_6409() - { - } - [TestMethod] - public void Test_6410() - { - } - [TestMethod] - public void Test_6411() - { - } - [TestMethod] - public void Test_6412() - { - } - [TestMethod] - public void Test_6413() - { - } - [TestMethod] - public void Test_6414() - { - } - [TestMethod] - public void Test_6415() - { - } - [TestMethod] - public void Test_6416() - { - } - [TestMethod] - public void Test_6417() - { - } - [TestMethod] - public void Test_6418() - { - } - [TestMethod] - public void Test_6419() - { - } - [TestMethod] - public void Test_6420() - { - } - [TestMethod] - public void Test_6421() - { - } - [TestMethod] - public void Test_6422() - { - } - [TestMethod] - public void Test_6423() - { - } - [TestMethod] - public void Test_6424() - { - } - [TestMethod] - public void Test_6425() - { - } - [TestMethod] - public void Test_6426() - { - } - [TestMethod] - public void Test_6427() - { - } - [TestMethod] - public void Test_6428() - { - } - [TestMethod] - public void Test_6429() - { - } - [TestMethod] - public void Test_6430() - { - } - [TestMethod] - public void Test_6431() - { - } - [TestMethod] - public void Test_6432() - { - } - [TestMethod] - public void Test_6433() - { - } - [TestMethod] - public void Test_6434() - { - } - [TestMethod] - public void Test_6435() - { - } - [TestMethod] - public void Test_6436() - { - } - [TestMethod] - public void Test_6437() - { - } - [TestMethod] - public void Test_6438() - { - } - [TestMethod] - public void Test_6439() - { - } - [TestMethod] - public void Test_6440() - { - } - [TestMethod] - public void Test_6441() - { - } - [TestMethod] - public void Test_6442() - { - } - [TestMethod] - public void Test_6443() - { - } - [TestMethod] - public void Test_6444() - { - } - [TestMethod] - public void Test_6445() - { - } - [TestMethod] - public void Test_6446() - { - } - [TestMethod] - public void Test_6447() - { - } - [TestMethod] - public void Test_6448() - { - } - [TestMethod] - public void Test_6449() - { - } - [TestMethod] - public void Test_6450() - { - } - [TestMethod] - public void Test_6451() - { - } - [TestMethod] - public void Test_6452() - { - } - [TestMethod] - public void Test_6453() - { - } - [TestMethod] - public void Test_6454() - { - } - [TestMethod] - public void Test_6455() - { - } - [TestMethod] - public void Test_6456() - { - } - [TestMethod] - public void Test_6457() - { - } - [TestMethod] - public void Test_6458() - { - } - [TestMethod] - public void Test_6459() - { - } - [TestMethod] - public void Test_6460() - { - } - [TestMethod] - public void Test_6461() - { - } - [TestMethod] - public void Test_6462() - { - } - [TestMethod] - public void Test_6463() - { - } - [TestMethod] - public void Test_6464() - { - } - [TestMethod] - public void Test_6465() - { - } - [TestMethod] - public void Test_6466() - { - } - [TestMethod] - public void Test_6467() - { - } - [TestMethod] - public void Test_6468() - { - } - [TestMethod] - public void Test_6469() - { - } - [TestMethod] - public void Test_6470() - { - } - [TestMethod] - public void Test_6471() - { - } - [TestMethod] - public void Test_6472() - { - } - [TestMethod] - public void Test_6473() - { - } - [TestMethod] - public void Test_6474() - { - } - [TestMethod] - public void Test_6475() - { - } - [TestMethod] - public void Test_6476() - { - } - [TestMethod] - public void Test_6477() - { - } - [TestMethod] - public void Test_6478() - { - } - [TestMethod] - public void Test_6479() - { - } - [TestMethod] - public void Test_6480() - { - } - [TestMethod] - public void Test_6481() - { - } - [TestMethod] - public void Test_6482() - { - } - [TestMethod] - public void Test_6483() - { - } - [TestMethod] - public void Test_6484() - { - } - [TestMethod] - public void Test_6485() - { - } - [TestMethod] - public void Test_6486() - { - } - [TestMethod] - public void Test_6487() - { - } - [TestMethod] - public void Test_6488() - { - } - [TestMethod] - public void Test_6489() - { - } - [TestMethod] - public void Test_6490() - { - } - [TestMethod] - public void Test_6491() - { - } - [TestMethod] - public void Test_6492() - { - } - [TestMethod] - public void Test_6493() - { - } - [TestMethod] - public void Test_6494() - { - } - [TestMethod] - public void Test_6495() - { - } - [TestMethod] - public void Test_6496() - { - } - [TestMethod] - public void Test_6497() - { - } - [TestMethod] - public void Test_6498() - { - } - [TestMethod] - public void Test_6499() - { - } - [TestMethod] - public void Test_6500() - { - } - [TestMethod] - public void Test_6501() - { - } - [TestMethod] - public void Test_6502() - { - } - [TestMethod] - public void Test_6503() - { - } - [TestMethod] - public void Test_6504() - { - } - [TestMethod] - public void Test_6505() - { - } - [TestMethod] - public void Test_6506() - { - } - [TestMethod] - public void Test_6507() - { - } - [TestMethod] - public void Test_6508() - { - } - [TestMethod] - public void Test_6509() - { - } - [TestMethod] - public void Test_6510() - { - } - [TestMethod] - public void Test_6511() - { - } - [TestMethod] - public void Test_6512() - { - } - [TestMethod] - public void Test_6513() - { - } - [TestMethod] - public void Test_6514() - { - } - [TestMethod] - public void Test_6515() - { - } - [TestMethod] - public void Test_6516() - { - } - [TestMethod] - public void Test_6517() - { - } - [TestMethod] - public void Test_6518() - { - } - [TestMethod] - public void Test_6519() - { - } - [TestMethod] - public void Test_6520() - { - } - [TestMethod] - public void Test_6521() - { - } - [TestMethod] - public void Test_6522() - { - } - [TestMethod] - public void Test_6523() - { - } - [TestMethod] - public void Test_6524() - { - } - [TestMethod] - public void Test_6525() - { - } - [TestMethod] - public void Test_6526() - { - } - [TestMethod] - public void Test_6527() - { - } - [TestMethod] - public void Test_6528() - { - } - [TestMethod] - public void Test_6529() - { - } - [TestMethod] - public void Test_6530() - { - } - [TestMethod] - public void Test_6531() - { - } - [TestMethod] - public void Test_6532() - { - } - [TestMethod] - public void Test_6533() - { - } - [TestMethod] - public void Test_6534() - { - } - [TestMethod] - public void Test_6535() - { - } - [TestMethod] - public void Test_6536() - { - } - [TestMethod] - public void Test_6537() - { - } - [TestMethod] - public void Test_6538() - { - } - [TestMethod] - public void Test_6539() - { - } - [TestMethod] - public void Test_6540() - { - } - [TestMethod] - public void Test_6541() - { - } - [TestMethod] - public void Test_6542() - { - } - [TestMethod] - public void Test_6543() - { - } - [TestMethod] - public void Test_6544() - { - } - [TestMethod] - public void Test_6545() - { - } - [TestMethod] - public void Test_6546() - { - } - [TestMethod] - public void Test_6547() - { - } - [TestMethod] - public void Test_6548() - { - } - [TestMethod] - public void Test_6549() - { - } - [TestMethod] - public void Test_6550() - { - } - [TestMethod] - public void Test_6551() - { - } - [TestMethod] - public void Test_6552() - { - } - [TestMethod] - public void Test_6553() - { - } - [TestMethod] - public void Test_6554() - { - } - [TestMethod] - public void Test_6555() - { - } - [TestMethod] - public void Test_6556() - { - } - [TestMethod] - public void Test_6557() - { - } - [TestMethod] - public void Test_6558() - { - } - [TestMethod] - public void Test_6559() - { - } - [TestMethod] - public void Test_6560() - { - } - [TestMethod] - public void Test_6561() - { - } - [TestMethod] - public void Test_6562() - { - } - [TestMethod] - public void Test_6563() - { - } - [TestMethod] - public void Test_6564() - { - } - [TestMethod] - public void Test_6565() - { - } - [TestMethod] - public void Test_6566() - { - } - [TestMethod] - public void Test_6567() - { - } - [TestMethod] - public void Test_6568() - { - } - [TestMethod] - public void Test_6569() - { - } - [TestMethod] - public void Test_6570() - { - } - [TestMethod] - public void Test_6571() - { - } - [TestMethod] - public void Test_6572() - { - } - [TestMethod] - public void Test_6573() - { - } - [TestMethod] - public void Test_6574() - { - } - [TestMethod] - public void Test_6575() - { - } - [TestMethod] - public void Test_6576() - { - } - [TestMethod] - public void Test_6577() - { - } - [TestMethod] - public void Test_6578() - { - } - [TestMethod] - public void Test_6579() - { - } - [TestMethod] - public void Test_6580() - { - } - [TestMethod] - public void Test_6581() - { - } - [TestMethod] - public void Test_6582() - { - } - [TestMethod] - public void Test_6583() - { - } - [TestMethod] - public void Test_6584() - { - } - [TestMethod] - public void Test_6585() - { - } - [TestMethod] - public void Test_6586() - { - } - [TestMethod] - public void Test_6587() - { - } - [TestMethod] - public void Test_6588() - { - } - [TestMethod] - public void Test_6589() - { - } - [TestMethod] - public void Test_6590() - { - } - [TestMethod] - public void Test_6591() - { - } - [TestMethod] - public void Test_6592() - { - } - [TestMethod] - public void Test_6593() - { - } - [TestMethod] - public void Test_6594() - { - } - [TestMethod] - public void Test_6595() - { - } - [TestMethod] - public void Test_6596() - { - } - [TestMethod] - public void Test_6597() - { - } - [TestMethod] - public void Test_6598() - { - } - [TestMethod] - public void Test_6599() - { - } - [TestMethod] - public void Test_6600() - { - } - [TestMethod] - public void Test_6601() - { - } - [TestMethod] - public void Test_6602() - { - } - [TestMethod] - public void Test_6603() - { - } - [TestMethod] - public void Test_6604() - { - } - [TestMethod] - public void Test_6605() - { - } - [TestMethod] - public void Test_6606() - { - } - [TestMethod] - public void Test_6607() - { - } - [TestMethod] - public void Test_6608() - { - } - [TestMethod] - public void Test_6609() - { - } - [TestMethod] - public void Test_6610() - { - } - [TestMethod] - public void Test_6611() - { - } - [TestMethod] - public void Test_6612() - { - } - [TestMethod] - public void Test_6613() - { - } - [TestMethod] - public void Test_6614() - { - } - [TestMethod] - public void Test_6615() - { - } - [TestMethod] - public void Test_6616() - { - } - [TestMethod] - public void Test_6617() - { - } - [TestMethod] - public void Test_6618() - { - } - [TestMethod] - public void Test_6619() - { - } - [TestMethod] - public void Test_6620() - { - } - [TestMethod] - public void Test_6621() - { - } - [TestMethod] - public void Test_6622() - { - } - [TestMethod] - public void Test_6623() - { - } - [TestMethod] - public void Test_6624() - { - } - [TestMethod] - public void Test_6625() - { - } - [TestMethod] - public void Test_6626() - { - } - [TestMethod] - public void Test_6627() - { - } - [TestMethod] - public void Test_6628() - { - } - [TestMethod] - public void Test_6629() - { - } - [TestMethod] - public void Test_6630() - { - } - [TestMethod] - public void Test_6631() - { - } - [TestMethod] - public void Test_6632() - { - } - [TestMethod] - public void Test_6633() - { - } - [TestMethod] - public void Test_6634() - { - } - [TestMethod] - public void Test_6635() - { - } - [TestMethod] - public void Test_6636() - { - } - [TestMethod] - public void Test_6637() - { - } - [TestMethod] - public void Test_6638() - { - } - [TestMethod] - public void Test_6639() - { - } - [TestMethod] - public void Test_6640() - { - } - [TestMethod] - public void Test_6641() - { - } - [TestMethod] - public void Test_6642() - { - } - [TestMethod] - public void Test_6643() - { - } - [TestMethod] - public void Test_6644() - { - } - [TestMethod] - public void Test_6645() - { - } - [TestMethod] - public void Test_6646() - { - } - [TestMethod] - public void Test_6647() - { - } - [TestMethod] - public void Test_6648() - { - } - [TestMethod] - public void Test_6649() - { - } - [TestMethod] - public void Test_6650() - { - } - [TestMethod] - public void Test_6651() - { - } - [TestMethod] - public void Test_6652() - { - } - [TestMethod] - public void Test_6653() - { - } - [TestMethod] - public void Test_6654() - { - } - [TestMethod] - public void Test_6655() - { - } - [TestMethod] - public void Test_6656() - { - } - [TestMethod] - public void Test_6657() - { - } - [TestMethod] - public void Test_6658() - { - } - [TestMethod] - public void Test_6659() - { - } - [TestMethod] - public void Test_6660() - { - } - [TestMethod] - public void Test_6661() - { - } - [TestMethod] - public void Test_6662() - { - } - [TestMethod] - public void Test_6663() - { - } - [TestMethod] - public void Test_6664() - { - } - [TestMethod] - public void Test_6665() - { - } - [TestMethod] - public void Test_6666() - { - } - [TestMethod] - public void Test_6667() - { - } - [TestMethod] - public void Test_6668() - { - } - [TestMethod] - public void Test_6669() - { - } - [TestMethod] - public void Test_6670() - { - } - [TestMethod] - public void Test_6671() - { - } - [TestMethod] - public void Test_6672() - { - } - [TestMethod] - public void Test_6673() - { - } - [TestMethod] - public void Test_6674() - { - } - [TestMethod] - public void Test_6675() - { - } - [TestMethod] - public void Test_6676() - { - } - [TestMethod] - public void Test_6677() - { - } - [TestMethod] - public void Test_6678() - { - } - [TestMethod] - public void Test_6679() - { - } - [TestMethod] - public void Test_6680() - { - } - [TestMethod] - public void Test_6681() - { - } - [TestMethod] - public void Test_6682() - { - } - [TestMethod] - public void Test_6683() - { - } - [TestMethod] - public void Test_6684() - { - } - [TestMethod] - public void Test_6685() - { - } - [TestMethod] - public void Test_6686() - { - } - [TestMethod] - public void Test_6687() - { - } - [TestMethod] - public void Test_6688() - { - } - [TestMethod] - public void Test_6689() - { - } - [TestMethod] - public void Test_6690() - { - } - [TestMethod] - public void Test_6691() - { - } - [TestMethod] - public void Test_6692() - { - } - [TestMethod] - public void Test_6693() - { - } - [TestMethod] - public void Test_6694() - { - } - [TestMethod] - public void Test_6695() - { - } - [TestMethod] - public void Test_6696() - { - } - [TestMethod] - public void Test_6697() - { - } - [TestMethod] - public void Test_6698() - { - } - [TestMethod] - public void Test_6699() - { - } - [TestMethod] - public void Test_6700() - { - } - [TestMethod] - public void Test_6701() - { - } - [TestMethod] - public void Test_6702() - { - } - [TestMethod] - public void Test_6703() - { - } - [TestMethod] - public void Test_6704() - { - } - [TestMethod] - public void Test_6705() - { - } - [TestMethod] - public void Test_6706() - { - } - [TestMethod] - public void Test_6707() - { - } - [TestMethod] - public void Test_6708() - { - } - [TestMethod] - public void Test_6709() - { - } - [TestMethod] - public void Test_6710() - { - } - [TestMethod] - public void Test_6711() - { - } - [TestMethod] - public void Test_6712() - { - } - [TestMethod] - public void Test_6713() - { - } - [TestMethod] - public void Test_6714() - { - } - [TestMethod] - public void Test_6715() - { - } - [TestMethod] - public void Test_6716() - { - } - [TestMethod] - public void Test_6717() - { - } - [TestMethod] - public void Test_6718() - { - } - [TestMethod] - public void Test_6719() - { - } - [TestMethod] - public void Test_6720() - { - } - [TestMethod] - public void Test_6721() - { - } - [TestMethod] - public void Test_6722() - { - } - [TestMethod] - public void Test_6723() - { - } - [TestMethod] - public void Test_6724() - { - } - [TestMethod] - public void Test_6725() - { - } - [TestMethod] - public void Test_6726() - { - } - [TestMethod] - public void Test_6727() - { - } - [TestMethod] - public void Test_6728() - { - } - [TestMethod] - public void Test_6729() - { - } - [TestMethod] - public void Test_6730() - { - } - [TestMethod] - public void Test_6731() - { - } - [TestMethod] - public void Test_6732() - { - } - [TestMethod] - public void Test_6733() - { - } - [TestMethod] - public void Test_6734() - { - } - [TestMethod] - public void Test_6735() - { - } - [TestMethod] - public void Test_6736() - { - } - [TestMethod] - public void Test_6737() - { - } - [TestMethod] - public void Test_6738() - { - } - [TestMethod] - public void Test_6739() - { - } - [TestMethod] - public void Test_6740() - { - } - [TestMethod] - public void Test_6741() - { - } - [TestMethod] - public void Test_6742() - { - } - [TestMethod] - public void Test_6743() - { - } - [TestMethod] - public void Test_6744() - { - } - [TestMethod] - public void Test_6745() - { - } - [TestMethod] - public void Test_6746() - { - } - [TestMethod] - public void Test_6747() - { - } - [TestMethod] - public void Test_6748() - { - } - [TestMethod] - public void Test_6749() - { - } - [TestMethod] - public void Test_6750() - { - } - [TestMethod] - public void Test_6751() - { - } - [TestMethod] - public void Test_6752() - { - } - [TestMethod] - public void Test_6753() - { - } - [TestMethod] - public void Test_6754() - { - } - [TestMethod] - public void Test_6755() - { - } - [TestMethod] - public void Test_6756() - { - } - [TestMethod] - public void Test_6757() - { - } - [TestMethod] - public void Test_6758() - { - } - [TestMethod] - public void Test_6759() - { - } - [TestMethod] - public void Test_6760() - { - } - [TestMethod] - public void Test_6761() - { - } - [TestMethod] - public void Test_6762() - { - } - [TestMethod] - public void Test_6763() - { - } - [TestMethod] - public void Test_6764() - { - } - [TestMethod] - public void Test_6765() - { - } - [TestMethod] - public void Test_6766() - { - } - [TestMethod] - public void Test_6767() - { - } - [TestMethod] - public void Test_6768() - { - } - [TestMethod] - public void Test_6769() - { - } - [TestMethod] - public void Test_6770() - { - } - [TestMethod] - public void Test_6771() - { - } - [TestMethod] - public void Test_6772() - { - } - [TestMethod] - public void Test_6773() - { - } - [TestMethod] - public void Test_6774() - { - } - [TestMethod] - public void Test_6775() - { - } - [TestMethod] - public void Test_6776() - { - } - [TestMethod] - public void Test_6777() - { - } - [TestMethod] - public void Test_6778() - { - } - [TestMethod] - public void Test_6779() - { - } - [TestMethod] - public void Test_6780() - { - } - [TestMethod] - public void Test_6781() - { - } - [TestMethod] - public void Test_6782() - { - } - [TestMethod] - public void Test_6783() - { - } - [TestMethod] - public void Test_6784() - { - } - [TestMethod] - public void Test_6785() - { - } - [TestMethod] - public void Test_6786() - { - } - [TestMethod] - public void Test_6787() - { - } - [TestMethod] - public void Test_6788() - { - } - [TestMethod] - public void Test_6789() - { - } - [TestMethod] - public void Test_6790() - { - } - [TestMethod] - public void Test_6791() - { - } - [TestMethod] - public void Test_6792() - { - } - [TestMethod] - public void Test_6793() - { - } - [TestMethod] - public void Test_6794() - { - } - [TestMethod] - public void Test_6795() - { - } - [TestMethod] - public void Test_6796() - { - } - [TestMethod] - public void Test_6797() - { - } - [TestMethod] - public void Test_6798() - { - } - [TestMethod] - public void Test_6799() - { - } - [TestMethod] - public void Test_6800() - { - } - [TestMethod] - public void Test_6801() - { - } - [TestMethod] - public void Test_6802() - { - } - [TestMethod] - public void Test_6803() - { - } - [TestMethod] - public void Test_6804() - { - } - [TestMethod] - public void Test_6805() - { - } - [TestMethod] - public void Test_6806() - { - } - [TestMethod] - public void Test_6807() - { - } - [TestMethod] - public void Test_6808() - { - } - [TestMethod] - public void Test_6809() - { - } - [TestMethod] - public void Test_6810() - { - } - [TestMethod] - public void Test_6811() - { - } - [TestMethod] - public void Test_6812() - { - } - [TestMethod] - public void Test_6813() - { - } - [TestMethod] - public void Test_6814() - { - } - [TestMethod] - public void Test_6815() - { - } - [TestMethod] - public void Test_6816() - { - } - [TestMethod] - public void Test_6817() - { - } - [TestMethod] - public void Test_6818() - { - } - [TestMethod] - public void Test_6819() - { - } - [TestMethod] - public void Test_6820() - { - } - [TestMethod] - public void Test_6821() - { - } - [TestMethod] - public void Test_6822() - { - } - [TestMethod] - public void Test_6823() - { - } - [TestMethod] - public void Test_6824() - { - } - [TestMethod] - public void Test_6825() - { - } - [TestMethod] - public void Test_6826() - { - } - [TestMethod] - public void Test_6827() - { - } - [TestMethod] - public void Test_6828() - { - } - [TestMethod] - public void Test_6829() - { - } - [TestMethod] - public void Test_6830() - { - } - [TestMethod] - public void Test_6831() - { - } - [TestMethod] - public void Test_6832() - { - } - [TestMethod] - public void Test_6833() - { - } - [TestMethod] - public void Test_6834() - { - } - [TestMethod] - public void Test_6835() - { - } - [TestMethod] - public void Test_6836() - { - } - [TestMethod] - public void Test_6837() - { - } - [TestMethod] - public void Test_6838() - { - } - [TestMethod] - public void Test_6839() - { - } - [TestMethod] - public void Test_6840() - { - } - [TestMethod] - public void Test_6841() - { - } - [TestMethod] - public void Test_6842() - { - } - [TestMethod] - public void Test_6843() - { - } - [TestMethod] - public void Test_6844() - { - } - [TestMethod] - public void Test_6845() - { - } - [TestMethod] - public void Test_6846() - { - } - [TestMethod] - public void Test_6847() - { - } - [TestMethod] - public void Test_6848() - { - } - [TestMethod] - public void Test_6849() - { - } - [TestMethod] - public void Test_6850() - { - } - [TestMethod] - public void Test_6851() - { - } - [TestMethod] - public void Test_6852() - { - } - [TestMethod] - public void Test_6853() - { - } - [TestMethod] - public void Test_6854() - { - } - [TestMethod] - public void Test_6855() - { - } - [TestMethod] - public void Test_6856() - { - } - [TestMethod] - public void Test_6857() - { - } - [TestMethod] - public void Test_6858() - { - } - [TestMethod] - public void Test_6859() - { - } - [TestMethod] - public void Test_6860() - { - } - [TestMethod] - public void Test_6861() - { - } - [TestMethod] - public void Test_6862() - { - } - [TestMethod] - public void Test_6863() - { - } - [TestMethod] - public void Test_6864() - { - } - [TestMethod] - public void Test_6865() - { - } - [TestMethod] - public void Test_6866() - { - } - [TestMethod] - public void Test_6867() - { - } - [TestMethod] - public void Test_6868() - { - } - [TestMethod] - public void Test_6869() - { - } - [TestMethod] - public void Test_6870() - { - } - [TestMethod] - public void Test_6871() - { - } - [TestMethod] - public void Test_6872() - { - } - [TestMethod] - public void Test_6873() - { - } - [TestMethod] - public void Test_6874() - { - } - [TestMethod] - public void Test_6875() - { - } - [TestMethod] - public void Test_6876() - { - } - [TestMethod] - public void Test_6877() - { - } - [TestMethod] - public void Test_6878() - { - } - [TestMethod] - public void Test_6879() - { - } - [TestMethod] - public void Test_6880() - { - } - [TestMethod] - public void Test_6881() - { - } - [TestMethod] - public void Test_6882() - { - } - [TestMethod] - public void Test_6883() - { - } - [TestMethod] - public void Test_6884() - { - } - [TestMethod] - public void Test_6885() - { - } - [TestMethod] - public void Test_6886() - { - } - [TestMethod] - public void Test_6887() - { - } - [TestMethod] - public void Test_6888() - { - } - [TestMethod] - public void Test_6889() - { - } - [TestMethod] - public void Test_6890() - { - } - [TestMethod] - public void Test_6891() - { - } - [TestMethod] - public void Test_6892() - { - } - [TestMethod] - public void Test_6893() - { - } - [TestMethod] - public void Test_6894() - { - } - [TestMethod] - public void Test_6895() - { - } - [TestMethod] - public void Test_6896() - { - } - [TestMethod] - public void Test_6897() - { - } - [TestMethod] - public void Test_6898() - { - } - [TestMethod] - public void Test_6899() - { - } - [TestMethod] - public void Test_6900() - { - } - [TestMethod] - public void Test_6901() - { - } - [TestMethod] - public void Test_6902() - { - } - [TestMethod] - public void Test_6903() - { - } - [TestMethod] - public void Test_6904() - { - } - [TestMethod] - public void Test_6905() - { - } - [TestMethod] - public void Test_6906() - { - } - [TestMethod] - public void Test_6907() - { - } - [TestMethod] - public void Test_6908() - { - } - [TestMethod] - public void Test_6909() - { - } - [TestMethod] - public void Test_6910() - { - } - [TestMethod] - public void Test_6911() - { - } - [TestMethod] - public void Test_6912() - { - } - [TestMethod] - public void Test_6913() - { - } - [TestMethod] - public void Test_6914() - { - } - [TestMethod] - public void Test_6915() - { - } - [TestMethod] - public void Test_6916() - { - } - [TestMethod] - public void Test_6917() - { - } - [TestMethod] - public void Test_6918() - { - } - [TestMethod] - public void Test_6919() - { - } - [TestMethod] - public void Test_6920() - { - } - [TestMethod] - public void Test_6921() - { - } - [TestMethod] - public void Test_6922() - { - } - [TestMethod] - public void Test_6923() - { - } - [TestMethod] - public void Test_6924() - { - } - [TestMethod] - public void Test_6925() - { - } - [TestMethod] - public void Test_6926() - { - } - [TestMethod] - public void Test_6927() - { - } - [TestMethod] - public void Test_6928() - { - } - [TestMethod] - public void Test_6929() - { - } - [TestMethod] - public void Test_6930() - { - } - [TestMethod] - public void Test_6931() - { - } - [TestMethod] - public void Test_6932() - { - } - [TestMethod] - public void Test_6933() - { - } - [TestMethod] - public void Test_6934() - { - } - [TestMethod] - public void Test_6935() - { - } - [TestMethod] - public void Test_6936() - { - } - [TestMethod] - public void Test_6937() - { - } - [TestMethod] - public void Test_6938() - { - } - [TestMethod] - public void Test_6939() - { - } - [TestMethod] - public void Test_6940() - { - } - [TestMethod] - public void Test_6941() - { - } - [TestMethod] - public void Test_6942() - { - } - [TestMethod] - public void Test_6943() - { - } - [TestMethod] - public void Test_6944() - { - } - [TestMethod] - public void Test_6945() - { - } - [TestMethod] - public void Test_6946() - { - } - [TestMethod] - public void Test_6947() - { - } - [TestMethod] - public void Test_6948() - { - } - [TestMethod] - public void Test_6949() - { - } - [TestMethod] - public void Test_6950() - { - } - [TestMethod] - public void Test_6951() - { - } - [TestMethod] - public void Test_6952() - { - } - [TestMethod] - public void Test_6953() - { - } - [TestMethod] - public void Test_6954() - { - } - [TestMethod] - public void Test_6955() - { - } - [TestMethod] - public void Test_6956() - { - } - [TestMethod] - public void Test_6957() - { - } - [TestMethod] - public void Test_6958() - { - } - [TestMethod] - public void Test_6959() - { - } - [TestMethod] - public void Test_6960() - { - } - [TestMethod] - public void Test_6961() - { - } - [TestMethod] - public void Test_6962() - { - } - [TestMethod] - public void Test_6963() - { - } - [TestMethod] - public void Test_6964() - { - } - [TestMethod] - public void Test_6965() - { - } - [TestMethod] - public void Test_6966() - { - } - [TestMethod] - public void Test_6967() - { - } - [TestMethod] - public void Test_6968() - { - } - [TestMethod] - public void Test_6969() - { - } - [TestMethod] - public void Test_6970() - { - } - [TestMethod] - public void Test_6971() - { - } - [TestMethod] - public void Test_6972() - { - } - [TestMethod] - public void Test_6973() - { - } - [TestMethod] - public void Test_6974() - { - } - [TestMethod] - public void Test_6975() - { - } - [TestMethod] - public void Test_6976() - { - } - [TestMethod] - public void Test_6977() - { - } - [TestMethod] - public void Test_6978() - { - } - [TestMethod] - public void Test_6979() - { - } - [TestMethod] - public void Test_6980() - { - } - [TestMethod] - public void Test_6981() - { - } - [TestMethod] - public void Test_6982() - { - } - [TestMethod] - public void Test_6983() - { - } - [TestMethod] - public void Test_6984() - { - } - [TestMethod] - public void Test_6985() - { - } - [TestMethod] - public void Test_6986() - { - } - [TestMethod] - public void Test_6987() - { - } - [TestMethod] - public void Test_6988() - { - } - [TestMethod] - public void Test_6989() - { - } - [TestMethod] - public void Test_6990() - { - } - [TestMethod] - public void Test_6991() - { - } - [TestMethod] - public void Test_6992() - { - } - [TestMethod] - public void Test_6993() - { - } - [TestMethod] - public void Test_6994() - { - } - [TestMethod] - public void Test_6995() - { - } - [TestMethod] - public void Test_6996() - { - } - [TestMethod] - public void Test_6997() - { - } - [TestMethod] - public void Test_6998() - { - } - [TestMethod] - public void Test_6999() - { - } - [TestMethod] - public void Test_7000() - { - } - [TestMethod] - public void Test_7001() - { - } - [TestMethod] - public void Test_7002() - { - } - [TestMethod] - public void Test_7003() - { - } - [TestMethod] - public void Test_7004() - { - } - [TestMethod] - public void Test_7005() - { - } - [TestMethod] - public void Test_7006() - { - } - [TestMethod] - public void Test_7007() - { - } - [TestMethod] - public void Test_7008() - { - } - [TestMethod] - public void Test_7009() - { - } - [TestMethod] - public void Test_7010() - { - } - [TestMethod] - public void Test_7011() - { - } - [TestMethod] - public void Test_7012() - { - } - [TestMethod] - public void Test_7013() - { - } - [TestMethod] - public void Test_7014() - { - } - [TestMethod] - public void Test_7015() - { - } - [TestMethod] - public void Test_7016() - { - } - [TestMethod] - public void Test_7017() - { - } - [TestMethod] - public void Test_7018() - { - } - [TestMethod] - public void Test_7019() - { - } - [TestMethod] - public void Test_7020() - { - } - [TestMethod] - public void Test_7021() - { - } - [TestMethod] - public void Test_7022() - { - } - [TestMethod] - public void Test_7023() - { - } - [TestMethod] - public void Test_7024() - { - } - [TestMethod] - public void Test_7025() - { - } - [TestMethod] - public void Test_7026() - { - } - [TestMethod] - public void Test_7027() - { - } - [TestMethod] - public void Test_7028() - { - } - [TestMethod] - public void Test_7029() - { - } - [TestMethod] - public void Test_7030() - { - } - [TestMethod] - public void Test_7031() - { - } - [TestMethod] - public void Test_7032() - { - } - [TestMethod] - public void Test_7033() - { - } - [TestMethod] - public void Test_7034() - { - } - [TestMethod] - public void Test_7035() - { - } - [TestMethod] - public void Test_7036() - { - } - [TestMethod] - public void Test_7037() - { - } - [TestMethod] - public void Test_7038() - { - } - [TestMethod] - public void Test_7039() - { - } - [TestMethod] - public void Test_7040() - { - } - [TestMethod] - public void Test_7041() - { - } - [TestMethod] - public void Test_7042() - { - } - [TestMethod] - public void Test_7043() - { - } - [TestMethod] - public void Test_7044() - { - } - [TestMethod] - public void Test_7045() - { - } - [TestMethod] - public void Test_7046() - { - } - [TestMethod] - public void Test_7047() - { - } - [TestMethod] - public void Test_7048() - { - } - [TestMethod] - public void Test_7049() - { - } - [TestMethod] - public void Test_7050() - { - } - [TestMethod] - public void Test_7051() - { - } - [TestMethod] - public void Test_7052() - { - } - [TestMethod] - public void Test_7053() - { - } - [TestMethod] - public void Test_7054() - { - } - [TestMethod] - public void Test_7055() - { - } - [TestMethod] - public void Test_7056() - { - } - [TestMethod] - public void Test_7057() - { - } - [TestMethod] - public void Test_7058() - { - } - [TestMethod] - public void Test_7059() - { - } - [TestMethod] - public void Test_7060() - { - } - [TestMethod] - public void Test_7061() - { - } - [TestMethod] - public void Test_7062() - { - } - [TestMethod] - public void Test_7063() - { - } - [TestMethod] - public void Test_7064() - { - } - [TestMethod] - public void Test_7065() - { - } - [TestMethod] - public void Test_7066() - { - } - [TestMethod] - public void Test_7067() - { - } - [TestMethod] - public void Test_7068() - { - } - [TestMethod] - public void Test_7069() - { - } - [TestMethod] - public void Test_7070() - { - } - [TestMethod] - public void Test_7071() - { - } - [TestMethod] - public void Test_7072() - { - } - [TestMethod] - public void Test_7073() - { - } - [TestMethod] - public void Test_7074() - { - } - [TestMethod] - public void Test_7075() - { - } - [TestMethod] - public void Test_7076() - { - } - [TestMethod] - public void Test_7077() - { - } - [TestMethod] - public void Test_7078() - { - } - [TestMethod] - public void Test_7079() - { - } - [TestMethod] - public void Test_7080() - { - } - [TestMethod] - public void Test_7081() - { - } - [TestMethod] - public void Test_7082() - { - } - [TestMethod] - public void Test_7083() - { - } - [TestMethod] - public void Test_7084() - { - } - [TestMethod] - public void Test_7085() - { - } - [TestMethod] - public void Test_7086() - { - } - [TestMethod] - public void Test_7087() - { - } - [TestMethod] - public void Test_7088() - { - } - [TestMethod] - public void Test_7089() - { - } - [TestMethod] - public void Test_7090() - { - } - [TestMethod] - public void Test_7091() - { - } - [TestMethod] - public void Test_7092() - { - } - [TestMethod] - public void Test_7093() - { - } - [TestMethod] - public void Test_7094() - { - } - [TestMethod] - public void Test_7095() - { - } - [TestMethod] - public void Test_7096() - { - } - [TestMethod] - public void Test_7097() - { - } - [TestMethod] - public void Test_7098() - { - } - [TestMethod] - public void Test_7099() - { - } - [TestMethod] - public void Test_7100() - { - } - [TestMethod] - public void Test_7101() - { - } - [TestMethod] - public void Test_7102() - { - } - [TestMethod] - public void Test_7103() - { - } - [TestMethod] - public void Test_7104() - { - } - [TestMethod] - public void Test_7105() - { - } - [TestMethod] - public void Test_7106() - { - } - [TestMethod] - public void Test_7107() - { - } - [TestMethod] - public void Test_7108() - { - } - [TestMethod] - public void Test_7109() - { - } - [TestMethod] - public void Test_7110() - { - } - [TestMethod] - public void Test_7111() - { - } - [TestMethod] - public void Test_7112() - { - } - [TestMethod] - public void Test_7113() - { - } - [TestMethod] - public void Test_7114() - { - } - [TestMethod] - public void Test_7115() - { - } - [TestMethod] - public void Test_7116() - { - } - [TestMethod] - public void Test_7117() - { - } - [TestMethod] - public void Test_7118() - { - } - [TestMethod] - public void Test_7119() - { - } - [TestMethod] - public void Test_7120() - { - } - [TestMethod] - public void Test_7121() - { - } - [TestMethod] - public void Test_7122() - { - } - [TestMethod] - public void Test_7123() - { - } - [TestMethod] - public void Test_7124() - { - } - [TestMethod] - public void Test_7125() - { - } - [TestMethod] - public void Test_7126() - { - } - [TestMethod] - public void Test_7127() - { - } - [TestMethod] - public void Test_7128() - { - } - [TestMethod] - public void Test_7129() - { - } - [TestMethod] - public void Test_7130() - { - } - [TestMethod] - public void Test_7131() - { - } - [TestMethod] - public void Test_7132() - { - } - [TestMethod] - public void Test_7133() - { - } - [TestMethod] - public void Test_7134() - { - } - [TestMethod] - public void Test_7135() - { - } - [TestMethod] - public void Test_7136() - { - } - [TestMethod] - public void Test_7137() - { - } - [TestMethod] - public void Test_7138() - { - } - [TestMethod] - public void Test_7139() - { - } - [TestMethod] - public void Test_7140() - { - } - [TestMethod] - public void Test_7141() - { - } - [TestMethod] - public void Test_7142() - { - } - [TestMethod] - public void Test_7143() - { - } - [TestMethod] - public void Test_7144() - { - } - [TestMethod] - public void Test_7145() - { - } - [TestMethod] - public void Test_7146() - { - } - [TestMethod] - public void Test_7147() - { - } - [TestMethod] - public void Test_7148() - { - } - [TestMethod] - public void Test_7149() - { - } - [TestMethod] - public void Test_7150() - { - } - [TestMethod] - public void Test_7151() - { - } - [TestMethod] - public void Test_7152() - { - } - [TestMethod] - public void Test_7153() - { - } - [TestMethod] - public void Test_7154() - { - } - [TestMethod] - public void Test_7155() - { - } - [TestMethod] - public void Test_7156() - { - } - [TestMethod] - public void Test_7157() - { - } - [TestMethod] - public void Test_7158() - { - } - [TestMethod] - public void Test_7159() - { - } - [TestMethod] - public void Test_7160() - { - } - [TestMethod] - public void Test_7161() - { - } - [TestMethod] - public void Test_7162() - { - } - [TestMethod] - public void Test_7163() - { - } - [TestMethod] - public void Test_7164() - { - } - [TestMethod] - public void Test_7165() - { - } - [TestMethod] - public void Test_7166() - { - } - [TestMethod] - public void Test_7167() - { - } - [TestMethod] - public void Test_7168() - { - } - [TestMethod] - public void Test_7169() - { - } - [TestMethod] - public void Test_7170() - { - } - [TestMethod] - public void Test_7171() - { - } - [TestMethod] - public void Test_7172() - { - } - [TestMethod] - public void Test_7173() - { - } - [TestMethod] - public void Test_7174() - { - } - [TestMethod] - public void Test_7175() - { - } - [TestMethod] - public void Test_7176() - { - } - [TestMethod] - public void Test_7177() - { - } - [TestMethod] - public void Test_7178() - { - } - [TestMethod] - public void Test_7179() - { - } - [TestMethod] - public void Test_7180() - { - } - [TestMethod] - public void Test_7181() - { - } - [TestMethod] - public void Test_7182() - { - } - [TestMethod] - public void Test_7183() - { - } - [TestMethod] - public void Test_7184() - { - } - [TestMethod] - public void Test_7185() - { - } - [TestMethod] - public void Test_7186() - { - } - [TestMethod] - public void Test_7187() - { - } - [TestMethod] - public void Test_7188() - { - } - [TestMethod] - public void Test_7189() - { - } - [TestMethod] - public void Test_7190() - { - } - [TestMethod] - public void Test_7191() - { - } - [TestMethod] - public void Test_7192() - { - } - [TestMethod] - public void Test_7193() - { - } - [TestMethod] - public void Test_7194() - { - } - [TestMethod] - public void Test_7195() - { - } - [TestMethod] - public void Test_7196() - { - } - [TestMethod] - public void Test_7197() - { - } - [TestMethod] - public void Test_7198() - { - } - [TestMethod] - public void Test_7199() - { - } - [TestMethod] - public void Test_7200() - { - } - [TestMethod] - public void Test_7201() - { - } - [TestMethod] - public void Test_7202() - { - } - [TestMethod] - public void Test_7203() - { - } - [TestMethod] - public void Test_7204() - { - } - [TestMethod] - public void Test_7205() - { - } - [TestMethod] - public void Test_7206() - { - } - [TestMethod] - public void Test_7207() - { - } - [TestMethod] - public void Test_7208() - { - } - [TestMethod] - public void Test_7209() - { - } - [TestMethod] - public void Test_7210() - { - } - [TestMethod] - public void Test_7211() - { - } - [TestMethod] - public void Test_7212() - { - } - [TestMethod] - public void Test_7213() - { - } - [TestMethod] - public void Test_7214() - { - } - [TestMethod] - public void Test_7215() - { - } - [TestMethod] - public void Test_7216() - { - } - [TestMethod] - public void Test_7217() - { - } - [TestMethod] - public void Test_7218() - { - } - [TestMethod] - public void Test_7219() - { - } - [TestMethod] - public void Test_7220() - { - } - [TestMethod] - public void Test_7221() - { - } - [TestMethod] - public void Test_7222() - { - } - [TestMethod] - public void Test_7223() - { - } - [TestMethod] - public void Test_7224() - { - } - [TestMethod] - public void Test_7225() - { - } - [TestMethod] - public void Test_7226() - { - } - [TestMethod] - public void Test_7227() - { - } - [TestMethod] - public void Test_7228() - { - } - [TestMethod] - public void Test_7229() - { - } - [TestMethod] - public void Test_7230() - { - } - [TestMethod] - public void Test_7231() - { - } - [TestMethod] - public void Test_7232() - { - } - [TestMethod] - public void Test_7233() - { - } - [TestMethod] - public void Test_7234() - { - } - [TestMethod] - public void Test_7235() - { - } - [TestMethod] - public void Test_7236() - { - } - [TestMethod] - public void Test_7237() - { - } - [TestMethod] - public void Test_7238() - { - } - [TestMethod] - public void Test_7239() - { - } - [TestMethod] - public void Test_7240() - { - } - [TestMethod] - public void Test_7241() - { - } - [TestMethod] - public void Test_7242() - { - } - [TestMethod] - public void Test_7243() - { - } - [TestMethod] - public void Test_7244() - { - } - [TestMethod] - public void Test_7245() - { - } - [TestMethod] - public void Test_7246() - { - } - [TestMethod] - public void Test_7247() - { - } - [TestMethod] - public void Test_7248() - { - } - [TestMethod] - public void Test_7249() - { - } - [TestMethod] - public void Test_7250() - { - } - [TestMethod] - public void Test_7251() - { - } - [TestMethod] - public void Test_7252() - { - } - [TestMethod] - public void Test_7253() - { - } - [TestMethod] - public void Test_7254() - { - } - [TestMethod] - public void Test_7255() - { - } - [TestMethod] - public void Test_7256() - { - } - [TestMethod] - public void Test_7257() - { - } - [TestMethod] - public void Test_7258() - { - } - [TestMethod] - public void Test_7259() - { - } - [TestMethod] - public void Test_7260() - { - } - [TestMethod] - public void Test_7261() - { - } - [TestMethod] - public void Test_7262() - { - } - [TestMethod] - public void Test_7263() - { - } - [TestMethod] - public void Test_7264() - { - } - [TestMethod] - public void Test_7265() - { - } - [TestMethod] - public void Test_7266() - { - } - [TestMethod] - public void Test_7267() - { - } - [TestMethod] - public void Test_7268() - { - } - [TestMethod] - public void Test_7269() - { - } - [TestMethod] - public void Test_7270() - { - } - [TestMethod] - public void Test_7271() - { - } - [TestMethod] - public void Test_7272() - { - } - [TestMethod] - public void Test_7273() - { - } - [TestMethod] - public void Test_7274() - { - } - [TestMethod] - public void Test_7275() - { - } - [TestMethod] - public void Test_7276() - { - } - [TestMethod] - public void Test_7277() - { - } - [TestMethod] - public void Test_7278() - { - } - [TestMethod] - public void Test_7279() - { - } - [TestMethod] - public void Test_7280() - { - } - [TestMethod] - public void Test_7281() - { - } - [TestMethod] - public void Test_7282() - { - } - [TestMethod] - public void Test_7283() - { - } - [TestMethod] - public void Test_7284() - { - } - [TestMethod] - public void Test_7285() - { - } - [TestMethod] - public void Test_7286() - { - } - [TestMethod] - public void Test_7287() - { - } - [TestMethod] - public void Test_7288() - { - } - [TestMethod] - public void Test_7289() - { - } - [TestMethod] - public void Test_7290() - { - } - [TestMethod] - public void Test_7291() - { - } - [TestMethod] - public void Test_7292() - { - } - [TestMethod] - public void Test_7293() - { - } - [TestMethod] - public void Test_7294() - { - } - [TestMethod] - public void Test_7295() - { - } - [TestMethod] - public void Test_7296() - { - } - [TestMethod] - public void Test_7297() - { - } - [TestMethod] - public void Test_7298() - { - } - [TestMethod] - public void Test_7299() - { - } - [TestMethod] - public void Test_7300() - { - } - [TestMethod] - public void Test_7301() - { - } - [TestMethod] - public void Test_7302() - { - } - [TestMethod] - public void Test_7303() - { - } - [TestMethod] - public void Test_7304() - { - } - [TestMethod] - public void Test_7305() - { - } - [TestMethod] - public void Test_7306() - { - } - [TestMethod] - public void Test_7307() - { - } - [TestMethod] - public void Test_7308() - { - } - [TestMethod] - public void Test_7309() - { - } - [TestMethod] - public void Test_7310() - { - } - [TestMethod] - public void Test_7311() - { - } - [TestMethod] - public void Test_7312() - { - } - [TestMethod] - public void Test_7313() - { - } - [TestMethod] - public void Test_7314() - { - } - [TestMethod] - public void Test_7315() - { - } - [TestMethod] - public void Test_7316() - { - } - [TestMethod] - public void Test_7317() - { - } - [TestMethod] - public void Test_7318() - { - } - [TestMethod] - public void Test_7319() - { - } - [TestMethod] - public void Test_7320() - { - } - [TestMethod] - public void Test_7321() - { - } - [TestMethod] - public void Test_7322() - { - } - [TestMethod] - public void Test_7323() - { - } - [TestMethod] - public void Test_7324() - { - } - [TestMethod] - public void Test_7325() - { - } - [TestMethod] - public void Test_7326() - { - } - [TestMethod] - public void Test_7327() - { - } - [TestMethod] - public void Test_7328() - { - } - [TestMethod] - public void Test_7329() - { - } - [TestMethod] - public void Test_7330() - { - } - [TestMethod] - public void Test_7331() - { - } - [TestMethod] - public void Test_7332() - { - } - [TestMethod] - public void Test_7333() - { - } - [TestMethod] - public void Test_7334() - { - } - [TestMethod] - public void Test_7335() - { - } - [TestMethod] - public void Test_7336() - { - } - [TestMethod] - public void Test_7337() - { - } - [TestMethod] - public void Test_7338() - { - } - [TestMethod] - public void Test_7339() - { - } - [TestMethod] - public void Test_7340() - { - } - [TestMethod] - public void Test_7341() - { - } - [TestMethod] - public void Test_7342() - { - } - [TestMethod] - public void Test_7343() - { - } - [TestMethod] - public void Test_7344() - { - } - [TestMethod] - public void Test_7345() - { - } - [TestMethod] - public void Test_7346() - { - } - [TestMethod] - public void Test_7347() - { - } - [TestMethod] - public void Test_7348() - { - } - [TestMethod] - public void Test_7349() - { - } - [TestMethod] - public void Test_7350() - { - } - [TestMethod] - public void Test_7351() - { - } - [TestMethod] - public void Test_7352() - { - } - [TestMethod] - public void Test_7353() - { - } - [TestMethod] - public void Test_7354() - { - } - [TestMethod] - public void Test_7355() - { - } - [TestMethod] - public void Test_7356() - { - } - [TestMethod] - public void Test_7357() - { - } - [TestMethod] - public void Test_7358() - { - } - [TestMethod] - public void Test_7359() - { - } - [TestMethod] - public void Test_7360() - { - } - [TestMethod] - public void Test_7361() - { - } - [TestMethod] - public void Test_7362() - { - } - [TestMethod] - public void Test_7363() - { - } - [TestMethod] - public void Test_7364() - { - } - [TestMethod] - public void Test_7365() - { - } - [TestMethod] - public void Test_7366() - { - } - [TestMethod] - public void Test_7367() - { - } - [TestMethod] - public void Test_7368() - { - } - [TestMethod] - public void Test_7369() - { - } - [TestMethod] - public void Test_7370() - { - } - [TestMethod] - public void Test_7371() - { - } - [TestMethod] - public void Test_7372() - { - } - [TestMethod] - public void Test_7373() - { - } - [TestMethod] - public void Test_7374() - { - } - [TestMethod] - public void Test_7375() - { - } - [TestMethod] - public void Test_7376() - { - } - [TestMethod] - public void Test_7377() - { - } - [TestMethod] - public void Test_7378() - { - } - [TestMethod] - public void Test_7379() - { - } - [TestMethod] - public void Test_7380() - { - } - [TestMethod] - public void Test_7381() - { - } - [TestMethod] - public void Test_7382() - { - } - [TestMethod] - public void Test_7383() - { - } - [TestMethod] - public void Test_7384() - { - } - [TestMethod] - public void Test_7385() - { - } - [TestMethod] - public void Test_7386() - { - } - [TestMethod] - public void Test_7387() - { - } - [TestMethod] - public void Test_7388() - { - } - [TestMethod] - public void Test_7389() - { - } - [TestMethod] - public void Test_7390() - { - } - [TestMethod] - public void Test_7391() - { - } - [TestMethod] - public void Test_7392() - { - } - [TestMethod] - public void Test_7393() - { - } - [TestMethod] - public void Test_7394() - { - } - [TestMethod] - public void Test_7395() - { - } - [TestMethod] - public void Test_7396() - { - } - [TestMethod] - public void Test_7397() - { - } - [TestMethod] - public void Test_7398() - { - } - [TestMethod] - public void Test_7399() - { - } - [TestMethod] - public void Test_7400() - { - } - [TestMethod] - public void Test_7401() - { - } - [TestMethod] - public void Test_7402() - { - } - [TestMethod] - public void Test_7403() - { - } - [TestMethod] - public void Test_7404() - { - } - [TestMethod] - public void Test_7405() - { - } - [TestMethod] - public void Test_7406() - { - } - [TestMethod] - public void Test_7407() - { - } - [TestMethod] - public void Test_7408() - { - } - [TestMethod] - public void Test_7409() - { - } - [TestMethod] - public void Test_7410() - { - } - [TestMethod] - public void Test_7411() - { - } - [TestMethod] - public void Test_7412() - { - } - [TestMethod] - public void Test_7413() - { - } - [TestMethod] - public void Test_7414() - { - } - [TestMethod] - public void Test_7415() - { - } - [TestMethod] - public void Test_7416() - { - } - [TestMethod] - public void Test_7417() - { - } - [TestMethod] - public void Test_7418() - { - } - [TestMethod] - public void Test_7419() - { - } - [TestMethod] - public void Test_7420() - { - } - [TestMethod] - public void Test_7421() - { - } - [TestMethod] - public void Test_7422() - { - } - [TestMethod] - public void Test_7423() - { - } - [TestMethod] - public void Test_7424() - { - } - [TestMethod] - public void Test_7425() - { - } - [TestMethod] - public void Test_7426() - { - } - [TestMethod] - public void Test_7427() - { - } - [TestMethod] - public void Test_7428() - { - } - [TestMethod] - public void Test_7429() - { - } - [TestMethod] - public void Test_7430() - { - } - [TestMethod] - public void Test_7431() - { - } - [TestMethod] - public void Test_7432() - { - } - [TestMethod] - public void Test_7433() - { - } - [TestMethod] - public void Test_7434() - { - } - [TestMethod] - public void Test_7435() - { - } - [TestMethod] - public void Test_7436() - { - } - [TestMethod] - public void Test_7437() - { - } - [TestMethod] - public void Test_7438() - { - } - [TestMethod] - public void Test_7439() - { - } - [TestMethod] - public void Test_7440() - { - } - [TestMethod] - public void Test_7441() - { - } - [TestMethod] - public void Test_7442() - { - } - [TestMethod] - public void Test_7443() - { - } - [TestMethod] - public void Test_7444() - { - } - [TestMethod] - public void Test_7445() - { - } - [TestMethod] - public void Test_7446() - { - } - [TestMethod] - public void Test_7447() - { - } - [TestMethod] - public void Test_7448() - { - } - [TestMethod] - public void Test_7449() - { - } - [TestMethod] - public void Test_7450() - { - } - [TestMethod] - public void Test_7451() - { - } - [TestMethod] - public void Test_7452() - { - } - [TestMethod] - public void Test_7453() - { - } - [TestMethod] - public void Test_7454() - { - } - [TestMethod] - public void Test_7455() - { - } - [TestMethod] - public void Test_7456() - { - } - [TestMethod] - public void Test_7457() - { - } - [TestMethod] - public void Test_7458() - { - } - [TestMethod] - public void Test_7459() - { - } - [TestMethod] - public void Test_7460() - { - } - [TestMethod] - public void Test_7461() - { - } - [TestMethod] - public void Test_7462() - { - } - [TestMethod] - public void Test_7463() - { - } - [TestMethod] - public void Test_7464() - { - } - [TestMethod] - public void Test_7465() - { - } - [TestMethod] - public void Test_7466() - { - } - [TestMethod] - public void Test_7467() - { - } - [TestMethod] - public void Test_7468() - { - } - [TestMethod] - public void Test_7469() - { - } - [TestMethod] - public void Test_7470() - { - } - [TestMethod] - public void Test_7471() - { - } - [TestMethod] - public void Test_7472() - { - } - [TestMethod] - public void Test_7473() - { - } - [TestMethod] - public void Test_7474() - { - } - [TestMethod] - public void Test_7475() - { - } - [TestMethod] - public void Test_7476() - { - } - [TestMethod] - public void Test_7477() - { - } - [TestMethod] - public void Test_7478() - { - } - [TestMethod] - public void Test_7479() - { - } - [TestMethod] - public void Test_7480() - { - } - [TestMethod] - public void Test_7481() - { - } - [TestMethod] - public void Test_7482() - { - } - [TestMethod] - public void Test_7483() - { - } - [TestMethod] - public void Test_7484() - { - } - [TestMethod] - public void Test_7485() - { - } - [TestMethod] - public void Test_7486() - { - } - [TestMethod] - public void Test_7487() - { - } - [TestMethod] - public void Test_7488() - { - } - [TestMethod] - public void Test_7489() - { - } - [TestMethod] - public void Test_7490() - { - } - [TestMethod] - public void Test_7491() - { - } - [TestMethod] - public void Test_7492() - { - } - [TestMethod] - public void Test_7493() - { - } - [TestMethod] - public void Test_7494() - { - } - [TestMethod] - public void Test_7495() - { - } - [TestMethod] - public void Test_7496() - { - } - [TestMethod] - public void Test_7497() - { - } - [TestMethod] - public void Test_7498() - { - } - [TestMethod] - public void Test_7499() - { - } - [TestMethod] - public void Test_7500() - { - } - [TestMethod] - public void Test_7501() - { - } - [TestMethod] - public void Test_7502() - { - } - [TestMethod] - public void Test_7503() - { - } - [TestMethod] - public void Test_7504() - { - } - [TestMethod] - public void Test_7505() - { - } - [TestMethod] - public void Test_7506() - { - } - [TestMethod] - public void Test_7507() - { - } - [TestMethod] - public void Test_7508() - { - } - [TestMethod] - public void Test_7509() - { - } - [TestMethod] - public void Test_7510() - { - } - [TestMethod] - public void Test_7511() - { - } - [TestMethod] - public void Test_7512() - { - } - [TestMethod] - public void Test_7513() - { - } - [TestMethod] - public void Test_7514() - { - } - [TestMethod] - public void Test_7515() - { - } - [TestMethod] - public void Test_7516() - { - } - [TestMethod] - public void Test_7517() - { - } - [TestMethod] - public void Test_7518() - { - } - [TestMethod] - public void Test_7519() - { - } - [TestMethod] - public void Test_7520() - { - } - [TestMethod] - public void Test_7521() - { - } - [TestMethod] - public void Test_7522() - { - } - [TestMethod] - public void Test_7523() - { - } - [TestMethod] - public void Test_7524() - { - } - [TestMethod] - public void Test_7525() - { - } - [TestMethod] - public void Test_7526() - { - } - [TestMethod] - public void Test_7527() - { - } - [TestMethod] - public void Test_7528() - { - } - [TestMethod] - public void Test_7529() - { - } - [TestMethod] - public void Test_7530() - { - } - [TestMethod] - public void Test_7531() - { - } - [TestMethod] - public void Test_7532() - { - } - [TestMethod] - public void Test_7533() - { - } - [TestMethod] - public void Test_7534() - { - } - [TestMethod] - public void Test_7535() - { - } - [TestMethod] - public void Test_7536() - { - } - [TestMethod] - public void Test_7537() - { - } - [TestMethod] - public void Test_7538() - { - } - [TestMethod] - public void Test_7539() - { - } - [TestMethod] - public void Test_7540() - { - } - [TestMethod] - public void Test_7541() - { - } - [TestMethod] - public void Test_7542() - { - } - [TestMethod] - public void Test_7543() - { - } - [TestMethod] - public void Test_7544() - { - } - [TestMethod] - public void Test_7545() - { - } - [TestMethod] - public void Test_7546() - { - } - [TestMethod] - public void Test_7547() - { - } - [TestMethod] - public void Test_7548() - { - } - [TestMethod] - public void Test_7549() - { - } - [TestMethod] - public void Test_7550() - { - } - [TestMethod] - public void Test_7551() - { - } - [TestMethod] - public void Test_7552() - { - } - [TestMethod] - public void Test_7553() - { - } - [TestMethod] - public void Test_7554() - { - } - [TestMethod] - public void Test_7555() - { - } - [TestMethod] - public void Test_7556() - { - } - [TestMethod] - public void Test_7557() - { - } - [TestMethod] - public void Test_7558() - { - } - [TestMethod] - public void Test_7559() - { - } - [TestMethod] - public void Test_7560() - { - } - [TestMethod] - public void Test_7561() - { - } - [TestMethod] - public void Test_7562() - { - } - [TestMethod] - public void Test_7563() - { - } - [TestMethod] - public void Test_7564() - { - } - [TestMethod] - public void Test_7565() - { - } - [TestMethod] - public void Test_7566() - { - } - [TestMethod] - public void Test_7567() - { - } - [TestMethod] - public void Test_7568() - { - } - [TestMethod] - public void Test_7569() - { - } - [TestMethod] - public void Test_7570() - { - } - [TestMethod] - public void Test_7571() - { - } - [TestMethod] - public void Test_7572() - { - } - [TestMethod] - public void Test_7573() - { - } - [TestMethod] - public void Test_7574() - { - } - [TestMethod] - public void Test_7575() - { - } - [TestMethod] - public void Test_7576() - { - } - [TestMethod] - public void Test_7577() - { - } - [TestMethod] - public void Test_7578() - { - } - [TestMethod] - public void Test_7579() - { - } - [TestMethod] - public void Test_7580() - { - } - [TestMethod] - public void Test_7581() - { - } - [TestMethod] - public void Test_7582() - { - } - [TestMethod] - public void Test_7583() - { - } - [TestMethod] - public void Test_7584() - { - } - [TestMethod] - public void Test_7585() - { - } - [TestMethod] - public void Test_7586() - { - } - [TestMethod] - public void Test_7587() - { - } - [TestMethod] - public void Test_7588() - { - } - [TestMethod] - public void Test_7589() - { - } - [TestMethod] - public void Test_7590() - { - } - [TestMethod] - public void Test_7591() - { - } - [TestMethod] - public void Test_7592() - { - } - [TestMethod] - public void Test_7593() - { - } - [TestMethod] - public void Test_7594() - { - } - [TestMethod] - public void Test_7595() - { - } - [TestMethod] - public void Test_7596() - { - } - [TestMethod] - public void Test_7597() - { - } - [TestMethod] - public void Test_7598() - { - } - [TestMethod] - public void Test_7599() - { - } - [TestMethod] - public void Test_7600() - { - } - [TestMethod] - public void Test_7601() - { - } - [TestMethod] - public void Test_7602() - { - } - [TestMethod] - public void Test_7603() - { - } - [TestMethod] - public void Test_7604() - { - } - [TestMethod] - public void Test_7605() - { - } - [TestMethod] - public void Test_7606() - { - } - [TestMethod] - public void Test_7607() - { - } - [TestMethod] - public void Test_7608() - { - } - [TestMethod] - public void Test_7609() - { - } - [TestMethod] - public void Test_7610() - { - } - [TestMethod] - public void Test_7611() - { - } - [TestMethod] - public void Test_7612() - { - } - [TestMethod] - public void Test_7613() - { - } - [TestMethod] - public void Test_7614() - { - } - [TestMethod] - public void Test_7615() - { - } - [TestMethod] - public void Test_7616() - { - } - [TestMethod] - public void Test_7617() - { - } - [TestMethod] - public void Test_7618() - { - } - [TestMethod] - public void Test_7619() - { - } - [TestMethod] - public void Test_7620() - { - } - [TestMethod] - public void Test_7621() - { - } - [TestMethod] - public void Test_7622() - { - } - [TestMethod] - public void Test_7623() - { - } - [TestMethod] - public void Test_7624() - { - } - [TestMethod] - public void Test_7625() - { - } - [TestMethod] - public void Test_7626() - { - } - [TestMethod] - public void Test_7627() - { - } - [TestMethod] - public void Test_7628() - { - } - [TestMethod] - public void Test_7629() - { - } - [TestMethod] - public void Test_7630() - { - } - [TestMethod] - public void Test_7631() - { - } - [TestMethod] - public void Test_7632() - { - } - [TestMethod] - public void Test_7633() - { - } - [TestMethod] - public void Test_7634() - { - } - [TestMethod] - public void Test_7635() - { - } - [TestMethod] - public void Test_7636() - { - } - [TestMethod] - public void Test_7637() - { - } - [TestMethod] - public void Test_7638() - { - } - [TestMethod] - public void Test_7639() - { - } - [TestMethod] - public void Test_7640() - { - } - [TestMethod] - public void Test_7641() - { - } - [TestMethod] - public void Test_7642() - { - } - [TestMethod] - public void Test_7643() - { - } - [TestMethod] - public void Test_7644() - { - } - [TestMethod] - public void Test_7645() - { - } - [TestMethod] - public void Test_7646() - { - } - [TestMethod] - public void Test_7647() - { - } - [TestMethod] - public void Test_7648() - { - } - [TestMethod] - public void Test_7649() - { - } - [TestMethod] - public void Test_7650() - { - } - [TestMethod] - public void Test_7651() - { - } - [TestMethod] - public void Test_7652() - { - } - [TestMethod] - public void Test_7653() - { - } - [TestMethod] - public void Test_7654() - { - } - [TestMethod] - public void Test_7655() - { - } - [TestMethod] - public void Test_7656() - { - } - [TestMethod] - public void Test_7657() - { - } - [TestMethod] - public void Test_7658() - { - } - [TestMethod] - public void Test_7659() - { - } - [TestMethod] - public void Test_7660() - { - } - [TestMethod] - public void Test_7661() - { - } - [TestMethod] - public void Test_7662() - { - } - [TestMethod] - public void Test_7663() - { - } - [TestMethod] - public void Test_7664() - { - } - [TestMethod] - public void Test_7665() - { - } - [TestMethod] - public void Test_7666() - { - } - [TestMethod] - public void Test_7667() - { - } - [TestMethod] - public void Test_7668() - { - } - [TestMethod] - public void Test_7669() - { - } - [TestMethod] - public void Test_7670() - { - } - [TestMethod] - public void Test_7671() - { - } - [TestMethod] - public void Test_7672() - { - } - [TestMethod] - public void Test_7673() - { - } - [TestMethod] - public void Test_7674() - { - } - [TestMethod] - public void Test_7675() - { - } - [TestMethod] - public void Test_7676() - { - } - [TestMethod] - public void Test_7677() - { - } - [TestMethod] - public void Test_7678() - { - } - [TestMethod] - public void Test_7679() - { - } - [TestMethod] - public void Test_7680() - { - } - [TestMethod] - public void Test_7681() - { - } - [TestMethod] - public void Test_7682() - { - } - [TestMethod] - public void Test_7683() - { - } - [TestMethod] - public void Test_7684() - { - } - [TestMethod] - public void Test_7685() - { - } - [TestMethod] - public void Test_7686() - { - } - [TestMethod] - public void Test_7687() - { - } - [TestMethod] - public void Test_7688() - { - } - [TestMethod] - public void Test_7689() - { - } - [TestMethod] - public void Test_7690() - { - } - [TestMethod] - public void Test_7691() - { - } - [TestMethod] - public void Test_7692() - { - } - [TestMethod] - public void Test_7693() - { - } - [TestMethod] - public void Test_7694() - { - } - [TestMethod] - public void Test_7695() - { - } - [TestMethod] - public void Test_7696() - { - } - [TestMethod] - public void Test_7697() - { - } - [TestMethod] - public void Test_7698() - { - } - [TestMethod] - public void Test_7699() - { - } - [TestMethod] - public void Test_7700() - { - } - [TestMethod] - public void Test_7701() - { - } - [TestMethod] - public void Test_7702() - { - } - [TestMethod] - public void Test_7703() - { - } - [TestMethod] - public void Test_7704() - { - } - [TestMethod] - public void Test_7705() - { - } - [TestMethod] - public void Test_7706() - { - } - [TestMethod] - public void Test_7707() - { - } - [TestMethod] - public void Test_7708() - { - } - [TestMethod] - public void Test_7709() - { - } - [TestMethod] - public void Test_7710() - { - } - [TestMethod] - public void Test_7711() - { - } - [TestMethod] - public void Test_7712() - { - } - [TestMethod] - public void Test_7713() - { - } - [TestMethod] - public void Test_7714() - { - } - [TestMethod] - public void Test_7715() - { - } - [TestMethod] - public void Test_7716() - { - } - [TestMethod] - public void Test_7717() - { - } - [TestMethod] - public void Test_7718() - { - } - [TestMethod] - public void Test_7719() - { - } - [TestMethod] - public void Test_7720() - { - } - [TestMethod] - public void Test_7721() - { - } - [TestMethod] - public void Test_7722() - { - } - [TestMethod] - public void Test_7723() - { - } - [TestMethod] - public void Test_7724() - { - } - [TestMethod] - public void Test_7725() - { - } - [TestMethod] - public void Test_7726() - { - } - [TestMethod] - public void Test_7727() - { - } - [TestMethod] - public void Test_7728() - { - } - [TestMethod] - public void Test_7729() - { - } - [TestMethod] - public void Test_7730() - { - } - [TestMethod] - public void Test_7731() - { - } - [TestMethod] - public void Test_7732() - { - } - [TestMethod] - public void Test_7733() - { - } - [TestMethod] - public void Test_7734() - { - } - [TestMethod] - public void Test_7735() - { - } - [TestMethod] - public void Test_7736() - { - } - [TestMethod] - public void Test_7737() - { - } - [TestMethod] - public void Test_7738() - { - } - [TestMethod] - public void Test_7739() - { - } - [TestMethod] - public void Test_7740() - { - } - [TestMethod] - public void Test_7741() - { - } - [TestMethod] - public void Test_7742() - { - } - [TestMethod] - public void Test_7743() - { - } - [TestMethod] - public void Test_7744() - { - } - [TestMethod] - public void Test_7745() - { - } - [TestMethod] - public void Test_7746() - { - } - [TestMethod] - public void Test_7747() - { - } - [TestMethod] - public void Test_7748() - { - } - [TestMethod] - public void Test_7749() - { - } - [TestMethod] - public void Test_7750() - { - } - [TestMethod] - public void Test_7751() - { - } - [TestMethod] - public void Test_7752() - { - } - [TestMethod] - public void Test_7753() - { - } - [TestMethod] - public void Test_7754() - { - } - [TestMethod] - public void Test_7755() - { - } - [TestMethod] - public void Test_7756() - { - } - [TestMethod] - public void Test_7757() - { - } - [TestMethod] - public void Test_7758() - { - } - [TestMethod] - public void Test_7759() - { - } - [TestMethod] - public void Test_7760() - { - } - [TestMethod] - public void Test_7761() - { - } - [TestMethod] - public void Test_7762() - { - } - [TestMethod] - public void Test_7763() - { - } - [TestMethod] - public void Test_7764() - { - } - [TestMethod] - public void Test_7765() - { - } - [TestMethod] - public void Test_7766() - { - } - [TestMethod] - public void Test_7767() - { - } - [TestMethod] - public void Test_7768() - { - } - [TestMethod] - public void Test_7769() - { - } - [TestMethod] - public void Test_7770() - { - } - [TestMethod] - public void Test_7771() - { - } - [TestMethod] - public void Test_7772() - { - } - [TestMethod] - public void Test_7773() - { - } - [TestMethod] - public void Test_7774() - { - } - [TestMethod] - public void Test_7775() - { - } - [TestMethod] - public void Test_7776() - { - } - [TestMethod] - public void Test_7777() - { - } - [TestMethod] - public void Test_7778() - { - } - [TestMethod] - public void Test_7779() - { - } - [TestMethod] - public void Test_7780() - { - } - [TestMethod] - public void Test_7781() - { - } - [TestMethod] - public void Test_7782() - { - } - [TestMethod] - public void Test_7783() - { - } - [TestMethod] - public void Test_7784() - { - } - [TestMethod] - public void Test_7785() - { - } - [TestMethod] - public void Test_7786() - { - } - [TestMethod] - public void Test_7787() - { - } - [TestMethod] - public void Test_7788() - { - } - [TestMethod] - public void Test_7789() - { - } - [TestMethod] - public void Test_7790() - { - } - [TestMethod] - public void Test_7791() - { - } - [TestMethod] - public void Test_7792() - { - } - [TestMethod] - public void Test_7793() - { - } - [TestMethod] - public void Test_7794() - { - } - [TestMethod] - public void Test_7795() - { - } - [TestMethod] - public void Test_7796() - { - } - [TestMethod] - public void Test_7797() - { - } - [TestMethod] - public void Test_7798() - { - } - [TestMethod] - public void Test_7799() - { - } - [TestMethod] - public void Test_7800() - { - } - [TestMethod] - public void Test_7801() - { - } - [TestMethod] - public void Test_7802() - { - } - [TestMethod] - public void Test_7803() - { - } - [TestMethod] - public void Test_7804() - { - } - [TestMethod] - public void Test_7805() - { - } - [TestMethod] - public void Test_7806() - { - } - [TestMethod] - public void Test_7807() - { - } - [TestMethod] - public void Test_7808() - { - } - [TestMethod] - public void Test_7809() - { - } - [TestMethod] - public void Test_7810() - { - } - [TestMethod] - public void Test_7811() - { - } - [TestMethod] - public void Test_7812() - { - } - [TestMethod] - public void Test_7813() - { - } - [TestMethod] - public void Test_7814() - { - } - [TestMethod] - public void Test_7815() - { - } - [TestMethod] - public void Test_7816() - { - } - [TestMethod] - public void Test_7817() - { - } - [TestMethod] - public void Test_7818() - { - } - [TestMethod] - public void Test_7819() - { - } - [TestMethod] - public void Test_7820() - { - } - [TestMethod] - public void Test_7821() - { - } - [TestMethod] - public void Test_7822() - { - } - [TestMethod] - public void Test_7823() - { - } - [TestMethod] - public void Test_7824() - { - } - [TestMethod] - public void Test_7825() - { - } - [TestMethod] - public void Test_7826() - { - } - [TestMethod] - public void Test_7827() - { - } - [TestMethod] - public void Test_7828() - { - } - [TestMethod] - public void Test_7829() - { - } - [TestMethod] - public void Test_7830() - { - } - [TestMethod] - public void Test_7831() - { - } - [TestMethod] - public void Test_7832() - { - } - [TestMethod] - public void Test_7833() - { - } - [TestMethod] - public void Test_7834() - { - } - [TestMethod] - public void Test_7835() - { - } - [TestMethod] - public void Test_7836() - { - } - [TestMethod] - public void Test_7837() - { - } - [TestMethod] - public void Test_7838() - { - } - [TestMethod] - public void Test_7839() - { - } - [TestMethod] - public void Test_7840() - { - } - [TestMethod] - public void Test_7841() - { - } - [TestMethod] - public void Test_7842() - { - } - [TestMethod] - public void Test_7843() - { - } - [TestMethod] - public void Test_7844() - { - } - [TestMethod] - public void Test_7845() - { - } - [TestMethod] - public void Test_7846() - { - } - [TestMethod] - public void Test_7847() - { - } - [TestMethod] - public void Test_7848() - { - } - [TestMethod] - public void Test_7849() - { - } - [TestMethod] - public void Test_7850() - { - } - [TestMethod] - public void Test_7851() - { - } - [TestMethod] - public void Test_7852() - { - } - [TestMethod] - public void Test_7853() - { - } - [TestMethod] - public void Test_7854() - { - } - [TestMethod] - public void Test_7855() - { - } - [TestMethod] - public void Test_7856() - { - } - [TestMethod] - public void Test_7857() - { - } - [TestMethod] - public void Test_7858() - { - } - [TestMethod] - public void Test_7859() - { - } - [TestMethod] - public void Test_7860() - { - } - [TestMethod] - public void Test_7861() - { - } - [TestMethod] - public void Test_7862() - { - } - [TestMethod] - public void Test_7863() - { - } - [TestMethod] - public void Test_7864() - { - } - [TestMethod] - public void Test_7865() - { - } - [TestMethod] - public void Test_7866() - { - } - [TestMethod] - public void Test_7867() - { - } - [TestMethod] - public void Test_7868() - { - } - [TestMethod] - public void Test_7869() - { - } - [TestMethod] - public void Test_7870() - { - } - [TestMethod] - public void Test_7871() - { - } - [TestMethod] - public void Test_7872() - { - } - [TestMethod] - public void Test_7873() - { - } - [TestMethod] - public void Test_7874() - { - } - [TestMethod] - public void Test_7875() - { - } - [TestMethod] - public void Test_7876() - { - } - [TestMethod] - public void Test_7877() - { - } - [TestMethod] - public void Test_7878() - { - } - [TestMethod] - public void Test_7879() - { - } - [TestMethod] - public void Test_7880() - { - } - [TestMethod] - public void Test_7881() - { - } - [TestMethod] - public void Test_7882() - { - } - [TestMethod] - public void Test_7883() - { - } - [TestMethod] - public void Test_7884() - { - } - [TestMethod] - public void Test_7885() - { - } - [TestMethod] - public void Test_7886() - { - } - [TestMethod] - public void Test_7887() - { - } - [TestMethod] - public void Test_7888() - { - } - [TestMethod] - public void Test_7889() - { - } - [TestMethod] - public void Test_7890() - { - } - [TestMethod] - public void Test_7891() - { - } - [TestMethod] - public void Test_7892() - { - } - [TestMethod] - public void Test_7893() - { - } - [TestMethod] - public void Test_7894() - { - } - [TestMethod] - public void Test_7895() - { - } - [TestMethod] - public void Test_7896() - { - } - [TestMethod] - public void Test_7897() - { - } - [TestMethod] - public void Test_7898() - { - } - [TestMethod] - public void Test_7899() - { - } - [TestMethod] - public void Test_7900() - { - } - [TestMethod] - public void Test_7901() - { - } - [TestMethod] - public void Test_7902() - { - } - [TestMethod] - public void Test_7903() - { - } - [TestMethod] - public void Test_7904() - { - } - [TestMethod] - public void Test_7905() - { - } - [TestMethod] - public void Test_7906() - { - } - [TestMethod] - public void Test_7907() - { - } - [TestMethod] - public void Test_7908() - { - } - [TestMethod] - public void Test_7909() - { - } - [TestMethod] - public void Test_7910() - { - } - [TestMethod] - public void Test_7911() - { - } - [TestMethod] - public void Test_7912() - { - } - [TestMethod] - public void Test_7913() - { - } - [TestMethod] - public void Test_7914() - { - } - [TestMethod] - public void Test_7915() - { - } - [TestMethod] - public void Test_7916() - { - } - [TestMethod] - public void Test_7917() - { - } - [TestMethod] - public void Test_7918() - { - } - [TestMethod] - public void Test_7919() - { - } - [TestMethod] - public void Test_7920() - { - } - [TestMethod] - public void Test_7921() - { - } - [TestMethod] - public void Test_7922() - { - } - [TestMethod] - public void Test_7923() - { - } - [TestMethod] - public void Test_7924() - { - } - [TestMethod] - public void Test_7925() - { - } - [TestMethod] - public void Test_7926() - { - } - [TestMethod] - public void Test_7927() - { - } - [TestMethod] - public void Test_7928() - { - } - [TestMethod] - public void Test_7929() - { - } - [TestMethod] - public void Test_7930() - { - } - [TestMethod] - public void Test_7931() - { - } - [TestMethod] - public void Test_7932() - { - } - [TestMethod] - public void Test_7933() - { - } - [TestMethod] - public void Test_7934() - { - } - [TestMethod] - public void Test_7935() - { - } - [TestMethod] - public void Test_7936() - { - } - [TestMethod] - public void Test_7937() - { - } - [TestMethod] - public void Test_7938() - { - } - [TestMethod] - public void Test_7939() - { - } - [TestMethod] - public void Test_7940() - { - } - [TestMethod] - public void Test_7941() - { - } - [TestMethod] - public void Test_7942() - { - } - [TestMethod] - public void Test_7943() - { - } - [TestMethod] - public void Test_7944() - { - } - [TestMethod] - public void Test_7945() - { - } - [TestMethod] - public void Test_7946() - { - } - [TestMethod] - public void Test_7947() - { - } - [TestMethod] - public void Test_7948() - { - } - [TestMethod] - public void Test_7949() - { - } - [TestMethod] - public void Test_7950() - { - } - [TestMethod] - public void Test_7951() - { - } - [TestMethod] - public void Test_7952() - { - } - [TestMethod] - public void Test_7953() - { - } - [TestMethod] - public void Test_7954() - { - } - [TestMethod] - public void Test_7955() - { - } - [TestMethod] - public void Test_7956() - { - } - [TestMethod] - public void Test_7957() - { - } - [TestMethod] - public void Test_7958() - { - } - [TestMethod] - public void Test_7959() - { - } - [TestMethod] - public void Test_7960() - { - } - [TestMethod] - public void Test_7961() - { - } - [TestMethod] - public void Test_7962() - { - } - [TestMethod] - public void Test_7963() - { - } - [TestMethod] - public void Test_7964() - { - } - [TestMethod] - public void Test_7965() - { - } - [TestMethod] - public void Test_7966() - { - } - [TestMethod] - public void Test_7967() - { - } - [TestMethod] - public void Test_7968() - { - } - [TestMethod] - public void Test_7969() - { - } - [TestMethod] - public void Test_7970() - { - } - [TestMethod] - public void Test_7971() - { - } - [TestMethod] - public void Test_7972() - { - } - [TestMethod] - public void Test_7973() - { - } - [TestMethod] - public void Test_7974() - { - } - [TestMethod] - public void Test_7975() - { - } - [TestMethod] - public void Test_7976() - { - } - [TestMethod] - public void Test_7977() - { - } - [TestMethod] - public void Test_7978() - { - } - [TestMethod] - public void Test_7979() - { - } - [TestMethod] - public void Test_7980() - { - } - [TestMethod] - public void Test_7981() - { - } - [TestMethod] - public void Test_7982() - { - } - [TestMethod] - public void Test_7983() - { - } - [TestMethod] - public void Test_7984() - { - } - [TestMethod] - public void Test_7985() - { - } - [TestMethod] - public void Test_7986() - { - } - [TestMethod] - public void Test_7987() - { - } - [TestMethod] - public void Test_7988() - { - } - [TestMethod] - public void Test_7989() - { - } - [TestMethod] - public void Test_7990() - { - } - [TestMethod] - public void Test_7991() - { - } - [TestMethod] - public void Test_7992() - { - } - [TestMethod] - public void Test_7993() - { - } - [TestMethod] - public void Test_7994() - { - } - [TestMethod] - public void Test_7995() - { - } - [TestMethod] - public void Test_7996() - { - } - [TestMethod] - public void Test_7997() - { - } - [TestMethod] - public void Test_7998() - { - } - [TestMethod] - public void Test_7999() - { - } - [TestMethod] - public void Test_8000() - { - } - [TestMethod] - public void Test_8001() - { - } - [TestMethod] - public void Test_8002() - { - } - [TestMethod] - public void Test_8003() - { - } - [TestMethod] - public void Test_8004() - { - } - [TestMethod] - public void Test_8005() - { - } - [TestMethod] - public void Test_8006() - { - } - [TestMethod] - public void Test_8007() - { - } - [TestMethod] - public void Test_8008() - { - } - [TestMethod] - public void Test_8009() - { - } - [TestMethod] - public void Test_8010() - { - } - [TestMethod] - public void Test_8011() - { - } - [TestMethod] - public void Test_8012() - { - } - [TestMethod] - public void Test_8013() - { - } - [TestMethod] - public void Test_8014() - { - } - [TestMethod] - public void Test_8015() - { - } - [TestMethod] - public void Test_8016() - { - } - [TestMethod] - public void Test_8017() - { - } - [TestMethod] - public void Test_8018() - { - } - [TestMethod] - public void Test_8019() - { - } - [TestMethod] - public void Test_8020() - { - } - [TestMethod] - public void Test_8021() - { - } - [TestMethod] - public void Test_8022() - { - } - [TestMethod] - public void Test_8023() - { - } - [TestMethod] - public void Test_8024() - { - } - [TestMethod] - public void Test_8025() - { - } - [TestMethod] - public void Test_8026() - { - } - [TestMethod] - public void Test_8027() - { - } - [TestMethod] - public void Test_8028() - { - } - [TestMethod] - public void Test_8029() - { - } - [TestMethod] - public void Test_8030() - { - } - [TestMethod] - public void Test_8031() - { - } - [TestMethod] - public void Test_8032() - { - } - [TestMethod] - public void Test_8033() - { - } - [TestMethod] - public void Test_8034() - { - } - [TestMethod] - public void Test_8035() - { - } - [TestMethod] - public void Test_8036() - { - } - [TestMethod] - public void Test_8037() - { - } - [TestMethod] - public void Test_8038() - { - } - [TestMethod] - public void Test_8039() - { - } - [TestMethod] - public void Test_8040() - { - } - [TestMethod] - public void Test_8041() - { - } - [TestMethod] - public void Test_8042() - { - } - [TestMethod] - public void Test_8043() - { - } - [TestMethod] - public void Test_8044() - { - } - [TestMethod] - public void Test_8045() - { - } - [TestMethod] - public void Test_8046() - { - } - [TestMethod] - public void Test_8047() - { - } - [TestMethod] - public void Test_8048() - { - } - [TestMethod] - public void Test_8049() - { - } - [TestMethod] - public void Test_8050() - { - } - [TestMethod] - public void Test_8051() - { - } - [TestMethod] - public void Test_8052() - { - } - [TestMethod] - public void Test_8053() - { - } - [TestMethod] - public void Test_8054() - { - } - [TestMethod] - public void Test_8055() - { - } - [TestMethod] - public void Test_8056() - { - } - [TestMethod] - public void Test_8057() - { - } - [TestMethod] - public void Test_8058() - { - } - [TestMethod] - public void Test_8059() - { - } - [TestMethod] - public void Test_8060() - { - } - [TestMethod] - public void Test_8061() - { - } - [TestMethod] - public void Test_8062() - { - } - [TestMethod] - public void Test_8063() - { - } - [TestMethod] - public void Test_8064() - { - } - [TestMethod] - public void Test_8065() - { - } - [TestMethod] - public void Test_8066() - { - } - [TestMethod] - public void Test_8067() - { - } - [TestMethod] - public void Test_8068() - { - } - [TestMethod] - public void Test_8069() - { - } - [TestMethod] - public void Test_8070() - { - } - [TestMethod] - public void Test_8071() - { - } - [TestMethod] - public void Test_8072() - { - } - [TestMethod] - public void Test_8073() - { - } - [TestMethod] - public void Test_8074() - { - } - [TestMethod] - public void Test_8075() - { - } - [TestMethod] - public void Test_8076() - { - } - [TestMethod] - public void Test_8077() - { - } - [TestMethod] - public void Test_8078() - { - } - [TestMethod] - public void Test_8079() - { - } - [TestMethod] - public void Test_8080() - { - } - [TestMethod] - public void Test_8081() - { - } - [TestMethod] - public void Test_8082() - { - } - [TestMethod] - public void Test_8083() - { - } - [TestMethod] - public void Test_8084() - { - } - [TestMethod] - public void Test_8085() - { - } - [TestMethod] - public void Test_8086() - { - } - [TestMethod] - public void Test_8087() - { - } - [TestMethod] - public void Test_8088() - { - } - [TestMethod] - public void Test_8089() - { - } - [TestMethod] - public void Test_8090() - { - } - [TestMethod] - public void Test_8091() - { - } - [TestMethod] - public void Test_8092() - { - } - [TestMethod] - public void Test_8093() - { - } - [TestMethod] - public void Test_8094() - { - } - [TestMethod] - public void Test_8095() - { - } - [TestMethod] - public void Test_8096() - { - } - [TestMethod] - public void Test_8097() - { - } - [TestMethod] - public void Test_8098() - { - } - [TestMethod] - public void Test_8099() - { - } - [TestMethod] - public void Test_8100() - { - } - [TestMethod] - public void Test_8101() - { - } - [TestMethod] - public void Test_8102() - { - } - [TestMethod] - public void Test_8103() - { - } - [TestMethod] - public void Test_8104() - { - } - [TestMethod] - public void Test_8105() - { - } - [TestMethod] - public void Test_8106() - { - } - [TestMethod] - public void Test_8107() - { - } - [TestMethod] - public void Test_8108() - { - } - [TestMethod] - public void Test_8109() - { - } - [TestMethod] - public void Test_8110() - { - } - [TestMethod] - public void Test_8111() - { - } - [TestMethod] - public void Test_8112() - { - } - [TestMethod] - public void Test_8113() - { - } - [TestMethod] - public void Test_8114() - { - } - [TestMethod] - public void Test_8115() - { - } - [TestMethod] - public void Test_8116() - { - } - [TestMethod] - public void Test_8117() - { - } - [TestMethod] - public void Test_8118() - { - } - [TestMethod] - public void Test_8119() - { - } - [TestMethod] - public void Test_8120() - { - } - [TestMethod] - public void Test_8121() - { - } - [TestMethod] - public void Test_8122() - { - } - [TestMethod] - public void Test_8123() - { - } - [TestMethod] - public void Test_8124() - { - } - [TestMethod] - public void Test_8125() - { - } - [TestMethod] - public void Test_8126() - { - } - [TestMethod] - public void Test_8127() - { - } - [TestMethod] - public void Test_8128() - { - } - [TestMethod] - public void Test_8129() - { - } - [TestMethod] - public void Test_8130() - { - } - [TestMethod] - public void Test_8131() - { - } - [TestMethod] - public void Test_8132() - { - } - [TestMethod] - public void Test_8133() - { - } - [TestMethod] - public void Test_8134() - { - } - [TestMethod] - public void Test_8135() - { - } - [TestMethod] - public void Test_8136() - { - } - [TestMethod] - public void Test_8137() - { - } - [TestMethod] - public void Test_8138() - { - } - [TestMethod] - public void Test_8139() - { - } - [TestMethod] - public void Test_8140() - { - } - [TestMethod] - public void Test_8141() - { - } - [TestMethod] - public void Test_8142() - { - } - [TestMethod] - public void Test_8143() - { - } - [TestMethod] - public void Test_8144() - { - } - [TestMethod] - public void Test_8145() - { - } - [TestMethod] - public void Test_8146() - { - } - [TestMethod] - public void Test_8147() - { - } - [TestMethod] - public void Test_8148() - { - } - [TestMethod] - public void Test_8149() - { - } - [TestMethod] - public void Test_8150() - { - } - [TestMethod] - public void Test_8151() - { - } - [TestMethod] - public void Test_8152() - { - } - [TestMethod] - public void Test_8153() - { - } - [TestMethod] - public void Test_8154() - { - } - [TestMethod] - public void Test_8155() - { - } - [TestMethod] - public void Test_8156() - { - } - [TestMethod] - public void Test_8157() - { - } - [TestMethod] - public void Test_8158() - { - } - [TestMethod] - public void Test_8159() - { - } - [TestMethod] - public void Test_8160() - { - } - [TestMethod] - public void Test_8161() - { - } - [TestMethod] - public void Test_8162() - { - } - [TestMethod] - public void Test_8163() - { - } - [TestMethod] - public void Test_8164() - { - } - [TestMethod] - public void Test_8165() - { - } - [TestMethod] - public void Test_8166() - { - } - [TestMethod] - public void Test_8167() - { - } - [TestMethod] - public void Test_8168() - { - } - [TestMethod] - public void Test_8169() - { - } - [TestMethod] - public void Test_8170() - { - } - [TestMethod] - public void Test_8171() - { - } - [TestMethod] - public void Test_8172() - { - } - [TestMethod] - public void Test_8173() - { - } - [TestMethod] - public void Test_8174() - { - } - [TestMethod] - public void Test_8175() - { - } - [TestMethod] - public void Test_8176() - { - } - [TestMethod] - public void Test_8177() - { - } - [TestMethod] - public void Test_8178() - { - } - [TestMethod] - public void Test_8179() - { - } - [TestMethod] - public void Test_8180() - { - } - [TestMethod] - public void Test_8181() - { - } - [TestMethod] - public void Test_8182() - { - } - [TestMethod] - public void Test_8183() - { - } - [TestMethod] - public void Test_8184() - { - } - [TestMethod] - public void Test_8185() - { - } - [TestMethod] - public void Test_8186() - { - } - [TestMethod] - public void Test_8187() - { - } - [TestMethod] - public void Test_8188() - { - } - [TestMethod] - public void Test_8189() - { - } - [TestMethod] - public void Test_8190() - { - } - [TestMethod] - public void Test_8191() - { - } - [TestMethod] - public void Test_8192() - { - } - [TestMethod] - public void Test_8193() - { - } - [TestMethod] - public void Test_8194() - { - } - [TestMethod] - public void Test_8195() - { - } - [TestMethod] - public void Test_8196() - { - } - [TestMethod] - public void Test_8197() - { - } - [TestMethod] - public void Test_8198() - { - } - [TestMethod] - public void Test_8199() - { - } - [TestMethod] - public void Test_8200() - { - } - [TestMethod] - public void Test_8201() - { - } - [TestMethod] - public void Test_8202() - { - } - [TestMethod] - public void Test_8203() - { - } - [TestMethod] - public void Test_8204() - { - } - [TestMethod] - public void Test_8205() - { - } - [TestMethod] - public void Test_8206() - { - } - [TestMethod] - public void Test_8207() - { - } - [TestMethod] - public void Test_8208() - { - } - [TestMethod] - public void Test_8209() - { - } - [TestMethod] - public void Test_8210() - { - } - [TestMethod] - public void Test_8211() - { - } - [TestMethod] - public void Test_8212() - { - } - [TestMethod] - public void Test_8213() - { - } - [TestMethod] - public void Test_8214() - { - } - [TestMethod] - public void Test_8215() - { - } - [TestMethod] - public void Test_8216() - { - } - [TestMethod] - public void Test_8217() - { - } - [TestMethod] - public void Test_8218() - { - } - [TestMethod] - public void Test_8219() - { - } - [TestMethod] - public void Test_8220() - { - } - [TestMethod] - public void Test_8221() - { - } - [TestMethod] - public void Test_8222() - { - } - [TestMethod] - public void Test_8223() - { - } - [TestMethod] - public void Test_8224() - { - } - [TestMethod] - public void Test_8225() - { - } - [TestMethod] - public void Test_8226() - { - } - [TestMethod] - public void Test_8227() - { - } - [TestMethod] - public void Test_8228() - { - } - [TestMethod] - public void Test_8229() - { - } - [TestMethod] - public void Test_8230() - { - } - [TestMethod] - public void Test_8231() - { - } - [TestMethod] - public void Test_8232() - { - } - [TestMethod] - public void Test_8233() - { - } - [TestMethod] - public void Test_8234() - { - } - [TestMethod] - public void Test_8235() - { - } - [TestMethod] - public void Test_8236() - { - } - [TestMethod] - public void Test_8237() - { - } - [TestMethod] - public void Test_8238() - { - } - [TestMethod] - public void Test_8239() - { - } - [TestMethod] - public void Test_8240() - { - } - [TestMethod] - public void Test_8241() - { - } - [TestMethod] - public void Test_8242() - { - } - [TestMethod] - public void Test_8243() - { - } - [TestMethod] - public void Test_8244() - { - } - [TestMethod] - public void Test_8245() - { - } - [TestMethod] - public void Test_8246() - { - } - [TestMethod] - public void Test_8247() - { - } - [TestMethod] - public void Test_8248() - { - } - [TestMethod] - public void Test_8249() - { - } - [TestMethod] - public void Test_8250() - { - } - [TestMethod] - public void Test_8251() - { - } - [TestMethod] - public void Test_8252() - { - } - [TestMethod] - public void Test_8253() - { - } - [TestMethod] - public void Test_8254() - { - } - [TestMethod] - public void Test_8255() - { - } - [TestMethod] - public void Test_8256() - { - } - [TestMethod] - public void Test_8257() - { - } - [TestMethod] - public void Test_8258() - { - } - [TestMethod] - public void Test_8259() - { - } - [TestMethod] - public void Test_8260() - { - } - [TestMethod] - public void Test_8261() - { - } - [TestMethod] - public void Test_8262() - { - } - [TestMethod] - public void Test_8263() - { - } - [TestMethod] - public void Test_8264() - { - } - [TestMethod] - public void Test_8265() - { - } - [TestMethod] - public void Test_8266() - { - } - [TestMethod] - public void Test_8267() - { - } - [TestMethod] - public void Test_8268() - { - } - [TestMethod] - public void Test_8269() - { - } - [TestMethod] - public void Test_8270() - { - } - [TestMethod] - public void Test_8271() - { - } - [TestMethod] - public void Test_8272() - { - } - [TestMethod] - public void Test_8273() - { - } - [TestMethod] - public void Test_8274() - { - } - [TestMethod] - public void Test_8275() - { - } - [TestMethod] - public void Test_8276() - { - } - [TestMethod] - public void Test_8277() - { - } - [TestMethod] - public void Test_8278() - { - } - [TestMethod] - public void Test_8279() - { - } - [TestMethod] - public void Test_8280() - { - } - [TestMethod] - public void Test_8281() - { - } - [TestMethod] - public void Test_8282() - { - } - [TestMethod] - public void Test_8283() - { - } - [TestMethod] - public void Test_8284() - { - } - [TestMethod] - public void Test_8285() - { - } - [TestMethod] - public void Test_8286() - { - } - [TestMethod] - public void Test_8287() - { - } - [TestMethod] - public void Test_8288() - { - } - [TestMethod] - public void Test_8289() - { - } - [TestMethod] - public void Test_8290() - { - } - [TestMethod] - public void Test_8291() - { - } - [TestMethod] - public void Test_8292() - { - } - [TestMethod] - public void Test_8293() - { - } - [TestMethod] - public void Test_8294() - { - } - [TestMethod] - public void Test_8295() - { - } - [TestMethod] - public void Test_8296() - { - } - [TestMethod] - public void Test_8297() - { - } - [TestMethod] - public void Test_8298() - { - } - [TestMethod] - public void Test_8299() - { - } - [TestMethod] - public void Test_8300() - { - } - [TestMethod] - public void Test_8301() - { - } - [TestMethod] - public void Test_8302() - { - } - [TestMethod] - public void Test_8303() - { - } - [TestMethod] - public void Test_8304() - { - } - [TestMethod] - public void Test_8305() - { - } - [TestMethod] - public void Test_8306() - { - } - [TestMethod] - public void Test_8307() - { - } - [TestMethod] - public void Test_8308() - { - } - [TestMethod] - public void Test_8309() - { - } - [TestMethod] - public void Test_8310() - { - } - [TestMethod] - public void Test_8311() - { - } - [TestMethod] - public void Test_8312() - { - } - [TestMethod] - public void Test_8313() - { - } - [TestMethod] - public void Test_8314() - { - } - [TestMethod] - public void Test_8315() - { - } - [TestMethod] - public void Test_8316() - { - } - [TestMethod] - public void Test_8317() - { - } - [TestMethod] - public void Test_8318() - { - } - [TestMethod] - public void Test_8319() - { - } - [TestMethod] - public void Test_8320() - { - } - [TestMethod] - public void Test_8321() - { - } - [TestMethod] - public void Test_8322() - { - } - [TestMethod] - public void Test_8323() - { - } - [TestMethod] - public void Test_8324() - { - } - [TestMethod] - public void Test_8325() - { - } - [TestMethod] - public void Test_8326() - { - } - [TestMethod] - public void Test_8327() - { - } - [TestMethod] - public void Test_8328() - { - } - [TestMethod] - public void Test_8329() - { - } - [TestMethod] - public void Test_8330() - { - } - [TestMethod] - public void Test_8331() - { - } - [TestMethod] - public void Test_8332() - { - } - [TestMethod] - public void Test_8333() - { - } - [TestMethod] - public void Test_8334() - { - } - [TestMethod] - public void Test_8335() - { - } - [TestMethod] - public void Test_8336() - { - } - [TestMethod] - public void Test_8337() - { - } - [TestMethod] - public void Test_8338() - { - } - [TestMethod] - public void Test_8339() - { - } - [TestMethod] - public void Test_8340() - { - } - [TestMethod] - public void Test_8341() - { - } - [TestMethod] - public void Test_8342() - { - } - [TestMethod] - public void Test_8343() - { - } - [TestMethod] - public void Test_8344() - { - } - [TestMethod] - public void Test_8345() - { - } - [TestMethod] - public void Test_8346() - { - } - [TestMethod] - public void Test_8347() - { - } - [TestMethod] - public void Test_8348() - { - } - [TestMethod] - public void Test_8349() - { - } - [TestMethod] - public void Test_8350() - { - } - [TestMethod] - public void Test_8351() - { - } - [TestMethod] - public void Test_8352() - { - } - [TestMethod] - public void Test_8353() - { - } - [TestMethod] - public void Test_8354() - { - } - [TestMethod] - public void Test_8355() - { - } - [TestMethod] - public void Test_8356() - { - } - [TestMethod] - public void Test_8357() - { - } - [TestMethod] - public void Test_8358() - { - } - [TestMethod] - public void Test_8359() - { - } - [TestMethod] - public void Test_8360() - { - } - [TestMethod] - public void Test_8361() - { - } - [TestMethod] - public void Test_8362() - { - } - [TestMethod] - public void Test_8363() - { - } - [TestMethod] - public void Test_8364() - { - } - [TestMethod] - public void Test_8365() - { - } - [TestMethod] - public void Test_8366() - { - } - [TestMethod] - public void Test_8367() - { - } - [TestMethod] - public void Test_8368() - { - } - [TestMethod] - public void Test_8369() - { - } - [TestMethod] - public void Test_8370() - { - } - [TestMethod] - public void Test_8371() - { - } - [TestMethod] - public void Test_8372() - { - } - [TestMethod] - public void Test_8373() - { - } - [TestMethod] - public void Test_8374() - { - } - [TestMethod] - public void Test_8375() - { - } - [TestMethod] - public void Test_8376() - { - } - [TestMethod] - public void Test_8377() - { - } - [TestMethod] - public void Test_8378() - { - } - [TestMethod] - public void Test_8379() - { - } - [TestMethod] - public void Test_8380() - { - } - [TestMethod] - public void Test_8381() - { - } - [TestMethod] - public void Test_8382() - { - } - [TestMethod] - public void Test_8383() - { - } - [TestMethod] - public void Test_8384() - { - } - [TestMethod] - public void Test_8385() - { - } - [TestMethod] - public void Test_8386() - { - } - [TestMethod] - public void Test_8387() - { - } - [TestMethod] - public void Test_8388() - { - } - [TestMethod] - public void Test_8389() - { - } - [TestMethod] - public void Test_8390() - { - } - [TestMethod] - public void Test_8391() - { - } - [TestMethod] - public void Test_8392() - { - } - [TestMethod] - public void Test_8393() - { - } - [TestMethod] - public void Test_8394() - { - } - [TestMethod] - public void Test_8395() - { - } - [TestMethod] - public void Test_8396() - { - } - [TestMethod] - public void Test_8397() - { - } - [TestMethod] - public void Test_8398() - { - } - [TestMethod] - public void Test_8399() - { - } - [TestMethod] - public void Test_8400() - { - } - [TestMethod] - public void Test_8401() - { - } - [TestMethod] - public void Test_8402() - { - } - [TestMethod] - public void Test_8403() - { - } - [TestMethod] - public void Test_8404() - { - } - [TestMethod] - public void Test_8405() - { - } - [TestMethod] - public void Test_8406() - { - } - [TestMethod] - public void Test_8407() - { - } - [TestMethod] - public void Test_8408() - { - } - [TestMethod] - public void Test_8409() - { - } - [TestMethod] - public void Test_8410() - { - } - [TestMethod] - public void Test_8411() - { - } - [TestMethod] - public void Test_8412() - { - } - [TestMethod] - public void Test_8413() - { - } - [TestMethod] - public void Test_8414() - { - } - [TestMethod] - public void Test_8415() - { - } - [TestMethod] - public void Test_8416() - { - } - [TestMethod] - public void Test_8417() - { - } - [TestMethod] - public void Test_8418() - { - } - [TestMethod] - public void Test_8419() - { - } - [TestMethod] - public void Test_8420() - { - } - [TestMethod] - public void Test_8421() - { - } - [TestMethod] - public void Test_8422() - { - } - [TestMethod] - public void Test_8423() - { - } - [TestMethod] - public void Test_8424() - { - } - [TestMethod] - public void Test_8425() - { - } - [TestMethod] - public void Test_8426() - { - } - [TestMethod] - public void Test_8427() - { - } - [TestMethod] - public void Test_8428() - { - } - [TestMethod] - public void Test_8429() - { - } - [TestMethod] - public void Test_8430() - { - } - [TestMethod] - public void Test_8431() - { - } - [TestMethod] - public void Test_8432() - { - } - [TestMethod] - public void Test_8433() - { - } - [TestMethod] - public void Test_8434() - { - } - [TestMethod] - public void Test_8435() - { - } - [TestMethod] - public void Test_8436() - { - } - [TestMethod] - public void Test_8437() - { - } - [TestMethod] - public void Test_8438() - { - } - [TestMethod] - public void Test_8439() - { - } - [TestMethod] - public void Test_8440() - { - } - [TestMethod] - public void Test_8441() - { - } - [TestMethod] - public void Test_8442() - { - } - [TestMethod] - public void Test_8443() - { - } - [TestMethod] - public void Test_8444() - { - } - [TestMethod] - public void Test_8445() - { - } - [TestMethod] - public void Test_8446() - { - } - [TestMethod] - public void Test_8447() - { - } - [TestMethod] - public void Test_8448() - { - } - [TestMethod] - public void Test_8449() - { - } - [TestMethod] - public void Test_8450() - { - } - [TestMethod] - public void Test_8451() - { - } - [TestMethod] - public void Test_8452() - { - } - [TestMethod] - public void Test_8453() - { - } - [TestMethod] - public void Test_8454() - { - } - [TestMethod] - public void Test_8455() - { - } - [TestMethod] - public void Test_8456() - { - } - [TestMethod] - public void Test_8457() - { - } - [TestMethod] - public void Test_8458() - { - } - [TestMethod] - public void Test_8459() - { - } - [TestMethod] - public void Test_8460() - { - } - [TestMethod] - public void Test_8461() - { - } - [TestMethod] - public void Test_8462() - { - } - [TestMethod] - public void Test_8463() - { - } - [TestMethod] - public void Test_8464() - { - } - [TestMethod] - public void Test_8465() - { - } - [TestMethod] - public void Test_8466() - { - } - [TestMethod] - public void Test_8467() - { - } - [TestMethod] - public void Test_8468() - { - } - [TestMethod] - public void Test_8469() - { - } - [TestMethod] - public void Test_8470() - { - } - [TestMethod] - public void Test_8471() - { - } - [TestMethod] - public void Test_8472() - { - } - [TestMethod] - public void Test_8473() - { - } - [TestMethod] - public void Test_8474() - { - } - [TestMethod] - public void Test_8475() - { - } - [TestMethod] - public void Test_8476() - { - } - [TestMethod] - public void Test_8477() - { - } - [TestMethod] - public void Test_8478() - { - } - [TestMethod] - public void Test_8479() - { - } - [TestMethod] - public void Test_8480() - { - } - [TestMethod] - public void Test_8481() - { - } - [TestMethod] - public void Test_8482() - { - } - [TestMethod] - public void Test_8483() - { - } - [TestMethod] - public void Test_8484() - { - } - [TestMethod] - public void Test_8485() - { - } - [TestMethod] - public void Test_8486() - { - } - [TestMethod] - public void Test_8487() - { - } - [TestMethod] - public void Test_8488() - { - } - [TestMethod] - public void Test_8489() - { - } - [TestMethod] - public void Test_8490() - { - } - [TestMethod] - public void Test_8491() - { - } - [TestMethod] - public void Test_8492() - { - } - [TestMethod] - public void Test_8493() - { - } - [TestMethod] - public void Test_8494() - { - } - [TestMethod] - public void Test_8495() - { - } - [TestMethod] - public void Test_8496() - { - } - [TestMethod] - public void Test_8497() - { - } - [TestMethod] - public void Test_8498() - { - } - [TestMethod] - public void Test_8499() - { - } - [TestMethod] - public void Test_8500() - { - } - [TestMethod] - public void Test_8501() - { - } - [TestMethod] - public void Test_8502() - { - } - [TestMethod] - public void Test_8503() - { - } - [TestMethod] - public void Test_8504() - { - } - [TestMethod] - public void Test_8505() - { - } - [TestMethod] - public void Test_8506() - { - } - [TestMethod] - public void Test_8507() - { - } - [TestMethod] - public void Test_8508() - { - } - [TestMethod] - public void Test_8509() - { - } - [TestMethod] - public void Test_8510() - { - } - [TestMethod] - public void Test_8511() - { - } - [TestMethod] - public void Test_8512() - { - } - [TestMethod] - public void Test_8513() - { - } - [TestMethod] - public void Test_8514() - { - } - [TestMethod] - public void Test_8515() - { - } - [TestMethod] - public void Test_8516() - { - } - [TestMethod] - public void Test_8517() - { - } - [TestMethod] - public void Test_8518() - { - } - [TestMethod] - public void Test_8519() - { - } - [TestMethod] - public void Test_8520() - { - } - [TestMethod] - public void Test_8521() - { - } - [TestMethod] - public void Test_8522() - { - } - [TestMethod] - public void Test_8523() - { - } - [TestMethod] - public void Test_8524() - { - } - [TestMethod] - public void Test_8525() - { - } - [TestMethod] - public void Test_8526() - { - } - [TestMethod] - public void Test_8527() - { - } - [TestMethod] - public void Test_8528() - { - } - [TestMethod] - public void Test_8529() - { - } - [TestMethod] - public void Test_8530() - { - } - [TestMethod] - public void Test_8531() - { - } - [TestMethod] - public void Test_8532() - { - } - [TestMethod] - public void Test_8533() - { - } - [TestMethod] - public void Test_8534() - { - } - [TestMethod] - public void Test_8535() - { - } - [TestMethod] - public void Test_8536() - { - } - [TestMethod] - public void Test_8537() - { - } - [TestMethod] - public void Test_8538() - { - } - [TestMethod] - public void Test_8539() - { - } - [TestMethod] - public void Test_8540() - { - } - [TestMethod] - public void Test_8541() - { - } - [TestMethod] - public void Test_8542() - { - } - [TestMethod] - public void Test_8543() - { - } - [TestMethod] - public void Test_8544() - { - } - [TestMethod] - public void Test_8545() - { - } - [TestMethod] - public void Test_8546() - { - } - [TestMethod] - public void Test_8547() - { - } - [TestMethod] - public void Test_8548() - { - } - [TestMethod] - public void Test_8549() - { - } - [TestMethod] - public void Test_8550() - { - } - [TestMethod] - public void Test_8551() - { - } - [TestMethod] - public void Test_8552() - { - } - [TestMethod] - public void Test_8553() - { - } - [TestMethod] - public void Test_8554() - { - } - [TestMethod] - public void Test_8555() - { - } - [TestMethod] - public void Test_8556() - { - } - [TestMethod] - public void Test_8557() - { - } - [TestMethod] - public void Test_8558() - { - } - [TestMethod] - public void Test_8559() - { - } - [TestMethod] - public void Test_8560() - { - } - [TestMethod] - public void Test_8561() - { - } - [TestMethod] - public void Test_8562() - { - } - [TestMethod] - public void Test_8563() - { - } - [TestMethod] - public void Test_8564() - { - } - [TestMethod] - public void Test_8565() - { - } - [TestMethod] - public void Test_8566() - { - } - [TestMethod] - public void Test_8567() - { - } - [TestMethod] - public void Test_8568() - { - } - [TestMethod] - public void Test_8569() - { - } - [TestMethod] - public void Test_8570() - { - } - [TestMethod] - public void Test_8571() - { - } - [TestMethod] - public void Test_8572() - { - } - [TestMethod] - public void Test_8573() - { - } - [TestMethod] - public void Test_8574() - { - } - [TestMethod] - public void Test_8575() - { - } - [TestMethod] - public void Test_8576() - { - } - [TestMethod] - public void Test_8577() - { - } - [TestMethod] - public void Test_8578() - { - } - [TestMethod] - public void Test_8579() - { - } - [TestMethod] - public void Test_8580() - { - } - [TestMethod] - public void Test_8581() - { - } - [TestMethod] - public void Test_8582() - { - } - [TestMethod] - public void Test_8583() - { - } - [TestMethod] - public void Test_8584() - { - } - [TestMethod] - public void Test_8585() - { - } - [TestMethod] - public void Test_8586() - { - } - [TestMethod] - public void Test_8587() - { - } - [TestMethod] - public void Test_8588() - { - } - [TestMethod] - public void Test_8589() - { - } - [TestMethod] - public void Test_8590() - { - } - [TestMethod] - public void Test_8591() - { - } - [TestMethod] - public void Test_8592() - { - } - [TestMethod] - public void Test_8593() - { - } - [TestMethod] - public void Test_8594() - { - } - [TestMethod] - public void Test_8595() - { - } - [TestMethod] - public void Test_8596() - { - } - [TestMethod] - public void Test_8597() - { - } - [TestMethod] - public void Test_8598() - { - } - [TestMethod] - public void Test_8599() - { - } - [TestMethod] - public void Test_8600() - { - } - [TestMethod] - public void Test_8601() - { - } - [TestMethod] - public void Test_8602() - { - } - [TestMethod] - public void Test_8603() - { - } - [TestMethod] - public void Test_8604() - { - } - [TestMethod] - public void Test_8605() - { - } - [TestMethod] - public void Test_8606() - { - } - [TestMethod] - public void Test_8607() - { - } - [TestMethod] - public void Test_8608() - { - } - [TestMethod] - public void Test_8609() - { - } - [TestMethod] - public void Test_8610() - { - } - [TestMethod] - public void Test_8611() - { - } - [TestMethod] - public void Test_8612() - { - } - [TestMethod] - public void Test_8613() - { - } - [TestMethod] - public void Test_8614() - { - } - [TestMethod] - public void Test_8615() - { - } - [TestMethod] - public void Test_8616() - { - } - [TestMethod] - public void Test_8617() - { - } - [TestMethod] - public void Test_8618() - { - } - [TestMethod] - public void Test_8619() - { - } - [TestMethod] - public void Test_8620() - { - } - [TestMethod] - public void Test_8621() - { - } - [TestMethod] - public void Test_8622() - { - } - [TestMethod] - public void Test_8623() - { - } - [TestMethod] - public void Test_8624() - { - } - [TestMethod] - public void Test_8625() - { - } - [TestMethod] - public void Test_8626() - { - } - [TestMethod] - public void Test_8627() - { - } - [TestMethod] - public void Test_8628() - { - } - [TestMethod] - public void Test_8629() - { - } - [TestMethod] - public void Test_8630() - { - } - [TestMethod] - public void Test_8631() - { - } - [TestMethod] - public void Test_8632() - { - } - [TestMethod] - public void Test_8633() - { - } - [TestMethod] - public void Test_8634() - { - } - [TestMethod] - public void Test_8635() - { - } - [TestMethod] - public void Test_8636() - { - } - [TestMethod] - public void Test_8637() - { - } - [TestMethod] - public void Test_8638() - { - } - [TestMethod] - public void Test_8639() - { - } - [TestMethod] - public void Test_8640() - { - } - [TestMethod] - public void Test_8641() - { - } - [TestMethod] - public void Test_8642() - { - } - [TestMethod] - public void Test_8643() - { - } - [TestMethod] - public void Test_8644() - { - } - [TestMethod] - public void Test_8645() - { - } - [TestMethod] - public void Test_8646() - { - } - [TestMethod] - public void Test_8647() - { - } - [TestMethod] - public void Test_8648() - { - } - [TestMethod] - public void Test_8649() - { - } - [TestMethod] - public void Test_8650() - { - } - [TestMethod] - public void Test_8651() - { - } - [TestMethod] - public void Test_8652() - { - } - [TestMethod] - public void Test_8653() - { - } - [TestMethod] - public void Test_8654() - { - } - [TestMethod] - public void Test_8655() - { - } - [TestMethod] - public void Test_8656() - { - } - [TestMethod] - public void Test_8657() - { - } - [TestMethod] - public void Test_8658() - { - } - [TestMethod] - public void Test_8659() - { - } - [TestMethod] - public void Test_8660() - { - } - [TestMethod] - public void Test_8661() - { - } - [TestMethod] - public void Test_8662() - { - } - [TestMethod] - public void Test_8663() - { - } - [TestMethod] - public void Test_8664() - { - } - [TestMethod] - public void Test_8665() - { - } - [TestMethod] - public void Test_8666() - { - } - [TestMethod] - public void Test_8667() - { - } - [TestMethod] - public void Test_8668() - { - } - [TestMethod] - public void Test_8669() - { - } - [TestMethod] - public void Test_8670() - { - } - [TestMethod] - public void Test_8671() - { - } - [TestMethod] - public void Test_8672() - { - } - [TestMethod] - public void Test_8673() - { - } - [TestMethod] - public void Test_8674() - { - } - [TestMethod] - public void Test_8675() - { - } - [TestMethod] - public void Test_8676() - { - } - [TestMethod] - public void Test_8677() - { - } - [TestMethod] - public void Test_8678() - { - } - [TestMethod] - public void Test_8679() - { - } - [TestMethod] - public void Test_8680() - { - } - [TestMethod] - public void Test_8681() - { - } - [TestMethod] - public void Test_8682() - { - } - [TestMethod] - public void Test_8683() - { - } - [TestMethod] - public void Test_8684() - { - } - [TestMethod] - public void Test_8685() - { - } - [TestMethod] - public void Test_8686() - { - } - [TestMethod] - public void Test_8687() - { - } - [TestMethod] - public void Test_8688() - { - } - [TestMethod] - public void Test_8689() - { - } - [TestMethod] - public void Test_8690() - { - } - [TestMethod] - public void Test_8691() - { - } - [TestMethod] - public void Test_8692() - { - } - [TestMethod] - public void Test_8693() - { - } - [TestMethod] - public void Test_8694() - { - } - [TestMethod] - public void Test_8695() - { - } - [TestMethod] - public void Test_8696() - { - } - [TestMethod] - public void Test_8697() - { - } - [TestMethod] - public void Test_8698() - { - } - [TestMethod] - public void Test_8699() - { - } - [TestMethod] - public void Test_8700() - { - } - [TestMethod] - public void Test_8701() - { - } - [TestMethod] - public void Test_8702() - { - } - [TestMethod] - public void Test_8703() - { - } - [TestMethod] - public void Test_8704() - { - } - [TestMethod] - public void Test_8705() - { - } - [TestMethod] - public void Test_8706() - { - } - [TestMethod] - public void Test_8707() - { - } - [TestMethod] - public void Test_8708() - { - } - [TestMethod] - public void Test_8709() - { - } - [TestMethod] - public void Test_8710() - { - } - [TestMethod] - public void Test_8711() - { - } - [TestMethod] - public void Test_8712() - { - } - [TestMethod] - public void Test_8713() - { - } - [TestMethod] - public void Test_8714() - { - } - [TestMethod] - public void Test_8715() - { - } - [TestMethod] - public void Test_8716() - { - } - [TestMethod] - public void Test_8717() - { - } - [TestMethod] - public void Test_8718() - { - } - [TestMethod] - public void Test_8719() - { - } - [TestMethod] - public void Test_8720() - { - } - [TestMethod] - public void Test_8721() - { - } - [TestMethod] - public void Test_8722() - { - } - [TestMethod] - public void Test_8723() - { - } - [TestMethod] - public void Test_8724() - { - } - [TestMethod] - public void Test_8725() - { - } - [TestMethod] - public void Test_8726() - { - } - [TestMethod] - public void Test_8727() - { - } - [TestMethod] - public void Test_8728() - { - } - [TestMethod] - public void Test_8729() - { - } - [TestMethod] - public void Test_8730() - { - } - [TestMethod] - public void Test_8731() - { - } - [TestMethod] - public void Test_8732() - { - } - [TestMethod] - public void Test_8733() - { - } - [TestMethod] - public void Test_8734() - { - } - [TestMethod] - public void Test_8735() - { - } - [TestMethod] - public void Test_8736() - { - } - [TestMethod] - public void Test_8737() - { - } - [TestMethod] - public void Test_8738() - { - } - [TestMethod] - public void Test_8739() - { - } - [TestMethod] - public void Test_8740() - { - } - [TestMethod] - public void Test_8741() - { - } - [TestMethod] - public void Test_8742() - { - } - [TestMethod] - public void Test_8743() - { - } - [TestMethod] - public void Test_8744() - { - } - [TestMethod] - public void Test_8745() - { - } - [TestMethod] - public void Test_8746() - { - } - [TestMethod] - public void Test_8747() - { - } - [TestMethod] - public void Test_8748() - { - } - [TestMethod] - public void Test_8749() - { - } - [TestMethod] - public void Test_8750() - { - } - [TestMethod] - public void Test_8751() - { - } - [TestMethod] - public void Test_8752() - { - } - [TestMethod] - public void Test_8753() - { - } - [TestMethod] - public void Test_8754() - { - } - [TestMethod] - public void Test_8755() - { - } - [TestMethod] - public void Test_8756() - { - } - [TestMethod] - public void Test_8757() - { - } - [TestMethod] - public void Test_8758() - { - } - [TestMethod] - public void Test_8759() - { - } - [TestMethod] - public void Test_8760() - { - } - [TestMethod] - public void Test_8761() - { - } - [TestMethod] - public void Test_8762() - { - } - [TestMethod] - public void Test_8763() - { - } - [TestMethod] - public void Test_8764() - { - } - [TestMethod] - public void Test_8765() - { - } - [TestMethod] - public void Test_8766() - { - } - [TestMethod] - public void Test_8767() - { - } - [TestMethod] - public void Test_8768() - { - } - [TestMethod] - public void Test_8769() - { - } - [TestMethod] - public void Test_8770() - { - } - [TestMethod] - public void Test_8771() - { - } - [TestMethod] - public void Test_8772() - { - } - [TestMethod] - public void Test_8773() - { - } - [TestMethod] - public void Test_8774() - { - } - [TestMethod] - public void Test_8775() - { - } - [TestMethod] - public void Test_8776() - { - } - [TestMethod] - public void Test_8777() - { - } - [TestMethod] - public void Test_8778() - { - } - [TestMethod] - public void Test_8779() - { - } - [TestMethod] - public void Test_8780() - { - } - [TestMethod] - public void Test_8781() - { - } - [TestMethod] - public void Test_8782() - { - } - [TestMethod] - public void Test_8783() - { - } - [TestMethod] - public void Test_8784() - { - } - [TestMethod] - public void Test_8785() - { - } - [TestMethod] - public void Test_8786() - { - } - [TestMethod] - public void Test_8787() - { - } - [TestMethod] - public void Test_8788() - { - } - [TestMethod] - public void Test_8789() - { - } - [TestMethod] - public void Test_8790() - { - } - [TestMethod] - public void Test_8791() - { - } - [TestMethod] - public void Test_8792() - { - } - [TestMethod] - public void Test_8793() - { - } - [TestMethod] - public void Test_8794() - { - } - [TestMethod] - public void Test_8795() - { - } - [TestMethod] - public void Test_8796() - { - } - [TestMethod] - public void Test_8797() - { - } - [TestMethod] - public void Test_8798() - { - } - [TestMethod] - public void Test_8799() - { - } - [TestMethod] - public void Test_8800() - { - } - [TestMethod] - public void Test_8801() - { - } - [TestMethod] - public void Test_8802() - { - } - [TestMethod] - public void Test_8803() - { - } - [TestMethod] - public void Test_8804() - { - } - [TestMethod] - public void Test_8805() - { - } - [TestMethod] - public void Test_8806() - { - } - [TestMethod] - public void Test_8807() - { - } - [TestMethod] - public void Test_8808() - { - } - [TestMethod] - public void Test_8809() - { - } - [TestMethod] - public void Test_8810() - { - } - [TestMethod] - public void Test_8811() - { - } - [TestMethod] - public void Test_8812() - { - } - [TestMethod] - public void Test_8813() - { - } - [TestMethod] - public void Test_8814() - { - } - [TestMethod] - public void Test_8815() - { - } - [TestMethod] - public void Test_8816() - { - } - [TestMethod] - public void Test_8817() - { - } - [TestMethod] - public void Test_8818() - { - } - [TestMethod] - public void Test_8819() - { - } - [TestMethod] - public void Test_8820() - { - } - [TestMethod] - public void Test_8821() - { - } - [TestMethod] - public void Test_8822() - { - } - [TestMethod] - public void Test_8823() - { - } - [TestMethod] - public void Test_8824() - { - } - [TestMethod] - public void Test_8825() - { - } - [TestMethod] - public void Test_8826() - { - } - [TestMethod] - public void Test_8827() - { - } - [TestMethod] - public void Test_8828() - { - } - [TestMethod] - public void Test_8829() - { - } - [TestMethod] - public void Test_8830() - { - } - [TestMethod] - public void Test_8831() - { - } - [TestMethod] - public void Test_8832() - { - } - [TestMethod] - public void Test_8833() - { - } - [TestMethod] - public void Test_8834() - { - } - [TestMethod] - public void Test_8835() - { - } - [TestMethod] - public void Test_8836() - { - } - [TestMethod] - public void Test_8837() - { - } - [TestMethod] - public void Test_8838() - { - } - [TestMethod] - public void Test_8839() - { - } - [TestMethod] - public void Test_8840() - { - } - [TestMethod] - public void Test_8841() - { - } - [TestMethod] - public void Test_8842() - { - } - [TestMethod] - public void Test_8843() - { - } - [TestMethod] - public void Test_8844() - { - } - [TestMethod] - public void Test_8845() - { - } - [TestMethod] - public void Test_8846() - { - } - [TestMethod] - public void Test_8847() - { - } - [TestMethod] - public void Test_8848() - { - } - [TestMethod] - public void Test_8849() - { - } - [TestMethod] - public void Test_8850() - { - } - [TestMethod] - public void Test_8851() - { - } - [TestMethod] - public void Test_8852() - { - } - [TestMethod] - public void Test_8853() - { - } - [TestMethod] - public void Test_8854() - { - } - [TestMethod] - public void Test_8855() - { - } - [TestMethod] - public void Test_8856() - { - } - [TestMethod] - public void Test_8857() - { - } - [TestMethod] - public void Test_8858() - { - } - [TestMethod] - public void Test_8859() - { - } - [TestMethod] - public void Test_8860() - { - } - [TestMethod] - public void Test_8861() - { - } - [TestMethod] - public void Test_8862() - { - } - [TestMethod] - public void Test_8863() - { - } - [TestMethod] - public void Test_8864() - { - } - [TestMethod] - public void Test_8865() - { - } - [TestMethod] - public void Test_8866() - { - } - [TestMethod] - public void Test_8867() - { - } - [TestMethod] - public void Test_8868() - { - } - [TestMethod] - public void Test_8869() - { - } - [TestMethod] - public void Test_8870() - { - } - [TestMethod] - public void Test_8871() - { - } - [TestMethod] - public void Test_8872() - { - } - [TestMethod] - public void Test_8873() - { - } - [TestMethod] - public void Test_8874() - { - } - [TestMethod] - public void Test_8875() - { - } - [TestMethod] - public void Test_8876() - { - } - [TestMethod] - public void Test_8877() - { - } - [TestMethod] - public void Test_8878() - { - } - [TestMethod] - public void Test_8879() - { - } - [TestMethod] - public void Test_8880() - { - } - [TestMethod] - public void Test_8881() - { - } - [TestMethod] - public void Test_8882() - { - } - [TestMethod] - public void Test_8883() - { - } - [TestMethod] - public void Test_8884() - { - } - [TestMethod] - public void Test_8885() - { - } - [TestMethod] - public void Test_8886() - { - } - [TestMethod] - public void Test_8887() - { - } - [TestMethod] - public void Test_8888() - { - } - [TestMethod] - public void Test_8889() - { - } - [TestMethod] - public void Test_8890() - { - } - [TestMethod] - public void Test_8891() - { - } - [TestMethod] - public void Test_8892() - { - } - [TestMethod] - public void Test_8893() - { - } - [TestMethod] - public void Test_8894() - { - } - [TestMethod] - public void Test_8895() - { - } - [TestMethod] - public void Test_8896() - { - } - [TestMethod] - public void Test_8897() - { - } - [TestMethod] - public void Test_8898() - { - } - [TestMethod] - public void Test_8899() - { - } - [TestMethod] - public void Test_8900() - { - } - [TestMethod] - public void Test_8901() - { - } - [TestMethod] - public void Test_8902() - { - } - [TestMethod] - public void Test_8903() - { - } - [TestMethod] - public void Test_8904() - { - } - [TestMethod] - public void Test_8905() - { - } - [TestMethod] - public void Test_8906() - { - } - [TestMethod] - public void Test_8907() - { - } - [TestMethod] - public void Test_8908() - { - } - [TestMethod] - public void Test_8909() - { - } - [TestMethod] - public void Test_8910() - { - } - [TestMethod] - public void Test_8911() - { - } - [TestMethod] - public void Test_8912() - { - } - [TestMethod] - public void Test_8913() - { - } - [TestMethod] - public void Test_8914() - { - } - [TestMethod] - public void Test_8915() - { - } - [TestMethod] - public void Test_8916() - { - } - [TestMethod] - public void Test_8917() - { - } - [TestMethod] - public void Test_8918() - { - } - [TestMethod] - public void Test_8919() - { - } - [TestMethod] - public void Test_8920() - { - } - [TestMethod] - public void Test_8921() - { - } - [TestMethod] - public void Test_8922() - { - } - [TestMethod] - public void Test_8923() - { - } - [TestMethod] - public void Test_8924() - { - } - [TestMethod] - public void Test_8925() - { - } - [TestMethod] - public void Test_8926() - { - } - [TestMethod] - public void Test_8927() - { - } - [TestMethod] - public void Test_8928() - { - } - [TestMethod] - public void Test_8929() - { - } - [TestMethod] - public void Test_8930() - { - } - [TestMethod] - public void Test_8931() - { - } - [TestMethod] - public void Test_8932() - { - } - [TestMethod] - public void Test_8933() - { - } - [TestMethod] - public void Test_8934() - { - } - [TestMethod] - public void Test_8935() - { - } - [TestMethod] - public void Test_8936() - { - } - [TestMethod] - public void Test_8937() - { - } - [TestMethod] - public void Test_8938() - { - } - [TestMethod] - public void Test_8939() - { - } - [TestMethod] - public void Test_8940() - { - } - [TestMethod] - public void Test_8941() - { - } - [TestMethod] - public void Test_8942() - { - } - [TestMethod] - public void Test_8943() - { - } - [TestMethod] - public void Test_8944() - { - } - [TestMethod] - public void Test_8945() - { - } - [TestMethod] - public void Test_8946() - { - } - [TestMethod] - public void Test_8947() - { - } - [TestMethod] - public void Test_8948() - { - } - [TestMethod] - public void Test_8949() - { - } - [TestMethod] - public void Test_8950() - { - } - [TestMethod] - public void Test_8951() - { - } - [TestMethod] - public void Test_8952() - { - } - [TestMethod] - public void Test_8953() - { - } - [TestMethod] - public void Test_8954() - { - } - [TestMethod] - public void Test_8955() - { - } - [TestMethod] - public void Test_8956() - { - } - [TestMethod] - public void Test_8957() - { - } - [TestMethod] - public void Test_8958() - { - } - [TestMethod] - public void Test_8959() - { - } - [TestMethod] - public void Test_8960() - { - } - [TestMethod] - public void Test_8961() - { - } - [TestMethod] - public void Test_8962() - { - } - [TestMethod] - public void Test_8963() - { - } - [TestMethod] - public void Test_8964() - { - } - [TestMethod] - public void Test_8965() - { - } - [TestMethod] - public void Test_8966() - { - } - [TestMethod] - public void Test_8967() - { - } - [TestMethod] - public void Test_8968() - { - } - [TestMethod] - public void Test_8969() - { - } - [TestMethod] - public void Test_8970() - { - } - [TestMethod] - public void Test_8971() - { - } - [TestMethod] - public void Test_8972() - { - } - [TestMethod] - public void Test_8973() - { - } - [TestMethod] - public void Test_8974() - { - } - [TestMethod] - public void Test_8975() - { - } - [TestMethod] - public void Test_8976() - { - } - [TestMethod] - public void Test_8977() - { - } - [TestMethod] - public void Test_8978() - { - } - [TestMethod] - public void Test_8979() - { - } - [TestMethod] - public void Test_8980() - { - } - [TestMethod] - public void Test_8981() - { - } - [TestMethod] - public void Test_8982() - { - } - [TestMethod] - public void Test_8983() - { - } - [TestMethod] - public void Test_8984() - { - } - [TestMethod] - public void Test_8985() - { - } - [TestMethod] - public void Test_8986() - { - } - [TestMethod] - public void Test_8987() - { - } - [TestMethod] - public void Test_8988() - { - } - [TestMethod] - public void Test_8989() - { - } - [TestMethod] - public void Test_8990() - { - } - [TestMethod] - public void Test_8991() - { - } - [TestMethod] - public void Test_8992() - { - } - [TestMethod] - public void Test_8993() - { - } - [TestMethod] - public void Test_8994() - { - } - [TestMethod] - public void Test_8995() - { - } - [TestMethod] - public void Test_8996() - { - } - [TestMethod] - public void Test_8997() - { - } - [TestMethod] - public void Test_8998() - { - } - [TestMethod] - public void Test_8999() - { - } - [TestMethod] - public void Test_9000() - { - } - [TestMethod] - public void Test_9001() - { - } - [TestMethod] - public void Test_9002() - { - } - [TestMethod] - public void Test_9003() - { - } - [TestMethod] - public void Test_9004() - { - } - [TestMethod] - public void Test_9005() - { - } - [TestMethod] - public void Test_9006() - { - } - [TestMethod] - public void Test_9007() - { - } - [TestMethod] - public void Test_9008() - { - } - [TestMethod] - public void Test_9009() - { - } - [TestMethod] - public void Test_9010() - { - } - [TestMethod] - public void Test_9011() - { - } - [TestMethod] - public void Test_9012() - { - } - [TestMethod] - public void Test_9013() - { - } - [TestMethod] - public void Test_9014() - { - } - [TestMethod] - public void Test_9015() - { - } - [TestMethod] - public void Test_9016() - { - } - [TestMethod] - public void Test_9017() - { - } - [TestMethod] - public void Test_9018() - { - } - [TestMethod] - public void Test_9019() - { - } - [TestMethod] - public void Test_9020() - { - } - [TestMethod] - public void Test_9021() - { - } - [TestMethod] - public void Test_9022() - { - } - [TestMethod] - public void Test_9023() - { - } - [TestMethod] - public void Test_9024() - { - } - [TestMethod] - public void Test_9025() - { - } - [TestMethod] - public void Test_9026() - { - } - [TestMethod] - public void Test_9027() - { - } - [TestMethod] - public void Test_9028() - { - } - [TestMethod] - public void Test_9029() - { - } - [TestMethod] - public void Test_9030() - { - } - [TestMethod] - public void Test_9031() - { - } - [TestMethod] - public void Test_9032() - { - } - [TestMethod] - public void Test_9033() - { - } - [TestMethod] - public void Test_9034() - { - } - [TestMethod] - public void Test_9035() - { - } - [TestMethod] - public void Test_9036() - { - } - [TestMethod] - public void Test_9037() - { - } - [TestMethod] - public void Test_9038() - { - } - [TestMethod] - public void Test_9039() - { - } - [TestMethod] - public void Test_9040() - { - } - [TestMethod] - public void Test_9041() - { - } - [TestMethod] - public void Test_9042() - { - } - [TestMethod] - public void Test_9043() - { - } - [TestMethod] - public void Test_9044() - { - } - [TestMethod] - public void Test_9045() - { - } - [TestMethod] - public void Test_9046() - { - } - [TestMethod] - public void Test_9047() - { - } - [TestMethod] - public void Test_9048() - { - } - [TestMethod] - public void Test_9049() - { - } - [TestMethod] - public void Test_9050() - { - } - [TestMethod] - public void Test_9051() - { - } - [TestMethod] - public void Test_9052() - { - } - [TestMethod] - public void Test_9053() - { - } - [TestMethod] - public void Test_9054() - { - } - [TestMethod] - public void Test_9055() - { - } - [TestMethod] - public void Test_9056() - { - } - [TestMethod] - public void Test_9057() - { - } - [TestMethod] - public void Test_9058() - { - } - [TestMethod] - public void Test_9059() - { - } - [TestMethod] - public void Test_9060() - { - } - [TestMethod] - public void Test_9061() - { - } - [TestMethod] - public void Test_9062() - { - } - [TestMethod] - public void Test_9063() - { - } - [TestMethod] - public void Test_9064() - { - } - [TestMethod] - public void Test_9065() - { - } - [TestMethod] - public void Test_9066() - { - } - [TestMethod] - public void Test_9067() - { - } - [TestMethod] - public void Test_9068() - { - } - [TestMethod] - public void Test_9069() - { - } - [TestMethod] - public void Test_9070() - { - } - [TestMethod] - public void Test_9071() - { - } - [TestMethod] - public void Test_9072() - { - } - [TestMethod] - public void Test_9073() - { - } - [TestMethod] - public void Test_9074() - { - } - [TestMethod] - public void Test_9075() - { - } - [TestMethod] - public void Test_9076() - { - } - [TestMethod] - public void Test_9077() - { - } - [TestMethod] - public void Test_9078() - { - } - [TestMethod] - public void Test_9079() - { - } - [TestMethod] - public void Test_9080() - { - } - [TestMethod] - public void Test_9081() - { - } - [TestMethod] - public void Test_9082() - { - } - [TestMethod] - public void Test_9083() - { - } - [TestMethod] - public void Test_9084() - { - } - [TestMethod] - public void Test_9085() - { - } - [TestMethod] - public void Test_9086() - { - } - [TestMethod] - public void Test_9087() - { - } - [TestMethod] - public void Test_9088() - { - } - [TestMethod] - public void Test_9089() - { - } - [TestMethod] - public void Test_9090() - { - } - [TestMethod] - public void Test_9091() - { - } - [TestMethod] - public void Test_9092() - { - } - [TestMethod] - public void Test_9093() - { - } - [TestMethod] - public void Test_9094() - { - } - [TestMethod] - public void Test_9095() - { - } - [TestMethod] - public void Test_9096() - { - } - [TestMethod] - public void Test_9097() - { - } - [TestMethod] - public void Test_9098() - { - } - [TestMethod] - public void Test_9099() - { - } - [TestMethod] - public void Test_9100() - { - } - [TestMethod] - public void Test_9101() - { - } - [TestMethod] - public void Test_9102() - { - } - [TestMethod] - public void Test_9103() - { - } - [TestMethod] - public void Test_9104() - { - } - [TestMethod] - public void Test_9105() - { - } - [TestMethod] - public void Test_9106() - { - } - [TestMethod] - public void Test_9107() - { - } - [TestMethod] - public void Test_9108() - { - } - [TestMethod] - public void Test_9109() - { - } - [TestMethod] - public void Test_9110() - { - } - [TestMethod] - public void Test_9111() - { - } - [TestMethod] - public void Test_9112() - { - } - [TestMethod] - public void Test_9113() - { - } - [TestMethod] - public void Test_9114() - { - } - [TestMethod] - public void Test_9115() - { - } - [TestMethod] - public void Test_9116() - { - } - [TestMethod] - public void Test_9117() - { - } - [TestMethod] - public void Test_9118() - { - } - [TestMethod] - public void Test_9119() - { - } - [TestMethod] - public void Test_9120() - { - } - [TestMethod] - public void Test_9121() - { - } - [TestMethod] - public void Test_9122() - { - } - [TestMethod] - public void Test_9123() - { - } - [TestMethod] - public void Test_9124() - { - } - [TestMethod] - public void Test_9125() - { - } - [TestMethod] - public void Test_9126() - { - } - [TestMethod] - public void Test_9127() - { - } - [TestMethod] - public void Test_9128() - { - } - [TestMethod] - public void Test_9129() - { - } - [TestMethod] - public void Test_9130() - { - } - [TestMethod] - public void Test_9131() - { - } - [TestMethod] - public void Test_9132() - { - } - [TestMethod] - public void Test_9133() - { - } - [TestMethod] - public void Test_9134() - { - } - [TestMethod] - public void Test_9135() - { - } - [TestMethod] - public void Test_9136() - { - } - [TestMethod] - public void Test_9137() - { - } - [TestMethod] - public void Test_9138() - { - } - [TestMethod] - public void Test_9139() - { - } - [TestMethod] - public void Test_9140() - { - } - [TestMethod] - public void Test_9141() - { - } - [TestMethod] - public void Test_9142() - { - } - [TestMethod] - public void Test_9143() - { - } - [TestMethod] - public void Test_9144() - { - } - [TestMethod] - public void Test_9145() - { - } - [TestMethod] - public void Test_9146() - { - } - [TestMethod] - public void Test_9147() - { - } - [TestMethod] - public void Test_9148() - { - } - [TestMethod] - public void Test_9149() - { - } - [TestMethod] - public void Test_9150() - { - } - [TestMethod] - public void Test_9151() - { - } - [TestMethod] - public void Test_9152() - { - } - [TestMethod] - public void Test_9153() - { - } - [TestMethod] - public void Test_9154() - { - } - [TestMethod] - public void Test_9155() - { - } - [TestMethod] - public void Test_9156() - { - } - [TestMethod] - public void Test_9157() - { - } - [TestMethod] - public void Test_9158() - { - } - [TestMethod] - public void Test_9159() - { - } - [TestMethod] - public void Test_9160() - { - } - [TestMethod] - public void Test_9161() - { - } - [TestMethod] - public void Test_9162() - { - } - [TestMethod] - public void Test_9163() - { - } - [TestMethod] - public void Test_9164() - { - } - [TestMethod] - public void Test_9165() - { - } - [TestMethod] - public void Test_9166() - { - } - [TestMethod] - public void Test_9167() - { - } - [TestMethod] - public void Test_9168() - { - } - [TestMethod] - public void Test_9169() - { - } - [TestMethod] - public void Test_9170() - { - } - [TestMethod] - public void Test_9171() - { - } - [TestMethod] - public void Test_9172() - { - } - [TestMethod] - public void Test_9173() - { - } - [TestMethod] - public void Test_9174() - { - } - [TestMethod] - public void Test_9175() - { - } - [TestMethod] - public void Test_9176() - { - } - [TestMethod] - public void Test_9177() - { - } - [TestMethod] - public void Test_9178() - { - } - [TestMethod] - public void Test_9179() - { - } - [TestMethod] - public void Test_9180() - { - } - [TestMethod] - public void Test_9181() - { - } - [TestMethod] - public void Test_9182() - { - } - [TestMethod] - public void Test_9183() - { - } - [TestMethod] - public void Test_9184() - { - } - [TestMethod] - public void Test_9185() - { - } - [TestMethod] - public void Test_9186() - { - } - [TestMethod] - public void Test_9187() - { - } - [TestMethod] - public void Test_9188() - { - } - [TestMethod] - public void Test_9189() - { - } - [TestMethod] - public void Test_9190() - { - } - [TestMethod] - public void Test_9191() - { - } - [TestMethod] - public void Test_9192() - { - } - [TestMethod] - public void Test_9193() - { - } - [TestMethod] - public void Test_9194() - { - } - [TestMethod] - public void Test_9195() - { - } - [TestMethod] - public void Test_9196() - { - } - [TestMethod] - public void Test_9197() - { - } - [TestMethod] - public void Test_9198() - { - } - [TestMethod] - public void Test_9199() - { - } - [TestMethod] - public void Test_9200() - { - } - [TestMethod] - public void Test_9201() - { - } - [TestMethod] - public void Test_9202() - { - } - [TestMethod] - public void Test_9203() - { - } - [TestMethod] - public void Test_9204() - { - } - [TestMethod] - public void Test_9205() - { - } - [TestMethod] - public void Test_9206() - { - } - [TestMethod] - public void Test_9207() - { - } - [TestMethod] - public void Test_9208() - { - } - [TestMethod] - public void Test_9209() - { - } - [TestMethod] - public void Test_9210() - { - } - [TestMethod] - public void Test_9211() - { - } - [TestMethod] - public void Test_9212() - { - } - [TestMethod] - public void Test_9213() - { - } - [TestMethod] - public void Test_9214() - { - } - [TestMethod] - public void Test_9215() - { - } - [TestMethod] - public void Test_9216() - { - } - [TestMethod] - public void Test_9217() - { - } - [TestMethod] - public void Test_9218() - { - } - [TestMethod] - public void Test_9219() - { - } - [TestMethod] - public void Test_9220() - { - } - [TestMethod] - public void Test_9221() - { - } - [TestMethod] - public void Test_9222() - { - } - [TestMethod] - public void Test_9223() - { - } - [TestMethod] - public void Test_9224() - { - } - [TestMethod] - public void Test_9225() - { - } - [TestMethod] - public void Test_9226() - { - } - [TestMethod] - public void Test_9227() - { - } - [TestMethod] - public void Test_9228() - { - } - [TestMethod] - public void Test_9229() - { - } - [TestMethod] - public void Test_9230() - { - } - [TestMethod] - public void Test_9231() - { - } - [TestMethod] - public void Test_9232() - { - } - [TestMethod] - public void Test_9233() - { - } - [TestMethod] - public void Test_9234() - { - } - [TestMethod] - public void Test_9235() - { - } - [TestMethod] - public void Test_9236() - { - } - [TestMethod] - public void Test_9237() - { - } - [TestMethod] - public void Test_9238() - { - } - [TestMethod] - public void Test_9239() - { - } - [TestMethod] - public void Test_9240() - { - } - [TestMethod] - public void Test_9241() - { - } - [TestMethod] - public void Test_9242() - { - } - [TestMethod] - public void Test_9243() - { - } - [TestMethod] - public void Test_9244() - { - } - [TestMethod] - public void Test_9245() - { - } - [TestMethod] - public void Test_9246() - { - } - [TestMethod] - public void Test_9247() - { - } - [TestMethod] - public void Test_9248() - { - } - [TestMethod] - public void Test_9249() - { - } - [TestMethod] - public void Test_9250() - { - } - [TestMethod] - public void Test_9251() - { - } - [TestMethod] - public void Test_9252() - { - } - [TestMethod] - public void Test_9253() - { - } - [TestMethod] - public void Test_9254() - { - } - [TestMethod] - public void Test_9255() - { - } - [TestMethod] - public void Test_9256() - { - } - [TestMethod] - public void Test_9257() - { - } - [TestMethod] - public void Test_9258() - { - } - [TestMethod] - public void Test_9259() - { - } - [TestMethod] - public void Test_9260() - { - } - [TestMethod] - public void Test_9261() - { - } - [TestMethod] - public void Test_9262() - { - } - [TestMethod] - public void Test_9263() - { - } - [TestMethod] - public void Test_9264() - { - } - [TestMethod] - public void Test_9265() - { - } - [TestMethod] - public void Test_9266() - { - } - [TestMethod] - public void Test_9267() - { - } - [TestMethod] - public void Test_9268() - { - } - [TestMethod] - public void Test_9269() - { - } - [TestMethod] - public void Test_9270() - { - } - [TestMethod] - public void Test_9271() - { - } - [TestMethod] - public void Test_9272() - { - } - [TestMethod] - public void Test_9273() - { - } - [TestMethod] - public void Test_9274() - { - } - [TestMethod] - public void Test_9275() - { - } - [TestMethod] - public void Test_9276() - { - } - [TestMethod] - public void Test_9277() - { - } - [TestMethod] - public void Test_9278() - { - } - [TestMethod] - public void Test_9279() - { - } - [TestMethod] - public void Test_9280() - { - } - [TestMethod] - public void Test_9281() - { - } - [TestMethod] - public void Test_9282() - { - } - [TestMethod] - public void Test_9283() - { - } - [TestMethod] - public void Test_9284() - { - } - [TestMethod] - public void Test_9285() - { - } - [TestMethod] - public void Test_9286() - { - } - [TestMethod] - public void Test_9287() - { - } - [TestMethod] - public void Test_9288() - { - } - [TestMethod] - public void Test_9289() - { - } - [TestMethod] - public void Test_9290() - { - } - [TestMethod] - public void Test_9291() - { - } - [TestMethod] - public void Test_9292() - { - } - [TestMethod] - public void Test_9293() - { - } - [TestMethod] - public void Test_9294() - { - } - [TestMethod] - public void Test_9295() - { - } - [TestMethod] - public void Test_9296() - { - } - [TestMethod] - public void Test_9297() - { - } - [TestMethod] - public void Test_9298() - { - } - [TestMethod] - public void Test_9299() - { - } - [TestMethod] - public void Test_9300() - { - } - [TestMethod] - public void Test_9301() - { - } - [TestMethod] - public void Test_9302() - { - } - [TestMethod] - public void Test_9303() - { - } - [TestMethod] - public void Test_9304() - { - } - [TestMethod] - public void Test_9305() - { - } - [TestMethod] - public void Test_9306() - { - } - [TestMethod] - public void Test_9307() - { - } - [TestMethod] - public void Test_9308() - { - } - [TestMethod] - public void Test_9309() - { - } - [TestMethod] - public void Test_9310() - { - } - [TestMethod] - public void Test_9311() - { - } - [TestMethod] - public void Test_9312() - { - } - [TestMethod] - public void Test_9313() - { - } - [TestMethod] - public void Test_9314() - { - } - [TestMethod] - public void Test_9315() - { - } - [TestMethod] - public void Test_9316() - { - } - [TestMethod] - public void Test_9317() - { - } - [TestMethod] - public void Test_9318() - { - } - [TestMethod] - public void Test_9319() - { - } - [TestMethod] - public void Test_9320() - { - } - [TestMethod] - public void Test_9321() - { - } - [TestMethod] - public void Test_9322() - { - } - [TestMethod] - public void Test_9323() - { - } - [TestMethod] - public void Test_9324() - { - } - [TestMethod] - public void Test_9325() - { - } - [TestMethod] - public void Test_9326() - { - } - [TestMethod] - public void Test_9327() - { - } - [TestMethod] - public void Test_9328() - { - } - [TestMethod] - public void Test_9329() - { - } - [TestMethod] - public void Test_9330() - { - } - [TestMethod] - public void Test_9331() - { - } - [TestMethod] - public void Test_9332() - { - } - [TestMethod] - public void Test_9333() - { - } - [TestMethod] - public void Test_9334() - { - } - [TestMethod] - public void Test_9335() - { - } - [TestMethod] - public void Test_9336() - { - } - [TestMethod] - public void Test_9337() - { - } - [TestMethod] - public void Test_9338() - { - } - [TestMethod] - public void Test_9339() - { - } - [TestMethod] - public void Test_9340() - { - } - [TestMethod] - public void Test_9341() - { - } - [TestMethod] - public void Test_9342() - { - } - [TestMethod] - public void Test_9343() - { - } - [TestMethod] - public void Test_9344() - { - } - [TestMethod] - public void Test_9345() - { - } - [TestMethod] - public void Test_9346() - { - } - [TestMethod] - public void Test_9347() - { - } - [TestMethod] - public void Test_9348() - { - } - [TestMethod] - public void Test_9349() - { - } - [TestMethod] - public void Test_9350() - { - } - [TestMethod] - public void Test_9351() - { - } - [TestMethod] - public void Test_9352() - { - } - [TestMethod] - public void Test_9353() - { - } - [TestMethod] - public void Test_9354() - { - } - [TestMethod] - public void Test_9355() - { - } - [TestMethod] - public void Test_9356() - { - } - [TestMethod] - public void Test_9357() - { - } - [TestMethod] - public void Test_9358() - { - } - [TestMethod] - public void Test_9359() - { - } - [TestMethod] - public void Test_9360() - { - } - [TestMethod] - public void Test_9361() - { - } - [TestMethod] - public void Test_9362() - { - } - [TestMethod] - public void Test_9363() - { - } - [TestMethod] - public void Test_9364() - { - } - [TestMethod] - public void Test_9365() - { - } - [TestMethod] - public void Test_9366() - { - } - [TestMethod] - public void Test_9367() - { - } - [TestMethod] - public void Test_9368() - { - } - [TestMethod] - public void Test_9369() - { - } - [TestMethod] - public void Test_9370() - { - } - [TestMethod] - public void Test_9371() - { - } - [TestMethod] - public void Test_9372() - { - } - [TestMethod] - public void Test_9373() - { - } - [TestMethod] - public void Test_9374() - { - } - [TestMethod] - public void Test_9375() - { - } - [TestMethod] - public void Test_9376() - { - } - [TestMethod] - public void Test_9377() - { - } - [TestMethod] - public void Test_9378() - { - } - [TestMethod] - public void Test_9379() - { - } - [TestMethod] - public void Test_9380() - { - } - [TestMethod] - public void Test_9381() - { - } - [TestMethod] - public void Test_9382() - { - } - [TestMethod] - public void Test_9383() - { - } - [TestMethod] - public void Test_9384() - { - } - [TestMethod] - public void Test_9385() - { - } - [TestMethod] - public void Test_9386() - { - } - [TestMethod] - public void Test_9387() - { - } - [TestMethod] - public void Test_9388() - { - } - [TestMethod] - public void Test_9389() - { - } - [TestMethod] - public void Test_9390() - { - } - [TestMethod] - public void Test_9391() - { - } - [TestMethod] - public void Test_9392() - { - } - [TestMethod] - public void Test_9393() - { - } - [TestMethod] - public void Test_9394() - { - } - [TestMethod] - public void Test_9395() - { - } - [TestMethod] - public void Test_9396() - { - } - [TestMethod] - public void Test_9397() - { - } - [TestMethod] - public void Test_9398() - { - } - [TestMethod] - public void Test_9399() - { - } - [TestMethod] - public void Test_9400() - { - } - [TestMethod] - public void Test_9401() - { - } - [TestMethod] - public void Test_9402() - { - } - [TestMethod] - public void Test_9403() - { - } - [TestMethod] - public void Test_9404() - { - } - [TestMethod] - public void Test_9405() - { - } - [TestMethod] - public void Test_9406() - { - } - [TestMethod] - public void Test_9407() - { - } - [TestMethod] - public void Test_9408() - { - } - [TestMethod] - public void Test_9409() - { - } - [TestMethod] - public void Test_9410() - { - } - [TestMethod] - public void Test_9411() - { - } - [TestMethod] - public void Test_9412() - { - } - [TestMethod] - public void Test_9413() - { - } - [TestMethod] - public void Test_9414() - { - } - [TestMethod] - public void Test_9415() - { - } - [TestMethod] - public void Test_9416() - { - } - [TestMethod] - public void Test_9417() - { - } - [TestMethod] - public void Test_9418() - { - } - [TestMethod] - public void Test_9419() - { - } - [TestMethod] - public void Test_9420() - { - } - [TestMethod] - public void Test_9421() - { - } - [TestMethod] - public void Test_9422() - { - } - [TestMethod] - public void Test_9423() - { - } - [TestMethod] - public void Test_9424() - { - } - [TestMethod] - public void Test_9425() - { - } - [TestMethod] - public void Test_9426() - { - } - [TestMethod] - public void Test_9427() - { - } - [TestMethod] - public void Test_9428() - { - } - [TestMethod] - public void Test_9429() - { - } - [TestMethod] - public void Test_9430() - { - } - [TestMethod] - public void Test_9431() - { - } - [TestMethod] - public void Test_9432() - { - } - [TestMethod] - public void Test_9433() - { - } - [TestMethod] - public void Test_9434() - { - } - [TestMethod] - public void Test_9435() - { - } - [TestMethod] - public void Test_9436() - { - } - [TestMethod] - public void Test_9437() - { - } - [TestMethod] - public void Test_9438() - { - } - [TestMethod] - public void Test_9439() - { - } - [TestMethod] - public void Test_9440() - { - } - [TestMethod] - public void Test_9441() - { - } - [TestMethod] - public void Test_9442() - { - } - [TestMethod] - public void Test_9443() - { - } - [TestMethod] - public void Test_9444() - { - } - [TestMethod] - public void Test_9445() - { - } - [TestMethod] - public void Test_9446() - { - } - [TestMethod] - public void Test_9447() - { - } - [TestMethod] - public void Test_9448() - { - } - [TestMethod] - public void Test_9449() - { - } - [TestMethod] - public void Test_9450() - { - } - [TestMethod] - public void Test_9451() - { - } - [TestMethod] - public void Test_9452() - { - } - [TestMethod] - public void Test_9453() - { - } - [TestMethod] - public void Test_9454() - { - } - [TestMethod] - public void Test_9455() - { - } - [TestMethod] - public void Test_9456() - { - } - [TestMethod] - public void Test_9457() - { - } - [TestMethod] - public void Test_9458() - { - } - [TestMethod] - public void Test_9459() - { - } - [TestMethod] - public void Test_9460() - { - } - [TestMethod] - public void Test_9461() - { - } - [TestMethod] - public void Test_9462() - { - } - [TestMethod] - public void Test_9463() - { - } - [TestMethod] - public void Test_9464() - { - } - [TestMethod] - public void Test_9465() - { - } - [TestMethod] - public void Test_9466() - { - } - [TestMethod] - public void Test_9467() - { - } - [TestMethod] - public void Test_9468() - { - } - [TestMethod] - public void Test_9469() - { - } - [TestMethod] - public void Test_9470() - { - } - [TestMethod] - public void Test_9471() - { - } - [TestMethod] - public void Test_9472() - { - } - [TestMethod] - public void Test_9473() - { - } - [TestMethod] - public void Test_9474() - { - } - [TestMethod] - public void Test_9475() - { - } - [TestMethod] - public void Test_9476() - { - } - [TestMethod] - public void Test_9477() - { - } - [TestMethod] - public void Test_9478() - { - } - [TestMethod] - public void Test_9479() - { - } - [TestMethod] - public void Test_9480() - { - } - [TestMethod] - public void Test_9481() - { - } - [TestMethod] - public void Test_9482() - { - } - [TestMethod] - public void Test_9483() - { - } - [TestMethod] - public void Test_9484() - { - } - [TestMethod] - public void Test_9485() - { - } - [TestMethod] - public void Test_9486() - { - } - [TestMethod] - public void Test_9487() - { - } - [TestMethod] - public void Test_9488() - { - } - [TestMethod] - public void Test_9489() - { - } - [TestMethod] - public void Test_9490() - { - } - [TestMethod] - public void Test_9491() - { - } - [TestMethod] - public void Test_9492() - { - } - [TestMethod] - public void Test_9493() - { - } - [TestMethod] - public void Test_9494() - { - } - [TestMethod] - public void Test_9495() - { - } - [TestMethod] - public void Test_9496() - { - } - [TestMethod] - public void Test_9497() - { - } - [TestMethod] - public void Test_9498() - { - } - [TestMethod] - public void Test_9499() - { - } - [TestMethod] - public void Test_9500() - { - } - [TestMethod] - public void Test_9501() - { - } - [TestMethod] - public void Test_9502() - { - } - [TestMethod] - public void Test_9503() - { - } - [TestMethod] - public void Test_9504() - { - } - [TestMethod] - public void Test_9505() - { - } - [TestMethod] - public void Test_9506() - { - } - [TestMethod] - public void Test_9507() - { - } - [TestMethod] - public void Test_9508() - { - } - [TestMethod] - public void Test_9509() - { - } - [TestMethod] - public void Test_9510() - { - } - [TestMethod] - public void Test_9511() - { - } - [TestMethod] - public void Test_9512() - { - } - [TestMethod] - public void Test_9513() - { - } - [TestMethod] - public void Test_9514() - { - } - [TestMethod] - public void Test_9515() - { - } - [TestMethod] - public void Test_9516() - { - } - [TestMethod] - public void Test_9517() - { - } - [TestMethod] - public void Test_9518() - { - } - [TestMethod] - public void Test_9519() - { - } - [TestMethod] - public void Test_9520() - { - } - [TestMethod] - public void Test_9521() - { - } - [TestMethod] - public void Test_9522() - { - } - [TestMethod] - public void Test_9523() - { - } - [TestMethod] - public void Test_9524() - { - } - [TestMethod] - public void Test_9525() - { - } - [TestMethod] - public void Test_9526() - { - } - [TestMethod] - public void Test_9527() - { - } - [TestMethod] - public void Test_9528() - { - } - [TestMethod] - public void Test_9529() - { - } - [TestMethod] - public void Test_9530() - { - } - [TestMethod] - public void Test_9531() - { - } - [TestMethod] - public void Test_9532() - { - } - [TestMethod] - public void Test_9533() - { - } - [TestMethod] - public void Test_9534() - { - } - [TestMethod] - public void Test_9535() - { - } - [TestMethod] - public void Test_9536() - { - } - [TestMethod] - public void Test_9537() - { - } - [TestMethod] - public void Test_9538() - { - } - [TestMethod] - public void Test_9539() - { - } - [TestMethod] - public void Test_9540() - { - } - [TestMethod] - public void Test_9541() - { - } - [TestMethod] - public void Test_9542() - { - } - [TestMethod] - public void Test_9543() - { - } - [TestMethod] - public void Test_9544() - { - } - [TestMethod] - public void Test_9545() - { - } - [TestMethod] - public void Test_9546() - { - } - [TestMethod] - public void Test_9547() - { - } - [TestMethod] - public void Test_9548() - { - } - [TestMethod] - public void Test_9549() - { - } - [TestMethod] - public void Test_9550() - { - } - [TestMethod] - public void Test_9551() - { - } - [TestMethod] - public void Test_9552() - { - } - [TestMethod] - public void Test_9553() - { - } - [TestMethod] - public void Test_9554() - { - } - [TestMethod] - public void Test_9555() - { - } - [TestMethod] - public void Test_9556() - { - } - [TestMethod] - public void Test_9557() - { - } - [TestMethod] - public void Test_9558() - { - } - [TestMethod] - public void Test_9559() - { - } - [TestMethod] - public void Test_9560() - { - } - [TestMethod] - public void Test_9561() - { - } - [TestMethod] - public void Test_9562() - { - } - [TestMethod] - public void Test_9563() - { - } - [TestMethod] - public void Test_9564() - { - } - [TestMethod] - public void Test_9565() - { - } - [TestMethod] - public void Test_9566() - { - } - [TestMethod] - public void Test_9567() - { - } - [TestMethod] - public void Test_9568() - { - } - [TestMethod] - public void Test_9569() - { - } - [TestMethod] - public void Test_9570() - { - } - [TestMethod] - public void Test_9571() - { - } - [TestMethod] - public void Test_9572() - { - } - [TestMethod] - public void Test_9573() - { - } - [TestMethod] - public void Test_9574() - { - } - [TestMethod] - public void Test_9575() - { - } - [TestMethod] - public void Test_9576() - { - } - [TestMethod] - public void Test_9577() - { - } - [TestMethod] - public void Test_9578() - { - } - [TestMethod] - public void Test_9579() - { - } - [TestMethod] - public void Test_9580() - { - } - [TestMethod] - public void Test_9581() - { - } - [TestMethod] - public void Test_9582() - { - } - [TestMethod] - public void Test_9583() - { - } - [TestMethod] - public void Test_9584() - { - } - [TestMethod] - public void Test_9585() - { - } - [TestMethod] - public void Test_9586() - { - } - [TestMethod] - public void Test_9587() - { - } - [TestMethod] - public void Test_9588() - { - } - [TestMethod] - public void Test_9589() - { - } - [TestMethod] - public void Test_9590() - { - } - [TestMethod] - public void Test_9591() - { - } - [TestMethod] - public void Test_9592() - { - } - [TestMethod] - public void Test_9593() - { - } - [TestMethod] - public void Test_9594() - { - } - [TestMethod] - public void Test_9595() - { - } - [TestMethod] - public void Test_9596() - { - } - [TestMethod] - public void Test_9597() - { - } - [TestMethod] - public void Test_9598() - { - } - [TestMethod] - public void Test_9599() - { - } - [TestMethod] - public void Test_9600() - { - } - [TestMethod] - public void Test_9601() - { - } - [TestMethod] - public void Test_9602() - { - } - [TestMethod] - public void Test_9603() - { - } - [TestMethod] - public void Test_9604() - { - } - [TestMethod] - public void Test_9605() - { - } - [TestMethod] - public void Test_9606() - { - } - [TestMethod] - public void Test_9607() - { - } - [TestMethod] - public void Test_9608() - { - } - [TestMethod] - public void Test_9609() - { - } - [TestMethod] - public void Test_9610() - { - } - [TestMethod] - public void Test_9611() - { - } - [TestMethod] - public void Test_9612() - { - } - [TestMethod] - public void Test_9613() - { - } - [TestMethod] - public void Test_9614() - { - } - [TestMethod] - public void Test_9615() - { - } - [TestMethod] - public void Test_9616() - { - } - [TestMethod] - public void Test_9617() - { - } - [TestMethod] - public void Test_9618() - { - } - [TestMethod] - public void Test_9619() - { - } - [TestMethod] - public void Test_9620() - { - } - [TestMethod] - public void Test_9621() - { - } - [TestMethod] - public void Test_9622() - { - } - [TestMethod] - public void Test_9623() - { - } - [TestMethod] - public void Test_9624() - { - } - [TestMethod] - public void Test_9625() - { - } - [TestMethod] - public void Test_9626() - { - } - [TestMethod] - public void Test_9627() - { - } - [TestMethod] - public void Test_9628() - { - } - [TestMethod] - public void Test_9629() - { - } - [TestMethod] - public void Test_9630() - { - } - [TestMethod] - public void Test_9631() - { - } - [TestMethod] - public void Test_9632() - { - } - [TestMethod] - public void Test_9633() - { - } - [TestMethod] - public void Test_9634() - { - } - [TestMethod] - public void Test_9635() - { - } - [TestMethod] - public void Test_9636() - { - } - [TestMethod] - public void Test_9637() - { - } - [TestMethod] - public void Test_9638() - { - } - [TestMethod] - public void Test_9639() - { - } - [TestMethod] - public void Test_9640() - { - } - [TestMethod] - public void Test_9641() - { - } - [TestMethod] - public void Test_9642() - { - } - [TestMethod] - public void Test_9643() - { - } - [TestMethod] - public void Test_9644() - { - } - [TestMethod] - public void Test_9645() - { - } - [TestMethod] - public void Test_9646() - { - } - [TestMethod] - public void Test_9647() - { - } - [TestMethod] - public void Test_9648() - { - } - [TestMethod] - public void Test_9649() - { - } - [TestMethod] - public void Test_9650() - { - } - [TestMethod] - public void Test_9651() - { - } - [TestMethod] - public void Test_9652() - { - } - [TestMethod] - public void Test_9653() - { - } - [TestMethod] - public void Test_9654() - { - } - [TestMethod] - public void Test_9655() - { - } - [TestMethod] - public void Test_9656() - { - } - [TestMethod] - public void Test_9657() - { - } - [TestMethod] - public void Test_9658() - { - } - [TestMethod] - public void Test_9659() - { - } - [TestMethod] - public void Test_9660() - { - } - [TestMethod] - public void Test_9661() - { - } - [TestMethod] - public void Test_9662() - { - } - [TestMethod] - public void Test_9663() - { - } - [TestMethod] - public void Test_9664() - { - } - [TestMethod] - public void Test_9665() - { - } - [TestMethod] - public void Test_9666() - { - } - [TestMethod] - public void Test_9667() - { - } - [TestMethod] - public void Test_9668() - { - } - [TestMethod] - public void Test_9669() - { - } - [TestMethod] - public void Test_9670() - { - } - [TestMethod] - public void Test_9671() - { - } - [TestMethod] - public void Test_9672() - { - } - [TestMethod] - public void Test_9673() - { - } - [TestMethod] - public void Test_9674() - { - } - [TestMethod] - public void Test_9675() - { - } - [TestMethod] - public void Test_9676() - { - } - [TestMethod] - public void Test_9677() - { - } - [TestMethod] - public void Test_9678() - { - } - [TestMethod] - public void Test_9679() - { - } - [TestMethod] - public void Test_9680() - { - } - [TestMethod] - public void Test_9681() - { - } - [TestMethod] - public void Test_9682() - { - } - [TestMethod] - public void Test_9683() - { - } - [TestMethod] - public void Test_9684() - { - } - [TestMethod] - public void Test_9685() - { - } - [TestMethod] - public void Test_9686() - { - } - [TestMethod] - public void Test_9687() - { - } - [TestMethod] - public void Test_9688() - { - } - [TestMethod] - public void Test_9689() - { - } - [TestMethod] - public void Test_9690() - { - } - [TestMethod] - public void Test_9691() - { - } - [TestMethod] - public void Test_9692() - { - } - [TestMethod] - public void Test_9693() - { - } - [TestMethod] - public void Test_9694() - { - } - [TestMethod] - public void Test_9695() - { - } - [TestMethod] - public void Test_9696() - { - } - [TestMethod] - public void Test_9697() - { - } - [TestMethod] - public void Test_9698() - { - } - [TestMethod] - public void Test_9699() - { - } - [TestMethod] - public void Test_9700() - { - } - [TestMethod] - public void Test_9701() - { - } - [TestMethod] - public void Test_9702() - { - } - [TestMethod] - public void Test_9703() - { - } - [TestMethod] - public void Test_9704() - { - } - [TestMethod] - public void Test_9705() - { - } - [TestMethod] - public void Test_9706() - { - } - [TestMethod] - public void Test_9707() - { - } - [TestMethod] - public void Test_9708() - { - } - [TestMethod] - public void Test_9709() - { - } - [TestMethod] - public void Test_9710() - { - } - [TestMethod] - public void Test_9711() - { - } - [TestMethod] - public void Test_9712() - { - } - [TestMethod] - public void Test_9713() - { - } - [TestMethod] - public void Test_9714() - { - } - [TestMethod] - public void Test_9715() - { - } - [TestMethod] - public void Test_9716() - { - } - [TestMethod] - public void Test_9717() - { - } - [TestMethod] - public void Test_9718() - { - } - [TestMethod] - public void Test_9719() - { - } - [TestMethod] - public void Test_9720() - { - } - [TestMethod] - public void Test_9721() - { - } - [TestMethod] - public void Test_9722() - { - } - [TestMethod] - public void Test_9723() - { - } - [TestMethod] - public void Test_9724() - { - } - [TestMethod] - public void Test_9725() - { - } - [TestMethod] - public void Test_9726() - { - } - [TestMethod] - public void Test_9727() - { - } - [TestMethod] - public void Test_9728() - { - } - [TestMethod] - public void Test_9729() - { - } - [TestMethod] - public void Test_9730() - { - } - [TestMethod] - public void Test_9731() - { - } - [TestMethod] - public void Test_9732() - { - } - [TestMethod] - public void Test_9733() - { - } - [TestMethod] - public void Test_9734() - { - } - [TestMethod] - public void Test_9735() - { - } - [TestMethod] - public void Test_9736() - { - } - [TestMethod] - public void Test_9737() - { - } - [TestMethod] - public void Test_9738() - { - } - [TestMethod] - public void Test_9739() - { - } - [TestMethod] - public void Test_9740() - { - } - [TestMethod] - public void Test_9741() - { - } - [TestMethod] - public void Test_9742() - { - } - [TestMethod] - public void Test_9743() - { - } - [TestMethod] - public void Test_9744() - { - } - [TestMethod] - public void Test_9745() - { - } - [TestMethod] - public void Test_9746() - { - } - [TestMethod] - public void Test_9747() - { - } - [TestMethod] - public void Test_9748() - { - } - [TestMethod] - public void Test_9749() - { - } - [TestMethod] - public void Test_9750() - { - } - [TestMethod] - public void Test_9751() - { - } - [TestMethod] - public void Test_9752() - { - } - [TestMethod] - public void Test_9753() - { - } - [TestMethod] - public void Test_9754() - { - } - [TestMethod] - public void Test_9755() - { - } - [TestMethod] - public void Test_9756() - { - } - [TestMethod] - public void Test_9757() - { - } - [TestMethod] - public void Test_9758() - { - } - [TestMethod] - public void Test_9759() - { - } - [TestMethod] - public void Test_9760() - { - } - [TestMethod] - public void Test_9761() - { - } - [TestMethod] - public void Test_9762() - { - } - [TestMethod] - public void Test_9763() - { - } - [TestMethod] - public void Test_9764() - { - } - [TestMethod] - public void Test_9765() - { - } - [TestMethod] - public void Test_9766() - { - } - [TestMethod] - public void Test_9767() - { - } - [TestMethod] - public void Test_9768() - { - } - [TestMethod] - public void Test_9769() - { - } - [TestMethod] - public void Test_9770() - { - } - [TestMethod] - public void Test_9771() - { - } - [TestMethod] - public void Test_9772() - { - } - [TestMethod] - public void Test_9773() - { - } - [TestMethod] - public void Test_9774() - { - } - [TestMethod] - public void Test_9775() - { - } - [TestMethod] - public void Test_9776() - { - } - [TestMethod] - public void Test_9777() - { - } - [TestMethod] - public void Test_9778() - { - } - [TestMethod] - public void Test_9779() - { - } - [TestMethod] - public void Test_9780() - { - } - [TestMethod] - public void Test_9781() - { - } - [TestMethod] - public void Test_9782() - { - } - [TestMethod] - public void Test_9783() - { - } - [TestMethod] - public void Test_9784() - { - } - [TestMethod] - public void Test_9785() - { - } - [TestMethod] - public void Test_9786() - { - } - [TestMethod] - public void Test_9787() - { - } - [TestMethod] - public void Test_9788() - { - } - [TestMethod] - public void Test_9789() - { - } - [TestMethod] - public void Test_9790() - { - } - [TestMethod] - public void Test_9791() - { - } - [TestMethod] - public void Test_9792() - { - } - [TestMethod] - public void Test_9793() - { - } - [TestMethod] - public void Test_9794() - { - } - [TestMethod] - public void Test_9795() - { - } - [TestMethod] - public void Test_9796() - { - } - [TestMethod] - public void Test_9797() - { - } - [TestMethod] - public void Test_9798() - { - } - [TestMethod] - public void Test_9799() - { - } - [TestMethod] - public void Test_9800() - { - } - [TestMethod] - public void Test_9801() - { - } - [TestMethod] - public void Test_9802() - { - } - [TestMethod] - public void Test_9803() - { - } - [TestMethod] - public void Test_9804() - { - } - [TestMethod] - public void Test_9805() - { - } - [TestMethod] - public void Test_9806() - { - } - [TestMethod] - public void Test_9807() - { - } - [TestMethod] - public void Test_9808() - { - } - [TestMethod] - public void Test_9809() - { - } - [TestMethod] - public void Test_9810() - { - } - [TestMethod] - public void Test_9811() - { - } - [TestMethod] - public void Test_9812() - { - } - [TestMethod] - public void Test_9813() - { - } - [TestMethod] - public void Test_9814() - { - } - [TestMethod] - public void Test_9815() - { - } - [TestMethod] - public void Test_9816() - { - } - [TestMethod] - public void Test_9817() - { - } - [TestMethod] - public void Test_9818() - { - } - [TestMethod] - public void Test_9819() - { - } - [TestMethod] - public void Test_9820() - { - } - [TestMethod] - public void Test_9821() - { - } - [TestMethod] - public void Test_9822() - { - } - [TestMethod] - public void Test_9823() - { - } - [TestMethod] - public void Test_9824() - { - } - [TestMethod] - public void Test_9825() - { - } - [TestMethod] - public void Test_9826() - { - } - [TestMethod] - public void Test_9827() - { - } - [TestMethod] - public void Test_9828() - { - } - [TestMethod] - public void Test_9829() - { - } - [TestMethod] - public void Test_9830() - { - } - [TestMethod] - public void Test_9831() - { - } - [TestMethod] - public void Test_9832() - { - } - [TestMethod] - public void Test_9833() - { - } - [TestMethod] - public void Test_9834() - { - } - [TestMethod] - public void Test_9835() - { - } - [TestMethod] - public void Test_9836() - { - } - [TestMethod] - public void Test_9837() - { - } - [TestMethod] - public void Test_9838() - { - } - [TestMethod] - public void Test_9839() - { - } - [TestMethod] - public void Test_9840() - { - } - [TestMethod] - public void Test_9841() - { - } - [TestMethod] - public void Test_9842() - { - } - [TestMethod] - public void Test_9843() - { - } - [TestMethod] - public void Test_9844() - { - } - [TestMethod] - public void Test_9845() - { - } - [TestMethod] - public void Test_9846() - { - } - [TestMethod] - public void Test_9847() - { - } - [TestMethod] - public void Test_9848() - { - } - [TestMethod] - public void Test_9849() - { - } - [TestMethod] - public void Test_9850() - { - } - [TestMethod] - public void Test_9851() - { - } - [TestMethod] - public void Test_9852() - { - } - [TestMethod] - public void Test_9853() - { - } - [TestMethod] - public void Test_9854() - { - } - [TestMethod] - public void Test_9855() - { - } - [TestMethod] - public void Test_9856() - { - } - [TestMethod] - public void Test_9857() - { - } - [TestMethod] - public void Test_9858() - { - } - [TestMethod] - public void Test_9859() - { - } - [TestMethod] - public void Test_9860() - { - } - [TestMethod] - public void Test_9861() - { - } - [TestMethod] - public void Test_9862() - { - } - [TestMethod] - public void Test_9863() - { - } - [TestMethod] - public void Test_9864() - { - } - [TestMethod] - public void Test_9865() - { - } - [TestMethod] - public void Test_9866() - { - } - [TestMethod] - public void Test_9867() - { - } - [TestMethod] - public void Test_9868() - { - } - [TestMethod] - public void Test_9869() - { - } - [TestMethod] - public void Test_9870() - { - } - [TestMethod] - public void Test_9871() - { - } - [TestMethod] - public void Test_9872() - { - } - [TestMethod] - public void Test_9873() - { - } - [TestMethod] - public void Test_9874() - { - } - [TestMethod] - public void Test_9875() - { - } - [TestMethod] - public void Test_9876() - { - } - [TestMethod] - public void Test_9877() - { - } - [TestMethod] - public void Test_9878() - { - } - [TestMethod] - public void Test_9879() - { - } - [TestMethod] - public void Test_9880() - { - } - [TestMethod] - public void Test_9881() - { - } - [TestMethod] - public void Test_9882() - { - } - [TestMethod] - public void Test_9883() - { - } - [TestMethod] - public void Test_9884() - { - } - [TestMethod] - public void Test_9885() - { - } - [TestMethod] - public void Test_9886() - { - } - [TestMethod] - public void Test_9887() - { - } - [TestMethod] - public void Test_9888() - { - } - [TestMethod] - public void Test_9889() - { - } - [TestMethod] - public void Test_9890() - { - } - [TestMethod] - public void Test_9891() - { - } - [TestMethod] - public void Test_9892() - { - } - [TestMethod] - public void Test_9893() - { - } - [TestMethod] - public void Test_9894() - { - } - [TestMethod] - public void Test_9895() - { - } - [TestMethod] - public void Test_9896() - { - } - [TestMethod] - public void Test_9897() - { - } - [TestMethod] - public void Test_9898() - { - } - [TestMethod] - public void Test_9899() - { - } - [TestMethod] - public void Test_9900() - { - } - [TestMethod] - public void Test_9901() - { - } - [TestMethod] - public void Test_9902() - { - } - [TestMethod] - public void Test_9903() - { - } - [TestMethod] - public void Test_9904() - { - } - [TestMethod] - public void Test_9905() - { - } - [TestMethod] - public void Test_9906() - { - } - [TestMethod] - public void Test_9907() - { - } - [TestMethod] - public void Test_9908() - { - } - [TestMethod] - public void Test_9909() - { - } - [TestMethod] - public void Test_9910() - { - } - [TestMethod] - public void Test_9911() - { - } - [TestMethod] - public void Test_9912() - { - } - [TestMethod] - public void Test_9913() - { - } - [TestMethod] - public void Test_9914() - { - } - [TestMethod] - public void Test_9915() - { - } - [TestMethod] - public void Test_9916() - { - } - [TestMethod] - public void Test_9917() - { - } - [TestMethod] - public void Test_9918() - { - } - [TestMethod] - public void Test_9919() - { - } - [TestMethod] - public void Test_9920() - { - } - [TestMethod] - public void Test_9921() - { - } - [TestMethod] - public void Test_9922() - { - } - [TestMethod] - public void Test_9923() - { - } - [TestMethod] - public void Test_9924() - { - } - [TestMethod] - public void Test_9925() - { - } - [TestMethod] - public void Test_9926() - { - } - [TestMethod] - public void Test_9927() - { - } - [TestMethod] - public void Test_9928() - { - } - [TestMethod] - public void Test_9929() - { - } - [TestMethod] - public void Test_9930() - { - } - [TestMethod] - public void Test_9931() - { - } - [TestMethod] - public void Test_9932() - { - } - [TestMethod] - public void Test_9933() - { - } - [TestMethod] - public void Test_9934() - { - } - [TestMethod] - public void Test_9935() - { - } - [TestMethod] - public void Test_9936() - { - } - [TestMethod] - public void Test_9937() - { - } - [TestMethod] - public void Test_9938() - { - } - [TestMethod] - public void Test_9939() - { - } - [TestMethod] - public void Test_9940() - { - } - [TestMethod] - public void Test_9941() - { - } - [TestMethod] - public void Test_9942() - { - } - [TestMethod] - public void Test_9943() - { - } - [TestMethod] - public void Test_9944() - { - } - [TestMethod] - public void Test_9945() - { - } - [TestMethod] - public void Test_9946() - { - } - [TestMethod] - public void Test_9947() - { - } - [TestMethod] - public void Test_9948() - { - } - [TestMethod] - public void Test_9949() - { - } - [TestMethod] - public void Test_9950() - { - } - [TestMethod] - public void Test_9951() - { - } - [TestMethod] - public void Test_9952() - { - } - [TestMethod] - public void Test_9953() - { - } - [TestMethod] - public void Test_9954() - { - } - [TestMethod] - public void Test_9955() - { - } - [TestMethod] - public void Test_9956() - { - } - [TestMethod] - public void Test_9957() - { - } - [TestMethod] - public void Test_9958() - { - } - [TestMethod] - public void Test_9959() - { - } - [TestMethod] - public void Test_9960() - { - } - [TestMethod] - public void Test_9961() - { - } - [TestMethod] - public void Test_9962() - { - } - [TestMethod] - public void Test_9963() - { - } - [TestMethod] - public void Test_9964() - { - } - [TestMethod] - public void Test_9965() - { - } - [TestMethod] - public void Test_9966() - { - } - [TestMethod] - public void Test_9967() - { - } - [TestMethod] - public void Test_9968() - { - } - [TestMethod] - public void Test_9969() - { - } - [TestMethod] - public void Test_9970() - { - } - [TestMethod] - public void Test_9971() - { - } - [TestMethod] - public void Test_9972() - { - } - [TestMethod] - public void Test_9973() - { - } - [TestMethod] - public void Test_9974() - { - } - [TestMethod] - public void Test_9975() - { - } - [TestMethod] - public void Test_9976() - { - } - [TestMethod] - public void Test_9977() - { - } - [TestMethod] - public void Test_9978() - { - } - [TestMethod] - public void Test_9979() - { - } - [TestMethod] - public void Test_9980() - { - } - [TestMethod] - public void Test_9981() - { - } - [TestMethod] - public void Test_9982() - { - } - [TestMethod] - public void Test_9983() - { - } - [TestMethod] - public void Test_9984() - { - } - [TestMethod] - public void Test_9985() - { - } - [TestMethod] - public void Test_9986() - { - } - [TestMethod] - public void Test_9987() - { - } - [TestMethod] - public void Test_9988() - { - } - [TestMethod] - public void Test_9989() - { - } - [TestMethod] - public void Test_9990() - { - } - [TestMethod] - public void Test_9991() - { - } - [TestMethod] - public void Test_9992() - { - } - [TestMethod] - public void Test_9993() - { - } - [TestMethod] - public void Test_9994() - { - } - [TestMethod] - public void Test_9995() - { - } - [TestMethod] - public void Test_9996() - { - } - [TestMethod] - public void Test_9997() - { - } - [TestMethod] - public void Test_9998() - { - } - [TestMethod] - public void Test_9999() - { - } - [TestMethod] - public void Test_10000() - { - } - #endregion - - #region FailingTests - #endregion - - } -} diff --git a/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTests.tt b/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTests.tt deleted file mode 100644 index c3a85e841b..0000000000 --- a/test/TestAssets/PerfAssets/MSTestAdapterPerfTestProject/MSTests.tt +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace UnitTestinProgress -{ - [TestClass] - public class MSTests - { -<# - int passedTests = 10000; - int failedTests = 0; - String padding = "00"; - - int count = 1; - String testmethodprefix = "Test_"; - - -#> - - #region PassingTests -<# - for(int i=0;i - [TestMethod] - public void <#=methodName#>() - { - } -<# - count++; - } -#> - #endregion - - #region FailingTests -<# - for(int i=0;i - [TestMethod] - public void <#=methodName#>() - { - Assert.Fail(); - } -<# - count++; - } -#> - #endregion - - } -} diff --git a/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NUnitAdapterPerfTestProject.csproj b/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NUnitAdapterPerfTestProject.csproj deleted file mode 100644 index 02e49fa350..0000000000 --- a/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NUnitAdapterPerfTestProject.csproj +++ /dev/null @@ -1,35 +0,0 @@ - - - - - netcoreapp2.1;net451 - netcoreapp3.1 - false - - - - - - - - - - - TextTemplatingFileGenerator - NunitTests.cs - - - - - - - - - - True - True - NunitTests.tt - - - - diff --git a/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NunitTests.cs b/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NunitTests.cs deleted file mode 100644 index 0852d0bb7c..0000000000 --- a/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NunitTests.cs +++ /dev/null @@ -1,40017 +0,0 @@ -using System; -using NUnit.Framework; - -namespace NUnitAdapterPerfTests -{ - - public class NunitTests - { - - #region PassingTests - [Test] - public void Test_01() - { - } - [Test] - public void Test_02() - { - } - [Test] - public void Test_03() - { - } - [Test] - public void Test_04() - { - } - [Test] - public void Test_05() - { - } - [Test] - public void Test_06() - { - } - [Test] - public void Test_07() - { - } - [Test] - public void Test_08() - { - } - [Test] - public void Test_09() - { - } - [Test] - public void Test_10() - { - } - [Test] - public void Test_11() - { - } - [Test] - public void Test_12() - { - } - [Test] - public void Test_13() - { - } - [Test] - public void Test_14() - { - } - [Test] - public void Test_15() - { - } - [Test] - public void Test_16() - { - } - [Test] - public void Test_17() - { - } - [Test] - public void Test_18() - { - } - [Test] - public void Test_19() - { - } - [Test] - public void Test_20() - { - } - [Test] - public void Test_21() - { - } - [Test] - public void Test_22() - { - } - [Test] - public void Test_23() - { - } - [Test] - public void Test_24() - { - } - [Test] - public void Test_25() - { - } - [Test] - public void Test_26() - { - } - [Test] - public void Test_27() - { - } - [Test] - public void Test_28() - { - } - [Test] - public void Test_29() - { - } - [Test] - public void Test_30() - { - } - [Test] - public void Test_31() - { - } - [Test] - public void Test_32() - { - } - [Test] - public void Test_33() - { - } - [Test] - public void Test_34() - { - } - [Test] - public void Test_35() - { - } - [Test] - public void Test_36() - { - } - [Test] - public void Test_37() - { - } - [Test] - public void Test_38() - { - } - [Test] - public void Test_39() - { - } - [Test] - public void Test_40() - { - } - [Test] - public void Test_41() - { - } - [Test] - public void Test_42() - { - } - [Test] - public void Test_43() - { - } - [Test] - public void Test_44() - { - } - [Test] - public void Test_45() - { - } - [Test] - public void Test_46() - { - } - [Test] - public void Test_47() - { - } - [Test] - public void Test_48() - { - } - [Test] - public void Test_49() - { - } - [Test] - public void Test_50() - { - } - [Test] - public void Test_51() - { - } - [Test] - public void Test_52() - { - } - [Test] - public void Test_53() - { - } - [Test] - public void Test_54() - { - } - [Test] - public void Test_55() - { - } - [Test] - public void Test_56() - { - } - [Test] - public void Test_57() - { - } - [Test] - public void Test_58() - { - } - [Test] - public void Test_59() - { - } - [Test] - public void Test_60() - { - } - [Test] - public void Test_61() - { - } - [Test] - public void Test_62() - { - } - [Test] - public void Test_63() - { - } - [Test] - public void Test_64() - { - } - [Test] - public void Test_65() - { - } - [Test] - public void Test_66() - { - } - [Test] - public void Test_67() - { - } - [Test] - public void Test_68() - { - } - [Test] - public void Test_69() - { - } - [Test] - public void Test_70() - { - } - [Test] - public void Test_71() - { - } - [Test] - public void Test_72() - { - } - [Test] - public void Test_73() - { - } - [Test] - public void Test_74() - { - } - [Test] - public void Test_75() - { - } - [Test] - public void Test_76() - { - } - [Test] - public void Test_77() - { - } - [Test] - public void Test_78() - { - } - [Test] - public void Test_79() - { - } - [Test] - public void Test_80() - { - } - [Test] - public void Test_81() - { - } - [Test] - public void Test_82() - { - } - [Test] - public void Test_83() - { - } - [Test] - public void Test_84() - { - } - [Test] - public void Test_85() - { - } - [Test] - public void Test_86() - { - } - [Test] - public void Test_87() - { - } - [Test] - public void Test_88() - { - } - [Test] - public void Test_89() - { - } - [Test] - public void Test_90() - { - } - [Test] - public void Test_91() - { - } - [Test] - public void Test_92() - { - } - [Test] - public void Test_93() - { - } - [Test] - public void Test_94() - { - } - [Test] - public void Test_95() - { - } - [Test] - public void Test_96() - { - } - [Test] - public void Test_97() - { - } - [Test] - public void Test_98() - { - } - [Test] - public void Test_99() - { - } - [Test] - public void Test_100() - { - } - [Test] - public void Test_101() - { - } - [Test] - public void Test_102() - { - } - [Test] - public void Test_103() - { - } - [Test] - public void Test_104() - { - } - [Test] - public void Test_105() - { - } - [Test] - public void Test_106() - { - } - [Test] - public void Test_107() - { - } - [Test] - public void Test_108() - { - } - [Test] - public void Test_109() - { - } - [Test] - public void Test_110() - { - } - [Test] - public void Test_111() - { - } - [Test] - public void Test_112() - { - } - [Test] - public void Test_113() - { - } - [Test] - public void Test_114() - { - } - [Test] - public void Test_115() - { - } - [Test] - public void Test_116() - { - } - [Test] - public void Test_117() - { - } - [Test] - public void Test_118() - { - } - [Test] - public void Test_119() - { - } - [Test] - public void Test_120() - { - } - [Test] - public void Test_121() - { - } - [Test] - public void Test_122() - { - } - [Test] - public void Test_123() - { - } - [Test] - public void Test_124() - { - } - [Test] - public void Test_125() - { - } - [Test] - public void Test_126() - { - } - [Test] - public void Test_127() - { - } - [Test] - public void Test_128() - { - } - [Test] - public void Test_129() - { - } - [Test] - public void Test_130() - { - } - [Test] - public void Test_131() - { - } - [Test] - public void Test_132() - { - } - [Test] - public void Test_133() - { - } - [Test] - public void Test_134() - { - } - [Test] - public void Test_135() - { - } - [Test] - public void Test_136() - { - } - [Test] - public void Test_137() - { - } - [Test] - public void Test_138() - { - } - [Test] - public void Test_139() - { - } - [Test] - public void Test_140() - { - } - [Test] - public void Test_141() - { - } - [Test] - public void Test_142() - { - } - [Test] - public void Test_143() - { - } - [Test] - public void Test_144() - { - } - [Test] - public void Test_145() - { - } - [Test] - public void Test_146() - { - } - [Test] - public void Test_147() - { - } - [Test] - public void Test_148() - { - } - [Test] - public void Test_149() - { - } - [Test] - public void Test_150() - { - } - [Test] - public void Test_151() - { - } - [Test] - public void Test_152() - { - } - [Test] - public void Test_153() - { - } - [Test] - public void Test_154() - { - } - [Test] - public void Test_155() - { - } - [Test] - public void Test_156() - { - } - [Test] - public void Test_157() - { - } - [Test] - public void Test_158() - { - } - [Test] - public void Test_159() - { - } - [Test] - public void Test_160() - { - } - [Test] - public void Test_161() - { - } - [Test] - public void Test_162() - { - } - [Test] - public void Test_163() - { - } - [Test] - public void Test_164() - { - } - [Test] - public void Test_165() - { - } - [Test] - public void Test_166() - { - } - [Test] - public void Test_167() - { - } - [Test] - public void Test_168() - { - } - [Test] - public void Test_169() - { - } - [Test] - public void Test_170() - { - } - [Test] - public void Test_171() - { - } - [Test] - public void Test_172() - { - } - [Test] - public void Test_173() - { - } - [Test] - public void Test_174() - { - } - [Test] - public void Test_175() - { - } - [Test] - public void Test_176() - { - } - [Test] - public void Test_177() - { - } - [Test] - public void Test_178() - { - } - [Test] - public void Test_179() - { - } - [Test] - public void Test_180() - { - } - [Test] - public void Test_181() - { - } - [Test] - public void Test_182() - { - } - [Test] - public void Test_183() - { - } - [Test] - public void Test_184() - { - } - [Test] - public void Test_185() - { - } - [Test] - public void Test_186() - { - } - [Test] - public void Test_187() - { - } - [Test] - public void Test_188() - { - } - [Test] - public void Test_189() - { - } - [Test] - public void Test_190() - { - } - [Test] - public void Test_191() - { - } - [Test] - public void Test_192() - { - } - [Test] - public void Test_193() - { - } - [Test] - public void Test_194() - { - } - [Test] - public void Test_195() - { - } - [Test] - public void Test_196() - { - } - [Test] - public void Test_197() - { - } - [Test] - public void Test_198() - { - } - [Test] - public void Test_199() - { - } - [Test] - public void Test_200() - { - } - [Test] - public void Test_201() - { - } - [Test] - public void Test_202() - { - } - [Test] - public void Test_203() - { - } - [Test] - public void Test_204() - { - } - [Test] - public void Test_205() - { - } - [Test] - public void Test_206() - { - } - [Test] - public void Test_207() - { - } - [Test] - public void Test_208() - { - } - [Test] - public void Test_209() - { - } - [Test] - public void Test_210() - { - } - [Test] - public void Test_211() - { - } - [Test] - public void Test_212() - { - } - [Test] - public void Test_213() - { - } - [Test] - public void Test_214() - { - } - [Test] - public void Test_215() - { - } - [Test] - public void Test_216() - { - } - [Test] - public void Test_217() - { - } - [Test] - public void Test_218() - { - } - [Test] - public void Test_219() - { - } - [Test] - public void Test_220() - { - } - [Test] - public void Test_221() - { - } - [Test] - public void Test_222() - { - } - [Test] - public void Test_223() - { - } - [Test] - public void Test_224() - { - } - [Test] - public void Test_225() - { - } - [Test] - public void Test_226() - { - } - [Test] - public void Test_227() - { - } - [Test] - public void Test_228() - { - } - [Test] - public void Test_229() - { - } - [Test] - public void Test_230() - { - } - [Test] - public void Test_231() - { - } - [Test] - public void Test_232() - { - } - [Test] - public void Test_233() - { - } - [Test] - public void Test_234() - { - } - [Test] - public void Test_235() - { - } - [Test] - public void Test_236() - { - } - [Test] - public void Test_237() - { - } - [Test] - public void Test_238() - { - } - [Test] - public void Test_239() - { - } - [Test] - public void Test_240() - { - } - [Test] - public void Test_241() - { - } - [Test] - public void Test_242() - { - } - [Test] - public void Test_243() - { - } - [Test] - public void Test_244() - { - } - [Test] - public void Test_245() - { - } - [Test] - public void Test_246() - { - } - [Test] - public void Test_247() - { - } - [Test] - public void Test_248() - { - } - [Test] - public void Test_249() - { - } - [Test] - public void Test_250() - { - } - [Test] - public void Test_251() - { - } - [Test] - public void Test_252() - { - } - [Test] - public void Test_253() - { - } - [Test] - public void Test_254() - { - } - [Test] - public void Test_255() - { - } - [Test] - public void Test_256() - { - } - [Test] - public void Test_257() - { - } - [Test] - public void Test_258() - { - } - [Test] - public void Test_259() - { - } - [Test] - public void Test_260() - { - } - [Test] - public void Test_261() - { - } - [Test] - public void Test_262() - { - } - [Test] - public void Test_263() - { - } - [Test] - public void Test_264() - { - } - [Test] - public void Test_265() - { - } - [Test] - public void Test_266() - { - } - [Test] - public void Test_267() - { - } - [Test] - public void Test_268() - { - } - [Test] - public void Test_269() - { - } - [Test] - public void Test_270() - { - } - [Test] - public void Test_271() - { - } - [Test] - public void Test_272() - { - } - [Test] - public void Test_273() - { - } - [Test] - public void Test_274() - { - } - [Test] - public void Test_275() - { - } - [Test] - public void Test_276() - { - } - [Test] - public void Test_277() - { - } - [Test] - public void Test_278() - { - } - [Test] - public void Test_279() - { - } - [Test] - public void Test_280() - { - } - [Test] - public void Test_281() - { - } - [Test] - public void Test_282() - { - } - [Test] - public void Test_283() - { - } - [Test] - public void Test_284() - { - } - [Test] - public void Test_285() - { - } - [Test] - public void Test_286() - { - } - [Test] - public void Test_287() - { - } - [Test] - public void Test_288() - { - } - [Test] - public void Test_289() - { - } - [Test] - public void Test_290() - { - } - [Test] - public void Test_291() - { - } - [Test] - public void Test_292() - { - } - [Test] - public void Test_293() - { - } - [Test] - public void Test_294() - { - } - [Test] - public void Test_295() - { - } - [Test] - public void Test_296() - { - } - [Test] - public void Test_297() - { - } - [Test] - public void Test_298() - { - } - [Test] - public void Test_299() - { - } - [Test] - public void Test_300() - { - } - [Test] - public void Test_301() - { - } - [Test] - public void Test_302() - { - } - [Test] - public void Test_303() - { - } - [Test] - public void Test_304() - { - } - [Test] - public void Test_305() - { - } - [Test] - public void Test_306() - { - } - [Test] - public void Test_307() - { - } - [Test] - public void Test_308() - { - } - [Test] - public void Test_309() - { - } - [Test] - public void Test_310() - { - } - [Test] - public void Test_311() - { - } - [Test] - public void Test_312() - { - } - [Test] - public void Test_313() - { - } - [Test] - public void Test_314() - { - } - [Test] - public void Test_315() - { - } - [Test] - public void Test_316() - { - } - [Test] - public void Test_317() - { - } - [Test] - public void Test_318() - { - } - [Test] - public void Test_319() - { - } - [Test] - public void Test_320() - { - } - [Test] - public void Test_321() - { - } - [Test] - public void Test_322() - { - } - [Test] - public void Test_323() - { - } - [Test] - public void Test_324() - { - } - [Test] - public void Test_325() - { - } - [Test] - public void Test_326() - { - } - [Test] - public void Test_327() - { - } - [Test] - public void Test_328() - { - } - [Test] - public void Test_329() - { - } - [Test] - public void Test_330() - { - } - [Test] - public void Test_331() - { - } - [Test] - public void Test_332() - { - } - [Test] - public void Test_333() - { - } - [Test] - public void Test_334() - { - } - [Test] - public void Test_335() - { - } - [Test] - public void Test_336() - { - } - [Test] - public void Test_337() - { - } - [Test] - public void Test_338() - { - } - [Test] - public void Test_339() - { - } - [Test] - public void Test_340() - { - } - [Test] - public void Test_341() - { - } - [Test] - public void Test_342() - { - } - [Test] - public void Test_343() - { - } - [Test] - public void Test_344() - { - } - [Test] - public void Test_345() - { - } - [Test] - public void Test_346() - { - } - [Test] - public void Test_347() - { - } - [Test] - public void Test_348() - { - } - [Test] - public void Test_349() - { - } - [Test] - public void Test_350() - { - } - [Test] - public void Test_351() - { - } - [Test] - public void Test_352() - { - } - [Test] - public void Test_353() - { - } - [Test] - public void Test_354() - { - } - [Test] - public void Test_355() - { - } - [Test] - public void Test_356() - { - } - [Test] - public void Test_357() - { - } - [Test] - public void Test_358() - { - } - [Test] - public void Test_359() - { - } - [Test] - public void Test_360() - { - } - [Test] - public void Test_361() - { - } - [Test] - public void Test_362() - { - } - [Test] - public void Test_363() - { - } - [Test] - public void Test_364() - { - } - [Test] - public void Test_365() - { - } - [Test] - public void Test_366() - { - } - [Test] - public void Test_367() - { - } - [Test] - public void Test_368() - { - } - [Test] - public void Test_369() - { - } - [Test] - public void Test_370() - { - } - [Test] - public void Test_371() - { - } - [Test] - public void Test_372() - { - } - [Test] - public void Test_373() - { - } - [Test] - public void Test_374() - { - } - [Test] - public void Test_375() - { - } - [Test] - public void Test_376() - { - } - [Test] - public void Test_377() - { - } - [Test] - public void Test_378() - { - } - [Test] - public void Test_379() - { - } - [Test] - public void Test_380() - { - } - [Test] - public void Test_381() - { - } - [Test] - public void Test_382() - { - } - [Test] - public void Test_383() - { - } - [Test] - public void Test_384() - { - } - [Test] - public void Test_385() - { - } - [Test] - public void Test_386() - { - } - [Test] - public void Test_387() - { - } - [Test] - public void Test_388() - { - } - [Test] - public void Test_389() - { - } - [Test] - public void Test_390() - { - } - [Test] - public void Test_391() - { - } - [Test] - public void Test_392() - { - } - [Test] - public void Test_393() - { - } - [Test] - public void Test_394() - { - } - [Test] - public void Test_395() - { - } - [Test] - public void Test_396() - { - } - [Test] - public void Test_397() - { - } - [Test] - public void Test_398() - { - } - [Test] - public void Test_399() - { - } - [Test] - public void Test_400() - { - } - [Test] - public void Test_401() - { - } - [Test] - public void Test_402() - { - } - [Test] - public void Test_403() - { - } - [Test] - public void Test_404() - { - } - [Test] - public void Test_405() - { - } - [Test] - public void Test_406() - { - } - [Test] - public void Test_407() - { - } - [Test] - public void Test_408() - { - } - [Test] - public void Test_409() - { - } - [Test] - public void Test_410() - { - } - [Test] - public void Test_411() - { - } - [Test] - public void Test_412() - { - } - [Test] - public void Test_413() - { - } - [Test] - public void Test_414() - { - } - [Test] - public void Test_415() - { - } - [Test] - public void Test_416() - { - } - [Test] - public void Test_417() - { - } - [Test] - public void Test_418() - { - } - [Test] - public void Test_419() - { - } - [Test] - public void Test_420() - { - } - [Test] - public void Test_421() - { - } - [Test] - public void Test_422() - { - } - [Test] - public void Test_423() - { - } - [Test] - public void Test_424() - { - } - [Test] - public void Test_425() - { - } - [Test] - public void Test_426() - { - } - [Test] - public void Test_427() - { - } - [Test] - public void Test_428() - { - } - [Test] - public void Test_429() - { - } - [Test] - public void Test_430() - { - } - [Test] - public void Test_431() - { - } - [Test] - public void Test_432() - { - } - [Test] - public void Test_433() - { - } - [Test] - public void Test_434() - { - } - [Test] - public void Test_435() - { - } - [Test] - public void Test_436() - { - } - [Test] - public void Test_437() - { - } - [Test] - public void Test_438() - { - } - [Test] - public void Test_439() - { - } - [Test] - public void Test_440() - { - } - [Test] - public void Test_441() - { - } - [Test] - public void Test_442() - { - } - [Test] - public void Test_443() - { - } - [Test] - public void Test_444() - { - } - [Test] - public void Test_445() - { - } - [Test] - public void Test_446() - { - } - [Test] - public void Test_447() - { - } - [Test] - public void Test_448() - { - } - [Test] - public void Test_449() - { - } - [Test] - public void Test_450() - { - } - [Test] - public void Test_451() - { - } - [Test] - public void Test_452() - { - } - [Test] - public void Test_453() - { - } - [Test] - public void Test_454() - { - } - [Test] - public void Test_455() - { - } - [Test] - public void Test_456() - { - } - [Test] - public void Test_457() - { - } - [Test] - public void Test_458() - { - } - [Test] - public void Test_459() - { - } - [Test] - public void Test_460() - { - } - [Test] - public void Test_461() - { - } - [Test] - public void Test_462() - { - } - [Test] - public void Test_463() - { - } - [Test] - public void Test_464() - { - } - [Test] - public void Test_465() - { - } - [Test] - public void Test_466() - { - } - [Test] - public void Test_467() - { - } - [Test] - public void Test_468() - { - } - [Test] - public void Test_469() - { - } - [Test] - public void Test_470() - { - } - [Test] - public void Test_471() - { - } - [Test] - public void Test_472() - { - } - [Test] - public void Test_473() - { - } - [Test] - public void Test_474() - { - } - [Test] - public void Test_475() - { - } - [Test] - public void Test_476() - { - } - [Test] - public void Test_477() - { - } - [Test] - public void Test_478() - { - } - [Test] - public void Test_479() - { - } - [Test] - public void Test_480() - { - } - [Test] - public void Test_481() - { - } - [Test] - public void Test_482() - { - } - [Test] - public void Test_483() - { - } - [Test] - public void Test_484() - { - } - [Test] - public void Test_485() - { - } - [Test] - public void Test_486() - { - } - [Test] - public void Test_487() - { - } - [Test] - public void Test_488() - { - } - [Test] - public void Test_489() - { - } - [Test] - public void Test_490() - { - } - [Test] - public void Test_491() - { - } - [Test] - public void Test_492() - { - } - [Test] - public void Test_493() - { - } - [Test] - public void Test_494() - { - } - [Test] - public void Test_495() - { - } - [Test] - public void Test_496() - { - } - [Test] - public void Test_497() - { - } - [Test] - public void Test_498() - { - } - [Test] - public void Test_499() - { - } - [Test] - public void Test_500() - { - } - [Test] - public void Test_501() - { - } - [Test] - public void Test_502() - { - } - [Test] - public void Test_503() - { - } - [Test] - public void Test_504() - { - } - [Test] - public void Test_505() - { - } - [Test] - public void Test_506() - { - } - [Test] - public void Test_507() - { - } - [Test] - public void Test_508() - { - } - [Test] - public void Test_509() - { - } - [Test] - public void Test_510() - { - } - [Test] - public void Test_511() - { - } - [Test] - public void Test_512() - { - } - [Test] - public void Test_513() - { - } - [Test] - public void Test_514() - { - } - [Test] - public void Test_515() - { - } - [Test] - public void Test_516() - { - } - [Test] - public void Test_517() - { - } - [Test] - public void Test_518() - { - } - [Test] - public void Test_519() - { - } - [Test] - public void Test_520() - { - } - [Test] - public void Test_521() - { - } - [Test] - public void Test_522() - { - } - [Test] - public void Test_523() - { - } - [Test] - public void Test_524() - { - } - [Test] - public void Test_525() - { - } - [Test] - public void Test_526() - { - } - [Test] - public void Test_527() - { - } - [Test] - public void Test_528() - { - } - [Test] - public void Test_529() - { - } - [Test] - public void Test_530() - { - } - [Test] - public void Test_531() - { - } - [Test] - public void Test_532() - { - } - [Test] - public void Test_533() - { - } - [Test] - public void Test_534() - { - } - [Test] - public void Test_535() - { - } - [Test] - public void Test_536() - { - } - [Test] - public void Test_537() - { - } - [Test] - public void Test_538() - { - } - [Test] - public void Test_539() - { - } - [Test] - public void Test_540() - { - } - [Test] - public void Test_541() - { - } - [Test] - public void Test_542() - { - } - [Test] - public void Test_543() - { - } - [Test] - public void Test_544() - { - } - [Test] - public void Test_545() - { - } - [Test] - public void Test_546() - { - } - [Test] - public void Test_547() - { - } - [Test] - public void Test_548() - { - } - [Test] - public void Test_549() - { - } - [Test] - public void Test_550() - { - } - [Test] - public void Test_551() - { - } - [Test] - public void Test_552() - { - } - [Test] - public void Test_553() - { - } - [Test] - public void Test_554() - { - } - [Test] - public void Test_555() - { - } - [Test] - public void Test_556() - { - } - [Test] - public void Test_557() - { - } - [Test] - public void Test_558() - { - } - [Test] - public void Test_559() - { - } - [Test] - public void Test_560() - { - } - [Test] - public void Test_561() - { - } - [Test] - public void Test_562() - { - } - [Test] - public void Test_563() - { - } - [Test] - public void Test_564() - { - } - [Test] - public void Test_565() - { - } - [Test] - public void Test_566() - { - } - [Test] - public void Test_567() - { - } - [Test] - public void Test_568() - { - } - [Test] - public void Test_569() - { - } - [Test] - public void Test_570() - { - } - [Test] - public void Test_571() - { - } - [Test] - public void Test_572() - { - } - [Test] - public void Test_573() - { - } - [Test] - public void Test_574() - { - } - [Test] - public void Test_575() - { - } - [Test] - public void Test_576() - { - } - [Test] - public void Test_577() - { - } - [Test] - public void Test_578() - { - } - [Test] - public void Test_579() - { - } - [Test] - public void Test_580() - { - } - [Test] - public void Test_581() - { - } - [Test] - public void Test_582() - { - } - [Test] - public void Test_583() - { - } - [Test] - public void Test_584() - { - } - [Test] - public void Test_585() - { - } - [Test] - public void Test_586() - { - } - [Test] - public void Test_587() - { - } - [Test] - public void Test_588() - { - } - [Test] - public void Test_589() - { - } - [Test] - public void Test_590() - { - } - [Test] - public void Test_591() - { - } - [Test] - public void Test_592() - { - } - [Test] - public void Test_593() - { - } - [Test] - public void Test_594() - { - } - [Test] - public void Test_595() - { - } - [Test] - public void Test_596() - { - } - [Test] - public void Test_597() - { - } - [Test] - public void Test_598() - { - } - [Test] - public void Test_599() - { - } - [Test] - public void Test_600() - { - } - [Test] - public void Test_601() - { - } - [Test] - public void Test_602() - { - } - [Test] - public void Test_603() - { - } - [Test] - public void Test_604() - { - } - [Test] - public void Test_605() - { - } - [Test] - public void Test_606() - { - } - [Test] - public void Test_607() - { - } - [Test] - public void Test_608() - { - } - [Test] - public void Test_609() - { - } - [Test] - public void Test_610() - { - } - [Test] - public void Test_611() - { - } - [Test] - public void Test_612() - { - } - [Test] - public void Test_613() - { - } - [Test] - public void Test_614() - { - } - [Test] - public void Test_615() - { - } - [Test] - public void Test_616() - { - } - [Test] - public void Test_617() - { - } - [Test] - public void Test_618() - { - } - [Test] - public void Test_619() - { - } - [Test] - public void Test_620() - { - } - [Test] - public void Test_621() - { - } - [Test] - public void Test_622() - { - } - [Test] - public void Test_623() - { - } - [Test] - public void Test_624() - { - } - [Test] - public void Test_625() - { - } - [Test] - public void Test_626() - { - } - [Test] - public void Test_627() - { - } - [Test] - public void Test_628() - { - } - [Test] - public void Test_629() - { - } - [Test] - public void Test_630() - { - } - [Test] - public void Test_631() - { - } - [Test] - public void Test_632() - { - } - [Test] - public void Test_633() - { - } - [Test] - public void Test_634() - { - } - [Test] - public void Test_635() - { - } - [Test] - public void Test_636() - { - } - [Test] - public void Test_637() - { - } - [Test] - public void Test_638() - { - } - [Test] - public void Test_639() - { - } - [Test] - public void Test_640() - { - } - [Test] - public void Test_641() - { - } - [Test] - public void Test_642() - { - } - [Test] - public void Test_643() - { - } - [Test] - public void Test_644() - { - } - [Test] - public void Test_645() - { - } - [Test] - public void Test_646() - { - } - [Test] - public void Test_647() - { - } - [Test] - public void Test_648() - { - } - [Test] - public void Test_649() - { - } - [Test] - public void Test_650() - { - } - [Test] - public void Test_651() - { - } - [Test] - public void Test_652() - { - } - [Test] - public void Test_653() - { - } - [Test] - public void Test_654() - { - } - [Test] - public void Test_655() - { - } - [Test] - public void Test_656() - { - } - [Test] - public void Test_657() - { - } - [Test] - public void Test_658() - { - } - [Test] - public void Test_659() - { - } - [Test] - public void Test_660() - { - } - [Test] - public void Test_661() - { - } - [Test] - public void Test_662() - { - } - [Test] - public void Test_663() - { - } - [Test] - public void Test_664() - { - } - [Test] - public void Test_665() - { - } - [Test] - public void Test_666() - { - } - [Test] - public void Test_667() - { - } - [Test] - public void Test_668() - { - } - [Test] - public void Test_669() - { - } - [Test] - public void Test_670() - { - } - [Test] - public void Test_671() - { - } - [Test] - public void Test_672() - { - } - [Test] - public void Test_673() - { - } - [Test] - public void Test_674() - { - } - [Test] - public void Test_675() - { - } - [Test] - public void Test_676() - { - } - [Test] - public void Test_677() - { - } - [Test] - public void Test_678() - { - } - [Test] - public void Test_679() - { - } - [Test] - public void Test_680() - { - } - [Test] - public void Test_681() - { - } - [Test] - public void Test_682() - { - } - [Test] - public void Test_683() - { - } - [Test] - public void Test_684() - { - } - [Test] - public void Test_685() - { - } - [Test] - public void Test_686() - { - } - [Test] - public void Test_687() - { - } - [Test] - public void Test_688() - { - } - [Test] - public void Test_689() - { - } - [Test] - public void Test_690() - { - } - [Test] - public void Test_691() - { - } - [Test] - public void Test_692() - { - } - [Test] - public void Test_693() - { - } - [Test] - public void Test_694() - { - } - [Test] - public void Test_695() - { - } - [Test] - public void Test_696() - { - } - [Test] - public void Test_697() - { - } - [Test] - public void Test_698() - { - } - [Test] - public void Test_699() - { - } - [Test] - public void Test_700() - { - } - [Test] - public void Test_701() - { - } - [Test] - public void Test_702() - { - } - [Test] - public void Test_703() - { - } - [Test] - public void Test_704() - { - } - [Test] - public void Test_705() - { - } - [Test] - public void Test_706() - { - } - [Test] - public void Test_707() - { - } - [Test] - public void Test_708() - { - } - [Test] - public void Test_709() - { - } - [Test] - public void Test_710() - { - } - [Test] - public void Test_711() - { - } - [Test] - public void Test_712() - { - } - [Test] - public void Test_713() - { - } - [Test] - public void Test_714() - { - } - [Test] - public void Test_715() - { - } - [Test] - public void Test_716() - { - } - [Test] - public void Test_717() - { - } - [Test] - public void Test_718() - { - } - [Test] - public void Test_719() - { - } - [Test] - public void Test_720() - { - } - [Test] - public void Test_721() - { - } - [Test] - public void Test_722() - { - } - [Test] - public void Test_723() - { - } - [Test] - public void Test_724() - { - } - [Test] - public void Test_725() - { - } - [Test] - public void Test_726() - { - } - [Test] - public void Test_727() - { - } - [Test] - public void Test_728() - { - } - [Test] - public void Test_729() - { - } - [Test] - public void Test_730() - { - } - [Test] - public void Test_731() - { - } - [Test] - public void Test_732() - { - } - [Test] - public void Test_733() - { - } - [Test] - public void Test_734() - { - } - [Test] - public void Test_735() - { - } - [Test] - public void Test_736() - { - } - [Test] - public void Test_737() - { - } - [Test] - public void Test_738() - { - } - [Test] - public void Test_739() - { - } - [Test] - public void Test_740() - { - } - [Test] - public void Test_741() - { - } - [Test] - public void Test_742() - { - } - [Test] - public void Test_743() - { - } - [Test] - public void Test_744() - { - } - [Test] - public void Test_745() - { - } - [Test] - public void Test_746() - { - } - [Test] - public void Test_747() - { - } - [Test] - public void Test_748() - { - } - [Test] - public void Test_749() - { - } - [Test] - public void Test_750() - { - } - [Test] - public void Test_751() - { - } - [Test] - public void Test_752() - { - } - [Test] - public void Test_753() - { - } - [Test] - public void Test_754() - { - } - [Test] - public void Test_755() - { - } - [Test] - public void Test_756() - { - } - [Test] - public void Test_757() - { - } - [Test] - public void Test_758() - { - } - [Test] - public void Test_759() - { - } - [Test] - public void Test_760() - { - } - [Test] - public void Test_761() - { - } - [Test] - public void Test_762() - { - } - [Test] - public void Test_763() - { - } - [Test] - public void Test_764() - { - } - [Test] - public void Test_765() - { - } - [Test] - public void Test_766() - { - } - [Test] - public void Test_767() - { - } - [Test] - public void Test_768() - { - } - [Test] - public void Test_769() - { - } - [Test] - public void Test_770() - { - } - [Test] - public void Test_771() - { - } - [Test] - public void Test_772() - { - } - [Test] - public void Test_773() - { - } - [Test] - public void Test_774() - { - } - [Test] - public void Test_775() - { - } - [Test] - public void Test_776() - { - } - [Test] - public void Test_777() - { - } - [Test] - public void Test_778() - { - } - [Test] - public void Test_779() - { - } - [Test] - public void Test_780() - { - } - [Test] - public void Test_781() - { - } - [Test] - public void Test_782() - { - } - [Test] - public void Test_783() - { - } - [Test] - public void Test_784() - { - } - [Test] - public void Test_785() - { - } - [Test] - public void Test_786() - { - } - [Test] - public void Test_787() - { - } - [Test] - public void Test_788() - { - } - [Test] - public void Test_789() - { - } - [Test] - public void Test_790() - { - } - [Test] - public void Test_791() - { - } - [Test] - public void Test_792() - { - } - [Test] - public void Test_793() - { - } - [Test] - public void Test_794() - { - } - [Test] - public void Test_795() - { - } - [Test] - public void Test_796() - { - } - [Test] - public void Test_797() - { - } - [Test] - public void Test_798() - { - } - [Test] - public void Test_799() - { - } - [Test] - public void Test_800() - { - } - [Test] - public void Test_801() - { - } - [Test] - public void Test_802() - { - } - [Test] - public void Test_803() - { - } - [Test] - public void Test_804() - { - } - [Test] - public void Test_805() - { - } - [Test] - public void Test_806() - { - } - [Test] - public void Test_807() - { - } - [Test] - public void Test_808() - { - } - [Test] - public void Test_809() - { - } - [Test] - public void Test_810() - { - } - [Test] - public void Test_811() - { - } - [Test] - public void Test_812() - { - } - [Test] - public void Test_813() - { - } - [Test] - public void Test_814() - { - } - [Test] - public void Test_815() - { - } - [Test] - public void Test_816() - { - } - [Test] - public void Test_817() - { - } - [Test] - public void Test_818() - { - } - [Test] - public void Test_819() - { - } - [Test] - public void Test_820() - { - } - [Test] - public void Test_821() - { - } - [Test] - public void Test_822() - { - } - [Test] - public void Test_823() - { - } - [Test] - public void Test_824() - { - } - [Test] - public void Test_825() - { - } - [Test] - public void Test_826() - { - } - [Test] - public void Test_827() - { - } - [Test] - public void Test_828() - { - } - [Test] - public void Test_829() - { - } - [Test] - public void Test_830() - { - } - [Test] - public void Test_831() - { - } - [Test] - public void Test_832() - { - } - [Test] - public void Test_833() - { - } - [Test] - public void Test_834() - { - } - [Test] - public void Test_835() - { - } - [Test] - public void Test_836() - { - } - [Test] - public void Test_837() - { - } - [Test] - public void Test_838() - { - } - [Test] - public void Test_839() - { - } - [Test] - public void Test_840() - { - } - [Test] - public void Test_841() - { - } - [Test] - public void Test_842() - { - } - [Test] - public void Test_843() - { - } - [Test] - public void Test_844() - { - } - [Test] - public void Test_845() - { - } - [Test] - public void Test_846() - { - } - [Test] - public void Test_847() - { - } - [Test] - public void Test_848() - { - } - [Test] - public void Test_849() - { - } - [Test] - public void Test_850() - { - } - [Test] - public void Test_851() - { - } - [Test] - public void Test_852() - { - } - [Test] - public void Test_853() - { - } - [Test] - public void Test_854() - { - } - [Test] - public void Test_855() - { - } - [Test] - public void Test_856() - { - } - [Test] - public void Test_857() - { - } - [Test] - public void Test_858() - { - } - [Test] - public void Test_859() - { - } - [Test] - public void Test_860() - { - } - [Test] - public void Test_861() - { - } - [Test] - public void Test_862() - { - } - [Test] - public void Test_863() - { - } - [Test] - public void Test_864() - { - } - [Test] - public void Test_865() - { - } - [Test] - public void Test_866() - { - } - [Test] - public void Test_867() - { - } - [Test] - public void Test_868() - { - } - [Test] - public void Test_869() - { - } - [Test] - public void Test_870() - { - } - [Test] - public void Test_871() - { - } - [Test] - public void Test_872() - { - } - [Test] - public void Test_873() - { - } - [Test] - public void Test_874() - { - } - [Test] - public void Test_875() - { - } - [Test] - public void Test_876() - { - } - [Test] - public void Test_877() - { - } - [Test] - public void Test_878() - { - } - [Test] - public void Test_879() - { - } - [Test] - public void Test_880() - { - } - [Test] - public void Test_881() - { - } - [Test] - public void Test_882() - { - } - [Test] - public void Test_883() - { - } - [Test] - public void Test_884() - { - } - [Test] - public void Test_885() - { - } - [Test] - public void Test_886() - { - } - [Test] - public void Test_887() - { - } - [Test] - public void Test_888() - { - } - [Test] - public void Test_889() - { - } - [Test] - public void Test_890() - { - } - [Test] - public void Test_891() - { - } - [Test] - public void Test_892() - { - } - [Test] - public void Test_893() - { - } - [Test] - public void Test_894() - { - } - [Test] - public void Test_895() - { - } - [Test] - public void Test_896() - { - } - [Test] - public void Test_897() - { - } - [Test] - public void Test_898() - { - } - [Test] - public void Test_899() - { - } - [Test] - public void Test_900() - { - } - [Test] - public void Test_901() - { - } - [Test] - public void Test_902() - { - } - [Test] - public void Test_903() - { - } - [Test] - public void Test_904() - { - } - [Test] - public void Test_905() - { - } - [Test] - public void Test_906() - { - } - [Test] - public void Test_907() - { - } - [Test] - public void Test_908() - { - } - [Test] - public void Test_909() - { - } - [Test] - public void Test_910() - { - } - [Test] - public void Test_911() - { - } - [Test] - public void Test_912() - { - } - [Test] - public void Test_913() - { - } - [Test] - public void Test_914() - { - } - [Test] - public void Test_915() - { - } - [Test] - public void Test_916() - { - } - [Test] - public void Test_917() - { - } - [Test] - public void Test_918() - { - } - [Test] - public void Test_919() - { - } - [Test] - public void Test_920() - { - } - [Test] - public void Test_921() - { - } - [Test] - public void Test_922() - { - } - [Test] - public void Test_923() - { - } - [Test] - public void Test_924() - { - } - [Test] - public void Test_925() - { - } - [Test] - public void Test_926() - { - } - [Test] - public void Test_927() - { - } - [Test] - public void Test_928() - { - } - [Test] - public void Test_929() - { - } - [Test] - public void Test_930() - { - } - [Test] - public void Test_931() - { - } - [Test] - public void Test_932() - { - } - [Test] - public void Test_933() - { - } - [Test] - public void Test_934() - { - } - [Test] - public void Test_935() - { - } - [Test] - public void Test_936() - { - } - [Test] - public void Test_937() - { - } - [Test] - public void Test_938() - { - } - [Test] - public void Test_939() - { - } - [Test] - public void Test_940() - { - } - [Test] - public void Test_941() - { - } - [Test] - public void Test_942() - { - } - [Test] - public void Test_943() - { - } - [Test] - public void Test_944() - { - } - [Test] - public void Test_945() - { - } - [Test] - public void Test_946() - { - } - [Test] - public void Test_947() - { - } - [Test] - public void Test_948() - { - } - [Test] - public void Test_949() - { - } - [Test] - public void Test_950() - { - } - [Test] - public void Test_951() - { - } - [Test] - public void Test_952() - { - } - [Test] - public void Test_953() - { - } - [Test] - public void Test_954() - { - } - [Test] - public void Test_955() - { - } - [Test] - public void Test_956() - { - } - [Test] - public void Test_957() - { - } - [Test] - public void Test_958() - { - } - [Test] - public void Test_959() - { - } - [Test] - public void Test_960() - { - } - [Test] - public void Test_961() - { - } - [Test] - public void Test_962() - { - } - [Test] - public void Test_963() - { - } - [Test] - public void Test_964() - { - } - [Test] - public void Test_965() - { - } - [Test] - public void Test_966() - { - } - [Test] - public void Test_967() - { - } - [Test] - public void Test_968() - { - } - [Test] - public void Test_969() - { - } - [Test] - public void Test_970() - { - } - [Test] - public void Test_971() - { - } - [Test] - public void Test_972() - { - } - [Test] - public void Test_973() - { - } - [Test] - public void Test_974() - { - } - [Test] - public void Test_975() - { - } - [Test] - public void Test_976() - { - } - [Test] - public void Test_977() - { - } - [Test] - public void Test_978() - { - } - [Test] - public void Test_979() - { - } - [Test] - public void Test_980() - { - } - [Test] - public void Test_981() - { - } - [Test] - public void Test_982() - { - } - [Test] - public void Test_983() - { - } - [Test] - public void Test_984() - { - } - [Test] - public void Test_985() - { - } - [Test] - public void Test_986() - { - } - [Test] - public void Test_987() - { - } - [Test] - public void Test_988() - { - } - [Test] - public void Test_989() - { - } - [Test] - public void Test_990() - { - } - [Test] - public void Test_991() - { - } - [Test] - public void Test_992() - { - } - [Test] - public void Test_993() - { - } - [Test] - public void Test_994() - { - } - [Test] - public void Test_995() - { - } - [Test] - public void Test_996() - { - } - [Test] - public void Test_997() - { - } - [Test] - public void Test_998() - { - } - [Test] - public void Test_999() - { - } - [Test] - public void Test_1000() - { - } - [Test] - public void Test_1001() - { - } - [Test] - public void Test_1002() - { - } - [Test] - public void Test_1003() - { - } - [Test] - public void Test_1004() - { - } - [Test] - public void Test_1005() - { - } - [Test] - public void Test_1006() - { - } - [Test] - public void Test_1007() - { - } - [Test] - public void Test_1008() - { - } - [Test] - public void Test_1009() - { - } - [Test] - public void Test_1010() - { - } - [Test] - public void Test_1011() - { - } - [Test] - public void Test_1012() - { - } - [Test] - public void Test_1013() - { - } - [Test] - public void Test_1014() - { - } - [Test] - public void Test_1015() - { - } - [Test] - public void Test_1016() - { - } - [Test] - public void Test_1017() - { - } - [Test] - public void Test_1018() - { - } - [Test] - public void Test_1019() - { - } - [Test] - public void Test_1020() - { - } - [Test] - public void Test_1021() - { - } - [Test] - public void Test_1022() - { - } - [Test] - public void Test_1023() - { - } - [Test] - public void Test_1024() - { - } - [Test] - public void Test_1025() - { - } - [Test] - public void Test_1026() - { - } - [Test] - public void Test_1027() - { - } - [Test] - public void Test_1028() - { - } - [Test] - public void Test_1029() - { - } - [Test] - public void Test_1030() - { - } - [Test] - public void Test_1031() - { - } - [Test] - public void Test_1032() - { - } - [Test] - public void Test_1033() - { - } - [Test] - public void Test_1034() - { - } - [Test] - public void Test_1035() - { - } - [Test] - public void Test_1036() - { - } - [Test] - public void Test_1037() - { - } - [Test] - public void Test_1038() - { - } - [Test] - public void Test_1039() - { - } - [Test] - public void Test_1040() - { - } - [Test] - public void Test_1041() - { - } - [Test] - public void Test_1042() - { - } - [Test] - public void Test_1043() - { - } - [Test] - public void Test_1044() - { - } - [Test] - public void Test_1045() - { - } - [Test] - public void Test_1046() - { - } - [Test] - public void Test_1047() - { - } - [Test] - public void Test_1048() - { - } - [Test] - public void Test_1049() - { - } - [Test] - public void Test_1050() - { - } - [Test] - public void Test_1051() - { - } - [Test] - public void Test_1052() - { - } - [Test] - public void Test_1053() - { - } - [Test] - public void Test_1054() - { - } - [Test] - public void Test_1055() - { - } - [Test] - public void Test_1056() - { - } - [Test] - public void Test_1057() - { - } - [Test] - public void Test_1058() - { - } - [Test] - public void Test_1059() - { - } - [Test] - public void Test_1060() - { - } - [Test] - public void Test_1061() - { - } - [Test] - public void Test_1062() - { - } - [Test] - public void Test_1063() - { - } - [Test] - public void Test_1064() - { - } - [Test] - public void Test_1065() - { - } - [Test] - public void Test_1066() - { - } - [Test] - public void Test_1067() - { - } - [Test] - public void Test_1068() - { - } - [Test] - public void Test_1069() - { - } - [Test] - public void Test_1070() - { - } - [Test] - public void Test_1071() - { - } - [Test] - public void Test_1072() - { - } - [Test] - public void Test_1073() - { - } - [Test] - public void Test_1074() - { - } - [Test] - public void Test_1075() - { - } - [Test] - public void Test_1076() - { - } - [Test] - public void Test_1077() - { - } - [Test] - public void Test_1078() - { - } - [Test] - public void Test_1079() - { - } - [Test] - public void Test_1080() - { - } - [Test] - public void Test_1081() - { - } - [Test] - public void Test_1082() - { - } - [Test] - public void Test_1083() - { - } - [Test] - public void Test_1084() - { - } - [Test] - public void Test_1085() - { - } - [Test] - public void Test_1086() - { - } - [Test] - public void Test_1087() - { - } - [Test] - public void Test_1088() - { - } - [Test] - public void Test_1089() - { - } - [Test] - public void Test_1090() - { - } - [Test] - public void Test_1091() - { - } - [Test] - public void Test_1092() - { - } - [Test] - public void Test_1093() - { - } - [Test] - public void Test_1094() - { - } - [Test] - public void Test_1095() - { - } - [Test] - public void Test_1096() - { - } - [Test] - public void Test_1097() - { - } - [Test] - public void Test_1098() - { - } - [Test] - public void Test_1099() - { - } - [Test] - public void Test_1100() - { - } - [Test] - public void Test_1101() - { - } - [Test] - public void Test_1102() - { - } - [Test] - public void Test_1103() - { - } - [Test] - public void Test_1104() - { - } - [Test] - public void Test_1105() - { - } - [Test] - public void Test_1106() - { - } - [Test] - public void Test_1107() - { - } - [Test] - public void Test_1108() - { - } - [Test] - public void Test_1109() - { - } - [Test] - public void Test_1110() - { - } - [Test] - public void Test_1111() - { - } - [Test] - public void Test_1112() - { - } - [Test] - public void Test_1113() - { - } - [Test] - public void Test_1114() - { - } - [Test] - public void Test_1115() - { - } - [Test] - public void Test_1116() - { - } - [Test] - public void Test_1117() - { - } - [Test] - public void Test_1118() - { - } - [Test] - public void Test_1119() - { - } - [Test] - public void Test_1120() - { - } - [Test] - public void Test_1121() - { - } - [Test] - public void Test_1122() - { - } - [Test] - public void Test_1123() - { - } - [Test] - public void Test_1124() - { - } - [Test] - public void Test_1125() - { - } - [Test] - public void Test_1126() - { - } - [Test] - public void Test_1127() - { - } - [Test] - public void Test_1128() - { - } - [Test] - public void Test_1129() - { - } - [Test] - public void Test_1130() - { - } - [Test] - public void Test_1131() - { - } - [Test] - public void Test_1132() - { - } - [Test] - public void Test_1133() - { - } - [Test] - public void Test_1134() - { - } - [Test] - public void Test_1135() - { - } - [Test] - public void Test_1136() - { - } - [Test] - public void Test_1137() - { - } - [Test] - public void Test_1138() - { - } - [Test] - public void Test_1139() - { - } - [Test] - public void Test_1140() - { - } - [Test] - public void Test_1141() - { - } - [Test] - public void Test_1142() - { - } - [Test] - public void Test_1143() - { - } - [Test] - public void Test_1144() - { - } - [Test] - public void Test_1145() - { - } - [Test] - public void Test_1146() - { - } - [Test] - public void Test_1147() - { - } - [Test] - public void Test_1148() - { - } - [Test] - public void Test_1149() - { - } - [Test] - public void Test_1150() - { - } - [Test] - public void Test_1151() - { - } - [Test] - public void Test_1152() - { - } - [Test] - public void Test_1153() - { - } - [Test] - public void Test_1154() - { - } - [Test] - public void Test_1155() - { - } - [Test] - public void Test_1156() - { - } - [Test] - public void Test_1157() - { - } - [Test] - public void Test_1158() - { - } - [Test] - public void Test_1159() - { - } - [Test] - public void Test_1160() - { - } - [Test] - public void Test_1161() - { - } - [Test] - public void Test_1162() - { - } - [Test] - public void Test_1163() - { - } - [Test] - public void Test_1164() - { - } - [Test] - public void Test_1165() - { - } - [Test] - public void Test_1166() - { - } - [Test] - public void Test_1167() - { - } - [Test] - public void Test_1168() - { - } - [Test] - public void Test_1169() - { - } - [Test] - public void Test_1170() - { - } - [Test] - public void Test_1171() - { - } - [Test] - public void Test_1172() - { - } - [Test] - public void Test_1173() - { - } - [Test] - public void Test_1174() - { - } - [Test] - public void Test_1175() - { - } - [Test] - public void Test_1176() - { - } - [Test] - public void Test_1177() - { - } - [Test] - public void Test_1178() - { - } - [Test] - public void Test_1179() - { - } - [Test] - public void Test_1180() - { - } - [Test] - public void Test_1181() - { - } - [Test] - public void Test_1182() - { - } - [Test] - public void Test_1183() - { - } - [Test] - public void Test_1184() - { - } - [Test] - public void Test_1185() - { - } - [Test] - public void Test_1186() - { - } - [Test] - public void Test_1187() - { - } - [Test] - public void Test_1188() - { - } - [Test] - public void Test_1189() - { - } - [Test] - public void Test_1190() - { - } - [Test] - public void Test_1191() - { - } - [Test] - public void Test_1192() - { - } - [Test] - public void Test_1193() - { - } - [Test] - public void Test_1194() - { - } - [Test] - public void Test_1195() - { - } - [Test] - public void Test_1196() - { - } - [Test] - public void Test_1197() - { - } - [Test] - public void Test_1198() - { - } - [Test] - public void Test_1199() - { - } - [Test] - public void Test_1200() - { - } - [Test] - public void Test_1201() - { - } - [Test] - public void Test_1202() - { - } - [Test] - public void Test_1203() - { - } - [Test] - public void Test_1204() - { - } - [Test] - public void Test_1205() - { - } - [Test] - public void Test_1206() - { - } - [Test] - public void Test_1207() - { - } - [Test] - public void Test_1208() - { - } - [Test] - public void Test_1209() - { - } - [Test] - public void Test_1210() - { - } - [Test] - public void Test_1211() - { - } - [Test] - public void Test_1212() - { - } - [Test] - public void Test_1213() - { - } - [Test] - public void Test_1214() - { - } - [Test] - public void Test_1215() - { - } - [Test] - public void Test_1216() - { - } - [Test] - public void Test_1217() - { - } - [Test] - public void Test_1218() - { - } - [Test] - public void Test_1219() - { - } - [Test] - public void Test_1220() - { - } - [Test] - public void Test_1221() - { - } - [Test] - public void Test_1222() - { - } - [Test] - public void Test_1223() - { - } - [Test] - public void Test_1224() - { - } - [Test] - public void Test_1225() - { - } - [Test] - public void Test_1226() - { - } - [Test] - public void Test_1227() - { - } - [Test] - public void Test_1228() - { - } - [Test] - public void Test_1229() - { - } - [Test] - public void Test_1230() - { - } - [Test] - public void Test_1231() - { - } - [Test] - public void Test_1232() - { - } - [Test] - public void Test_1233() - { - } - [Test] - public void Test_1234() - { - } - [Test] - public void Test_1235() - { - } - [Test] - public void Test_1236() - { - } - [Test] - public void Test_1237() - { - } - [Test] - public void Test_1238() - { - } - [Test] - public void Test_1239() - { - } - [Test] - public void Test_1240() - { - } - [Test] - public void Test_1241() - { - } - [Test] - public void Test_1242() - { - } - [Test] - public void Test_1243() - { - } - [Test] - public void Test_1244() - { - } - [Test] - public void Test_1245() - { - } - [Test] - public void Test_1246() - { - } - [Test] - public void Test_1247() - { - } - [Test] - public void Test_1248() - { - } - [Test] - public void Test_1249() - { - } - [Test] - public void Test_1250() - { - } - [Test] - public void Test_1251() - { - } - [Test] - public void Test_1252() - { - } - [Test] - public void Test_1253() - { - } - [Test] - public void Test_1254() - { - } - [Test] - public void Test_1255() - { - } - [Test] - public void Test_1256() - { - } - [Test] - public void Test_1257() - { - } - [Test] - public void Test_1258() - { - } - [Test] - public void Test_1259() - { - } - [Test] - public void Test_1260() - { - } - [Test] - public void Test_1261() - { - } - [Test] - public void Test_1262() - { - } - [Test] - public void Test_1263() - { - } - [Test] - public void Test_1264() - { - } - [Test] - public void Test_1265() - { - } - [Test] - public void Test_1266() - { - } - [Test] - public void Test_1267() - { - } - [Test] - public void Test_1268() - { - } - [Test] - public void Test_1269() - { - } - [Test] - public void Test_1270() - { - } - [Test] - public void Test_1271() - { - } - [Test] - public void Test_1272() - { - } - [Test] - public void Test_1273() - { - } - [Test] - public void Test_1274() - { - } - [Test] - public void Test_1275() - { - } - [Test] - public void Test_1276() - { - } - [Test] - public void Test_1277() - { - } - [Test] - public void Test_1278() - { - } - [Test] - public void Test_1279() - { - } - [Test] - public void Test_1280() - { - } - [Test] - public void Test_1281() - { - } - [Test] - public void Test_1282() - { - } - [Test] - public void Test_1283() - { - } - [Test] - public void Test_1284() - { - } - [Test] - public void Test_1285() - { - } - [Test] - public void Test_1286() - { - } - [Test] - public void Test_1287() - { - } - [Test] - public void Test_1288() - { - } - [Test] - public void Test_1289() - { - } - [Test] - public void Test_1290() - { - } - [Test] - public void Test_1291() - { - } - [Test] - public void Test_1292() - { - } - [Test] - public void Test_1293() - { - } - [Test] - public void Test_1294() - { - } - [Test] - public void Test_1295() - { - } - [Test] - public void Test_1296() - { - } - [Test] - public void Test_1297() - { - } - [Test] - public void Test_1298() - { - } - [Test] - public void Test_1299() - { - } - [Test] - public void Test_1300() - { - } - [Test] - public void Test_1301() - { - } - [Test] - public void Test_1302() - { - } - [Test] - public void Test_1303() - { - } - [Test] - public void Test_1304() - { - } - [Test] - public void Test_1305() - { - } - [Test] - public void Test_1306() - { - } - [Test] - public void Test_1307() - { - } - [Test] - public void Test_1308() - { - } - [Test] - public void Test_1309() - { - } - [Test] - public void Test_1310() - { - } - [Test] - public void Test_1311() - { - } - [Test] - public void Test_1312() - { - } - [Test] - public void Test_1313() - { - } - [Test] - public void Test_1314() - { - } - [Test] - public void Test_1315() - { - } - [Test] - public void Test_1316() - { - } - [Test] - public void Test_1317() - { - } - [Test] - public void Test_1318() - { - } - [Test] - public void Test_1319() - { - } - [Test] - public void Test_1320() - { - } - [Test] - public void Test_1321() - { - } - [Test] - public void Test_1322() - { - } - [Test] - public void Test_1323() - { - } - [Test] - public void Test_1324() - { - } - [Test] - public void Test_1325() - { - } - [Test] - public void Test_1326() - { - } - [Test] - public void Test_1327() - { - } - [Test] - public void Test_1328() - { - } - [Test] - public void Test_1329() - { - } - [Test] - public void Test_1330() - { - } - [Test] - public void Test_1331() - { - } - [Test] - public void Test_1332() - { - } - [Test] - public void Test_1333() - { - } - [Test] - public void Test_1334() - { - } - [Test] - public void Test_1335() - { - } - [Test] - public void Test_1336() - { - } - [Test] - public void Test_1337() - { - } - [Test] - public void Test_1338() - { - } - [Test] - public void Test_1339() - { - } - [Test] - public void Test_1340() - { - } - [Test] - public void Test_1341() - { - } - [Test] - public void Test_1342() - { - } - [Test] - public void Test_1343() - { - } - [Test] - public void Test_1344() - { - } - [Test] - public void Test_1345() - { - } - [Test] - public void Test_1346() - { - } - [Test] - public void Test_1347() - { - } - [Test] - public void Test_1348() - { - } - [Test] - public void Test_1349() - { - } - [Test] - public void Test_1350() - { - } - [Test] - public void Test_1351() - { - } - [Test] - public void Test_1352() - { - } - [Test] - public void Test_1353() - { - } - [Test] - public void Test_1354() - { - } - [Test] - public void Test_1355() - { - } - [Test] - public void Test_1356() - { - } - [Test] - public void Test_1357() - { - } - [Test] - public void Test_1358() - { - } - [Test] - public void Test_1359() - { - } - [Test] - public void Test_1360() - { - } - [Test] - public void Test_1361() - { - } - [Test] - public void Test_1362() - { - } - [Test] - public void Test_1363() - { - } - [Test] - public void Test_1364() - { - } - [Test] - public void Test_1365() - { - } - [Test] - public void Test_1366() - { - } - [Test] - public void Test_1367() - { - } - [Test] - public void Test_1368() - { - } - [Test] - public void Test_1369() - { - } - [Test] - public void Test_1370() - { - } - [Test] - public void Test_1371() - { - } - [Test] - public void Test_1372() - { - } - [Test] - public void Test_1373() - { - } - [Test] - public void Test_1374() - { - } - [Test] - public void Test_1375() - { - } - [Test] - public void Test_1376() - { - } - [Test] - public void Test_1377() - { - } - [Test] - public void Test_1378() - { - } - [Test] - public void Test_1379() - { - } - [Test] - public void Test_1380() - { - } - [Test] - public void Test_1381() - { - } - [Test] - public void Test_1382() - { - } - [Test] - public void Test_1383() - { - } - [Test] - public void Test_1384() - { - } - [Test] - public void Test_1385() - { - } - [Test] - public void Test_1386() - { - } - [Test] - public void Test_1387() - { - } - [Test] - public void Test_1388() - { - } - [Test] - public void Test_1389() - { - } - [Test] - public void Test_1390() - { - } - [Test] - public void Test_1391() - { - } - [Test] - public void Test_1392() - { - } - [Test] - public void Test_1393() - { - } - [Test] - public void Test_1394() - { - } - [Test] - public void Test_1395() - { - } - [Test] - public void Test_1396() - { - } - [Test] - public void Test_1397() - { - } - [Test] - public void Test_1398() - { - } - [Test] - public void Test_1399() - { - } - [Test] - public void Test_1400() - { - } - [Test] - public void Test_1401() - { - } - [Test] - public void Test_1402() - { - } - [Test] - public void Test_1403() - { - } - [Test] - public void Test_1404() - { - } - [Test] - public void Test_1405() - { - } - [Test] - public void Test_1406() - { - } - [Test] - public void Test_1407() - { - } - [Test] - public void Test_1408() - { - } - [Test] - public void Test_1409() - { - } - [Test] - public void Test_1410() - { - } - [Test] - public void Test_1411() - { - } - [Test] - public void Test_1412() - { - } - [Test] - public void Test_1413() - { - } - [Test] - public void Test_1414() - { - } - [Test] - public void Test_1415() - { - } - [Test] - public void Test_1416() - { - } - [Test] - public void Test_1417() - { - } - [Test] - public void Test_1418() - { - } - [Test] - public void Test_1419() - { - } - [Test] - public void Test_1420() - { - } - [Test] - public void Test_1421() - { - } - [Test] - public void Test_1422() - { - } - [Test] - public void Test_1423() - { - } - [Test] - public void Test_1424() - { - } - [Test] - public void Test_1425() - { - } - [Test] - public void Test_1426() - { - } - [Test] - public void Test_1427() - { - } - [Test] - public void Test_1428() - { - } - [Test] - public void Test_1429() - { - } - [Test] - public void Test_1430() - { - } - [Test] - public void Test_1431() - { - } - [Test] - public void Test_1432() - { - } - [Test] - public void Test_1433() - { - } - [Test] - public void Test_1434() - { - } - [Test] - public void Test_1435() - { - } - [Test] - public void Test_1436() - { - } - [Test] - public void Test_1437() - { - } - [Test] - public void Test_1438() - { - } - [Test] - public void Test_1439() - { - } - [Test] - public void Test_1440() - { - } - [Test] - public void Test_1441() - { - } - [Test] - public void Test_1442() - { - } - [Test] - public void Test_1443() - { - } - [Test] - public void Test_1444() - { - } - [Test] - public void Test_1445() - { - } - [Test] - public void Test_1446() - { - } - [Test] - public void Test_1447() - { - } - [Test] - public void Test_1448() - { - } - [Test] - public void Test_1449() - { - } - [Test] - public void Test_1450() - { - } - [Test] - public void Test_1451() - { - } - [Test] - public void Test_1452() - { - } - [Test] - public void Test_1453() - { - } - [Test] - public void Test_1454() - { - } - [Test] - public void Test_1455() - { - } - [Test] - public void Test_1456() - { - } - [Test] - public void Test_1457() - { - } - [Test] - public void Test_1458() - { - } - [Test] - public void Test_1459() - { - } - [Test] - public void Test_1460() - { - } - [Test] - public void Test_1461() - { - } - [Test] - public void Test_1462() - { - } - [Test] - public void Test_1463() - { - } - [Test] - public void Test_1464() - { - } - [Test] - public void Test_1465() - { - } - [Test] - public void Test_1466() - { - } - [Test] - public void Test_1467() - { - } - [Test] - public void Test_1468() - { - } - [Test] - public void Test_1469() - { - } - [Test] - public void Test_1470() - { - } - [Test] - public void Test_1471() - { - } - [Test] - public void Test_1472() - { - } - [Test] - public void Test_1473() - { - } - [Test] - public void Test_1474() - { - } - [Test] - public void Test_1475() - { - } - [Test] - public void Test_1476() - { - } - [Test] - public void Test_1477() - { - } - [Test] - public void Test_1478() - { - } - [Test] - public void Test_1479() - { - } - [Test] - public void Test_1480() - { - } - [Test] - public void Test_1481() - { - } - [Test] - public void Test_1482() - { - } - [Test] - public void Test_1483() - { - } - [Test] - public void Test_1484() - { - } - [Test] - public void Test_1485() - { - } - [Test] - public void Test_1486() - { - } - [Test] - public void Test_1487() - { - } - [Test] - public void Test_1488() - { - } - [Test] - public void Test_1489() - { - } - [Test] - public void Test_1490() - { - } - [Test] - public void Test_1491() - { - } - [Test] - public void Test_1492() - { - } - [Test] - public void Test_1493() - { - } - [Test] - public void Test_1494() - { - } - [Test] - public void Test_1495() - { - } - [Test] - public void Test_1496() - { - } - [Test] - public void Test_1497() - { - } - [Test] - public void Test_1498() - { - } - [Test] - public void Test_1499() - { - } - [Test] - public void Test_1500() - { - } - [Test] - public void Test_1501() - { - } - [Test] - public void Test_1502() - { - } - [Test] - public void Test_1503() - { - } - [Test] - public void Test_1504() - { - } - [Test] - public void Test_1505() - { - } - [Test] - public void Test_1506() - { - } - [Test] - public void Test_1507() - { - } - [Test] - public void Test_1508() - { - } - [Test] - public void Test_1509() - { - } - [Test] - public void Test_1510() - { - } - [Test] - public void Test_1511() - { - } - [Test] - public void Test_1512() - { - } - [Test] - public void Test_1513() - { - } - [Test] - public void Test_1514() - { - } - [Test] - public void Test_1515() - { - } - [Test] - public void Test_1516() - { - } - [Test] - public void Test_1517() - { - } - [Test] - public void Test_1518() - { - } - [Test] - public void Test_1519() - { - } - [Test] - public void Test_1520() - { - } - [Test] - public void Test_1521() - { - } - [Test] - public void Test_1522() - { - } - [Test] - public void Test_1523() - { - } - [Test] - public void Test_1524() - { - } - [Test] - public void Test_1525() - { - } - [Test] - public void Test_1526() - { - } - [Test] - public void Test_1527() - { - } - [Test] - public void Test_1528() - { - } - [Test] - public void Test_1529() - { - } - [Test] - public void Test_1530() - { - } - [Test] - public void Test_1531() - { - } - [Test] - public void Test_1532() - { - } - [Test] - public void Test_1533() - { - } - [Test] - public void Test_1534() - { - } - [Test] - public void Test_1535() - { - } - [Test] - public void Test_1536() - { - } - [Test] - public void Test_1537() - { - } - [Test] - public void Test_1538() - { - } - [Test] - public void Test_1539() - { - } - [Test] - public void Test_1540() - { - } - [Test] - public void Test_1541() - { - } - [Test] - public void Test_1542() - { - } - [Test] - public void Test_1543() - { - } - [Test] - public void Test_1544() - { - } - [Test] - public void Test_1545() - { - } - [Test] - public void Test_1546() - { - } - [Test] - public void Test_1547() - { - } - [Test] - public void Test_1548() - { - } - [Test] - public void Test_1549() - { - } - [Test] - public void Test_1550() - { - } - [Test] - public void Test_1551() - { - } - [Test] - public void Test_1552() - { - } - [Test] - public void Test_1553() - { - } - [Test] - public void Test_1554() - { - } - [Test] - public void Test_1555() - { - } - [Test] - public void Test_1556() - { - } - [Test] - public void Test_1557() - { - } - [Test] - public void Test_1558() - { - } - [Test] - public void Test_1559() - { - } - [Test] - public void Test_1560() - { - } - [Test] - public void Test_1561() - { - } - [Test] - public void Test_1562() - { - } - [Test] - public void Test_1563() - { - } - [Test] - public void Test_1564() - { - } - [Test] - public void Test_1565() - { - } - [Test] - public void Test_1566() - { - } - [Test] - public void Test_1567() - { - } - [Test] - public void Test_1568() - { - } - [Test] - public void Test_1569() - { - } - [Test] - public void Test_1570() - { - } - [Test] - public void Test_1571() - { - } - [Test] - public void Test_1572() - { - } - [Test] - public void Test_1573() - { - } - [Test] - public void Test_1574() - { - } - [Test] - public void Test_1575() - { - } - [Test] - public void Test_1576() - { - } - [Test] - public void Test_1577() - { - } - [Test] - public void Test_1578() - { - } - [Test] - public void Test_1579() - { - } - [Test] - public void Test_1580() - { - } - [Test] - public void Test_1581() - { - } - [Test] - public void Test_1582() - { - } - [Test] - public void Test_1583() - { - } - [Test] - public void Test_1584() - { - } - [Test] - public void Test_1585() - { - } - [Test] - public void Test_1586() - { - } - [Test] - public void Test_1587() - { - } - [Test] - public void Test_1588() - { - } - [Test] - public void Test_1589() - { - } - [Test] - public void Test_1590() - { - } - [Test] - public void Test_1591() - { - } - [Test] - public void Test_1592() - { - } - [Test] - public void Test_1593() - { - } - [Test] - public void Test_1594() - { - } - [Test] - public void Test_1595() - { - } - [Test] - public void Test_1596() - { - } - [Test] - public void Test_1597() - { - } - [Test] - public void Test_1598() - { - } - [Test] - public void Test_1599() - { - } - [Test] - public void Test_1600() - { - } - [Test] - public void Test_1601() - { - } - [Test] - public void Test_1602() - { - } - [Test] - public void Test_1603() - { - } - [Test] - public void Test_1604() - { - } - [Test] - public void Test_1605() - { - } - [Test] - public void Test_1606() - { - } - [Test] - public void Test_1607() - { - } - [Test] - public void Test_1608() - { - } - [Test] - public void Test_1609() - { - } - [Test] - public void Test_1610() - { - } - [Test] - public void Test_1611() - { - } - [Test] - public void Test_1612() - { - } - [Test] - public void Test_1613() - { - } - [Test] - public void Test_1614() - { - } - [Test] - public void Test_1615() - { - } - [Test] - public void Test_1616() - { - } - [Test] - public void Test_1617() - { - } - [Test] - public void Test_1618() - { - } - [Test] - public void Test_1619() - { - } - [Test] - public void Test_1620() - { - } - [Test] - public void Test_1621() - { - } - [Test] - public void Test_1622() - { - } - [Test] - public void Test_1623() - { - } - [Test] - public void Test_1624() - { - } - [Test] - public void Test_1625() - { - } - [Test] - public void Test_1626() - { - } - [Test] - public void Test_1627() - { - } - [Test] - public void Test_1628() - { - } - [Test] - public void Test_1629() - { - } - [Test] - public void Test_1630() - { - } - [Test] - public void Test_1631() - { - } - [Test] - public void Test_1632() - { - } - [Test] - public void Test_1633() - { - } - [Test] - public void Test_1634() - { - } - [Test] - public void Test_1635() - { - } - [Test] - public void Test_1636() - { - } - [Test] - public void Test_1637() - { - } - [Test] - public void Test_1638() - { - } - [Test] - public void Test_1639() - { - } - [Test] - public void Test_1640() - { - } - [Test] - public void Test_1641() - { - } - [Test] - public void Test_1642() - { - } - [Test] - public void Test_1643() - { - } - [Test] - public void Test_1644() - { - } - [Test] - public void Test_1645() - { - } - [Test] - public void Test_1646() - { - } - [Test] - public void Test_1647() - { - } - [Test] - public void Test_1648() - { - } - [Test] - public void Test_1649() - { - } - [Test] - public void Test_1650() - { - } - [Test] - public void Test_1651() - { - } - [Test] - public void Test_1652() - { - } - [Test] - public void Test_1653() - { - } - [Test] - public void Test_1654() - { - } - [Test] - public void Test_1655() - { - } - [Test] - public void Test_1656() - { - } - [Test] - public void Test_1657() - { - } - [Test] - public void Test_1658() - { - } - [Test] - public void Test_1659() - { - } - [Test] - public void Test_1660() - { - } - [Test] - public void Test_1661() - { - } - [Test] - public void Test_1662() - { - } - [Test] - public void Test_1663() - { - } - [Test] - public void Test_1664() - { - } - [Test] - public void Test_1665() - { - } - [Test] - public void Test_1666() - { - } - [Test] - public void Test_1667() - { - } - [Test] - public void Test_1668() - { - } - [Test] - public void Test_1669() - { - } - [Test] - public void Test_1670() - { - } - [Test] - public void Test_1671() - { - } - [Test] - public void Test_1672() - { - } - [Test] - public void Test_1673() - { - } - [Test] - public void Test_1674() - { - } - [Test] - public void Test_1675() - { - } - [Test] - public void Test_1676() - { - } - [Test] - public void Test_1677() - { - } - [Test] - public void Test_1678() - { - } - [Test] - public void Test_1679() - { - } - [Test] - public void Test_1680() - { - } - [Test] - public void Test_1681() - { - } - [Test] - public void Test_1682() - { - } - [Test] - public void Test_1683() - { - } - [Test] - public void Test_1684() - { - } - [Test] - public void Test_1685() - { - } - [Test] - public void Test_1686() - { - } - [Test] - public void Test_1687() - { - } - [Test] - public void Test_1688() - { - } - [Test] - public void Test_1689() - { - } - [Test] - public void Test_1690() - { - } - [Test] - public void Test_1691() - { - } - [Test] - public void Test_1692() - { - } - [Test] - public void Test_1693() - { - } - [Test] - public void Test_1694() - { - } - [Test] - public void Test_1695() - { - } - [Test] - public void Test_1696() - { - } - [Test] - public void Test_1697() - { - } - [Test] - public void Test_1698() - { - } - [Test] - public void Test_1699() - { - } - [Test] - public void Test_1700() - { - } - [Test] - public void Test_1701() - { - } - [Test] - public void Test_1702() - { - } - [Test] - public void Test_1703() - { - } - [Test] - public void Test_1704() - { - } - [Test] - public void Test_1705() - { - } - [Test] - public void Test_1706() - { - } - [Test] - public void Test_1707() - { - } - [Test] - public void Test_1708() - { - } - [Test] - public void Test_1709() - { - } - [Test] - public void Test_1710() - { - } - [Test] - public void Test_1711() - { - } - [Test] - public void Test_1712() - { - } - [Test] - public void Test_1713() - { - } - [Test] - public void Test_1714() - { - } - [Test] - public void Test_1715() - { - } - [Test] - public void Test_1716() - { - } - [Test] - public void Test_1717() - { - } - [Test] - public void Test_1718() - { - } - [Test] - public void Test_1719() - { - } - [Test] - public void Test_1720() - { - } - [Test] - public void Test_1721() - { - } - [Test] - public void Test_1722() - { - } - [Test] - public void Test_1723() - { - } - [Test] - public void Test_1724() - { - } - [Test] - public void Test_1725() - { - } - [Test] - public void Test_1726() - { - } - [Test] - public void Test_1727() - { - } - [Test] - public void Test_1728() - { - } - [Test] - public void Test_1729() - { - } - [Test] - public void Test_1730() - { - } - [Test] - public void Test_1731() - { - } - [Test] - public void Test_1732() - { - } - [Test] - public void Test_1733() - { - } - [Test] - public void Test_1734() - { - } - [Test] - public void Test_1735() - { - } - [Test] - public void Test_1736() - { - } - [Test] - public void Test_1737() - { - } - [Test] - public void Test_1738() - { - } - [Test] - public void Test_1739() - { - } - [Test] - public void Test_1740() - { - } - [Test] - public void Test_1741() - { - } - [Test] - public void Test_1742() - { - } - [Test] - public void Test_1743() - { - } - [Test] - public void Test_1744() - { - } - [Test] - public void Test_1745() - { - } - [Test] - public void Test_1746() - { - } - [Test] - public void Test_1747() - { - } - [Test] - public void Test_1748() - { - } - [Test] - public void Test_1749() - { - } - [Test] - public void Test_1750() - { - } - [Test] - public void Test_1751() - { - } - [Test] - public void Test_1752() - { - } - [Test] - public void Test_1753() - { - } - [Test] - public void Test_1754() - { - } - [Test] - public void Test_1755() - { - } - [Test] - public void Test_1756() - { - } - [Test] - public void Test_1757() - { - } - [Test] - public void Test_1758() - { - } - [Test] - public void Test_1759() - { - } - [Test] - public void Test_1760() - { - } - [Test] - public void Test_1761() - { - } - [Test] - public void Test_1762() - { - } - [Test] - public void Test_1763() - { - } - [Test] - public void Test_1764() - { - } - [Test] - public void Test_1765() - { - } - [Test] - public void Test_1766() - { - } - [Test] - public void Test_1767() - { - } - [Test] - public void Test_1768() - { - } - [Test] - public void Test_1769() - { - } - [Test] - public void Test_1770() - { - } - [Test] - public void Test_1771() - { - } - [Test] - public void Test_1772() - { - } - [Test] - public void Test_1773() - { - } - [Test] - public void Test_1774() - { - } - [Test] - public void Test_1775() - { - } - [Test] - public void Test_1776() - { - } - [Test] - public void Test_1777() - { - } - [Test] - public void Test_1778() - { - } - [Test] - public void Test_1779() - { - } - [Test] - public void Test_1780() - { - } - [Test] - public void Test_1781() - { - } - [Test] - public void Test_1782() - { - } - [Test] - public void Test_1783() - { - } - [Test] - public void Test_1784() - { - } - [Test] - public void Test_1785() - { - } - [Test] - public void Test_1786() - { - } - [Test] - public void Test_1787() - { - } - [Test] - public void Test_1788() - { - } - [Test] - public void Test_1789() - { - } - [Test] - public void Test_1790() - { - } - [Test] - public void Test_1791() - { - } - [Test] - public void Test_1792() - { - } - [Test] - public void Test_1793() - { - } - [Test] - public void Test_1794() - { - } - [Test] - public void Test_1795() - { - } - [Test] - public void Test_1796() - { - } - [Test] - public void Test_1797() - { - } - [Test] - public void Test_1798() - { - } - [Test] - public void Test_1799() - { - } - [Test] - public void Test_1800() - { - } - [Test] - public void Test_1801() - { - } - [Test] - public void Test_1802() - { - } - [Test] - public void Test_1803() - { - } - [Test] - public void Test_1804() - { - } - [Test] - public void Test_1805() - { - } - [Test] - public void Test_1806() - { - } - [Test] - public void Test_1807() - { - } - [Test] - public void Test_1808() - { - } - [Test] - public void Test_1809() - { - } - [Test] - public void Test_1810() - { - } - [Test] - public void Test_1811() - { - } - [Test] - public void Test_1812() - { - } - [Test] - public void Test_1813() - { - } - [Test] - public void Test_1814() - { - } - [Test] - public void Test_1815() - { - } - [Test] - public void Test_1816() - { - } - [Test] - public void Test_1817() - { - } - [Test] - public void Test_1818() - { - } - [Test] - public void Test_1819() - { - } - [Test] - public void Test_1820() - { - } - [Test] - public void Test_1821() - { - } - [Test] - public void Test_1822() - { - } - [Test] - public void Test_1823() - { - } - [Test] - public void Test_1824() - { - } - [Test] - public void Test_1825() - { - } - [Test] - public void Test_1826() - { - } - [Test] - public void Test_1827() - { - } - [Test] - public void Test_1828() - { - } - [Test] - public void Test_1829() - { - } - [Test] - public void Test_1830() - { - } - [Test] - public void Test_1831() - { - } - [Test] - public void Test_1832() - { - } - [Test] - public void Test_1833() - { - } - [Test] - public void Test_1834() - { - } - [Test] - public void Test_1835() - { - } - [Test] - public void Test_1836() - { - } - [Test] - public void Test_1837() - { - } - [Test] - public void Test_1838() - { - } - [Test] - public void Test_1839() - { - } - [Test] - public void Test_1840() - { - } - [Test] - public void Test_1841() - { - } - [Test] - public void Test_1842() - { - } - [Test] - public void Test_1843() - { - } - [Test] - public void Test_1844() - { - } - [Test] - public void Test_1845() - { - } - [Test] - public void Test_1846() - { - } - [Test] - public void Test_1847() - { - } - [Test] - public void Test_1848() - { - } - [Test] - public void Test_1849() - { - } - [Test] - public void Test_1850() - { - } - [Test] - public void Test_1851() - { - } - [Test] - public void Test_1852() - { - } - [Test] - public void Test_1853() - { - } - [Test] - public void Test_1854() - { - } - [Test] - public void Test_1855() - { - } - [Test] - public void Test_1856() - { - } - [Test] - public void Test_1857() - { - } - [Test] - public void Test_1858() - { - } - [Test] - public void Test_1859() - { - } - [Test] - public void Test_1860() - { - } - [Test] - public void Test_1861() - { - } - [Test] - public void Test_1862() - { - } - [Test] - public void Test_1863() - { - } - [Test] - public void Test_1864() - { - } - [Test] - public void Test_1865() - { - } - [Test] - public void Test_1866() - { - } - [Test] - public void Test_1867() - { - } - [Test] - public void Test_1868() - { - } - [Test] - public void Test_1869() - { - } - [Test] - public void Test_1870() - { - } - [Test] - public void Test_1871() - { - } - [Test] - public void Test_1872() - { - } - [Test] - public void Test_1873() - { - } - [Test] - public void Test_1874() - { - } - [Test] - public void Test_1875() - { - } - [Test] - public void Test_1876() - { - } - [Test] - public void Test_1877() - { - } - [Test] - public void Test_1878() - { - } - [Test] - public void Test_1879() - { - } - [Test] - public void Test_1880() - { - } - [Test] - public void Test_1881() - { - } - [Test] - public void Test_1882() - { - } - [Test] - public void Test_1883() - { - } - [Test] - public void Test_1884() - { - } - [Test] - public void Test_1885() - { - } - [Test] - public void Test_1886() - { - } - [Test] - public void Test_1887() - { - } - [Test] - public void Test_1888() - { - } - [Test] - public void Test_1889() - { - } - [Test] - public void Test_1890() - { - } - [Test] - public void Test_1891() - { - } - [Test] - public void Test_1892() - { - } - [Test] - public void Test_1893() - { - } - [Test] - public void Test_1894() - { - } - [Test] - public void Test_1895() - { - } - [Test] - public void Test_1896() - { - } - [Test] - public void Test_1897() - { - } - [Test] - public void Test_1898() - { - } - [Test] - public void Test_1899() - { - } - [Test] - public void Test_1900() - { - } - [Test] - public void Test_1901() - { - } - [Test] - public void Test_1902() - { - } - [Test] - public void Test_1903() - { - } - [Test] - public void Test_1904() - { - } - [Test] - public void Test_1905() - { - } - [Test] - public void Test_1906() - { - } - [Test] - public void Test_1907() - { - } - [Test] - public void Test_1908() - { - } - [Test] - public void Test_1909() - { - } - [Test] - public void Test_1910() - { - } - [Test] - public void Test_1911() - { - } - [Test] - public void Test_1912() - { - } - [Test] - public void Test_1913() - { - } - [Test] - public void Test_1914() - { - } - [Test] - public void Test_1915() - { - } - [Test] - public void Test_1916() - { - } - [Test] - public void Test_1917() - { - } - [Test] - public void Test_1918() - { - } - [Test] - public void Test_1919() - { - } - [Test] - public void Test_1920() - { - } - [Test] - public void Test_1921() - { - } - [Test] - public void Test_1922() - { - } - [Test] - public void Test_1923() - { - } - [Test] - public void Test_1924() - { - } - [Test] - public void Test_1925() - { - } - [Test] - public void Test_1926() - { - } - [Test] - public void Test_1927() - { - } - [Test] - public void Test_1928() - { - } - [Test] - public void Test_1929() - { - } - [Test] - public void Test_1930() - { - } - [Test] - public void Test_1931() - { - } - [Test] - public void Test_1932() - { - } - [Test] - public void Test_1933() - { - } - [Test] - public void Test_1934() - { - } - [Test] - public void Test_1935() - { - } - [Test] - public void Test_1936() - { - } - [Test] - public void Test_1937() - { - } - [Test] - public void Test_1938() - { - } - [Test] - public void Test_1939() - { - } - [Test] - public void Test_1940() - { - } - [Test] - public void Test_1941() - { - } - [Test] - public void Test_1942() - { - } - [Test] - public void Test_1943() - { - } - [Test] - public void Test_1944() - { - } - [Test] - public void Test_1945() - { - } - [Test] - public void Test_1946() - { - } - [Test] - public void Test_1947() - { - } - [Test] - public void Test_1948() - { - } - [Test] - public void Test_1949() - { - } - [Test] - public void Test_1950() - { - } - [Test] - public void Test_1951() - { - } - [Test] - public void Test_1952() - { - } - [Test] - public void Test_1953() - { - } - [Test] - public void Test_1954() - { - } - [Test] - public void Test_1955() - { - } - [Test] - public void Test_1956() - { - } - [Test] - public void Test_1957() - { - } - [Test] - public void Test_1958() - { - } - [Test] - public void Test_1959() - { - } - [Test] - public void Test_1960() - { - } - [Test] - public void Test_1961() - { - } - [Test] - public void Test_1962() - { - } - [Test] - public void Test_1963() - { - } - [Test] - public void Test_1964() - { - } - [Test] - public void Test_1965() - { - } - [Test] - public void Test_1966() - { - } - [Test] - public void Test_1967() - { - } - [Test] - public void Test_1968() - { - } - [Test] - public void Test_1969() - { - } - [Test] - public void Test_1970() - { - } - [Test] - public void Test_1971() - { - } - [Test] - public void Test_1972() - { - } - [Test] - public void Test_1973() - { - } - [Test] - public void Test_1974() - { - } - [Test] - public void Test_1975() - { - } - [Test] - public void Test_1976() - { - } - [Test] - public void Test_1977() - { - } - [Test] - public void Test_1978() - { - } - [Test] - public void Test_1979() - { - } - [Test] - public void Test_1980() - { - } - [Test] - public void Test_1981() - { - } - [Test] - public void Test_1982() - { - } - [Test] - public void Test_1983() - { - } - [Test] - public void Test_1984() - { - } - [Test] - public void Test_1985() - { - } - [Test] - public void Test_1986() - { - } - [Test] - public void Test_1987() - { - } - [Test] - public void Test_1988() - { - } - [Test] - public void Test_1989() - { - } - [Test] - public void Test_1990() - { - } - [Test] - public void Test_1991() - { - } - [Test] - public void Test_1992() - { - } - [Test] - public void Test_1993() - { - } - [Test] - public void Test_1994() - { - } - [Test] - public void Test_1995() - { - } - [Test] - public void Test_1996() - { - } - [Test] - public void Test_1997() - { - } - [Test] - public void Test_1998() - { - } - [Test] - public void Test_1999() - { - } - [Test] - public void Test_2000() - { - } - [Test] - public void Test_2001() - { - } - [Test] - public void Test_2002() - { - } - [Test] - public void Test_2003() - { - } - [Test] - public void Test_2004() - { - } - [Test] - public void Test_2005() - { - } - [Test] - public void Test_2006() - { - } - [Test] - public void Test_2007() - { - } - [Test] - public void Test_2008() - { - } - [Test] - public void Test_2009() - { - } - [Test] - public void Test_2010() - { - } - [Test] - public void Test_2011() - { - } - [Test] - public void Test_2012() - { - } - [Test] - public void Test_2013() - { - } - [Test] - public void Test_2014() - { - } - [Test] - public void Test_2015() - { - } - [Test] - public void Test_2016() - { - } - [Test] - public void Test_2017() - { - } - [Test] - public void Test_2018() - { - } - [Test] - public void Test_2019() - { - } - [Test] - public void Test_2020() - { - } - [Test] - public void Test_2021() - { - } - [Test] - public void Test_2022() - { - } - [Test] - public void Test_2023() - { - } - [Test] - public void Test_2024() - { - } - [Test] - public void Test_2025() - { - } - [Test] - public void Test_2026() - { - } - [Test] - public void Test_2027() - { - } - [Test] - public void Test_2028() - { - } - [Test] - public void Test_2029() - { - } - [Test] - public void Test_2030() - { - } - [Test] - public void Test_2031() - { - } - [Test] - public void Test_2032() - { - } - [Test] - public void Test_2033() - { - } - [Test] - public void Test_2034() - { - } - [Test] - public void Test_2035() - { - } - [Test] - public void Test_2036() - { - } - [Test] - public void Test_2037() - { - } - [Test] - public void Test_2038() - { - } - [Test] - public void Test_2039() - { - } - [Test] - public void Test_2040() - { - } - [Test] - public void Test_2041() - { - } - [Test] - public void Test_2042() - { - } - [Test] - public void Test_2043() - { - } - [Test] - public void Test_2044() - { - } - [Test] - public void Test_2045() - { - } - [Test] - public void Test_2046() - { - } - [Test] - public void Test_2047() - { - } - [Test] - public void Test_2048() - { - } - [Test] - public void Test_2049() - { - } - [Test] - public void Test_2050() - { - } - [Test] - public void Test_2051() - { - } - [Test] - public void Test_2052() - { - } - [Test] - public void Test_2053() - { - } - [Test] - public void Test_2054() - { - } - [Test] - public void Test_2055() - { - } - [Test] - public void Test_2056() - { - } - [Test] - public void Test_2057() - { - } - [Test] - public void Test_2058() - { - } - [Test] - public void Test_2059() - { - } - [Test] - public void Test_2060() - { - } - [Test] - public void Test_2061() - { - } - [Test] - public void Test_2062() - { - } - [Test] - public void Test_2063() - { - } - [Test] - public void Test_2064() - { - } - [Test] - public void Test_2065() - { - } - [Test] - public void Test_2066() - { - } - [Test] - public void Test_2067() - { - } - [Test] - public void Test_2068() - { - } - [Test] - public void Test_2069() - { - } - [Test] - public void Test_2070() - { - } - [Test] - public void Test_2071() - { - } - [Test] - public void Test_2072() - { - } - [Test] - public void Test_2073() - { - } - [Test] - public void Test_2074() - { - } - [Test] - public void Test_2075() - { - } - [Test] - public void Test_2076() - { - } - [Test] - public void Test_2077() - { - } - [Test] - public void Test_2078() - { - } - [Test] - public void Test_2079() - { - } - [Test] - public void Test_2080() - { - } - [Test] - public void Test_2081() - { - } - [Test] - public void Test_2082() - { - } - [Test] - public void Test_2083() - { - } - [Test] - public void Test_2084() - { - } - [Test] - public void Test_2085() - { - } - [Test] - public void Test_2086() - { - } - [Test] - public void Test_2087() - { - } - [Test] - public void Test_2088() - { - } - [Test] - public void Test_2089() - { - } - [Test] - public void Test_2090() - { - } - [Test] - public void Test_2091() - { - } - [Test] - public void Test_2092() - { - } - [Test] - public void Test_2093() - { - } - [Test] - public void Test_2094() - { - } - [Test] - public void Test_2095() - { - } - [Test] - public void Test_2096() - { - } - [Test] - public void Test_2097() - { - } - [Test] - public void Test_2098() - { - } - [Test] - public void Test_2099() - { - } - [Test] - public void Test_2100() - { - } - [Test] - public void Test_2101() - { - } - [Test] - public void Test_2102() - { - } - [Test] - public void Test_2103() - { - } - [Test] - public void Test_2104() - { - } - [Test] - public void Test_2105() - { - } - [Test] - public void Test_2106() - { - } - [Test] - public void Test_2107() - { - } - [Test] - public void Test_2108() - { - } - [Test] - public void Test_2109() - { - } - [Test] - public void Test_2110() - { - } - [Test] - public void Test_2111() - { - } - [Test] - public void Test_2112() - { - } - [Test] - public void Test_2113() - { - } - [Test] - public void Test_2114() - { - } - [Test] - public void Test_2115() - { - } - [Test] - public void Test_2116() - { - } - [Test] - public void Test_2117() - { - } - [Test] - public void Test_2118() - { - } - [Test] - public void Test_2119() - { - } - [Test] - public void Test_2120() - { - } - [Test] - public void Test_2121() - { - } - [Test] - public void Test_2122() - { - } - [Test] - public void Test_2123() - { - } - [Test] - public void Test_2124() - { - } - [Test] - public void Test_2125() - { - } - [Test] - public void Test_2126() - { - } - [Test] - public void Test_2127() - { - } - [Test] - public void Test_2128() - { - } - [Test] - public void Test_2129() - { - } - [Test] - public void Test_2130() - { - } - [Test] - public void Test_2131() - { - } - [Test] - public void Test_2132() - { - } - [Test] - public void Test_2133() - { - } - [Test] - public void Test_2134() - { - } - [Test] - public void Test_2135() - { - } - [Test] - public void Test_2136() - { - } - [Test] - public void Test_2137() - { - } - [Test] - public void Test_2138() - { - } - [Test] - public void Test_2139() - { - } - [Test] - public void Test_2140() - { - } - [Test] - public void Test_2141() - { - } - [Test] - public void Test_2142() - { - } - [Test] - public void Test_2143() - { - } - [Test] - public void Test_2144() - { - } - [Test] - public void Test_2145() - { - } - [Test] - public void Test_2146() - { - } - [Test] - public void Test_2147() - { - } - [Test] - public void Test_2148() - { - } - [Test] - public void Test_2149() - { - } - [Test] - public void Test_2150() - { - } - [Test] - public void Test_2151() - { - } - [Test] - public void Test_2152() - { - } - [Test] - public void Test_2153() - { - } - [Test] - public void Test_2154() - { - } - [Test] - public void Test_2155() - { - } - [Test] - public void Test_2156() - { - } - [Test] - public void Test_2157() - { - } - [Test] - public void Test_2158() - { - } - [Test] - public void Test_2159() - { - } - [Test] - public void Test_2160() - { - } - [Test] - public void Test_2161() - { - } - [Test] - public void Test_2162() - { - } - [Test] - public void Test_2163() - { - } - [Test] - public void Test_2164() - { - } - [Test] - public void Test_2165() - { - } - [Test] - public void Test_2166() - { - } - [Test] - public void Test_2167() - { - } - [Test] - public void Test_2168() - { - } - [Test] - public void Test_2169() - { - } - [Test] - public void Test_2170() - { - } - [Test] - public void Test_2171() - { - } - [Test] - public void Test_2172() - { - } - [Test] - public void Test_2173() - { - } - [Test] - public void Test_2174() - { - } - [Test] - public void Test_2175() - { - } - [Test] - public void Test_2176() - { - } - [Test] - public void Test_2177() - { - } - [Test] - public void Test_2178() - { - } - [Test] - public void Test_2179() - { - } - [Test] - public void Test_2180() - { - } - [Test] - public void Test_2181() - { - } - [Test] - public void Test_2182() - { - } - [Test] - public void Test_2183() - { - } - [Test] - public void Test_2184() - { - } - [Test] - public void Test_2185() - { - } - [Test] - public void Test_2186() - { - } - [Test] - public void Test_2187() - { - } - [Test] - public void Test_2188() - { - } - [Test] - public void Test_2189() - { - } - [Test] - public void Test_2190() - { - } - [Test] - public void Test_2191() - { - } - [Test] - public void Test_2192() - { - } - [Test] - public void Test_2193() - { - } - [Test] - public void Test_2194() - { - } - [Test] - public void Test_2195() - { - } - [Test] - public void Test_2196() - { - } - [Test] - public void Test_2197() - { - } - [Test] - public void Test_2198() - { - } - [Test] - public void Test_2199() - { - } - [Test] - public void Test_2200() - { - } - [Test] - public void Test_2201() - { - } - [Test] - public void Test_2202() - { - } - [Test] - public void Test_2203() - { - } - [Test] - public void Test_2204() - { - } - [Test] - public void Test_2205() - { - } - [Test] - public void Test_2206() - { - } - [Test] - public void Test_2207() - { - } - [Test] - public void Test_2208() - { - } - [Test] - public void Test_2209() - { - } - [Test] - public void Test_2210() - { - } - [Test] - public void Test_2211() - { - } - [Test] - public void Test_2212() - { - } - [Test] - public void Test_2213() - { - } - [Test] - public void Test_2214() - { - } - [Test] - public void Test_2215() - { - } - [Test] - public void Test_2216() - { - } - [Test] - public void Test_2217() - { - } - [Test] - public void Test_2218() - { - } - [Test] - public void Test_2219() - { - } - [Test] - public void Test_2220() - { - } - [Test] - public void Test_2221() - { - } - [Test] - public void Test_2222() - { - } - [Test] - public void Test_2223() - { - } - [Test] - public void Test_2224() - { - } - [Test] - public void Test_2225() - { - } - [Test] - public void Test_2226() - { - } - [Test] - public void Test_2227() - { - } - [Test] - public void Test_2228() - { - } - [Test] - public void Test_2229() - { - } - [Test] - public void Test_2230() - { - } - [Test] - public void Test_2231() - { - } - [Test] - public void Test_2232() - { - } - [Test] - public void Test_2233() - { - } - [Test] - public void Test_2234() - { - } - [Test] - public void Test_2235() - { - } - [Test] - public void Test_2236() - { - } - [Test] - public void Test_2237() - { - } - [Test] - public void Test_2238() - { - } - [Test] - public void Test_2239() - { - } - [Test] - public void Test_2240() - { - } - [Test] - public void Test_2241() - { - } - [Test] - public void Test_2242() - { - } - [Test] - public void Test_2243() - { - } - [Test] - public void Test_2244() - { - } - [Test] - public void Test_2245() - { - } - [Test] - public void Test_2246() - { - } - [Test] - public void Test_2247() - { - } - [Test] - public void Test_2248() - { - } - [Test] - public void Test_2249() - { - } - [Test] - public void Test_2250() - { - } - [Test] - public void Test_2251() - { - } - [Test] - public void Test_2252() - { - } - [Test] - public void Test_2253() - { - } - [Test] - public void Test_2254() - { - } - [Test] - public void Test_2255() - { - } - [Test] - public void Test_2256() - { - } - [Test] - public void Test_2257() - { - } - [Test] - public void Test_2258() - { - } - [Test] - public void Test_2259() - { - } - [Test] - public void Test_2260() - { - } - [Test] - public void Test_2261() - { - } - [Test] - public void Test_2262() - { - } - [Test] - public void Test_2263() - { - } - [Test] - public void Test_2264() - { - } - [Test] - public void Test_2265() - { - } - [Test] - public void Test_2266() - { - } - [Test] - public void Test_2267() - { - } - [Test] - public void Test_2268() - { - } - [Test] - public void Test_2269() - { - } - [Test] - public void Test_2270() - { - } - [Test] - public void Test_2271() - { - } - [Test] - public void Test_2272() - { - } - [Test] - public void Test_2273() - { - } - [Test] - public void Test_2274() - { - } - [Test] - public void Test_2275() - { - } - [Test] - public void Test_2276() - { - } - [Test] - public void Test_2277() - { - } - [Test] - public void Test_2278() - { - } - [Test] - public void Test_2279() - { - } - [Test] - public void Test_2280() - { - } - [Test] - public void Test_2281() - { - } - [Test] - public void Test_2282() - { - } - [Test] - public void Test_2283() - { - } - [Test] - public void Test_2284() - { - } - [Test] - public void Test_2285() - { - } - [Test] - public void Test_2286() - { - } - [Test] - public void Test_2287() - { - } - [Test] - public void Test_2288() - { - } - [Test] - public void Test_2289() - { - } - [Test] - public void Test_2290() - { - } - [Test] - public void Test_2291() - { - } - [Test] - public void Test_2292() - { - } - [Test] - public void Test_2293() - { - } - [Test] - public void Test_2294() - { - } - [Test] - public void Test_2295() - { - } - [Test] - public void Test_2296() - { - } - [Test] - public void Test_2297() - { - } - [Test] - public void Test_2298() - { - } - [Test] - public void Test_2299() - { - } - [Test] - public void Test_2300() - { - } - [Test] - public void Test_2301() - { - } - [Test] - public void Test_2302() - { - } - [Test] - public void Test_2303() - { - } - [Test] - public void Test_2304() - { - } - [Test] - public void Test_2305() - { - } - [Test] - public void Test_2306() - { - } - [Test] - public void Test_2307() - { - } - [Test] - public void Test_2308() - { - } - [Test] - public void Test_2309() - { - } - [Test] - public void Test_2310() - { - } - [Test] - public void Test_2311() - { - } - [Test] - public void Test_2312() - { - } - [Test] - public void Test_2313() - { - } - [Test] - public void Test_2314() - { - } - [Test] - public void Test_2315() - { - } - [Test] - public void Test_2316() - { - } - [Test] - public void Test_2317() - { - } - [Test] - public void Test_2318() - { - } - [Test] - public void Test_2319() - { - } - [Test] - public void Test_2320() - { - } - [Test] - public void Test_2321() - { - } - [Test] - public void Test_2322() - { - } - [Test] - public void Test_2323() - { - } - [Test] - public void Test_2324() - { - } - [Test] - public void Test_2325() - { - } - [Test] - public void Test_2326() - { - } - [Test] - public void Test_2327() - { - } - [Test] - public void Test_2328() - { - } - [Test] - public void Test_2329() - { - } - [Test] - public void Test_2330() - { - } - [Test] - public void Test_2331() - { - } - [Test] - public void Test_2332() - { - } - [Test] - public void Test_2333() - { - } - [Test] - public void Test_2334() - { - } - [Test] - public void Test_2335() - { - } - [Test] - public void Test_2336() - { - } - [Test] - public void Test_2337() - { - } - [Test] - public void Test_2338() - { - } - [Test] - public void Test_2339() - { - } - [Test] - public void Test_2340() - { - } - [Test] - public void Test_2341() - { - } - [Test] - public void Test_2342() - { - } - [Test] - public void Test_2343() - { - } - [Test] - public void Test_2344() - { - } - [Test] - public void Test_2345() - { - } - [Test] - public void Test_2346() - { - } - [Test] - public void Test_2347() - { - } - [Test] - public void Test_2348() - { - } - [Test] - public void Test_2349() - { - } - [Test] - public void Test_2350() - { - } - [Test] - public void Test_2351() - { - } - [Test] - public void Test_2352() - { - } - [Test] - public void Test_2353() - { - } - [Test] - public void Test_2354() - { - } - [Test] - public void Test_2355() - { - } - [Test] - public void Test_2356() - { - } - [Test] - public void Test_2357() - { - } - [Test] - public void Test_2358() - { - } - [Test] - public void Test_2359() - { - } - [Test] - public void Test_2360() - { - } - [Test] - public void Test_2361() - { - } - [Test] - public void Test_2362() - { - } - [Test] - public void Test_2363() - { - } - [Test] - public void Test_2364() - { - } - [Test] - public void Test_2365() - { - } - [Test] - public void Test_2366() - { - } - [Test] - public void Test_2367() - { - } - [Test] - public void Test_2368() - { - } - [Test] - public void Test_2369() - { - } - [Test] - public void Test_2370() - { - } - [Test] - public void Test_2371() - { - } - [Test] - public void Test_2372() - { - } - [Test] - public void Test_2373() - { - } - [Test] - public void Test_2374() - { - } - [Test] - public void Test_2375() - { - } - [Test] - public void Test_2376() - { - } - [Test] - public void Test_2377() - { - } - [Test] - public void Test_2378() - { - } - [Test] - public void Test_2379() - { - } - [Test] - public void Test_2380() - { - } - [Test] - public void Test_2381() - { - } - [Test] - public void Test_2382() - { - } - [Test] - public void Test_2383() - { - } - [Test] - public void Test_2384() - { - } - [Test] - public void Test_2385() - { - } - [Test] - public void Test_2386() - { - } - [Test] - public void Test_2387() - { - } - [Test] - public void Test_2388() - { - } - [Test] - public void Test_2389() - { - } - [Test] - public void Test_2390() - { - } - [Test] - public void Test_2391() - { - } - [Test] - public void Test_2392() - { - } - [Test] - public void Test_2393() - { - } - [Test] - public void Test_2394() - { - } - [Test] - public void Test_2395() - { - } - [Test] - public void Test_2396() - { - } - [Test] - public void Test_2397() - { - } - [Test] - public void Test_2398() - { - } - [Test] - public void Test_2399() - { - } - [Test] - public void Test_2400() - { - } - [Test] - public void Test_2401() - { - } - [Test] - public void Test_2402() - { - } - [Test] - public void Test_2403() - { - } - [Test] - public void Test_2404() - { - } - [Test] - public void Test_2405() - { - } - [Test] - public void Test_2406() - { - } - [Test] - public void Test_2407() - { - } - [Test] - public void Test_2408() - { - } - [Test] - public void Test_2409() - { - } - [Test] - public void Test_2410() - { - } - [Test] - public void Test_2411() - { - } - [Test] - public void Test_2412() - { - } - [Test] - public void Test_2413() - { - } - [Test] - public void Test_2414() - { - } - [Test] - public void Test_2415() - { - } - [Test] - public void Test_2416() - { - } - [Test] - public void Test_2417() - { - } - [Test] - public void Test_2418() - { - } - [Test] - public void Test_2419() - { - } - [Test] - public void Test_2420() - { - } - [Test] - public void Test_2421() - { - } - [Test] - public void Test_2422() - { - } - [Test] - public void Test_2423() - { - } - [Test] - public void Test_2424() - { - } - [Test] - public void Test_2425() - { - } - [Test] - public void Test_2426() - { - } - [Test] - public void Test_2427() - { - } - [Test] - public void Test_2428() - { - } - [Test] - public void Test_2429() - { - } - [Test] - public void Test_2430() - { - } - [Test] - public void Test_2431() - { - } - [Test] - public void Test_2432() - { - } - [Test] - public void Test_2433() - { - } - [Test] - public void Test_2434() - { - } - [Test] - public void Test_2435() - { - } - [Test] - public void Test_2436() - { - } - [Test] - public void Test_2437() - { - } - [Test] - public void Test_2438() - { - } - [Test] - public void Test_2439() - { - } - [Test] - public void Test_2440() - { - } - [Test] - public void Test_2441() - { - } - [Test] - public void Test_2442() - { - } - [Test] - public void Test_2443() - { - } - [Test] - public void Test_2444() - { - } - [Test] - public void Test_2445() - { - } - [Test] - public void Test_2446() - { - } - [Test] - public void Test_2447() - { - } - [Test] - public void Test_2448() - { - } - [Test] - public void Test_2449() - { - } - [Test] - public void Test_2450() - { - } - [Test] - public void Test_2451() - { - } - [Test] - public void Test_2452() - { - } - [Test] - public void Test_2453() - { - } - [Test] - public void Test_2454() - { - } - [Test] - public void Test_2455() - { - } - [Test] - public void Test_2456() - { - } - [Test] - public void Test_2457() - { - } - [Test] - public void Test_2458() - { - } - [Test] - public void Test_2459() - { - } - [Test] - public void Test_2460() - { - } - [Test] - public void Test_2461() - { - } - [Test] - public void Test_2462() - { - } - [Test] - public void Test_2463() - { - } - [Test] - public void Test_2464() - { - } - [Test] - public void Test_2465() - { - } - [Test] - public void Test_2466() - { - } - [Test] - public void Test_2467() - { - } - [Test] - public void Test_2468() - { - } - [Test] - public void Test_2469() - { - } - [Test] - public void Test_2470() - { - } - [Test] - public void Test_2471() - { - } - [Test] - public void Test_2472() - { - } - [Test] - public void Test_2473() - { - } - [Test] - public void Test_2474() - { - } - [Test] - public void Test_2475() - { - } - [Test] - public void Test_2476() - { - } - [Test] - public void Test_2477() - { - } - [Test] - public void Test_2478() - { - } - [Test] - public void Test_2479() - { - } - [Test] - public void Test_2480() - { - } - [Test] - public void Test_2481() - { - } - [Test] - public void Test_2482() - { - } - [Test] - public void Test_2483() - { - } - [Test] - public void Test_2484() - { - } - [Test] - public void Test_2485() - { - } - [Test] - public void Test_2486() - { - } - [Test] - public void Test_2487() - { - } - [Test] - public void Test_2488() - { - } - [Test] - public void Test_2489() - { - } - [Test] - public void Test_2490() - { - } - [Test] - public void Test_2491() - { - } - [Test] - public void Test_2492() - { - } - [Test] - public void Test_2493() - { - } - [Test] - public void Test_2494() - { - } - [Test] - public void Test_2495() - { - } - [Test] - public void Test_2496() - { - } - [Test] - public void Test_2497() - { - } - [Test] - public void Test_2498() - { - } - [Test] - public void Test_2499() - { - } - [Test] - public void Test_2500() - { - } - [Test] - public void Test_2501() - { - } - [Test] - public void Test_2502() - { - } - [Test] - public void Test_2503() - { - } - [Test] - public void Test_2504() - { - } - [Test] - public void Test_2505() - { - } - [Test] - public void Test_2506() - { - } - [Test] - public void Test_2507() - { - } - [Test] - public void Test_2508() - { - } - [Test] - public void Test_2509() - { - } - [Test] - public void Test_2510() - { - } - [Test] - public void Test_2511() - { - } - [Test] - public void Test_2512() - { - } - [Test] - public void Test_2513() - { - } - [Test] - public void Test_2514() - { - } - [Test] - public void Test_2515() - { - } - [Test] - public void Test_2516() - { - } - [Test] - public void Test_2517() - { - } - [Test] - public void Test_2518() - { - } - [Test] - public void Test_2519() - { - } - [Test] - public void Test_2520() - { - } - [Test] - public void Test_2521() - { - } - [Test] - public void Test_2522() - { - } - [Test] - public void Test_2523() - { - } - [Test] - public void Test_2524() - { - } - [Test] - public void Test_2525() - { - } - [Test] - public void Test_2526() - { - } - [Test] - public void Test_2527() - { - } - [Test] - public void Test_2528() - { - } - [Test] - public void Test_2529() - { - } - [Test] - public void Test_2530() - { - } - [Test] - public void Test_2531() - { - } - [Test] - public void Test_2532() - { - } - [Test] - public void Test_2533() - { - } - [Test] - public void Test_2534() - { - } - [Test] - public void Test_2535() - { - } - [Test] - public void Test_2536() - { - } - [Test] - public void Test_2537() - { - } - [Test] - public void Test_2538() - { - } - [Test] - public void Test_2539() - { - } - [Test] - public void Test_2540() - { - } - [Test] - public void Test_2541() - { - } - [Test] - public void Test_2542() - { - } - [Test] - public void Test_2543() - { - } - [Test] - public void Test_2544() - { - } - [Test] - public void Test_2545() - { - } - [Test] - public void Test_2546() - { - } - [Test] - public void Test_2547() - { - } - [Test] - public void Test_2548() - { - } - [Test] - public void Test_2549() - { - } - [Test] - public void Test_2550() - { - } - [Test] - public void Test_2551() - { - } - [Test] - public void Test_2552() - { - } - [Test] - public void Test_2553() - { - } - [Test] - public void Test_2554() - { - } - [Test] - public void Test_2555() - { - } - [Test] - public void Test_2556() - { - } - [Test] - public void Test_2557() - { - } - [Test] - public void Test_2558() - { - } - [Test] - public void Test_2559() - { - } - [Test] - public void Test_2560() - { - } - [Test] - public void Test_2561() - { - } - [Test] - public void Test_2562() - { - } - [Test] - public void Test_2563() - { - } - [Test] - public void Test_2564() - { - } - [Test] - public void Test_2565() - { - } - [Test] - public void Test_2566() - { - } - [Test] - public void Test_2567() - { - } - [Test] - public void Test_2568() - { - } - [Test] - public void Test_2569() - { - } - [Test] - public void Test_2570() - { - } - [Test] - public void Test_2571() - { - } - [Test] - public void Test_2572() - { - } - [Test] - public void Test_2573() - { - } - [Test] - public void Test_2574() - { - } - [Test] - public void Test_2575() - { - } - [Test] - public void Test_2576() - { - } - [Test] - public void Test_2577() - { - } - [Test] - public void Test_2578() - { - } - [Test] - public void Test_2579() - { - } - [Test] - public void Test_2580() - { - } - [Test] - public void Test_2581() - { - } - [Test] - public void Test_2582() - { - } - [Test] - public void Test_2583() - { - } - [Test] - public void Test_2584() - { - } - [Test] - public void Test_2585() - { - } - [Test] - public void Test_2586() - { - } - [Test] - public void Test_2587() - { - } - [Test] - public void Test_2588() - { - } - [Test] - public void Test_2589() - { - } - [Test] - public void Test_2590() - { - } - [Test] - public void Test_2591() - { - } - [Test] - public void Test_2592() - { - } - [Test] - public void Test_2593() - { - } - [Test] - public void Test_2594() - { - } - [Test] - public void Test_2595() - { - } - [Test] - public void Test_2596() - { - } - [Test] - public void Test_2597() - { - } - [Test] - public void Test_2598() - { - } - [Test] - public void Test_2599() - { - } - [Test] - public void Test_2600() - { - } - [Test] - public void Test_2601() - { - } - [Test] - public void Test_2602() - { - } - [Test] - public void Test_2603() - { - } - [Test] - public void Test_2604() - { - } - [Test] - public void Test_2605() - { - } - [Test] - public void Test_2606() - { - } - [Test] - public void Test_2607() - { - } - [Test] - public void Test_2608() - { - } - [Test] - public void Test_2609() - { - } - [Test] - public void Test_2610() - { - } - [Test] - public void Test_2611() - { - } - [Test] - public void Test_2612() - { - } - [Test] - public void Test_2613() - { - } - [Test] - public void Test_2614() - { - } - [Test] - public void Test_2615() - { - } - [Test] - public void Test_2616() - { - } - [Test] - public void Test_2617() - { - } - [Test] - public void Test_2618() - { - } - [Test] - public void Test_2619() - { - } - [Test] - public void Test_2620() - { - } - [Test] - public void Test_2621() - { - } - [Test] - public void Test_2622() - { - } - [Test] - public void Test_2623() - { - } - [Test] - public void Test_2624() - { - } - [Test] - public void Test_2625() - { - } - [Test] - public void Test_2626() - { - } - [Test] - public void Test_2627() - { - } - [Test] - public void Test_2628() - { - } - [Test] - public void Test_2629() - { - } - [Test] - public void Test_2630() - { - } - [Test] - public void Test_2631() - { - } - [Test] - public void Test_2632() - { - } - [Test] - public void Test_2633() - { - } - [Test] - public void Test_2634() - { - } - [Test] - public void Test_2635() - { - } - [Test] - public void Test_2636() - { - } - [Test] - public void Test_2637() - { - } - [Test] - public void Test_2638() - { - } - [Test] - public void Test_2639() - { - } - [Test] - public void Test_2640() - { - } - [Test] - public void Test_2641() - { - } - [Test] - public void Test_2642() - { - } - [Test] - public void Test_2643() - { - } - [Test] - public void Test_2644() - { - } - [Test] - public void Test_2645() - { - } - [Test] - public void Test_2646() - { - } - [Test] - public void Test_2647() - { - } - [Test] - public void Test_2648() - { - } - [Test] - public void Test_2649() - { - } - [Test] - public void Test_2650() - { - } - [Test] - public void Test_2651() - { - } - [Test] - public void Test_2652() - { - } - [Test] - public void Test_2653() - { - } - [Test] - public void Test_2654() - { - } - [Test] - public void Test_2655() - { - } - [Test] - public void Test_2656() - { - } - [Test] - public void Test_2657() - { - } - [Test] - public void Test_2658() - { - } - [Test] - public void Test_2659() - { - } - [Test] - public void Test_2660() - { - } - [Test] - public void Test_2661() - { - } - [Test] - public void Test_2662() - { - } - [Test] - public void Test_2663() - { - } - [Test] - public void Test_2664() - { - } - [Test] - public void Test_2665() - { - } - [Test] - public void Test_2666() - { - } - [Test] - public void Test_2667() - { - } - [Test] - public void Test_2668() - { - } - [Test] - public void Test_2669() - { - } - [Test] - public void Test_2670() - { - } - [Test] - public void Test_2671() - { - } - [Test] - public void Test_2672() - { - } - [Test] - public void Test_2673() - { - } - [Test] - public void Test_2674() - { - } - [Test] - public void Test_2675() - { - } - [Test] - public void Test_2676() - { - } - [Test] - public void Test_2677() - { - } - [Test] - public void Test_2678() - { - } - [Test] - public void Test_2679() - { - } - [Test] - public void Test_2680() - { - } - [Test] - public void Test_2681() - { - } - [Test] - public void Test_2682() - { - } - [Test] - public void Test_2683() - { - } - [Test] - public void Test_2684() - { - } - [Test] - public void Test_2685() - { - } - [Test] - public void Test_2686() - { - } - [Test] - public void Test_2687() - { - } - [Test] - public void Test_2688() - { - } - [Test] - public void Test_2689() - { - } - [Test] - public void Test_2690() - { - } - [Test] - public void Test_2691() - { - } - [Test] - public void Test_2692() - { - } - [Test] - public void Test_2693() - { - } - [Test] - public void Test_2694() - { - } - [Test] - public void Test_2695() - { - } - [Test] - public void Test_2696() - { - } - [Test] - public void Test_2697() - { - } - [Test] - public void Test_2698() - { - } - [Test] - public void Test_2699() - { - } - [Test] - public void Test_2700() - { - } - [Test] - public void Test_2701() - { - } - [Test] - public void Test_2702() - { - } - [Test] - public void Test_2703() - { - } - [Test] - public void Test_2704() - { - } - [Test] - public void Test_2705() - { - } - [Test] - public void Test_2706() - { - } - [Test] - public void Test_2707() - { - } - [Test] - public void Test_2708() - { - } - [Test] - public void Test_2709() - { - } - [Test] - public void Test_2710() - { - } - [Test] - public void Test_2711() - { - } - [Test] - public void Test_2712() - { - } - [Test] - public void Test_2713() - { - } - [Test] - public void Test_2714() - { - } - [Test] - public void Test_2715() - { - } - [Test] - public void Test_2716() - { - } - [Test] - public void Test_2717() - { - } - [Test] - public void Test_2718() - { - } - [Test] - public void Test_2719() - { - } - [Test] - public void Test_2720() - { - } - [Test] - public void Test_2721() - { - } - [Test] - public void Test_2722() - { - } - [Test] - public void Test_2723() - { - } - [Test] - public void Test_2724() - { - } - [Test] - public void Test_2725() - { - } - [Test] - public void Test_2726() - { - } - [Test] - public void Test_2727() - { - } - [Test] - public void Test_2728() - { - } - [Test] - public void Test_2729() - { - } - [Test] - public void Test_2730() - { - } - [Test] - public void Test_2731() - { - } - [Test] - public void Test_2732() - { - } - [Test] - public void Test_2733() - { - } - [Test] - public void Test_2734() - { - } - [Test] - public void Test_2735() - { - } - [Test] - public void Test_2736() - { - } - [Test] - public void Test_2737() - { - } - [Test] - public void Test_2738() - { - } - [Test] - public void Test_2739() - { - } - [Test] - public void Test_2740() - { - } - [Test] - public void Test_2741() - { - } - [Test] - public void Test_2742() - { - } - [Test] - public void Test_2743() - { - } - [Test] - public void Test_2744() - { - } - [Test] - public void Test_2745() - { - } - [Test] - public void Test_2746() - { - } - [Test] - public void Test_2747() - { - } - [Test] - public void Test_2748() - { - } - [Test] - public void Test_2749() - { - } - [Test] - public void Test_2750() - { - } - [Test] - public void Test_2751() - { - } - [Test] - public void Test_2752() - { - } - [Test] - public void Test_2753() - { - } - [Test] - public void Test_2754() - { - } - [Test] - public void Test_2755() - { - } - [Test] - public void Test_2756() - { - } - [Test] - public void Test_2757() - { - } - [Test] - public void Test_2758() - { - } - [Test] - public void Test_2759() - { - } - [Test] - public void Test_2760() - { - } - [Test] - public void Test_2761() - { - } - [Test] - public void Test_2762() - { - } - [Test] - public void Test_2763() - { - } - [Test] - public void Test_2764() - { - } - [Test] - public void Test_2765() - { - } - [Test] - public void Test_2766() - { - } - [Test] - public void Test_2767() - { - } - [Test] - public void Test_2768() - { - } - [Test] - public void Test_2769() - { - } - [Test] - public void Test_2770() - { - } - [Test] - public void Test_2771() - { - } - [Test] - public void Test_2772() - { - } - [Test] - public void Test_2773() - { - } - [Test] - public void Test_2774() - { - } - [Test] - public void Test_2775() - { - } - [Test] - public void Test_2776() - { - } - [Test] - public void Test_2777() - { - } - [Test] - public void Test_2778() - { - } - [Test] - public void Test_2779() - { - } - [Test] - public void Test_2780() - { - } - [Test] - public void Test_2781() - { - } - [Test] - public void Test_2782() - { - } - [Test] - public void Test_2783() - { - } - [Test] - public void Test_2784() - { - } - [Test] - public void Test_2785() - { - } - [Test] - public void Test_2786() - { - } - [Test] - public void Test_2787() - { - } - [Test] - public void Test_2788() - { - } - [Test] - public void Test_2789() - { - } - [Test] - public void Test_2790() - { - } - [Test] - public void Test_2791() - { - } - [Test] - public void Test_2792() - { - } - [Test] - public void Test_2793() - { - } - [Test] - public void Test_2794() - { - } - [Test] - public void Test_2795() - { - } - [Test] - public void Test_2796() - { - } - [Test] - public void Test_2797() - { - } - [Test] - public void Test_2798() - { - } - [Test] - public void Test_2799() - { - } - [Test] - public void Test_2800() - { - } - [Test] - public void Test_2801() - { - } - [Test] - public void Test_2802() - { - } - [Test] - public void Test_2803() - { - } - [Test] - public void Test_2804() - { - } - [Test] - public void Test_2805() - { - } - [Test] - public void Test_2806() - { - } - [Test] - public void Test_2807() - { - } - [Test] - public void Test_2808() - { - } - [Test] - public void Test_2809() - { - } - [Test] - public void Test_2810() - { - } - [Test] - public void Test_2811() - { - } - [Test] - public void Test_2812() - { - } - [Test] - public void Test_2813() - { - } - [Test] - public void Test_2814() - { - } - [Test] - public void Test_2815() - { - } - [Test] - public void Test_2816() - { - } - [Test] - public void Test_2817() - { - } - [Test] - public void Test_2818() - { - } - [Test] - public void Test_2819() - { - } - [Test] - public void Test_2820() - { - } - [Test] - public void Test_2821() - { - } - [Test] - public void Test_2822() - { - } - [Test] - public void Test_2823() - { - } - [Test] - public void Test_2824() - { - } - [Test] - public void Test_2825() - { - } - [Test] - public void Test_2826() - { - } - [Test] - public void Test_2827() - { - } - [Test] - public void Test_2828() - { - } - [Test] - public void Test_2829() - { - } - [Test] - public void Test_2830() - { - } - [Test] - public void Test_2831() - { - } - [Test] - public void Test_2832() - { - } - [Test] - public void Test_2833() - { - } - [Test] - public void Test_2834() - { - } - [Test] - public void Test_2835() - { - } - [Test] - public void Test_2836() - { - } - [Test] - public void Test_2837() - { - } - [Test] - public void Test_2838() - { - } - [Test] - public void Test_2839() - { - } - [Test] - public void Test_2840() - { - } - [Test] - public void Test_2841() - { - } - [Test] - public void Test_2842() - { - } - [Test] - public void Test_2843() - { - } - [Test] - public void Test_2844() - { - } - [Test] - public void Test_2845() - { - } - [Test] - public void Test_2846() - { - } - [Test] - public void Test_2847() - { - } - [Test] - public void Test_2848() - { - } - [Test] - public void Test_2849() - { - } - [Test] - public void Test_2850() - { - } - [Test] - public void Test_2851() - { - } - [Test] - public void Test_2852() - { - } - [Test] - public void Test_2853() - { - } - [Test] - public void Test_2854() - { - } - [Test] - public void Test_2855() - { - } - [Test] - public void Test_2856() - { - } - [Test] - public void Test_2857() - { - } - [Test] - public void Test_2858() - { - } - [Test] - public void Test_2859() - { - } - [Test] - public void Test_2860() - { - } - [Test] - public void Test_2861() - { - } - [Test] - public void Test_2862() - { - } - [Test] - public void Test_2863() - { - } - [Test] - public void Test_2864() - { - } - [Test] - public void Test_2865() - { - } - [Test] - public void Test_2866() - { - } - [Test] - public void Test_2867() - { - } - [Test] - public void Test_2868() - { - } - [Test] - public void Test_2869() - { - } - [Test] - public void Test_2870() - { - } - [Test] - public void Test_2871() - { - } - [Test] - public void Test_2872() - { - } - [Test] - public void Test_2873() - { - } - [Test] - public void Test_2874() - { - } - [Test] - public void Test_2875() - { - } - [Test] - public void Test_2876() - { - } - [Test] - public void Test_2877() - { - } - [Test] - public void Test_2878() - { - } - [Test] - public void Test_2879() - { - } - [Test] - public void Test_2880() - { - } - [Test] - public void Test_2881() - { - } - [Test] - public void Test_2882() - { - } - [Test] - public void Test_2883() - { - } - [Test] - public void Test_2884() - { - } - [Test] - public void Test_2885() - { - } - [Test] - public void Test_2886() - { - } - [Test] - public void Test_2887() - { - } - [Test] - public void Test_2888() - { - } - [Test] - public void Test_2889() - { - } - [Test] - public void Test_2890() - { - } - [Test] - public void Test_2891() - { - } - [Test] - public void Test_2892() - { - } - [Test] - public void Test_2893() - { - } - [Test] - public void Test_2894() - { - } - [Test] - public void Test_2895() - { - } - [Test] - public void Test_2896() - { - } - [Test] - public void Test_2897() - { - } - [Test] - public void Test_2898() - { - } - [Test] - public void Test_2899() - { - } - [Test] - public void Test_2900() - { - } - [Test] - public void Test_2901() - { - } - [Test] - public void Test_2902() - { - } - [Test] - public void Test_2903() - { - } - [Test] - public void Test_2904() - { - } - [Test] - public void Test_2905() - { - } - [Test] - public void Test_2906() - { - } - [Test] - public void Test_2907() - { - } - [Test] - public void Test_2908() - { - } - [Test] - public void Test_2909() - { - } - [Test] - public void Test_2910() - { - } - [Test] - public void Test_2911() - { - } - [Test] - public void Test_2912() - { - } - [Test] - public void Test_2913() - { - } - [Test] - public void Test_2914() - { - } - [Test] - public void Test_2915() - { - } - [Test] - public void Test_2916() - { - } - [Test] - public void Test_2917() - { - } - [Test] - public void Test_2918() - { - } - [Test] - public void Test_2919() - { - } - [Test] - public void Test_2920() - { - } - [Test] - public void Test_2921() - { - } - [Test] - public void Test_2922() - { - } - [Test] - public void Test_2923() - { - } - [Test] - public void Test_2924() - { - } - [Test] - public void Test_2925() - { - } - [Test] - public void Test_2926() - { - } - [Test] - public void Test_2927() - { - } - [Test] - public void Test_2928() - { - } - [Test] - public void Test_2929() - { - } - [Test] - public void Test_2930() - { - } - [Test] - public void Test_2931() - { - } - [Test] - public void Test_2932() - { - } - [Test] - public void Test_2933() - { - } - [Test] - public void Test_2934() - { - } - [Test] - public void Test_2935() - { - } - [Test] - public void Test_2936() - { - } - [Test] - public void Test_2937() - { - } - [Test] - public void Test_2938() - { - } - [Test] - public void Test_2939() - { - } - [Test] - public void Test_2940() - { - } - [Test] - public void Test_2941() - { - } - [Test] - public void Test_2942() - { - } - [Test] - public void Test_2943() - { - } - [Test] - public void Test_2944() - { - } - [Test] - public void Test_2945() - { - } - [Test] - public void Test_2946() - { - } - [Test] - public void Test_2947() - { - } - [Test] - public void Test_2948() - { - } - [Test] - public void Test_2949() - { - } - [Test] - public void Test_2950() - { - } - [Test] - public void Test_2951() - { - } - [Test] - public void Test_2952() - { - } - [Test] - public void Test_2953() - { - } - [Test] - public void Test_2954() - { - } - [Test] - public void Test_2955() - { - } - [Test] - public void Test_2956() - { - } - [Test] - public void Test_2957() - { - } - [Test] - public void Test_2958() - { - } - [Test] - public void Test_2959() - { - } - [Test] - public void Test_2960() - { - } - [Test] - public void Test_2961() - { - } - [Test] - public void Test_2962() - { - } - [Test] - public void Test_2963() - { - } - [Test] - public void Test_2964() - { - } - [Test] - public void Test_2965() - { - } - [Test] - public void Test_2966() - { - } - [Test] - public void Test_2967() - { - } - [Test] - public void Test_2968() - { - } - [Test] - public void Test_2969() - { - } - [Test] - public void Test_2970() - { - } - [Test] - public void Test_2971() - { - } - [Test] - public void Test_2972() - { - } - [Test] - public void Test_2973() - { - } - [Test] - public void Test_2974() - { - } - [Test] - public void Test_2975() - { - } - [Test] - public void Test_2976() - { - } - [Test] - public void Test_2977() - { - } - [Test] - public void Test_2978() - { - } - [Test] - public void Test_2979() - { - } - [Test] - public void Test_2980() - { - } - [Test] - public void Test_2981() - { - } - [Test] - public void Test_2982() - { - } - [Test] - public void Test_2983() - { - } - [Test] - public void Test_2984() - { - } - [Test] - public void Test_2985() - { - } - [Test] - public void Test_2986() - { - } - [Test] - public void Test_2987() - { - } - [Test] - public void Test_2988() - { - } - [Test] - public void Test_2989() - { - } - [Test] - public void Test_2990() - { - } - [Test] - public void Test_2991() - { - } - [Test] - public void Test_2992() - { - } - [Test] - public void Test_2993() - { - } - [Test] - public void Test_2994() - { - } - [Test] - public void Test_2995() - { - } - [Test] - public void Test_2996() - { - } - [Test] - public void Test_2997() - { - } - [Test] - public void Test_2998() - { - } - [Test] - public void Test_2999() - { - } - [Test] - public void Test_3000() - { - } - [Test] - public void Test_3001() - { - } - [Test] - public void Test_3002() - { - } - [Test] - public void Test_3003() - { - } - [Test] - public void Test_3004() - { - } - [Test] - public void Test_3005() - { - } - [Test] - public void Test_3006() - { - } - [Test] - public void Test_3007() - { - } - [Test] - public void Test_3008() - { - } - [Test] - public void Test_3009() - { - } - [Test] - public void Test_3010() - { - } - [Test] - public void Test_3011() - { - } - [Test] - public void Test_3012() - { - } - [Test] - public void Test_3013() - { - } - [Test] - public void Test_3014() - { - } - [Test] - public void Test_3015() - { - } - [Test] - public void Test_3016() - { - } - [Test] - public void Test_3017() - { - } - [Test] - public void Test_3018() - { - } - [Test] - public void Test_3019() - { - } - [Test] - public void Test_3020() - { - } - [Test] - public void Test_3021() - { - } - [Test] - public void Test_3022() - { - } - [Test] - public void Test_3023() - { - } - [Test] - public void Test_3024() - { - } - [Test] - public void Test_3025() - { - } - [Test] - public void Test_3026() - { - } - [Test] - public void Test_3027() - { - } - [Test] - public void Test_3028() - { - } - [Test] - public void Test_3029() - { - } - [Test] - public void Test_3030() - { - } - [Test] - public void Test_3031() - { - } - [Test] - public void Test_3032() - { - } - [Test] - public void Test_3033() - { - } - [Test] - public void Test_3034() - { - } - [Test] - public void Test_3035() - { - } - [Test] - public void Test_3036() - { - } - [Test] - public void Test_3037() - { - } - [Test] - public void Test_3038() - { - } - [Test] - public void Test_3039() - { - } - [Test] - public void Test_3040() - { - } - [Test] - public void Test_3041() - { - } - [Test] - public void Test_3042() - { - } - [Test] - public void Test_3043() - { - } - [Test] - public void Test_3044() - { - } - [Test] - public void Test_3045() - { - } - [Test] - public void Test_3046() - { - } - [Test] - public void Test_3047() - { - } - [Test] - public void Test_3048() - { - } - [Test] - public void Test_3049() - { - } - [Test] - public void Test_3050() - { - } - [Test] - public void Test_3051() - { - } - [Test] - public void Test_3052() - { - } - [Test] - public void Test_3053() - { - } - [Test] - public void Test_3054() - { - } - [Test] - public void Test_3055() - { - } - [Test] - public void Test_3056() - { - } - [Test] - public void Test_3057() - { - } - [Test] - public void Test_3058() - { - } - [Test] - public void Test_3059() - { - } - [Test] - public void Test_3060() - { - } - [Test] - public void Test_3061() - { - } - [Test] - public void Test_3062() - { - } - [Test] - public void Test_3063() - { - } - [Test] - public void Test_3064() - { - } - [Test] - public void Test_3065() - { - } - [Test] - public void Test_3066() - { - } - [Test] - public void Test_3067() - { - } - [Test] - public void Test_3068() - { - } - [Test] - public void Test_3069() - { - } - [Test] - public void Test_3070() - { - } - [Test] - public void Test_3071() - { - } - [Test] - public void Test_3072() - { - } - [Test] - public void Test_3073() - { - } - [Test] - public void Test_3074() - { - } - [Test] - public void Test_3075() - { - } - [Test] - public void Test_3076() - { - } - [Test] - public void Test_3077() - { - } - [Test] - public void Test_3078() - { - } - [Test] - public void Test_3079() - { - } - [Test] - public void Test_3080() - { - } - [Test] - public void Test_3081() - { - } - [Test] - public void Test_3082() - { - } - [Test] - public void Test_3083() - { - } - [Test] - public void Test_3084() - { - } - [Test] - public void Test_3085() - { - } - [Test] - public void Test_3086() - { - } - [Test] - public void Test_3087() - { - } - [Test] - public void Test_3088() - { - } - [Test] - public void Test_3089() - { - } - [Test] - public void Test_3090() - { - } - [Test] - public void Test_3091() - { - } - [Test] - public void Test_3092() - { - } - [Test] - public void Test_3093() - { - } - [Test] - public void Test_3094() - { - } - [Test] - public void Test_3095() - { - } - [Test] - public void Test_3096() - { - } - [Test] - public void Test_3097() - { - } - [Test] - public void Test_3098() - { - } - [Test] - public void Test_3099() - { - } - [Test] - public void Test_3100() - { - } - [Test] - public void Test_3101() - { - } - [Test] - public void Test_3102() - { - } - [Test] - public void Test_3103() - { - } - [Test] - public void Test_3104() - { - } - [Test] - public void Test_3105() - { - } - [Test] - public void Test_3106() - { - } - [Test] - public void Test_3107() - { - } - [Test] - public void Test_3108() - { - } - [Test] - public void Test_3109() - { - } - [Test] - public void Test_3110() - { - } - [Test] - public void Test_3111() - { - } - [Test] - public void Test_3112() - { - } - [Test] - public void Test_3113() - { - } - [Test] - public void Test_3114() - { - } - [Test] - public void Test_3115() - { - } - [Test] - public void Test_3116() - { - } - [Test] - public void Test_3117() - { - } - [Test] - public void Test_3118() - { - } - [Test] - public void Test_3119() - { - } - [Test] - public void Test_3120() - { - } - [Test] - public void Test_3121() - { - } - [Test] - public void Test_3122() - { - } - [Test] - public void Test_3123() - { - } - [Test] - public void Test_3124() - { - } - [Test] - public void Test_3125() - { - } - [Test] - public void Test_3126() - { - } - [Test] - public void Test_3127() - { - } - [Test] - public void Test_3128() - { - } - [Test] - public void Test_3129() - { - } - [Test] - public void Test_3130() - { - } - [Test] - public void Test_3131() - { - } - [Test] - public void Test_3132() - { - } - [Test] - public void Test_3133() - { - } - [Test] - public void Test_3134() - { - } - [Test] - public void Test_3135() - { - } - [Test] - public void Test_3136() - { - } - [Test] - public void Test_3137() - { - } - [Test] - public void Test_3138() - { - } - [Test] - public void Test_3139() - { - } - [Test] - public void Test_3140() - { - } - [Test] - public void Test_3141() - { - } - [Test] - public void Test_3142() - { - } - [Test] - public void Test_3143() - { - } - [Test] - public void Test_3144() - { - } - [Test] - public void Test_3145() - { - } - [Test] - public void Test_3146() - { - } - [Test] - public void Test_3147() - { - } - [Test] - public void Test_3148() - { - } - [Test] - public void Test_3149() - { - } - [Test] - public void Test_3150() - { - } - [Test] - public void Test_3151() - { - } - [Test] - public void Test_3152() - { - } - [Test] - public void Test_3153() - { - } - [Test] - public void Test_3154() - { - } - [Test] - public void Test_3155() - { - } - [Test] - public void Test_3156() - { - } - [Test] - public void Test_3157() - { - } - [Test] - public void Test_3158() - { - } - [Test] - public void Test_3159() - { - } - [Test] - public void Test_3160() - { - } - [Test] - public void Test_3161() - { - } - [Test] - public void Test_3162() - { - } - [Test] - public void Test_3163() - { - } - [Test] - public void Test_3164() - { - } - [Test] - public void Test_3165() - { - } - [Test] - public void Test_3166() - { - } - [Test] - public void Test_3167() - { - } - [Test] - public void Test_3168() - { - } - [Test] - public void Test_3169() - { - } - [Test] - public void Test_3170() - { - } - [Test] - public void Test_3171() - { - } - [Test] - public void Test_3172() - { - } - [Test] - public void Test_3173() - { - } - [Test] - public void Test_3174() - { - } - [Test] - public void Test_3175() - { - } - [Test] - public void Test_3176() - { - } - [Test] - public void Test_3177() - { - } - [Test] - public void Test_3178() - { - } - [Test] - public void Test_3179() - { - } - [Test] - public void Test_3180() - { - } - [Test] - public void Test_3181() - { - } - [Test] - public void Test_3182() - { - } - [Test] - public void Test_3183() - { - } - [Test] - public void Test_3184() - { - } - [Test] - public void Test_3185() - { - } - [Test] - public void Test_3186() - { - } - [Test] - public void Test_3187() - { - } - [Test] - public void Test_3188() - { - } - [Test] - public void Test_3189() - { - } - [Test] - public void Test_3190() - { - } - [Test] - public void Test_3191() - { - } - [Test] - public void Test_3192() - { - } - [Test] - public void Test_3193() - { - } - [Test] - public void Test_3194() - { - } - [Test] - public void Test_3195() - { - } - [Test] - public void Test_3196() - { - } - [Test] - public void Test_3197() - { - } - [Test] - public void Test_3198() - { - } - [Test] - public void Test_3199() - { - } - [Test] - public void Test_3200() - { - } - [Test] - public void Test_3201() - { - } - [Test] - public void Test_3202() - { - } - [Test] - public void Test_3203() - { - } - [Test] - public void Test_3204() - { - } - [Test] - public void Test_3205() - { - } - [Test] - public void Test_3206() - { - } - [Test] - public void Test_3207() - { - } - [Test] - public void Test_3208() - { - } - [Test] - public void Test_3209() - { - } - [Test] - public void Test_3210() - { - } - [Test] - public void Test_3211() - { - } - [Test] - public void Test_3212() - { - } - [Test] - public void Test_3213() - { - } - [Test] - public void Test_3214() - { - } - [Test] - public void Test_3215() - { - } - [Test] - public void Test_3216() - { - } - [Test] - public void Test_3217() - { - } - [Test] - public void Test_3218() - { - } - [Test] - public void Test_3219() - { - } - [Test] - public void Test_3220() - { - } - [Test] - public void Test_3221() - { - } - [Test] - public void Test_3222() - { - } - [Test] - public void Test_3223() - { - } - [Test] - public void Test_3224() - { - } - [Test] - public void Test_3225() - { - } - [Test] - public void Test_3226() - { - } - [Test] - public void Test_3227() - { - } - [Test] - public void Test_3228() - { - } - [Test] - public void Test_3229() - { - } - [Test] - public void Test_3230() - { - } - [Test] - public void Test_3231() - { - } - [Test] - public void Test_3232() - { - } - [Test] - public void Test_3233() - { - } - [Test] - public void Test_3234() - { - } - [Test] - public void Test_3235() - { - } - [Test] - public void Test_3236() - { - } - [Test] - public void Test_3237() - { - } - [Test] - public void Test_3238() - { - } - [Test] - public void Test_3239() - { - } - [Test] - public void Test_3240() - { - } - [Test] - public void Test_3241() - { - } - [Test] - public void Test_3242() - { - } - [Test] - public void Test_3243() - { - } - [Test] - public void Test_3244() - { - } - [Test] - public void Test_3245() - { - } - [Test] - public void Test_3246() - { - } - [Test] - public void Test_3247() - { - } - [Test] - public void Test_3248() - { - } - [Test] - public void Test_3249() - { - } - [Test] - public void Test_3250() - { - } - [Test] - public void Test_3251() - { - } - [Test] - public void Test_3252() - { - } - [Test] - public void Test_3253() - { - } - [Test] - public void Test_3254() - { - } - [Test] - public void Test_3255() - { - } - [Test] - public void Test_3256() - { - } - [Test] - public void Test_3257() - { - } - [Test] - public void Test_3258() - { - } - [Test] - public void Test_3259() - { - } - [Test] - public void Test_3260() - { - } - [Test] - public void Test_3261() - { - } - [Test] - public void Test_3262() - { - } - [Test] - public void Test_3263() - { - } - [Test] - public void Test_3264() - { - } - [Test] - public void Test_3265() - { - } - [Test] - public void Test_3266() - { - } - [Test] - public void Test_3267() - { - } - [Test] - public void Test_3268() - { - } - [Test] - public void Test_3269() - { - } - [Test] - public void Test_3270() - { - } - [Test] - public void Test_3271() - { - } - [Test] - public void Test_3272() - { - } - [Test] - public void Test_3273() - { - } - [Test] - public void Test_3274() - { - } - [Test] - public void Test_3275() - { - } - [Test] - public void Test_3276() - { - } - [Test] - public void Test_3277() - { - } - [Test] - public void Test_3278() - { - } - [Test] - public void Test_3279() - { - } - [Test] - public void Test_3280() - { - } - [Test] - public void Test_3281() - { - } - [Test] - public void Test_3282() - { - } - [Test] - public void Test_3283() - { - } - [Test] - public void Test_3284() - { - } - [Test] - public void Test_3285() - { - } - [Test] - public void Test_3286() - { - } - [Test] - public void Test_3287() - { - } - [Test] - public void Test_3288() - { - } - [Test] - public void Test_3289() - { - } - [Test] - public void Test_3290() - { - } - [Test] - public void Test_3291() - { - } - [Test] - public void Test_3292() - { - } - [Test] - public void Test_3293() - { - } - [Test] - public void Test_3294() - { - } - [Test] - public void Test_3295() - { - } - [Test] - public void Test_3296() - { - } - [Test] - public void Test_3297() - { - } - [Test] - public void Test_3298() - { - } - [Test] - public void Test_3299() - { - } - [Test] - public void Test_3300() - { - } - [Test] - public void Test_3301() - { - } - [Test] - public void Test_3302() - { - } - [Test] - public void Test_3303() - { - } - [Test] - public void Test_3304() - { - } - [Test] - public void Test_3305() - { - } - [Test] - public void Test_3306() - { - } - [Test] - public void Test_3307() - { - } - [Test] - public void Test_3308() - { - } - [Test] - public void Test_3309() - { - } - [Test] - public void Test_3310() - { - } - [Test] - public void Test_3311() - { - } - [Test] - public void Test_3312() - { - } - [Test] - public void Test_3313() - { - } - [Test] - public void Test_3314() - { - } - [Test] - public void Test_3315() - { - } - [Test] - public void Test_3316() - { - } - [Test] - public void Test_3317() - { - } - [Test] - public void Test_3318() - { - } - [Test] - public void Test_3319() - { - } - [Test] - public void Test_3320() - { - } - [Test] - public void Test_3321() - { - } - [Test] - public void Test_3322() - { - } - [Test] - public void Test_3323() - { - } - [Test] - public void Test_3324() - { - } - [Test] - public void Test_3325() - { - } - [Test] - public void Test_3326() - { - } - [Test] - public void Test_3327() - { - } - [Test] - public void Test_3328() - { - } - [Test] - public void Test_3329() - { - } - [Test] - public void Test_3330() - { - } - [Test] - public void Test_3331() - { - } - [Test] - public void Test_3332() - { - } - [Test] - public void Test_3333() - { - } - [Test] - public void Test_3334() - { - } - [Test] - public void Test_3335() - { - } - [Test] - public void Test_3336() - { - } - [Test] - public void Test_3337() - { - } - [Test] - public void Test_3338() - { - } - [Test] - public void Test_3339() - { - } - [Test] - public void Test_3340() - { - } - [Test] - public void Test_3341() - { - } - [Test] - public void Test_3342() - { - } - [Test] - public void Test_3343() - { - } - [Test] - public void Test_3344() - { - } - [Test] - public void Test_3345() - { - } - [Test] - public void Test_3346() - { - } - [Test] - public void Test_3347() - { - } - [Test] - public void Test_3348() - { - } - [Test] - public void Test_3349() - { - } - [Test] - public void Test_3350() - { - } - [Test] - public void Test_3351() - { - } - [Test] - public void Test_3352() - { - } - [Test] - public void Test_3353() - { - } - [Test] - public void Test_3354() - { - } - [Test] - public void Test_3355() - { - } - [Test] - public void Test_3356() - { - } - [Test] - public void Test_3357() - { - } - [Test] - public void Test_3358() - { - } - [Test] - public void Test_3359() - { - } - [Test] - public void Test_3360() - { - } - [Test] - public void Test_3361() - { - } - [Test] - public void Test_3362() - { - } - [Test] - public void Test_3363() - { - } - [Test] - public void Test_3364() - { - } - [Test] - public void Test_3365() - { - } - [Test] - public void Test_3366() - { - } - [Test] - public void Test_3367() - { - } - [Test] - public void Test_3368() - { - } - [Test] - public void Test_3369() - { - } - [Test] - public void Test_3370() - { - } - [Test] - public void Test_3371() - { - } - [Test] - public void Test_3372() - { - } - [Test] - public void Test_3373() - { - } - [Test] - public void Test_3374() - { - } - [Test] - public void Test_3375() - { - } - [Test] - public void Test_3376() - { - } - [Test] - public void Test_3377() - { - } - [Test] - public void Test_3378() - { - } - [Test] - public void Test_3379() - { - } - [Test] - public void Test_3380() - { - } - [Test] - public void Test_3381() - { - } - [Test] - public void Test_3382() - { - } - [Test] - public void Test_3383() - { - } - [Test] - public void Test_3384() - { - } - [Test] - public void Test_3385() - { - } - [Test] - public void Test_3386() - { - } - [Test] - public void Test_3387() - { - } - [Test] - public void Test_3388() - { - } - [Test] - public void Test_3389() - { - } - [Test] - public void Test_3390() - { - } - [Test] - public void Test_3391() - { - } - [Test] - public void Test_3392() - { - } - [Test] - public void Test_3393() - { - } - [Test] - public void Test_3394() - { - } - [Test] - public void Test_3395() - { - } - [Test] - public void Test_3396() - { - } - [Test] - public void Test_3397() - { - } - [Test] - public void Test_3398() - { - } - [Test] - public void Test_3399() - { - } - [Test] - public void Test_3400() - { - } - [Test] - public void Test_3401() - { - } - [Test] - public void Test_3402() - { - } - [Test] - public void Test_3403() - { - } - [Test] - public void Test_3404() - { - } - [Test] - public void Test_3405() - { - } - [Test] - public void Test_3406() - { - } - [Test] - public void Test_3407() - { - } - [Test] - public void Test_3408() - { - } - [Test] - public void Test_3409() - { - } - [Test] - public void Test_3410() - { - } - [Test] - public void Test_3411() - { - } - [Test] - public void Test_3412() - { - } - [Test] - public void Test_3413() - { - } - [Test] - public void Test_3414() - { - } - [Test] - public void Test_3415() - { - } - [Test] - public void Test_3416() - { - } - [Test] - public void Test_3417() - { - } - [Test] - public void Test_3418() - { - } - [Test] - public void Test_3419() - { - } - [Test] - public void Test_3420() - { - } - [Test] - public void Test_3421() - { - } - [Test] - public void Test_3422() - { - } - [Test] - public void Test_3423() - { - } - [Test] - public void Test_3424() - { - } - [Test] - public void Test_3425() - { - } - [Test] - public void Test_3426() - { - } - [Test] - public void Test_3427() - { - } - [Test] - public void Test_3428() - { - } - [Test] - public void Test_3429() - { - } - [Test] - public void Test_3430() - { - } - [Test] - public void Test_3431() - { - } - [Test] - public void Test_3432() - { - } - [Test] - public void Test_3433() - { - } - [Test] - public void Test_3434() - { - } - [Test] - public void Test_3435() - { - } - [Test] - public void Test_3436() - { - } - [Test] - public void Test_3437() - { - } - [Test] - public void Test_3438() - { - } - [Test] - public void Test_3439() - { - } - [Test] - public void Test_3440() - { - } - [Test] - public void Test_3441() - { - } - [Test] - public void Test_3442() - { - } - [Test] - public void Test_3443() - { - } - [Test] - public void Test_3444() - { - } - [Test] - public void Test_3445() - { - } - [Test] - public void Test_3446() - { - } - [Test] - public void Test_3447() - { - } - [Test] - public void Test_3448() - { - } - [Test] - public void Test_3449() - { - } - [Test] - public void Test_3450() - { - } - [Test] - public void Test_3451() - { - } - [Test] - public void Test_3452() - { - } - [Test] - public void Test_3453() - { - } - [Test] - public void Test_3454() - { - } - [Test] - public void Test_3455() - { - } - [Test] - public void Test_3456() - { - } - [Test] - public void Test_3457() - { - } - [Test] - public void Test_3458() - { - } - [Test] - public void Test_3459() - { - } - [Test] - public void Test_3460() - { - } - [Test] - public void Test_3461() - { - } - [Test] - public void Test_3462() - { - } - [Test] - public void Test_3463() - { - } - [Test] - public void Test_3464() - { - } - [Test] - public void Test_3465() - { - } - [Test] - public void Test_3466() - { - } - [Test] - public void Test_3467() - { - } - [Test] - public void Test_3468() - { - } - [Test] - public void Test_3469() - { - } - [Test] - public void Test_3470() - { - } - [Test] - public void Test_3471() - { - } - [Test] - public void Test_3472() - { - } - [Test] - public void Test_3473() - { - } - [Test] - public void Test_3474() - { - } - [Test] - public void Test_3475() - { - } - [Test] - public void Test_3476() - { - } - [Test] - public void Test_3477() - { - } - [Test] - public void Test_3478() - { - } - [Test] - public void Test_3479() - { - } - [Test] - public void Test_3480() - { - } - [Test] - public void Test_3481() - { - } - [Test] - public void Test_3482() - { - } - [Test] - public void Test_3483() - { - } - [Test] - public void Test_3484() - { - } - [Test] - public void Test_3485() - { - } - [Test] - public void Test_3486() - { - } - [Test] - public void Test_3487() - { - } - [Test] - public void Test_3488() - { - } - [Test] - public void Test_3489() - { - } - [Test] - public void Test_3490() - { - } - [Test] - public void Test_3491() - { - } - [Test] - public void Test_3492() - { - } - [Test] - public void Test_3493() - { - } - [Test] - public void Test_3494() - { - } - [Test] - public void Test_3495() - { - } - [Test] - public void Test_3496() - { - } - [Test] - public void Test_3497() - { - } - [Test] - public void Test_3498() - { - } - [Test] - public void Test_3499() - { - } - [Test] - public void Test_3500() - { - } - [Test] - public void Test_3501() - { - } - [Test] - public void Test_3502() - { - } - [Test] - public void Test_3503() - { - } - [Test] - public void Test_3504() - { - } - [Test] - public void Test_3505() - { - } - [Test] - public void Test_3506() - { - } - [Test] - public void Test_3507() - { - } - [Test] - public void Test_3508() - { - } - [Test] - public void Test_3509() - { - } - [Test] - public void Test_3510() - { - } - [Test] - public void Test_3511() - { - } - [Test] - public void Test_3512() - { - } - [Test] - public void Test_3513() - { - } - [Test] - public void Test_3514() - { - } - [Test] - public void Test_3515() - { - } - [Test] - public void Test_3516() - { - } - [Test] - public void Test_3517() - { - } - [Test] - public void Test_3518() - { - } - [Test] - public void Test_3519() - { - } - [Test] - public void Test_3520() - { - } - [Test] - public void Test_3521() - { - } - [Test] - public void Test_3522() - { - } - [Test] - public void Test_3523() - { - } - [Test] - public void Test_3524() - { - } - [Test] - public void Test_3525() - { - } - [Test] - public void Test_3526() - { - } - [Test] - public void Test_3527() - { - } - [Test] - public void Test_3528() - { - } - [Test] - public void Test_3529() - { - } - [Test] - public void Test_3530() - { - } - [Test] - public void Test_3531() - { - } - [Test] - public void Test_3532() - { - } - [Test] - public void Test_3533() - { - } - [Test] - public void Test_3534() - { - } - [Test] - public void Test_3535() - { - } - [Test] - public void Test_3536() - { - } - [Test] - public void Test_3537() - { - } - [Test] - public void Test_3538() - { - } - [Test] - public void Test_3539() - { - } - [Test] - public void Test_3540() - { - } - [Test] - public void Test_3541() - { - } - [Test] - public void Test_3542() - { - } - [Test] - public void Test_3543() - { - } - [Test] - public void Test_3544() - { - } - [Test] - public void Test_3545() - { - } - [Test] - public void Test_3546() - { - } - [Test] - public void Test_3547() - { - } - [Test] - public void Test_3548() - { - } - [Test] - public void Test_3549() - { - } - [Test] - public void Test_3550() - { - } - [Test] - public void Test_3551() - { - } - [Test] - public void Test_3552() - { - } - [Test] - public void Test_3553() - { - } - [Test] - public void Test_3554() - { - } - [Test] - public void Test_3555() - { - } - [Test] - public void Test_3556() - { - } - [Test] - public void Test_3557() - { - } - [Test] - public void Test_3558() - { - } - [Test] - public void Test_3559() - { - } - [Test] - public void Test_3560() - { - } - [Test] - public void Test_3561() - { - } - [Test] - public void Test_3562() - { - } - [Test] - public void Test_3563() - { - } - [Test] - public void Test_3564() - { - } - [Test] - public void Test_3565() - { - } - [Test] - public void Test_3566() - { - } - [Test] - public void Test_3567() - { - } - [Test] - public void Test_3568() - { - } - [Test] - public void Test_3569() - { - } - [Test] - public void Test_3570() - { - } - [Test] - public void Test_3571() - { - } - [Test] - public void Test_3572() - { - } - [Test] - public void Test_3573() - { - } - [Test] - public void Test_3574() - { - } - [Test] - public void Test_3575() - { - } - [Test] - public void Test_3576() - { - } - [Test] - public void Test_3577() - { - } - [Test] - public void Test_3578() - { - } - [Test] - public void Test_3579() - { - } - [Test] - public void Test_3580() - { - } - [Test] - public void Test_3581() - { - } - [Test] - public void Test_3582() - { - } - [Test] - public void Test_3583() - { - } - [Test] - public void Test_3584() - { - } - [Test] - public void Test_3585() - { - } - [Test] - public void Test_3586() - { - } - [Test] - public void Test_3587() - { - } - [Test] - public void Test_3588() - { - } - [Test] - public void Test_3589() - { - } - [Test] - public void Test_3590() - { - } - [Test] - public void Test_3591() - { - } - [Test] - public void Test_3592() - { - } - [Test] - public void Test_3593() - { - } - [Test] - public void Test_3594() - { - } - [Test] - public void Test_3595() - { - } - [Test] - public void Test_3596() - { - } - [Test] - public void Test_3597() - { - } - [Test] - public void Test_3598() - { - } - [Test] - public void Test_3599() - { - } - [Test] - public void Test_3600() - { - } - [Test] - public void Test_3601() - { - } - [Test] - public void Test_3602() - { - } - [Test] - public void Test_3603() - { - } - [Test] - public void Test_3604() - { - } - [Test] - public void Test_3605() - { - } - [Test] - public void Test_3606() - { - } - [Test] - public void Test_3607() - { - } - [Test] - public void Test_3608() - { - } - [Test] - public void Test_3609() - { - } - [Test] - public void Test_3610() - { - } - [Test] - public void Test_3611() - { - } - [Test] - public void Test_3612() - { - } - [Test] - public void Test_3613() - { - } - [Test] - public void Test_3614() - { - } - [Test] - public void Test_3615() - { - } - [Test] - public void Test_3616() - { - } - [Test] - public void Test_3617() - { - } - [Test] - public void Test_3618() - { - } - [Test] - public void Test_3619() - { - } - [Test] - public void Test_3620() - { - } - [Test] - public void Test_3621() - { - } - [Test] - public void Test_3622() - { - } - [Test] - public void Test_3623() - { - } - [Test] - public void Test_3624() - { - } - [Test] - public void Test_3625() - { - } - [Test] - public void Test_3626() - { - } - [Test] - public void Test_3627() - { - } - [Test] - public void Test_3628() - { - } - [Test] - public void Test_3629() - { - } - [Test] - public void Test_3630() - { - } - [Test] - public void Test_3631() - { - } - [Test] - public void Test_3632() - { - } - [Test] - public void Test_3633() - { - } - [Test] - public void Test_3634() - { - } - [Test] - public void Test_3635() - { - } - [Test] - public void Test_3636() - { - } - [Test] - public void Test_3637() - { - } - [Test] - public void Test_3638() - { - } - [Test] - public void Test_3639() - { - } - [Test] - public void Test_3640() - { - } - [Test] - public void Test_3641() - { - } - [Test] - public void Test_3642() - { - } - [Test] - public void Test_3643() - { - } - [Test] - public void Test_3644() - { - } - [Test] - public void Test_3645() - { - } - [Test] - public void Test_3646() - { - } - [Test] - public void Test_3647() - { - } - [Test] - public void Test_3648() - { - } - [Test] - public void Test_3649() - { - } - [Test] - public void Test_3650() - { - } - [Test] - public void Test_3651() - { - } - [Test] - public void Test_3652() - { - } - [Test] - public void Test_3653() - { - } - [Test] - public void Test_3654() - { - } - [Test] - public void Test_3655() - { - } - [Test] - public void Test_3656() - { - } - [Test] - public void Test_3657() - { - } - [Test] - public void Test_3658() - { - } - [Test] - public void Test_3659() - { - } - [Test] - public void Test_3660() - { - } - [Test] - public void Test_3661() - { - } - [Test] - public void Test_3662() - { - } - [Test] - public void Test_3663() - { - } - [Test] - public void Test_3664() - { - } - [Test] - public void Test_3665() - { - } - [Test] - public void Test_3666() - { - } - [Test] - public void Test_3667() - { - } - [Test] - public void Test_3668() - { - } - [Test] - public void Test_3669() - { - } - [Test] - public void Test_3670() - { - } - [Test] - public void Test_3671() - { - } - [Test] - public void Test_3672() - { - } - [Test] - public void Test_3673() - { - } - [Test] - public void Test_3674() - { - } - [Test] - public void Test_3675() - { - } - [Test] - public void Test_3676() - { - } - [Test] - public void Test_3677() - { - } - [Test] - public void Test_3678() - { - } - [Test] - public void Test_3679() - { - } - [Test] - public void Test_3680() - { - } - [Test] - public void Test_3681() - { - } - [Test] - public void Test_3682() - { - } - [Test] - public void Test_3683() - { - } - [Test] - public void Test_3684() - { - } - [Test] - public void Test_3685() - { - } - [Test] - public void Test_3686() - { - } - [Test] - public void Test_3687() - { - } - [Test] - public void Test_3688() - { - } - [Test] - public void Test_3689() - { - } - [Test] - public void Test_3690() - { - } - [Test] - public void Test_3691() - { - } - [Test] - public void Test_3692() - { - } - [Test] - public void Test_3693() - { - } - [Test] - public void Test_3694() - { - } - [Test] - public void Test_3695() - { - } - [Test] - public void Test_3696() - { - } - [Test] - public void Test_3697() - { - } - [Test] - public void Test_3698() - { - } - [Test] - public void Test_3699() - { - } - [Test] - public void Test_3700() - { - } - [Test] - public void Test_3701() - { - } - [Test] - public void Test_3702() - { - } - [Test] - public void Test_3703() - { - } - [Test] - public void Test_3704() - { - } - [Test] - public void Test_3705() - { - } - [Test] - public void Test_3706() - { - } - [Test] - public void Test_3707() - { - } - [Test] - public void Test_3708() - { - } - [Test] - public void Test_3709() - { - } - [Test] - public void Test_3710() - { - } - [Test] - public void Test_3711() - { - } - [Test] - public void Test_3712() - { - } - [Test] - public void Test_3713() - { - } - [Test] - public void Test_3714() - { - } - [Test] - public void Test_3715() - { - } - [Test] - public void Test_3716() - { - } - [Test] - public void Test_3717() - { - } - [Test] - public void Test_3718() - { - } - [Test] - public void Test_3719() - { - } - [Test] - public void Test_3720() - { - } - [Test] - public void Test_3721() - { - } - [Test] - public void Test_3722() - { - } - [Test] - public void Test_3723() - { - } - [Test] - public void Test_3724() - { - } - [Test] - public void Test_3725() - { - } - [Test] - public void Test_3726() - { - } - [Test] - public void Test_3727() - { - } - [Test] - public void Test_3728() - { - } - [Test] - public void Test_3729() - { - } - [Test] - public void Test_3730() - { - } - [Test] - public void Test_3731() - { - } - [Test] - public void Test_3732() - { - } - [Test] - public void Test_3733() - { - } - [Test] - public void Test_3734() - { - } - [Test] - public void Test_3735() - { - } - [Test] - public void Test_3736() - { - } - [Test] - public void Test_3737() - { - } - [Test] - public void Test_3738() - { - } - [Test] - public void Test_3739() - { - } - [Test] - public void Test_3740() - { - } - [Test] - public void Test_3741() - { - } - [Test] - public void Test_3742() - { - } - [Test] - public void Test_3743() - { - } - [Test] - public void Test_3744() - { - } - [Test] - public void Test_3745() - { - } - [Test] - public void Test_3746() - { - } - [Test] - public void Test_3747() - { - } - [Test] - public void Test_3748() - { - } - [Test] - public void Test_3749() - { - } - [Test] - public void Test_3750() - { - } - [Test] - public void Test_3751() - { - } - [Test] - public void Test_3752() - { - } - [Test] - public void Test_3753() - { - } - [Test] - public void Test_3754() - { - } - [Test] - public void Test_3755() - { - } - [Test] - public void Test_3756() - { - } - [Test] - public void Test_3757() - { - } - [Test] - public void Test_3758() - { - } - [Test] - public void Test_3759() - { - } - [Test] - public void Test_3760() - { - } - [Test] - public void Test_3761() - { - } - [Test] - public void Test_3762() - { - } - [Test] - public void Test_3763() - { - } - [Test] - public void Test_3764() - { - } - [Test] - public void Test_3765() - { - } - [Test] - public void Test_3766() - { - } - [Test] - public void Test_3767() - { - } - [Test] - public void Test_3768() - { - } - [Test] - public void Test_3769() - { - } - [Test] - public void Test_3770() - { - } - [Test] - public void Test_3771() - { - } - [Test] - public void Test_3772() - { - } - [Test] - public void Test_3773() - { - } - [Test] - public void Test_3774() - { - } - [Test] - public void Test_3775() - { - } - [Test] - public void Test_3776() - { - } - [Test] - public void Test_3777() - { - } - [Test] - public void Test_3778() - { - } - [Test] - public void Test_3779() - { - } - [Test] - public void Test_3780() - { - } - [Test] - public void Test_3781() - { - } - [Test] - public void Test_3782() - { - } - [Test] - public void Test_3783() - { - } - [Test] - public void Test_3784() - { - } - [Test] - public void Test_3785() - { - } - [Test] - public void Test_3786() - { - } - [Test] - public void Test_3787() - { - } - [Test] - public void Test_3788() - { - } - [Test] - public void Test_3789() - { - } - [Test] - public void Test_3790() - { - } - [Test] - public void Test_3791() - { - } - [Test] - public void Test_3792() - { - } - [Test] - public void Test_3793() - { - } - [Test] - public void Test_3794() - { - } - [Test] - public void Test_3795() - { - } - [Test] - public void Test_3796() - { - } - [Test] - public void Test_3797() - { - } - [Test] - public void Test_3798() - { - } - [Test] - public void Test_3799() - { - } - [Test] - public void Test_3800() - { - } - [Test] - public void Test_3801() - { - } - [Test] - public void Test_3802() - { - } - [Test] - public void Test_3803() - { - } - [Test] - public void Test_3804() - { - } - [Test] - public void Test_3805() - { - } - [Test] - public void Test_3806() - { - } - [Test] - public void Test_3807() - { - } - [Test] - public void Test_3808() - { - } - [Test] - public void Test_3809() - { - } - [Test] - public void Test_3810() - { - } - [Test] - public void Test_3811() - { - } - [Test] - public void Test_3812() - { - } - [Test] - public void Test_3813() - { - } - [Test] - public void Test_3814() - { - } - [Test] - public void Test_3815() - { - } - [Test] - public void Test_3816() - { - } - [Test] - public void Test_3817() - { - } - [Test] - public void Test_3818() - { - } - [Test] - public void Test_3819() - { - } - [Test] - public void Test_3820() - { - } - [Test] - public void Test_3821() - { - } - [Test] - public void Test_3822() - { - } - [Test] - public void Test_3823() - { - } - [Test] - public void Test_3824() - { - } - [Test] - public void Test_3825() - { - } - [Test] - public void Test_3826() - { - } - [Test] - public void Test_3827() - { - } - [Test] - public void Test_3828() - { - } - [Test] - public void Test_3829() - { - } - [Test] - public void Test_3830() - { - } - [Test] - public void Test_3831() - { - } - [Test] - public void Test_3832() - { - } - [Test] - public void Test_3833() - { - } - [Test] - public void Test_3834() - { - } - [Test] - public void Test_3835() - { - } - [Test] - public void Test_3836() - { - } - [Test] - public void Test_3837() - { - } - [Test] - public void Test_3838() - { - } - [Test] - public void Test_3839() - { - } - [Test] - public void Test_3840() - { - } - [Test] - public void Test_3841() - { - } - [Test] - public void Test_3842() - { - } - [Test] - public void Test_3843() - { - } - [Test] - public void Test_3844() - { - } - [Test] - public void Test_3845() - { - } - [Test] - public void Test_3846() - { - } - [Test] - public void Test_3847() - { - } - [Test] - public void Test_3848() - { - } - [Test] - public void Test_3849() - { - } - [Test] - public void Test_3850() - { - } - [Test] - public void Test_3851() - { - } - [Test] - public void Test_3852() - { - } - [Test] - public void Test_3853() - { - } - [Test] - public void Test_3854() - { - } - [Test] - public void Test_3855() - { - } - [Test] - public void Test_3856() - { - } - [Test] - public void Test_3857() - { - } - [Test] - public void Test_3858() - { - } - [Test] - public void Test_3859() - { - } - [Test] - public void Test_3860() - { - } - [Test] - public void Test_3861() - { - } - [Test] - public void Test_3862() - { - } - [Test] - public void Test_3863() - { - } - [Test] - public void Test_3864() - { - } - [Test] - public void Test_3865() - { - } - [Test] - public void Test_3866() - { - } - [Test] - public void Test_3867() - { - } - [Test] - public void Test_3868() - { - } - [Test] - public void Test_3869() - { - } - [Test] - public void Test_3870() - { - } - [Test] - public void Test_3871() - { - } - [Test] - public void Test_3872() - { - } - [Test] - public void Test_3873() - { - } - [Test] - public void Test_3874() - { - } - [Test] - public void Test_3875() - { - } - [Test] - public void Test_3876() - { - } - [Test] - public void Test_3877() - { - } - [Test] - public void Test_3878() - { - } - [Test] - public void Test_3879() - { - } - [Test] - public void Test_3880() - { - } - [Test] - public void Test_3881() - { - } - [Test] - public void Test_3882() - { - } - [Test] - public void Test_3883() - { - } - [Test] - public void Test_3884() - { - } - [Test] - public void Test_3885() - { - } - [Test] - public void Test_3886() - { - } - [Test] - public void Test_3887() - { - } - [Test] - public void Test_3888() - { - } - [Test] - public void Test_3889() - { - } - [Test] - public void Test_3890() - { - } - [Test] - public void Test_3891() - { - } - [Test] - public void Test_3892() - { - } - [Test] - public void Test_3893() - { - } - [Test] - public void Test_3894() - { - } - [Test] - public void Test_3895() - { - } - [Test] - public void Test_3896() - { - } - [Test] - public void Test_3897() - { - } - [Test] - public void Test_3898() - { - } - [Test] - public void Test_3899() - { - } - [Test] - public void Test_3900() - { - } - [Test] - public void Test_3901() - { - } - [Test] - public void Test_3902() - { - } - [Test] - public void Test_3903() - { - } - [Test] - public void Test_3904() - { - } - [Test] - public void Test_3905() - { - } - [Test] - public void Test_3906() - { - } - [Test] - public void Test_3907() - { - } - [Test] - public void Test_3908() - { - } - [Test] - public void Test_3909() - { - } - [Test] - public void Test_3910() - { - } - [Test] - public void Test_3911() - { - } - [Test] - public void Test_3912() - { - } - [Test] - public void Test_3913() - { - } - [Test] - public void Test_3914() - { - } - [Test] - public void Test_3915() - { - } - [Test] - public void Test_3916() - { - } - [Test] - public void Test_3917() - { - } - [Test] - public void Test_3918() - { - } - [Test] - public void Test_3919() - { - } - [Test] - public void Test_3920() - { - } - [Test] - public void Test_3921() - { - } - [Test] - public void Test_3922() - { - } - [Test] - public void Test_3923() - { - } - [Test] - public void Test_3924() - { - } - [Test] - public void Test_3925() - { - } - [Test] - public void Test_3926() - { - } - [Test] - public void Test_3927() - { - } - [Test] - public void Test_3928() - { - } - [Test] - public void Test_3929() - { - } - [Test] - public void Test_3930() - { - } - [Test] - public void Test_3931() - { - } - [Test] - public void Test_3932() - { - } - [Test] - public void Test_3933() - { - } - [Test] - public void Test_3934() - { - } - [Test] - public void Test_3935() - { - } - [Test] - public void Test_3936() - { - } - [Test] - public void Test_3937() - { - } - [Test] - public void Test_3938() - { - } - [Test] - public void Test_3939() - { - } - [Test] - public void Test_3940() - { - } - [Test] - public void Test_3941() - { - } - [Test] - public void Test_3942() - { - } - [Test] - public void Test_3943() - { - } - [Test] - public void Test_3944() - { - } - [Test] - public void Test_3945() - { - } - [Test] - public void Test_3946() - { - } - [Test] - public void Test_3947() - { - } - [Test] - public void Test_3948() - { - } - [Test] - public void Test_3949() - { - } - [Test] - public void Test_3950() - { - } - [Test] - public void Test_3951() - { - } - [Test] - public void Test_3952() - { - } - [Test] - public void Test_3953() - { - } - [Test] - public void Test_3954() - { - } - [Test] - public void Test_3955() - { - } - [Test] - public void Test_3956() - { - } - [Test] - public void Test_3957() - { - } - [Test] - public void Test_3958() - { - } - [Test] - public void Test_3959() - { - } - [Test] - public void Test_3960() - { - } - [Test] - public void Test_3961() - { - } - [Test] - public void Test_3962() - { - } - [Test] - public void Test_3963() - { - } - [Test] - public void Test_3964() - { - } - [Test] - public void Test_3965() - { - } - [Test] - public void Test_3966() - { - } - [Test] - public void Test_3967() - { - } - [Test] - public void Test_3968() - { - } - [Test] - public void Test_3969() - { - } - [Test] - public void Test_3970() - { - } - [Test] - public void Test_3971() - { - } - [Test] - public void Test_3972() - { - } - [Test] - public void Test_3973() - { - } - [Test] - public void Test_3974() - { - } - [Test] - public void Test_3975() - { - } - [Test] - public void Test_3976() - { - } - [Test] - public void Test_3977() - { - } - [Test] - public void Test_3978() - { - } - [Test] - public void Test_3979() - { - } - [Test] - public void Test_3980() - { - } - [Test] - public void Test_3981() - { - } - [Test] - public void Test_3982() - { - } - [Test] - public void Test_3983() - { - } - [Test] - public void Test_3984() - { - } - [Test] - public void Test_3985() - { - } - [Test] - public void Test_3986() - { - } - [Test] - public void Test_3987() - { - } - [Test] - public void Test_3988() - { - } - [Test] - public void Test_3989() - { - } - [Test] - public void Test_3990() - { - } - [Test] - public void Test_3991() - { - } - [Test] - public void Test_3992() - { - } - [Test] - public void Test_3993() - { - } - [Test] - public void Test_3994() - { - } - [Test] - public void Test_3995() - { - } - [Test] - public void Test_3996() - { - } - [Test] - public void Test_3997() - { - } - [Test] - public void Test_3998() - { - } - [Test] - public void Test_3999() - { - } - [Test] - public void Test_4000() - { - } - [Test] - public void Test_4001() - { - } - [Test] - public void Test_4002() - { - } - [Test] - public void Test_4003() - { - } - [Test] - public void Test_4004() - { - } - [Test] - public void Test_4005() - { - } - [Test] - public void Test_4006() - { - } - [Test] - public void Test_4007() - { - } - [Test] - public void Test_4008() - { - } - [Test] - public void Test_4009() - { - } - [Test] - public void Test_4010() - { - } - [Test] - public void Test_4011() - { - } - [Test] - public void Test_4012() - { - } - [Test] - public void Test_4013() - { - } - [Test] - public void Test_4014() - { - } - [Test] - public void Test_4015() - { - } - [Test] - public void Test_4016() - { - } - [Test] - public void Test_4017() - { - } - [Test] - public void Test_4018() - { - } - [Test] - public void Test_4019() - { - } - [Test] - public void Test_4020() - { - } - [Test] - public void Test_4021() - { - } - [Test] - public void Test_4022() - { - } - [Test] - public void Test_4023() - { - } - [Test] - public void Test_4024() - { - } - [Test] - public void Test_4025() - { - } - [Test] - public void Test_4026() - { - } - [Test] - public void Test_4027() - { - } - [Test] - public void Test_4028() - { - } - [Test] - public void Test_4029() - { - } - [Test] - public void Test_4030() - { - } - [Test] - public void Test_4031() - { - } - [Test] - public void Test_4032() - { - } - [Test] - public void Test_4033() - { - } - [Test] - public void Test_4034() - { - } - [Test] - public void Test_4035() - { - } - [Test] - public void Test_4036() - { - } - [Test] - public void Test_4037() - { - } - [Test] - public void Test_4038() - { - } - [Test] - public void Test_4039() - { - } - [Test] - public void Test_4040() - { - } - [Test] - public void Test_4041() - { - } - [Test] - public void Test_4042() - { - } - [Test] - public void Test_4043() - { - } - [Test] - public void Test_4044() - { - } - [Test] - public void Test_4045() - { - } - [Test] - public void Test_4046() - { - } - [Test] - public void Test_4047() - { - } - [Test] - public void Test_4048() - { - } - [Test] - public void Test_4049() - { - } - [Test] - public void Test_4050() - { - } - [Test] - public void Test_4051() - { - } - [Test] - public void Test_4052() - { - } - [Test] - public void Test_4053() - { - } - [Test] - public void Test_4054() - { - } - [Test] - public void Test_4055() - { - } - [Test] - public void Test_4056() - { - } - [Test] - public void Test_4057() - { - } - [Test] - public void Test_4058() - { - } - [Test] - public void Test_4059() - { - } - [Test] - public void Test_4060() - { - } - [Test] - public void Test_4061() - { - } - [Test] - public void Test_4062() - { - } - [Test] - public void Test_4063() - { - } - [Test] - public void Test_4064() - { - } - [Test] - public void Test_4065() - { - } - [Test] - public void Test_4066() - { - } - [Test] - public void Test_4067() - { - } - [Test] - public void Test_4068() - { - } - [Test] - public void Test_4069() - { - } - [Test] - public void Test_4070() - { - } - [Test] - public void Test_4071() - { - } - [Test] - public void Test_4072() - { - } - [Test] - public void Test_4073() - { - } - [Test] - public void Test_4074() - { - } - [Test] - public void Test_4075() - { - } - [Test] - public void Test_4076() - { - } - [Test] - public void Test_4077() - { - } - [Test] - public void Test_4078() - { - } - [Test] - public void Test_4079() - { - } - [Test] - public void Test_4080() - { - } - [Test] - public void Test_4081() - { - } - [Test] - public void Test_4082() - { - } - [Test] - public void Test_4083() - { - } - [Test] - public void Test_4084() - { - } - [Test] - public void Test_4085() - { - } - [Test] - public void Test_4086() - { - } - [Test] - public void Test_4087() - { - } - [Test] - public void Test_4088() - { - } - [Test] - public void Test_4089() - { - } - [Test] - public void Test_4090() - { - } - [Test] - public void Test_4091() - { - } - [Test] - public void Test_4092() - { - } - [Test] - public void Test_4093() - { - } - [Test] - public void Test_4094() - { - } - [Test] - public void Test_4095() - { - } - [Test] - public void Test_4096() - { - } - [Test] - public void Test_4097() - { - } - [Test] - public void Test_4098() - { - } - [Test] - public void Test_4099() - { - } - [Test] - public void Test_4100() - { - } - [Test] - public void Test_4101() - { - } - [Test] - public void Test_4102() - { - } - [Test] - public void Test_4103() - { - } - [Test] - public void Test_4104() - { - } - [Test] - public void Test_4105() - { - } - [Test] - public void Test_4106() - { - } - [Test] - public void Test_4107() - { - } - [Test] - public void Test_4108() - { - } - [Test] - public void Test_4109() - { - } - [Test] - public void Test_4110() - { - } - [Test] - public void Test_4111() - { - } - [Test] - public void Test_4112() - { - } - [Test] - public void Test_4113() - { - } - [Test] - public void Test_4114() - { - } - [Test] - public void Test_4115() - { - } - [Test] - public void Test_4116() - { - } - [Test] - public void Test_4117() - { - } - [Test] - public void Test_4118() - { - } - [Test] - public void Test_4119() - { - } - [Test] - public void Test_4120() - { - } - [Test] - public void Test_4121() - { - } - [Test] - public void Test_4122() - { - } - [Test] - public void Test_4123() - { - } - [Test] - public void Test_4124() - { - } - [Test] - public void Test_4125() - { - } - [Test] - public void Test_4126() - { - } - [Test] - public void Test_4127() - { - } - [Test] - public void Test_4128() - { - } - [Test] - public void Test_4129() - { - } - [Test] - public void Test_4130() - { - } - [Test] - public void Test_4131() - { - } - [Test] - public void Test_4132() - { - } - [Test] - public void Test_4133() - { - } - [Test] - public void Test_4134() - { - } - [Test] - public void Test_4135() - { - } - [Test] - public void Test_4136() - { - } - [Test] - public void Test_4137() - { - } - [Test] - public void Test_4138() - { - } - [Test] - public void Test_4139() - { - } - [Test] - public void Test_4140() - { - } - [Test] - public void Test_4141() - { - } - [Test] - public void Test_4142() - { - } - [Test] - public void Test_4143() - { - } - [Test] - public void Test_4144() - { - } - [Test] - public void Test_4145() - { - } - [Test] - public void Test_4146() - { - } - [Test] - public void Test_4147() - { - } - [Test] - public void Test_4148() - { - } - [Test] - public void Test_4149() - { - } - [Test] - public void Test_4150() - { - } - [Test] - public void Test_4151() - { - } - [Test] - public void Test_4152() - { - } - [Test] - public void Test_4153() - { - } - [Test] - public void Test_4154() - { - } - [Test] - public void Test_4155() - { - } - [Test] - public void Test_4156() - { - } - [Test] - public void Test_4157() - { - } - [Test] - public void Test_4158() - { - } - [Test] - public void Test_4159() - { - } - [Test] - public void Test_4160() - { - } - [Test] - public void Test_4161() - { - } - [Test] - public void Test_4162() - { - } - [Test] - public void Test_4163() - { - } - [Test] - public void Test_4164() - { - } - [Test] - public void Test_4165() - { - } - [Test] - public void Test_4166() - { - } - [Test] - public void Test_4167() - { - } - [Test] - public void Test_4168() - { - } - [Test] - public void Test_4169() - { - } - [Test] - public void Test_4170() - { - } - [Test] - public void Test_4171() - { - } - [Test] - public void Test_4172() - { - } - [Test] - public void Test_4173() - { - } - [Test] - public void Test_4174() - { - } - [Test] - public void Test_4175() - { - } - [Test] - public void Test_4176() - { - } - [Test] - public void Test_4177() - { - } - [Test] - public void Test_4178() - { - } - [Test] - public void Test_4179() - { - } - [Test] - public void Test_4180() - { - } - [Test] - public void Test_4181() - { - } - [Test] - public void Test_4182() - { - } - [Test] - public void Test_4183() - { - } - [Test] - public void Test_4184() - { - } - [Test] - public void Test_4185() - { - } - [Test] - public void Test_4186() - { - } - [Test] - public void Test_4187() - { - } - [Test] - public void Test_4188() - { - } - [Test] - public void Test_4189() - { - } - [Test] - public void Test_4190() - { - } - [Test] - public void Test_4191() - { - } - [Test] - public void Test_4192() - { - } - [Test] - public void Test_4193() - { - } - [Test] - public void Test_4194() - { - } - [Test] - public void Test_4195() - { - } - [Test] - public void Test_4196() - { - } - [Test] - public void Test_4197() - { - } - [Test] - public void Test_4198() - { - } - [Test] - public void Test_4199() - { - } - [Test] - public void Test_4200() - { - } - [Test] - public void Test_4201() - { - } - [Test] - public void Test_4202() - { - } - [Test] - public void Test_4203() - { - } - [Test] - public void Test_4204() - { - } - [Test] - public void Test_4205() - { - } - [Test] - public void Test_4206() - { - } - [Test] - public void Test_4207() - { - } - [Test] - public void Test_4208() - { - } - [Test] - public void Test_4209() - { - } - [Test] - public void Test_4210() - { - } - [Test] - public void Test_4211() - { - } - [Test] - public void Test_4212() - { - } - [Test] - public void Test_4213() - { - } - [Test] - public void Test_4214() - { - } - [Test] - public void Test_4215() - { - } - [Test] - public void Test_4216() - { - } - [Test] - public void Test_4217() - { - } - [Test] - public void Test_4218() - { - } - [Test] - public void Test_4219() - { - } - [Test] - public void Test_4220() - { - } - [Test] - public void Test_4221() - { - } - [Test] - public void Test_4222() - { - } - [Test] - public void Test_4223() - { - } - [Test] - public void Test_4224() - { - } - [Test] - public void Test_4225() - { - } - [Test] - public void Test_4226() - { - } - [Test] - public void Test_4227() - { - } - [Test] - public void Test_4228() - { - } - [Test] - public void Test_4229() - { - } - [Test] - public void Test_4230() - { - } - [Test] - public void Test_4231() - { - } - [Test] - public void Test_4232() - { - } - [Test] - public void Test_4233() - { - } - [Test] - public void Test_4234() - { - } - [Test] - public void Test_4235() - { - } - [Test] - public void Test_4236() - { - } - [Test] - public void Test_4237() - { - } - [Test] - public void Test_4238() - { - } - [Test] - public void Test_4239() - { - } - [Test] - public void Test_4240() - { - } - [Test] - public void Test_4241() - { - } - [Test] - public void Test_4242() - { - } - [Test] - public void Test_4243() - { - } - [Test] - public void Test_4244() - { - } - [Test] - public void Test_4245() - { - } - [Test] - public void Test_4246() - { - } - [Test] - public void Test_4247() - { - } - [Test] - public void Test_4248() - { - } - [Test] - public void Test_4249() - { - } - [Test] - public void Test_4250() - { - } - [Test] - public void Test_4251() - { - } - [Test] - public void Test_4252() - { - } - [Test] - public void Test_4253() - { - } - [Test] - public void Test_4254() - { - } - [Test] - public void Test_4255() - { - } - [Test] - public void Test_4256() - { - } - [Test] - public void Test_4257() - { - } - [Test] - public void Test_4258() - { - } - [Test] - public void Test_4259() - { - } - [Test] - public void Test_4260() - { - } - [Test] - public void Test_4261() - { - } - [Test] - public void Test_4262() - { - } - [Test] - public void Test_4263() - { - } - [Test] - public void Test_4264() - { - } - [Test] - public void Test_4265() - { - } - [Test] - public void Test_4266() - { - } - [Test] - public void Test_4267() - { - } - [Test] - public void Test_4268() - { - } - [Test] - public void Test_4269() - { - } - [Test] - public void Test_4270() - { - } - [Test] - public void Test_4271() - { - } - [Test] - public void Test_4272() - { - } - [Test] - public void Test_4273() - { - } - [Test] - public void Test_4274() - { - } - [Test] - public void Test_4275() - { - } - [Test] - public void Test_4276() - { - } - [Test] - public void Test_4277() - { - } - [Test] - public void Test_4278() - { - } - [Test] - public void Test_4279() - { - } - [Test] - public void Test_4280() - { - } - [Test] - public void Test_4281() - { - } - [Test] - public void Test_4282() - { - } - [Test] - public void Test_4283() - { - } - [Test] - public void Test_4284() - { - } - [Test] - public void Test_4285() - { - } - [Test] - public void Test_4286() - { - } - [Test] - public void Test_4287() - { - } - [Test] - public void Test_4288() - { - } - [Test] - public void Test_4289() - { - } - [Test] - public void Test_4290() - { - } - [Test] - public void Test_4291() - { - } - [Test] - public void Test_4292() - { - } - [Test] - public void Test_4293() - { - } - [Test] - public void Test_4294() - { - } - [Test] - public void Test_4295() - { - } - [Test] - public void Test_4296() - { - } - [Test] - public void Test_4297() - { - } - [Test] - public void Test_4298() - { - } - [Test] - public void Test_4299() - { - } - [Test] - public void Test_4300() - { - } - [Test] - public void Test_4301() - { - } - [Test] - public void Test_4302() - { - } - [Test] - public void Test_4303() - { - } - [Test] - public void Test_4304() - { - } - [Test] - public void Test_4305() - { - } - [Test] - public void Test_4306() - { - } - [Test] - public void Test_4307() - { - } - [Test] - public void Test_4308() - { - } - [Test] - public void Test_4309() - { - } - [Test] - public void Test_4310() - { - } - [Test] - public void Test_4311() - { - } - [Test] - public void Test_4312() - { - } - [Test] - public void Test_4313() - { - } - [Test] - public void Test_4314() - { - } - [Test] - public void Test_4315() - { - } - [Test] - public void Test_4316() - { - } - [Test] - public void Test_4317() - { - } - [Test] - public void Test_4318() - { - } - [Test] - public void Test_4319() - { - } - [Test] - public void Test_4320() - { - } - [Test] - public void Test_4321() - { - } - [Test] - public void Test_4322() - { - } - [Test] - public void Test_4323() - { - } - [Test] - public void Test_4324() - { - } - [Test] - public void Test_4325() - { - } - [Test] - public void Test_4326() - { - } - [Test] - public void Test_4327() - { - } - [Test] - public void Test_4328() - { - } - [Test] - public void Test_4329() - { - } - [Test] - public void Test_4330() - { - } - [Test] - public void Test_4331() - { - } - [Test] - public void Test_4332() - { - } - [Test] - public void Test_4333() - { - } - [Test] - public void Test_4334() - { - } - [Test] - public void Test_4335() - { - } - [Test] - public void Test_4336() - { - } - [Test] - public void Test_4337() - { - } - [Test] - public void Test_4338() - { - } - [Test] - public void Test_4339() - { - } - [Test] - public void Test_4340() - { - } - [Test] - public void Test_4341() - { - } - [Test] - public void Test_4342() - { - } - [Test] - public void Test_4343() - { - } - [Test] - public void Test_4344() - { - } - [Test] - public void Test_4345() - { - } - [Test] - public void Test_4346() - { - } - [Test] - public void Test_4347() - { - } - [Test] - public void Test_4348() - { - } - [Test] - public void Test_4349() - { - } - [Test] - public void Test_4350() - { - } - [Test] - public void Test_4351() - { - } - [Test] - public void Test_4352() - { - } - [Test] - public void Test_4353() - { - } - [Test] - public void Test_4354() - { - } - [Test] - public void Test_4355() - { - } - [Test] - public void Test_4356() - { - } - [Test] - public void Test_4357() - { - } - [Test] - public void Test_4358() - { - } - [Test] - public void Test_4359() - { - } - [Test] - public void Test_4360() - { - } - [Test] - public void Test_4361() - { - } - [Test] - public void Test_4362() - { - } - [Test] - public void Test_4363() - { - } - [Test] - public void Test_4364() - { - } - [Test] - public void Test_4365() - { - } - [Test] - public void Test_4366() - { - } - [Test] - public void Test_4367() - { - } - [Test] - public void Test_4368() - { - } - [Test] - public void Test_4369() - { - } - [Test] - public void Test_4370() - { - } - [Test] - public void Test_4371() - { - } - [Test] - public void Test_4372() - { - } - [Test] - public void Test_4373() - { - } - [Test] - public void Test_4374() - { - } - [Test] - public void Test_4375() - { - } - [Test] - public void Test_4376() - { - } - [Test] - public void Test_4377() - { - } - [Test] - public void Test_4378() - { - } - [Test] - public void Test_4379() - { - } - [Test] - public void Test_4380() - { - } - [Test] - public void Test_4381() - { - } - [Test] - public void Test_4382() - { - } - [Test] - public void Test_4383() - { - } - [Test] - public void Test_4384() - { - } - [Test] - public void Test_4385() - { - } - [Test] - public void Test_4386() - { - } - [Test] - public void Test_4387() - { - } - [Test] - public void Test_4388() - { - } - [Test] - public void Test_4389() - { - } - [Test] - public void Test_4390() - { - } - [Test] - public void Test_4391() - { - } - [Test] - public void Test_4392() - { - } - [Test] - public void Test_4393() - { - } - [Test] - public void Test_4394() - { - } - [Test] - public void Test_4395() - { - } - [Test] - public void Test_4396() - { - } - [Test] - public void Test_4397() - { - } - [Test] - public void Test_4398() - { - } - [Test] - public void Test_4399() - { - } - [Test] - public void Test_4400() - { - } - [Test] - public void Test_4401() - { - } - [Test] - public void Test_4402() - { - } - [Test] - public void Test_4403() - { - } - [Test] - public void Test_4404() - { - } - [Test] - public void Test_4405() - { - } - [Test] - public void Test_4406() - { - } - [Test] - public void Test_4407() - { - } - [Test] - public void Test_4408() - { - } - [Test] - public void Test_4409() - { - } - [Test] - public void Test_4410() - { - } - [Test] - public void Test_4411() - { - } - [Test] - public void Test_4412() - { - } - [Test] - public void Test_4413() - { - } - [Test] - public void Test_4414() - { - } - [Test] - public void Test_4415() - { - } - [Test] - public void Test_4416() - { - } - [Test] - public void Test_4417() - { - } - [Test] - public void Test_4418() - { - } - [Test] - public void Test_4419() - { - } - [Test] - public void Test_4420() - { - } - [Test] - public void Test_4421() - { - } - [Test] - public void Test_4422() - { - } - [Test] - public void Test_4423() - { - } - [Test] - public void Test_4424() - { - } - [Test] - public void Test_4425() - { - } - [Test] - public void Test_4426() - { - } - [Test] - public void Test_4427() - { - } - [Test] - public void Test_4428() - { - } - [Test] - public void Test_4429() - { - } - [Test] - public void Test_4430() - { - } - [Test] - public void Test_4431() - { - } - [Test] - public void Test_4432() - { - } - [Test] - public void Test_4433() - { - } - [Test] - public void Test_4434() - { - } - [Test] - public void Test_4435() - { - } - [Test] - public void Test_4436() - { - } - [Test] - public void Test_4437() - { - } - [Test] - public void Test_4438() - { - } - [Test] - public void Test_4439() - { - } - [Test] - public void Test_4440() - { - } - [Test] - public void Test_4441() - { - } - [Test] - public void Test_4442() - { - } - [Test] - public void Test_4443() - { - } - [Test] - public void Test_4444() - { - } - [Test] - public void Test_4445() - { - } - [Test] - public void Test_4446() - { - } - [Test] - public void Test_4447() - { - } - [Test] - public void Test_4448() - { - } - [Test] - public void Test_4449() - { - } - [Test] - public void Test_4450() - { - } - [Test] - public void Test_4451() - { - } - [Test] - public void Test_4452() - { - } - [Test] - public void Test_4453() - { - } - [Test] - public void Test_4454() - { - } - [Test] - public void Test_4455() - { - } - [Test] - public void Test_4456() - { - } - [Test] - public void Test_4457() - { - } - [Test] - public void Test_4458() - { - } - [Test] - public void Test_4459() - { - } - [Test] - public void Test_4460() - { - } - [Test] - public void Test_4461() - { - } - [Test] - public void Test_4462() - { - } - [Test] - public void Test_4463() - { - } - [Test] - public void Test_4464() - { - } - [Test] - public void Test_4465() - { - } - [Test] - public void Test_4466() - { - } - [Test] - public void Test_4467() - { - } - [Test] - public void Test_4468() - { - } - [Test] - public void Test_4469() - { - } - [Test] - public void Test_4470() - { - } - [Test] - public void Test_4471() - { - } - [Test] - public void Test_4472() - { - } - [Test] - public void Test_4473() - { - } - [Test] - public void Test_4474() - { - } - [Test] - public void Test_4475() - { - } - [Test] - public void Test_4476() - { - } - [Test] - public void Test_4477() - { - } - [Test] - public void Test_4478() - { - } - [Test] - public void Test_4479() - { - } - [Test] - public void Test_4480() - { - } - [Test] - public void Test_4481() - { - } - [Test] - public void Test_4482() - { - } - [Test] - public void Test_4483() - { - } - [Test] - public void Test_4484() - { - } - [Test] - public void Test_4485() - { - } - [Test] - public void Test_4486() - { - } - [Test] - public void Test_4487() - { - } - [Test] - public void Test_4488() - { - } - [Test] - public void Test_4489() - { - } - [Test] - public void Test_4490() - { - } - [Test] - public void Test_4491() - { - } - [Test] - public void Test_4492() - { - } - [Test] - public void Test_4493() - { - } - [Test] - public void Test_4494() - { - } - [Test] - public void Test_4495() - { - } - [Test] - public void Test_4496() - { - } - [Test] - public void Test_4497() - { - } - [Test] - public void Test_4498() - { - } - [Test] - public void Test_4499() - { - } - [Test] - public void Test_4500() - { - } - [Test] - public void Test_4501() - { - } - [Test] - public void Test_4502() - { - } - [Test] - public void Test_4503() - { - } - [Test] - public void Test_4504() - { - } - [Test] - public void Test_4505() - { - } - [Test] - public void Test_4506() - { - } - [Test] - public void Test_4507() - { - } - [Test] - public void Test_4508() - { - } - [Test] - public void Test_4509() - { - } - [Test] - public void Test_4510() - { - } - [Test] - public void Test_4511() - { - } - [Test] - public void Test_4512() - { - } - [Test] - public void Test_4513() - { - } - [Test] - public void Test_4514() - { - } - [Test] - public void Test_4515() - { - } - [Test] - public void Test_4516() - { - } - [Test] - public void Test_4517() - { - } - [Test] - public void Test_4518() - { - } - [Test] - public void Test_4519() - { - } - [Test] - public void Test_4520() - { - } - [Test] - public void Test_4521() - { - } - [Test] - public void Test_4522() - { - } - [Test] - public void Test_4523() - { - } - [Test] - public void Test_4524() - { - } - [Test] - public void Test_4525() - { - } - [Test] - public void Test_4526() - { - } - [Test] - public void Test_4527() - { - } - [Test] - public void Test_4528() - { - } - [Test] - public void Test_4529() - { - } - [Test] - public void Test_4530() - { - } - [Test] - public void Test_4531() - { - } - [Test] - public void Test_4532() - { - } - [Test] - public void Test_4533() - { - } - [Test] - public void Test_4534() - { - } - [Test] - public void Test_4535() - { - } - [Test] - public void Test_4536() - { - } - [Test] - public void Test_4537() - { - } - [Test] - public void Test_4538() - { - } - [Test] - public void Test_4539() - { - } - [Test] - public void Test_4540() - { - } - [Test] - public void Test_4541() - { - } - [Test] - public void Test_4542() - { - } - [Test] - public void Test_4543() - { - } - [Test] - public void Test_4544() - { - } - [Test] - public void Test_4545() - { - } - [Test] - public void Test_4546() - { - } - [Test] - public void Test_4547() - { - } - [Test] - public void Test_4548() - { - } - [Test] - public void Test_4549() - { - } - [Test] - public void Test_4550() - { - } - [Test] - public void Test_4551() - { - } - [Test] - public void Test_4552() - { - } - [Test] - public void Test_4553() - { - } - [Test] - public void Test_4554() - { - } - [Test] - public void Test_4555() - { - } - [Test] - public void Test_4556() - { - } - [Test] - public void Test_4557() - { - } - [Test] - public void Test_4558() - { - } - [Test] - public void Test_4559() - { - } - [Test] - public void Test_4560() - { - } - [Test] - public void Test_4561() - { - } - [Test] - public void Test_4562() - { - } - [Test] - public void Test_4563() - { - } - [Test] - public void Test_4564() - { - } - [Test] - public void Test_4565() - { - } - [Test] - public void Test_4566() - { - } - [Test] - public void Test_4567() - { - } - [Test] - public void Test_4568() - { - } - [Test] - public void Test_4569() - { - } - [Test] - public void Test_4570() - { - } - [Test] - public void Test_4571() - { - } - [Test] - public void Test_4572() - { - } - [Test] - public void Test_4573() - { - } - [Test] - public void Test_4574() - { - } - [Test] - public void Test_4575() - { - } - [Test] - public void Test_4576() - { - } - [Test] - public void Test_4577() - { - } - [Test] - public void Test_4578() - { - } - [Test] - public void Test_4579() - { - } - [Test] - public void Test_4580() - { - } - [Test] - public void Test_4581() - { - } - [Test] - public void Test_4582() - { - } - [Test] - public void Test_4583() - { - } - [Test] - public void Test_4584() - { - } - [Test] - public void Test_4585() - { - } - [Test] - public void Test_4586() - { - } - [Test] - public void Test_4587() - { - } - [Test] - public void Test_4588() - { - } - [Test] - public void Test_4589() - { - } - [Test] - public void Test_4590() - { - } - [Test] - public void Test_4591() - { - } - [Test] - public void Test_4592() - { - } - [Test] - public void Test_4593() - { - } - [Test] - public void Test_4594() - { - } - [Test] - public void Test_4595() - { - } - [Test] - public void Test_4596() - { - } - [Test] - public void Test_4597() - { - } - [Test] - public void Test_4598() - { - } - [Test] - public void Test_4599() - { - } - [Test] - public void Test_4600() - { - } - [Test] - public void Test_4601() - { - } - [Test] - public void Test_4602() - { - } - [Test] - public void Test_4603() - { - } - [Test] - public void Test_4604() - { - } - [Test] - public void Test_4605() - { - } - [Test] - public void Test_4606() - { - } - [Test] - public void Test_4607() - { - } - [Test] - public void Test_4608() - { - } - [Test] - public void Test_4609() - { - } - [Test] - public void Test_4610() - { - } - [Test] - public void Test_4611() - { - } - [Test] - public void Test_4612() - { - } - [Test] - public void Test_4613() - { - } - [Test] - public void Test_4614() - { - } - [Test] - public void Test_4615() - { - } - [Test] - public void Test_4616() - { - } - [Test] - public void Test_4617() - { - } - [Test] - public void Test_4618() - { - } - [Test] - public void Test_4619() - { - } - [Test] - public void Test_4620() - { - } - [Test] - public void Test_4621() - { - } - [Test] - public void Test_4622() - { - } - [Test] - public void Test_4623() - { - } - [Test] - public void Test_4624() - { - } - [Test] - public void Test_4625() - { - } - [Test] - public void Test_4626() - { - } - [Test] - public void Test_4627() - { - } - [Test] - public void Test_4628() - { - } - [Test] - public void Test_4629() - { - } - [Test] - public void Test_4630() - { - } - [Test] - public void Test_4631() - { - } - [Test] - public void Test_4632() - { - } - [Test] - public void Test_4633() - { - } - [Test] - public void Test_4634() - { - } - [Test] - public void Test_4635() - { - } - [Test] - public void Test_4636() - { - } - [Test] - public void Test_4637() - { - } - [Test] - public void Test_4638() - { - } - [Test] - public void Test_4639() - { - } - [Test] - public void Test_4640() - { - } - [Test] - public void Test_4641() - { - } - [Test] - public void Test_4642() - { - } - [Test] - public void Test_4643() - { - } - [Test] - public void Test_4644() - { - } - [Test] - public void Test_4645() - { - } - [Test] - public void Test_4646() - { - } - [Test] - public void Test_4647() - { - } - [Test] - public void Test_4648() - { - } - [Test] - public void Test_4649() - { - } - [Test] - public void Test_4650() - { - } - [Test] - public void Test_4651() - { - } - [Test] - public void Test_4652() - { - } - [Test] - public void Test_4653() - { - } - [Test] - public void Test_4654() - { - } - [Test] - public void Test_4655() - { - } - [Test] - public void Test_4656() - { - } - [Test] - public void Test_4657() - { - } - [Test] - public void Test_4658() - { - } - [Test] - public void Test_4659() - { - } - [Test] - public void Test_4660() - { - } - [Test] - public void Test_4661() - { - } - [Test] - public void Test_4662() - { - } - [Test] - public void Test_4663() - { - } - [Test] - public void Test_4664() - { - } - [Test] - public void Test_4665() - { - } - [Test] - public void Test_4666() - { - } - [Test] - public void Test_4667() - { - } - [Test] - public void Test_4668() - { - } - [Test] - public void Test_4669() - { - } - [Test] - public void Test_4670() - { - } - [Test] - public void Test_4671() - { - } - [Test] - public void Test_4672() - { - } - [Test] - public void Test_4673() - { - } - [Test] - public void Test_4674() - { - } - [Test] - public void Test_4675() - { - } - [Test] - public void Test_4676() - { - } - [Test] - public void Test_4677() - { - } - [Test] - public void Test_4678() - { - } - [Test] - public void Test_4679() - { - } - [Test] - public void Test_4680() - { - } - [Test] - public void Test_4681() - { - } - [Test] - public void Test_4682() - { - } - [Test] - public void Test_4683() - { - } - [Test] - public void Test_4684() - { - } - [Test] - public void Test_4685() - { - } - [Test] - public void Test_4686() - { - } - [Test] - public void Test_4687() - { - } - [Test] - public void Test_4688() - { - } - [Test] - public void Test_4689() - { - } - [Test] - public void Test_4690() - { - } - [Test] - public void Test_4691() - { - } - [Test] - public void Test_4692() - { - } - [Test] - public void Test_4693() - { - } - [Test] - public void Test_4694() - { - } - [Test] - public void Test_4695() - { - } - [Test] - public void Test_4696() - { - } - [Test] - public void Test_4697() - { - } - [Test] - public void Test_4698() - { - } - [Test] - public void Test_4699() - { - } - [Test] - public void Test_4700() - { - } - [Test] - public void Test_4701() - { - } - [Test] - public void Test_4702() - { - } - [Test] - public void Test_4703() - { - } - [Test] - public void Test_4704() - { - } - [Test] - public void Test_4705() - { - } - [Test] - public void Test_4706() - { - } - [Test] - public void Test_4707() - { - } - [Test] - public void Test_4708() - { - } - [Test] - public void Test_4709() - { - } - [Test] - public void Test_4710() - { - } - [Test] - public void Test_4711() - { - } - [Test] - public void Test_4712() - { - } - [Test] - public void Test_4713() - { - } - [Test] - public void Test_4714() - { - } - [Test] - public void Test_4715() - { - } - [Test] - public void Test_4716() - { - } - [Test] - public void Test_4717() - { - } - [Test] - public void Test_4718() - { - } - [Test] - public void Test_4719() - { - } - [Test] - public void Test_4720() - { - } - [Test] - public void Test_4721() - { - } - [Test] - public void Test_4722() - { - } - [Test] - public void Test_4723() - { - } - [Test] - public void Test_4724() - { - } - [Test] - public void Test_4725() - { - } - [Test] - public void Test_4726() - { - } - [Test] - public void Test_4727() - { - } - [Test] - public void Test_4728() - { - } - [Test] - public void Test_4729() - { - } - [Test] - public void Test_4730() - { - } - [Test] - public void Test_4731() - { - } - [Test] - public void Test_4732() - { - } - [Test] - public void Test_4733() - { - } - [Test] - public void Test_4734() - { - } - [Test] - public void Test_4735() - { - } - [Test] - public void Test_4736() - { - } - [Test] - public void Test_4737() - { - } - [Test] - public void Test_4738() - { - } - [Test] - public void Test_4739() - { - } - [Test] - public void Test_4740() - { - } - [Test] - public void Test_4741() - { - } - [Test] - public void Test_4742() - { - } - [Test] - public void Test_4743() - { - } - [Test] - public void Test_4744() - { - } - [Test] - public void Test_4745() - { - } - [Test] - public void Test_4746() - { - } - [Test] - public void Test_4747() - { - } - [Test] - public void Test_4748() - { - } - [Test] - public void Test_4749() - { - } - [Test] - public void Test_4750() - { - } - [Test] - public void Test_4751() - { - } - [Test] - public void Test_4752() - { - } - [Test] - public void Test_4753() - { - } - [Test] - public void Test_4754() - { - } - [Test] - public void Test_4755() - { - } - [Test] - public void Test_4756() - { - } - [Test] - public void Test_4757() - { - } - [Test] - public void Test_4758() - { - } - [Test] - public void Test_4759() - { - } - [Test] - public void Test_4760() - { - } - [Test] - public void Test_4761() - { - } - [Test] - public void Test_4762() - { - } - [Test] - public void Test_4763() - { - } - [Test] - public void Test_4764() - { - } - [Test] - public void Test_4765() - { - } - [Test] - public void Test_4766() - { - } - [Test] - public void Test_4767() - { - } - [Test] - public void Test_4768() - { - } - [Test] - public void Test_4769() - { - } - [Test] - public void Test_4770() - { - } - [Test] - public void Test_4771() - { - } - [Test] - public void Test_4772() - { - } - [Test] - public void Test_4773() - { - } - [Test] - public void Test_4774() - { - } - [Test] - public void Test_4775() - { - } - [Test] - public void Test_4776() - { - } - [Test] - public void Test_4777() - { - } - [Test] - public void Test_4778() - { - } - [Test] - public void Test_4779() - { - } - [Test] - public void Test_4780() - { - } - [Test] - public void Test_4781() - { - } - [Test] - public void Test_4782() - { - } - [Test] - public void Test_4783() - { - } - [Test] - public void Test_4784() - { - } - [Test] - public void Test_4785() - { - } - [Test] - public void Test_4786() - { - } - [Test] - public void Test_4787() - { - } - [Test] - public void Test_4788() - { - } - [Test] - public void Test_4789() - { - } - [Test] - public void Test_4790() - { - } - [Test] - public void Test_4791() - { - } - [Test] - public void Test_4792() - { - } - [Test] - public void Test_4793() - { - } - [Test] - public void Test_4794() - { - } - [Test] - public void Test_4795() - { - } - [Test] - public void Test_4796() - { - } - [Test] - public void Test_4797() - { - } - [Test] - public void Test_4798() - { - } - [Test] - public void Test_4799() - { - } - [Test] - public void Test_4800() - { - } - [Test] - public void Test_4801() - { - } - [Test] - public void Test_4802() - { - } - [Test] - public void Test_4803() - { - } - [Test] - public void Test_4804() - { - } - [Test] - public void Test_4805() - { - } - [Test] - public void Test_4806() - { - } - [Test] - public void Test_4807() - { - } - [Test] - public void Test_4808() - { - } - [Test] - public void Test_4809() - { - } - [Test] - public void Test_4810() - { - } - [Test] - public void Test_4811() - { - } - [Test] - public void Test_4812() - { - } - [Test] - public void Test_4813() - { - } - [Test] - public void Test_4814() - { - } - [Test] - public void Test_4815() - { - } - [Test] - public void Test_4816() - { - } - [Test] - public void Test_4817() - { - } - [Test] - public void Test_4818() - { - } - [Test] - public void Test_4819() - { - } - [Test] - public void Test_4820() - { - } - [Test] - public void Test_4821() - { - } - [Test] - public void Test_4822() - { - } - [Test] - public void Test_4823() - { - } - [Test] - public void Test_4824() - { - } - [Test] - public void Test_4825() - { - } - [Test] - public void Test_4826() - { - } - [Test] - public void Test_4827() - { - } - [Test] - public void Test_4828() - { - } - [Test] - public void Test_4829() - { - } - [Test] - public void Test_4830() - { - } - [Test] - public void Test_4831() - { - } - [Test] - public void Test_4832() - { - } - [Test] - public void Test_4833() - { - } - [Test] - public void Test_4834() - { - } - [Test] - public void Test_4835() - { - } - [Test] - public void Test_4836() - { - } - [Test] - public void Test_4837() - { - } - [Test] - public void Test_4838() - { - } - [Test] - public void Test_4839() - { - } - [Test] - public void Test_4840() - { - } - [Test] - public void Test_4841() - { - } - [Test] - public void Test_4842() - { - } - [Test] - public void Test_4843() - { - } - [Test] - public void Test_4844() - { - } - [Test] - public void Test_4845() - { - } - [Test] - public void Test_4846() - { - } - [Test] - public void Test_4847() - { - } - [Test] - public void Test_4848() - { - } - [Test] - public void Test_4849() - { - } - [Test] - public void Test_4850() - { - } - [Test] - public void Test_4851() - { - } - [Test] - public void Test_4852() - { - } - [Test] - public void Test_4853() - { - } - [Test] - public void Test_4854() - { - } - [Test] - public void Test_4855() - { - } - [Test] - public void Test_4856() - { - } - [Test] - public void Test_4857() - { - } - [Test] - public void Test_4858() - { - } - [Test] - public void Test_4859() - { - } - [Test] - public void Test_4860() - { - } - [Test] - public void Test_4861() - { - } - [Test] - public void Test_4862() - { - } - [Test] - public void Test_4863() - { - } - [Test] - public void Test_4864() - { - } - [Test] - public void Test_4865() - { - } - [Test] - public void Test_4866() - { - } - [Test] - public void Test_4867() - { - } - [Test] - public void Test_4868() - { - } - [Test] - public void Test_4869() - { - } - [Test] - public void Test_4870() - { - } - [Test] - public void Test_4871() - { - } - [Test] - public void Test_4872() - { - } - [Test] - public void Test_4873() - { - } - [Test] - public void Test_4874() - { - } - [Test] - public void Test_4875() - { - } - [Test] - public void Test_4876() - { - } - [Test] - public void Test_4877() - { - } - [Test] - public void Test_4878() - { - } - [Test] - public void Test_4879() - { - } - [Test] - public void Test_4880() - { - } - [Test] - public void Test_4881() - { - } - [Test] - public void Test_4882() - { - } - [Test] - public void Test_4883() - { - } - [Test] - public void Test_4884() - { - } - [Test] - public void Test_4885() - { - } - [Test] - public void Test_4886() - { - } - [Test] - public void Test_4887() - { - } - [Test] - public void Test_4888() - { - } - [Test] - public void Test_4889() - { - } - [Test] - public void Test_4890() - { - } - [Test] - public void Test_4891() - { - } - [Test] - public void Test_4892() - { - } - [Test] - public void Test_4893() - { - } - [Test] - public void Test_4894() - { - } - [Test] - public void Test_4895() - { - } - [Test] - public void Test_4896() - { - } - [Test] - public void Test_4897() - { - } - [Test] - public void Test_4898() - { - } - [Test] - public void Test_4899() - { - } - [Test] - public void Test_4900() - { - } - [Test] - public void Test_4901() - { - } - [Test] - public void Test_4902() - { - } - [Test] - public void Test_4903() - { - } - [Test] - public void Test_4904() - { - } - [Test] - public void Test_4905() - { - } - [Test] - public void Test_4906() - { - } - [Test] - public void Test_4907() - { - } - [Test] - public void Test_4908() - { - } - [Test] - public void Test_4909() - { - } - [Test] - public void Test_4910() - { - } - [Test] - public void Test_4911() - { - } - [Test] - public void Test_4912() - { - } - [Test] - public void Test_4913() - { - } - [Test] - public void Test_4914() - { - } - [Test] - public void Test_4915() - { - } - [Test] - public void Test_4916() - { - } - [Test] - public void Test_4917() - { - } - [Test] - public void Test_4918() - { - } - [Test] - public void Test_4919() - { - } - [Test] - public void Test_4920() - { - } - [Test] - public void Test_4921() - { - } - [Test] - public void Test_4922() - { - } - [Test] - public void Test_4923() - { - } - [Test] - public void Test_4924() - { - } - [Test] - public void Test_4925() - { - } - [Test] - public void Test_4926() - { - } - [Test] - public void Test_4927() - { - } - [Test] - public void Test_4928() - { - } - [Test] - public void Test_4929() - { - } - [Test] - public void Test_4930() - { - } - [Test] - public void Test_4931() - { - } - [Test] - public void Test_4932() - { - } - [Test] - public void Test_4933() - { - } - [Test] - public void Test_4934() - { - } - [Test] - public void Test_4935() - { - } - [Test] - public void Test_4936() - { - } - [Test] - public void Test_4937() - { - } - [Test] - public void Test_4938() - { - } - [Test] - public void Test_4939() - { - } - [Test] - public void Test_4940() - { - } - [Test] - public void Test_4941() - { - } - [Test] - public void Test_4942() - { - } - [Test] - public void Test_4943() - { - } - [Test] - public void Test_4944() - { - } - [Test] - public void Test_4945() - { - } - [Test] - public void Test_4946() - { - } - [Test] - public void Test_4947() - { - } - [Test] - public void Test_4948() - { - } - [Test] - public void Test_4949() - { - } - [Test] - public void Test_4950() - { - } - [Test] - public void Test_4951() - { - } - [Test] - public void Test_4952() - { - } - [Test] - public void Test_4953() - { - } - [Test] - public void Test_4954() - { - } - [Test] - public void Test_4955() - { - } - [Test] - public void Test_4956() - { - } - [Test] - public void Test_4957() - { - } - [Test] - public void Test_4958() - { - } - [Test] - public void Test_4959() - { - } - [Test] - public void Test_4960() - { - } - [Test] - public void Test_4961() - { - } - [Test] - public void Test_4962() - { - } - [Test] - public void Test_4963() - { - } - [Test] - public void Test_4964() - { - } - [Test] - public void Test_4965() - { - } - [Test] - public void Test_4966() - { - } - [Test] - public void Test_4967() - { - } - [Test] - public void Test_4968() - { - } - [Test] - public void Test_4969() - { - } - [Test] - public void Test_4970() - { - } - [Test] - public void Test_4971() - { - } - [Test] - public void Test_4972() - { - } - [Test] - public void Test_4973() - { - } - [Test] - public void Test_4974() - { - } - [Test] - public void Test_4975() - { - } - [Test] - public void Test_4976() - { - } - [Test] - public void Test_4977() - { - } - [Test] - public void Test_4978() - { - } - [Test] - public void Test_4979() - { - } - [Test] - public void Test_4980() - { - } - [Test] - public void Test_4981() - { - } - [Test] - public void Test_4982() - { - } - [Test] - public void Test_4983() - { - } - [Test] - public void Test_4984() - { - } - [Test] - public void Test_4985() - { - } - [Test] - public void Test_4986() - { - } - [Test] - public void Test_4987() - { - } - [Test] - public void Test_4988() - { - } - [Test] - public void Test_4989() - { - } - [Test] - public void Test_4990() - { - } - [Test] - public void Test_4991() - { - } - [Test] - public void Test_4992() - { - } - [Test] - public void Test_4993() - { - } - [Test] - public void Test_4994() - { - } - [Test] - public void Test_4995() - { - } - [Test] - public void Test_4996() - { - } - [Test] - public void Test_4997() - { - } - [Test] - public void Test_4998() - { - } - [Test] - public void Test_4999() - { - } - [Test] - public void Test_5000() - { - } - [Test] - public void Test_5001() - { - } - [Test] - public void Test_5002() - { - } - [Test] - public void Test_5003() - { - } - [Test] - public void Test_5004() - { - } - [Test] - public void Test_5005() - { - } - [Test] - public void Test_5006() - { - } - [Test] - public void Test_5007() - { - } - [Test] - public void Test_5008() - { - } - [Test] - public void Test_5009() - { - } - [Test] - public void Test_5010() - { - } - [Test] - public void Test_5011() - { - } - [Test] - public void Test_5012() - { - } - [Test] - public void Test_5013() - { - } - [Test] - public void Test_5014() - { - } - [Test] - public void Test_5015() - { - } - [Test] - public void Test_5016() - { - } - [Test] - public void Test_5017() - { - } - [Test] - public void Test_5018() - { - } - [Test] - public void Test_5019() - { - } - [Test] - public void Test_5020() - { - } - [Test] - public void Test_5021() - { - } - [Test] - public void Test_5022() - { - } - [Test] - public void Test_5023() - { - } - [Test] - public void Test_5024() - { - } - [Test] - public void Test_5025() - { - } - [Test] - public void Test_5026() - { - } - [Test] - public void Test_5027() - { - } - [Test] - public void Test_5028() - { - } - [Test] - public void Test_5029() - { - } - [Test] - public void Test_5030() - { - } - [Test] - public void Test_5031() - { - } - [Test] - public void Test_5032() - { - } - [Test] - public void Test_5033() - { - } - [Test] - public void Test_5034() - { - } - [Test] - public void Test_5035() - { - } - [Test] - public void Test_5036() - { - } - [Test] - public void Test_5037() - { - } - [Test] - public void Test_5038() - { - } - [Test] - public void Test_5039() - { - } - [Test] - public void Test_5040() - { - } - [Test] - public void Test_5041() - { - } - [Test] - public void Test_5042() - { - } - [Test] - public void Test_5043() - { - } - [Test] - public void Test_5044() - { - } - [Test] - public void Test_5045() - { - } - [Test] - public void Test_5046() - { - } - [Test] - public void Test_5047() - { - } - [Test] - public void Test_5048() - { - } - [Test] - public void Test_5049() - { - } - [Test] - public void Test_5050() - { - } - [Test] - public void Test_5051() - { - } - [Test] - public void Test_5052() - { - } - [Test] - public void Test_5053() - { - } - [Test] - public void Test_5054() - { - } - [Test] - public void Test_5055() - { - } - [Test] - public void Test_5056() - { - } - [Test] - public void Test_5057() - { - } - [Test] - public void Test_5058() - { - } - [Test] - public void Test_5059() - { - } - [Test] - public void Test_5060() - { - } - [Test] - public void Test_5061() - { - } - [Test] - public void Test_5062() - { - } - [Test] - public void Test_5063() - { - } - [Test] - public void Test_5064() - { - } - [Test] - public void Test_5065() - { - } - [Test] - public void Test_5066() - { - } - [Test] - public void Test_5067() - { - } - [Test] - public void Test_5068() - { - } - [Test] - public void Test_5069() - { - } - [Test] - public void Test_5070() - { - } - [Test] - public void Test_5071() - { - } - [Test] - public void Test_5072() - { - } - [Test] - public void Test_5073() - { - } - [Test] - public void Test_5074() - { - } - [Test] - public void Test_5075() - { - } - [Test] - public void Test_5076() - { - } - [Test] - public void Test_5077() - { - } - [Test] - public void Test_5078() - { - } - [Test] - public void Test_5079() - { - } - [Test] - public void Test_5080() - { - } - [Test] - public void Test_5081() - { - } - [Test] - public void Test_5082() - { - } - [Test] - public void Test_5083() - { - } - [Test] - public void Test_5084() - { - } - [Test] - public void Test_5085() - { - } - [Test] - public void Test_5086() - { - } - [Test] - public void Test_5087() - { - } - [Test] - public void Test_5088() - { - } - [Test] - public void Test_5089() - { - } - [Test] - public void Test_5090() - { - } - [Test] - public void Test_5091() - { - } - [Test] - public void Test_5092() - { - } - [Test] - public void Test_5093() - { - } - [Test] - public void Test_5094() - { - } - [Test] - public void Test_5095() - { - } - [Test] - public void Test_5096() - { - } - [Test] - public void Test_5097() - { - } - [Test] - public void Test_5098() - { - } - [Test] - public void Test_5099() - { - } - [Test] - public void Test_5100() - { - } - [Test] - public void Test_5101() - { - } - [Test] - public void Test_5102() - { - } - [Test] - public void Test_5103() - { - } - [Test] - public void Test_5104() - { - } - [Test] - public void Test_5105() - { - } - [Test] - public void Test_5106() - { - } - [Test] - public void Test_5107() - { - } - [Test] - public void Test_5108() - { - } - [Test] - public void Test_5109() - { - } - [Test] - public void Test_5110() - { - } - [Test] - public void Test_5111() - { - } - [Test] - public void Test_5112() - { - } - [Test] - public void Test_5113() - { - } - [Test] - public void Test_5114() - { - } - [Test] - public void Test_5115() - { - } - [Test] - public void Test_5116() - { - } - [Test] - public void Test_5117() - { - } - [Test] - public void Test_5118() - { - } - [Test] - public void Test_5119() - { - } - [Test] - public void Test_5120() - { - } - [Test] - public void Test_5121() - { - } - [Test] - public void Test_5122() - { - } - [Test] - public void Test_5123() - { - } - [Test] - public void Test_5124() - { - } - [Test] - public void Test_5125() - { - } - [Test] - public void Test_5126() - { - } - [Test] - public void Test_5127() - { - } - [Test] - public void Test_5128() - { - } - [Test] - public void Test_5129() - { - } - [Test] - public void Test_5130() - { - } - [Test] - public void Test_5131() - { - } - [Test] - public void Test_5132() - { - } - [Test] - public void Test_5133() - { - } - [Test] - public void Test_5134() - { - } - [Test] - public void Test_5135() - { - } - [Test] - public void Test_5136() - { - } - [Test] - public void Test_5137() - { - } - [Test] - public void Test_5138() - { - } - [Test] - public void Test_5139() - { - } - [Test] - public void Test_5140() - { - } - [Test] - public void Test_5141() - { - } - [Test] - public void Test_5142() - { - } - [Test] - public void Test_5143() - { - } - [Test] - public void Test_5144() - { - } - [Test] - public void Test_5145() - { - } - [Test] - public void Test_5146() - { - } - [Test] - public void Test_5147() - { - } - [Test] - public void Test_5148() - { - } - [Test] - public void Test_5149() - { - } - [Test] - public void Test_5150() - { - } - [Test] - public void Test_5151() - { - } - [Test] - public void Test_5152() - { - } - [Test] - public void Test_5153() - { - } - [Test] - public void Test_5154() - { - } - [Test] - public void Test_5155() - { - } - [Test] - public void Test_5156() - { - } - [Test] - public void Test_5157() - { - } - [Test] - public void Test_5158() - { - } - [Test] - public void Test_5159() - { - } - [Test] - public void Test_5160() - { - } - [Test] - public void Test_5161() - { - } - [Test] - public void Test_5162() - { - } - [Test] - public void Test_5163() - { - } - [Test] - public void Test_5164() - { - } - [Test] - public void Test_5165() - { - } - [Test] - public void Test_5166() - { - } - [Test] - public void Test_5167() - { - } - [Test] - public void Test_5168() - { - } - [Test] - public void Test_5169() - { - } - [Test] - public void Test_5170() - { - } - [Test] - public void Test_5171() - { - } - [Test] - public void Test_5172() - { - } - [Test] - public void Test_5173() - { - } - [Test] - public void Test_5174() - { - } - [Test] - public void Test_5175() - { - } - [Test] - public void Test_5176() - { - } - [Test] - public void Test_5177() - { - } - [Test] - public void Test_5178() - { - } - [Test] - public void Test_5179() - { - } - [Test] - public void Test_5180() - { - } - [Test] - public void Test_5181() - { - } - [Test] - public void Test_5182() - { - } - [Test] - public void Test_5183() - { - } - [Test] - public void Test_5184() - { - } - [Test] - public void Test_5185() - { - } - [Test] - public void Test_5186() - { - } - [Test] - public void Test_5187() - { - } - [Test] - public void Test_5188() - { - } - [Test] - public void Test_5189() - { - } - [Test] - public void Test_5190() - { - } - [Test] - public void Test_5191() - { - } - [Test] - public void Test_5192() - { - } - [Test] - public void Test_5193() - { - } - [Test] - public void Test_5194() - { - } - [Test] - public void Test_5195() - { - } - [Test] - public void Test_5196() - { - } - [Test] - public void Test_5197() - { - } - [Test] - public void Test_5198() - { - } - [Test] - public void Test_5199() - { - } - [Test] - public void Test_5200() - { - } - [Test] - public void Test_5201() - { - } - [Test] - public void Test_5202() - { - } - [Test] - public void Test_5203() - { - } - [Test] - public void Test_5204() - { - } - [Test] - public void Test_5205() - { - } - [Test] - public void Test_5206() - { - } - [Test] - public void Test_5207() - { - } - [Test] - public void Test_5208() - { - } - [Test] - public void Test_5209() - { - } - [Test] - public void Test_5210() - { - } - [Test] - public void Test_5211() - { - } - [Test] - public void Test_5212() - { - } - [Test] - public void Test_5213() - { - } - [Test] - public void Test_5214() - { - } - [Test] - public void Test_5215() - { - } - [Test] - public void Test_5216() - { - } - [Test] - public void Test_5217() - { - } - [Test] - public void Test_5218() - { - } - [Test] - public void Test_5219() - { - } - [Test] - public void Test_5220() - { - } - [Test] - public void Test_5221() - { - } - [Test] - public void Test_5222() - { - } - [Test] - public void Test_5223() - { - } - [Test] - public void Test_5224() - { - } - [Test] - public void Test_5225() - { - } - [Test] - public void Test_5226() - { - } - [Test] - public void Test_5227() - { - } - [Test] - public void Test_5228() - { - } - [Test] - public void Test_5229() - { - } - [Test] - public void Test_5230() - { - } - [Test] - public void Test_5231() - { - } - [Test] - public void Test_5232() - { - } - [Test] - public void Test_5233() - { - } - [Test] - public void Test_5234() - { - } - [Test] - public void Test_5235() - { - } - [Test] - public void Test_5236() - { - } - [Test] - public void Test_5237() - { - } - [Test] - public void Test_5238() - { - } - [Test] - public void Test_5239() - { - } - [Test] - public void Test_5240() - { - } - [Test] - public void Test_5241() - { - } - [Test] - public void Test_5242() - { - } - [Test] - public void Test_5243() - { - } - [Test] - public void Test_5244() - { - } - [Test] - public void Test_5245() - { - } - [Test] - public void Test_5246() - { - } - [Test] - public void Test_5247() - { - } - [Test] - public void Test_5248() - { - } - [Test] - public void Test_5249() - { - } - [Test] - public void Test_5250() - { - } - [Test] - public void Test_5251() - { - } - [Test] - public void Test_5252() - { - } - [Test] - public void Test_5253() - { - } - [Test] - public void Test_5254() - { - } - [Test] - public void Test_5255() - { - } - [Test] - public void Test_5256() - { - } - [Test] - public void Test_5257() - { - } - [Test] - public void Test_5258() - { - } - [Test] - public void Test_5259() - { - } - [Test] - public void Test_5260() - { - } - [Test] - public void Test_5261() - { - } - [Test] - public void Test_5262() - { - } - [Test] - public void Test_5263() - { - } - [Test] - public void Test_5264() - { - } - [Test] - public void Test_5265() - { - } - [Test] - public void Test_5266() - { - } - [Test] - public void Test_5267() - { - } - [Test] - public void Test_5268() - { - } - [Test] - public void Test_5269() - { - } - [Test] - public void Test_5270() - { - } - [Test] - public void Test_5271() - { - } - [Test] - public void Test_5272() - { - } - [Test] - public void Test_5273() - { - } - [Test] - public void Test_5274() - { - } - [Test] - public void Test_5275() - { - } - [Test] - public void Test_5276() - { - } - [Test] - public void Test_5277() - { - } - [Test] - public void Test_5278() - { - } - [Test] - public void Test_5279() - { - } - [Test] - public void Test_5280() - { - } - [Test] - public void Test_5281() - { - } - [Test] - public void Test_5282() - { - } - [Test] - public void Test_5283() - { - } - [Test] - public void Test_5284() - { - } - [Test] - public void Test_5285() - { - } - [Test] - public void Test_5286() - { - } - [Test] - public void Test_5287() - { - } - [Test] - public void Test_5288() - { - } - [Test] - public void Test_5289() - { - } - [Test] - public void Test_5290() - { - } - [Test] - public void Test_5291() - { - } - [Test] - public void Test_5292() - { - } - [Test] - public void Test_5293() - { - } - [Test] - public void Test_5294() - { - } - [Test] - public void Test_5295() - { - } - [Test] - public void Test_5296() - { - } - [Test] - public void Test_5297() - { - } - [Test] - public void Test_5298() - { - } - [Test] - public void Test_5299() - { - } - [Test] - public void Test_5300() - { - } - [Test] - public void Test_5301() - { - } - [Test] - public void Test_5302() - { - } - [Test] - public void Test_5303() - { - } - [Test] - public void Test_5304() - { - } - [Test] - public void Test_5305() - { - } - [Test] - public void Test_5306() - { - } - [Test] - public void Test_5307() - { - } - [Test] - public void Test_5308() - { - } - [Test] - public void Test_5309() - { - } - [Test] - public void Test_5310() - { - } - [Test] - public void Test_5311() - { - } - [Test] - public void Test_5312() - { - } - [Test] - public void Test_5313() - { - } - [Test] - public void Test_5314() - { - } - [Test] - public void Test_5315() - { - } - [Test] - public void Test_5316() - { - } - [Test] - public void Test_5317() - { - } - [Test] - public void Test_5318() - { - } - [Test] - public void Test_5319() - { - } - [Test] - public void Test_5320() - { - } - [Test] - public void Test_5321() - { - } - [Test] - public void Test_5322() - { - } - [Test] - public void Test_5323() - { - } - [Test] - public void Test_5324() - { - } - [Test] - public void Test_5325() - { - } - [Test] - public void Test_5326() - { - } - [Test] - public void Test_5327() - { - } - [Test] - public void Test_5328() - { - } - [Test] - public void Test_5329() - { - } - [Test] - public void Test_5330() - { - } - [Test] - public void Test_5331() - { - } - [Test] - public void Test_5332() - { - } - [Test] - public void Test_5333() - { - } - [Test] - public void Test_5334() - { - } - [Test] - public void Test_5335() - { - } - [Test] - public void Test_5336() - { - } - [Test] - public void Test_5337() - { - } - [Test] - public void Test_5338() - { - } - [Test] - public void Test_5339() - { - } - [Test] - public void Test_5340() - { - } - [Test] - public void Test_5341() - { - } - [Test] - public void Test_5342() - { - } - [Test] - public void Test_5343() - { - } - [Test] - public void Test_5344() - { - } - [Test] - public void Test_5345() - { - } - [Test] - public void Test_5346() - { - } - [Test] - public void Test_5347() - { - } - [Test] - public void Test_5348() - { - } - [Test] - public void Test_5349() - { - } - [Test] - public void Test_5350() - { - } - [Test] - public void Test_5351() - { - } - [Test] - public void Test_5352() - { - } - [Test] - public void Test_5353() - { - } - [Test] - public void Test_5354() - { - } - [Test] - public void Test_5355() - { - } - [Test] - public void Test_5356() - { - } - [Test] - public void Test_5357() - { - } - [Test] - public void Test_5358() - { - } - [Test] - public void Test_5359() - { - } - [Test] - public void Test_5360() - { - } - [Test] - public void Test_5361() - { - } - [Test] - public void Test_5362() - { - } - [Test] - public void Test_5363() - { - } - [Test] - public void Test_5364() - { - } - [Test] - public void Test_5365() - { - } - [Test] - public void Test_5366() - { - } - [Test] - public void Test_5367() - { - } - [Test] - public void Test_5368() - { - } - [Test] - public void Test_5369() - { - } - [Test] - public void Test_5370() - { - } - [Test] - public void Test_5371() - { - } - [Test] - public void Test_5372() - { - } - [Test] - public void Test_5373() - { - } - [Test] - public void Test_5374() - { - } - [Test] - public void Test_5375() - { - } - [Test] - public void Test_5376() - { - } - [Test] - public void Test_5377() - { - } - [Test] - public void Test_5378() - { - } - [Test] - public void Test_5379() - { - } - [Test] - public void Test_5380() - { - } - [Test] - public void Test_5381() - { - } - [Test] - public void Test_5382() - { - } - [Test] - public void Test_5383() - { - } - [Test] - public void Test_5384() - { - } - [Test] - public void Test_5385() - { - } - [Test] - public void Test_5386() - { - } - [Test] - public void Test_5387() - { - } - [Test] - public void Test_5388() - { - } - [Test] - public void Test_5389() - { - } - [Test] - public void Test_5390() - { - } - [Test] - public void Test_5391() - { - } - [Test] - public void Test_5392() - { - } - [Test] - public void Test_5393() - { - } - [Test] - public void Test_5394() - { - } - [Test] - public void Test_5395() - { - } - [Test] - public void Test_5396() - { - } - [Test] - public void Test_5397() - { - } - [Test] - public void Test_5398() - { - } - [Test] - public void Test_5399() - { - } - [Test] - public void Test_5400() - { - } - [Test] - public void Test_5401() - { - } - [Test] - public void Test_5402() - { - } - [Test] - public void Test_5403() - { - } - [Test] - public void Test_5404() - { - } - [Test] - public void Test_5405() - { - } - [Test] - public void Test_5406() - { - } - [Test] - public void Test_5407() - { - } - [Test] - public void Test_5408() - { - } - [Test] - public void Test_5409() - { - } - [Test] - public void Test_5410() - { - } - [Test] - public void Test_5411() - { - } - [Test] - public void Test_5412() - { - } - [Test] - public void Test_5413() - { - } - [Test] - public void Test_5414() - { - } - [Test] - public void Test_5415() - { - } - [Test] - public void Test_5416() - { - } - [Test] - public void Test_5417() - { - } - [Test] - public void Test_5418() - { - } - [Test] - public void Test_5419() - { - } - [Test] - public void Test_5420() - { - } - [Test] - public void Test_5421() - { - } - [Test] - public void Test_5422() - { - } - [Test] - public void Test_5423() - { - } - [Test] - public void Test_5424() - { - } - [Test] - public void Test_5425() - { - } - [Test] - public void Test_5426() - { - } - [Test] - public void Test_5427() - { - } - [Test] - public void Test_5428() - { - } - [Test] - public void Test_5429() - { - } - [Test] - public void Test_5430() - { - } - [Test] - public void Test_5431() - { - } - [Test] - public void Test_5432() - { - } - [Test] - public void Test_5433() - { - } - [Test] - public void Test_5434() - { - } - [Test] - public void Test_5435() - { - } - [Test] - public void Test_5436() - { - } - [Test] - public void Test_5437() - { - } - [Test] - public void Test_5438() - { - } - [Test] - public void Test_5439() - { - } - [Test] - public void Test_5440() - { - } - [Test] - public void Test_5441() - { - } - [Test] - public void Test_5442() - { - } - [Test] - public void Test_5443() - { - } - [Test] - public void Test_5444() - { - } - [Test] - public void Test_5445() - { - } - [Test] - public void Test_5446() - { - } - [Test] - public void Test_5447() - { - } - [Test] - public void Test_5448() - { - } - [Test] - public void Test_5449() - { - } - [Test] - public void Test_5450() - { - } - [Test] - public void Test_5451() - { - } - [Test] - public void Test_5452() - { - } - [Test] - public void Test_5453() - { - } - [Test] - public void Test_5454() - { - } - [Test] - public void Test_5455() - { - } - [Test] - public void Test_5456() - { - } - [Test] - public void Test_5457() - { - } - [Test] - public void Test_5458() - { - } - [Test] - public void Test_5459() - { - } - [Test] - public void Test_5460() - { - } - [Test] - public void Test_5461() - { - } - [Test] - public void Test_5462() - { - } - [Test] - public void Test_5463() - { - } - [Test] - public void Test_5464() - { - } - [Test] - public void Test_5465() - { - } - [Test] - public void Test_5466() - { - } - [Test] - public void Test_5467() - { - } - [Test] - public void Test_5468() - { - } - [Test] - public void Test_5469() - { - } - [Test] - public void Test_5470() - { - } - [Test] - public void Test_5471() - { - } - [Test] - public void Test_5472() - { - } - [Test] - public void Test_5473() - { - } - [Test] - public void Test_5474() - { - } - [Test] - public void Test_5475() - { - } - [Test] - public void Test_5476() - { - } - [Test] - public void Test_5477() - { - } - [Test] - public void Test_5478() - { - } - [Test] - public void Test_5479() - { - } - [Test] - public void Test_5480() - { - } - [Test] - public void Test_5481() - { - } - [Test] - public void Test_5482() - { - } - [Test] - public void Test_5483() - { - } - [Test] - public void Test_5484() - { - } - [Test] - public void Test_5485() - { - } - [Test] - public void Test_5486() - { - } - [Test] - public void Test_5487() - { - } - [Test] - public void Test_5488() - { - } - [Test] - public void Test_5489() - { - } - [Test] - public void Test_5490() - { - } - [Test] - public void Test_5491() - { - } - [Test] - public void Test_5492() - { - } - [Test] - public void Test_5493() - { - } - [Test] - public void Test_5494() - { - } - [Test] - public void Test_5495() - { - } - [Test] - public void Test_5496() - { - } - [Test] - public void Test_5497() - { - } - [Test] - public void Test_5498() - { - } - [Test] - public void Test_5499() - { - } - [Test] - public void Test_5500() - { - } - [Test] - public void Test_5501() - { - } - [Test] - public void Test_5502() - { - } - [Test] - public void Test_5503() - { - } - [Test] - public void Test_5504() - { - } - [Test] - public void Test_5505() - { - } - [Test] - public void Test_5506() - { - } - [Test] - public void Test_5507() - { - } - [Test] - public void Test_5508() - { - } - [Test] - public void Test_5509() - { - } - [Test] - public void Test_5510() - { - } - [Test] - public void Test_5511() - { - } - [Test] - public void Test_5512() - { - } - [Test] - public void Test_5513() - { - } - [Test] - public void Test_5514() - { - } - [Test] - public void Test_5515() - { - } - [Test] - public void Test_5516() - { - } - [Test] - public void Test_5517() - { - } - [Test] - public void Test_5518() - { - } - [Test] - public void Test_5519() - { - } - [Test] - public void Test_5520() - { - } - [Test] - public void Test_5521() - { - } - [Test] - public void Test_5522() - { - } - [Test] - public void Test_5523() - { - } - [Test] - public void Test_5524() - { - } - [Test] - public void Test_5525() - { - } - [Test] - public void Test_5526() - { - } - [Test] - public void Test_5527() - { - } - [Test] - public void Test_5528() - { - } - [Test] - public void Test_5529() - { - } - [Test] - public void Test_5530() - { - } - [Test] - public void Test_5531() - { - } - [Test] - public void Test_5532() - { - } - [Test] - public void Test_5533() - { - } - [Test] - public void Test_5534() - { - } - [Test] - public void Test_5535() - { - } - [Test] - public void Test_5536() - { - } - [Test] - public void Test_5537() - { - } - [Test] - public void Test_5538() - { - } - [Test] - public void Test_5539() - { - } - [Test] - public void Test_5540() - { - } - [Test] - public void Test_5541() - { - } - [Test] - public void Test_5542() - { - } - [Test] - public void Test_5543() - { - } - [Test] - public void Test_5544() - { - } - [Test] - public void Test_5545() - { - } - [Test] - public void Test_5546() - { - } - [Test] - public void Test_5547() - { - } - [Test] - public void Test_5548() - { - } - [Test] - public void Test_5549() - { - } - [Test] - public void Test_5550() - { - } - [Test] - public void Test_5551() - { - } - [Test] - public void Test_5552() - { - } - [Test] - public void Test_5553() - { - } - [Test] - public void Test_5554() - { - } - [Test] - public void Test_5555() - { - } - [Test] - public void Test_5556() - { - } - [Test] - public void Test_5557() - { - } - [Test] - public void Test_5558() - { - } - [Test] - public void Test_5559() - { - } - [Test] - public void Test_5560() - { - } - [Test] - public void Test_5561() - { - } - [Test] - public void Test_5562() - { - } - [Test] - public void Test_5563() - { - } - [Test] - public void Test_5564() - { - } - [Test] - public void Test_5565() - { - } - [Test] - public void Test_5566() - { - } - [Test] - public void Test_5567() - { - } - [Test] - public void Test_5568() - { - } - [Test] - public void Test_5569() - { - } - [Test] - public void Test_5570() - { - } - [Test] - public void Test_5571() - { - } - [Test] - public void Test_5572() - { - } - [Test] - public void Test_5573() - { - } - [Test] - public void Test_5574() - { - } - [Test] - public void Test_5575() - { - } - [Test] - public void Test_5576() - { - } - [Test] - public void Test_5577() - { - } - [Test] - public void Test_5578() - { - } - [Test] - public void Test_5579() - { - } - [Test] - public void Test_5580() - { - } - [Test] - public void Test_5581() - { - } - [Test] - public void Test_5582() - { - } - [Test] - public void Test_5583() - { - } - [Test] - public void Test_5584() - { - } - [Test] - public void Test_5585() - { - } - [Test] - public void Test_5586() - { - } - [Test] - public void Test_5587() - { - } - [Test] - public void Test_5588() - { - } - [Test] - public void Test_5589() - { - } - [Test] - public void Test_5590() - { - } - [Test] - public void Test_5591() - { - } - [Test] - public void Test_5592() - { - } - [Test] - public void Test_5593() - { - } - [Test] - public void Test_5594() - { - } - [Test] - public void Test_5595() - { - } - [Test] - public void Test_5596() - { - } - [Test] - public void Test_5597() - { - } - [Test] - public void Test_5598() - { - } - [Test] - public void Test_5599() - { - } - [Test] - public void Test_5600() - { - } - [Test] - public void Test_5601() - { - } - [Test] - public void Test_5602() - { - } - [Test] - public void Test_5603() - { - } - [Test] - public void Test_5604() - { - } - [Test] - public void Test_5605() - { - } - [Test] - public void Test_5606() - { - } - [Test] - public void Test_5607() - { - } - [Test] - public void Test_5608() - { - } - [Test] - public void Test_5609() - { - } - [Test] - public void Test_5610() - { - } - [Test] - public void Test_5611() - { - } - [Test] - public void Test_5612() - { - } - [Test] - public void Test_5613() - { - } - [Test] - public void Test_5614() - { - } - [Test] - public void Test_5615() - { - } - [Test] - public void Test_5616() - { - } - [Test] - public void Test_5617() - { - } - [Test] - public void Test_5618() - { - } - [Test] - public void Test_5619() - { - } - [Test] - public void Test_5620() - { - } - [Test] - public void Test_5621() - { - } - [Test] - public void Test_5622() - { - } - [Test] - public void Test_5623() - { - } - [Test] - public void Test_5624() - { - } - [Test] - public void Test_5625() - { - } - [Test] - public void Test_5626() - { - } - [Test] - public void Test_5627() - { - } - [Test] - public void Test_5628() - { - } - [Test] - public void Test_5629() - { - } - [Test] - public void Test_5630() - { - } - [Test] - public void Test_5631() - { - } - [Test] - public void Test_5632() - { - } - [Test] - public void Test_5633() - { - } - [Test] - public void Test_5634() - { - } - [Test] - public void Test_5635() - { - } - [Test] - public void Test_5636() - { - } - [Test] - public void Test_5637() - { - } - [Test] - public void Test_5638() - { - } - [Test] - public void Test_5639() - { - } - [Test] - public void Test_5640() - { - } - [Test] - public void Test_5641() - { - } - [Test] - public void Test_5642() - { - } - [Test] - public void Test_5643() - { - } - [Test] - public void Test_5644() - { - } - [Test] - public void Test_5645() - { - } - [Test] - public void Test_5646() - { - } - [Test] - public void Test_5647() - { - } - [Test] - public void Test_5648() - { - } - [Test] - public void Test_5649() - { - } - [Test] - public void Test_5650() - { - } - [Test] - public void Test_5651() - { - } - [Test] - public void Test_5652() - { - } - [Test] - public void Test_5653() - { - } - [Test] - public void Test_5654() - { - } - [Test] - public void Test_5655() - { - } - [Test] - public void Test_5656() - { - } - [Test] - public void Test_5657() - { - } - [Test] - public void Test_5658() - { - } - [Test] - public void Test_5659() - { - } - [Test] - public void Test_5660() - { - } - [Test] - public void Test_5661() - { - } - [Test] - public void Test_5662() - { - } - [Test] - public void Test_5663() - { - } - [Test] - public void Test_5664() - { - } - [Test] - public void Test_5665() - { - } - [Test] - public void Test_5666() - { - } - [Test] - public void Test_5667() - { - } - [Test] - public void Test_5668() - { - } - [Test] - public void Test_5669() - { - } - [Test] - public void Test_5670() - { - } - [Test] - public void Test_5671() - { - } - [Test] - public void Test_5672() - { - } - [Test] - public void Test_5673() - { - } - [Test] - public void Test_5674() - { - } - [Test] - public void Test_5675() - { - } - [Test] - public void Test_5676() - { - } - [Test] - public void Test_5677() - { - } - [Test] - public void Test_5678() - { - } - [Test] - public void Test_5679() - { - } - [Test] - public void Test_5680() - { - } - [Test] - public void Test_5681() - { - } - [Test] - public void Test_5682() - { - } - [Test] - public void Test_5683() - { - } - [Test] - public void Test_5684() - { - } - [Test] - public void Test_5685() - { - } - [Test] - public void Test_5686() - { - } - [Test] - public void Test_5687() - { - } - [Test] - public void Test_5688() - { - } - [Test] - public void Test_5689() - { - } - [Test] - public void Test_5690() - { - } - [Test] - public void Test_5691() - { - } - [Test] - public void Test_5692() - { - } - [Test] - public void Test_5693() - { - } - [Test] - public void Test_5694() - { - } - [Test] - public void Test_5695() - { - } - [Test] - public void Test_5696() - { - } - [Test] - public void Test_5697() - { - } - [Test] - public void Test_5698() - { - } - [Test] - public void Test_5699() - { - } - [Test] - public void Test_5700() - { - } - [Test] - public void Test_5701() - { - } - [Test] - public void Test_5702() - { - } - [Test] - public void Test_5703() - { - } - [Test] - public void Test_5704() - { - } - [Test] - public void Test_5705() - { - } - [Test] - public void Test_5706() - { - } - [Test] - public void Test_5707() - { - } - [Test] - public void Test_5708() - { - } - [Test] - public void Test_5709() - { - } - [Test] - public void Test_5710() - { - } - [Test] - public void Test_5711() - { - } - [Test] - public void Test_5712() - { - } - [Test] - public void Test_5713() - { - } - [Test] - public void Test_5714() - { - } - [Test] - public void Test_5715() - { - } - [Test] - public void Test_5716() - { - } - [Test] - public void Test_5717() - { - } - [Test] - public void Test_5718() - { - } - [Test] - public void Test_5719() - { - } - [Test] - public void Test_5720() - { - } - [Test] - public void Test_5721() - { - } - [Test] - public void Test_5722() - { - } - [Test] - public void Test_5723() - { - } - [Test] - public void Test_5724() - { - } - [Test] - public void Test_5725() - { - } - [Test] - public void Test_5726() - { - } - [Test] - public void Test_5727() - { - } - [Test] - public void Test_5728() - { - } - [Test] - public void Test_5729() - { - } - [Test] - public void Test_5730() - { - } - [Test] - public void Test_5731() - { - } - [Test] - public void Test_5732() - { - } - [Test] - public void Test_5733() - { - } - [Test] - public void Test_5734() - { - } - [Test] - public void Test_5735() - { - } - [Test] - public void Test_5736() - { - } - [Test] - public void Test_5737() - { - } - [Test] - public void Test_5738() - { - } - [Test] - public void Test_5739() - { - } - [Test] - public void Test_5740() - { - } - [Test] - public void Test_5741() - { - } - [Test] - public void Test_5742() - { - } - [Test] - public void Test_5743() - { - } - [Test] - public void Test_5744() - { - } - [Test] - public void Test_5745() - { - } - [Test] - public void Test_5746() - { - } - [Test] - public void Test_5747() - { - } - [Test] - public void Test_5748() - { - } - [Test] - public void Test_5749() - { - } - [Test] - public void Test_5750() - { - } - [Test] - public void Test_5751() - { - } - [Test] - public void Test_5752() - { - } - [Test] - public void Test_5753() - { - } - [Test] - public void Test_5754() - { - } - [Test] - public void Test_5755() - { - } - [Test] - public void Test_5756() - { - } - [Test] - public void Test_5757() - { - } - [Test] - public void Test_5758() - { - } - [Test] - public void Test_5759() - { - } - [Test] - public void Test_5760() - { - } - [Test] - public void Test_5761() - { - } - [Test] - public void Test_5762() - { - } - [Test] - public void Test_5763() - { - } - [Test] - public void Test_5764() - { - } - [Test] - public void Test_5765() - { - } - [Test] - public void Test_5766() - { - } - [Test] - public void Test_5767() - { - } - [Test] - public void Test_5768() - { - } - [Test] - public void Test_5769() - { - } - [Test] - public void Test_5770() - { - } - [Test] - public void Test_5771() - { - } - [Test] - public void Test_5772() - { - } - [Test] - public void Test_5773() - { - } - [Test] - public void Test_5774() - { - } - [Test] - public void Test_5775() - { - } - [Test] - public void Test_5776() - { - } - [Test] - public void Test_5777() - { - } - [Test] - public void Test_5778() - { - } - [Test] - public void Test_5779() - { - } - [Test] - public void Test_5780() - { - } - [Test] - public void Test_5781() - { - } - [Test] - public void Test_5782() - { - } - [Test] - public void Test_5783() - { - } - [Test] - public void Test_5784() - { - } - [Test] - public void Test_5785() - { - } - [Test] - public void Test_5786() - { - } - [Test] - public void Test_5787() - { - } - [Test] - public void Test_5788() - { - } - [Test] - public void Test_5789() - { - } - [Test] - public void Test_5790() - { - } - [Test] - public void Test_5791() - { - } - [Test] - public void Test_5792() - { - } - [Test] - public void Test_5793() - { - } - [Test] - public void Test_5794() - { - } - [Test] - public void Test_5795() - { - } - [Test] - public void Test_5796() - { - } - [Test] - public void Test_5797() - { - } - [Test] - public void Test_5798() - { - } - [Test] - public void Test_5799() - { - } - [Test] - public void Test_5800() - { - } - [Test] - public void Test_5801() - { - } - [Test] - public void Test_5802() - { - } - [Test] - public void Test_5803() - { - } - [Test] - public void Test_5804() - { - } - [Test] - public void Test_5805() - { - } - [Test] - public void Test_5806() - { - } - [Test] - public void Test_5807() - { - } - [Test] - public void Test_5808() - { - } - [Test] - public void Test_5809() - { - } - [Test] - public void Test_5810() - { - } - [Test] - public void Test_5811() - { - } - [Test] - public void Test_5812() - { - } - [Test] - public void Test_5813() - { - } - [Test] - public void Test_5814() - { - } - [Test] - public void Test_5815() - { - } - [Test] - public void Test_5816() - { - } - [Test] - public void Test_5817() - { - } - [Test] - public void Test_5818() - { - } - [Test] - public void Test_5819() - { - } - [Test] - public void Test_5820() - { - } - [Test] - public void Test_5821() - { - } - [Test] - public void Test_5822() - { - } - [Test] - public void Test_5823() - { - } - [Test] - public void Test_5824() - { - } - [Test] - public void Test_5825() - { - } - [Test] - public void Test_5826() - { - } - [Test] - public void Test_5827() - { - } - [Test] - public void Test_5828() - { - } - [Test] - public void Test_5829() - { - } - [Test] - public void Test_5830() - { - } - [Test] - public void Test_5831() - { - } - [Test] - public void Test_5832() - { - } - [Test] - public void Test_5833() - { - } - [Test] - public void Test_5834() - { - } - [Test] - public void Test_5835() - { - } - [Test] - public void Test_5836() - { - } - [Test] - public void Test_5837() - { - } - [Test] - public void Test_5838() - { - } - [Test] - public void Test_5839() - { - } - [Test] - public void Test_5840() - { - } - [Test] - public void Test_5841() - { - } - [Test] - public void Test_5842() - { - } - [Test] - public void Test_5843() - { - } - [Test] - public void Test_5844() - { - } - [Test] - public void Test_5845() - { - } - [Test] - public void Test_5846() - { - } - [Test] - public void Test_5847() - { - } - [Test] - public void Test_5848() - { - } - [Test] - public void Test_5849() - { - } - [Test] - public void Test_5850() - { - } - [Test] - public void Test_5851() - { - } - [Test] - public void Test_5852() - { - } - [Test] - public void Test_5853() - { - } - [Test] - public void Test_5854() - { - } - [Test] - public void Test_5855() - { - } - [Test] - public void Test_5856() - { - } - [Test] - public void Test_5857() - { - } - [Test] - public void Test_5858() - { - } - [Test] - public void Test_5859() - { - } - [Test] - public void Test_5860() - { - } - [Test] - public void Test_5861() - { - } - [Test] - public void Test_5862() - { - } - [Test] - public void Test_5863() - { - } - [Test] - public void Test_5864() - { - } - [Test] - public void Test_5865() - { - } - [Test] - public void Test_5866() - { - } - [Test] - public void Test_5867() - { - } - [Test] - public void Test_5868() - { - } - [Test] - public void Test_5869() - { - } - [Test] - public void Test_5870() - { - } - [Test] - public void Test_5871() - { - } - [Test] - public void Test_5872() - { - } - [Test] - public void Test_5873() - { - } - [Test] - public void Test_5874() - { - } - [Test] - public void Test_5875() - { - } - [Test] - public void Test_5876() - { - } - [Test] - public void Test_5877() - { - } - [Test] - public void Test_5878() - { - } - [Test] - public void Test_5879() - { - } - [Test] - public void Test_5880() - { - } - [Test] - public void Test_5881() - { - } - [Test] - public void Test_5882() - { - } - [Test] - public void Test_5883() - { - } - [Test] - public void Test_5884() - { - } - [Test] - public void Test_5885() - { - } - [Test] - public void Test_5886() - { - } - [Test] - public void Test_5887() - { - } - [Test] - public void Test_5888() - { - } - [Test] - public void Test_5889() - { - } - [Test] - public void Test_5890() - { - } - [Test] - public void Test_5891() - { - } - [Test] - public void Test_5892() - { - } - [Test] - public void Test_5893() - { - } - [Test] - public void Test_5894() - { - } - [Test] - public void Test_5895() - { - } - [Test] - public void Test_5896() - { - } - [Test] - public void Test_5897() - { - } - [Test] - public void Test_5898() - { - } - [Test] - public void Test_5899() - { - } - [Test] - public void Test_5900() - { - } - [Test] - public void Test_5901() - { - } - [Test] - public void Test_5902() - { - } - [Test] - public void Test_5903() - { - } - [Test] - public void Test_5904() - { - } - [Test] - public void Test_5905() - { - } - [Test] - public void Test_5906() - { - } - [Test] - public void Test_5907() - { - } - [Test] - public void Test_5908() - { - } - [Test] - public void Test_5909() - { - } - [Test] - public void Test_5910() - { - } - [Test] - public void Test_5911() - { - } - [Test] - public void Test_5912() - { - } - [Test] - public void Test_5913() - { - } - [Test] - public void Test_5914() - { - } - [Test] - public void Test_5915() - { - } - [Test] - public void Test_5916() - { - } - [Test] - public void Test_5917() - { - } - [Test] - public void Test_5918() - { - } - [Test] - public void Test_5919() - { - } - [Test] - public void Test_5920() - { - } - [Test] - public void Test_5921() - { - } - [Test] - public void Test_5922() - { - } - [Test] - public void Test_5923() - { - } - [Test] - public void Test_5924() - { - } - [Test] - public void Test_5925() - { - } - [Test] - public void Test_5926() - { - } - [Test] - public void Test_5927() - { - } - [Test] - public void Test_5928() - { - } - [Test] - public void Test_5929() - { - } - [Test] - public void Test_5930() - { - } - [Test] - public void Test_5931() - { - } - [Test] - public void Test_5932() - { - } - [Test] - public void Test_5933() - { - } - [Test] - public void Test_5934() - { - } - [Test] - public void Test_5935() - { - } - [Test] - public void Test_5936() - { - } - [Test] - public void Test_5937() - { - } - [Test] - public void Test_5938() - { - } - [Test] - public void Test_5939() - { - } - [Test] - public void Test_5940() - { - } - [Test] - public void Test_5941() - { - } - [Test] - public void Test_5942() - { - } - [Test] - public void Test_5943() - { - } - [Test] - public void Test_5944() - { - } - [Test] - public void Test_5945() - { - } - [Test] - public void Test_5946() - { - } - [Test] - public void Test_5947() - { - } - [Test] - public void Test_5948() - { - } - [Test] - public void Test_5949() - { - } - [Test] - public void Test_5950() - { - } - [Test] - public void Test_5951() - { - } - [Test] - public void Test_5952() - { - } - [Test] - public void Test_5953() - { - } - [Test] - public void Test_5954() - { - } - [Test] - public void Test_5955() - { - } - [Test] - public void Test_5956() - { - } - [Test] - public void Test_5957() - { - } - [Test] - public void Test_5958() - { - } - [Test] - public void Test_5959() - { - } - [Test] - public void Test_5960() - { - } - [Test] - public void Test_5961() - { - } - [Test] - public void Test_5962() - { - } - [Test] - public void Test_5963() - { - } - [Test] - public void Test_5964() - { - } - [Test] - public void Test_5965() - { - } - [Test] - public void Test_5966() - { - } - [Test] - public void Test_5967() - { - } - [Test] - public void Test_5968() - { - } - [Test] - public void Test_5969() - { - } - [Test] - public void Test_5970() - { - } - [Test] - public void Test_5971() - { - } - [Test] - public void Test_5972() - { - } - [Test] - public void Test_5973() - { - } - [Test] - public void Test_5974() - { - } - [Test] - public void Test_5975() - { - } - [Test] - public void Test_5976() - { - } - [Test] - public void Test_5977() - { - } - [Test] - public void Test_5978() - { - } - [Test] - public void Test_5979() - { - } - [Test] - public void Test_5980() - { - } - [Test] - public void Test_5981() - { - } - [Test] - public void Test_5982() - { - } - [Test] - public void Test_5983() - { - } - [Test] - public void Test_5984() - { - } - [Test] - public void Test_5985() - { - } - [Test] - public void Test_5986() - { - } - [Test] - public void Test_5987() - { - } - [Test] - public void Test_5988() - { - } - [Test] - public void Test_5989() - { - } - [Test] - public void Test_5990() - { - } - [Test] - public void Test_5991() - { - } - [Test] - public void Test_5992() - { - } - [Test] - public void Test_5993() - { - } - [Test] - public void Test_5994() - { - } - [Test] - public void Test_5995() - { - } - [Test] - public void Test_5996() - { - } - [Test] - public void Test_5997() - { - } - [Test] - public void Test_5998() - { - } - [Test] - public void Test_5999() - { - } - [Test] - public void Test_6000() - { - } - [Test] - public void Test_6001() - { - } - [Test] - public void Test_6002() - { - } - [Test] - public void Test_6003() - { - } - [Test] - public void Test_6004() - { - } - [Test] - public void Test_6005() - { - } - [Test] - public void Test_6006() - { - } - [Test] - public void Test_6007() - { - } - [Test] - public void Test_6008() - { - } - [Test] - public void Test_6009() - { - } - [Test] - public void Test_6010() - { - } - [Test] - public void Test_6011() - { - } - [Test] - public void Test_6012() - { - } - [Test] - public void Test_6013() - { - } - [Test] - public void Test_6014() - { - } - [Test] - public void Test_6015() - { - } - [Test] - public void Test_6016() - { - } - [Test] - public void Test_6017() - { - } - [Test] - public void Test_6018() - { - } - [Test] - public void Test_6019() - { - } - [Test] - public void Test_6020() - { - } - [Test] - public void Test_6021() - { - } - [Test] - public void Test_6022() - { - } - [Test] - public void Test_6023() - { - } - [Test] - public void Test_6024() - { - } - [Test] - public void Test_6025() - { - } - [Test] - public void Test_6026() - { - } - [Test] - public void Test_6027() - { - } - [Test] - public void Test_6028() - { - } - [Test] - public void Test_6029() - { - } - [Test] - public void Test_6030() - { - } - [Test] - public void Test_6031() - { - } - [Test] - public void Test_6032() - { - } - [Test] - public void Test_6033() - { - } - [Test] - public void Test_6034() - { - } - [Test] - public void Test_6035() - { - } - [Test] - public void Test_6036() - { - } - [Test] - public void Test_6037() - { - } - [Test] - public void Test_6038() - { - } - [Test] - public void Test_6039() - { - } - [Test] - public void Test_6040() - { - } - [Test] - public void Test_6041() - { - } - [Test] - public void Test_6042() - { - } - [Test] - public void Test_6043() - { - } - [Test] - public void Test_6044() - { - } - [Test] - public void Test_6045() - { - } - [Test] - public void Test_6046() - { - } - [Test] - public void Test_6047() - { - } - [Test] - public void Test_6048() - { - } - [Test] - public void Test_6049() - { - } - [Test] - public void Test_6050() - { - } - [Test] - public void Test_6051() - { - } - [Test] - public void Test_6052() - { - } - [Test] - public void Test_6053() - { - } - [Test] - public void Test_6054() - { - } - [Test] - public void Test_6055() - { - } - [Test] - public void Test_6056() - { - } - [Test] - public void Test_6057() - { - } - [Test] - public void Test_6058() - { - } - [Test] - public void Test_6059() - { - } - [Test] - public void Test_6060() - { - } - [Test] - public void Test_6061() - { - } - [Test] - public void Test_6062() - { - } - [Test] - public void Test_6063() - { - } - [Test] - public void Test_6064() - { - } - [Test] - public void Test_6065() - { - } - [Test] - public void Test_6066() - { - } - [Test] - public void Test_6067() - { - } - [Test] - public void Test_6068() - { - } - [Test] - public void Test_6069() - { - } - [Test] - public void Test_6070() - { - } - [Test] - public void Test_6071() - { - } - [Test] - public void Test_6072() - { - } - [Test] - public void Test_6073() - { - } - [Test] - public void Test_6074() - { - } - [Test] - public void Test_6075() - { - } - [Test] - public void Test_6076() - { - } - [Test] - public void Test_6077() - { - } - [Test] - public void Test_6078() - { - } - [Test] - public void Test_6079() - { - } - [Test] - public void Test_6080() - { - } - [Test] - public void Test_6081() - { - } - [Test] - public void Test_6082() - { - } - [Test] - public void Test_6083() - { - } - [Test] - public void Test_6084() - { - } - [Test] - public void Test_6085() - { - } - [Test] - public void Test_6086() - { - } - [Test] - public void Test_6087() - { - } - [Test] - public void Test_6088() - { - } - [Test] - public void Test_6089() - { - } - [Test] - public void Test_6090() - { - } - [Test] - public void Test_6091() - { - } - [Test] - public void Test_6092() - { - } - [Test] - public void Test_6093() - { - } - [Test] - public void Test_6094() - { - } - [Test] - public void Test_6095() - { - } - [Test] - public void Test_6096() - { - } - [Test] - public void Test_6097() - { - } - [Test] - public void Test_6098() - { - } - [Test] - public void Test_6099() - { - } - [Test] - public void Test_6100() - { - } - [Test] - public void Test_6101() - { - } - [Test] - public void Test_6102() - { - } - [Test] - public void Test_6103() - { - } - [Test] - public void Test_6104() - { - } - [Test] - public void Test_6105() - { - } - [Test] - public void Test_6106() - { - } - [Test] - public void Test_6107() - { - } - [Test] - public void Test_6108() - { - } - [Test] - public void Test_6109() - { - } - [Test] - public void Test_6110() - { - } - [Test] - public void Test_6111() - { - } - [Test] - public void Test_6112() - { - } - [Test] - public void Test_6113() - { - } - [Test] - public void Test_6114() - { - } - [Test] - public void Test_6115() - { - } - [Test] - public void Test_6116() - { - } - [Test] - public void Test_6117() - { - } - [Test] - public void Test_6118() - { - } - [Test] - public void Test_6119() - { - } - [Test] - public void Test_6120() - { - } - [Test] - public void Test_6121() - { - } - [Test] - public void Test_6122() - { - } - [Test] - public void Test_6123() - { - } - [Test] - public void Test_6124() - { - } - [Test] - public void Test_6125() - { - } - [Test] - public void Test_6126() - { - } - [Test] - public void Test_6127() - { - } - [Test] - public void Test_6128() - { - } - [Test] - public void Test_6129() - { - } - [Test] - public void Test_6130() - { - } - [Test] - public void Test_6131() - { - } - [Test] - public void Test_6132() - { - } - [Test] - public void Test_6133() - { - } - [Test] - public void Test_6134() - { - } - [Test] - public void Test_6135() - { - } - [Test] - public void Test_6136() - { - } - [Test] - public void Test_6137() - { - } - [Test] - public void Test_6138() - { - } - [Test] - public void Test_6139() - { - } - [Test] - public void Test_6140() - { - } - [Test] - public void Test_6141() - { - } - [Test] - public void Test_6142() - { - } - [Test] - public void Test_6143() - { - } - [Test] - public void Test_6144() - { - } - [Test] - public void Test_6145() - { - } - [Test] - public void Test_6146() - { - } - [Test] - public void Test_6147() - { - } - [Test] - public void Test_6148() - { - } - [Test] - public void Test_6149() - { - } - [Test] - public void Test_6150() - { - } - [Test] - public void Test_6151() - { - } - [Test] - public void Test_6152() - { - } - [Test] - public void Test_6153() - { - } - [Test] - public void Test_6154() - { - } - [Test] - public void Test_6155() - { - } - [Test] - public void Test_6156() - { - } - [Test] - public void Test_6157() - { - } - [Test] - public void Test_6158() - { - } - [Test] - public void Test_6159() - { - } - [Test] - public void Test_6160() - { - } - [Test] - public void Test_6161() - { - } - [Test] - public void Test_6162() - { - } - [Test] - public void Test_6163() - { - } - [Test] - public void Test_6164() - { - } - [Test] - public void Test_6165() - { - } - [Test] - public void Test_6166() - { - } - [Test] - public void Test_6167() - { - } - [Test] - public void Test_6168() - { - } - [Test] - public void Test_6169() - { - } - [Test] - public void Test_6170() - { - } - [Test] - public void Test_6171() - { - } - [Test] - public void Test_6172() - { - } - [Test] - public void Test_6173() - { - } - [Test] - public void Test_6174() - { - } - [Test] - public void Test_6175() - { - } - [Test] - public void Test_6176() - { - } - [Test] - public void Test_6177() - { - } - [Test] - public void Test_6178() - { - } - [Test] - public void Test_6179() - { - } - [Test] - public void Test_6180() - { - } - [Test] - public void Test_6181() - { - } - [Test] - public void Test_6182() - { - } - [Test] - public void Test_6183() - { - } - [Test] - public void Test_6184() - { - } - [Test] - public void Test_6185() - { - } - [Test] - public void Test_6186() - { - } - [Test] - public void Test_6187() - { - } - [Test] - public void Test_6188() - { - } - [Test] - public void Test_6189() - { - } - [Test] - public void Test_6190() - { - } - [Test] - public void Test_6191() - { - } - [Test] - public void Test_6192() - { - } - [Test] - public void Test_6193() - { - } - [Test] - public void Test_6194() - { - } - [Test] - public void Test_6195() - { - } - [Test] - public void Test_6196() - { - } - [Test] - public void Test_6197() - { - } - [Test] - public void Test_6198() - { - } - [Test] - public void Test_6199() - { - } - [Test] - public void Test_6200() - { - } - [Test] - public void Test_6201() - { - } - [Test] - public void Test_6202() - { - } - [Test] - public void Test_6203() - { - } - [Test] - public void Test_6204() - { - } - [Test] - public void Test_6205() - { - } - [Test] - public void Test_6206() - { - } - [Test] - public void Test_6207() - { - } - [Test] - public void Test_6208() - { - } - [Test] - public void Test_6209() - { - } - [Test] - public void Test_6210() - { - } - [Test] - public void Test_6211() - { - } - [Test] - public void Test_6212() - { - } - [Test] - public void Test_6213() - { - } - [Test] - public void Test_6214() - { - } - [Test] - public void Test_6215() - { - } - [Test] - public void Test_6216() - { - } - [Test] - public void Test_6217() - { - } - [Test] - public void Test_6218() - { - } - [Test] - public void Test_6219() - { - } - [Test] - public void Test_6220() - { - } - [Test] - public void Test_6221() - { - } - [Test] - public void Test_6222() - { - } - [Test] - public void Test_6223() - { - } - [Test] - public void Test_6224() - { - } - [Test] - public void Test_6225() - { - } - [Test] - public void Test_6226() - { - } - [Test] - public void Test_6227() - { - } - [Test] - public void Test_6228() - { - } - [Test] - public void Test_6229() - { - } - [Test] - public void Test_6230() - { - } - [Test] - public void Test_6231() - { - } - [Test] - public void Test_6232() - { - } - [Test] - public void Test_6233() - { - } - [Test] - public void Test_6234() - { - } - [Test] - public void Test_6235() - { - } - [Test] - public void Test_6236() - { - } - [Test] - public void Test_6237() - { - } - [Test] - public void Test_6238() - { - } - [Test] - public void Test_6239() - { - } - [Test] - public void Test_6240() - { - } - [Test] - public void Test_6241() - { - } - [Test] - public void Test_6242() - { - } - [Test] - public void Test_6243() - { - } - [Test] - public void Test_6244() - { - } - [Test] - public void Test_6245() - { - } - [Test] - public void Test_6246() - { - } - [Test] - public void Test_6247() - { - } - [Test] - public void Test_6248() - { - } - [Test] - public void Test_6249() - { - } - [Test] - public void Test_6250() - { - } - [Test] - public void Test_6251() - { - } - [Test] - public void Test_6252() - { - } - [Test] - public void Test_6253() - { - } - [Test] - public void Test_6254() - { - } - [Test] - public void Test_6255() - { - } - [Test] - public void Test_6256() - { - } - [Test] - public void Test_6257() - { - } - [Test] - public void Test_6258() - { - } - [Test] - public void Test_6259() - { - } - [Test] - public void Test_6260() - { - } - [Test] - public void Test_6261() - { - } - [Test] - public void Test_6262() - { - } - [Test] - public void Test_6263() - { - } - [Test] - public void Test_6264() - { - } - [Test] - public void Test_6265() - { - } - [Test] - public void Test_6266() - { - } - [Test] - public void Test_6267() - { - } - [Test] - public void Test_6268() - { - } - [Test] - public void Test_6269() - { - } - [Test] - public void Test_6270() - { - } - [Test] - public void Test_6271() - { - } - [Test] - public void Test_6272() - { - } - [Test] - public void Test_6273() - { - } - [Test] - public void Test_6274() - { - } - [Test] - public void Test_6275() - { - } - [Test] - public void Test_6276() - { - } - [Test] - public void Test_6277() - { - } - [Test] - public void Test_6278() - { - } - [Test] - public void Test_6279() - { - } - [Test] - public void Test_6280() - { - } - [Test] - public void Test_6281() - { - } - [Test] - public void Test_6282() - { - } - [Test] - public void Test_6283() - { - } - [Test] - public void Test_6284() - { - } - [Test] - public void Test_6285() - { - } - [Test] - public void Test_6286() - { - } - [Test] - public void Test_6287() - { - } - [Test] - public void Test_6288() - { - } - [Test] - public void Test_6289() - { - } - [Test] - public void Test_6290() - { - } - [Test] - public void Test_6291() - { - } - [Test] - public void Test_6292() - { - } - [Test] - public void Test_6293() - { - } - [Test] - public void Test_6294() - { - } - [Test] - public void Test_6295() - { - } - [Test] - public void Test_6296() - { - } - [Test] - public void Test_6297() - { - } - [Test] - public void Test_6298() - { - } - [Test] - public void Test_6299() - { - } - [Test] - public void Test_6300() - { - } - [Test] - public void Test_6301() - { - } - [Test] - public void Test_6302() - { - } - [Test] - public void Test_6303() - { - } - [Test] - public void Test_6304() - { - } - [Test] - public void Test_6305() - { - } - [Test] - public void Test_6306() - { - } - [Test] - public void Test_6307() - { - } - [Test] - public void Test_6308() - { - } - [Test] - public void Test_6309() - { - } - [Test] - public void Test_6310() - { - } - [Test] - public void Test_6311() - { - } - [Test] - public void Test_6312() - { - } - [Test] - public void Test_6313() - { - } - [Test] - public void Test_6314() - { - } - [Test] - public void Test_6315() - { - } - [Test] - public void Test_6316() - { - } - [Test] - public void Test_6317() - { - } - [Test] - public void Test_6318() - { - } - [Test] - public void Test_6319() - { - } - [Test] - public void Test_6320() - { - } - [Test] - public void Test_6321() - { - } - [Test] - public void Test_6322() - { - } - [Test] - public void Test_6323() - { - } - [Test] - public void Test_6324() - { - } - [Test] - public void Test_6325() - { - } - [Test] - public void Test_6326() - { - } - [Test] - public void Test_6327() - { - } - [Test] - public void Test_6328() - { - } - [Test] - public void Test_6329() - { - } - [Test] - public void Test_6330() - { - } - [Test] - public void Test_6331() - { - } - [Test] - public void Test_6332() - { - } - [Test] - public void Test_6333() - { - } - [Test] - public void Test_6334() - { - } - [Test] - public void Test_6335() - { - } - [Test] - public void Test_6336() - { - } - [Test] - public void Test_6337() - { - } - [Test] - public void Test_6338() - { - } - [Test] - public void Test_6339() - { - } - [Test] - public void Test_6340() - { - } - [Test] - public void Test_6341() - { - } - [Test] - public void Test_6342() - { - } - [Test] - public void Test_6343() - { - } - [Test] - public void Test_6344() - { - } - [Test] - public void Test_6345() - { - } - [Test] - public void Test_6346() - { - } - [Test] - public void Test_6347() - { - } - [Test] - public void Test_6348() - { - } - [Test] - public void Test_6349() - { - } - [Test] - public void Test_6350() - { - } - [Test] - public void Test_6351() - { - } - [Test] - public void Test_6352() - { - } - [Test] - public void Test_6353() - { - } - [Test] - public void Test_6354() - { - } - [Test] - public void Test_6355() - { - } - [Test] - public void Test_6356() - { - } - [Test] - public void Test_6357() - { - } - [Test] - public void Test_6358() - { - } - [Test] - public void Test_6359() - { - } - [Test] - public void Test_6360() - { - } - [Test] - public void Test_6361() - { - } - [Test] - public void Test_6362() - { - } - [Test] - public void Test_6363() - { - } - [Test] - public void Test_6364() - { - } - [Test] - public void Test_6365() - { - } - [Test] - public void Test_6366() - { - } - [Test] - public void Test_6367() - { - } - [Test] - public void Test_6368() - { - } - [Test] - public void Test_6369() - { - } - [Test] - public void Test_6370() - { - } - [Test] - public void Test_6371() - { - } - [Test] - public void Test_6372() - { - } - [Test] - public void Test_6373() - { - } - [Test] - public void Test_6374() - { - } - [Test] - public void Test_6375() - { - } - [Test] - public void Test_6376() - { - } - [Test] - public void Test_6377() - { - } - [Test] - public void Test_6378() - { - } - [Test] - public void Test_6379() - { - } - [Test] - public void Test_6380() - { - } - [Test] - public void Test_6381() - { - } - [Test] - public void Test_6382() - { - } - [Test] - public void Test_6383() - { - } - [Test] - public void Test_6384() - { - } - [Test] - public void Test_6385() - { - } - [Test] - public void Test_6386() - { - } - [Test] - public void Test_6387() - { - } - [Test] - public void Test_6388() - { - } - [Test] - public void Test_6389() - { - } - [Test] - public void Test_6390() - { - } - [Test] - public void Test_6391() - { - } - [Test] - public void Test_6392() - { - } - [Test] - public void Test_6393() - { - } - [Test] - public void Test_6394() - { - } - [Test] - public void Test_6395() - { - } - [Test] - public void Test_6396() - { - } - [Test] - public void Test_6397() - { - } - [Test] - public void Test_6398() - { - } - [Test] - public void Test_6399() - { - } - [Test] - public void Test_6400() - { - } - [Test] - public void Test_6401() - { - } - [Test] - public void Test_6402() - { - } - [Test] - public void Test_6403() - { - } - [Test] - public void Test_6404() - { - } - [Test] - public void Test_6405() - { - } - [Test] - public void Test_6406() - { - } - [Test] - public void Test_6407() - { - } - [Test] - public void Test_6408() - { - } - [Test] - public void Test_6409() - { - } - [Test] - public void Test_6410() - { - } - [Test] - public void Test_6411() - { - } - [Test] - public void Test_6412() - { - } - [Test] - public void Test_6413() - { - } - [Test] - public void Test_6414() - { - } - [Test] - public void Test_6415() - { - } - [Test] - public void Test_6416() - { - } - [Test] - public void Test_6417() - { - } - [Test] - public void Test_6418() - { - } - [Test] - public void Test_6419() - { - } - [Test] - public void Test_6420() - { - } - [Test] - public void Test_6421() - { - } - [Test] - public void Test_6422() - { - } - [Test] - public void Test_6423() - { - } - [Test] - public void Test_6424() - { - } - [Test] - public void Test_6425() - { - } - [Test] - public void Test_6426() - { - } - [Test] - public void Test_6427() - { - } - [Test] - public void Test_6428() - { - } - [Test] - public void Test_6429() - { - } - [Test] - public void Test_6430() - { - } - [Test] - public void Test_6431() - { - } - [Test] - public void Test_6432() - { - } - [Test] - public void Test_6433() - { - } - [Test] - public void Test_6434() - { - } - [Test] - public void Test_6435() - { - } - [Test] - public void Test_6436() - { - } - [Test] - public void Test_6437() - { - } - [Test] - public void Test_6438() - { - } - [Test] - public void Test_6439() - { - } - [Test] - public void Test_6440() - { - } - [Test] - public void Test_6441() - { - } - [Test] - public void Test_6442() - { - } - [Test] - public void Test_6443() - { - } - [Test] - public void Test_6444() - { - } - [Test] - public void Test_6445() - { - } - [Test] - public void Test_6446() - { - } - [Test] - public void Test_6447() - { - } - [Test] - public void Test_6448() - { - } - [Test] - public void Test_6449() - { - } - [Test] - public void Test_6450() - { - } - [Test] - public void Test_6451() - { - } - [Test] - public void Test_6452() - { - } - [Test] - public void Test_6453() - { - } - [Test] - public void Test_6454() - { - } - [Test] - public void Test_6455() - { - } - [Test] - public void Test_6456() - { - } - [Test] - public void Test_6457() - { - } - [Test] - public void Test_6458() - { - } - [Test] - public void Test_6459() - { - } - [Test] - public void Test_6460() - { - } - [Test] - public void Test_6461() - { - } - [Test] - public void Test_6462() - { - } - [Test] - public void Test_6463() - { - } - [Test] - public void Test_6464() - { - } - [Test] - public void Test_6465() - { - } - [Test] - public void Test_6466() - { - } - [Test] - public void Test_6467() - { - } - [Test] - public void Test_6468() - { - } - [Test] - public void Test_6469() - { - } - [Test] - public void Test_6470() - { - } - [Test] - public void Test_6471() - { - } - [Test] - public void Test_6472() - { - } - [Test] - public void Test_6473() - { - } - [Test] - public void Test_6474() - { - } - [Test] - public void Test_6475() - { - } - [Test] - public void Test_6476() - { - } - [Test] - public void Test_6477() - { - } - [Test] - public void Test_6478() - { - } - [Test] - public void Test_6479() - { - } - [Test] - public void Test_6480() - { - } - [Test] - public void Test_6481() - { - } - [Test] - public void Test_6482() - { - } - [Test] - public void Test_6483() - { - } - [Test] - public void Test_6484() - { - } - [Test] - public void Test_6485() - { - } - [Test] - public void Test_6486() - { - } - [Test] - public void Test_6487() - { - } - [Test] - public void Test_6488() - { - } - [Test] - public void Test_6489() - { - } - [Test] - public void Test_6490() - { - } - [Test] - public void Test_6491() - { - } - [Test] - public void Test_6492() - { - } - [Test] - public void Test_6493() - { - } - [Test] - public void Test_6494() - { - } - [Test] - public void Test_6495() - { - } - [Test] - public void Test_6496() - { - } - [Test] - public void Test_6497() - { - } - [Test] - public void Test_6498() - { - } - [Test] - public void Test_6499() - { - } - [Test] - public void Test_6500() - { - } - [Test] - public void Test_6501() - { - } - [Test] - public void Test_6502() - { - } - [Test] - public void Test_6503() - { - } - [Test] - public void Test_6504() - { - } - [Test] - public void Test_6505() - { - } - [Test] - public void Test_6506() - { - } - [Test] - public void Test_6507() - { - } - [Test] - public void Test_6508() - { - } - [Test] - public void Test_6509() - { - } - [Test] - public void Test_6510() - { - } - [Test] - public void Test_6511() - { - } - [Test] - public void Test_6512() - { - } - [Test] - public void Test_6513() - { - } - [Test] - public void Test_6514() - { - } - [Test] - public void Test_6515() - { - } - [Test] - public void Test_6516() - { - } - [Test] - public void Test_6517() - { - } - [Test] - public void Test_6518() - { - } - [Test] - public void Test_6519() - { - } - [Test] - public void Test_6520() - { - } - [Test] - public void Test_6521() - { - } - [Test] - public void Test_6522() - { - } - [Test] - public void Test_6523() - { - } - [Test] - public void Test_6524() - { - } - [Test] - public void Test_6525() - { - } - [Test] - public void Test_6526() - { - } - [Test] - public void Test_6527() - { - } - [Test] - public void Test_6528() - { - } - [Test] - public void Test_6529() - { - } - [Test] - public void Test_6530() - { - } - [Test] - public void Test_6531() - { - } - [Test] - public void Test_6532() - { - } - [Test] - public void Test_6533() - { - } - [Test] - public void Test_6534() - { - } - [Test] - public void Test_6535() - { - } - [Test] - public void Test_6536() - { - } - [Test] - public void Test_6537() - { - } - [Test] - public void Test_6538() - { - } - [Test] - public void Test_6539() - { - } - [Test] - public void Test_6540() - { - } - [Test] - public void Test_6541() - { - } - [Test] - public void Test_6542() - { - } - [Test] - public void Test_6543() - { - } - [Test] - public void Test_6544() - { - } - [Test] - public void Test_6545() - { - } - [Test] - public void Test_6546() - { - } - [Test] - public void Test_6547() - { - } - [Test] - public void Test_6548() - { - } - [Test] - public void Test_6549() - { - } - [Test] - public void Test_6550() - { - } - [Test] - public void Test_6551() - { - } - [Test] - public void Test_6552() - { - } - [Test] - public void Test_6553() - { - } - [Test] - public void Test_6554() - { - } - [Test] - public void Test_6555() - { - } - [Test] - public void Test_6556() - { - } - [Test] - public void Test_6557() - { - } - [Test] - public void Test_6558() - { - } - [Test] - public void Test_6559() - { - } - [Test] - public void Test_6560() - { - } - [Test] - public void Test_6561() - { - } - [Test] - public void Test_6562() - { - } - [Test] - public void Test_6563() - { - } - [Test] - public void Test_6564() - { - } - [Test] - public void Test_6565() - { - } - [Test] - public void Test_6566() - { - } - [Test] - public void Test_6567() - { - } - [Test] - public void Test_6568() - { - } - [Test] - public void Test_6569() - { - } - [Test] - public void Test_6570() - { - } - [Test] - public void Test_6571() - { - } - [Test] - public void Test_6572() - { - } - [Test] - public void Test_6573() - { - } - [Test] - public void Test_6574() - { - } - [Test] - public void Test_6575() - { - } - [Test] - public void Test_6576() - { - } - [Test] - public void Test_6577() - { - } - [Test] - public void Test_6578() - { - } - [Test] - public void Test_6579() - { - } - [Test] - public void Test_6580() - { - } - [Test] - public void Test_6581() - { - } - [Test] - public void Test_6582() - { - } - [Test] - public void Test_6583() - { - } - [Test] - public void Test_6584() - { - } - [Test] - public void Test_6585() - { - } - [Test] - public void Test_6586() - { - } - [Test] - public void Test_6587() - { - } - [Test] - public void Test_6588() - { - } - [Test] - public void Test_6589() - { - } - [Test] - public void Test_6590() - { - } - [Test] - public void Test_6591() - { - } - [Test] - public void Test_6592() - { - } - [Test] - public void Test_6593() - { - } - [Test] - public void Test_6594() - { - } - [Test] - public void Test_6595() - { - } - [Test] - public void Test_6596() - { - } - [Test] - public void Test_6597() - { - } - [Test] - public void Test_6598() - { - } - [Test] - public void Test_6599() - { - } - [Test] - public void Test_6600() - { - } - [Test] - public void Test_6601() - { - } - [Test] - public void Test_6602() - { - } - [Test] - public void Test_6603() - { - } - [Test] - public void Test_6604() - { - } - [Test] - public void Test_6605() - { - } - [Test] - public void Test_6606() - { - } - [Test] - public void Test_6607() - { - } - [Test] - public void Test_6608() - { - } - [Test] - public void Test_6609() - { - } - [Test] - public void Test_6610() - { - } - [Test] - public void Test_6611() - { - } - [Test] - public void Test_6612() - { - } - [Test] - public void Test_6613() - { - } - [Test] - public void Test_6614() - { - } - [Test] - public void Test_6615() - { - } - [Test] - public void Test_6616() - { - } - [Test] - public void Test_6617() - { - } - [Test] - public void Test_6618() - { - } - [Test] - public void Test_6619() - { - } - [Test] - public void Test_6620() - { - } - [Test] - public void Test_6621() - { - } - [Test] - public void Test_6622() - { - } - [Test] - public void Test_6623() - { - } - [Test] - public void Test_6624() - { - } - [Test] - public void Test_6625() - { - } - [Test] - public void Test_6626() - { - } - [Test] - public void Test_6627() - { - } - [Test] - public void Test_6628() - { - } - [Test] - public void Test_6629() - { - } - [Test] - public void Test_6630() - { - } - [Test] - public void Test_6631() - { - } - [Test] - public void Test_6632() - { - } - [Test] - public void Test_6633() - { - } - [Test] - public void Test_6634() - { - } - [Test] - public void Test_6635() - { - } - [Test] - public void Test_6636() - { - } - [Test] - public void Test_6637() - { - } - [Test] - public void Test_6638() - { - } - [Test] - public void Test_6639() - { - } - [Test] - public void Test_6640() - { - } - [Test] - public void Test_6641() - { - } - [Test] - public void Test_6642() - { - } - [Test] - public void Test_6643() - { - } - [Test] - public void Test_6644() - { - } - [Test] - public void Test_6645() - { - } - [Test] - public void Test_6646() - { - } - [Test] - public void Test_6647() - { - } - [Test] - public void Test_6648() - { - } - [Test] - public void Test_6649() - { - } - [Test] - public void Test_6650() - { - } - [Test] - public void Test_6651() - { - } - [Test] - public void Test_6652() - { - } - [Test] - public void Test_6653() - { - } - [Test] - public void Test_6654() - { - } - [Test] - public void Test_6655() - { - } - [Test] - public void Test_6656() - { - } - [Test] - public void Test_6657() - { - } - [Test] - public void Test_6658() - { - } - [Test] - public void Test_6659() - { - } - [Test] - public void Test_6660() - { - } - [Test] - public void Test_6661() - { - } - [Test] - public void Test_6662() - { - } - [Test] - public void Test_6663() - { - } - [Test] - public void Test_6664() - { - } - [Test] - public void Test_6665() - { - } - [Test] - public void Test_6666() - { - } - [Test] - public void Test_6667() - { - } - [Test] - public void Test_6668() - { - } - [Test] - public void Test_6669() - { - } - [Test] - public void Test_6670() - { - } - [Test] - public void Test_6671() - { - } - [Test] - public void Test_6672() - { - } - [Test] - public void Test_6673() - { - } - [Test] - public void Test_6674() - { - } - [Test] - public void Test_6675() - { - } - [Test] - public void Test_6676() - { - } - [Test] - public void Test_6677() - { - } - [Test] - public void Test_6678() - { - } - [Test] - public void Test_6679() - { - } - [Test] - public void Test_6680() - { - } - [Test] - public void Test_6681() - { - } - [Test] - public void Test_6682() - { - } - [Test] - public void Test_6683() - { - } - [Test] - public void Test_6684() - { - } - [Test] - public void Test_6685() - { - } - [Test] - public void Test_6686() - { - } - [Test] - public void Test_6687() - { - } - [Test] - public void Test_6688() - { - } - [Test] - public void Test_6689() - { - } - [Test] - public void Test_6690() - { - } - [Test] - public void Test_6691() - { - } - [Test] - public void Test_6692() - { - } - [Test] - public void Test_6693() - { - } - [Test] - public void Test_6694() - { - } - [Test] - public void Test_6695() - { - } - [Test] - public void Test_6696() - { - } - [Test] - public void Test_6697() - { - } - [Test] - public void Test_6698() - { - } - [Test] - public void Test_6699() - { - } - [Test] - public void Test_6700() - { - } - [Test] - public void Test_6701() - { - } - [Test] - public void Test_6702() - { - } - [Test] - public void Test_6703() - { - } - [Test] - public void Test_6704() - { - } - [Test] - public void Test_6705() - { - } - [Test] - public void Test_6706() - { - } - [Test] - public void Test_6707() - { - } - [Test] - public void Test_6708() - { - } - [Test] - public void Test_6709() - { - } - [Test] - public void Test_6710() - { - } - [Test] - public void Test_6711() - { - } - [Test] - public void Test_6712() - { - } - [Test] - public void Test_6713() - { - } - [Test] - public void Test_6714() - { - } - [Test] - public void Test_6715() - { - } - [Test] - public void Test_6716() - { - } - [Test] - public void Test_6717() - { - } - [Test] - public void Test_6718() - { - } - [Test] - public void Test_6719() - { - } - [Test] - public void Test_6720() - { - } - [Test] - public void Test_6721() - { - } - [Test] - public void Test_6722() - { - } - [Test] - public void Test_6723() - { - } - [Test] - public void Test_6724() - { - } - [Test] - public void Test_6725() - { - } - [Test] - public void Test_6726() - { - } - [Test] - public void Test_6727() - { - } - [Test] - public void Test_6728() - { - } - [Test] - public void Test_6729() - { - } - [Test] - public void Test_6730() - { - } - [Test] - public void Test_6731() - { - } - [Test] - public void Test_6732() - { - } - [Test] - public void Test_6733() - { - } - [Test] - public void Test_6734() - { - } - [Test] - public void Test_6735() - { - } - [Test] - public void Test_6736() - { - } - [Test] - public void Test_6737() - { - } - [Test] - public void Test_6738() - { - } - [Test] - public void Test_6739() - { - } - [Test] - public void Test_6740() - { - } - [Test] - public void Test_6741() - { - } - [Test] - public void Test_6742() - { - } - [Test] - public void Test_6743() - { - } - [Test] - public void Test_6744() - { - } - [Test] - public void Test_6745() - { - } - [Test] - public void Test_6746() - { - } - [Test] - public void Test_6747() - { - } - [Test] - public void Test_6748() - { - } - [Test] - public void Test_6749() - { - } - [Test] - public void Test_6750() - { - } - [Test] - public void Test_6751() - { - } - [Test] - public void Test_6752() - { - } - [Test] - public void Test_6753() - { - } - [Test] - public void Test_6754() - { - } - [Test] - public void Test_6755() - { - } - [Test] - public void Test_6756() - { - } - [Test] - public void Test_6757() - { - } - [Test] - public void Test_6758() - { - } - [Test] - public void Test_6759() - { - } - [Test] - public void Test_6760() - { - } - [Test] - public void Test_6761() - { - } - [Test] - public void Test_6762() - { - } - [Test] - public void Test_6763() - { - } - [Test] - public void Test_6764() - { - } - [Test] - public void Test_6765() - { - } - [Test] - public void Test_6766() - { - } - [Test] - public void Test_6767() - { - } - [Test] - public void Test_6768() - { - } - [Test] - public void Test_6769() - { - } - [Test] - public void Test_6770() - { - } - [Test] - public void Test_6771() - { - } - [Test] - public void Test_6772() - { - } - [Test] - public void Test_6773() - { - } - [Test] - public void Test_6774() - { - } - [Test] - public void Test_6775() - { - } - [Test] - public void Test_6776() - { - } - [Test] - public void Test_6777() - { - } - [Test] - public void Test_6778() - { - } - [Test] - public void Test_6779() - { - } - [Test] - public void Test_6780() - { - } - [Test] - public void Test_6781() - { - } - [Test] - public void Test_6782() - { - } - [Test] - public void Test_6783() - { - } - [Test] - public void Test_6784() - { - } - [Test] - public void Test_6785() - { - } - [Test] - public void Test_6786() - { - } - [Test] - public void Test_6787() - { - } - [Test] - public void Test_6788() - { - } - [Test] - public void Test_6789() - { - } - [Test] - public void Test_6790() - { - } - [Test] - public void Test_6791() - { - } - [Test] - public void Test_6792() - { - } - [Test] - public void Test_6793() - { - } - [Test] - public void Test_6794() - { - } - [Test] - public void Test_6795() - { - } - [Test] - public void Test_6796() - { - } - [Test] - public void Test_6797() - { - } - [Test] - public void Test_6798() - { - } - [Test] - public void Test_6799() - { - } - [Test] - public void Test_6800() - { - } - [Test] - public void Test_6801() - { - } - [Test] - public void Test_6802() - { - } - [Test] - public void Test_6803() - { - } - [Test] - public void Test_6804() - { - } - [Test] - public void Test_6805() - { - } - [Test] - public void Test_6806() - { - } - [Test] - public void Test_6807() - { - } - [Test] - public void Test_6808() - { - } - [Test] - public void Test_6809() - { - } - [Test] - public void Test_6810() - { - } - [Test] - public void Test_6811() - { - } - [Test] - public void Test_6812() - { - } - [Test] - public void Test_6813() - { - } - [Test] - public void Test_6814() - { - } - [Test] - public void Test_6815() - { - } - [Test] - public void Test_6816() - { - } - [Test] - public void Test_6817() - { - } - [Test] - public void Test_6818() - { - } - [Test] - public void Test_6819() - { - } - [Test] - public void Test_6820() - { - } - [Test] - public void Test_6821() - { - } - [Test] - public void Test_6822() - { - } - [Test] - public void Test_6823() - { - } - [Test] - public void Test_6824() - { - } - [Test] - public void Test_6825() - { - } - [Test] - public void Test_6826() - { - } - [Test] - public void Test_6827() - { - } - [Test] - public void Test_6828() - { - } - [Test] - public void Test_6829() - { - } - [Test] - public void Test_6830() - { - } - [Test] - public void Test_6831() - { - } - [Test] - public void Test_6832() - { - } - [Test] - public void Test_6833() - { - } - [Test] - public void Test_6834() - { - } - [Test] - public void Test_6835() - { - } - [Test] - public void Test_6836() - { - } - [Test] - public void Test_6837() - { - } - [Test] - public void Test_6838() - { - } - [Test] - public void Test_6839() - { - } - [Test] - public void Test_6840() - { - } - [Test] - public void Test_6841() - { - } - [Test] - public void Test_6842() - { - } - [Test] - public void Test_6843() - { - } - [Test] - public void Test_6844() - { - } - [Test] - public void Test_6845() - { - } - [Test] - public void Test_6846() - { - } - [Test] - public void Test_6847() - { - } - [Test] - public void Test_6848() - { - } - [Test] - public void Test_6849() - { - } - [Test] - public void Test_6850() - { - } - [Test] - public void Test_6851() - { - } - [Test] - public void Test_6852() - { - } - [Test] - public void Test_6853() - { - } - [Test] - public void Test_6854() - { - } - [Test] - public void Test_6855() - { - } - [Test] - public void Test_6856() - { - } - [Test] - public void Test_6857() - { - } - [Test] - public void Test_6858() - { - } - [Test] - public void Test_6859() - { - } - [Test] - public void Test_6860() - { - } - [Test] - public void Test_6861() - { - } - [Test] - public void Test_6862() - { - } - [Test] - public void Test_6863() - { - } - [Test] - public void Test_6864() - { - } - [Test] - public void Test_6865() - { - } - [Test] - public void Test_6866() - { - } - [Test] - public void Test_6867() - { - } - [Test] - public void Test_6868() - { - } - [Test] - public void Test_6869() - { - } - [Test] - public void Test_6870() - { - } - [Test] - public void Test_6871() - { - } - [Test] - public void Test_6872() - { - } - [Test] - public void Test_6873() - { - } - [Test] - public void Test_6874() - { - } - [Test] - public void Test_6875() - { - } - [Test] - public void Test_6876() - { - } - [Test] - public void Test_6877() - { - } - [Test] - public void Test_6878() - { - } - [Test] - public void Test_6879() - { - } - [Test] - public void Test_6880() - { - } - [Test] - public void Test_6881() - { - } - [Test] - public void Test_6882() - { - } - [Test] - public void Test_6883() - { - } - [Test] - public void Test_6884() - { - } - [Test] - public void Test_6885() - { - } - [Test] - public void Test_6886() - { - } - [Test] - public void Test_6887() - { - } - [Test] - public void Test_6888() - { - } - [Test] - public void Test_6889() - { - } - [Test] - public void Test_6890() - { - } - [Test] - public void Test_6891() - { - } - [Test] - public void Test_6892() - { - } - [Test] - public void Test_6893() - { - } - [Test] - public void Test_6894() - { - } - [Test] - public void Test_6895() - { - } - [Test] - public void Test_6896() - { - } - [Test] - public void Test_6897() - { - } - [Test] - public void Test_6898() - { - } - [Test] - public void Test_6899() - { - } - [Test] - public void Test_6900() - { - } - [Test] - public void Test_6901() - { - } - [Test] - public void Test_6902() - { - } - [Test] - public void Test_6903() - { - } - [Test] - public void Test_6904() - { - } - [Test] - public void Test_6905() - { - } - [Test] - public void Test_6906() - { - } - [Test] - public void Test_6907() - { - } - [Test] - public void Test_6908() - { - } - [Test] - public void Test_6909() - { - } - [Test] - public void Test_6910() - { - } - [Test] - public void Test_6911() - { - } - [Test] - public void Test_6912() - { - } - [Test] - public void Test_6913() - { - } - [Test] - public void Test_6914() - { - } - [Test] - public void Test_6915() - { - } - [Test] - public void Test_6916() - { - } - [Test] - public void Test_6917() - { - } - [Test] - public void Test_6918() - { - } - [Test] - public void Test_6919() - { - } - [Test] - public void Test_6920() - { - } - [Test] - public void Test_6921() - { - } - [Test] - public void Test_6922() - { - } - [Test] - public void Test_6923() - { - } - [Test] - public void Test_6924() - { - } - [Test] - public void Test_6925() - { - } - [Test] - public void Test_6926() - { - } - [Test] - public void Test_6927() - { - } - [Test] - public void Test_6928() - { - } - [Test] - public void Test_6929() - { - } - [Test] - public void Test_6930() - { - } - [Test] - public void Test_6931() - { - } - [Test] - public void Test_6932() - { - } - [Test] - public void Test_6933() - { - } - [Test] - public void Test_6934() - { - } - [Test] - public void Test_6935() - { - } - [Test] - public void Test_6936() - { - } - [Test] - public void Test_6937() - { - } - [Test] - public void Test_6938() - { - } - [Test] - public void Test_6939() - { - } - [Test] - public void Test_6940() - { - } - [Test] - public void Test_6941() - { - } - [Test] - public void Test_6942() - { - } - [Test] - public void Test_6943() - { - } - [Test] - public void Test_6944() - { - } - [Test] - public void Test_6945() - { - } - [Test] - public void Test_6946() - { - } - [Test] - public void Test_6947() - { - } - [Test] - public void Test_6948() - { - } - [Test] - public void Test_6949() - { - } - [Test] - public void Test_6950() - { - } - [Test] - public void Test_6951() - { - } - [Test] - public void Test_6952() - { - } - [Test] - public void Test_6953() - { - } - [Test] - public void Test_6954() - { - } - [Test] - public void Test_6955() - { - } - [Test] - public void Test_6956() - { - } - [Test] - public void Test_6957() - { - } - [Test] - public void Test_6958() - { - } - [Test] - public void Test_6959() - { - } - [Test] - public void Test_6960() - { - } - [Test] - public void Test_6961() - { - } - [Test] - public void Test_6962() - { - } - [Test] - public void Test_6963() - { - } - [Test] - public void Test_6964() - { - } - [Test] - public void Test_6965() - { - } - [Test] - public void Test_6966() - { - } - [Test] - public void Test_6967() - { - } - [Test] - public void Test_6968() - { - } - [Test] - public void Test_6969() - { - } - [Test] - public void Test_6970() - { - } - [Test] - public void Test_6971() - { - } - [Test] - public void Test_6972() - { - } - [Test] - public void Test_6973() - { - } - [Test] - public void Test_6974() - { - } - [Test] - public void Test_6975() - { - } - [Test] - public void Test_6976() - { - } - [Test] - public void Test_6977() - { - } - [Test] - public void Test_6978() - { - } - [Test] - public void Test_6979() - { - } - [Test] - public void Test_6980() - { - } - [Test] - public void Test_6981() - { - } - [Test] - public void Test_6982() - { - } - [Test] - public void Test_6983() - { - } - [Test] - public void Test_6984() - { - } - [Test] - public void Test_6985() - { - } - [Test] - public void Test_6986() - { - } - [Test] - public void Test_6987() - { - } - [Test] - public void Test_6988() - { - } - [Test] - public void Test_6989() - { - } - [Test] - public void Test_6990() - { - } - [Test] - public void Test_6991() - { - } - [Test] - public void Test_6992() - { - } - [Test] - public void Test_6993() - { - } - [Test] - public void Test_6994() - { - } - [Test] - public void Test_6995() - { - } - [Test] - public void Test_6996() - { - } - [Test] - public void Test_6997() - { - } - [Test] - public void Test_6998() - { - } - [Test] - public void Test_6999() - { - } - [Test] - public void Test_7000() - { - } - [Test] - public void Test_7001() - { - } - [Test] - public void Test_7002() - { - } - [Test] - public void Test_7003() - { - } - [Test] - public void Test_7004() - { - } - [Test] - public void Test_7005() - { - } - [Test] - public void Test_7006() - { - } - [Test] - public void Test_7007() - { - } - [Test] - public void Test_7008() - { - } - [Test] - public void Test_7009() - { - } - [Test] - public void Test_7010() - { - } - [Test] - public void Test_7011() - { - } - [Test] - public void Test_7012() - { - } - [Test] - public void Test_7013() - { - } - [Test] - public void Test_7014() - { - } - [Test] - public void Test_7015() - { - } - [Test] - public void Test_7016() - { - } - [Test] - public void Test_7017() - { - } - [Test] - public void Test_7018() - { - } - [Test] - public void Test_7019() - { - } - [Test] - public void Test_7020() - { - } - [Test] - public void Test_7021() - { - } - [Test] - public void Test_7022() - { - } - [Test] - public void Test_7023() - { - } - [Test] - public void Test_7024() - { - } - [Test] - public void Test_7025() - { - } - [Test] - public void Test_7026() - { - } - [Test] - public void Test_7027() - { - } - [Test] - public void Test_7028() - { - } - [Test] - public void Test_7029() - { - } - [Test] - public void Test_7030() - { - } - [Test] - public void Test_7031() - { - } - [Test] - public void Test_7032() - { - } - [Test] - public void Test_7033() - { - } - [Test] - public void Test_7034() - { - } - [Test] - public void Test_7035() - { - } - [Test] - public void Test_7036() - { - } - [Test] - public void Test_7037() - { - } - [Test] - public void Test_7038() - { - } - [Test] - public void Test_7039() - { - } - [Test] - public void Test_7040() - { - } - [Test] - public void Test_7041() - { - } - [Test] - public void Test_7042() - { - } - [Test] - public void Test_7043() - { - } - [Test] - public void Test_7044() - { - } - [Test] - public void Test_7045() - { - } - [Test] - public void Test_7046() - { - } - [Test] - public void Test_7047() - { - } - [Test] - public void Test_7048() - { - } - [Test] - public void Test_7049() - { - } - [Test] - public void Test_7050() - { - } - [Test] - public void Test_7051() - { - } - [Test] - public void Test_7052() - { - } - [Test] - public void Test_7053() - { - } - [Test] - public void Test_7054() - { - } - [Test] - public void Test_7055() - { - } - [Test] - public void Test_7056() - { - } - [Test] - public void Test_7057() - { - } - [Test] - public void Test_7058() - { - } - [Test] - public void Test_7059() - { - } - [Test] - public void Test_7060() - { - } - [Test] - public void Test_7061() - { - } - [Test] - public void Test_7062() - { - } - [Test] - public void Test_7063() - { - } - [Test] - public void Test_7064() - { - } - [Test] - public void Test_7065() - { - } - [Test] - public void Test_7066() - { - } - [Test] - public void Test_7067() - { - } - [Test] - public void Test_7068() - { - } - [Test] - public void Test_7069() - { - } - [Test] - public void Test_7070() - { - } - [Test] - public void Test_7071() - { - } - [Test] - public void Test_7072() - { - } - [Test] - public void Test_7073() - { - } - [Test] - public void Test_7074() - { - } - [Test] - public void Test_7075() - { - } - [Test] - public void Test_7076() - { - } - [Test] - public void Test_7077() - { - } - [Test] - public void Test_7078() - { - } - [Test] - public void Test_7079() - { - } - [Test] - public void Test_7080() - { - } - [Test] - public void Test_7081() - { - } - [Test] - public void Test_7082() - { - } - [Test] - public void Test_7083() - { - } - [Test] - public void Test_7084() - { - } - [Test] - public void Test_7085() - { - } - [Test] - public void Test_7086() - { - } - [Test] - public void Test_7087() - { - } - [Test] - public void Test_7088() - { - } - [Test] - public void Test_7089() - { - } - [Test] - public void Test_7090() - { - } - [Test] - public void Test_7091() - { - } - [Test] - public void Test_7092() - { - } - [Test] - public void Test_7093() - { - } - [Test] - public void Test_7094() - { - } - [Test] - public void Test_7095() - { - } - [Test] - public void Test_7096() - { - } - [Test] - public void Test_7097() - { - } - [Test] - public void Test_7098() - { - } - [Test] - public void Test_7099() - { - } - [Test] - public void Test_7100() - { - } - [Test] - public void Test_7101() - { - } - [Test] - public void Test_7102() - { - } - [Test] - public void Test_7103() - { - } - [Test] - public void Test_7104() - { - } - [Test] - public void Test_7105() - { - } - [Test] - public void Test_7106() - { - } - [Test] - public void Test_7107() - { - } - [Test] - public void Test_7108() - { - } - [Test] - public void Test_7109() - { - } - [Test] - public void Test_7110() - { - } - [Test] - public void Test_7111() - { - } - [Test] - public void Test_7112() - { - } - [Test] - public void Test_7113() - { - } - [Test] - public void Test_7114() - { - } - [Test] - public void Test_7115() - { - } - [Test] - public void Test_7116() - { - } - [Test] - public void Test_7117() - { - } - [Test] - public void Test_7118() - { - } - [Test] - public void Test_7119() - { - } - [Test] - public void Test_7120() - { - } - [Test] - public void Test_7121() - { - } - [Test] - public void Test_7122() - { - } - [Test] - public void Test_7123() - { - } - [Test] - public void Test_7124() - { - } - [Test] - public void Test_7125() - { - } - [Test] - public void Test_7126() - { - } - [Test] - public void Test_7127() - { - } - [Test] - public void Test_7128() - { - } - [Test] - public void Test_7129() - { - } - [Test] - public void Test_7130() - { - } - [Test] - public void Test_7131() - { - } - [Test] - public void Test_7132() - { - } - [Test] - public void Test_7133() - { - } - [Test] - public void Test_7134() - { - } - [Test] - public void Test_7135() - { - } - [Test] - public void Test_7136() - { - } - [Test] - public void Test_7137() - { - } - [Test] - public void Test_7138() - { - } - [Test] - public void Test_7139() - { - } - [Test] - public void Test_7140() - { - } - [Test] - public void Test_7141() - { - } - [Test] - public void Test_7142() - { - } - [Test] - public void Test_7143() - { - } - [Test] - public void Test_7144() - { - } - [Test] - public void Test_7145() - { - } - [Test] - public void Test_7146() - { - } - [Test] - public void Test_7147() - { - } - [Test] - public void Test_7148() - { - } - [Test] - public void Test_7149() - { - } - [Test] - public void Test_7150() - { - } - [Test] - public void Test_7151() - { - } - [Test] - public void Test_7152() - { - } - [Test] - public void Test_7153() - { - } - [Test] - public void Test_7154() - { - } - [Test] - public void Test_7155() - { - } - [Test] - public void Test_7156() - { - } - [Test] - public void Test_7157() - { - } - [Test] - public void Test_7158() - { - } - [Test] - public void Test_7159() - { - } - [Test] - public void Test_7160() - { - } - [Test] - public void Test_7161() - { - } - [Test] - public void Test_7162() - { - } - [Test] - public void Test_7163() - { - } - [Test] - public void Test_7164() - { - } - [Test] - public void Test_7165() - { - } - [Test] - public void Test_7166() - { - } - [Test] - public void Test_7167() - { - } - [Test] - public void Test_7168() - { - } - [Test] - public void Test_7169() - { - } - [Test] - public void Test_7170() - { - } - [Test] - public void Test_7171() - { - } - [Test] - public void Test_7172() - { - } - [Test] - public void Test_7173() - { - } - [Test] - public void Test_7174() - { - } - [Test] - public void Test_7175() - { - } - [Test] - public void Test_7176() - { - } - [Test] - public void Test_7177() - { - } - [Test] - public void Test_7178() - { - } - [Test] - public void Test_7179() - { - } - [Test] - public void Test_7180() - { - } - [Test] - public void Test_7181() - { - } - [Test] - public void Test_7182() - { - } - [Test] - public void Test_7183() - { - } - [Test] - public void Test_7184() - { - } - [Test] - public void Test_7185() - { - } - [Test] - public void Test_7186() - { - } - [Test] - public void Test_7187() - { - } - [Test] - public void Test_7188() - { - } - [Test] - public void Test_7189() - { - } - [Test] - public void Test_7190() - { - } - [Test] - public void Test_7191() - { - } - [Test] - public void Test_7192() - { - } - [Test] - public void Test_7193() - { - } - [Test] - public void Test_7194() - { - } - [Test] - public void Test_7195() - { - } - [Test] - public void Test_7196() - { - } - [Test] - public void Test_7197() - { - } - [Test] - public void Test_7198() - { - } - [Test] - public void Test_7199() - { - } - [Test] - public void Test_7200() - { - } - [Test] - public void Test_7201() - { - } - [Test] - public void Test_7202() - { - } - [Test] - public void Test_7203() - { - } - [Test] - public void Test_7204() - { - } - [Test] - public void Test_7205() - { - } - [Test] - public void Test_7206() - { - } - [Test] - public void Test_7207() - { - } - [Test] - public void Test_7208() - { - } - [Test] - public void Test_7209() - { - } - [Test] - public void Test_7210() - { - } - [Test] - public void Test_7211() - { - } - [Test] - public void Test_7212() - { - } - [Test] - public void Test_7213() - { - } - [Test] - public void Test_7214() - { - } - [Test] - public void Test_7215() - { - } - [Test] - public void Test_7216() - { - } - [Test] - public void Test_7217() - { - } - [Test] - public void Test_7218() - { - } - [Test] - public void Test_7219() - { - } - [Test] - public void Test_7220() - { - } - [Test] - public void Test_7221() - { - } - [Test] - public void Test_7222() - { - } - [Test] - public void Test_7223() - { - } - [Test] - public void Test_7224() - { - } - [Test] - public void Test_7225() - { - } - [Test] - public void Test_7226() - { - } - [Test] - public void Test_7227() - { - } - [Test] - public void Test_7228() - { - } - [Test] - public void Test_7229() - { - } - [Test] - public void Test_7230() - { - } - [Test] - public void Test_7231() - { - } - [Test] - public void Test_7232() - { - } - [Test] - public void Test_7233() - { - } - [Test] - public void Test_7234() - { - } - [Test] - public void Test_7235() - { - } - [Test] - public void Test_7236() - { - } - [Test] - public void Test_7237() - { - } - [Test] - public void Test_7238() - { - } - [Test] - public void Test_7239() - { - } - [Test] - public void Test_7240() - { - } - [Test] - public void Test_7241() - { - } - [Test] - public void Test_7242() - { - } - [Test] - public void Test_7243() - { - } - [Test] - public void Test_7244() - { - } - [Test] - public void Test_7245() - { - } - [Test] - public void Test_7246() - { - } - [Test] - public void Test_7247() - { - } - [Test] - public void Test_7248() - { - } - [Test] - public void Test_7249() - { - } - [Test] - public void Test_7250() - { - } - [Test] - public void Test_7251() - { - } - [Test] - public void Test_7252() - { - } - [Test] - public void Test_7253() - { - } - [Test] - public void Test_7254() - { - } - [Test] - public void Test_7255() - { - } - [Test] - public void Test_7256() - { - } - [Test] - public void Test_7257() - { - } - [Test] - public void Test_7258() - { - } - [Test] - public void Test_7259() - { - } - [Test] - public void Test_7260() - { - } - [Test] - public void Test_7261() - { - } - [Test] - public void Test_7262() - { - } - [Test] - public void Test_7263() - { - } - [Test] - public void Test_7264() - { - } - [Test] - public void Test_7265() - { - } - [Test] - public void Test_7266() - { - } - [Test] - public void Test_7267() - { - } - [Test] - public void Test_7268() - { - } - [Test] - public void Test_7269() - { - } - [Test] - public void Test_7270() - { - } - [Test] - public void Test_7271() - { - } - [Test] - public void Test_7272() - { - } - [Test] - public void Test_7273() - { - } - [Test] - public void Test_7274() - { - } - [Test] - public void Test_7275() - { - } - [Test] - public void Test_7276() - { - } - [Test] - public void Test_7277() - { - } - [Test] - public void Test_7278() - { - } - [Test] - public void Test_7279() - { - } - [Test] - public void Test_7280() - { - } - [Test] - public void Test_7281() - { - } - [Test] - public void Test_7282() - { - } - [Test] - public void Test_7283() - { - } - [Test] - public void Test_7284() - { - } - [Test] - public void Test_7285() - { - } - [Test] - public void Test_7286() - { - } - [Test] - public void Test_7287() - { - } - [Test] - public void Test_7288() - { - } - [Test] - public void Test_7289() - { - } - [Test] - public void Test_7290() - { - } - [Test] - public void Test_7291() - { - } - [Test] - public void Test_7292() - { - } - [Test] - public void Test_7293() - { - } - [Test] - public void Test_7294() - { - } - [Test] - public void Test_7295() - { - } - [Test] - public void Test_7296() - { - } - [Test] - public void Test_7297() - { - } - [Test] - public void Test_7298() - { - } - [Test] - public void Test_7299() - { - } - [Test] - public void Test_7300() - { - } - [Test] - public void Test_7301() - { - } - [Test] - public void Test_7302() - { - } - [Test] - public void Test_7303() - { - } - [Test] - public void Test_7304() - { - } - [Test] - public void Test_7305() - { - } - [Test] - public void Test_7306() - { - } - [Test] - public void Test_7307() - { - } - [Test] - public void Test_7308() - { - } - [Test] - public void Test_7309() - { - } - [Test] - public void Test_7310() - { - } - [Test] - public void Test_7311() - { - } - [Test] - public void Test_7312() - { - } - [Test] - public void Test_7313() - { - } - [Test] - public void Test_7314() - { - } - [Test] - public void Test_7315() - { - } - [Test] - public void Test_7316() - { - } - [Test] - public void Test_7317() - { - } - [Test] - public void Test_7318() - { - } - [Test] - public void Test_7319() - { - } - [Test] - public void Test_7320() - { - } - [Test] - public void Test_7321() - { - } - [Test] - public void Test_7322() - { - } - [Test] - public void Test_7323() - { - } - [Test] - public void Test_7324() - { - } - [Test] - public void Test_7325() - { - } - [Test] - public void Test_7326() - { - } - [Test] - public void Test_7327() - { - } - [Test] - public void Test_7328() - { - } - [Test] - public void Test_7329() - { - } - [Test] - public void Test_7330() - { - } - [Test] - public void Test_7331() - { - } - [Test] - public void Test_7332() - { - } - [Test] - public void Test_7333() - { - } - [Test] - public void Test_7334() - { - } - [Test] - public void Test_7335() - { - } - [Test] - public void Test_7336() - { - } - [Test] - public void Test_7337() - { - } - [Test] - public void Test_7338() - { - } - [Test] - public void Test_7339() - { - } - [Test] - public void Test_7340() - { - } - [Test] - public void Test_7341() - { - } - [Test] - public void Test_7342() - { - } - [Test] - public void Test_7343() - { - } - [Test] - public void Test_7344() - { - } - [Test] - public void Test_7345() - { - } - [Test] - public void Test_7346() - { - } - [Test] - public void Test_7347() - { - } - [Test] - public void Test_7348() - { - } - [Test] - public void Test_7349() - { - } - [Test] - public void Test_7350() - { - } - [Test] - public void Test_7351() - { - } - [Test] - public void Test_7352() - { - } - [Test] - public void Test_7353() - { - } - [Test] - public void Test_7354() - { - } - [Test] - public void Test_7355() - { - } - [Test] - public void Test_7356() - { - } - [Test] - public void Test_7357() - { - } - [Test] - public void Test_7358() - { - } - [Test] - public void Test_7359() - { - } - [Test] - public void Test_7360() - { - } - [Test] - public void Test_7361() - { - } - [Test] - public void Test_7362() - { - } - [Test] - public void Test_7363() - { - } - [Test] - public void Test_7364() - { - } - [Test] - public void Test_7365() - { - } - [Test] - public void Test_7366() - { - } - [Test] - public void Test_7367() - { - } - [Test] - public void Test_7368() - { - } - [Test] - public void Test_7369() - { - } - [Test] - public void Test_7370() - { - } - [Test] - public void Test_7371() - { - } - [Test] - public void Test_7372() - { - } - [Test] - public void Test_7373() - { - } - [Test] - public void Test_7374() - { - } - [Test] - public void Test_7375() - { - } - [Test] - public void Test_7376() - { - } - [Test] - public void Test_7377() - { - } - [Test] - public void Test_7378() - { - } - [Test] - public void Test_7379() - { - } - [Test] - public void Test_7380() - { - } - [Test] - public void Test_7381() - { - } - [Test] - public void Test_7382() - { - } - [Test] - public void Test_7383() - { - } - [Test] - public void Test_7384() - { - } - [Test] - public void Test_7385() - { - } - [Test] - public void Test_7386() - { - } - [Test] - public void Test_7387() - { - } - [Test] - public void Test_7388() - { - } - [Test] - public void Test_7389() - { - } - [Test] - public void Test_7390() - { - } - [Test] - public void Test_7391() - { - } - [Test] - public void Test_7392() - { - } - [Test] - public void Test_7393() - { - } - [Test] - public void Test_7394() - { - } - [Test] - public void Test_7395() - { - } - [Test] - public void Test_7396() - { - } - [Test] - public void Test_7397() - { - } - [Test] - public void Test_7398() - { - } - [Test] - public void Test_7399() - { - } - [Test] - public void Test_7400() - { - } - [Test] - public void Test_7401() - { - } - [Test] - public void Test_7402() - { - } - [Test] - public void Test_7403() - { - } - [Test] - public void Test_7404() - { - } - [Test] - public void Test_7405() - { - } - [Test] - public void Test_7406() - { - } - [Test] - public void Test_7407() - { - } - [Test] - public void Test_7408() - { - } - [Test] - public void Test_7409() - { - } - [Test] - public void Test_7410() - { - } - [Test] - public void Test_7411() - { - } - [Test] - public void Test_7412() - { - } - [Test] - public void Test_7413() - { - } - [Test] - public void Test_7414() - { - } - [Test] - public void Test_7415() - { - } - [Test] - public void Test_7416() - { - } - [Test] - public void Test_7417() - { - } - [Test] - public void Test_7418() - { - } - [Test] - public void Test_7419() - { - } - [Test] - public void Test_7420() - { - } - [Test] - public void Test_7421() - { - } - [Test] - public void Test_7422() - { - } - [Test] - public void Test_7423() - { - } - [Test] - public void Test_7424() - { - } - [Test] - public void Test_7425() - { - } - [Test] - public void Test_7426() - { - } - [Test] - public void Test_7427() - { - } - [Test] - public void Test_7428() - { - } - [Test] - public void Test_7429() - { - } - [Test] - public void Test_7430() - { - } - [Test] - public void Test_7431() - { - } - [Test] - public void Test_7432() - { - } - [Test] - public void Test_7433() - { - } - [Test] - public void Test_7434() - { - } - [Test] - public void Test_7435() - { - } - [Test] - public void Test_7436() - { - } - [Test] - public void Test_7437() - { - } - [Test] - public void Test_7438() - { - } - [Test] - public void Test_7439() - { - } - [Test] - public void Test_7440() - { - } - [Test] - public void Test_7441() - { - } - [Test] - public void Test_7442() - { - } - [Test] - public void Test_7443() - { - } - [Test] - public void Test_7444() - { - } - [Test] - public void Test_7445() - { - } - [Test] - public void Test_7446() - { - } - [Test] - public void Test_7447() - { - } - [Test] - public void Test_7448() - { - } - [Test] - public void Test_7449() - { - } - [Test] - public void Test_7450() - { - } - [Test] - public void Test_7451() - { - } - [Test] - public void Test_7452() - { - } - [Test] - public void Test_7453() - { - } - [Test] - public void Test_7454() - { - } - [Test] - public void Test_7455() - { - } - [Test] - public void Test_7456() - { - } - [Test] - public void Test_7457() - { - } - [Test] - public void Test_7458() - { - } - [Test] - public void Test_7459() - { - } - [Test] - public void Test_7460() - { - } - [Test] - public void Test_7461() - { - } - [Test] - public void Test_7462() - { - } - [Test] - public void Test_7463() - { - } - [Test] - public void Test_7464() - { - } - [Test] - public void Test_7465() - { - } - [Test] - public void Test_7466() - { - } - [Test] - public void Test_7467() - { - } - [Test] - public void Test_7468() - { - } - [Test] - public void Test_7469() - { - } - [Test] - public void Test_7470() - { - } - [Test] - public void Test_7471() - { - } - [Test] - public void Test_7472() - { - } - [Test] - public void Test_7473() - { - } - [Test] - public void Test_7474() - { - } - [Test] - public void Test_7475() - { - } - [Test] - public void Test_7476() - { - } - [Test] - public void Test_7477() - { - } - [Test] - public void Test_7478() - { - } - [Test] - public void Test_7479() - { - } - [Test] - public void Test_7480() - { - } - [Test] - public void Test_7481() - { - } - [Test] - public void Test_7482() - { - } - [Test] - public void Test_7483() - { - } - [Test] - public void Test_7484() - { - } - [Test] - public void Test_7485() - { - } - [Test] - public void Test_7486() - { - } - [Test] - public void Test_7487() - { - } - [Test] - public void Test_7488() - { - } - [Test] - public void Test_7489() - { - } - [Test] - public void Test_7490() - { - } - [Test] - public void Test_7491() - { - } - [Test] - public void Test_7492() - { - } - [Test] - public void Test_7493() - { - } - [Test] - public void Test_7494() - { - } - [Test] - public void Test_7495() - { - } - [Test] - public void Test_7496() - { - } - [Test] - public void Test_7497() - { - } - [Test] - public void Test_7498() - { - } - [Test] - public void Test_7499() - { - } - [Test] - public void Test_7500() - { - } - [Test] - public void Test_7501() - { - } - [Test] - public void Test_7502() - { - } - [Test] - public void Test_7503() - { - } - [Test] - public void Test_7504() - { - } - [Test] - public void Test_7505() - { - } - [Test] - public void Test_7506() - { - } - [Test] - public void Test_7507() - { - } - [Test] - public void Test_7508() - { - } - [Test] - public void Test_7509() - { - } - [Test] - public void Test_7510() - { - } - [Test] - public void Test_7511() - { - } - [Test] - public void Test_7512() - { - } - [Test] - public void Test_7513() - { - } - [Test] - public void Test_7514() - { - } - [Test] - public void Test_7515() - { - } - [Test] - public void Test_7516() - { - } - [Test] - public void Test_7517() - { - } - [Test] - public void Test_7518() - { - } - [Test] - public void Test_7519() - { - } - [Test] - public void Test_7520() - { - } - [Test] - public void Test_7521() - { - } - [Test] - public void Test_7522() - { - } - [Test] - public void Test_7523() - { - } - [Test] - public void Test_7524() - { - } - [Test] - public void Test_7525() - { - } - [Test] - public void Test_7526() - { - } - [Test] - public void Test_7527() - { - } - [Test] - public void Test_7528() - { - } - [Test] - public void Test_7529() - { - } - [Test] - public void Test_7530() - { - } - [Test] - public void Test_7531() - { - } - [Test] - public void Test_7532() - { - } - [Test] - public void Test_7533() - { - } - [Test] - public void Test_7534() - { - } - [Test] - public void Test_7535() - { - } - [Test] - public void Test_7536() - { - } - [Test] - public void Test_7537() - { - } - [Test] - public void Test_7538() - { - } - [Test] - public void Test_7539() - { - } - [Test] - public void Test_7540() - { - } - [Test] - public void Test_7541() - { - } - [Test] - public void Test_7542() - { - } - [Test] - public void Test_7543() - { - } - [Test] - public void Test_7544() - { - } - [Test] - public void Test_7545() - { - } - [Test] - public void Test_7546() - { - } - [Test] - public void Test_7547() - { - } - [Test] - public void Test_7548() - { - } - [Test] - public void Test_7549() - { - } - [Test] - public void Test_7550() - { - } - [Test] - public void Test_7551() - { - } - [Test] - public void Test_7552() - { - } - [Test] - public void Test_7553() - { - } - [Test] - public void Test_7554() - { - } - [Test] - public void Test_7555() - { - } - [Test] - public void Test_7556() - { - } - [Test] - public void Test_7557() - { - } - [Test] - public void Test_7558() - { - } - [Test] - public void Test_7559() - { - } - [Test] - public void Test_7560() - { - } - [Test] - public void Test_7561() - { - } - [Test] - public void Test_7562() - { - } - [Test] - public void Test_7563() - { - } - [Test] - public void Test_7564() - { - } - [Test] - public void Test_7565() - { - } - [Test] - public void Test_7566() - { - } - [Test] - public void Test_7567() - { - } - [Test] - public void Test_7568() - { - } - [Test] - public void Test_7569() - { - } - [Test] - public void Test_7570() - { - } - [Test] - public void Test_7571() - { - } - [Test] - public void Test_7572() - { - } - [Test] - public void Test_7573() - { - } - [Test] - public void Test_7574() - { - } - [Test] - public void Test_7575() - { - } - [Test] - public void Test_7576() - { - } - [Test] - public void Test_7577() - { - } - [Test] - public void Test_7578() - { - } - [Test] - public void Test_7579() - { - } - [Test] - public void Test_7580() - { - } - [Test] - public void Test_7581() - { - } - [Test] - public void Test_7582() - { - } - [Test] - public void Test_7583() - { - } - [Test] - public void Test_7584() - { - } - [Test] - public void Test_7585() - { - } - [Test] - public void Test_7586() - { - } - [Test] - public void Test_7587() - { - } - [Test] - public void Test_7588() - { - } - [Test] - public void Test_7589() - { - } - [Test] - public void Test_7590() - { - } - [Test] - public void Test_7591() - { - } - [Test] - public void Test_7592() - { - } - [Test] - public void Test_7593() - { - } - [Test] - public void Test_7594() - { - } - [Test] - public void Test_7595() - { - } - [Test] - public void Test_7596() - { - } - [Test] - public void Test_7597() - { - } - [Test] - public void Test_7598() - { - } - [Test] - public void Test_7599() - { - } - [Test] - public void Test_7600() - { - } - [Test] - public void Test_7601() - { - } - [Test] - public void Test_7602() - { - } - [Test] - public void Test_7603() - { - } - [Test] - public void Test_7604() - { - } - [Test] - public void Test_7605() - { - } - [Test] - public void Test_7606() - { - } - [Test] - public void Test_7607() - { - } - [Test] - public void Test_7608() - { - } - [Test] - public void Test_7609() - { - } - [Test] - public void Test_7610() - { - } - [Test] - public void Test_7611() - { - } - [Test] - public void Test_7612() - { - } - [Test] - public void Test_7613() - { - } - [Test] - public void Test_7614() - { - } - [Test] - public void Test_7615() - { - } - [Test] - public void Test_7616() - { - } - [Test] - public void Test_7617() - { - } - [Test] - public void Test_7618() - { - } - [Test] - public void Test_7619() - { - } - [Test] - public void Test_7620() - { - } - [Test] - public void Test_7621() - { - } - [Test] - public void Test_7622() - { - } - [Test] - public void Test_7623() - { - } - [Test] - public void Test_7624() - { - } - [Test] - public void Test_7625() - { - } - [Test] - public void Test_7626() - { - } - [Test] - public void Test_7627() - { - } - [Test] - public void Test_7628() - { - } - [Test] - public void Test_7629() - { - } - [Test] - public void Test_7630() - { - } - [Test] - public void Test_7631() - { - } - [Test] - public void Test_7632() - { - } - [Test] - public void Test_7633() - { - } - [Test] - public void Test_7634() - { - } - [Test] - public void Test_7635() - { - } - [Test] - public void Test_7636() - { - } - [Test] - public void Test_7637() - { - } - [Test] - public void Test_7638() - { - } - [Test] - public void Test_7639() - { - } - [Test] - public void Test_7640() - { - } - [Test] - public void Test_7641() - { - } - [Test] - public void Test_7642() - { - } - [Test] - public void Test_7643() - { - } - [Test] - public void Test_7644() - { - } - [Test] - public void Test_7645() - { - } - [Test] - public void Test_7646() - { - } - [Test] - public void Test_7647() - { - } - [Test] - public void Test_7648() - { - } - [Test] - public void Test_7649() - { - } - [Test] - public void Test_7650() - { - } - [Test] - public void Test_7651() - { - } - [Test] - public void Test_7652() - { - } - [Test] - public void Test_7653() - { - } - [Test] - public void Test_7654() - { - } - [Test] - public void Test_7655() - { - } - [Test] - public void Test_7656() - { - } - [Test] - public void Test_7657() - { - } - [Test] - public void Test_7658() - { - } - [Test] - public void Test_7659() - { - } - [Test] - public void Test_7660() - { - } - [Test] - public void Test_7661() - { - } - [Test] - public void Test_7662() - { - } - [Test] - public void Test_7663() - { - } - [Test] - public void Test_7664() - { - } - [Test] - public void Test_7665() - { - } - [Test] - public void Test_7666() - { - } - [Test] - public void Test_7667() - { - } - [Test] - public void Test_7668() - { - } - [Test] - public void Test_7669() - { - } - [Test] - public void Test_7670() - { - } - [Test] - public void Test_7671() - { - } - [Test] - public void Test_7672() - { - } - [Test] - public void Test_7673() - { - } - [Test] - public void Test_7674() - { - } - [Test] - public void Test_7675() - { - } - [Test] - public void Test_7676() - { - } - [Test] - public void Test_7677() - { - } - [Test] - public void Test_7678() - { - } - [Test] - public void Test_7679() - { - } - [Test] - public void Test_7680() - { - } - [Test] - public void Test_7681() - { - } - [Test] - public void Test_7682() - { - } - [Test] - public void Test_7683() - { - } - [Test] - public void Test_7684() - { - } - [Test] - public void Test_7685() - { - } - [Test] - public void Test_7686() - { - } - [Test] - public void Test_7687() - { - } - [Test] - public void Test_7688() - { - } - [Test] - public void Test_7689() - { - } - [Test] - public void Test_7690() - { - } - [Test] - public void Test_7691() - { - } - [Test] - public void Test_7692() - { - } - [Test] - public void Test_7693() - { - } - [Test] - public void Test_7694() - { - } - [Test] - public void Test_7695() - { - } - [Test] - public void Test_7696() - { - } - [Test] - public void Test_7697() - { - } - [Test] - public void Test_7698() - { - } - [Test] - public void Test_7699() - { - } - [Test] - public void Test_7700() - { - } - [Test] - public void Test_7701() - { - } - [Test] - public void Test_7702() - { - } - [Test] - public void Test_7703() - { - } - [Test] - public void Test_7704() - { - } - [Test] - public void Test_7705() - { - } - [Test] - public void Test_7706() - { - } - [Test] - public void Test_7707() - { - } - [Test] - public void Test_7708() - { - } - [Test] - public void Test_7709() - { - } - [Test] - public void Test_7710() - { - } - [Test] - public void Test_7711() - { - } - [Test] - public void Test_7712() - { - } - [Test] - public void Test_7713() - { - } - [Test] - public void Test_7714() - { - } - [Test] - public void Test_7715() - { - } - [Test] - public void Test_7716() - { - } - [Test] - public void Test_7717() - { - } - [Test] - public void Test_7718() - { - } - [Test] - public void Test_7719() - { - } - [Test] - public void Test_7720() - { - } - [Test] - public void Test_7721() - { - } - [Test] - public void Test_7722() - { - } - [Test] - public void Test_7723() - { - } - [Test] - public void Test_7724() - { - } - [Test] - public void Test_7725() - { - } - [Test] - public void Test_7726() - { - } - [Test] - public void Test_7727() - { - } - [Test] - public void Test_7728() - { - } - [Test] - public void Test_7729() - { - } - [Test] - public void Test_7730() - { - } - [Test] - public void Test_7731() - { - } - [Test] - public void Test_7732() - { - } - [Test] - public void Test_7733() - { - } - [Test] - public void Test_7734() - { - } - [Test] - public void Test_7735() - { - } - [Test] - public void Test_7736() - { - } - [Test] - public void Test_7737() - { - } - [Test] - public void Test_7738() - { - } - [Test] - public void Test_7739() - { - } - [Test] - public void Test_7740() - { - } - [Test] - public void Test_7741() - { - } - [Test] - public void Test_7742() - { - } - [Test] - public void Test_7743() - { - } - [Test] - public void Test_7744() - { - } - [Test] - public void Test_7745() - { - } - [Test] - public void Test_7746() - { - } - [Test] - public void Test_7747() - { - } - [Test] - public void Test_7748() - { - } - [Test] - public void Test_7749() - { - } - [Test] - public void Test_7750() - { - } - [Test] - public void Test_7751() - { - } - [Test] - public void Test_7752() - { - } - [Test] - public void Test_7753() - { - } - [Test] - public void Test_7754() - { - } - [Test] - public void Test_7755() - { - } - [Test] - public void Test_7756() - { - } - [Test] - public void Test_7757() - { - } - [Test] - public void Test_7758() - { - } - [Test] - public void Test_7759() - { - } - [Test] - public void Test_7760() - { - } - [Test] - public void Test_7761() - { - } - [Test] - public void Test_7762() - { - } - [Test] - public void Test_7763() - { - } - [Test] - public void Test_7764() - { - } - [Test] - public void Test_7765() - { - } - [Test] - public void Test_7766() - { - } - [Test] - public void Test_7767() - { - } - [Test] - public void Test_7768() - { - } - [Test] - public void Test_7769() - { - } - [Test] - public void Test_7770() - { - } - [Test] - public void Test_7771() - { - } - [Test] - public void Test_7772() - { - } - [Test] - public void Test_7773() - { - } - [Test] - public void Test_7774() - { - } - [Test] - public void Test_7775() - { - } - [Test] - public void Test_7776() - { - } - [Test] - public void Test_7777() - { - } - [Test] - public void Test_7778() - { - } - [Test] - public void Test_7779() - { - } - [Test] - public void Test_7780() - { - } - [Test] - public void Test_7781() - { - } - [Test] - public void Test_7782() - { - } - [Test] - public void Test_7783() - { - } - [Test] - public void Test_7784() - { - } - [Test] - public void Test_7785() - { - } - [Test] - public void Test_7786() - { - } - [Test] - public void Test_7787() - { - } - [Test] - public void Test_7788() - { - } - [Test] - public void Test_7789() - { - } - [Test] - public void Test_7790() - { - } - [Test] - public void Test_7791() - { - } - [Test] - public void Test_7792() - { - } - [Test] - public void Test_7793() - { - } - [Test] - public void Test_7794() - { - } - [Test] - public void Test_7795() - { - } - [Test] - public void Test_7796() - { - } - [Test] - public void Test_7797() - { - } - [Test] - public void Test_7798() - { - } - [Test] - public void Test_7799() - { - } - [Test] - public void Test_7800() - { - } - [Test] - public void Test_7801() - { - } - [Test] - public void Test_7802() - { - } - [Test] - public void Test_7803() - { - } - [Test] - public void Test_7804() - { - } - [Test] - public void Test_7805() - { - } - [Test] - public void Test_7806() - { - } - [Test] - public void Test_7807() - { - } - [Test] - public void Test_7808() - { - } - [Test] - public void Test_7809() - { - } - [Test] - public void Test_7810() - { - } - [Test] - public void Test_7811() - { - } - [Test] - public void Test_7812() - { - } - [Test] - public void Test_7813() - { - } - [Test] - public void Test_7814() - { - } - [Test] - public void Test_7815() - { - } - [Test] - public void Test_7816() - { - } - [Test] - public void Test_7817() - { - } - [Test] - public void Test_7818() - { - } - [Test] - public void Test_7819() - { - } - [Test] - public void Test_7820() - { - } - [Test] - public void Test_7821() - { - } - [Test] - public void Test_7822() - { - } - [Test] - public void Test_7823() - { - } - [Test] - public void Test_7824() - { - } - [Test] - public void Test_7825() - { - } - [Test] - public void Test_7826() - { - } - [Test] - public void Test_7827() - { - } - [Test] - public void Test_7828() - { - } - [Test] - public void Test_7829() - { - } - [Test] - public void Test_7830() - { - } - [Test] - public void Test_7831() - { - } - [Test] - public void Test_7832() - { - } - [Test] - public void Test_7833() - { - } - [Test] - public void Test_7834() - { - } - [Test] - public void Test_7835() - { - } - [Test] - public void Test_7836() - { - } - [Test] - public void Test_7837() - { - } - [Test] - public void Test_7838() - { - } - [Test] - public void Test_7839() - { - } - [Test] - public void Test_7840() - { - } - [Test] - public void Test_7841() - { - } - [Test] - public void Test_7842() - { - } - [Test] - public void Test_7843() - { - } - [Test] - public void Test_7844() - { - } - [Test] - public void Test_7845() - { - } - [Test] - public void Test_7846() - { - } - [Test] - public void Test_7847() - { - } - [Test] - public void Test_7848() - { - } - [Test] - public void Test_7849() - { - } - [Test] - public void Test_7850() - { - } - [Test] - public void Test_7851() - { - } - [Test] - public void Test_7852() - { - } - [Test] - public void Test_7853() - { - } - [Test] - public void Test_7854() - { - } - [Test] - public void Test_7855() - { - } - [Test] - public void Test_7856() - { - } - [Test] - public void Test_7857() - { - } - [Test] - public void Test_7858() - { - } - [Test] - public void Test_7859() - { - } - [Test] - public void Test_7860() - { - } - [Test] - public void Test_7861() - { - } - [Test] - public void Test_7862() - { - } - [Test] - public void Test_7863() - { - } - [Test] - public void Test_7864() - { - } - [Test] - public void Test_7865() - { - } - [Test] - public void Test_7866() - { - } - [Test] - public void Test_7867() - { - } - [Test] - public void Test_7868() - { - } - [Test] - public void Test_7869() - { - } - [Test] - public void Test_7870() - { - } - [Test] - public void Test_7871() - { - } - [Test] - public void Test_7872() - { - } - [Test] - public void Test_7873() - { - } - [Test] - public void Test_7874() - { - } - [Test] - public void Test_7875() - { - } - [Test] - public void Test_7876() - { - } - [Test] - public void Test_7877() - { - } - [Test] - public void Test_7878() - { - } - [Test] - public void Test_7879() - { - } - [Test] - public void Test_7880() - { - } - [Test] - public void Test_7881() - { - } - [Test] - public void Test_7882() - { - } - [Test] - public void Test_7883() - { - } - [Test] - public void Test_7884() - { - } - [Test] - public void Test_7885() - { - } - [Test] - public void Test_7886() - { - } - [Test] - public void Test_7887() - { - } - [Test] - public void Test_7888() - { - } - [Test] - public void Test_7889() - { - } - [Test] - public void Test_7890() - { - } - [Test] - public void Test_7891() - { - } - [Test] - public void Test_7892() - { - } - [Test] - public void Test_7893() - { - } - [Test] - public void Test_7894() - { - } - [Test] - public void Test_7895() - { - } - [Test] - public void Test_7896() - { - } - [Test] - public void Test_7897() - { - } - [Test] - public void Test_7898() - { - } - [Test] - public void Test_7899() - { - } - [Test] - public void Test_7900() - { - } - [Test] - public void Test_7901() - { - } - [Test] - public void Test_7902() - { - } - [Test] - public void Test_7903() - { - } - [Test] - public void Test_7904() - { - } - [Test] - public void Test_7905() - { - } - [Test] - public void Test_7906() - { - } - [Test] - public void Test_7907() - { - } - [Test] - public void Test_7908() - { - } - [Test] - public void Test_7909() - { - } - [Test] - public void Test_7910() - { - } - [Test] - public void Test_7911() - { - } - [Test] - public void Test_7912() - { - } - [Test] - public void Test_7913() - { - } - [Test] - public void Test_7914() - { - } - [Test] - public void Test_7915() - { - } - [Test] - public void Test_7916() - { - } - [Test] - public void Test_7917() - { - } - [Test] - public void Test_7918() - { - } - [Test] - public void Test_7919() - { - } - [Test] - public void Test_7920() - { - } - [Test] - public void Test_7921() - { - } - [Test] - public void Test_7922() - { - } - [Test] - public void Test_7923() - { - } - [Test] - public void Test_7924() - { - } - [Test] - public void Test_7925() - { - } - [Test] - public void Test_7926() - { - } - [Test] - public void Test_7927() - { - } - [Test] - public void Test_7928() - { - } - [Test] - public void Test_7929() - { - } - [Test] - public void Test_7930() - { - } - [Test] - public void Test_7931() - { - } - [Test] - public void Test_7932() - { - } - [Test] - public void Test_7933() - { - } - [Test] - public void Test_7934() - { - } - [Test] - public void Test_7935() - { - } - [Test] - public void Test_7936() - { - } - [Test] - public void Test_7937() - { - } - [Test] - public void Test_7938() - { - } - [Test] - public void Test_7939() - { - } - [Test] - public void Test_7940() - { - } - [Test] - public void Test_7941() - { - } - [Test] - public void Test_7942() - { - } - [Test] - public void Test_7943() - { - } - [Test] - public void Test_7944() - { - } - [Test] - public void Test_7945() - { - } - [Test] - public void Test_7946() - { - } - [Test] - public void Test_7947() - { - } - [Test] - public void Test_7948() - { - } - [Test] - public void Test_7949() - { - } - [Test] - public void Test_7950() - { - } - [Test] - public void Test_7951() - { - } - [Test] - public void Test_7952() - { - } - [Test] - public void Test_7953() - { - } - [Test] - public void Test_7954() - { - } - [Test] - public void Test_7955() - { - } - [Test] - public void Test_7956() - { - } - [Test] - public void Test_7957() - { - } - [Test] - public void Test_7958() - { - } - [Test] - public void Test_7959() - { - } - [Test] - public void Test_7960() - { - } - [Test] - public void Test_7961() - { - } - [Test] - public void Test_7962() - { - } - [Test] - public void Test_7963() - { - } - [Test] - public void Test_7964() - { - } - [Test] - public void Test_7965() - { - } - [Test] - public void Test_7966() - { - } - [Test] - public void Test_7967() - { - } - [Test] - public void Test_7968() - { - } - [Test] - public void Test_7969() - { - } - [Test] - public void Test_7970() - { - } - [Test] - public void Test_7971() - { - } - [Test] - public void Test_7972() - { - } - [Test] - public void Test_7973() - { - } - [Test] - public void Test_7974() - { - } - [Test] - public void Test_7975() - { - } - [Test] - public void Test_7976() - { - } - [Test] - public void Test_7977() - { - } - [Test] - public void Test_7978() - { - } - [Test] - public void Test_7979() - { - } - [Test] - public void Test_7980() - { - } - [Test] - public void Test_7981() - { - } - [Test] - public void Test_7982() - { - } - [Test] - public void Test_7983() - { - } - [Test] - public void Test_7984() - { - } - [Test] - public void Test_7985() - { - } - [Test] - public void Test_7986() - { - } - [Test] - public void Test_7987() - { - } - [Test] - public void Test_7988() - { - } - [Test] - public void Test_7989() - { - } - [Test] - public void Test_7990() - { - } - [Test] - public void Test_7991() - { - } - [Test] - public void Test_7992() - { - } - [Test] - public void Test_7993() - { - } - [Test] - public void Test_7994() - { - } - [Test] - public void Test_7995() - { - } - [Test] - public void Test_7996() - { - } - [Test] - public void Test_7997() - { - } - [Test] - public void Test_7998() - { - } - [Test] - public void Test_7999() - { - } - [Test] - public void Test_8000() - { - } - [Test] - public void Test_8001() - { - } - [Test] - public void Test_8002() - { - } - [Test] - public void Test_8003() - { - } - [Test] - public void Test_8004() - { - } - [Test] - public void Test_8005() - { - } - [Test] - public void Test_8006() - { - } - [Test] - public void Test_8007() - { - } - [Test] - public void Test_8008() - { - } - [Test] - public void Test_8009() - { - } - [Test] - public void Test_8010() - { - } - [Test] - public void Test_8011() - { - } - [Test] - public void Test_8012() - { - } - [Test] - public void Test_8013() - { - } - [Test] - public void Test_8014() - { - } - [Test] - public void Test_8015() - { - } - [Test] - public void Test_8016() - { - } - [Test] - public void Test_8017() - { - } - [Test] - public void Test_8018() - { - } - [Test] - public void Test_8019() - { - } - [Test] - public void Test_8020() - { - } - [Test] - public void Test_8021() - { - } - [Test] - public void Test_8022() - { - } - [Test] - public void Test_8023() - { - } - [Test] - public void Test_8024() - { - } - [Test] - public void Test_8025() - { - } - [Test] - public void Test_8026() - { - } - [Test] - public void Test_8027() - { - } - [Test] - public void Test_8028() - { - } - [Test] - public void Test_8029() - { - } - [Test] - public void Test_8030() - { - } - [Test] - public void Test_8031() - { - } - [Test] - public void Test_8032() - { - } - [Test] - public void Test_8033() - { - } - [Test] - public void Test_8034() - { - } - [Test] - public void Test_8035() - { - } - [Test] - public void Test_8036() - { - } - [Test] - public void Test_8037() - { - } - [Test] - public void Test_8038() - { - } - [Test] - public void Test_8039() - { - } - [Test] - public void Test_8040() - { - } - [Test] - public void Test_8041() - { - } - [Test] - public void Test_8042() - { - } - [Test] - public void Test_8043() - { - } - [Test] - public void Test_8044() - { - } - [Test] - public void Test_8045() - { - } - [Test] - public void Test_8046() - { - } - [Test] - public void Test_8047() - { - } - [Test] - public void Test_8048() - { - } - [Test] - public void Test_8049() - { - } - [Test] - public void Test_8050() - { - } - [Test] - public void Test_8051() - { - } - [Test] - public void Test_8052() - { - } - [Test] - public void Test_8053() - { - } - [Test] - public void Test_8054() - { - } - [Test] - public void Test_8055() - { - } - [Test] - public void Test_8056() - { - } - [Test] - public void Test_8057() - { - } - [Test] - public void Test_8058() - { - } - [Test] - public void Test_8059() - { - } - [Test] - public void Test_8060() - { - } - [Test] - public void Test_8061() - { - } - [Test] - public void Test_8062() - { - } - [Test] - public void Test_8063() - { - } - [Test] - public void Test_8064() - { - } - [Test] - public void Test_8065() - { - } - [Test] - public void Test_8066() - { - } - [Test] - public void Test_8067() - { - } - [Test] - public void Test_8068() - { - } - [Test] - public void Test_8069() - { - } - [Test] - public void Test_8070() - { - } - [Test] - public void Test_8071() - { - } - [Test] - public void Test_8072() - { - } - [Test] - public void Test_8073() - { - } - [Test] - public void Test_8074() - { - } - [Test] - public void Test_8075() - { - } - [Test] - public void Test_8076() - { - } - [Test] - public void Test_8077() - { - } - [Test] - public void Test_8078() - { - } - [Test] - public void Test_8079() - { - } - [Test] - public void Test_8080() - { - } - [Test] - public void Test_8081() - { - } - [Test] - public void Test_8082() - { - } - [Test] - public void Test_8083() - { - } - [Test] - public void Test_8084() - { - } - [Test] - public void Test_8085() - { - } - [Test] - public void Test_8086() - { - } - [Test] - public void Test_8087() - { - } - [Test] - public void Test_8088() - { - } - [Test] - public void Test_8089() - { - } - [Test] - public void Test_8090() - { - } - [Test] - public void Test_8091() - { - } - [Test] - public void Test_8092() - { - } - [Test] - public void Test_8093() - { - } - [Test] - public void Test_8094() - { - } - [Test] - public void Test_8095() - { - } - [Test] - public void Test_8096() - { - } - [Test] - public void Test_8097() - { - } - [Test] - public void Test_8098() - { - } - [Test] - public void Test_8099() - { - } - [Test] - public void Test_8100() - { - } - [Test] - public void Test_8101() - { - } - [Test] - public void Test_8102() - { - } - [Test] - public void Test_8103() - { - } - [Test] - public void Test_8104() - { - } - [Test] - public void Test_8105() - { - } - [Test] - public void Test_8106() - { - } - [Test] - public void Test_8107() - { - } - [Test] - public void Test_8108() - { - } - [Test] - public void Test_8109() - { - } - [Test] - public void Test_8110() - { - } - [Test] - public void Test_8111() - { - } - [Test] - public void Test_8112() - { - } - [Test] - public void Test_8113() - { - } - [Test] - public void Test_8114() - { - } - [Test] - public void Test_8115() - { - } - [Test] - public void Test_8116() - { - } - [Test] - public void Test_8117() - { - } - [Test] - public void Test_8118() - { - } - [Test] - public void Test_8119() - { - } - [Test] - public void Test_8120() - { - } - [Test] - public void Test_8121() - { - } - [Test] - public void Test_8122() - { - } - [Test] - public void Test_8123() - { - } - [Test] - public void Test_8124() - { - } - [Test] - public void Test_8125() - { - } - [Test] - public void Test_8126() - { - } - [Test] - public void Test_8127() - { - } - [Test] - public void Test_8128() - { - } - [Test] - public void Test_8129() - { - } - [Test] - public void Test_8130() - { - } - [Test] - public void Test_8131() - { - } - [Test] - public void Test_8132() - { - } - [Test] - public void Test_8133() - { - } - [Test] - public void Test_8134() - { - } - [Test] - public void Test_8135() - { - } - [Test] - public void Test_8136() - { - } - [Test] - public void Test_8137() - { - } - [Test] - public void Test_8138() - { - } - [Test] - public void Test_8139() - { - } - [Test] - public void Test_8140() - { - } - [Test] - public void Test_8141() - { - } - [Test] - public void Test_8142() - { - } - [Test] - public void Test_8143() - { - } - [Test] - public void Test_8144() - { - } - [Test] - public void Test_8145() - { - } - [Test] - public void Test_8146() - { - } - [Test] - public void Test_8147() - { - } - [Test] - public void Test_8148() - { - } - [Test] - public void Test_8149() - { - } - [Test] - public void Test_8150() - { - } - [Test] - public void Test_8151() - { - } - [Test] - public void Test_8152() - { - } - [Test] - public void Test_8153() - { - } - [Test] - public void Test_8154() - { - } - [Test] - public void Test_8155() - { - } - [Test] - public void Test_8156() - { - } - [Test] - public void Test_8157() - { - } - [Test] - public void Test_8158() - { - } - [Test] - public void Test_8159() - { - } - [Test] - public void Test_8160() - { - } - [Test] - public void Test_8161() - { - } - [Test] - public void Test_8162() - { - } - [Test] - public void Test_8163() - { - } - [Test] - public void Test_8164() - { - } - [Test] - public void Test_8165() - { - } - [Test] - public void Test_8166() - { - } - [Test] - public void Test_8167() - { - } - [Test] - public void Test_8168() - { - } - [Test] - public void Test_8169() - { - } - [Test] - public void Test_8170() - { - } - [Test] - public void Test_8171() - { - } - [Test] - public void Test_8172() - { - } - [Test] - public void Test_8173() - { - } - [Test] - public void Test_8174() - { - } - [Test] - public void Test_8175() - { - } - [Test] - public void Test_8176() - { - } - [Test] - public void Test_8177() - { - } - [Test] - public void Test_8178() - { - } - [Test] - public void Test_8179() - { - } - [Test] - public void Test_8180() - { - } - [Test] - public void Test_8181() - { - } - [Test] - public void Test_8182() - { - } - [Test] - public void Test_8183() - { - } - [Test] - public void Test_8184() - { - } - [Test] - public void Test_8185() - { - } - [Test] - public void Test_8186() - { - } - [Test] - public void Test_8187() - { - } - [Test] - public void Test_8188() - { - } - [Test] - public void Test_8189() - { - } - [Test] - public void Test_8190() - { - } - [Test] - public void Test_8191() - { - } - [Test] - public void Test_8192() - { - } - [Test] - public void Test_8193() - { - } - [Test] - public void Test_8194() - { - } - [Test] - public void Test_8195() - { - } - [Test] - public void Test_8196() - { - } - [Test] - public void Test_8197() - { - } - [Test] - public void Test_8198() - { - } - [Test] - public void Test_8199() - { - } - [Test] - public void Test_8200() - { - } - [Test] - public void Test_8201() - { - } - [Test] - public void Test_8202() - { - } - [Test] - public void Test_8203() - { - } - [Test] - public void Test_8204() - { - } - [Test] - public void Test_8205() - { - } - [Test] - public void Test_8206() - { - } - [Test] - public void Test_8207() - { - } - [Test] - public void Test_8208() - { - } - [Test] - public void Test_8209() - { - } - [Test] - public void Test_8210() - { - } - [Test] - public void Test_8211() - { - } - [Test] - public void Test_8212() - { - } - [Test] - public void Test_8213() - { - } - [Test] - public void Test_8214() - { - } - [Test] - public void Test_8215() - { - } - [Test] - public void Test_8216() - { - } - [Test] - public void Test_8217() - { - } - [Test] - public void Test_8218() - { - } - [Test] - public void Test_8219() - { - } - [Test] - public void Test_8220() - { - } - [Test] - public void Test_8221() - { - } - [Test] - public void Test_8222() - { - } - [Test] - public void Test_8223() - { - } - [Test] - public void Test_8224() - { - } - [Test] - public void Test_8225() - { - } - [Test] - public void Test_8226() - { - } - [Test] - public void Test_8227() - { - } - [Test] - public void Test_8228() - { - } - [Test] - public void Test_8229() - { - } - [Test] - public void Test_8230() - { - } - [Test] - public void Test_8231() - { - } - [Test] - public void Test_8232() - { - } - [Test] - public void Test_8233() - { - } - [Test] - public void Test_8234() - { - } - [Test] - public void Test_8235() - { - } - [Test] - public void Test_8236() - { - } - [Test] - public void Test_8237() - { - } - [Test] - public void Test_8238() - { - } - [Test] - public void Test_8239() - { - } - [Test] - public void Test_8240() - { - } - [Test] - public void Test_8241() - { - } - [Test] - public void Test_8242() - { - } - [Test] - public void Test_8243() - { - } - [Test] - public void Test_8244() - { - } - [Test] - public void Test_8245() - { - } - [Test] - public void Test_8246() - { - } - [Test] - public void Test_8247() - { - } - [Test] - public void Test_8248() - { - } - [Test] - public void Test_8249() - { - } - [Test] - public void Test_8250() - { - } - [Test] - public void Test_8251() - { - } - [Test] - public void Test_8252() - { - } - [Test] - public void Test_8253() - { - } - [Test] - public void Test_8254() - { - } - [Test] - public void Test_8255() - { - } - [Test] - public void Test_8256() - { - } - [Test] - public void Test_8257() - { - } - [Test] - public void Test_8258() - { - } - [Test] - public void Test_8259() - { - } - [Test] - public void Test_8260() - { - } - [Test] - public void Test_8261() - { - } - [Test] - public void Test_8262() - { - } - [Test] - public void Test_8263() - { - } - [Test] - public void Test_8264() - { - } - [Test] - public void Test_8265() - { - } - [Test] - public void Test_8266() - { - } - [Test] - public void Test_8267() - { - } - [Test] - public void Test_8268() - { - } - [Test] - public void Test_8269() - { - } - [Test] - public void Test_8270() - { - } - [Test] - public void Test_8271() - { - } - [Test] - public void Test_8272() - { - } - [Test] - public void Test_8273() - { - } - [Test] - public void Test_8274() - { - } - [Test] - public void Test_8275() - { - } - [Test] - public void Test_8276() - { - } - [Test] - public void Test_8277() - { - } - [Test] - public void Test_8278() - { - } - [Test] - public void Test_8279() - { - } - [Test] - public void Test_8280() - { - } - [Test] - public void Test_8281() - { - } - [Test] - public void Test_8282() - { - } - [Test] - public void Test_8283() - { - } - [Test] - public void Test_8284() - { - } - [Test] - public void Test_8285() - { - } - [Test] - public void Test_8286() - { - } - [Test] - public void Test_8287() - { - } - [Test] - public void Test_8288() - { - } - [Test] - public void Test_8289() - { - } - [Test] - public void Test_8290() - { - } - [Test] - public void Test_8291() - { - } - [Test] - public void Test_8292() - { - } - [Test] - public void Test_8293() - { - } - [Test] - public void Test_8294() - { - } - [Test] - public void Test_8295() - { - } - [Test] - public void Test_8296() - { - } - [Test] - public void Test_8297() - { - } - [Test] - public void Test_8298() - { - } - [Test] - public void Test_8299() - { - } - [Test] - public void Test_8300() - { - } - [Test] - public void Test_8301() - { - } - [Test] - public void Test_8302() - { - } - [Test] - public void Test_8303() - { - } - [Test] - public void Test_8304() - { - } - [Test] - public void Test_8305() - { - } - [Test] - public void Test_8306() - { - } - [Test] - public void Test_8307() - { - } - [Test] - public void Test_8308() - { - } - [Test] - public void Test_8309() - { - } - [Test] - public void Test_8310() - { - } - [Test] - public void Test_8311() - { - } - [Test] - public void Test_8312() - { - } - [Test] - public void Test_8313() - { - } - [Test] - public void Test_8314() - { - } - [Test] - public void Test_8315() - { - } - [Test] - public void Test_8316() - { - } - [Test] - public void Test_8317() - { - } - [Test] - public void Test_8318() - { - } - [Test] - public void Test_8319() - { - } - [Test] - public void Test_8320() - { - } - [Test] - public void Test_8321() - { - } - [Test] - public void Test_8322() - { - } - [Test] - public void Test_8323() - { - } - [Test] - public void Test_8324() - { - } - [Test] - public void Test_8325() - { - } - [Test] - public void Test_8326() - { - } - [Test] - public void Test_8327() - { - } - [Test] - public void Test_8328() - { - } - [Test] - public void Test_8329() - { - } - [Test] - public void Test_8330() - { - } - [Test] - public void Test_8331() - { - } - [Test] - public void Test_8332() - { - } - [Test] - public void Test_8333() - { - } - [Test] - public void Test_8334() - { - } - [Test] - public void Test_8335() - { - } - [Test] - public void Test_8336() - { - } - [Test] - public void Test_8337() - { - } - [Test] - public void Test_8338() - { - } - [Test] - public void Test_8339() - { - } - [Test] - public void Test_8340() - { - } - [Test] - public void Test_8341() - { - } - [Test] - public void Test_8342() - { - } - [Test] - public void Test_8343() - { - } - [Test] - public void Test_8344() - { - } - [Test] - public void Test_8345() - { - } - [Test] - public void Test_8346() - { - } - [Test] - public void Test_8347() - { - } - [Test] - public void Test_8348() - { - } - [Test] - public void Test_8349() - { - } - [Test] - public void Test_8350() - { - } - [Test] - public void Test_8351() - { - } - [Test] - public void Test_8352() - { - } - [Test] - public void Test_8353() - { - } - [Test] - public void Test_8354() - { - } - [Test] - public void Test_8355() - { - } - [Test] - public void Test_8356() - { - } - [Test] - public void Test_8357() - { - } - [Test] - public void Test_8358() - { - } - [Test] - public void Test_8359() - { - } - [Test] - public void Test_8360() - { - } - [Test] - public void Test_8361() - { - } - [Test] - public void Test_8362() - { - } - [Test] - public void Test_8363() - { - } - [Test] - public void Test_8364() - { - } - [Test] - public void Test_8365() - { - } - [Test] - public void Test_8366() - { - } - [Test] - public void Test_8367() - { - } - [Test] - public void Test_8368() - { - } - [Test] - public void Test_8369() - { - } - [Test] - public void Test_8370() - { - } - [Test] - public void Test_8371() - { - } - [Test] - public void Test_8372() - { - } - [Test] - public void Test_8373() - { - } - [Test] - public void Test_8374() - { - } - [Test] - public void Test_8375() - { - } - [Test] - public void Test_8376() - { - } - [Test] - public void Test_8377() - { - } - [Test] - public void Test_8378() - { - } - [Test] - public void Test_8379() - { - } - [Test] - public void Test_8380() - { - } - [Test] - public void Test_8381() - { - } - [Test] - public void Test_8382() - { - } - [Test] - public void Test_8383() - { - } - [Test] - public void Test_8384() - { - } - [Test] - public void Test_8385() - { - } - [Test] - public void Test_8386() - { - } - [Test] - public void Test_8387() - { - } - [Test] - public void Test_8388() - { - } - [Test] - public void Test_8389() - { - } - [Test] - public void Test_8390() - { - } - [Test] - public void Test_8391() - { - } - [Test] - public void Test_8392() - { - } - [Test] - public void Test_8393() - { - } - [Test] - public void Test_8394() - { - } - [Test] - public void Test_8395() - { - } - [Test] - public void Test_8396() - { - } - [Test] - public void Test_8397() - { - } - [Test] - public void Test_8398() - { - } - [Test] - public void Test_8399() - { - } - [Test] - public void Test_8400() - { - } - [Test] - public void Test_8401() - { - } - [Test] - public void Test_8402() - { - } - [Test] - public void Test_8403() - { - } - [Test] - public void Test_8404() - { - } - [Test] - public void Test_8405() - { - } - [Test] - public void Test_8406() - { - } - [Test] - public void Test_8407() - { - } - [Test] - public void Test_8408() - { - } - [Test] - public void Test_8409() - { - } - [Test] - public void Test_8410() - { - } - [Test] - public void Test_8411() - { - } - [Test] - public void Test_8412() - { - } - [Test] - public void Test_8413() - { - } - [Test] - public void Test_8414() - { - } - [Test] - public void Test_8415() - { - } - [Test] - public void Test_8416() - { - } - [Test] - public void Test_8417() - { - } - [Test] - public void Test_8418() - { - } - [Test] - public void Test_8419() - { - } - [Test] - public void Test_8420() - { - } - [Test] - public void Test_8421() - { - } - [Test] - public void Test_8422() - { - } - [Test] - public void Test_8423() - { - } - [Test] - public void Test_8424() - { - } - [Test] - public void Test_8425() - { - } - [Test] - public void Test_8426() - { - } - [Test] - public void Test_8427() - { - } - [Test] - public void Test_8428() - { - } - [Test] - public void Test_8429() - { - } - [Test] - public void Test_8430() - { - } - [Test] - public void Test_8431() - { - } - [Test] - public void Test_8432() - { - } - [Test] - public void Test_8433() - { - } - [Test] - public void Test_8434() - { - } - [Test] - public void Test_8435() - { - } - [Test] - public void Test_8436() - { - } - [Test] - public void Test_8437() - { - } - [Test] - public void Test_8438() - { - } - [Test] - public void Test_8439() - { - } - [Test] - public void Test_8440() - { - } - [Test] - public void Test_8441() - { - } - [Test] - public void Test_8442() - { - } - [Test] - public void Test_8443() - { - } - [Test] - public void Test_8444() - { - } - [Test] - public void Test_8445() - { - } - [Test] - public void Test_8446() - { - } - [Test] - public void Test_8447() - { - } - [Test] - public void Test_8448() - { - } - [Test] - public void Test_8449() - { - } - [Test] - public void Test_8450() - { - } - [Test] - public void Test_8451() - { - } - [Test] - public void Test_8452() - { - } - [Test] - public void Test_8453() - { - } - [Test] - public void Test_8454() - { - } - [Test] - public void Test_8455() - { - } - [Test] - public void Test_8456() - { - } - [Test] - public void Test_8457() - { - } - [Test] - public void Test_8458() - { - } - [Test] - public void Test_8459() - { - } - [Test] - public void Test_8460() - { - } - [Test] - public void Test_8461() - { - } - [Test] - public void Test_8462() - { - } - [Test] - public void Test_8463() - { - } - [Test] - public void Test_8464() - { - } - [Test] - public void Test_8465() - { - } - [Test] - public void Test_8466() - { - } - [Test] - public void Test_8467() - { - } - [Test] - public void Test_8468() - { - } - [Test] - public void Test_8469() - { - } - [Test] - public void Test_8470() - { - } - [Test] - public void Test_8471() - { - } - [Test] - public void Test_8472() - { - } - [Test] - public void Test_8473() - { - } - [Test] - public void Test_8474() - { - } - [Test] - public void Test_8475() - { - } - [Test] - public void Test_8476() - { - } - [Test] - public void Test_8477() - { - } - [Test] - public void Test_8478() - { - } - [Test] - public void Test_8479() - { - } - [Test] - public void Test_8480() - { - } - [Test] - public void Test_8481() - { - } - [Test] - public void Test_8482() - { - } - [Test] - public void Test_8483() - { - } - [Test] - public void Test_8484() - { - } - [Test] - public void Test_8485() - { - } - [Test] - public void Test_8486() - { - } - [Test] - public void Test_8487() - { - } - [Test] - public void Test_8488() - { - } - [Test] - public void Test_8489() - { - } - [Test] - public void Test_8490() - { - } - [Test] - public void Test_8491() - { - } - [Test] - public void Test_8492() - { - } - [Test] - public void Test_8493() - { - } - [Test] - public void Test_8494() - { - } - [Test] - public void Test_8495() - { - } - [Test] - public void Test_8496() - { - } - [Test] - public void Test_8497() - { - } - [Test] - public void Test_8498() - { - } - [Test] - public void Test_8499() - { - } - [Test] - public void Test_8500() - { - } - [Test] - public void Test_8501() - { - } - [Test] - public void Test_8502() - { - } - [Test] - public void Test_8503() - { - } - [Test] - public void Test_8504() - { - } - [Test] - public void Test_8505() - { - } - [Test] - public void Test_8506() - { - } - [Test] - public void Test_8507() - { - } - [Test] - public void Test_8508() - { - } - [Test] - public void Test_8509() - { - } - [Test] - public void Test_8510() - { - } - [Test] - public void Test_8511() - { - } - [Test] - public void Test_8512() - { - } - [Test] - public void Test_8513() - { - } - [Test] - public void Test_8514() - { - } - [Test] - public void Test_8515() - { - } - [Test] - public void Test_8516() - { - } - [Test] - public void Test_8517() - { - } - [Test] - public void Test_8518() - { - } - [Test] - public void Test_8519() - { - } - [Test] - public void Test_8520() - { - } - [Test] - public void Test_8521() - { - } - [Test] - public void Test_8522() - { - } - [Test] - public void Test_8523() - { - } - [Test] - public void Test_8524() - { - } - [Test] - public void Test_8525() - { - } - [Test] - public void Test_8526() - { - } - [Test] - public void Test_8527() - { - } - [Test] - public void Test_8528() - { - } - [Test] - public void Test_8529() - { - } - [Test] - public void Test_8530() - { - } - [Test] - public void Test_8531() - { - } - [Test] - public void Test_8532() - { - } - [Test] - public void Test_8533() - { - } - [Test] - public void Test_8534() - { - } - [Test] - public void Test_8535() - { - } - [Test] - public void Test_8536() - { - } - [Test] - public void Test_8537() - { - } - [Test] - public void Test_8538() - { - } - [Test] - public void Test_8539() - { - } - [Test] - public void Test_8540() - { - } - [Test] - public void Test_8541() - { - } - [Test] - public void Test_8542() - { - } - [Test] - public void Test_8543() - { - } - [Test] - public void Test_8544() - { - } - [Test] - public void Test_8545() - { - } - [Test] - public void Test_8546() - { - } - [Test] - public void Test_8547() - { - } - [Test] - public void Test_8548() - { - } - [Test] - public void Test_8549() - { - } - [Test] - public void Test_8550() - { - } - [Test] - public void Test_8551() - { - } - [Test] - public void Test_8552() - { - } - [Test] - public void Test_8553() - { - } - [Test] - public void Test_8554() - { - } - [Test] - public void Test_8555() - { - } - [Test] - public void Test_8556() - { - } - [Test] - public void Test_8557() - { - } - [Test] - public void Test_8558() - { - } - [Test] - public void Test_8559() - { - } - [Test] - public void Test_8560() - { - } - [Test] - public void Test_8561() - { - } - [Test] - public void Test_8562() - { - } - [Test] - public void Test_8563() - { - } - [Test] - public void Test_8564() - { - } - [Test] - public void Test_8565() - { - } - [Test] - public void Test_8566() - { - } - [Test] - public void Test_8567() - { - } - [Test] - public void Test_8568() - { - } - [Test] - public void Test_8569() - { - } - [Test] - public void Test_8570() - { - } - [Test] - public void Test_8571() - { - } - [Test] - public void Test_8572() - { - } - [Test] - public void Test_8573() - { - } - [Test] - public void Test_8574() - { - } - [Test] - public void Test_8575() - { - } - [Test] - public void Test_8576() - { - } - [Test] - public void Test_8577() - { - } - [Test] - public void Test_8578() - { - } - [Test] - public void Test_8579() - { - } - [Test] - public void Test_8580() - { - } - [Test] - public void Test_8581() - { - } - [Test] - public void Test_8582() - { - } - [Test] - public void Test_8583() - { - } - [Test] - public void Test_8584() - { - } - [Test] - public void Test_8585() - { - } - [Test] - public void Test_8586() - { - } - [Test] - public void Test_8587() - { - } - [Test] - public void Test_8588() - { - } - [Test] - public void Test_8589() - { - } - [Test] - public void Test_8590() - { - } - [Test] - public void Test_8591() - { - } - [Test] - public void Test_8592() - { - } - [Test] - public void Test_8593() - { - } - [Test] - public void Test_8594() - { - } - [Test] - public void Test_8595() - { - } - [Test] - public void Test_8596() - { - } - [Test] - public void Test_8597() - { - } - [Test] - public void Test_8598() - { - } - [Test] - public void Test_8599() - { - } - [Test] - public void Test_8600() - { - } - [Test] - public void Test_8601() - { - } - [Test] - public void Test_8602() - { - } - [Test] - public void Test_8603() - { - } - [Test] - public void Test_8604() - { - } - [Test] - public void Test_8605() - { - } - [Test] - public void Test_8606() - { - } - [Test] - public void Test_8607() - { - } - [Test] - public void Test_8608() - { - } - [Test] - public void Test_8609() - { - } - [Test] - public void Test_8610() - { - } - [Test] - public void Test_8611() - { - } - [Test] - public void Test_8612() - { - } - [Test] - public void Test_8613() - { - } - [Test] - public void Test_8614() - { - } - [Test] - public void Test_8615() - { - } - [Test] - public void Test_8616() - { - } - [Test] - public void Test_8617() - { - } - [Test] - public void Test_8618() - { - } - [Test] - public void Test_8619() - { - } - [Test] - public void Test_8620() - { - } - [Test] - public void Test_8621() - { - } - [Test] - public void Test_8622() - { - } - [Test] - public void Test_8623() - { - } - [Test] - public void Test_8624() - { - } - [Test] - public void Test_8625() - { - } - [Test] - public void Test_8626() - { - } - [Test] - public void Test_8627() - { - } - [Test] - public void Test_8628() - { - } - [Test] - public void Test_8629() - { - } - [Test] - public void Test_8630() - { - } - [Test] - public void Test_8631() - { - } - [Test] - public void Test_8632() - { - } - [Test] - public void Test_8633() - { - } - [Test] - public void Test_8634() - { - } - [Test] - public void Test_8635() - { - } - [Test] - public void Test_8636() - { - } - [Test] - public void Test_8637() - { - } - [Test] - public void Test_8638() - { - } - [Test] - public void Test_8639() - { - } - [Test] - public void Test_8640() - { - } - [Test] - public void Test_8641() - { - } - [Test] - public void Test_8642() - { - } - [Test] - public void Test_8643() - { - } - [Test] - public void Test_8644() - { - } - [Test] - public void Test_8645() - { - } - [Test] - public void Test_8646() - { - } - [Test] - public void Test_8647() - { - } - [Test] - public void Test_8648() - { - } - [Test] - public void Test_8649() - { - } - [Test] - public void Test_8650() - { - } - [Test] - public void Test_8651() - { - } - [Test] - public void Test_8652() - { - } - [Test] - public void Test_8653() - { - } - [Test] - public void Test_8654() - { - } - [Test] - public void Test_8655() - { - } - [Test] - public void Test_8656() - { - } - [Test] - public void Test_8657() - { - } - [Test] - public void Test_8658() - { - } - [Test] - public void Test_8659() - { - } - [Test] - public void Test_8660() - { - } - [Test] - public void Test_8661() - { - } - [Test] - public void Test_8662() - { - } - [Test] - public void Test_8663() - { - } - [Test] - public void Test_8664() - { - } - [Test] - public void Test_8665() - { - } - [Test] - public void Test_8666() - { - } - [Test] - public void Test_8667() - { - } - [Test] - public void Test_8668() - { - } - [Test] - public void Test_8669() - { - } - [Test] - public void Test_8670() - { - } - [Test] - public void Test_8671() - { - } - [Test] - public void Test_8672() - { - } - [Test] - public void Test_8673() - { - } - [Test] - public void Test_8674() - { - } - [Test] - public void Test_8675() - { - } - [Test] - public void Test_8676() - { - } - [Test] - public void Test_8677() - { - } - [Test] - public void Test_8678() - { - } - [Test] - public void Test_8679() - { - } - [Test] - public void Test_8680() - { - } - [Test] - public void Test_8681() - { - } - [Test] - public void Test_8682() - { - } - [Test] - public void Test_8683() - { - } - [Test] - public void Test_8684() - { - } - [Test] - public void Test_8685() - { - } - [Test] - public void Test_8686() - { - } - [Test] - public void Test_8687() - { - } - [Test] - public void Test_8688() - { - } - [Test] - public void Test_8689() - { - } - [Test] - public void Test_8690() - { - } - [Test] - public void Test_8691() - { - } - [Test] - public void Test_8692() - { - } - [Test] - public void Test_8693() - { - } - [Test] - public void Test_8694() - { - } - [Test] - public void Test_8695() - { - } - [Test] - public void Test_8696() - { - } - [Test] - public void Test_8697() - { - } - [Test] - public void Test_8698() - { - } - [Test] - public void Test_8699() - { - } - [Test] - public void Test_8700() - { - } - [Test] - public void Test_8701() - { - } - [Test] - public void Test_8702() - { - } - [Test] - public void Test_8703() - { - } - [Test] - public void Test_8704() - { - } - [Test] - public void Test_8705() - { - } - [Test] - public void Test_8706() - { - } - [Test] - public void Test_8707() - { - } - [Test] - public void Test_8708() - { - } - [Test] - public void Test_8709() - { - } - [Test] - public void Test_8710() - { - } - [Test] - public void Test_8711() - { - } - [Test] - public void Test_8712() - { - } - [Test] - public void Test_8713() - { - } - [Test] - public void Test_8714() - { - } - [Test] - public void Test_8715() - { - } - [Test] - public void Test_8716() - { - } - [Test] - public void Test_8717() - { - } - [Test] - public void Test_8718() - { - } - [Test] - public void Test_8719() - { - } - [Test] - public void Test_8720() - { - } - [Test] - public void Test_8721() - { - } - [Test] - public void Test_8722() - { - } - [Test] - public void Test_8723() - { - } - [Test] - public void Test_8724() - { - } - [Test] - public void Test_8725() - { - } - [Test] - public void Test_8726() - { - } - [Test] - public void Test_8727() - { - } - [Test] - public void Test_8728() - { - } - [Test] - public void Test_8729() - { - } - [Test] - public void Test_8730() - { - } - [Test] - public void Test_8731() - { - } - [Test] - public void Test_8732() - { - } - [Test] - public void Test_8733() - { - } - [Test] - public void Test_8734() - { - } - [Test] - public void Test_8735() - { - } - [Test] - public void Test_8736() - { - } - [Test] - public void Test_8737() - { - } - [Test] - public void Test_8738() - { - } - [Test] - public void Test_8739() - { - } - [Test] - public void Test_8740() - { - } - [Test] - public void Test_8741() - { - } - [Test] - public void Test_8742() - { - } - [Test] - public void Test_8743() - { - } - [Test] - public void Test_8744() - { - } - [Test] - public void Test_8745() - { - } - [Test] - public void Test_8746() - { - } - [Test] - public void Test_8747() - { - } - [Test] - public void Test_8748() - { - } - [Test] - public void Test_8749() - { - } - [Test] - public void Test_8750() - { - } - [Test] - public void Test_8751() - { - } - [Test] - public void Test_8752() - { - } - [Test] - public void Test_8753() - { - } - [Test] - public void Test_8754() - { - } - [Test] - public void Test_8755() - { - } - [Test] - public void Test_8756() - { - } - [Test] - public void Test_8757() - { - } - [Test] - public void Test_8758() - { - } - [Test] - public void Test_8759() - { - } - [Test] - public void Test_8760() - { - } - [Test] - public void Test_8761() - { - } - [Test] - public void Test_8762() - { - } - [Test] - public void Test_8763() - { - } - [Test] - public void Test_8764() - { - } - [Test] - public void Test_8765() - { - } - [Test] - public void Test_8766() - { - } - [Test] - public void Test_8767() - { - } - [Test] - public void Test_8768() - { - } - [Test] - public void Test_8769() - { - } - [Test] - public void Test_8770() - { - } - [Test] - public void Test_8771() - { - } - [Test] - public void Test_8772() - { - } - [Test] - public void Test_8773() - { - } - [Test] - public void Test_8774() - { - } - [Test] - public void Test_8775() - { - } - [Test] - public void Test_8776() - { - } - [Test] - public void Test_8777() - { - } - [Test] - public void Test_8778() - { - } - [Test] - public void Test_8779() - { - } - [Test] - public void Test_8780() - { - } - [Test] - public void Test_8781() - { - } - [Test] - public void Test_8782() - { - } - [Test] - public void Test_8783() - { - } - [Test] - public void Test_8784() - { - } - [Test] - public void Test_8785() - { - } - [Test] - public void Test_8786() - { - } - [Test] - public void Test_8787() - { - } - [Test] - public void Test_8788() - { - } - [Test] - public void Test_8789() - { - } - [Test] - public void Test_8790() - { - } - [Test] - public void Test_8791() - { - } - [Test] - public void Test_8792() - { - } - [Test] - public void Test_8793() - { - } - [Test] - public void Test_8794() - { - } - [Test] - public void Test_8795() - { - } - [Test] - public void Test_8796() - { - } - [Test] - public void Test_8797() - { - } - [Test] - public void Test_8798() - { - } - [Test] - public void Test_8799() - { - } - [Test] - public void Test_8800() - { - } - [Test] - public void Test_8801() - { - } - [Test] - public void Test_8802() - { - } - [Test] - public void Test_8803() - { - } - [Test] - public void Test_8804() - { - } - [Test] - public void Test_8805() - { - } - [Test] - public void Test_8806() - { - } - [Test] - public void Test_8807() - { - } - [Test] - public void Test_8808() - { - } - [Test] - public void Test_8809() - { - } - [Test] - public void Test_8810() - { - } - [Test] - public void Test_8811() - { - } - [Test] - public void Test_8812() - { - } - [Test] - public void Test_8813() - { - } - [Test] - public void Test_8814() - { - } - [Test] - public void Test_8815() - { - } - [Test] - public void Test_8816() - { - } - [Test] - public void Test_8817() - { - } - [Test] - public void Test_8818() - { - } - [Test] - public void Test_8819() - { - } - [Test] - public void Test_8820() - { - } - [Test] - public void Test_8821() - { - } - [Test] - public void Test_8822() - { - } - [Test] - public void Test_8823() - { - } - [Test] - public void Test_8824() - { - } - [Test] - public void Test_8825() - { - } - [Test] - public void Test_8826() - { - } - [Test] - public void Test_8827() - { - } - [Test] - public void Test_8828() - { - } - [Test] - public void Test_8829() - { - } - [Test] - public void Test_8830() - { - } - [Test] - public void Test_8831() - { - } - [Test] - public void Test_8832() - { - } - [Test] - public void Test_8833() - { - } - [Test] - public void Test_8834() - { - } - [Test] - public void Test_8835() - { - } - [Test] - public void Test_8836() - { - } - [Test] - public void Test_8837() - { - } - [Test] - public void Test_8838() - { - } - [Test] - public void Test_8839() - { - } - [Test] - public void Test_8840() - { - } - [Test] - public void Test_8841() - { - } - [Test] - public void Test_8842() - { - } - [Test] - public void Test_8843() - { - } - [Test] - public void Test_8844() - { - } - [Test] - public void Test_8845() - { - } - [Test] - public void Test_8846() - { - } - [Test] - public void Test_8847() - { - } - [Test] - public void Test_8848() - { - } - [Test] - public void Test_8849() - { - } - [Test] - public void Test_8850() - { - } - [Test] - public void Test_8851() - { - } - [Test] - public void Test_8852() - { - } - [Test] - public void Test_8853() - { - } - [Test] - public void Test_8854() - { - } - [Test] - public void Test_8855() - { - } - [Test] - public void Test_8856() - { - } - [Test] - public void Test_8857() - { - } - [Test] - public void Test_8858() - { - } - [Test] - public void Test_8859() - { - } - [Test] - public void Test_8860() - { - } - [Test] - public void Test_8861() - { - } - [Test] - public void Test_8862() - { - } - [Test] - public void Test_8863() - { - } - [Test] - public void Test_8864() - { - } - [Test] - public void Test_8865() - { - } - [Test] - public void Test_8866() - { - } - [Test] - public void Test_8867() - { - } - [Test] - public void Test_8868() - { - } - [Test] - public void Test_8869() - { - } - [Test] - public void Test_8870() - { - } - [Test] - public void Test_8871() - { - } - [Test] - public void Test_8872() - { - } - [Test] - public void Test_8873() - { - } - [Test] - public void Test_8874() - { - } - [Test] - public void Test_8875() - { - } - [Test] - public void Test_8876() - { - } - [Test] - public void Test_8877() - { - } - [Test] - public void Test_8878() - { - } - [Test] - public void Test_8879() - { - } - [Test] - public void Test_8880() - { - } - [Test] - public void Test_8881() - { - } - [Test] - public void Test_8882() - { - } - [Test] - public void Test_8883() - { - } - [Test] - public void Test_8884() - { - } - [Test] - public void Test_8885() - { - } - [Test] - public void Test_8886() - { - } - [Test] - public void Test_8887() - { - } - [Test] - public void Test_8888() - { - } - [Test] - public void Test_8889() - { - } - [Test] - public void Test_8890() - { - } - [Test] - public void Test_8891() - { - } - [Test] - public void Test_8892() - { - } - [Test] - public void Test_8893() - { - } - [Test] - public void Test_8894() - { - } - [Test] - public void Test_8895() - { - } - [Test] - public void Test_8896() - { - } - [Test] - public void Test_8897() - { - } - [Test] - public void Test_8898() - { - } - [Test] - public void Test_8899() - { - } - [Test] - public void Test_8900() - { - } - [Test] - public void Test_8901() - { - } - [Test] - public void Test_8902() - { - } - [Test] - public void Test_8903() - { - } - [Test] - public void Test_8904() - { - } - [Test] - public void Test_8905() - { - } - [Test] - public void Test_8906() - { - } - [Test] - public void Test_8907() - { - } - [Test] - public void Test_8908() - { - } - [Test] - public void Test_8909() - { - } - [Test] - public void Test_8910() - { - } - [Test] - public void Test_8911() - { - } - [Test] - public void Test_8912() - { - } - [Test] - public void Test_8913() - { - } - [Test] - public void Test_8914() - { - } - [Test] - public void Test_8915() - { - } - [Test] - public void Test_8916() - { - } - [Test] - public void Test_8917() - { - } - [Test] - public void Test_8918() - { - } - [Test] - public void Test_8919() - { - } - [Test] - public void Test_8920() - { - } - [Test] - public void Test_8921() - { - } - [Test] - public void Test_8922() - { - } - [Test] - public void Test_8923() - { - } - [Test] - public void Test_8924() - { - } - [Test] - public void Test_8925() - { - } - [Test] - public void Test_8926() - { - } - [Test] - public void Test_8927() - { - } - [Test] - public void Test_8928() - { - } - [Test] - public void Test_8929() - { - } - [Test] - public void Test_8930() - { - } - [Test] - public void Test_8931() - { - } - [Test] - public void Test_8932() - { - } - [Test] - public void Test_8933() - { - } - [Test] - public void Test_8934() - { - } - [Test] - public void Test_8935() - { - } - [Test] - public void Test_8936() - { - } - [Test] - public void Test_8937() - { - } - [Test] - public void Test_8938() - { - } - [Test] - public void Test_8939() - { - } - [Test] - public void Test_8940() - { - } - [Test] - public void Test_8941() - { - } - [Test] - public void Test_8942() - { - } - [Test] - public void Test_8943() - { - } - [Test] - public void Test_8944() - { - } - [Test] - public void Test_8945() - { - } - [Test] - public void Test_8946() - { - } - [Test] - public void Test_8947() - { - } - [Test] - public void Test_8948() - { - } - [Test] - public void Test_8949() - { - } - [Test] - public void Test_8950() - { - } - [Test] - public void Test_8951() - { - } - [Test] - public void Test_8952() - { - } - [Test] - public void Test_8953() - { - } - [Test] - public void Test_8954() - { - } - [Test] - public void Test_8955() - { - } - [Test] - public void Test_8956() - { - } - [Test] - public void Test_8957() - { - } - [Test] - public void Test_8958() - { - } - [Test] - public void Test_8959() - { - } - [Test] - public void Test_8960() - { - } - [Test] - public void Test_8961() - { - } - [Test] - public void Test_8962() - { - } - [Test] - public void Test_8963() - { - } - [Test] - public void Test_8964() - { - } - [Test] - public void Test_8965() - { - } - [Test] - public void Test_8966() - { - } - [Test] - public void Test_8967() - { - } - [Test] - public void Test_8968() - { - } - [Test] - public void Test_8969() - { - } - [Test] - public void Test_8970() - { - } - [Test] - public void Test_8971() - { - } - [Test] - public void Test_8972() - { - } - [Test] - public void Test_8973() - { - } - [Test] - public void Test_8974() - { - } - [Test] - public void Test_8975() - { - } - [Test] - public void Test_8976() - { - } - [Test] - public void Test_8977() - { - } - [Test] - public void Test_8978() - { - } - [Test] - public void Test_8979() - { - } - [Test] - public void Test_8980() - { - } - [Test] - public void Test_8981() - { - } - [Test] - public void Test_8982() - { - } - [Test] - public void Test_8983() - { - } - [Test] - public void Test_8984() - { - } - [Test] - public void Test_8985() - { - } - [Test] - public void Test_8986() - { - } - [Test] - public void Test_8987() - { - } - [Test] - public void Test_8988() - { - } - [Test] - public void Test_8989() - { - } - [Test] - public void Test_8990() - { - } - [Test] - public void Test_8991() - { - } - [Test] - public void Test_8992() - { - } - [Test] - public void Test_8993() - { - } - [Test] - public void Test_8994() - { - } - [Test] - public void Test_8995() - { - } - [Test] - public void Test_8996() - { - } - [Test] - public void Test_8997() - { - } - [Test] - public void Test_8998() - { - } - [Test] - public void Test_8999() - { - } - [Test] - public void Test_9000() - { - } - [Test] - public void Test_9001() - { - } - [Test] - public void Test_9002() - { - } - [Test] - public void Test_9003() - { - } - [Test] - public void Test_9004() - { - } - [Test] - public void Test_9005() - { - } - [Test] - public void Test_9006() - { - } - [Test] - public void Test_9007() - { - } - [Test] - public void Test_9008() - { - } - [Test] - public void Test_9009() - { - } - [Test] - public void Test_9010() - { - } - [Test] - public void Test_9011() - { - } - [Test] - public void Test_9012() - { - } - [Test] - public void Test_9013() - { - } - [Test] - public void Test_9014() - { - } - [Test] - public void Test_9015() - { - } - [Test] - public void Test_9016() - { - } - [Test] - public void Test_9017() - { - } - [Test] - public void Test_9018() - { - } - [Test] - public void Test_9019() - { - } - [Test] - public void Test_9020() - { - } - [Test] - public void Test_9021() - { - } - [Test] - public void Test_9022() - { - } - [Test] - public void Test_9023() - { - } - [Test] - public void Test_9024() - { - } - [Test] - public void Test_9025() - { - } - [Test] - public void Test_9026() - { - } - [Test] - public void Test_9027() - { - } - [Test] - public void Test_9028() - { - } - [Test] - public void Test_9029() - { - } - [Test] - public void Test_9030() - { - } - [Test] - public void Test_9031() - { - } - [Test] - public void Test_9032() - { - } - [Test] - public void Test_9033() - { - } - [Test] - public void Test_9034() - { - } - [Test] - public void Test_9035() - { - } - [Test] - public void Test_9036() - { - } - [Test] - public void Test_9037() - { - } - [Test] - public void Test_9038() - { - } - [Test] - public void Test_9039() - { - } - [Test] - public void Test_9040() - { - } - [Test] - public void Test_9041() - { - } - [Test] - public void Test_9042() - { - } - [Test] - public void Test_9043() - { - } - [Test] - public void Test_9044() - { - } - [Test] - public void Test_9045() - { - } - [Test] - public void Test_9046() - { - } - [Test] - public void Test_9047() - { - } - [Test] - public void Test_9048() - { - } - [Test] - public void Test_9049() - { - } - [Test] - public void Test_9050() - { - } - [Test] - public void Test_9051() - { - } - [Test] - public void Test_9052() - { - } - [Test] - public void Test_9053() - { - } - [Test] - public void Test_9054() - { - } - [Test] - public void Test_9055() - { - } - [Test] - public void Test_9056() - { - } - [Test] - public void Test_9057() - { - } - [Test] - public void Test_9058() - { - } - [Test] - public void Test_9059() - { - } - [Test] - public void Test_9060() - { - } - [Test] - public void Test_9061() - { - } - [Test] - public void Test_9062() - { - } - [Test] - public void Test_9063() - { - } - [Test] - public void Test_9064() - { - } - [Test] - public void Test_9065() - { - } - [Test] - public void Test_9066() - { - } - [Test] - public void Test_9067() - { - } - [Test] - public void Test_9068() - { - } - [Test] - public void Test_9069() - { - } - [Test] - public void Test_9070() - { - } - [Test] - public void Test_9071() - { - } - [Test] - public void Test_9072() - { - } - [Test] - public void Test_9073() - { - } - [Test] - public void Test_9074() - { - } - [Test] - public void Test_9075() - { - } - [Test] - public void Test_9076() - { - } - [Test] - public void Test_9077() - { - } - [Test] - public void Test_9078() - { - } - [Test] - public void Test_9079() - { - } - [Test] - public void Test_9080() - { - } - [Test] - public void Test_9081() - { - } - [Test] - public void Test_9082() - { - } - [Test] - public void Test_9083() - { - } - [Test] - public void Test_9084() - { - } - [Test] - public void Test_9085() - { - } - [Test] - public void Test_9086() - { - } - [Test] - public void Test_9087() - { - } - [Test] - public void Test_9088() - { - } - [Test] - public void Test_9089() - { - } - [Test] - public void Test_9090() - { - } - [Test] - public void Test_9091() - { - } - [Test] - public void Test_9092() - { - } - [Test] - public void Test_9093() - { - } - [Test] - public void Test_9094() - { - } - [Test] - public void Test_9095() - { - } - [Test] - public void Test_9096() - { - } - [Test] - public void Test_9097() - { - } - [Test] - public void Test_9098() - { - } - [Test] - public void Test_9099() - { - } - [Test] - public void Test_9100() - { - } - [Test] - public void Test_9101() - { - } - [Test] - public void Test_9102() - { - } - [Test] - public void Test_9103() - { - } - [Test] - public void Test_9104() - { - } - [Test] - public void Test_9105() - { - } - [Test] - public void Test_9106() - { - } - [Test] - public void Test_9107() - { - } - [Test] - public void Test_9108() - { - } - [Test] - public void Test_9109() - { - } - [Test] - public void Test_9110() - { - } - [Test] - public void Test_9111() - { - } - [Test] - public void Test_9112() - { - } - [Test] - public void Test_9113() - { - } - [Test] - public void Test_9114() - { - } - [Test] - public void Test_9115() - { - } - [Test] - public void Test_9116() - { - } - [Test] - public void Test_9117() - { - } - [Test] - public void Test_9118() - { - } - [Test] - public void Test_9119() - { - } - [Test] - public void Test_9120() - { - } - [Test] - public void Test_9121() - { - } - [Test] - public void Test_9122() - { - } - [Test] - public void Test_9123() - { - } - [Test] - public void Test_9124() - { - } - [Test] - public void Test_9125() - { - } - [Test] - public void Test_9126() - { - } - [Test] - public void Test_9127() - { - } - [Test] - public void Test_9128() - { - } - [Test] - public void Test_9129() - { - } - [Test] - public void Test_9130() - { - } - [Test] - public void Test_9131() - { - } - [Test] - public void Test_9132() - { - } - [Test] - public void Test_9133() - { - } - [Test] - public void Test_9134() - { - } - [Test] - public void Test_9135() - { - } - [Test] - public void Test_9136() - { - } - [Test] - public void Test_9137() - { - } - [Test] - public void Test_9138() - { - } - [Test] - public void Test_9139() - { - } - [Test] - public void Test_9140() - { - } - [Test] - public void Test_9141() - { - } - [Test] - public void Test_9142() - { - } - [Test] - public void Test_9143() - { - } - [Test] - public void Test_9144() - { - } - [Test] - public void Test_9145() - { - } - [Test] - public void Test_9146() - { - } - [Test] - public void Test_9147() - { - } - [Test] - public void Test_9148() - { - } - [Test] - public void Test_9149() - { - } - [Test] - public void Test_9150() - { - } - [Test] - public void Test_9151() - { - } - [Test] - public void Test_9152() - { - } - [Test] - public void Test_9153() - { - } - [Test] - public void Test_9154() - { - } - [Test] - public void Test_9155() - { - } - [Test] - public void Test_9156() - { - } - [Test] - public void Test_9157() - { - } - [Test] - public void Test_9158() - { - } - [Test] - public void Test_9159() - { - } - [Test] - public void Test_9160() - { - } - [Test] - public void Test_9161() - { - } - [Test] - public void Test_9162() - { - } - [Test] - public void Test_9163() - { - } - [Test] - public void Test_9164() - { - } - [Test] - public void Test_9165() - { - } - [Test] - public void Test_9166() - { - } - [Test] - public void Test_9167() - { - } - [Test] - public void Test_9168() - { - } - [Test] - public void Test_9169() - { - } - [Test] - public void Test_9170() - { - } - [Test] - public void Test_9171() - { - } - [Test] - public void Test_9172() - { - } - [Test] - public void Test_9173() - { - } - [Test] - public void Test_9174() - { - } - [Test] - public void Test_9175() - { - } - [Test] - public void Test_9176() - { - } - [Test] - public void Test_9177() - { - } - [Test] - public void Test_9178() - { - } - [Test] - public void Test_9179() - { - } - [Test] - public void Test_9180() - { - } - [Test] - public void Test_9181() - { - } - [Test] - public void Test_9182() - { - } - [Test] - public void Test_9183() - { - } - [Test] - public void Test_9184() - { - } - [Test] - public void Test_9185() - { - } - [Test] - public void Test_9186() - { - } - [Test] - public void Test_9187() - { - } - [Test] - public void Test_9188() - { - } - [Test] - public void Test_9189() - { - } - [Test] - public void Test_9190() - { - } - [Test] - public void Test_9191() - { - } - [Test] - public void Test_9192() - { - } - [Test] - public void Test_9193() - { - } - [Test] - public void Test_9194() - { - } - [Test] - public void Test_9195() - { - } - [Test] - public void Test_9196() - { - } - [Test] - public void Test_9197() - { - } - [Test] - public void Test_9198() - { - } - [Test] - public void Test_9199() - { - } - [Test] - public void Test_9200() - { - } - [Test] - public void Test_9201() - { - } - [Test] - public void Test_9202() - { - } - [Test] - public void Test_9203() - { - } - [Test] - public void Test_9204() - { - } - [Test] - public void Test_9205() - { - } - [Test] - public void Test_9206() - { - } - [Test] - public void Test_9207() - { - } - [Test] - public void Test_9208() - { - } - [Test] - public void Test_9209() - { - } - [Test] - public void Test_9210() - { - } - [Test] - public void Test_9211() - { - } - [Test] - public void Test_9212() - { - } - [Test] - public void Test_9213() - { - } - [Test] - public void Test_9214() - { - } - [Test] - public void Test_9215() - { - } - [Test] - public void Test_9216() - { - } - [Test] - public void Test_9217() - { - } - [Test] - public void Test_9218() - { - } - [Test] - public void Test_9219() - { - } - [Test] - public void Test_9220() - { - } - [Test] - public void Test_9221() - { - } - [Test] - public void Test_9222() - { - } - [Test] - public void Test_9223() - { - } - [Test] - public void Test_9224() - { - } - [Test] - public void Test_9225() - { - } - [Test] - public void Test_9226() - { - } - [Test] - public void Test_9227() - { - } - [Test] - public void Test_9228() - { - } - [Test] - public void Test_9229() - { - } - [Test] - public void Test_9230() - { - } - [Test] - public void Test_9231() - { - } - [Test] - public void Test_9232() - { - } - [Test] - public void Test_9233() - { - } - [Test] - public void Test_9234() - { - } - [Test] - public void Test_9235() - { - } - [Test] - public void Test_9236() - { - } - [Test] - public void Test_9237() - { - } - [Test] - public void Test_9238() - { - } - [Test] - public void Test_9239() - { - } - [Test] - public void Test_9240() - { - } - [Test] - public void Test_9241() - { - } - [Test] - public void Test_9242() - { - } - [Test] - public void Test_9243() - { - } - [Test] - public void Test_9244() - { - } - [Test] - public void Test_9245() - { - } - [Test] - public void Test_9246() - { - } - [Test] - public void Test_9247() - { - } - [Test] - public void Test_9248() - { - } - [Test] - public void Test_9249() - { - } - [Test] - public void Test_9250() - { - } - [Test] - public void Test_9251() - { - } - [Test] - public void Test_9252() - { - } - [Test] - public void Test_9253() - { - } - [Test] - public void Test_9254() - { - } - [Test] - public void Test_9255() - { - } - [Test] - public void Test_9256() - { - } - [Test] - public void Test_9257() - { - } - [Test] - public void Test_9258() - { - } - [Test] - public void Test_9259() - { - } - [Test] - public void Test_9260() - { - } - [Test] - public void Test_9261() - { - } - [Test] - public void Test_9262() - { - } - [Test] - public void Test_9263() - { - } - [Test] - public void Test_9264() - { - } - [Test] - public void Test_9265() - { - } - [Test] - public void Test_9266() - { - } - [Test] - public void Test_9267() - { - } - [Test] - public void Test_9268() - { - } - [Test] - public void Test_9269() - { - } - [Test] - public void Test_9270() - { - } - [Test] - public void Test_9271() - { - } - [Test] - public void Test_9272() - { - } - [Test] - public void Test_9273() - { - } - [Test] - public void Test_9274() - { - } - [Test] - public void Test_9275() - { - } - [Test] - public void Test_9276() - { - } - [Test] - public void Test_9277() - { - } - [Test] - public void Test_9278() - { - } - [Test] - public void Test_9279() - { - } - [Test] - public void Test_9280() - { - } - [Test] - public void Test_9281() - { - } - [Test] - public void Test_9282() - { - } - [Test] - public void Test_9283() - { - } - [Test] - public void Test_9284() - { - } - [Test] - public void Test_9285() - { - } - [Test] - public void Test_9286() - { - } - [Test] - public void Test_9287() - { - } - [Test] - public void Test_9288() - { - } - [Test] - public void Test_9289() - { - } - [Test] - public void Test_9290() - { - } - [Test] - public void Test_9291() - { - } - [Test] - public void Test_9292() - { - } - [Test] - public void Test_9293() - { - } - [Test] - public void Test_9294() - { - } - [Test] - public void Test_9295() - { - } - [Test] - public void Test_9296() - { - } - [Test] - public void Test_9297() - { - } - [Test] - public void Test_9298() - { - } - [Test] - public void Test_9299() - { - } - [Test] - public void Test_9300() - { - } - [Test] - public void Test_9301() - { - } - [Test] - public void Test_9302() - { - } - [Test] - public void Test_9303() - { - } - [Test] - public void Test_9304() - { - } - [Test] - public void Test_9305() - { - } - [Test] - public void Test_9306() - { - } - [Test] - public void Test_9307() - { - } - [Test] - public void Test_9308() - { - } - [Test] - public void Test_9309() - { - } - [Test] - public void Test_9310() - { - } - [Test] - public void Test_9311() - { - } - [Test] - public void Test_9312() - { - } - [Test] - public void Test_9313() - { - } - [Test] - public void Test_9314() - { - } - [Test] - public void Test_9315() - { - } - [Test] - public void Test_9316() - { - } - [Test] - public void Test_9317() - { - } - [Test] - public void Test_9318() - { - } - [Test] - public void Test_9319() - { - } - [Test] - public void Test_9320() - { - } - [Test] - public void Test_9321() - { - } - [Test] - public void Test_9322() - { - } - [Test] - public void Test_9323() - { - } - [Test] - public void Test_9324() - { - } - [Test] - public void Test_9325() - { - } - [Test] - public void Test_9326() - { - } - [Test] - public void Test_9327() - { - } - [Test] - public void Test_9328() - { - } - [Test] - public void Test_9329() - { - } - [Test] - public void Test_9330() - { - } - [Test] - public void Test_9331() - { - } - [Test] - public void Test_9332() - { - } - [Test] - public void Test_9333() - { - } - [Test] - public void Test_9334() - { - } - [Test] - public void Test_9335() - { - } - [Test] - public void Test_9336() - { - } - [Test] - public void Test_9337() - { - } - [Test] - public void Test_9338() - { - } - [Test] - public void Test_9339() - { - } - [Test] - public void Test_9340() - { - } - [Test] - public void Test_9341() - { - } - [Test] - public void Test_9342() - { - } - [Test] - public void Test_9343() - { - } - [Test] - public void Test_9344() - { - } - [Test] - public void Test_9345() - { - } - [Test] - public void Test_9346() - { - } - [Test] - public void Test_9347() - { - } - [Test] - public void Test_9348() - { - } - [Test] - public void Test_9349() - { - } - [Test] - public void Test_9350() - { - } - [Test] - public void Test_9351() - { - } - [Test] - public void Test_9352() - { - } - [Test] - public void Test_9353() - { - } - [Test] - public void Test_9354() - { - } - [Test] - public void Test_9355() - { - } - [Test] - public void Test_9356() - { - } - [Test] - public void Test_9357() - { - } - [Test] - public void Test_9358() - { - } - [Test] - public void Test_9359() - { - } - [Test] - public void Test_9360() - { - } - [Test] - public void Test_9361() - { - } - [Test] - public void Test_9362() - { - } - [Test] - public void Test_9363() - { - } - [Test] - public void Test_9364() - { - } - [Test] - public void Test_9365() - { - } - [Test] - public void Test_9366() - { - } - [Test] - public void Test_9367() - { - } - [Test] - public void Test_9368() - { - } - [Test] - public void Test_9369() - { - } - [Test] - public void Test_9370() - { - } - [Test] - public void Test_9371() - { - } - [Test] - public void Test_9372() - { - } - [Test] - public void Test_9373() - { - } - [Test] - public void Test_9374() - { - } - [Test] - public void Test_9375() - { - } - [Test] - public void Test_9376() - { - } - [Test] - public void Test_9377() - { - } - [Test] - public void Test_9378() - { - } - [Test] - public void Test_9379() - { - } - [Test] - public void Test_9380() - { - } - [Test] - public void Test_9381() - { - } - [Test] - public void Test_9382() - { - } - [Test] - public void Test_9383() - { - } - [Test] - public void Test_9384() - { - } - [Test] - public void Test_9385() - { - } - [Test] - public void Test_9386() - { - } - [Test] - public void Test_9387() - { - } - [Test] - public void Test_9388() - { - } - [Test] - public void Test_9389() - { - } - [Test] - public void Test_9390() - { - } - [Test] - public void Test_9391() - { - } - [Test] - public void Test_9392() - { - } - [Test] - public void Test_9393() - { - } - [Test] - public void Test_9394() - { - } - [Test] - public void Test_9395() - { - } - [Test] - public void Test_9396() - { - } - [Test] - public void Test_9397() - { - } - [Test] - public void Test_9398() - { - } - [Test] - public void Test_9399() - { - } - [Test] - public void Test_9400() - { - } - [Test] - public void Test_9401() - { - } - [Test] - public void Test_9402() - { - } - [Test] - public void Test_9403() - { - } - [Test] - public void Test_9404() - { - } - [Test] - public void Test_9405() - { - } - [Test] - public void Test_9406() - { - } - [Test] - public void Test_9407() - { - } - [Test] - public void Test_9408() - { - } - [Test] - public void Test_9409() - { - } - [Test] - public void Test_9410() - { - } - [Test] - public void Test_9411() - { - } - [Test] - public void Test_9412() - { - } - [Test] - public void Test_9413() - { - } - [Test] - public void Test_9414() - { - } - [Test] - public void Test_9415() - { - } - [Test] - public void Test_9416() - { - } - [Test] - public void Test_9417() - { - } - [Test] - public void Test_9418() - { - } - [Test] - public void Test_9419() - { - } - [Test] - public void Test_9420() - { - } - [Test] - public void Test_9421() - { - } - [Test] - public void Test_9422() - { - } - [Test] - public void Test_9423() - { - } - [Test] - public void Test_9424() - { - } - [Test] - public void Test_9425() - { - } - [Test] - public void Test_9426() - { - } - [Test] - public void Test_9427() - { - } - [Test] - public void Test_9428() - { - } - [Test] - public void Test_9429() - { - } - [Test] - public void Test_9430() - { - } - [Test] - public void Test_9431() - { - } - [Test] - public void Test_9432() - { - } - [Test] - public void Test_9433() - { - } - [Test] - public void Test_9434() - { - } - [Test] - public void Test_9435() - { - } - [Test] - public void Test_9436() - { - } - [Test] - public void Test_9437() - { - } - [Test] - public void Test_9438() - { - } - [Test] - public void Test_9439() - { - } - [Test] - public void Test_9440() - { - } - [Test] - public void Test_9441() - { - } - [Test] - public void Test_9442() - { - } - [Test] - public void Test_9443() - { - } - [Test] - public void Test_9444() - { - } - [Test] - public void Test_9445() - { - } - [Test] - public void Test_9446() - { - } - [Test] - public void Test_9447() - { - } - [Test] - public void Test_9448() - { - } - [Test] - public void Test_9449() - { - } - [Test] - public void Test_9450() - { - } - [Test] - public void Test_9451() - { - } - [Test] - public void Test_9452() - { - } - [Test] - public void Test_9453() - { - } - [Test] - public void Test_9454() - { - } - [Test] - public void Test_9455() - { - } - [Test] - public void Test_9456() - { - } - [Test] - public void Test_9457() - { - } - [Test] - public void Test_9458() - { - } - [Test] - public void Test_9459() - { - } - [Test] - public void Test_9460() - { - } - [Test] - public void Test_9461() - { - } - [Test] - public void Test_9462() - { - } - [Test] - public void Test_9463() - { - } - [Test] - public void Test_9464() - { - } - [Test] - public void Test_9465() - { - } - [Test] - public void Test_9466() - { - } - [Test] - public void Test_9467() - { - } - [Test] - public void Test_9468() - { - } - [Test] - public void Test_9469() - { - } - [Test] - public void Test_9470() - { - } - [Test] - public void Test_9471() - { - } - [Test] - public void Test_9472() - { - } - [Test] - public void Test_9473() - { - } - [Test] - public void Test_9474() - { - } - [Test] - public void Test_9475() - { - } - [Test] - public void Test_9476() - { - } - [Test] - public void Test_9477() - { - } - [Test] - public void Test_9478() - { - } - [Test] - public void Test_9479() - { - } - [Test] - public void Test_9480() - { - } - [Test] - public void Test_9481() - { - } - [Test] - public void Test_9482() - { - } - [Test] - public void Test_9483() - { - } - [Test] - public void Test_9484() - { - } - [Test] - public void Test_9485() - { - } - [Test] - public void Test_9486() - { - } - [Test] - public void Test_9487() - { - } - [Test] - public void Test_9488() - { - } - [Test] - public void Test_9489() - { - } - [Test] - public void Test_9490() - { - } - [Test] - public void Test_9491() - { - } - [Test] - public void Test_9492() - { - } - [Test] - public void Test_9493() - { - } - [Test] - public void Test_9494() - { - } - [Test] - public void Test_9495() - { - } - [Test] - public void Test_9496() - { - } - [Test] - public void Test_9497() - { - } - [Test] - public void Test_9498() - { - } - [Test] - public void Test_9499() - { - } - [Test] - public void Test_9500() - { - } - [Test] - public void Test_9501() - { - } - [Test] - public void Test_9502() - { - } - [Test] - public void Test_9503() - { - } - [Test] - public void Test_9504() - { - } - [Test] - public void Test_9505() - { - } - [Test] - public void Test_9506() - { - } - [Test] - public void Test_9507() - { - } - [Test] - public void Test_9508() - { - } - [Test] - public void Test_9509() - { - } - [Test] - public void Test_9510() - { - } - [Test] - public void Test_9511() - { - } - [Test] - public void Test_9512() - { - } - [Test] - public void Test_9513() - { - } - [Test] - public void Test_9514() - { - } - [Test] - public void Test_9515() - { - } - [Test] - public void Test_9516() - { - } - [Test] - public void Test_9517() - { - } - [Test] - public void Test_9518() - { - } - [Test] - public void Test_9519() - { - } - [Test] - public void Test_9520() - { - } - [Test] - public void Test_9521() - { - } - [Test] - public void Test_9522() - { - } - [Test] - public void Test_9523() - { - } - [Test] - public void Test_9524() - { - } - [Test] - public void Test_9525() - { - } - [Test] - public void Test_9526() - { - } - [Test] - public void Test_9527() - { - } - [Test] - public void Test_9528() - { - } - [Test] - public void Test_9529() - { - } - [Test] - public void Test_9530() - { - } - [Test] - public void Test_9531() - { - } - [Test] - public void Test_9532() - { - } - [Test] - public void Test_9533() - { - } - [Test] - public void Test_9534() - { - } - [Test] - public void Test_9535() - { - } - [Test] - public void Test_9536() - { - } - [Test] - public void Test_9537() - { - } - [Test] - public void Test_9538() - { - } - [Test] - public void Test_9539() - { - } - [Test] - public void Test_9540() - { - } - [Test] - public void Test_9541() - { - } - [Test] - public void Test_9542() - { - } - [Test] - public void Test_9543() - { - } - [Test] - public void Test_9544() - { - } - [Test] - public void Test_9545() - { - } - [Test] - public void Test_9546() - { - } - [Test] - public void Test_9547() - { - } - [Test] - public void Test_9548() - { - } - [Test] - public void Test_9549() - { - } - [Test] - public void Test_9550() - { - } - [Test] - public void Test_9551() - { - } - [Test] - public void Test_9552() - { - } - [Test] - public void Test_9553() - { - } - [Test] - public void Test_9554() - { - } - [Test] - public void Test_9555() - { - } - [Test] - public void Test_9556() - { - } - [Test] - public void Test_9557() - { - } - [Test] - public void Test_9558() - { - } - [Test] - public void Test_9559() - { - } - [Test] - public void Test_9560() - { - } - [Test] - public void Test_9561() - { - } - [Test] - public void Test_9562() - { - } - [Test] - public void Test_9563() - { - } - [Test] - public void Test_9564() - { - } - [Test] - public void Test_9565() - { - } - [Test] - public void Test_9566() - { - } - [Test] - public void Test_9567() - { - } - [Test] - public void Test_9568() - { - } - [Test] - public void Test_9569() - { - } - [Test] - public void Test_9570() - { - } - [Test] - public void Test_9571() - { - } - [Test] - public void Test_9572() - { - } - [Test] - public void Test_9573() - { - } - [Test] - public void Test_9574() - { - } - [Test] - public void Test_9575() - { - } - [Test] - public void Test_9576() - { - } - [Test] - public void Test_9577() - { - } - [Test] - public void Test_9578() - { - } - [Test] - public void Test_9579() - { - } - [Test] - public void Test_9580() - { - } - [Test] - public void Test_9581() - { - } - [Test] - public void Test_9582() - { - } - [Test] - public void Test_9583() - { - } - [Test] - public void Test_9584() - { - } - [Test] - public void Test_9585() - { - } - [Test] - public void Test_9586() - { - } - [Test] - public void Test_9587() - { - } - [Test] - public void Test_9588() - { - } - [Test] - public void Test_9589() - { - } - [Test] - public void Test_9590() - { - } - [Test] - public void Test_9591() - { - } - [Test] - public void Test_9592() - { - } - [Test] - public void Test_9593() - { - } - [Test] - public void Test_9594() - { - } - [Test] - public void Test_9595() - { - } - [Test] - public void Test_9596() - { - } - [Test] - public void Test_9597() - { - } - [Test] - public void Test_9598() - { - } - [Test] - public void Test_9599() - { - } - [Test] - public void Test_9600() - { - } - [Test] - public void Test_9601() - { - } - [Test] - public void Test_9602() - { - } - [Test] - public void Test_9603() - { - } - [Test] - public void Test_9604() - { - } - [Test] - public void Test_9605() - { - } - [Test] - public void Test_9606() - { - } - [Test] - public void Test_9607() - { - } - [Test] - public void Test_9608() - { - } - [Test] - public void Test_9609() - { - } - [Test] - public void Test_9610() - { - } - [Test] - public void Test_9611() - { - } - [Test] - public void Test_9612() - { - } - [Test] - public void Test_9613() - { - } - [Test] - public void Test_9614() - { - } - [Test] - public void Test_9615() - { - } - [Test] - public void Test_9616() - { - } - [Test] - public void Test_9617() - { - } - [Test] - public void Test_9618() - { - } - [Test] - public void Test_9619() - { - } - [Test] - public void Test_9620() - { - } - [Test] - public void Test_9621() - { - } - [Test] - public void Test_9622() - { - } - [Test] - public void Test_9623() - { - } - [Test] - public void Test_9624() - { - } - [Test] - public void Test_9625() - { - } - [Test] - public void Test_9626() - { - } - [Test] - public void Test_9627() - { - } - [Test] - public void Test_9628() - { - } - [Test] - public void Test_9629() - { - } - [Test] - public void Test_9630() - { - } - [Test] - public void Test_9631() - { - } - [Test] - public void Test_9632() - { - } - [Test] - public void Test_9633() - { - } - [Test] - public void Test_9634() - { - } - [Test] - public void Test_9635() - { - } - [Test] - public void Test_9636() - { - } - [Test] - public void Test_9637() - { - } - [Test] - public void Test_9638() - { - } - [Test] - public void Test_9639() - { - } - [Test] - public void Test_9640() - { - } - [Test] - public void Test_9641() - { - } - [Test] - public void Test_9642() - { - } - [Test] - public void Test_9643() - { - } - [Test] - public void Test_9644() - { - } - [Test] - public void Test_9645() - { - } - [Test] - public void Test_9646() - { - } - [Test] - public void Test_9647() - { - } - [Test] - public void Test_9648() - { - } - [Test] - public void Test_9649() - { - } - [Test] - public void Test_9650() - { - } - [Test] - public void Test_9651() - { - } - [Test] - public void Test_9652() - { - } - [Test] - public void Test_9653() - { - } - [Test] - public void Test_9654() - { - } - [Test] - public void Test_9655() - { - } - [Test] - public void Test_9656() - { - } - [Test] - public void Test_9657() - { - } - [Test] - public void Test_9658() - { - } - [Test] - public void Test_9659() - { - } - [Test] - public void Test_9660() - { - } - [Test] - public void Test_9661() - { - } - [Test] - public void Test_9662() - { - } - [Test] - public void Test_9663() - { - } - [Test] - public void Test_9664() - { - } - [Test] - public void Test_9665() - { - } - [Test] - public void Test_9666() - { - } - [Test] - public void Test_9667() - { - } - [Test] - public void Test_9668() - { - } - [Test] - public void Test_9669() - { - } - [Test] - public void Test_9670() - { - } - [Test] - public void Test_9671() - { - } - [Test] - public void Test_9672() - { - } - [Test] - public void Test_9673() - { - } - [Test] - public void Test_9674() - { - } - [Test] - public void Test_9675() - { - } - [Test] - public void Test_9676() - { - } - [Test] - public void Test_9677() - { - } - [Test] - public void Test_9678() - { - } - [Test] - public void Test_9679() - { - } - [Test] - public void Test_9680() - { - } - [Test] - public void Test_9681() - { - } - [Test] - public void Test_9682() - { - } - [Test] - public void Test_9683() - { - } - [Test] - public void Test_9684() - { - } - [Test] - public void Test_9685() - { - } - [Test] - public void Test_9686() - { - } - [Test] - public void Test_9687() - { - } - [Test] - public void Test_9688() - { - } - [Test] - public void Test_9689() - { - } - [Test] - public void Test_9690() - { - } - [Test] - public void Test_9691() - { - } - [Test] - public void Test_9692() - { - } - [Test] - public void Test_9693() - { - } - [Test] - public void Test_9694() - { - } - [Test] - public void Test_9695() - { - } - [Test] - public void Test_9696() - { - } - [Test] - public void Test_9697() - { - } - [Test] - public void Test_9698() - { - } - [Test] - public void Test_9699() - { - } - [Test] - public void Test_9700() - { - } - [Test] - public void Test_9701() - { - } - [Test] - public void Test_9702() - { - } - [Test] - public void Test_9703() - { - } - [Test] - public void Test_9704() - { - } - [Test] - public void Test_9705() - { - } - [Test] - public void Test_9706() - { - } - [Test] - public void Test_9707() - { - } - [Test] - public void Test_9708() - { - } - [Test] - public void Test_9709() - { - } - [Test] - public void Test_9710() - { - } - [Test] - public void Test_9711() - { - } - [Test] - public void Test_9712() - { - } - [Test] - public void Test_9713() - { - } - [Test] - public void Test_9714() - { - } - [Test] - public void Test_9715() - { - } - [Test] - public void Test_9716() - { - } - [Test] - public void Test_9717() - { - } - [Test] - public void Test_9718() - { - } - [Test] - public void Test_9719() - { - } - [Test] - public void Test_9720() - { - } - [Test] - public void Test_9721() - { - } - [Test] - public void Test_9722() - { - } - [Test] - public void Test_9723() - { - } - [Test] - public void Test_9724() - { - } - [Test] - public void Test_9725() - { - } - [Test] - public void Test_9726() - { - } - [Test] - public void Test_9727() - { - } - [Test] - public void Test_9728() - { - } - [Test] - public void Test_9729() - { - } - [Test] - public void Test_9730() - { - } - [Test] - public void Test_9731() - { - } - [Test] - public void Test_9732() - { - } - [Test] - public void Test_9733() - { - } - [Test] - public void Test_9734() - { - } - [Test] - public void Test_9735() - { - } - [Test] - public void Test_9736() - { - } - [Test] - public void Test_9737() - { - } - [Test] - public void Test_9738() - { - } - [Test] - public void Test_9739() - { - } - [Test] - public void Test_9740() - { - } - [Test] - public void Test_9741() - { - } - [Test] - public void Test_9742() - { - } - [Test] - public void Test_9743() - { - } - [Test] - public void Test_9744() - { - } - [Test] - public void Test_9745() - { - } - [Test] - public void Test_9746() - { - } - [Test] - public void Test_9747() - { - } - [Test] - public void Test_9748() - { - } - [Test] - public void Test_9749() - { - } - [Test] - public void Test_9750() - { - } - [Test] - public void Test_9751() - { - } - [Test] - public void Test_9752() - { - } - [Test] - public void Test_9753() - { - } - [Test] - public void Test_9754() - { - } - [Test] - public void Test_9755() - { - } - [Test] - public void Test_9756() - { - } - [Test] - public void Test_9757() - { - } - [Test] - public void Test_9758() - { - } - [Test] - public void Test_9759() - { - } - [Test] - public void Test_9760() - { - } - [Test] - public void Test_9761() - { - } - [Test] - public void Test_9762() - { - } - [Test] - public void Test_9763() - { - } - [Test] - public void Test_9764() - { - } - [Test] - public void Test_9765() - { - } - [Test] - public void Test_9766() - { - } - [Test] - public void Test_9767() - { - } - [Test] - public void Test_9768() - { - } - [Test] - public void Test_9769() - { - } - [Test] - public void Test_9770() - { - } - [Test] - public void Test_9771() - { - } - [Test] - public void Test_9772() - { - } - [Test] - public void Test_9773() - { - } - [Test] - public void Test_9774() - { - } - [Test] - public void Test_9775() - { - } - [Test] - public void Test_9776() - { - } - [Test] - public void Test_9777() - { - } - [Test] - public void Test_9778() - { - } - [Test] - public void Test_9779() - { - } - [Test] - public void Test_9780() - { - } - [Test] - public void Test_9781() - { - } - [Test] - public void Test_9782() - { - } - [Test] - public void Test_9783() - { - } - [Test] - public void Test_9784() - { - } - [Test] - public void Test_9785() - { - } - [Test] - public void Test_9786() - { - } - [Test] - public void Test_9787() - { - } - [Test] - public void Test_9788() - { - } - [Test] - public void Test_9789() - { - } - [Test] - public void Test_9790() - { - } - [Test] - public void Test_9791() - { - } - [Test] - public void Test_9792() - { - } - [Test] - public void Test_9793() - { - } - [Test] - public void Test_9794() - { - } - [Test] - public void Test_9795() - { - } - [Test] - public void Test_9796() - { - } - [Test] - public void Test_9797() - { - } - [Test] - public void Test_9798() - { - } - [Test] - public void Test_9799() - { - } - [Test] - public void Test_9800() - { - } - [Test] - public void Test_9801() - { - } - [Test] - public void Test_9802() - { - } - [Test] - public void Test_9803() - { - } - [Test] - public void Test_9804() - { - } - [Test] - public void Test_9805() - { - } - [Test] - public void Test_9806() - { - } - [Test] - public void Test_9807() - { - } - [Test] - public void Test_9808() - { - } - [Test] - public void Test_9809() - { - } - [Test] - public void Test_9810() - { - } - [Test] - public void Test_9811() - { - } - [Test] - public void Test_9812() - { - } - [Test] - public void Test_9813() - { - } - [Test] - public void Test_9814() - { - } - [Test] - public void Test_9815() - { - } - [Test] - public void Test_9816() - { - } - [Test] - public void Test_9817() - { - } - [Test] - public void Test_9818() - { - } - [Test] - public void Test_9819() - { - } - [Test] - public void Test_9820() - { - } - [Test] - public void Test_9821() - { - } - [Test] - public void Test_9822() - { - } - [Test] - public void Test_9823() - { - } - [Test] - public void Test_9824() - { - } - [Test] - public void Test_9825() - { - } - [Test] - public void Test_9826() - { - } - [Test] - public void Test_9827() - { - } - [Test] - public void Test_9828() - { - } - [Test] - public void Test_9829() - { - } - [Test] - public void Test_9830() - { - } - [Test] - public void Test_9831() - { - } - [Test] - public void Test_9832() - { - } - [Test] - public void Test_9833() - { - } - [Test] - public void Test_9834() - { - } - [Test] - public void Test_9835() - { - } - [Test] - public void Test_9836() - { - } - [Test] - public void Test_9837() - { - } - [Test] - public void Test_9838() - { - } - [Test] - public void Test_9839() - { - } - [Test] - public void Test_9840() - { - } - [Test] - public void Test_9841() - { - } - [Test] - public void Test_9842() - { - } - [Test] - public void Test_9843() - { - } - [Test] - public void Test_9844() - { - } - [Test] - public void Test_9845() - { - } - [Test] - public void Test_9846() - { - } - [Test] - public void Test_9847() - { - } - [Test] - public void Test_9848() - { - } - [Test] - public void Test_9849() - { - } - [Test] - public void Test_9850() - { - } - [Test] - public void Test_9851() - { - } - [Test] - public void Test_9852() - { - } - [Test] - public void Test_9853() - { - } - [Test] - public void Test_9854() - { - } - [Test] - public void Test_9855() - { - } - [Test] - public void Test_9856() - { - } - [Test] - public void Test_9857() - { - } - [Test] - public void Test_9858() - { - } - [Test] - public void Test_9859() - { - } - [Test] - public void Test_9860() - { - } - [Test] - public void Test_9861() - { - } - [Test] - public void Test_9862() - { - } - [Test] - public void Test_9863() - { - } - [Test] - public void Test_9864() - { - } - [Test] - public void Test_9865() - { - } - [Test] - public void Test_9866() - { - } - [Test] - public void Test_9867() - { - } - [Test] - public void Test_9868() - { - } - [Test] - public void Test_9869() - { - } - [Test] - public void Test_9870() - { - } - [Test] - public void Test_9871() - { - } - [Test] - public void Test_9872() - { - } - [Test] - public void Test_9873() - { - } - [Test] - public void Test_9874() - { - } - [Test] - public void Test_9875() - { - } - [Test] - public void Test_9876() - { - } - [Test] - public void Test_9877() - { - } - [Test] - public void Test_9878() - { - } - [Test] - public void Test_9879() - { - } - [Test] - public void Test_9880() - { - } - [Test] - public void Test_9881() - { - } - [Test] - public void Test_9882() - { - } - [Test] - public void Test_9883() - { - } - [Test] - public void Test_9884() - { - } - [Test] - public void Test_9885() - { - } - [Test] - public void Test_9886() - { - } - [Test] - public void Test_9887() - { - } - [Test] - public void Test_9888() - { - } - [Test] - public void Test_9889() - { - } - [Test] - public void Test_9890() - { - } - [Test] - public void Test_9891() - { - } - [Test] - public void Test_9892() - { - } - [Test] - public void Test_9893() - { - } - [Test] - public void Test_9894() - { - } - [Test] - public void Test_9895() - { - } - [Test] - public void Test_9896() - { - } - [Test] - public void Test_9897() - { - } - [Test] - public void Test_9898() - { - } - [Test] - public void Test_9899() - { - } - [Test] - public void Test_9900() - { - } - [Test] - public void Test_9901() - { - } - [Test] - public void Test_9902() - { - } - [Test] - public void Test_9903() - { - } - [Test] - public void Test_9904() - { - } - [Test] - public void Test_9905() - { - } - [Test] - public void Test_9906() - { - } - [Test] - public void Test_9907() - { - } - [Test] - public void Test_9908() - { - } - [Test] - public void Test_9909() - { - } - [Test] - public void Test_9910() - { - } - [Test] - public void Test_9911() - { - } - [Test] - public void Test_9912() - { - } - [Test] - public void Test_9913() - { - } - [Test] - public void Test_9914() - { - } - [Test] - public void Test_9915() - { - } - [Test] - public void Test_9916() - { - } - [Test] - public void Test_9917() - { - } - [Test] - public void Test_9918() - { - } - [Test] - public void Test_9919() - { - } - [Test] - public void Test_9920() - { - } - [Test] - public void Test_9921() - { - } - [Test] - public void Test_9922() - { - } - [Test] - public void Test_9923() - { - } - [Test] - public void Test_9924() - { - } - [Test] - public void Test_9925() - { - } - [Test] - public void Test_9926() - { - } - [Test] - public void Test_9927() - { - } - [Test] - public void Test_9928() - { - } - [Test] - public void Test_9929() - { - } - [Test] - public void Test_9930() - { - } - [Test] - public void Test_9931() - { - } - [Test] - public void Test_9932() - { - } - [Test] - public void Test_9933() - { - } - [Test] - public void Test_9934() - { - } - [Test] - public void Test_9935() - { - } - [Test] - public void Test_9936() - { - } - [Test] - public void Test_9937() - { - } - [Test] - public void Test_9938() - { - } - [Test] - public void Test_9939() - { - } - [Test] - public void Test_9940() - { - } - [Test] - public void Test_9941() - { - } - [Test] - public void Test_9942() - { - } - [Test] - public void Test_9943() - { - } - [Test] - public void Test_9944() - { - } - [Test] - public void Test_9945() - { - } - [Test] - public void Test_9946() - { - } - [Test] - public void Test_9947() - { - } - [Test] - public void Test_9948() - { - } - [Test] - public void Test_9949() - { - } - [Test] - public void Test_9950() - { - } - [Test] - public void Test_9951() - { - } - [Test] - public void Test_9952() - { - } - [Test] - public void Test_9953() - { - } - [Test] - public void Test_9954() - { - } - [Test] - public void Test_9955() - { - } - [Test] - public void Test_9956() - { - } - [Test] - public void Test_9957() - { - } - [Test] - public void Test_9958() - { - } - [Test] - public void Test_9959() - { - } - [Test] - public void Test_9960() - { - } - [Test] - public void Test_9961() - { - } - [Test] - public void Test_9962() - { - } - [Test] - public void Test_9963() - { - } - [Test] - public void Test_9964() - { - } - [Test] - public void Test_9965() - { - } - [Test] - public void Test_9966() - { - } - [Test] - public void Test_9967() - { - } - [Test] - public void Test_9968() - { - } - [Test] - public void Test_9969() - { - } - [Test] - public void Test_9970() - { - } - [Test] - public void Test_9971() - { - } - [Test] - public void Test_9972() - { - } - [Test] - public void Test_9973() - { - } - [Test] - public void Test_9974() - { - } - [Test] - public void Test_9975() - { - } - [Test] - public void Test_9976() - { - } - [Test] - public void Test_9977() - { - } - [Test] - public void Test_9978() - { - } - [Test] - public void Test_9979() - { - } - [Test] - public void Test_9980() - { - } - [Test] - public void Test_9981() - { - } - [Test] - public void Test_9982() - { - } - [Test] - public void Test_9983() - { - } - [Test] - public void Test_9984() - { - } - [Test] - public void Test_9985() - { - } - [Test] - public void Test_9986() - { - } - [Test] - public void Test_9987() - { - } - [Test] - public void Test_9988() - { - } - [Test] - public void Test_9989() - { - } - [Test] - public void Test_9990() - { - } - [Test] - public void Test_9991() - { - } - [Test] - public void Test_9992() - { - } - [Test] - public void Test_9993() - { - } - [Test] - public void Test_9994() - { - } - [Test] - public void Test_9995() - { - } - [Test] - public void Test_9996() - { - } - [Test] - public void Test_9997() - { - } - [Test] - public void Test_9998() - { - } - [Test] - public void Test_9999() - { - } - [Test] - public void Test_10000() - { - } - #endregion - - #region FailingTests - #endregion - - } -} diff --git a/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NunitTests.tt b/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NunitTests.tt deleted file mode 100644 index 59f231f810..0000000000 --- a/test/TestAssets/PerfAssets/NUnitAdapterPerfTestProject/NunitTests.tt +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using NUnit.Framework; - -namespace NUnitAdapterPerfTests -{ - - public class NunitTests - { -<# - int passedTests = 10000; - int failedTests = 0; - String padding = "00"; - int count = 1; - String testmethodprefix = "Test_"; - - -#> - - #region PassingTests -<# - for(int i=0;i - [Test] - public void <#=methodName#>() - { - } -<# - count++; - } -#> - #endregion - - #region FailingTests -<# - for(int i=0;i - [Test] - public void <#=methodName#>() - { - Assert.Fail(); - } -<# - count++; - } -#> - #endregion - - } -} diff --git a/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XUnitAdapterPerfTestProject.csproj b/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XUnitAdapterPerfTestProject.csproj deleted file mode 100644 index 72c1aa7187..0000000000 --- a/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XUnitAdapterPerfTestProject.csproj +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - netcoreapp2.1;net451 - netcoreapp3.1 - false - false - - - - - - - - - - - TextTemplatingFileGenerator - XunitTests.cs - - - - - - - - - - True - True - XunitTests.tt - - - diff --git a/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XunitTests.cs b/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XunitTests.cs deleted file mode 100644 index 25fbbeff35..0000000000 --- a/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XunitTests.cs +++ /dev/null @@ -1,40015 +0,0 @@ -using Xunit; - -namespace XUnitAdapterPerfTests -{ - public class XuniTests - { - - #region PassingTests - [Fact] - public void Test_01() - { - } - [Fact] - public void Test_02() - { - } - [Fact] - public void Test_03() - { - } - [Fact] - public void Test_04() - { - } - [Fact] - public void Test_05() - { - } - [Fact] - public void Test_06() - { - } - [Fact] - public void Test_07() - { - } - [Fact] - public void Test_08() - { - } - [Fact] - public void Test_09() - { - } - [Fact] - public void Test_10() - { - } - [Fact] - public void Test_11() - { - } - [Fact] - public void Test_12() - { - } - [Fact] - public void Test_13() - { - } - [Fact] - public void Test_14() - { - } - [Fact] - public void Test_15() - { - } - [Fact] - public void Test_16() - { - } - [Fact] - public void Test_17() - { - } - [Fact] - public void Test_18() - { - } - [Fact] - public void Test_19() - { - } - [Fact] - public void Test_20() - { - } - [Fact] - public void Test_21() - { - } - [Fact] - public void Test_22() - { - } - [Fact] - public void Test_23() - { - } - [Fact] - public void Test_24() - { - } - [Fact] - public void Test_25() - { - } - [Fact] - public void Test_26() - { - } - [Fact] - public void Test_27() - { - } - [Fact] - public void Test_28() - { - } - [Fact] - public void Test_29() - { - } - [Fact] - public void Test_30() - { - } - [Fact] - public void Test_31() - { - } - [Fact] - public void Test_32() - { - } - [Fact] - public void Test_33() - { - } - [Fact] - public void Test_34() - { - } - [Fact] - public void Test_35() - { - } - [Fact] - public void Test_36() - { - } - [Fact] - public void Test_37() - { - } - [Fact] - public void Test_38() - { - } - [Fact] - public void Test_39() - { - } - [Fact] - public void Test_40() - { - } - [Fact] - public void Test_41() - { - } - [Fact] - public void Test_42() - { - } - [Fact] - public void Test_43() - { - } - [Fact] - public void Test_44() - { - } - [Fact] - public void Test_45() - { - } - [Fact] - public void Test_46() - { - } - [Fact] - public void Test_47() - { - } - [Fact] - public void Test_48() - { - } - [Fact] - public void Test_49() - { - } - [Fact] - public void Test_50() - { - } - [Fact] - public void Test_51() - { - } - [Fact] - public void Test_52() - { - } - [Fact] - public void Test_53() - { - } - [Fact] - public void Test_54() - { - } - [Fact] - public void Test_55() - { - } - [Fact] - public void Test_56() - { - } - [Fact] - public void Test_57() - { - } - [Fact] - public void Test_58() - { - } - [Fact] - public void Test_59() - { - } - [Fact] - public void Test_60() - { - } - [Fact] - public void Test_61() - { - } - [Fact] - public void Test_62() - { - } - [Fact] - public void Test_63() - { - } - [Fact] - public void Test_64() - { - } - [Fact] - public void Test_65() - { - } - [Fact] - public void Test_66() - { - } - [Fact] - public void Test_67() - { - } - [Fact] - public void Test_68() - { - } - [Fact] - public void Test_69() - { - } - [Fact] - public void Test_70() - { - } - [Fact] - public void Test_71() - { - } - [Fact] - public void Test_72() - { - } - [Fact] - public void Test_73() - { - } - [Fact] - public void Test_74() - { - } - [Fact] - public void Test_75() - { - } - [Fact] - public void Test_76() - { - } - [Fact] - public void Test_77() - { - } - [Fact] - public void Test_78() - { - } - [Fact] - public void Test_79() - { - } - [Fact] - public void Test_80() - { - } - [Fact] - public void Test_81() - { - } - [Fact] - public void Test_82() - { - } - [Fact] - public void Test_83() - { - } - [Fact] - public void Test_84() - { - } - [Fact] - public void Test_85() - { - } - [Fact] - public void Test_86() - { - } - [Fact] - public void Test_87() - { - } - [Fact] - public void Test_88() - { - } - [Fact] - public void Test_89() - { - } - [Fact] - public void Test_90() - { - } - [Fact] - public void Test_91() - { - } - [Fact] - public void Test_92() - { - } - [Fact] - public void Test_93() - { - } - [Fact] - public void Test_94() - { - } - [Fact] - public void Test_95() - { - } - [Fact] - public void Test_96() - { - } - [Fact] - public void Test_97() - { - } - [Fact] - public void Test_98() - { - } - [Fact] - public void Test_99() - { - } - [Fact] - public void Test_100() - { - } - [Fact] - public void Test_101() - { - } - [Fact] - public void Test_102() - { - } - [Fact] - public void Test_103() - { - } - [Fact] - public void Test_104() - { - } - [Fact] - public void Test_105() - { - } - [Fact] - public void Test_106() - { - } - [Fact] - public void Test_107() - { - } - [Fact] - public void Test_108() - { - } - [Fact] - public void Test_109() - { - } - [Fact] - public void Test_110() - { - } - [Fact] - public void Test_111() - { - } - [Fact] - public void Test_112() - { - } - [Fact] - public void Test_113() - { - } - [Fact] - public void Test_114() - { - } - [Fact] - public void Test_115() - { - } - [Fact] - public void Test_116() - { - } - [Fact] - public void Test_117() - { - } - [Fact] - public void Test_118() - { - } - [Fact] - public void Test_119() - { - } - [Fact] - public void Test_120() - { - } - [Fact] - public void Test_121() - { - } - [Fact] - public void Test_122() - { - } - [Fact] - public void Test_123() - { - } - [Fact] - public void Test_124() - { - } - [Fact] - public void Test_125() - { - } - [Fact] - public void Test_126() - { - } - [Fact] - public void Test_127() - { - } - [Fact] - public void Test_128() - { - } - [Fact] - public void Test_129() - { - } - [Fact] - public void Test_130() - { - } - [Fact] - public void Test_131() - { - } - [Fact] - public void Test_132() - { - } - [Fact] - public void Test_133() - { - } - [Fact] - public void Test_134() - { - } - [Fact] - public void Test_135() - { - } - [Fact] - public void Test_136() - { - } - [Fact] - public void Test_137() - { - } - [Fact] - public void Test_138() - { - } - [Fact] - public void Test_139() - { - } - [Fact] - public void Test_140() - { - } - [Fact] - public void Test_141() - { - } - [Fact] - public void Test_142() - { - } - [Fact] - public void Test_143() - { - } - [Fact] - public void Test_144() - { - } - [Fact] - public void Test_145() - { - } - [Fact] - public void Test_146() - { - } - [Fact] - public void Test_147() - { - } - [Fact] - public void Test_148() - { - } - [Fact] - public void Test_149() - { - } - [Fact] - public void Test_150() - { - } - [Fact] - public void Test_151() - { - } - [Fact] - public void Test_152() - { - } - [Fact] - public void Test_153() - { - } - [Fact] - public void Test_154() - { - } - [Fact] - public void Test_155() - { - } - [Fact] - public void Test_156() - { - } - [Fact] - public void Test_157() - { - } - [Fact] - public void Test_158() - { - } - [Fact] - public void Test_159() - { - } - [Fact] - public void Test_160() - { - } - [Fact] - public void Test_161() - { - } - [Fact] - public void Test_162() - { - } - [Fact] - public void Test_163() - { - } - [Fact] - public void Test_164() - { - } - [Fact] - public void Test_165() - { - } - [Fact] - public void Test_166() - { - } - [Fact] - public void Test_167() - { - } - [Fact] - public void Test_168() - { - } - [Fact] - public void Test_169() - { - } - [Fact] - public void Test_170() - { - } - [Fact] - public void Test_171() - { - } - [Fact] - public void Test_172() - { - } - [Fact] - public void Test_173() - { - } - [Fact] - public void Test_174() - { - } - [Fact] - public void Test_175() - { - } - [Fact] - public void Test_176() - { - } - [Fact] - public void Test_177() - { - } - [Fact] - public void Test_178() - { - } - [Fact] - public void Test_179() - { - } - [Fact] - public void Test_180() - { - } - [Fact] - public void Test_181() - { - } - [Fact] - public void Test_182() - { - } - [Fact] - public void Test_183() - { - } - [Fact] - public void Test_184() - { - } - [Fact] - public void Test_185() - { - } - [Fact] - public void Test_186() - { - } - [Fact] - public void Test_187() - { - } - [Fact] - public void Test_188() - { - } - [Fact] - public void Test_189() - { - } - [Fact] - public void Test_190() - { - } - [Fact] - public void Test_191() - { - } - [Fact] - public void Test_192() - { - } - [Fact] - public void Test_193() - { - } - [Fact] - public void Test_194() - { - } - [Fact] - public void Test_195() - { - } - [Fact] - public void Test_196() - { - } - [Fact] - public void Test_197() - { - } - [Fact] - public void Test_198() - { - } - [Fact] - public void Test_199() - { - } - [Fact] - public void Test_200() - { - } - [Fact] - public void Test_201() - { - } - [Fact] - public void Test_202() - { - } - [Fact] - public void Test_203() - { - } - [Fact] - public void Test_204() - { - } - [Fact] - public void Test_205() - { - } - [Fact] - public void Test_206() - { - } - [Fact] - public void Test_207() - { - } - [Fact] - public void Test_208() - { - } - [Fact] - public void Test_209() - { - } - [Fact] - public void Test_210() - { - } - [Fact] - public void Test_211() - { - } - [Fact] - public void Test_212() - { - } - [Fact] - public void Test_213() - { - } - [Fact] - public void Test_214() - { - } - [Fact] - public void Test_215() - { - } - [Fact] - public void Test_216() - { - } - [Fact] - public void Test_217() - { - } - [Fact] - public void Test_218() - { - } - [Fact] - public void Test_219() - { - } - [Fact] - public void Test_220() - { - } - [Fact] - public void Test_221() - { - } - [Fact] - public void Test_222() - { - } - [Fact] - public void Test_223() - { - } - [Fact] - public void Test_224() - { - } - [Fact] - public void Test_225() - { - } - [Fact] - public void Test_226() - { - } - [Fact] - public void Test_227() - { - } - [Fact] - public void Test_228() - { - } - [Fact] - public void Test_229() - { - } - [Fact] - public void Test_230() - { - } - [Fact] - public void Test_231() - { - } - [Fact] - public void Test_232() - { - } - [Fact] - public void Test_233() - { - } - [Fact] - public void Test_234() - { - } - [Fact] - public void Test_235() - { - } - [Fact] - public void Test_236() - { - } - [Fact] - public void Test_237() - { - } - [Fact] - public void Test_238() - { - } - [Fact] - public void Test_239() - { - } - [Fact] - public void Test_240() - { - } - [Fact] - public void Test_241() - { - } - [Fact] - public void Test_242() - { - } - [Fact] - public void Test_243() - { - } - [Fact] - public void Test_244() - { - } - [Fact] - public void Test_245() - { - } - [Fact] - public void Test_246() - { - } - [Fact] - public void Test_247() - { - } - [Fact] - public void Test_248() - { - } - [Fact] - public void Test_249() - { - } - [Fact] - public void Test_250() - { - } - [Fact] - public void Test_251() - { - } - [Fact] - public void Test_252() - { - } - [Fact] - public void Test_253() - { - } - [Fact] - public void Test_254() - { - } - [Fact] - public void Test_255() - { - } - [Fact] - public void Test_256() - { - } - [Fact] - public void Test_257() - { - } - [Fact] - public void Test_258() - { - } - [Fact] - public void Test_259() - { - } - [Fact] - public void Test_260() - { - } - [Fact] - public void Test_261() - { - } - [Fact] - public void Test_262() - { - } - [Fact] - public void Test_263() - { - } - [Fact] - public void Test_264() - { - } - [Fact] - public void Test_265() - { - } - [Fact] - public void Test_266() - { - } - [Fact] - public void Test_267() - { - } - [Fact] - public void Test_268() - { - } - [Fact] - public void Test_269() - { - } - [Fact] - public void Test_270() - { - } - [Fact] - public void Test_271() - { - } - [Fact] - public void Test_272() - { - } - [Fact] - public void Test_273() - { - } - [Fact] - public void Test_274() - { - } - [Fact] - public void Test_275() - { - } - [Fact] - public void Test_276() - { - } - [Fact] - public void Test_277() - { - } - [Fact] - public void Test_278() - { - } - [Fact] - public void Test_279() - { - } - [Fact] - public void Test_280() - { - } - [Fact] - public void Test_281() - { - } - [Fact] - public void Test_282() - { - } - [Fact] - public void Test_283() - { - } - [Fact] - public void Test_284() - { - } - [Fact] - public void Test_285() - { - } - [Fact] - public void Test_286() - { - } - [Fact] - public void Test_287() - { - } - [Fact] - public void Test_288() - { - } - [Fact] - public void Test_289() - { - } - [Fact] - public void Test_290() - { - } - [Fact] - public void Test_291() - { - } - [Fact] - public void Test_292() - { - } - [Fact] - public void Test_293() - { - } - [Fact] - public void Test_294() - { - } - [Fact] - public void Test_295() - { - } - [Fact] - public void Test_296() - { - } - [Fact] - public void Test_297() - { - } - [Fact] - public void Test_298() - { - } - [Fact] - public void Test_299() - { - } - [Fact] - public void Test_300() - { - } - [Fact] - public void Test_301() - { - } - [Fact] - public void Test_302() - { - } - [Fact] - public void Test_303() - { - } - [Fact] - public void Test_304() - { - } - [Fact] - public void Test_305() - { - } - [Fact] - public void Test_306() - { - } - [Fact] - public void Test_307() - { - } - [Fact] - public void Test_308() - { - } - [Fact] - public void Test_309() - { - } - [Fact] - public void Test_310() - { - } - [Fact] - public void Test_311() - { - } - [Fact] - public void Test_312() - { - } - [Fact] - public void Test_313() - { - } - [Fact] - public void Test_314() - { - } - [Fact] - public void Test_315() - { - } - [Fact] - public void Test_316() - { - } - [Fact] - public void Test_317() - { - } - [Fact] - public void Test_318() - { - } - [Fact] - public void Test_319() - { - } - [Fact] - public void Test_320() - { - } - [Fact] - public void Test_321() - { - } - [Fact] - public void Test_322() - { - } - [Fact] - public void Test_323() - { - } - [Fact] - public void Test_324() - { - } - [Fact] - public void Test_325() - { - } - [Fact] - public void Test_326() - { - } - [Fact] - public void Test_327() - { - } - [Fact] - public void Test_328() - { - } - [Fact] - public void Test_329() - { - } - [Fact] - public void Test_330() - { - } - [Fact] - public void Test_331() - { - } - [Fact] - public void Test_332() - { - } - [Fact] - public void Test_333() - { - } - [Fact] - public void Test_334() - { - } - [Fact] - public void Test_335() - { - } - [Fact] - public void Test_336() - { - } - [Fact] - public void Test_337() - { - } - [Fact] - public void Test_338() - { - } - [Fact] - public void Test_339() - { - } - [Fact] - public void Test_340() - { - } - [Fact] - public void Test_341() - { - } - [Fact] - public void Test_342() - { - } - [Fact] - public void Test_343() - { - } - [Fact] - public void Test_344() - { - } - [Fact] - public void Test_345() - { - } - [Fact] - public void Test_346() - { - } - [Fact] - public void Test_347() - { - } - [Fact] - public void Test_348() - { - } - [Fact] - public void Test_349() - { - } - [Fact] - public void Test_350() - { - } - [Fact] - public void Test_351() - { - } - [Fact] - public void Test_352() - { - } - [Fact] - public void Test_353() - { - } - [Fact] - public void Test_354() - { - } - [Fact] - public void Test_355() - { - } - [Fact] - public void Test_356() - { - } - [Fact] - public void Test_357() - { - } - [Fact] - public void Test_358() - { - } - [Fact] - public void Test_359() - { - } - [Fact] - public void Test_360() - { - } - [Fact] - public void Test_361() - { - } - [Fact] - public void Test_362() - { - } - [Fact] - public void Test_363() - { - } - [Fact] - public void Test_364() - { - } - [Fact] - public void Test_365() - { - } - [Fact] - public void Test_366() - { - } - [Fact] - public void Test_367() - { - } - [Fact] - public void Test_368() - { - } - [Fact] - public void Test_369() - { - } - [Fact] - public void Test_370() - { - } - [Fact] - public void Test_371() - { - } - [Fact] - public void Test_372() - { - } - [Fact] - public void Test_373() - { - } - [Fact] - public void Test_374() - { - } - [Fact] - public void Test_375() - { - } - [Fact] - public void Test_376() - { - } - [Fact] - public void Test_377() - { - } - [Fact] - public void Test_378() - { - } - [Fact] - public void Test_379() - { - } - [Fact] - public void Test_380() - { - } - [Fact] - public void Test_381() - { - } - [Fact] - public void Test_382() - { - } - [Fact] - public void Test_383() - { - } - [Fact] - public void Test_384() - { - } - [Fact] - public void Test_385() - { - } - [Fact] - public void Test_386() - { - } - [Fact] - public void Test_387() - { - } - [Fact] - public void Test_388() - { - } - [Fact] - public void Test_389() - { - } - [Fact] - public void Test_390() - { - } - [Fact] - public void Test_391() - { - } - [Fact] - public void Test_392() - { - } - [Fact] - public void Test_393() - { - } - [Fact] - public void Test_394() - { - } - [Fact] - public void Test_395() - { - } - [Fact] - public void Test_396() - { - } - [Fact] - public void Test_397() - { - } - [Fact] - public void Test_398() - { - } - [Fact] - public void Test_399() - { - } - [Fact] - public void Test_400() - { - } - [Fact] - public void Test_401() - { - } - [Fact] - public void Test_402() - { - } - [Fact] - public void Test_403() - { - } - [Fact] - public void Test_404() - { - } - [Fact] - public void Test_405() - { - } - [Fact] - public void Test_406() - { - } - [Fact] - public void Test_407() - { - } - [Fact] - public void Test_408() - { - } - [Fact] - public void Test_409() - { - } - [Fact] - public void Test_410() - { - } - [Fact] - public void Test_411() - { - } - [Fact] - public void Test_412() - { - } - [Fact] - public void Test_413() - { - } - [Fact] - public void Test_414() - { - } - [Fact] - public void Test_415() - { - } - [Fact] - public void Test_416() - { - } - [Fact] - public void Test_417() - { - } - [Fact] - public void Test_418() - { - } - [Fact] - public void Test_419() - { - } - [Fact] - public void Test_420() - { - } - [Fact] - public void Test_421() - { - } - [Fact] - public void Test_422() - { - } - [Fact] - public void Test_423() - { - } - [Fact] - public void Test_424() - { - } - [Fact] - public void Test_425() - { - } - [Fact] - public void Test_426() - { - } - [Fact] - public void Test_427() - { - } - [Fact] - public void Test_428() - { - } - [Fact] - public void Test_429() - { - } - [Fact] - public void Test_430() - { - } - [Fact] - public void Test_431() - { - } - [Fact] - public void Test_432() - { - } - [Fact] - public void Test_433() - { - } - [Fact] - public void Test_434() - { - } - [Fact] - public void Test_435() - { - } - [Fact] - public void Test_436() - { - } - [Fact] - public void Test_437() - { - } - [Fact] - public void Test_438() - { - } - [Fact] - public void Test_439() - { - } - [Fact] - public void Test_440() - { - } - [Fact] - public void Test_441() - { - } - [Fact] - public void Test_442() - { - } - [Fact] - public void Test_443() - { - } - [Fact] - public void Test_444() - { - } - [Fact] - public void Test_445() - { - } - [Fact] - public void Test_446() - { - } - [Fact] - public void Test_447() - { - } - [Fact] - public void Test_448() - { - } - [Fact] - public void Test_449() - { - } - [Fact] - public void Test_450() - { - } - [Fact] - public void Test_451() - { - } - [Fact] - public void Test_452() - { - } - [Fact] - public void Test_453() - { - } - [Fact] - public void Test_454() - { - } - [Fact] - public void Test_455() - { - } - [Fact] - public void Test_456() - { - } - [Fact] - public void Test_457() - { - } - [Fact] - public void Test_458() - { - } - [Fact] - public void Test_459() - { - } - [Fact] - public void Test_460() - { - } - [Fact] - public void Test_461() - { - } - [Fact] - public void Test_462() - { - } - [Fact] - public void Test_463() - { - } - [Fact] - public void Test_464() - { - } - [Fact] - public void Test_465() - { - } - [Fact] - public void Test_466() - { - } - [Fact] - public void Test_467() - { - } - [Fact] - public void Test_468() - { - } - [Fact] - public void Test_469() - { - } - [Fact] - public void Test_470() - { - } - [Fact] - public void Test_471() - { - } - [Fact] - public void Test_472() - { - } - [Fact] - public void Test_473() - { - } - [Fact] - public void Test_474() - { - } - [Fact] - public void Test_475() - { - } - [Fact] - public void Test_476() - { - } - [Fact] - public void Test_477() - { - } - [Fact] - public void Test_478() - { - } - [Fact] - public void Test_479() - { - } - [Fact] - public void Test_480() - { - } - [Fact] - public void Test_481() - { - } - [Fact] - public void Test_482() - { - } - [Fact] - public void Test_483() - { - } - [Fact] - public void Test_484() - { - } - [Fact] - public void Test_485() - { - } - [Fact] - public void Test_486() - { - } - [Fact] - public void Test_487() - { - } - [Fact] - public void Test_488() - { - } - [Fact] - public void Test_489() - { - } - [Fact] - public void Test_490() - { - } - [Fact] - public void Test_491() - { - } - [Fact] - public void Test_492() - { - } - [Fact] - public void Test_493() - { - } - [Fact] - public void Test_494() - { - } - [Fact] - public void Test_495() - { - } - [Fact] - public void Test_496() - { - } - [Fact] - public void Test_497() - { - } - [Fact] - public void Test_498() - { - } - [Fact] - public void Test_499() - { - } - [Fact] - public void Test_500() - { - } - [Fact] - public void Test_501() - { - } - [Fact] - public void Test_502() - { - } - [Fact] - public void Test_503() - { - } - [Fact] - public void Test_504() - { - } - [Fact] - public void Test_505() - { - } - [Fact] - public void Test_506() - { - } - [Fact] - public void Test_507() - { - } - [Fact] - public void Test_508() - { - } - [Fact] - public void Test_509() - { - } - [Fact] - public void Test_510() - { - } - [Fact] - public void Test_511() - { - } - [Fact] - public void Test_512() - { - } - [Fact] - public void Test_513() - { - } - [Fact] - public void Test_514() - { - } - [Fact] - public void Test_515() - { - } - [Fact] - public void Test_516() - { - } - [Fact] - public void Test_517() - { - } - [Fact] - public void Test_518() - { - } - [Fact] - public void Test_519() - { - } - [Fact] - public void Test_520() - { - } - [Fact] - public void Test_521() - { - } - [Fact] - public void Test_522() - { - } - [Fact] - public void Test_523() - { - } - [Fact] - public void Test_524() - { - } - [Fact] - public void Test_525() - { - } - [Fact] - public void Test_526() - { - } - [Fact] - public void Test_527() - { - } - [Fact] - public void Test_528() - { - } - [Fact] - public void Test_529() - { - } - [Fact] - public void Test_530() - { - } - [Fact] - public void Test_531() - { - } - [Fact] - public void Test_532() - { - } - [Fact] - public void Test_533() - { - } - [Fact] - public void Test_534() - { - } - [Fact] - public void Test_535() - { - } - [Fact] - public void Test_536() - { - } - [Fact] - public void Test_537() - { - } - [Fact] - public void Test_538() - { - } - [Fact] - public void Test_539() - { - } - [Fact] - public void Test_540() - { - } - [Fact] - public void Test_541() - { - } - [Fact] - public void Test_542() - { - } - [Fact] - public void Test_543() - { - } - [Fact] - public void Test_544() - { - } - [Fact] - public void Test_545() - { - } - [Fact] - public void Test_546() - { - } - [Fact] - public void Test_547() - { - } - [Fact] - public void Test_548() - { - } - [Fact] - public void Test_549() - { - } - [Fact] - public void Test_550() - { - } - [Fact] - public void Test_551() - { - } - [Fact] - public void Test_552() - { - } - [Fact] - public void Test_553() - { - } - [Fact] - public void Test_554() - { - } - [Fact] - public void Test_555() - { - } - [Fact] - public void Test_556() - { - } - [Fact] - public void Test_557() - { - } - [Fact] - public void Test_558() - { - } - [Fact] - public void Test_559() - { - } - [Fact] - public void Test_560() - { - } - [Fact] - public void Test_561() - { - } - [Fact] - public void Test_562() - { - } - [Fact] - public void Test_563() - { - } - [Fact] - public void Test_564() - { - } - [Fact] - public void Test_565() - { - } - [Fact] - public void Test_566() - { - } - [Fact] - public void Test_567() - { - } - [Fact] - public void Test_568() - { - } - [Fact] - public void Test_569() - { - } - [Fact] - public void Test_570() - { - } - [Fact] - public void Test_571() - { - } - [Fact] - public void Test_572() - { - } - [Fact] - public void Test_573() - { - } - [Fact] - public void Test_574() - { - } - [Fact] - public void Test_575() - { - } - [Fact] - public void Test_576() - { - } - [Fact] - public void Test_577() - { - } - [Fact] - public void Test_578() - { - } - [Fact] - public void Test_579() - { - } - [Fact] - public void Test_580() - { - } - [Fact] - public void Test_581() - { - } - [Fact] - public void Test_582() - { - } - [Fact] - public void Test_583() - { - } - [Fact] - public void Test_584() - { - } - [Fact] - public void Test_585() - { - } - [Fact] - public void Test_586() - { - } - [Fact] - public void Test_587() - { - } - [Fact] - public void Test_588() - { - } - [Fact] - public void Test_589() - { - } - [Fact] - public void Test_590() - { - } - [Fact] - public void Test_591() - { - } - [Fact] - public void Test_592() - { - } - [Fact] - public void Test_593() - { - } - [Fact] - public void Test_594() - { - } - [Fact] - public void Test_595() - { - } - [Fact] - public void Test_596() - { - } - [Fact] - public void Test_597() - { - } - [Fact] - public void Test_598() - { - } - [Fact] - public void Test_599() - { - } - [Fact] - public void Test_600() - { - } - [Fact] - public void Test_601() - { - } - [Fact] - public void Test_602() - { - } - [Fact] - public void Test_603() - { - } - [Fact] - public void Test_604() - { - } - [Fact] - public void Test_605() - { - } - [Fact] - public void Test_606() - { - } - [Fact] - public void Test_607() - { - } - [Fact] - public void Test_608() - { - } - [Fact] - public void Test_609() - { - } - [Fact] - public void Test_610() - { - } - [Fact] - public void Test_611() - { - } - [Fact] - public void Test_612() - { - } - [Fact] - public void Test_613() - { - } - [Fact] - public void Test_614() - { - } - [Fact] - public void Test_615() - { - } - [Fact] - public void Test_616() - { - } - [Fact] - public void Test_617() - { - } - [Fact] - public void Test_618() - { - } - [Fact] - public void Test_619() - { - } - [Fact] - public void Test_620() - { - } - [Fact] - public void Test_621() - { - } - [Fact] - public void Test_622() - { - } - [Fact] - public void Test_623() - { - } - [Fact] - public void Test_624() - { - } - [Fact] - public void Test_625() - { - } - [Fact] - public void Test_626() - { - } - [Fact] - public void Test_627() - { - } - [Fact] - public void Test_628() - { - } - [Fact] - public void Test_629() - { - } - [Fact] - public void Test_630() - { - } - [Fact] - public void Test_631() - { - } - [Fact] - public void Test_632() - { - } - [Fact] - public void Test_633() - { - } - [Fact] - public void Test_634() - { - } - [Fact] - public void Test_635() - { - } - [Fact] - public void Test_636() - { - } - [Fact] - public void Test_637() - { - } - [Fact] - public void Test_638() - { - } - [Fact] - public void Test_639() - { - } - [Fact] - public void Test_640() - { - } - [Fact] - public void Test_641() - { - } - [Fact] - public void Test_642() - { - } - [Fact] - public void Test_643() - { - } - [Fact] - public void Test_644() - { - } - [Fact] - public void Test_645() - { - } - [Fact] - public void Test_646() - { - } - [Fact] - public void Test_647() - { - } - [Fact] - public void Test_648() - { - } - [Fact] - public void Test_649() - { - } - [Fact] - public void Test_650() - { - } - [Fact] - public void Test_651() - { - } - [Fact] - public void Test_652() - { - } - [Fact] - public void Test_653() - { - } - [Fact] - public void Test_654() - { - } - [Fact] - public void Test_655() - { - } - [Fact] - public void Test_656() - { - } - [Fact] - public void Test_657() - { - } - [Fact] - public void Test_658() - { - } - [Fact] - public void Test_659() - { - } - [Fact] - public void Test_660() - { - } - [Fact] - public void Test_661() - { - } - [Fact] - public void Test_662() - { - } - [Fact] - public void Test_663() - { - } - [Fact] - public void Test_664() - { - } - [Fact] - public void Test_665() - { - } - [Fact] - public void Test_666() - { - } - [Fact] - public void Test_667() - { - } - [Fact] - public void Test_668() - { - } - [Fact] - public void Test_669() - { - } - [Fact] - public void Test_670() - { - } - [Fact] - public void Test_671() - { - } - [Fact] - public void Test_672() - { - } - [Fact] - public void Test_673() - { - } - [Fact] - public void Test_674() - { - } - [Fact] - public void Test_675() - { - } - [Fact] - public void Test_676() - { - } - [Fact] - public void Test_677() - { - } - [Fact] - public void Test_678() - { - } - [Fact] - public void Test_679() - { - } - [Fact] - public void Test_680() - { - } - [Fact] - public void Test_681() - { - } - [Fact] - public void Test_682() - { - } - [Fact] - public void Test_683() - { - } - [Fact] - public void Test_684() - { - } - [Fact] - public void Test_685() - { - } - [Fact] - public void Test_686() - { - } - [Fact] - public void Test_687() - { - } - [Fact] - public void Test_688() - { - } - [Fact] - public void Test_689() - { - } - [Fact] - public void Test_690() - { - } - [Fact] - public void Test_691() - { - } - [Fact] - public void Test_692() - { - } - [Fact] - public void Test_693() - { - } - [Fact] - public void Test_694() - { - } - [Fact] - public void Test_695() - { - } - [Fact] - public void Test_696() - { - } - [Fact] - public void Test_697() - { - } - [Fact] - public void Test_698() - { - } - [Fact] - public void Test_699() - { - } - [Fact] - public void Test_700() - { - } - [Fact] - public void Test_701() - { - } - [Fact] - public void Test_702() - { - } - [Fact] - public void Test_703() - { - } - [Fact] - public void Test_704() - { - } - [Fact] - public void Test_705() - { - } - [Fact] - public void Test_706() - { - } - [Fact] - public void Test_707() - { - } - [Fact] - public void Test_708() - { - } - [Fact] - public void Test_709() - { - } - [Fact] - public void Test_710() - { - } - [Fact] - public void Test_711() - { - } - [Fact] - public void Test_712() - { - } - [Fact] - public void Test_713() - { - } - [Fact] - public void Test_714() - { - } - [Fact] - public void Test_715() - { - } - [Fact] - public void Test_716() - { - } - [Fact] - public void Test_717() - { - } - [Fact] - public void Test_718() - { - } - [Fact] - public void Test_719() - { - } - [Fact] - public void Test_720() - { - } - [Fact] - public void Test_721() - { - } - [Fact] - public void Test_722() - { - } - [Fact] - public void Test_723() - { - } - [Fact] - public void Test_724() - { - } - [Fact] - public void Test_725() - { - } - [Fact] - public void Test_726() - { - } - [Fact] - public void Test_727() - { - } - [Fact] - public void Test_728() - { - } - [Fact] - public void Test_729() - { - } - [Fact] - public void Test_730() - { - } - [Fact] - public void Test_731() - { - } - [Fact] - public void Test_732() - { - } - [Fact] - public void Test_733() - { - } - [Fact] - public void Test_734() - { - } - [Fact] - public void Test_735() - { - } - [Fact] - public void Test_736() - { - } - [Fact] - public void Test_737() - { - } - [Fact] - public void Test_738() - { - } - [Fact] - public void Test_739() - { - } - [Fact] - public void Test_740() - { - } - [Fact] - public void Test_741() - { - } - [Fact] - public void Test_742() - { - } - [Fact] - public void Test_743() - { - } - [Fact] - public void Test_744() - { - } - [Fact] - public void Test_745() - { - } - [Fact] - public void Test_746() - { - } - [Fact] - public void Test_747() - { - } - [Fact] - public void Test_748() - { - } - [Fact] - public void Test_749() - { - } - [Fact] - public void Test_750() - { - } - [Fact] - public void Test_751() - { - } - [Fact] - public void Test_752() - { - } - [Fact] - public void Test_753() - { - } - [Fact] - public void Test_754() - { - } - [Fact] - public void Test_755() - { - } - [Fact] - public void Test_756() - { - } - [Fact] - public void Test_757() - { - } - [Fact] - public void Test_758() - { - } - [Fact] - public void Test_759() - { - } - [Fact] - public void Test_760() - { - } - [Fact] - public void Test_761() - { - } - [Fact] - public void Test_762() - { - } - [Fact] - public void Test_763() - { - } - [Fact] - public void Test_764() - { - } - [Fact] - public void Test_765() - { - } - [Fact] - public void Test_766() - { - } - [Fact] - public void Test_767() - { - } - [Fact] - public void Test_768() - { - } - [Fact] - public void Test_769() - { - } - [Fact] - public void Test_770() - { - } - [Fact] - public void Test_771() - { - } - [Fact] - public void Test_772() - { - } - [Fact] - public void Test_773() - { - } - [Fact] - public void Test_774() - { - } - [Fact] - public void Test_775() - { - } - [Fact] - public void Test_776() - { - } - [Fact] - public void Test_777() - { - } - [Fact] - public void Test_778() - { - } - [Fact] - public void Test_779() - { - } - [Fact] - public void Test_780() - { - } - [Fact] - public void Test_781() - { - } - [Fact] - public void Test_782() - { - } - [Fact] - public void Test_783() - { - } - [Fact] - public void Test_784() - { - } - [Fact] - public void Test_785() - { - } - [Fact] - public void Test_786() - { - } - [Fact] - public void Test_787() - { - } - [Fact] - public void Test_788() - { - } - [Fact] - public void Test_789() - { - } - [Fact] - public void Test_790() - { - } - [Fact] - public void Test_791() - { - } - [Fact] - public void Test_792() - { - } - [Fact] - public void Test_793() - { - } - [Fact] - public void Test_794() - { - } - [Fact] - public void Test_795() - { - } - [Fact] - public void Test_796() - { - } - [Fact] - public void Test_797() - { - } - [Fact] - public void Test_798() - { - } - [Fact] - public void Test_799() - { - } - [Fact] - public void Test_800() - { - } - [Fact] - public void Test_801() - { - } - [Fact] - public void Test_802() - { - } - [Fact] - public void Test_803() - { - } - [Fact] - public void Test_804() - { - } - [Fact] - public void Test_805() - { - } - [Fact] - public void Test_806() - { - } - [Fact] - public void Test_807() - { - } - [Fact] - public void Test_808() - { - } - [Fact] - public void Test_809() - { - } - [Fact] - public void Test_810() - { - } - [Fact] - public void Test_811() - { - } - [Fact] - public void Test_812() - { - } - [Fact] - public void Test_813() - { - } - [Fact] - public void Test_814() - { - } - [Fact] - public void Test_815() - { - } - [Fact] - public void Test_816() - { - } - [Fact] - public void Test_817() - { - } - [Fact] - public void Test_818() - { - } - [Fact] - public void Test_819() - { - } - [Fact] - public void Test_820() - { - } - [Fact] - public void Test_821() - { - } - [Fact] - public void Test_822() - { - } - [Fact] - public void Test_823() - { - } - [Fact] - public void Test_824() - { - } - [Fact] - public void Test_825() - { - } - [Fact] - public void Test_826() - { - } - [Fact] - public void Test_827() - { - } - [Fact] - public void Test_828() - { - } - [Fact] - public void Test_829() - { - } - [Fact] - public void Test_830() - { - } - [Fact] - public void Test_831() - { - } - [Fact] - public void Test_832() - { - } - [Fact] - public void Test_833() - { - } - [Fact] - public void Test_834() - { - } - [Fact] - public void Test_835() - { - } - [Fact] - public void Test_836() - { - } - [Fact] - public void Test_837() - { - } - [Fact] - public void Test_838() - { - } - [Fact] - public void Test_839() - { - } - [Fact] - public void Test_840() - { - } - [Fact] - public void Test_841() - { - } - [Fact] - public void Test_842() - { - } - [Fact] - public void Test_843() - { - } - [Fact] - public void Test_844() - { - } - [Fact] - public void Test_845() - { - } - [Fact] - public void Test_846() - { - } - [Fact] - public void Test_847() - { - } - [Fact] - public void Test_848() - { - } - [Fact] - public void Test_849() - { - } - [Fact] - public void Test_850() - { - } - [Fact] - public void Test_851() - { - } - [Fact] - public void Test_852() - { - } - [Fact] - public void Test_853() - { - } - [Fact] - public void Test_854() - { - } - [Fact] - public void Test_855() - { - } - [Fact] - public void Test_856() - { - } - [Fact] - public void Test_857() - { - } - [Fact] - public void Test_858() - { - } - [Fact] - public void Test_859() - { - } - [Fact] - public void Test_860() - { - } - [Fact] - public void Test_861() - { - } - [Fact] - public void Test_862() - { - } - [Fact] - public void Test_863() - { - } - [Fact] - public void Test_864() - { - } - [Fact] - public void Test_865() - { - } - [Fact] - public void Test_866() - { - } - [Fact] - public void Test_867() - { - } - [Fact] - public void Test_868() - { - } - [Fact] - public void Test_869() - { - } - [Fact] - public void Test_870() - { - } - [Fact] - public void Test_871() - { - } - [Fact] - public void Test_872() - { - } - [Fact] - public void Test_873() - { - } - [Fact] - public void Test_874() - { - } - [Fact] - public void Test_875() - { - } - [Fact] - public void Test_876() - { - } - [Fact] - public void Test_877() - { - } - [Fact] - public void Test_878() - { - } - [Fact] - public void Test_879() - { - } - [Fact] - public void Test_880() - { - } - [Fact] - public void Test_881() - { - } - [Fact] - public void Test_882() - { - } - [Fact] - public void Test_883() - { - } - [Fact] - public void Test_884() - { - } - [Fact] - public void Test_885() - { - } - [Fact] - public void Test_886() - { - } - [Fact] - public void Test_887() - { - } - [Fact] - public void Test_888() - { - } - [Fact] - public void Test_889() - { - } - [Fact] - public void Test_890() - { - } - [Fact] - public void Test_891() - { - } - [Fact] - public void Test_892() - { - } - [Fact] - public void Test_893() - { - } - [Fact] - public void Test_894() - { - } - [Fact] - public void Test_895() - { - } - [Fact] - public void Test_896() - { - } - [Fact] - public void Test_897() - { - } - [Fact] - public void Test_898() - { - } - [Fact] - public void Test_899() - { - } - [Fact] - public void Test_900() - { - } - [Fact] - public void Test_901() - { - } - [Fact] - public void Test_902() - { - } - [Fact] - public void Test_903() - { - } - [Fact] - public void Test_904() - { - } - [Fact] - public void Test_905() - { - } - [Fact] - public void Test_906() - { - } - [Fact] - public void Test_907() - { - } - [Fact] - public void Test_908() - { - } - [Fact] - public void Test_909() - { - } - [Fact] - public void Test_910() - { - } - [Fact] - public void Test_911() - { - } - [Fact] - public void Test_912() - { - } - [Fact] - public void Test_913() - { - } - [Fact] - public void Test_914() - { - } - [Fact] - public void Test_915() - { - } - [Fact] - public void Test_916() - { - } - [Fact] - public void Test_917() - { - } - [Fact] - public void Test_918() - { - } - [Fact] - public void Test_919() - { - } - [Fact] - public void Test_920() - { - } - [Fact] - public void Test_921() - { - } - [Fact] - public void Test_922() - { - } - [Fact] - public void Test_923() - { - } - [Fact] - public void Test_924() - { - } - [Fact] - public void Test_925() - { - } - [Fact] - public void Test_926() - { - } - [Fact] - public void Test_927() - { - } - [Fact] - public void Test_928() - { - } - [Fact] - public void Test_929() - { - } - [Fact] - public void Test_930() - { - } - [Fact] - public void Test_931() - { - } - [Fact] - public void Test_932() - { - } - [Fact] - public void Test_933() - { - } - [Fact] - public void Test_934() - { - } - [Fact] - public void Test_935() - { - } - [Fact] - public void Test_936() - { - } - [Fact] - public void Test_937() - { - } - [Fact] - public void Test_938() - { - } - [Fact] - public void Test_939() - { - } - [Fact] - public void Test_940() - { - } - [Fact] - public void Test_941() - { - } - [Fact] - public void Test_942() - { - } - [Fact] - public void Test_943() - { - } - [Fact] - public void Test_944() - { - } - [Fact] - public void Test_945() - { - } - [Fact] - public void Test_946() - { - } - [Fact] - public void Test_947() - { - } - [Fact] - public void Test_948() - { - } - [Fact] - public void Test_949() - { - } - [Fact] - public void Test_950() - { - } - [Fact] - public void Test_951() - { - } - [Fact] - public void Test_952() - { - } - [Fact] - public void Test_953() - { - } - [Fact] - public void Test_954() - { - } - [Fact] - public void Test_955() - { - } - [Fact] - public void Test_956() - { - } - [Fact] - public void Test_957() - { - } - [Fact] - public void Test_958() - { - } - [Fact] - public void Test_959() - { - } - [Fact] - public void Test_960() - { - } - [Fact] - public void Test_961() - { - } - [Fact] - public void Test_962() - { - } - [Fact] - public void Test_963() - { - } - [Fact] - public void Test_964() - { - } - [Fact] - public void Test_965() - { - } - [Fact] - public void Test_966() - { - } - [Fact] - public void Test_967() - { - } - [Fact] - public void Test_968() - { - } - [Fact] - public void Test_969() - { - } - [Fact] - public void Test_970() - { - } - [Fact] - public void Test_971() - { - } - [Fact] - public void Test_972() - { - } - [Fact] - public void Test_973() - { - } - [Fact] - public void Test_974() - { - } - [Fact] - public void Test_975() - { - } - [Fact] - public void Test_976() - { - } - [Fact] - public void Test_977() - { - } - [Fact] - public void Test_978() - { - } - [Fact] - public void Test_979() - { - } - [Fact] - public void Test_980() - { - } - [Fact] - public void Test_981() - { - } - [Fact] - public void Test_982() - { - } - [Fact] - public void Test_983() - { - } - [Fact] - public void Test_984() - { - } - [Fact] - public void Test_985() - { - } - [Fact] - public void Test_986() - { - } - [Fact] - public void Test_987() - { - } - [Fact] - public void Test_988() - { - } - [Fact] - public void Test_989() - { - } - [Fact] - public void Test_990() - { - } - [Fact] - public void Test_991() - { - } - [Fact] - public void Test_992() - { - } - [Fact] - public void Test_993() - { - } - [Fact] - public void Test_994() - { - } - [Fact] - public void Test_995() - { - } - [Fact] - public void Test_996() - { - } - [Fact] - public void Test_997() - { - } - [Fact] - public void Test_998() - { - } - [Fact] - public void Test_999() - { - } - [Fact] - public void Test_1000() - { - } - [Fact] - public void Test_1001() - { - } - [Fact] - public void Test_1002() - { - } - [Fact] - public void Test_1003() - { - } - [Fact] - public void Test_1004() - { - } - [Fact] - public void Test_1005() - { - } - [Fact] - public void Test_1006() - { - } - [Fact] - public void Test_1007() - { - } - [Fact] - public void Test_1008() - { - } - [Fact] - public void Test_1009() - { - } - [Fact] - public void Test_1010() - { - } - [Fact] - public void Test_1011() - { - } - [Fact] - public void Test_1012() - { - } - [Fact] - public void Test_1013() - { - } - [Fact] - public void Test_1014() - { - } - [Fact] - public void Test_1015() - { - } - [Fact] - public void Test_1016() - { - } - [Fact] - public void Test_1017() - { - } - [Fact] - public void Test_1018() - { - } - [Fact] - public void Test_1019() - { - } - [Fact] - public void Test_1020() - { - } - [Fact] - public void Test_1021() - { - } - [Fact] - public void Test_1022() - { - } - [Fact] - public void Test_1023() - { - } - [Fact] - public void Test_1024() - { - } - [Fact] - public void Test_1025() - { - } - [Fact] - public void Test_1026() - { - } - [Fact] - public void Test_1027() - { - } - [Fact] - public void Test_1028() - { - } - [Fact] - public void Test_1029() - { - } - [Fact] - public void Test_1030() - { - } - [Fact] - public void Test_1031() - { - } - [Fact] - public void Test_1032() - { - } - [Fact] - public void Test_1033() - { - } - [Fact] - public void Test_1034() - { - } - [Fact] - public void Test_1035() - { - } - [Fact] - public void Test_1036() - { - } - [Fact] - public void Test_1037() - { - } - [Fact] - public void Test_1038() - { - } - [Fact] - public void Test_1039() - { - } - [Fact] - public void Test_1040() - { - } - [Fact] - public void Test_1041() - { - } - [Fact] - public void Test_1042() - { - } - [Fact] - public void Test_1043() - { - } - [Fact] - public void Test_1044() - { - } - [Fact] - public void Test_1045() - { - } - [Fact] - public void Test_1046() - { - } - [Fact] - public void Test_1047() - { - } - [Fact] - public void Test_1048() - { - } - [Fact] - public void Test_1049() - { - } - [Fact] - public void Test_1050() - { - } - [Fact] - public void Test_1051() - { - } - [Fact] - public void Test_1052() - { - } - [Fact] - public void Test_1053() - { - } - [Fact] - public void Test_1054() - { - } - [Fact] - public void Test_1055() - { - } - [Fact] - public void Test_1056() - { - } - [Fact] - public void Test_1057() - { - } - [Fact] - public void Test_1058() - { - } - [Fact] - public void Test_1059() - { - } - [Fact] - public void Test_1060() - { - } - [Fact] - public void Test_1061() - { - } - [Fact] - public void Test_1062() - { - } - [Fact] - public void Test_1063() - { - } - [Fact] - public void Test_1064() - { - } - [Fact] - public void Test_1065() - { - } - [Fact] - public void Test_1066() - { - } - [Fact] - public void Test_1067() - { - } - [Fact] - public void Test_1068() - { - } - [Fact] - public void Test_1069() - { - } - [Fact] - public void Test_1070() - { - } - [Fact] - public void Test_1071() - { - } - [Fact] - public void Test_1072() - { - } - [Fact] - public void Test_1073() - { - } - [Fact] - public void Test_1074() - { - } - [Fact] - public void Test_1075() - { - } - [Fact] - public void Test_1076() - { - } - [Fact] - public void Test_1077() - { - } - [Fact] - public void Test_1078() - { - } - [Fact] - public void Test_1079() - { - } - [Fact] - public void Test_1080() - { - } - [Fact] - public void Test_1081() - { - } - [Fact] - public void Test_1082() - { - } - [Fact] - public void Test_1083() - { - } - [Fact] - public void Test_1084() - { - } - [Fact] - public void Test_1085() - { - } - [Fact] - public void Test_1086() - { - } - [Fact] - public void Test_1087() - { - } - [Fact] - public void Test_1088() - { - } - [Fact] - public void Test_1089() - { - } - [Fact] - public void Test_1090() - { - } - [Fact] - public void Test_1091() - { - } - [Fact] - public void Test_1092() - { - } - [Fact] - public void Test_1093() - { - } - [Fact] - public void Test_1094() - { - } - [Fact] - public void Test_1095() - { - } - [Fact] - public void Test_1096() - { - } - [Fact] - public void Test_1097() - { - } - [Fact] - public void Test_1098() - { - } - [Fact] - public void Test_1099() - { - } - [Fact] - public void Test_1100() - { - } - [Fact] - public void Test_1101() - { - } - [Fact] - public void Test_1102() - { - } - [Fact] - public void Test_1103() - { - } - [Fact] - public void Test_1104() - { - } - [Fact] - public void Test_1105() - { - } - [Fact] - public void Test_1106() - { - } - [Fact] - public void Test_1107() - { - } - [Fact] - public void Test_1108() - { - } - [Fact] - public void Test_1109() - { - } - [Fact] - public void Test_1110() - { - } - [Fact] - public void Test_1111() - { - } - [Fact] - public void Test_1112() - { - } - [Fact] - public void Test_1113() - { - } - [Fact] - public void Test_1114() - { - } - [Fact] - public void Test_1115() - { - } - [Fact] - public void Test_1116() - { - } - [Fact] - public void Test_1117() - { - } - [Fact] - public void Test_1118() - { - } - [Fact] - public void Test_1119() - { - } - [Fact] - public void Test_1120() - { - } - [Fact] - public void Test_1121() - { - } - [Fact] - public void Test_1122() - { - } - [Fact] - public void Test_1123() - { - } - [Fact] - public void Test_1124() - { - } - [Fact] - public void Test_1125() - { - } - [Fact] - public void Test_1126() - { - } - [Fact] - public void Test_1127() - { - } - [Fact] - public void Test_1128() - { - } - [Fact] - public void Test_1129() - { - } - [Fact] - public void Test_1130() - { - } - [Fact] - public void Test_1131() - { - } - [Fact] - public void Test_1132() - { - } - [Fact] - public void Test_1133() - { - } - [Fact] - public void Test_1134() - { - } - [Fact] - public void Test_1135() - { - } - [Fact] - public void Test_1136() - { - } - [Fact] - public void Test_1137() - { - } - [Fact] - public void Test_1138() - { - } - [Fact] - public void Test_1139() - { - } - [Fact] - public void Test_1140() - { - } - [Fact] - public void Test_1141() - { - } - [Fact] - public void Test_1142() - { - } - [Fact] - public void Test_1143() - { - } - [Fact] - public void Test_1144() - { - } - [Fact] - public void Test_1145() - { - } - [Fact] - public void Test_1146() - { - } - [Fact] - public void Test_1147() - { - } - [Fact] - public void Test_1148() - { - } - [Fact] - public void Test_1149() - { - } - [Fact] - public void Test_1150() - { - } - [Fact] - public void Test_1151() - { - } - [Fact] - public void Test_1152() - { - } - [Fact] - public void Test_1153() - { - } - [Fact] - public void Test_1154() - { - } - [Fact] - public void Test_1155() - { - } - [Fact] - public void Test_1156() - { - } - [Fact] - public void Test_1157() - { - } - [Fact] - public void Test_1158() - { - } - [Fact] - public void Test_1159() - { - } - [Fact] - public void Test_1160() - { - } - [Fact] - public void Test_1161() - { - } - [Fact] - public void Test_1162() - { - } - [Fact] - public void Test_1163() - { - } - [Fact] - public void Test_1164() - { - } - [Fact] - public void Test_1165() - { - } - [Fact] - public void Test_1166() - { - } - [Fact] - public void Test_1167() - { - } - [Fact] - public void Test_1168() - { - } - [Fact] - public void Test_1169() - { - } - [Fact] - public void Test_1170() - { - } - [Fact] - public void Test_1171() - { - } - [Fact] - public void Test_1172() - { - } - [Fact] - public void Test_1173() - { - } - [Fact] - public void Test_1174() - { - } - [Fact] - public void Test_1175() - { - } - [Fact] - public void Test_1176() - { - } - [Fact] - public void Test_1177() - { - } - [Fact] - public void Test_1178() - { - } - [Fact] - public void Test_1179() - { - } - [Fact] - public void Test_1180() - { - } - [Fact] - public void Test_1181() - { - } - [Fact] - public void Test_1182() - { - } - [Fact] - public void Test_1183() - { - } - [Fact] - public void Test_1184() - { - } - [Fact] - public void Test_1185() - { - } - [Fact] - public void Test_1186() - { - } - [Fact] - public void Test_1187() - { - } - [Fact] - public void Test_1188() - { - } - [Fact] - public void Test_1189() - { - } - [Fact] - public void Test_1190() - { - } - [Fact] - public void Test_1191() - { - } - [Fact] - public void Test_1192() - { - } - [Fact] - public void Test_1193() - { - } - [Fact] - public void Test_1194() - { - } - [Fact] - public void Test_1195() - { - } - [Fact] - public void Test_1196() - { - } - [Fact] - public void Test_1197() - { - } - [Fact] - public void Test_1198() - { - } - [Fact] - public void Test_1199() - { - } - [Fact] - public void Test_1200() - { - } - [Fact] - public void Test_1201() - { - } - [Fact] - public void Test_1202() - { - } - [Fact] - public void Test_1203() - { - } - [Fact] - public void Test_1204() - { - } - [Fact] - public void Test_1205() - { - } - [Fact] - public void Test_1206() - { - } - [Fact] - public void Test_1207() - { - } - [Fact] - public void Test_1208() - { - } - [Fact] - public void Test_1209() - { - } - [Fact] - public void Test_1210() - { - } - [Fact] - public void Test_1211() - { - } - [Fact] - public void Test_1212() - { - } - [Fact] - public void Test_1213() - { - } - [Fact] - public void Test_1214() - { - } - [Fact] - public void Test_1215() - { - } - [Fact] - public void Test_1216() - { - } - [Fact] - public void Test_1217() - { - } - [Fact] - public void Test_1218() - { - } - [Fact] - public void Test_1219() - { - } - [Fact] - public void Test_1220() - { - } - [Fact] - public void Test_1221() - { - } - [Fact] - public void Test_1222() - { - } - [Fact] - public void Test_1223() - { - } - [Fact] - public void Test_1224() - { - } - [Fact] - public void Test_1225() - { - } - [Fact] - public void Test_1226() - { - } - [Fact] - public void Test_1227() - { - } - [Fact] - public void Test_1228() - { - } - [Fact] - public void Test_1229() - { - } - [Fact] - public void Test_1230() - { - } - [Fact] - public void Test_1231() - { - } - [Fact] - public void Test_1232() - { - } - [Fact] - public void Test_1233() - { - } - [Fact] - public void Test_1234() - { - } - [Fact] - public void Test_1235() - { - } - [Fact] - public void Test_1236() - { - } - [Fact] - public void Test_1237() - { - } - [Fact] - public void Test_1238() - { - } - [Fact] - public void Test_1239() - { - } - [Fact] - public void Test_1240() - { - } - [Fact] - public void Test_1241() - { - } - [Fact] - public void Test_1242() - { - } - [Fact] - public void Test_1243() - { - } - [Fact] - public void Test_1244() - { - } - [Fact] - public void Test_1245() - { - } - [Fact] - public void Test_1246() - { - } - [Fact] - public void Test_1247() - { - } - [Fact] - public void Test_1248() - { - } - [Fact] - public void Test_1249() - { - } - [Fact] - public void Test_1250() - { - } - [Fact] - public void Test_1251() - { - } - [Fact] - public void Test_1252() - { - } - [Fact] - public void Test_1253() - { - } - [Fact] - public void Test_1254() - { - } - [Fact] - public void Test_1255() - { - } - [Fact] - public void Test_1256() - { - } - [Fact] - public void Test_1257() - { - } - [Fact] - public void Test_1258() - { - } - [Fact] - public void Test_1259() - { - } - [Fact] - public void Test_1260() - { - } - [Fact] - public void Test_1261() - { - } - [Fact] - public void Test_1262() - { - } - [Fact] - public void Test_1263() - { - } - [Fact] - public void Test_1264() - { - } - [Fact] - public void Test_1265() - { - } - [Fact] - public void Test_1266() - { - } - [Fact] - public void Test_1267() - { - } - [Fact] - public void Test_1268() - { - } - [Fact] - public void Test_1269() - { - } - [Fact] - public void Test_1270() - { - } - [Fact] - public void Test_1271() - { - } - [Fact] - public void Test_1272() - { - } - [Fact] - public void Test_1273() - { - } - [Fact] - public void Test_1274() - { - } - [Fact] - public void Test_1275() - { - } - [Fact] - public void Test_1276() - { - } - [Fact] - public void Test_1277() - { - } - [Fact] - public void Test_1278() - { - } - [Fact] - public void Test_1279() - { - } - [Fact] - public void Test_1280() - { - } - [Fact] - public void Test_1281() - { - } - [Fact] - public void Test_1282() - { - } - [Fact] - public void Test_1283() - { - } - [Fact] - public void Test_1284() - { - } - [Fact] - public void Test_1285() - { - } - [Fact] - public void Test_1286() - { - } - [Fact] - public void Test_1287() - { - } - [Fact] - public void Test_1288() - { - } - [Fact] - public void Test_1289() - { - } - [Fact] - public void Test_1290() - { - } - [Fact] - public void Test_1291() - { - } - [Fact] - public void Test_1292() - { - } - [Fact] - public void Test_1293() - { - } - [Fact] - public void Test_1294() - { - } - [Fact] - public void Test_1295() - { - } - [Fact] - public void Test_1296() - { - } - [Fact] - public void Test_1297() - { - } - [Fact] - public void Test_1298() - { - } - [Fact] - public void Test_1299() - { - } - [Fact] - public void Test_1300() - { - } - [Fact] - public void Test_1301() - { - } - [Fact] - public void Test_1302() - { - } - [Fact] - public void Test_1303() - { - } - [Fact] - public void Test_1304() - { - } - [Fact] - public void Test_1305() - { - } - [Fact] - public void Test_1306() - { - } - [Fact] - public void Test_1307() - { - } - [Fact] - public void Test_1308() - { - } - [Fact] - public void Test_1309() - { - } - [Fact] - public void Test_1310() - { - } - [Fact] - public void Test_1311() - { - } - [Fact] - public void Test_1312() - { - } - [Fact] - public void Test_1313() - { - } - [Fact] - public void Test_1314() - { - } - [Fact] - public void Test_1315() - { - } - [Fact] - public void Test_1316() - { - } - [Fact] - public void Test_1317() - { - } - [Fact] - public void Test_1318() - { - } - [Fact] - public void Test_1319() - { - } - [Fact] - public void Test_1320() - { - } - [Fact] - public void Test_1321() - { - } - [Fact] - public void Test_1322() - { - } - [Fact] - public void Test_1323() - { - } - [Fact] - public void Test_1324() - { - } - [Fact] - public void Test_1325() - { - } - [Fact] - public void Test_1326() - { - } - [Fact] - public void Test_1327() - { - } - [Fact] - public void Test_1328() - { - } - [Fact] - public void Test_1329() - { - } - [Fact] - public void Test_1330() - { - } - [Fact] - public void Test_1331() - { - } - [Fact] - public void Test_1332() - { - } - [Fact] - public void Test_1333() - { - } - [Fact] - public void Test_1334() - { - } - [Fact] - public void Test_1335() - { - } - [Fact] - public void Test_1336() - { - } - [Fact] - public void Test_1337() - { - } - [Fact] - public void Test_1338() - { - } - [Fact] - public void Test_1339() - { - } - [Fact] - public void Test_1340() - { - } - [Fact] - public void Test_1341() - { - } - [Fact] - public void Test_1342() - { - } - [Fact] - public void Test_1343() - { - } - [Fact] - public void Test_1344() - { - } - [Fact] - public void Test_1345() - { - } - [Fact] - public void Test_1346() - { - } - [Fact] - public void Test_1347() - { - } - [Fact] - public void Test_1348() - { - } - [Fact] - public void Test_1349() - { - } - [Fact] - public void Test_1350() - { - } - [Fact] - public void Test_1351() - { - } - [Fact] - public void Test_1352() - { - } - [Fact] - public void Test_1353() - { - } - [Fact] - public void Test_1354() - { - } - [Fact] - public void Test_1355() - { - } - [Fact] - public void Test_1356() - { - } - [Fact] - public void Test_1357() - { - } - [Fact] - public void Test_1358() - { - } - [Fact] - public void Test_1359() - { - } - [Fact] - public void Test_1360() - { - } - [Fact] - public void Test_1361() - { - } - [Fact] - public void Test_1362() - { - } - [Fact] - public void Test_1363() - { - } - [Fact] - public void Test_1364() - { - } - [Fact] - public void Test_1365() - { - } - [Fact] - public void Test_1366() - { - } - [Fact] - public void Test_1367() - { - } - [Fact] - public void Test_1368() - { - } - [Fact] - public void Test_1369() - { - } - [Fact] - public void Test_1370() - { - } - [Fact] - public void Test_1371() - { - } - [Fact] - public void Test_1372() - { - } - [Fact] - public void Test_1373() - { - } - [Fact] - public void Test_1374() - { - } - [Fact] - public void Test_1375() - { - } - [Fact] - public void Test_1376() - { - } - [Fact] - public void Test_1377() - { - } - [Fact] - public void Test_1378() - { - } - [Fact] - public void Test_1379() - { - } - [Fact] - public void Test_1380() - { - } - [Fact] - public void Test_1381() - { - } - [Fact] - public void Test_1382() - { - } - [Fact] - public void Test_1383() - { - } - [Fact] - public void Test_1384() - { - } - [Fact] - public void Test_1385() - { - } - [Fact] - public void Test_1386() - { - } - [Fact] - public void Test_1387() - { - } - [Fact] - public void Test_1388() - { - } - [Fact] - public void Test_1389() - { - } - [Fact] - public void Test_1390() - { - } - [Fact] - public void Test_1391() - { - } - [Fact] - public void Test_1392() - { - } - [Fact] - public void Test_1393() - { - } - [Fact] - public void Test_1394() - { - } - [Fact] - public void Test_1395() - { - } - [Fact] - public void Test_1396() - { - } - [Fact] - public void Test_1397() - { - } - [Fact] - public void Test_1398() - { - } - [Fact] - public void Test_1399() - { - } - [Fact] - public void Test_1400() - { - } - [Fact] - public void Test_1401() - { - } - [Fact] - public void Test_1402() - { - } - [Fact] - public void Test_1403() - { - } - [Fact] - public void Test_1404() - { - } - [Fact] - public void Test_1405() - { - } - [Fact] - public void Test_1406() - { - } - [Fact] - public void Test_1407() - { - } - [Fact] - public void Test_1408() - { - } - [Fact] - public void Test_1409() - { - } - [Fact] - public void Test_1410() - { - } - [Fact] - public void Test_1411() - { - } - [Fact] - public void Test_1412() - { - } - [Fact] - public void Test_1413() - { - } - [Fact] - public void Test_1414() - { - } - [Fact] - public void Test_1415() - { - } - [Fact] - public void Test_1416() - { - } - [Fact] - public void Test_1417() - { - } - [Fact] - public void Test_1418() - { - } - [Fact] - public void Test_1419() - { - } - [Fact] - public void Test_1420() - { - } - [Fact] - public void Test_1421() - { - } - [Fact] - public void Test_1422() - { - } - [Fact] - public void Test_1423() - { - } - [Fact] - public void Test_1424() - { - } - [Fact] - public void Test_1425() - { - } - [Fact] - public void Test_1426() - { - } - [Fact] - public void Test_1427() - { - } - [Fact] - public void Test_1428() - { - } - [Fact] - public void Test_1429() - { - } - [Fact] - public void Test_1430() - { - } - [Fact] - public void Test_1431() - { - } - [Fact] - public void Test_1432() - { - } - [Fact] - public void Test_1433() - { - } - [Fact] - public void Test_1434() - { - } - [Fact] - public void Test_1435() - { - } - [Fact] - public void Test_1436() - { - } - [Fact] - public void Test_1437() - { - } - [Fact] - public void Test_1438() - { - } - [Fact] - public void Test_1439() - { - } - [Fact] - public void Test_1440() - { - } - [Fact] - public void Test_1441() - { - } - [Fact] - public void Test_1442() - { - } - [Fact] - public void Test_1443() - { - } - [Fact] - public void Test_1444() - { - } - [Fact] - public void Test_1445() - { - } - [Fact] - public void Test_1446() - { - } - [Fact] - public void Test_1447() - { - } - [Fact] - public void Test_1448() - { - } - [Fact] - public void Test_1449() - { - } - [Fact] - public void Test_1450() - { - } - [Fact] - public void Test_1451() - { - } - [Fact] - public void Test_1452() - { - } - [Fact] - public void Test_1453() - { - } - [Fact] - public void Test_1454() - { - } - [Fact] - public void Test_1455() - { - } - [Fact] - public void Test_1456() - { - } - [Fact] - public void Test_1457() - { - } - [Fact] - public void Test_1458() - { - } - [Fact] - public void Test_1459() - { - } - [Fact] - public void Test_1460() - { - } - [Fact] - public void Test_1461() - { - } - [Fact] - public void Test_1462() - { - } - [Fact] - public void Test_1463() - { - } - [Fact] - public void Test_1464() - { - } - [Fact] - public void Test_1465() - { - } - [Fact] - public void Test_1466() - { - } - [Fact] - public void Test_1467() - { - } - [Fact] - public void Test_1468() - { - } - [Fact] - public void Test_1469() - { - } - [Fact] - public void Test_1470() - { - } - [Fact] - public void Test_1471() - { - } - [Fact] - public void Test_1472() - { - } - [Fact] - public void Test_1473() - { - } - [Fact] - public void Test_1474() - { - } - [Fact] - public void Test_1475() - { - } - [Fact] - public void Test_1476() - { - } - [Fact] - public void Test_1477() - { - } - [Fact] - public void Test_1478() - { - } - [Fact] - public void Test_1479() - { - } - [Fact] - public void Test_1480() - { - } - [Fact] - public void Test_1481() - { - } - [Fact] - public void Test_1482() - { - } - [Fact] - public void Test_1483() - { - } - [Fact] - public void Test_1484() - { - } - [Fact] - public void Test_1485() - { - } - [Fact] - public void Test_1486() - { - } - [Fact] - public void Test_1487() - { - } - [Fact] - public void Test_1488() - { - } - [Fact] - public void Test_1489() - { - } - [Fact] - public void Test_1490() - { - } - [Fact] - public void Test_1491() - { - } - [Fact] - public void Test_1492() - { - } - [Fact] - public void Test_1493() - { - } - [Fact] - public void Test_1494() - { - } - [Fact] - public void Test_1495() - { - } - [Fact] - public void Test_1496() - { - } - [Fact] - public void Test_1497() - { - } - [Fact] - public void Test_1498() - { - } - [Fact] - public void Test_1499() - { - } - [Fact] - public void Test_1500() - { - } - [Fact] - public void Test_1501() - { - } - [Fact] - public void Test_1502() - { - } - [Fact] - public void Test_1503() - { - } - [Fact] - public void Test_1504() - { - } - [Fact] - public void Test_1505() - { - } - [Fact] - public void Test_1506() - { - } - [Fact] - public void Test_1507() - { - } - [Fact] - public void Test_1508() - { - } - [Fact] - public void Test_1509() - { - } - [Fact] - public void Test_1510() - { - } - [Fact] - public void Test_1511() - { - } - [Fact] - public void Test_1512() - { - } - [Fact] - public void Test_1513() - { - } - [Fact] - public void Test_1514() - { - } - [Fact] - public void Test_1515() - { - } - [Fact] - public void Test_1516() - { - } - [Fact] - public void Test_1517() - { - } - [Fact] - public void Test_1518() - { - } - [Fact] - public void Test_1519() - { - } - [Fact] - public void Test_1520() - { - } - [Fact] - public void Test_1521() - { - } - [Fact] - public void Test_1522() - { - } - [Fact] - public void Test_1523() - { - } - [Fact] - public void Test_1524() - { - } - [Fact] - public void Test_1525() - { - } - [Fact] - public void Test_1526() - { - } - [Fact] - public void Test_1527() - { - } - [Fact] - public void Test_1528() - { - } - [Fact] - public void Test_1529() - { - } - [Fact] - public void Test_1530() - { - } - [Fact] - public void Test_1531() - { - } - [Fact] - public void Test_1532() - { - } - [Fact] - public void Test_1533() - { - } - [Fact] - public void Test_1534() - { - } - [Fact] - public void Test_1535() - { - } - [Fact] - public void Test_1536() - { - } - [Fact] - public void Test_1537() - { - } - [Fact] - public void Test_1538() - { - } - [Fact] - public void Test_1539() - { - } - [Fact] - public void Test_1540() - { - } - [Fact] - public void Test_1541() - { - } - [Fact] - public void Test_1542() - { - } - [Fact] - public void Test_1543() - { - } - [Fact] - public void Test_1544() - { - } - [Fact] - public void Test_1545() - { - } - [Fact] - public void Test_1546() - { - } - [Fact] - public void Test_1547() - { - } - [Fact] - public void Test_1548() - { - } - [Fact] - public void Test_1549() - { - } - [Fact] - public void Test_1550() - { - } - [Fact] - public void Test_1551() - { - } - [Fact] - public void Test_1552() - { - } - [Fact] - public void Test_1553() - { - } - [Fact] - public void Test_1554() - { - } - [Fact] - public void Test_1555() - { - } - [Fact] - public void Test_1556() - { - } - [Fact] - public void Test_1557() - { - } - [Fact] - public void Test_1558() - { - } - [Fact] - public void Test_1559() - { - } - [Fact] - public void Test_1560() - { - } - [Fact] - public void Test_1561() - { - } - [Fact] - public void Test_1562() - { - } - [Fact] - public void Test_1563() - { - } - [Fact] - public void Test_1564() - { - } - [Fact] - public void Test_1565() - { - } - [Fact] - public void Test_1566() - { - } - [Fact] - public void Test_1567() - { - } - [Fact] - public void Test_1568() - { - } - [Fact] - public void Test_1569() - { - } - [Fact] - public void Test_1570() - { - } - [Fact] - public void Test_1571() - { - } - [Fact] - public void Test_1572() - { - } - [Fact] - public void Test_1573() - { - } - [Fact] - public void Test_1574() - { - } - [Fact] - public void Test_1575() - { - } - [Fact] - public void Test_1576() - { - } - [Fact] - public void Test_1577() - { - } - [Fact] - public void Test_1578() - { - } - [Fact] - public void Test_1579() - { - } - [Fact] - public void Test_1580() - { - } - [Fact] - public void Test_1581() - { - } - [Fact] - public void Test_1582() - { - } - [Fact] - public void Test_1583() - { - } - [Fact] - public void Test_1584() - { - } - [Fact] - public void Test_1585() - { - } - [Fact] - public void Test_1586() - { - } - [Fact] - public void Test_1587() - { - } - [Fact] - public void Test_1588() - { - } - [Fact] - public void Test_1589() - { - } - [Fact] - public void Test_1590() - { - } - [Fact] - public void Test_1591() - { - } - [Fact] - public void Test_1592() - { - } - [Fact] - public void Test_1593() - { - } - [Fact] - public void Test_1594() - { - } - [Fact] - public void Test_1595() - { - } - [Fact] - public void Test_1596() - { - } - [Fact] - public void Test_1597() - { - } - [Fact] - public void Test_1598() - { - } - [Fact] - public void Test_1599() - { - } - [Fact] - public void Test_1600() - { - } - [Fact] - public void Test_1601() - { - } - [Fact] - public void Test_1602() - { - } - [Fact] - public void Test_1603() - { - } - [Fact] - public void Test_1604() - { - } - [Fact] - public void Test_1605() - { - } - [Fact] - public void Test_1606() - { - } - [Fact] - public void Test_1607() - { - } - [Fact] - public void Test_1608() - { - } - [Fact] - public void Test_1609() - { - } - [Fact] - public void Test_1610() - { - } - [Fact] - public void Test_1611() - { - } - [Fact] - public void Test_1612() - { - } - [Fact] - public void Test_1613() - { - } - [Fact] - public void Test_1614() - { - } - [Fact] - public void Test_1615() - { - } - [Fact] - public void Test_1616() - { - } - [Fact] - public void Test_1617() - { - } - [Fact] - public void Test_1618() - { - } - [Fact] - public void Test_1619() - { - } - [Fact] - public void Test_1620() - { - } - [Fact] - public void Test_1621() - { - } - [Fact] - public void Test_1622() - { - } - [Fact] - public void Test_1623() - { - } - [Fact] - public void Test_1624() - { - } - [Fact] - public void Test_1625() - { - } - [Fact] - public void Test_1626() - { - } - [Fact] - public void Test_1627() - { - } - [Fact] - public void Test_1628() - { - } - [Fact] - public void Test_1629() - { - } - [Fact] - public void Test_1630() - { - } - [Fact] - public void Test_1631() - { - } - [Fact] - public void Test_1632() - { - } - [Fact] - public void Test_1633() - { - } - [Fact] - public void Test_1634() - { - } - [Fact] - public void Test_1635() - { - } - [Fact] - public void Test_1636() - { - } - [Fact] - public void Test_1637() - { - } - [Fact] - public void Test_1638() - { - } - [Fact] - public void Test_1639() - { - } - [Fact] - public void Test_1640() - { - } - [Fact] - public void Test_1641() - { - } - [Fact] - public void Test_1642() - { - } - [Fact] - public void Test_1643() - { - } - [Fact] - public void Test_1644() - { - } - [Fact] - public void Test_1645() - { - } - [Fact] - public void Test_1646() - { - } - [Fact] - public void Test_1647() - { - } - [Fact] - public void Test_1648() - { - } - [Fact] - public void Test_1649() - { - } - [Fact] - public void Test_1650() - { - } - [Fact] - public void Test_1651() - { - } - [Fact] - public void Test_1652() - { - } - [Fact] - public void Test_1653() - { - } - [Fact] - public void Test_1654() - { - } - [Fact] - public void Test_1655() - { - } - [Fact] - public void Test_1656() - { - } - [Fact] - public void Test_1657() - { - } - [Fact] - public void Test_1658() - { - } - [Fact] - public void Test_1659() - { - } - [Fact] - public void Test_1660() - { - } - [Fact] - public void Test_1661() - { - } - [Fact] - public void Test_1662() - { - } - [Fact] - public void Test_1663() - { - } - [Fact] - public void Test_1664() - { - } - [Fact] - public void Test_1665() - { - } - [Fact] - public void Test_1666() - { - } - [Fact] - public void Test_1667() - { - } - [Fact] - public void Test_1668() - { - } - [Fact] - public void Test_1669() - { - } - [Fact] - public void Test_1670() - { - } - [Fact] - public void Test_1671() - { - } - [Fact] - public void Test_1672() - { - } - [Fact] - public void Test_1673() - { - } - [Fact] - public void Test_1674() - { - } - [Fact] - public void Test_1675() - { - } - [Fact] - public void Test_1676() - { - } - [Fact] - public void Test_1677() - { - } - [Fact] - public void Test_1678() - { - } - [Fact] - public void Test_1679() - { - } - [Fact] - public void Test_1680() - { - } - [Fact] - public void Test_1681() - { - } - [Fact] - public void Test_1682() - { - } - [Fact] - public void Test_1683() - { - } - [Fact] - public void Test_1684() - { - } - [Fact] - public void Test_1685() - { - } - [Fact] - public void Test_1686() - { - } - [Fact] - public void Test_1687() - { - } - [Fact] - public void Test_1688() - { - } - [Fact] - public void Test_1689() - { - } - [Fact] - public void Test_1690() - { - } - [Fact] - public void Test_1691() - { - } - [Fact] - public void Test_1692() - { - } - [Fact] - public void Test_1693() - { - } - [Fact] - public void Test_1694() - { - } - [Fact] - public void Test_1695() - { - } - [Fact] - public void Test_1696() - { - } - [Fact] - public void Test_1697() - { - } - [Fact] - public void Test_1698() - { - } - [Fact] - public void Test_1699() - { - } - [Fact] - public void Test_1700() - { - } - [Fact] - public void Test_1701() - { - } - [Fact] - public void Test_1702() - { - } - [Fact] - public void Test_1703() - { - } - [Fact] - public void Test_1704() - { - } - [Fact] - public void Test_1705() - { - } - [Fact] - public void Test_1706() - { - } - [Fact] - public void Test_1707() - { - } - [Fact] - public void Test_1708() - { - } - [Fact] - public void Test_1709() - { - } - [Fact] - public void Test_1710() - { - } - [Fact] - public void Test_1711() - { - } - [Fact] - public void Test_1712() - { - } - [Fact] - public void Test_1713() - { - } - [Fact] - public void Test_1714() - { - } - [Fact] - public void Test_1715() - { - } - [Fact] - public void Test_1716() - { - } - [Fact] - public void Test_1717() - { - } - [Fact] - public void Test_1718() - { - } - [Fact] - public void Test_1719() - { - } - [Fact] - public void Test_1720() - { - } - [Fact] - public void Test_1721() - { - } - [Fact] - public void Test_1722() - { - } - [Fact] - public void Test_1723() - { - } - [Fact] - public void Test_1724() - { - } - [Fact] - public void Test_1725() - { - } - [Fact] - public void Test_1726() - { - } - [Fact] - public void Test_1727() - { - } - [Fact] - public void Test_1728() - { - } - [Fact] - public void Test_1729() - { - } - [Fact] - public void Test_1730() - { - } - [Fact] - public void Test_1731() - { - } - [Fact] - public void Test_1732() - { - } - [Fact] - public void Test_1733() - { - } - [Fact] - public void Test_1734() - { - } - [Fact] - public void Test_1735() - { - } - [Fact] - public void Test_1736() - { - } - [Fact] - public void Test_1737() - { - } - [Fact] - public void Test_1738() - { - } - [Fact] - public void Test_1739() - { - } - [Fact] - public void Test_1740() - { - } - [Fact] - public void Test_1741() - { - } - [Fact] - public void Test_1742() - { - } - [Fact] - public void Test_1743() - { - } - [Fact] - public void Test_1744() - { - } - [Fact] - public void Test_1745() - { - } - [Fact] - public void Test_1746() - { - } - [Fact] - public void Test_1747() - { - } - [Fact] - public void Test_1748() - { - } - [Fact] - public void Test_1749() - { - } - [Fact] - public void Test_1750() - { - } - [Fact] - public void Test_1751() - { - } - [Fact] - public void Test_1752() - { - } - [Fact] - public void Test_1753() - { - } - [Fact] - public void Test_1754() - { - } - [Fact] - public void Test_1755() - { - } - [Fact] - public void Test_1756() - { - } - [Fact] - public void Test_1757() - { - } - [Fact] - public void Test_1758() - { - } - [Fact] - public void Test_1759() - { - } - [Fact] - public void Test_1760() - { - } - [Fact] - public void Test_1761() - { - } - [Fact] - public void Test_1762() - { - } - [Fact] - public void Test_1763() - { - } - [Fact] - public void Test_1764() - { - } - [Fact] - public void Test_1765() - { - } - [Fact] - public void Test_1766() - { - } - [Fact] - public void Test_1767() - { - } - [Fact] - public void Test_1768() - { - } - [Fact] - public void Test_1769() - { - } - [Fact] - public void Test_1770() - { - } - [Fact] - public void Test_1771() - { - } - [Fact] - public void Test_1772() - { - } - [Fact] - public void Test_1773() - { - } - [Fact] - public void Test_1774() - { - } - [Fact] - public void Test_1775() - { - } - [Fact] - public void Test_1776() - { - } - [Fact] - public void Test_1777() - { - } - [Fact] - public void Test_1778() - { - } - [Fact] - public void Test_1779() - { - } - [Fact] - public void Test_1780() - { - } - [Fact] - public void Test_1781() - { - } - [Fact] - public void Test_1782() - { - } - [Fact] - public void Test_1783() - { - } - [Fact] - public void Test_1784() - { - } - [Fact] - public void Test_1785() - { - } - [Fact] - public void Test_1786() - { - } - [Fact] - public void Test_1787() - { - } - [Fact] - public void Test_1788() - { - } - [Fact] - public void Test_1789() - { - } - [Fact] - public void Test_1790() - { - } - [Fact] - public void Test_1791() - { - } - [Fact] - public void Test_1792() - { - } - [Fact] - public void Test_1793() - { - } - [Fact] - public void Test_1794() - { - } - [Fact] - public void Test_1795() - { - } - [Fact] - public void Test_1796() - { - } - [Fact] - public void Test_1797() - { - } - [Fact] - public void Test_1798() - { - } - [Fact] - public void Test_1799() - { - } - [Fact] - public void Test_1800() - { - } - [Fact] - public void Test_1801() - { - } - [Fact] - public void Test_1802() - { - } - [Fact] - public void Test_1803() - { - } - [Fact] - public void Test_1804() - { - } - [Fact] - public void Test_1805() - { - } - [Fact] - public void Test_1806() - { - } - [Fact] - public void Test_1807() - { - } - [Fact] - public void Test_1808() - { - } - [Fact] - public void Test_1809() - { - } - [Fact] - public void Test_1810() - { - } - [Fact] - public void Test_1811() - { - } - [Fact] - public void Test_1812() - { - } - [Fact] - public void Test_1813() - { - } - [Fact] - public void Test_1814() - { - } - [Fact] - public void Test_1815() - { - } - [Fact] - public void Test_1816() - { - } - [Fact] - public void Test_1817() - { - } - [Fact] - public void Test_1818() - { - } - [Fact] - public void Test_1819() - { - } - [Fact] - public void Test_1820() - { - } - [Fact] - public void Test_1821() - { - } - [Fact] - public void Test_1822() - { - } - [Fact] - public void Test_1823() - { - } - [Fact] - public void Test_1824() - { - } - [Fact] - public void Test_1825() - { - } - [Fact] - public void Test_1826() - { - } - [Fact] - public void Test_1827() - { - } - [Fact] - public void Test_1828() - { - } - [Fact] - public void Test_1829() - { - } - [Fact] - public void Test_1830() - { - } - [Fact] - public void Test_1831() - { - } - [Fact] - public void Test_1832() - { - } - [Fact] - public void Test_1833() - { - } - [Fact] - public void Test_1834() - { - } - [Fact] - public void Test_1835() - { - } - [Fact] - public void Test_1836() - { - } - [Fact] - public void Test_1837() - { - } - [Fact] - public void Test_1838() - { - } - [Fact] - public void Test_1839() - { - } - [Fact] - public void Test_1840() - { - } - [Fact] - public void Test_1841() - { - } - [Fact] - public void Test_1842() - { - } - [Fact] - public void Test_1843() - { - } - [Fact] - public void Test_1844() - { - } - [Fact] - public void Test_1845() - { - } - [Fact] - public void Test_1846() - { - } - [Fact] - public void Test_1847() - { - } - [Fact] - public void Test_1848() - { - } - [Fact] - public void Test_1849() - { - } - [Fact] - public void Test_1850() - { - } - [Fact] - public void Test_1851() - { - } - [Fact] - public void Test_1852() - { - } - [Fact] - public void Test_1853() - { - } - [Fact] - public void Test_1854() - { - } - [Fact] - public void Test_1855() - { - } - [Fact] - public void Test_1856() - { - } - [Fact] - public void Test_1857() - { - } - [Fact] - public void Test_1858() - { - } - [Fact] - public void Test_1859() - { - } - [Fact] - public void Test_1860() - { - } - [Fact] - public void Test_1861() - { - } - [Fact] - public void Test_1862() - { - } - [Fact] - public void Test_1863() - { - } - [Fact] - public void Test_1864() - { - } - [Fact] - public void Test_1865() - { - } - [Fact] - public void Test_1866() - { - } - [Fact] - public void Test_1867() - { - } - [Fact] - public void Test_1868() - { - } - [Fact] - public void Test_1869() - { - } - [Fact] - public void Test_1870() - { - } - [Fact] - public void Test_1871() - { - } - [Fact] - public void Test_1872() - { - } - [Fact] - public void Test_1873() - { - } - [Fact] - public void Test_1874() - { - } - [Fact] - public void Test_1875() - { - } - [Fact] - public void Test_1876() - { - } - [Fact] - public void Test_1877() - { - } - [Fact] - public void Test_1878() - { - } - [Fact] - public void Test_1879() - { - } - [Fact] - public void Test_1880() - { - } - [Fact] - public void Test_1881() - { - } - [Fact] - public void Test_1882() - { - } - [Fact] - public void Test_1883() - { - } - [Fact] - public void Test_1884() - { - } - [Fact] - public void Test_1885() - { - } - [Fact] - public void Test_1886() - { - } - [Fact] - public void Test_1887() - { - } - [Fact] - public void Test_1888() - { - } - [Fact] - public void Test_1889() - { - } - [Fact] - public void Test_1890() - { - } - [Fact] - public void Test_1891() - { - } - [Fact] - public void Test_1892() - { - } - [Fact] - public void Test_1893() - { - } - [Fact] - public void Test_1894() - { - } - [Fact] - public void Test_1895() - { - } - [Fact] - public void Test_1896() - { - } - [Fact] - public void Test_1897() - { - } - [Fact] - public void Test_1898() - { - } - [Fact] - public void Test_1899() - { - } - [Fact] - public void Test_1900() - { - } - [Fact] - public void Test_1901() - { - } - [Fact] - public void Test_1902() - { - } - [Fact] - public void Test_1903() - { - } - [Fact] - public void Test_1904() - { - } - [Fact] - public void Test_1905() - { - } - [Fact] - public void Test_1906() - { - } - [Fact] - public void Test_1907() - { - } - [Fact] - public void Test_1908() - { - } - [Fact] - public void Test_1909() - { - } - [Fact] - public void Test_1910() - { - } - [Fact] - public void Test_1911() - { - } - [Fact] - public void Test_1912() - { - } - [Fact] - public void Test_1913() - { - } - [Fact] - public void Test_1914() - { - } - [Fact] - public void Test_1915() - { - } - [Fact] - public void Test_1916() - { - } - [Fact] - public void Test_1917() - { - } - [Fact] - public void Test_1918() - { - } - [Fact] - public void Test_1919() - { - } - [Fact] - public void Test_1920() - { - } - [Fact] - public void Test_1921() - { - } - [Fact] - public void Test_1922() - { - } - [Fact] - public void Test_1923() - { - } - [Fact] - public void Test_1924() - { - } - [Fact] - public void Test_1925() - { - } - [Fact] - public void Test_1926() - { - } - [Fact] - public void Test_1927() - { - } - [Fact] - public void Test_1928() - { - } - [Fact] - public void Test_1929() - { - } - [Fact] - public void Test_1930() - { - } - [Fact] - public void Test_1931() - { - } - [Fact] - public void Test_1932() - { - } - [Fact] - public void Test_1933() - { - } - [Fact] - public void Test_1934() - { - } - [Fact] - public void Test_1935() - { - } - [Fact] - public void Test_1936() - { - } - [Fact] - public void Test_1937() - { - } - [Fact] - public void Test_1938() - { - } - [Fact] - public void Test_1939() - { - } - [Fact] - public void Test_1940() - { - } - [Fact] - public void Test_1941() - { - } - [Fact] - public void Test_1942() - { - } - [Fact] - public void Test_1943() - { - } - [Fact] - public void Test_1944() - { - } - [Fact] - public void Test_1945() - { - } - [Fact] - public void Test_1946() - { - } - [Fact] - public void Test_1947() - { - } - [Fact] - public void Test_1948() - { - } - [Fact] - public void Test_1949() - { - } - [Fact] - public void Test_1950() - { - } - [Fact] - public void Test_1951() - { - } - [Fact] - public void Test_1952() - { - } - [Fact] - public void Test_1953() - { - } - [Fact] - public void Test_1954() - { - } - [Fact] - public void Test_1955() - { - } - [Fact] - public void Test_1956() - { - } - [Fact] - public void Test_1957() - { - } - [Fact] - public void Test_1958() - { - } - [Fact] - public void Test_1959() - { - } - [Fact] - public void Test_1960() - { - } - [Fact] - public void Test_1961() - { - } - [Fact] - public void Test_1962() - { - } - [Fact] - public void Test_1963() - { - } - [Fact] - public void Test_1964() - { - } - [Fact] - public void Test_1965() - { - } - [Fact] - public void Test_1966() - { - } - [Fact] - public void Test_1967() - { - } - [Fact] - public void Test_1968() - { - } - [Fact] - public void Test_1969() - { - } - [Fact] - public void Test_1970() - { - } - [Fact] - public void Test_1971() - { - } - [Fact] - public void Test_1972() - { - } - [Fact] - public void Test_1973() - { - } - [Fact] - public void Test_1974() - { - } - [Fact] - public void Test_1975() - { - } - [Fact] - public void Test_1976() - { - } - [Fact] - public void Test_1977() - { - } - [Fact] - public void Test_1978() - { - } - [Fact] - public void Test_1979() - { - } - [Fact] - public void Test_1980() - { - } - [Fact] - public void Test_1981() - { - } - [Fact] - public void Test_1982() - { - } - [Fact] - public void Test_1983() - { - } - [Fact] - public void Test_1984() - { - } - [Fact] - public void Test_1985() - { - } - [Fact] - public void Test_1986() - { - } - [Fact] - public void Test_1987() - { - } - [Fact] - public void Test_1988() - { - } - [Fact] - public void Test_1989() - { - } - [Fact] - public void Test_1990() - { - } - [Fact] - public void Test_1991() - { - } - [Fact] - public void Test_1992() - { - } - [Fact] - public void Test_1993() - { - } - [Fact] - public void Test_1994() - { - } - [Fact] - public void Test_1995() - { - } - [Fact] - public void Test_1996() - { - } - [Fact] - public void Test_1997() - { - } - [Fact] - public void Test_1998() - { - } - [Fact] - public void Test_1999() - { - } - [Fact] - public void Test_2000() - { - } - [Fact] - public void Test_2001() - { - } - [Fact] - public void Test_2002() - { - } - [Fact] - public void Test_2003() - { - } - [Fact] - public void Test_2004() - { - } - [Fact] - public void Test_2005() - { - } - [Fact] - public void Test_2006() - { - } - [Fact] - public void Test_2007() - { - } - [Fact] - public void Test_2008() - { - } - [Fact] - public void Test_2009() - { - } - [Fact] - public void Test_2010() - { - } - [Fact] - public void Test_2011() - { - } - [Fact] - public void Test_2012() - { - } - [Fact] - public void Test_2013() - { - } - [Fact] - public void Test_2014() - { - } - [Fact] - public void Test_2015() - { - } - [Fact] - public void Test_2016() - { - } - [Fact] - public void Test_2017() - { - } - [Fact] - public void Test_2018() - { - } - [Fact] - public void Test_2019() - { - } - [Fact] - public void Test_2020() - { - } - [Fact] - public void Test_2021() - { - } - [Fact] - public void Test_2022() - { - } - [Fact] - public void Test_2023() - { - } - [Fact] - public void Test_2024() - { - } - [Fact] - public void Test_2025() - { - } - [Fact] - public void Test_2026() - { - } - [Fact] - public void Test_2027() - { - } - [Fact] - public void Test_2028() - { - } - [Fact] - public void Test_2029() - { - } - [Fact] - public void Test_2030() - { - } - [Fact] - public void Test_2031() - { - } - [Fact] - public void Test_2032() - { - } - [Fact] - public void Test_2033() - { - } - [Fact] - public void Test_2034() - { - } - [Fact] - public void Test_2035() - { - } - [Fact] - public void Test_2036() - { - } - [Fact] - public void Test_2037() - { - } - [Fact] - public void Test_2038() - { - } - [Fact] - public void Test_2039() - { - } - [Fact] - public void Test_2040() - { - } - [Fact] - public void Test_2041() - { - } - [Fact] - public void Test_2042() - { - } - [Fact] - public void Test_2043() - { - } - [Fact] - public void Test_2044() - { - } - [Fact] - public void Test_2045() - { - } - [Fact] - public void Test_2046() - { - } - [Fact] - public void Test_2047() - { - } - [Fact] - public void Test_2048() - { - } - [Fact] - public void Test_2049() - { - } - [Fact] - public void Test_2050() - { - } - [Fact] - public void Test_2051() - { - } - [Fact] - public void Test_2052() - { - } - [Fact] - public void Test_2053() - { - } - [Fact] - public void Test_2054() - { - } - [Fact] - public void Test_2055() - { - } - [Fact] - public void Test_2056() - { - } - [Fact] - public void Test_2057() - { - } - [Fact] - public void Test_2058() - { - } - [Fact] - public void Test_2059() - { - } - [Fact] - public void Test_2060() - { - } - [Fact] - public void Test_2061() - { - } - [Fact] - public void Test_2062() - { - } - [Fact] - public void Test_2063() - { - } - [Fact] - public void Test_2064() - { - } - [Fact] - public void Test_2065() - { - } - [Fact] - public void Test_2066() - { - } - [Fact] - public void Test_2067() - { - } - [Fact] - public void Test_2068() - { - } - [Fact] - public void Test_2069() - { - } - [Fact] - public void Test_2070() - { - } - [Fact] - public void Test_2071() - { - } - [Fact] - public void Test_2072() - { - } - [Fact] - public void Test_2073() - { - } - [Fact] - public void Test_2074() - { - } - [Fact] - public void Test_2075() - { - } - [Fact] - public void Test_2076() - { - } - [Fact] - public void Test_2077() - { - } - [Fact] - public void Test_2078() - { - } - [Fact] - public void Test_2079() - { - } - [Fact] - public void Test_2080() - { - } - [Fact] - public void Test_2081() - { - } - [Fact] - public void Test_2082() - { - } - [Fact] - public void Test_2083() - { - } - [Fact] - public void Test_2084() - { - } - [Fact] - public void Test_2085() - { - } - [Fact] - public void Test_2086() - { - } - [Fact] - public void Test_2087() - { - } - [Fact] - public void Test_2088() - { - } - [Fact] - public void Test_2089() - { - } - [Fact] - public void Test_2090() - { - } - [Fact] - public void Test_2091() - { - } - [Fact] - public void Test_2092() - { - } - [Fact] - public void Test_2093() - { - } - [Fact] - public void Test_2094() - { - } - [Fact] - public void Test_2095() - { - } - [Fact] - public void Test_2096() - { - } - [Fact] - public void Test_2097() - { - } - [Fact] - public void Test_2098() - { - } - [Fact] - public void Test_2099() - { - } - [Fact] - public void Test_2100() - { - } - [Fact] - public void Test_2101() - { - } - [Fact] - public void Test_2102() - { - } - [Fact] - public void Test_2103() - { - } - [Fact] - public void Test_2104() - { - } - [Fact] - public void Test_2105() - { - } - [Fact] - public void Test_2106() - { - } - [Fact] - public void Test_2107() - { - } - [Fact] - public void Test_2108() - { - } - [Fact] - public void Test_2109() - { - } - [Fact] - public void Test_2110() - { - } - [Fact] - public void Test_2111() - { - } - [Fact] - public void Test_2112() - { - } - [Fact] - public void Test_2113() - { - } - [Fact] - public void Test_2114() - { - } - [Fact] - public void Test_2115() - { - } - [Fact] - public void Test_2116() - { - } - [Fact] - public void Test_2117() - { - } - [Fact] - public void Test_2118() - { - } - [Fact] - public void Test_2119() - { - } - [Fact] - public void Test_2120() - { - } - [Fact] - public void Test_2121() - { - } - [Fact] - public void Test_2122() - { - } - [Fact] - public void Test_2123() - { - } - [Fact] - public void Test_2124() - { - } - [Fact] - public void Test_2125() - { - } - [Fact] - public void Test_2126() - { - } - [Fact] - public void Test_2127() - { - } - [Fact] - public void Test_2128() - { - } - [Fact] - public void Test_2129() - { - } - [Fact] - public void Test_2130() - { - } - [Fact] - public void Test_2131() - { - } - [Fact] - public void Test_2132() - { - } - [Fact] - public void Test_2133() - { - } - [Fact] - public void Test_2134() - { - } - [Fact] - public void Test_2135() - { - } - [Fact] - public void Test_2136() - { - } - [Fact] - public void Test_2137() - { - } - [Fact] - public void Test_2138() - { - } - [Fact] - public void Test_2139() - { - } - [Fact] - public void Test_2140() - { - } - [Fact] - public void Test_2141() - { - } - [Fact] - public void Test_2142() - { - } - [Fact] - public void Test_2143() - { - } - [Fact] - public void Test_2144() - { - } - [Fact] - public void Test_2145() - { - } - [Fact] - public void Test_2146() - { - } - [Fact] - public void Test_2147() - { - } - [Fact] - public void Test_2148() - { - } - [Fact] - public void Test_2149() - { - } - [Fact] - public void Test_2150() - { - } - [Fact] - public void Test_2151() - { - } - [Fact] - public void Test_2152() - { - } - [Fact] - public void Test_2153() - { - } - [Fact] - public void Test_2154() - { - } - [Fact] - public void Test_2155() - { - } - [Fact] - public void Test_2156() - { - } - [Fact] - public void Test_2157() - { - } - [Fact] - public void Test_2158() - { - } - [Fact] - public void Test_2159() - { - } - [Fact] - public void Test_2160() - { - } - [Fact] - public void Test_2161() - { - } - [Fact] - public void Test_2162() - { - } - [Fact] - public void Test_2163() - { - } - [Fact] - public void Test_2164() - { - } - [Fact] - public void Test_2165() - { - } - [Fact] - public void Test_2166() - { - } - [Fact] - public void Test_2167() - { - } - [Fact] - public void Test_2168() - { - } - [Fact] - public void Test_2169() - { - } - [Fact] - public void Test_2170() - { - } - [Fact] - public void Test_2171() - { - } - [Fact] - public void Test_2172() - { - } - [Fact] - public void Test_2173() - { - } - [Fact] - public void Test_2174() - { - } - [Fact] - public void Test_2175() - { - } - [Fact] - public void Test_2176() - { - } - [Fact] - public void Test_2177() - { - } - [Fact] - public void Test_2178() - { - } - [Fact] - public void Test_2179() - { - } - [Fact] - public void Test_2180() - { - } - [Fact] - public void Test_2181() - { - } - [Fact] - public void Test_2182() - { - } - [Fact] - public void Test_2183() - { - } - [Fact] - public void Test_2184() - { - } - [Fact] - public void Test_2185() - { - } - [Fact] - public void Test_2186() - { - } - [Fact] - public void Test_2187() - { - } - [Fact] - public void Test_2188() - { - } - [Fact] - public void Test_2189() - { - } - [Fact] - public void Test_2190() - { - } - [Fact] - public void Test_2191() - { - } - [Fact] - public void Test_2192() - { - } - [Fact] - public void Test_2193() - { - } - [Fact] - public void Test_2194() - { - } - [Fact] - public void Test_2195() - { - } - [Fact] - public void Test_2196() - { - } - [Fact] - public void Test_2197() - { - } - [Fact] - public void Test_2198() - { - } - [Fact] - public void Test_2199() - { - } - [Fact] - public void Test_2200() - { - } - [Fact] - public void Test_2201() - { - } - [Fact] - public void Test_2202() - { - } - [Fact] - public void Test_2203() - { - } - [Fact] - public void Test_2204() - { - } - [Fact] - public void Test_2205() - { - } - [Fact] - public void Test_2206() - { - } - [Fact] - public void Test_2207() - { - } - [Fact] - public void Test_2208() - { - } - [Fact] - public void Test_2209() - { - } - [Fact] - public void Test_2210() - { - } - [Fact] - public void Test_2211() - { - } - [Fact] - public void Test_2212() - { - } - [Fact] - public void Test_2213() - { - } - [Fact] - public void Test_2214() - { - } - [Fact] - public void Test_2215() - { - } - [Fact] - public void Test_2216() - { - } - [Fact] - public void Test_2217() - { - } - [Fact] - public void Test_2218() - { - } - [Fact] - public void Test_2219() - { - } - [Fact] - public void Test_2220() - { - } - [Fact] - public void Test_2221() - { - } - [Fact] - public void Test_2222() - { - } - [Fact] - public void Test_2223() - { - } - [Fact] - public void Test_2224() - { - } - [Fact] - public void Test_2225() - { - } - [Fact] - public void Test_2226() - { - } - [Fact] - public void Test_2227() - { - } - [Fact] - public void Test_2228() - { - } - [Fact] - public void Test_2229() - { - } - [Fact] - public void Test_2230() - { - } - [Fact] - public void Test_2231() - { - } - [Fact] - public void Test_2232() - { - } - [Fact] - public void Test_2233() - { - } - [Fact] - public void Test_2234() - { - } - [Fact] - public void Test_2235() - { - } - [Fact] - public void Test_2236() - { - } - [Fact] - public void Test_2237() - { - } - [Fact] - public void Test_2238() - { - } - [Fact] - public void Test_2239() - { - } - [Fact] - public void Test_2240() - { - } - [Fact] - public void Test_2241() - { - } - [Fact] - public void Test_2242() - { - } - [Fact] - public void Test_2243() - { - } - [Fact] - public void Test_2244() - { - } - [Fact] - public void Test_2245() - { - } - [Fact] - public void Test_2246() - { - } - [Fact] - public void Test_2247() - { - } - [Fact] - public void Test_2248() - { - } - [Fact] - public void Test_2249() - { - } - [Fact] - public void Test_2250() - { - } - [Fact] - public void Test_2251() - { - } - [Fact] - public void Test_2252() - { - } - [Fact] - public void Test_2253() - { - } - [Fact] - public void Test_2254() - { - } - [Fact] - public void Test_2255() - { - } - [Fact] - public void Test_2256() - { - } - [Fact] - public void Test_2257() - { - } - [Fact] - public void Test_2258() - { - } - [Fact] - public void Test_2259() - { - } - [Fact] - public void Test_2260() - { - } - [Fact] - public void Test_2261() - { - } - [Fact] - public void Test_2262() - { - } - [Fact] - public void Test_2263() - { - } - [Fact] - public void Test_2264() - { - } - [Fact] - public void Test_2265() - { - } - [Fact] - public void Test_2266() - { - } - [Fact] - public void Test_2267() - { - } - [Fact] - public void Test_2268() - { - } - [Fact] - public void Test_2269() - { - } - [Fact] - public void Test_2270() - { - } - [Fact] - public void Test_2271() - { - } - [Fact] - public void Test_2272() - { - } - [Fact] - public void Test_2273() - { - } - [Fact] - public void Test_2274() - { - } - [Fact] - public void Test_2275() - { - } - [Fact] - public void Test_2276() - { - } - [Fact] - public void Test_2277() - { - } - [Fact] - public void Test_2278() - { - } - [Fact] - public void Test_2279() - { - } - [Fact] - public void Test_2280() - { - } - [Fact] - public void Test_2281() - { - } - [Fact] - public void Test_2282() - { - } - [Fact] - public void Test_2283() - { - } - [Fact] - public void Test_2284() - { - } - [Fact] - public void Test_2285() - { - } - [Fact] - public void Test_2286() - { - } - [Fact] - public void Test_2287() - { - } - [Fact] - public void Test_2288() - { - } - [Fact] - public void Test_2289() - { - } - [Fact] - public void Test_2290() - { - } - [Fact] - public void Test_2291() - { - } - [Fact] - public void Test_2292() - { - } - [Fact] - public void Test_2293() - { - } - [Fact] - public void Test_2294() - { - } - [Fact] - public void Test_2295() - { - } - [Fact] - public void Test_2296() - { - } - [Fact] - public void Test_2297() - { - } - [Fact] - public void Test_2298() - { - } - [Fact] - public void Test_2299() - { - } - [Fact] - public void Test_2300() - { - } - [Fact] - public void Test_2301() - { - } - [Fact] - public void Test_2302() - { - } - [Fact] - public void Test_2303() - { - } - [Fact] - public void Test_2304() - { - } - [Fact] - public void Test_2305() - { - } - [Fact] - public void Test_2306() - { - } - [Fact] - public void Test_2307() - { - } - [Fact] - public void Test_2308() - { - } - [Fact] - public void Test_2309() - { - } - [Fact] - public void Test_2310() - { - } - [Fact] - public void Test_2311() - { - } - [Fact] - public void Test_2312() - { - } - [Fact] - public void Test_2313() - { - } - [Fact] - public void Test_2314() - { - } - [Fact] - public void Test_2315() - { - } - [Fact] - public void Test_2316() - { - } - [Fact] - public void Test_2317() - { - } - [Fact] - public void Test_2318() - { - } - [Fact] - public void Test_2319() - { - } - [Fact] - public void Test_2320() - { - } - [Fact] - public void Test_2321() - { - } - [Fact] - public void Test_2322() - { - } - [Fact] - public void Test_2323() - { - } - [Fact] - public void Test_2324() - { - } - [Fact] - public void Test_2325() - { - } - [Fact] - public void Test_2326() - { - } - [Fact] - public void Test_2327() - { - } - [Fact] - public void Test_2328() - { - } - [Fact] - public void Test_2329() - { - } - [Fact] - public void Test_2330() - { - } - [Fact] - public void Test_2331() - { - } - [Fact] - public void Test_2332() - { - } - [Fact] - public void Test_2333() - { - } - [Fact] - public void Test_2334() - { - } - [Fact] - public void Test_2335() - { - } - [Fact] - public void Test_2336() - { - } - [Fact] - public void Test_2337() - { - } - [Fact] - public void Test_2338() - { - } - [Fact] - public void Test_2339() - { - } - [Fact] - public void Test_2340() - { - } - [Fact] - public void Test_2341() - { - } - [Fact] - public void Test_2342() - { - } - [Fact] - public void Test_2343() - { - } - [Fact] - public void Test_2344() - { - } - [Fact] - public void Test_2345() - { - } - [Fact] - public void Test_2346() - { - } - [Fact] - public void Test_2347() - { - } - [Fact] - public void Test_2348() - { - } - [Fact] - public void Test_2349() - { - } - [Fact] - public void Test_2350() - { - } - [Fact] - public void Test_2351() - { - } - [Fact] - public void Test_2352() - { - } - [Fact] - public void Test_2353() - { - } - [Fact] - public void Test_2354() - { - } - [Fact] - public void Test_2355() - { - } - [Fact] - public void Test_2356() - { - } - [Fact] - public void Test_2357() - { - } - [Fact] - public void Test_2358() - { - } - [Fact] - public void Test_2359() - { - } - [Fact] - public void Test_2360() - { - } - [Fact] - public void Test_2361() - { - } - [Fact] - public void Test_2362() - { - } - [Fact] - public void Test_2363() - { - } - [Fact] - public void Test_2364() - { - } - [Fact] - public void Test_2365() - { - } - [Fact] - public void Test_2366() - { - } - [Fact] - public void Test_2367() - { - } - [Fact] - public void Test_2368() - { - } - [Fact] - public void Test_2369() - { - } - [Fact] - public void Test_2370() - { - } - [Fact] - public void Test_2371() - { - } - [Fact] - public void Test_2372() - { - } - [Fact] - public void Test_2373() - { - } - [Fact] - public void Test_2374() - { - } - [Fact] - public void Test_2375() - { - } - [Fact] - public void Test_2376() - { - } - [Fact] - public void Test_2377() - { - } - [Fact] - public void Test_2378() - { - } - [Fact] - public void Test_2379() - { - } - [Fact] - public void Test_2380() - { - } - [Fact] - public void Test_2381() - { - } - [Fact] - public void Test_2382() - { - } - [Fact] - public void Test_2383() - { - } - [Fact] - public void Test_2384() - { - } - [Fact] - public void Test_2385() - { - } - [Fact] - public void Test_2386() - { - } - [Fact] - public void Test_2387() - { - } - [Fact] - public void Test_2388() - { - } - [Fact] - public void Test_2389() - { - } - [Fact] - public void Test_2390() - { - } - [Fact] - public void Test_2391() - { - } - [Fact] - public void Test_2392() - { - } - [Fact] - public void Test_2393() - { - } - [Fact] - public void Test_2394() - { - } - [Fact] - public void Test_2395() - { - } - [Fact] - public void Test_2396() - { - } - [Fact] - public void Test_2397() - { - } - [Fact] - public void Test_2398() - { - } - [Fact] - public void Test_2399() - { - } - [Fact] - public void Test_2400() - { - } - [Fact] - public void Test_2401() - { - } - [Fact] - public void Test_2402() - { - } - [Fact] - public void Test_2403() - { - } - [Fact] - public void Test_2404() - { - } - [Fact] - public void Test_2405() - { - } - [Fact] - public void Test_2406() - { - } - [Fact] - public void Test_2407() - { - } - [Fact] - public void Test_2408() - { - } - [Fact] - public void Test_2409() - { - } - [Fact] - public void Test_2410() - { - } - [Fact] - public void Test_2411() - { - } - [Fact] - public void Test_2412() - { - } - [Fact] - public void Test_2413() - { - } - [Fact] - public void Test_2414() - { - } - [Fact] - public void Test_2415() - { - } - [Fact] - public void Test_2416() - { - } - [Fact] - public void Test_2417() - { - } - [Fact] - public void Test_2418() - { - } - [Fact] - public void Test_2419() - { - } - [Fact] - public void Test_2420() - { - } - [Fact] - public void Test_2421() - { - } - [Fact] - public void Test_2422() - { - } - [Fact] - public void Test_2423() - { - } - [Fact] - public void Test_2424() - { - } - [Fact] - public void Test_2425() - { - } - [Fact] - public void Test_2426() - { - } - [Fact] - public void Test_2427() - { - } - [Fact] - public void Test_2428() - { - } - [Fact] - public void Test_2429() - { - } - [Fact] - public void Test_2430() - { - } - [Fact] - public void Test_2431() - { - } - [Fact] - public void Test_2432() - { - } - [Fact] - public void Test_2433() - { - } - [Fact] - public void Test_2434() - { - } - [Fact] - public void Test_2435() - { - } - [Fact] - public void Test_2436() - { - } - [Fact] - public void Test_2437() - { - } - [Fact] - public void Test_2438() - { - } - [Fact] - public void Test_2439() - { - } - [Fact] - public void Test_2440() - { - } - [Fact] - public void Test_2441() - { - } - [Fact] - public void Test_2442() - { - } - [Fact] - public void Test_2443() - { - } - [Fact] - public void Test_2444() - { - } - [Fact] - public void Test_2445() - { - } - [Fact] - public void Test_2446() - { - } - [Fact] - public void Test_2447() - { - } - [Fact] - public void Test_2448() - { - } - [Fact] - public void Test_2449() - { - } - [Fact] - public void Test_2450() - { - } - [Fact] - public void Test_2451() - { - } - [Fact] - public void Test_2452() - { - } - [Fact] - public void Test_2453() - { - } - [Fact] - public void Test_2454() - { - } - [Fact] - public void Test_2455() - { - } - [Fact] - public void Test_2456() - { - } - [Fact] - public void Test_2457() - { - } - [Fact] - public void Test_2458() - { - } - [Fact] - public void Test_2459() - { - } - [Fact] - public void Test_2460() - { - } - [Fact] - public void Test_2461() - { - } - [Fact] - public void Test_2462() - { - } - [Fact] - public void Test_2463() - { - } - [Fact] - public void Test_2464() - { - } - [Fact] - public void Test_2465() - { - } - [Fact] - public void Test_2466() - { - } - [Fact] - public void Test_2467() - { - } - [Fact] - public void Test_2468() - { - } - [Fact] - public void Test_2469() - { - } - [Fact] - public void Test_2470() - { - } - [Fact] - public void Test_2471() - { - } - [Fact] - public void Test_2472() - { - } - [Fact] - public void Test_2473() - { - } - [Fact] - public void Test_2474() - { - } - [Fact] - public void Test_2475() - { - } - [Fact] - public void Test_2476() - { - } - [Fact] - public void Test_2477() - { - } - [Fact] - public void Test_2478() - { - } - [Fact] - public void Test_2479() - { - } - [Fact] - public void Test_2480() - { - } - [Fact] - public void Test_2481() - { - } - [Fact] - public void Test_2482() - { - } - [Fact] - public void Test_2483() - { - } - [Fact] - public void Test_2484() - { - } - [Fact] - public void Test_2485() - { - } - [Fact] - public void Test_2486() - { - } - [Fact] - public void Test_2487() - { - } - [Fact] - public void Test_2488() - { - } - [Fact] - public void Test_2489() - { - } - [Fact] - public void Test_2490() - { - } - [Fact] - public void Test_2491() - { - } - [Fact] - public void Test_2492() - { - } - [Fact] - public void Test_2493() - { - } - [Fact] - public void Test_2494() - { - } - [Fact] - public void Test_2495() - { - } - [Fact] - public void Test_2496() - { - } - [Fact] - public void Test_2497() - { - } - [Fact] - public void Test_2498() - { - } - [Fact] - public void Test_2499() - { - } - [Fact] - public void Test_2500() - { - } - [Fact] - public void Test_2501() - { - } - [Fact] - public void Test_2502() - { - } - [Fact] - public void Test_2503() - { - } - [Fact] - public void Test_2504() - { - } - [Fact] - public void Test_2505() - { - } - [Fact] - public void Test_2506() - { - } - [Fact] - public void Test_2507() - { - } - [Fact] - public void Test_2508() - { - } - [Fact] - public void Test_2509() - { - } - [Fact] - public void Test_2510() - { - } - [Fact] - public void Test_2511() - { - } - [Fact] - public void Test_2512() - { - } - [Fact] - public void Test_2513() - { - } - [Fact] - public void Test_2514() - { - } - [Fact] - public void Test_2515() - { - } - [Fact] - public void Test_2516() - { - } - [Fact] - public void Test_2517() - { - } - [Fact] - public void Test_2518() - { - } - [Fact] - public void Test_2519() - { - } - [Fact] - public void Test_2520() - { - } - [Fact] - public void Test_2521() - { - } - [Fact] - public void Test_2522() - { - } - [Fact] - public void Test_2523() - { - } - [Fact] - public void Test_2524() - { - } - [Fact] - public void Test_2525() - { - } - [Fact] - public void Test_2526() - { - } - [Fact] - public void Test_2527() - { - } - [Fact] - public void Test_2528() - { - } - [Fact] - public void Test_2529() - { - } - [Fact] - public void Test_2530() - { - } - [Fact] - public void Test_2531() - { - } - [Fact] - public void Test_2532() - { - } - [Fact] - public void Test_2533() - { - } - [Fact] - public void Test_2534() - { - } - [Fact] - public void Test_2535() - { - } - [Fact] - public void Test_2536() - { - } - [Fact] - public void Test_2537() - { - } - [Fact] - public void Test_2538() - { - } - [Fact] - public void Test_2539() - { - } - [Fact] - public void Test_2540() - { - } - [Fact] - public void Test_2541() - { - } - [Fact] - public void Test_2542() - { - } - [Fact] - public void Test_2543() - { - } - [Fact] - public void Test_2544() - { - } - [Fact] - public void Test_2545() - { - } - [Fact] - public void Test_2546() - { - } - [Fact] - public void Test_2547() - { - } - [Fact] - public void Test_2548() - { - } - [Fact] - public void Test_2549() - { - } - [Fact] - public void Test_2550() - { - } - [Fact] - public void Test_2551() - { - } - [Fact] - public void Test_2552() - { - } - [Fact] - public void Test_2553() - { - } - [Fact] - public void Test_2554() - { - } - [Fact] - public void Test_2555() - { - } - [Fact] - public void Test_2556() - { - } - [Fact] - public void Test_2557() - { - } - [Fact] - public void Test_2558() - { - } - [Fact] - public void Test_2559() - { - } - [Fact] - public void Test_2560() - { - } - [Fact] - public void Test_2561() - { - } - [Fact] - public void Test_2562() - { - } - [Fact] - public void Test_2563() - { - } - [Fact] - public void Test_2564() - { - } - [Fact] - public void Test_2565() - { - } - [Fact] - public void Test_2566() - { - } - [Fact] - public void Test_2567() - { - } - [Fact] - public void Test_2568() - { - } - [Fact] - public void Test_2569() - { - } - [Fact] - public void Test_2570() - { - } - [Fact] - public void Test_2571() - { - } - [Fact] - public void Test_2572() - { - } - [Fact] - public void Test_2573() - { - } - [Fact] - public void Test_2574() - { - } - [Fact] - public void Test_2575() - { - } - [Fact] - public void Test_2576() - { - } - [Fact] - public void Test_2577() - { - } - [Fact] - public void Test_2578() - { - } - [Fact] - public void Test_2579() - { - } - [Fact] - public void Test_2580() - { - } - [Fact] - public void Test_2581() - { - } - [Fact] - public void Test_2582() - { - } - [Fact] - public void Test_2583() - { - } - [Fact] - public void Test_2584() - { - } - [Fact] - public void Test_2585() - { - } - [Fact] - public void Test_2586() - { - } - [Fact] - public void Test_2587() - { - } - [Fact] - public void Test_2588() - { - } - [Fact] - public void Test_2589() - { - } - [Fact] - public void Test_2590() - { - } - [Fact] - public void Test_2591() - { - } - [Fact] - public void Test_2592() - { - } - [Fact] - public void Test_2593() - { - } - [Fact] - public void Test_2594() - { - } - [Fact] - public void Test_2595() - { - } - [Fact] - public void Test_2596() - { - } - [Fact] - public void Test_2597() - { - } - [Fact] - public void Test_2598() - { - } - [Fact] - public void Test_2599() - { - } - [Fact] - public void Test_2600() - { - } - [Fact] - public void Test_2601() - { - } - [Fact] - public void Test_2602() - { - } - [Fact] - public void Test_2603() - { - } - [Fact] - public void Test_2604() - { - } - [Fact] - public void Test_2605() - { - } - [Fact] - public void Test_2606() - { - } - [Fact] - public void Test_2607() - { - } - [Fact] - public void Test_2608() - { - } - [Fact] - public void Test_2609() - { - } - [Fact] - public void Test_2610() - { - } - [Fact] - public void Test_2611() - { - } - [Fact] - public void Test_2612() - { - } - [Fact] - public void Test_2613() - { - } - [Fact] - public void Test_2614() - { - } - [Fact] - public void Test_2615() - { - } - [Fact] - public void Test_2616() - { - } - [Fact] - public void Test_2617() - { - } - [Fact] - public void Test_2618() - { - } - [Fact] - public void Test_2619() - { - } - [Fact] - public void Test_2620() - { - } - [Fact] - public void Test_2621() - { - } - [Fact] - public void Test_2622() - { - } - [Fact] - public void Test_2623() - { - } - [Fact] - public void Test_2624() - { - } - [Fact] - public void Test_2625() - { - } - [Fact] - public void Test_2626() - { - } - [Fact] - public void Test_2627() - { - } - [Fact] - public void Test_2628() - { - } - [Fact] - public void Test_2629() - { - } - [Fact] - public void Test_2630() - { - } - [Fact] - public void Test_2631() - { - } - [Fact] - public void Test_2632() - { - } - [Fact] - public void Test_2633() - { - } - [Fact] - public void Test_2634() - { - } - [Fact] - public void Test_2635() - { - } - [Fact] - public void Test_2636() - { - } - [Fact] - public void Test_2637() - { - } - [Fact] - public void Test_2638() - { - } - [Fact] - public void Test_2639() - { - } - [Fact] - public void Test_2640() - { - } - [Fact] - public void Test_2641() - { - } - [Fact] - public void Test_2642() - { - } - [Fact] - public void Test_2643() - { - } - [Fact] - public void Test_2644() - { - } - [Fact] - public void Test_2645() - { - } - [Fact] - public void Test_2646() - { - } - [Fact] - public void Test_2647() - { - } - [Fact] - public void Test_2648() - { - } - [Fact] - public void Test_2649() - { - } - [Fact] - public void Test_2650() - { - } - [Fact] - public void Test_2651() - { - } - [Fact] - public void Test_2652() - { - } - [Fact] - public void Test_2653() - { - } - [Fact] - public void Test_2654() - { - } - [Fact] - public void Test_2655() - { - } - [Fact] - public void Test_2656() - { - } - [Fact] - public void Test_2657() - { - } - [Fact] - public void Test_2658() - { - } - [Fact] - public void Test_2659() - { - } - [Fact] - public void Test_2660() - { - } - [Fact] - public void Test_2661() - { - } - [Fact] - public void Test_2662() - { - } - [Fact] - public void Test_2663() - { - } - [Fact] - public void Test_2664() - { - } - [Fact] - public void Test_2665() - { - } - [Fact] - public void Test_2666() - { - } - [Fact] - public void Test_2667() - { - } - [Fact] - public void Test_2668() - { - } - [Fact] - public void Test_2669() - { - } - [Fact] - public void Test_2670() - { - } - [Fact] - public void Test_2671() - { - } - [Fact] - public void Test_2672() - { - } - [Fact] - public void Test_2673() - { - } - [Fact] - public void Test_2674() - { - } - [Fact] - public void Test_2675() - { - } - [Fact] - public void Test_2676() - { - } - [Fact] - public void Test_2677() - { - } - [Fact] - public void Test_2678() - { - } - [Fact] - public void Test_2679() - { - } - [Fact] - public void Test_2680() - { - } - [Fact] - public void Test_2681() - { - } - [Fact] - public void Test_2682() - { - } - [Fact] - public void Test_2683() - { - } - [Fact] - public void Test_2684() - { - } - [Fact] - public void Test_2685() - { - } - [Fact] - public void Test_2686() - { - } - [Fact] - public void Test_2687() - { - } - [Fact] - public void Test_2688() - { - } - [Fact] - public void Test_2689() - { - } - [Fact] - public void Test_2690() - { - } - [Fact] - public void Test_2691() - { - } - [Fact] - public void Test_2692() - { - } - [Fact] - public void Test_2693() - { - } - [Fact] - public void Test_2694() - { - } - [Fact] - public void Test_2695() - { - } - [Fact] - public void Test_2696() - { - } - [Fact] - public void Test_2697() - { - } - [Fact] - public void Test_2698() - { - } - [Fact] - public void Test_2699() - { - } - [Fact] - public void Test_2700() - { - } - [Fact] - public void Test_2701() - { - } - [Fact] - public void Test_2702() - { - } - [Fact] - public void Test_2703() - { - } - [Fact] - public void Test_2704() - { - } - [Fact] - public void Test_2705() - { - } - [Fact] - public void Test_2706() - { - } - [Fact] - public void Test_2707() - { - } - [Fact] - public void Test_2708() - { - } - [Fact] - public void Test_2709() - { - } - [Fact] - public void Test_2710() - { - } - [Fact] - public void Test_2711() - { - } - [Fact] - public void Test_2712() - { - } - [Fact] - public void Test_2713() - { - } - [Fact] - public void Test_2714() - { - } - [Fact] - public void Test_2715() - { - } - [Fact] - public void Test_2716() - { - } - [Fact] - public void Test_2717() - { - } - [Fact] - public void Test_2718() - { - } - [Fact] - public void Test_2719() - { - } - [Fact] - public void Test_2720() - { - } - [Fact] - public void Test_2721() - { - } - [Fact] - public void Test_2722() - { - } - [Fact] - public void Test_2723() - { - } - [Fact] - public void Test_2724() - { - } - [Fact] - public void Test_2725() - { - } - [Fact] - public void Test_2726() - { - } - [Fact] - public void Test_2727() - { - } - [Fact] - public void Test_2728() - { - } - [Fact] - public void Test_2729() - { - } - [Fact] - public void Test_2730() - { - } - [Fact] - public void Test_2731() - { - } - [Fact] - public void Test_2732() - { - } - [Fact] - public void Test_2733() - { - } - [Fact] - public void Test_2734() - { - } - [Fact] - public void Test_2735() - { - } - [Fact] - public void Test_2736() - { - } - [Fact] - public void Test_2737() - { - } - [Fact] - public void Test_2738() - { - } - [Fact] - public void Test_2739() - { - } - [Fact] - public void Test_2740() - { - } - [Fact] - public void Test_2741() - { - } - [Fact] - public void Test_2742() - { - } - [Fact] - public void Test_2743() - { - } - [Fact] - public void Test_2744() - { - } - [Fact] - public void Test_2745() - { - } - [Fact] - public void Test_2746() - { - } - [Fact] - public void Test_2747() - { - } - [Fact] - public void Test_2748() - { - } - [Fact] - public void Test_2749() - { - } - [Fact] - public void Test_2750() - { - } - [Fact] - public void Test_2751() - { - } - [Fact] - public void Test_2752() - { - } - [Fact] - public void Test_2753() - { - } - [Fact] - public void Test_2754() - { - } - [Fact] - public void Test_2755() - { - } - [Fact] - public void Test_2756() - { - } - [Fact] - public void Test_2757() - { - } - [Fact] - public void Test_2758() - { - } - [Fact] - public void Test_2759() - { - } - [Fact] - public void Test_2760() - { - } - [Fact] - public void Test_2761() - { - } - [Fact] - public void Test_2762() - { - } - [Fact] - public void Test_2763() - { - } - [Fact] - public void Test_2764() - { - } - [Fact] - public void Test_2765() - { - } - [Fact] - public void Test_2766() - { - } - [Fact] - public void Test_2767() - { - } - [Fact] - public void Test_2768() - { - } - [Fact] - public void Test_2769() - { - } - [Fact] - public void Test_2770() - { - } - [Fact] - public void Test_2771() - { - } - [Fact] - public void Test_2772() - { - } - [Fact] - public void Test_2773() - { - } - [Fact] - public void Test_2774() - { - } - [Fact] - public void Test_2775() - { - } - [Fact] - public void Test_2776() - { - } - [Fact] - public void Test_2777() - { - } - [Fact] - public void Test_2778() - { - } - [Fact] - public void Test_2779() - { - } - [Fact] - public void Test_2780() - { - } - [Fact] - public void Test_2781() - { - } - [Fact] - public void Test_2782() - { - } - [Fact] - public void Test_2783() - { - } - [Fact] - public void Test_2784() - { - } - [Fact] - public void Test_2785() - { - } - [Fact] - public void Test_2786() - { - } - [Fact] - public void Test_2787() - { - } - [Fact] - public void Test_2788() - { - } - [Fact] - public void Test_2789() - { - } - [Fact] - public void Test_2790() - { - } - [Fact] - public void Test_2791() - { - } - [Fact] - public void Test_2792() - { - } - [Fact] - public void Test_2793() - { - } - [Fact] - public void Test_2794() - { - } - [Fact] - public void Test_2795() - { - } - [Fact] - public void Test_2796() - { - } - [Fact] - public void Test_2797() - { - } - [Fact] - public void Test_2798() - { - } - [Fact] - public void Test_2799() - { - } - [Fact] - public void Test_2800() - { - } - [Fact] - public void Test_2801() - { - } - [Fact] - public void Test_2802() - { - } - [Fact] - public void Test_2803() - { - } - [Fact] - public void Test_2804() - { - } - [Fact] - public void Test_2805() - { - } - [Fact] - public void Test_2806() - { - } - [Fact] - public void Test_2807() - { - } - [Fact] - public void Test_2808() - { - } - [Fact] - public void Test_2809() - { - } - [Fact] - public void Test_2810() - { - } - [Fact] - public void Test_2811() - { - } - [Fact] - public void Test_2812() - { - } - [Fact] - public void Test_2813() - { - } - [Fact] - public void Test_2814() - { - } - [Fact] - public void Test_2815() - { - } - [Fact] - public void Test_2816() - { - } - [Fact] - public void Test_2817() - { - } - [Fact] - public void Test_2818() - { - } - [Fact] - public void Test_2819() - { - } - [Fact] - public void Test_2820() - { - } - [Fact] - public void Test_2821() - { - } - [Fact] - public void Test_2822() - { - } - [Fact] - public void Test_2823() - { - } - [Fact] - public void Test_2824() - { - } - [Fact] - public void Test_2825() - { - } - [Fact] - public void Test_2826() - { - } - [Fact] - public void Test_2827() - { - } - [Fact] - public void Test_2828() - { - } - [Fact] - public void Test_2829() - { - } - [Fact] - public void Test_2830() - { - } - [Fact] - public void Test_2831() - { - } - [Fact] - public void Test_2832() - { - } - [Fact] - public void Test_2833() - { - } - [Fact] - public void Test_2834() - { - } - [Fact] - public void Test_2835() - { - } - [Fact] - public void Test_2836() - { - } - [Fact] - public void Test_2837() - { - } - [Fact] - public void Test_2838() - { - } - [Fact] - public void Test_2839() - { - } - [Fact] - public void Test_2840() - { - } - [Fact] - public void Test_2841() - { - } - [Fact] - public void Test_2842() - { - } - [Fact] - public void Test_2843() - { - } - [Fact] - public void Test_2844() - { - } - [Fact] - public void Test_2845() - { - } - [Fact] - public void Test_2846() - { - } - [Fact] - public void Test_2847() - { - } - [Fact] - public void Test_2848() - { - } - [Fact] - public void Test_2849() - { - } - [Fact] - public void Test_2850() - { - } - [Fact] - public void Test_2851() - { - } - [Fact] - public void Test_2852() - { - } - [Fact] - public void Test_2853() - { - } - [Fact] - public void Test_2854() - { - } - [Fact] - public void Test_2855() - { - } - [Fact] - public void Test_2856() - { - } - [Fact] - public void Test_2857() - { - } - [Fact] - public void Test_2858() - { - } - [Fact] - public void Test_2859() - { - } - [Fact] - public void Test_2860() - { - } - [Fact] - public void Test_2861() - { - } - [Fact] - public void Test_2862() - { - } - [Fact] - public void Test_2863() - { - } - [Fact] - public void Test_2864() - { - } - [Fact] - public void Test_2865() - { - } - [Fact] - public void Test_2866() - { - } - [Fact] - public void Test_2867() - { - } - [Fact] - public void Test_2868() - { - } - [Fact] - public void Test_2869() - { - } - [Fact] - public void Test_2870() - { - } - [Fact] - public void Test_2871() - { - } - [Fact] - public void Test_2872() - { - } - [Fact] - public void Test_2873() - { - } - [Fact] - public void Test_2874() - { - } - [Fact] - public void Test_2875() - { - } - [Fact] - public void Test_2876() - { - } - [Fact] - public void Test_2877() - { - } - [Fact] - public void Test_2878() - { - } - [Fact] - public void Test_2879() - { - } - [Fact] - public void Test_2880() - { - } - [Fact] - public void Test_2881() - { - } - [Fact] - public void Test_2882() - { - } - [Fact] - public void Test_2883() - { - } - [Fact] - public void Test_2884() - { - } - [Fact] - public void Test_2885() - { - } - [Fact] - public void Test_2886() - { - } - [Fact] - public void Test_2887() - { - } - [Fact] - public void Test_2888() - { - } - [Fact] - public void Test_2889() - { - } - [Fact] - public void Test_2890() - { - } - [Fact] - public void Test_2891() - { - } - [Fact] - public void Test_2892() - { - } - [Fact] - public void Test_2893() - { - } - [Fact] - public void Test_2894() - { - } - [Fact] - public void Test_2895() - { - } - [Fact] - public void Test_2896() - { - } - [Fact] - public void Test_2897() - { - } - [Fact] - public void Test_2898() - { - } - [Fact] - public void Test_2899() - { - } - [Fact] - public void Test_2900() - { - } - [Fact] - public void Test_2901() - { - } - [Fact] - public void Test_2902() - { - } - [Fact] - public void Test_2903() - { - } - [Fact] - public void Test_2904() - { - } - [Fact] - public void Test_2905() - { - } - [Fact] - public void Test_2906() - { - } - [Fact] - public void Test_2907() - { - } - [Fact] - public void Test_2908() - { - } - [Fact] - public void Test_2909() - { - } - [Fact] - public void Test_2910() - { - } - [Fact] - public void Test_2911() - { - } - [Fact] - public void Test_2912() - { - } - [Fact] - public void Test_2913() - { - } - [Fact] - public void Test_2914() - { - } - [Fact] - public void Test_2915() - { - } - [Fact] - public void Test_2916() - { - } - [Fact] - public void Test_2917() - { - } - [Fact] - public void Test_2918() - { - } - [Fact] - public void Test_2919() - { - } - [Fact] - public void Test_2920() - { - } - [Fact] - public void Test_2921() - { - } - [Fact] - public void Test_2922() - { - } - [Fact] - public void Test_2923() - { - } - [Fact] - public void Test_2924() - { - } - [Fact] - public void Test_2925() - { - } - [Fact] - public void Test_2926() - { - } - [Fact] - public void Test_2927() - { - } - [Fact] - public void Test_2928() - { - } - [Fact] - public void Test_2929() - { - } - [Fact] - public void Test_2930() - { - } - [Fact] - public void Test_2931() - { - } - [Fact] - public void Test_2932() - { - } - [Fact] - public void Test_2933() - { - } - [Fact] - public void Test_2934() - { - } - [Fact] - public void Test_2935() - { - } - [Fact] - public void Test_2936() - { - } - [Fact] - public void Test_2937() - { - } - [Fact] - public void Test_2938() - { - } - [Fact] - public void Test_2939() - { - } - [Fact] - public void Test_2940() - { - } - [Fact] - public void Test_2941() - { - } - [Fact] - public void Test_2942() - { - } - [Fact] - public void Test_2943() - { - } - [Fact] - public void Test_2944() - { - } - [Fact] - public void Test_2945() - { - } - [Fact] - public void Test_2946() - { - } - [Fact] - public void Test_2947() - { - } - [Fact] - public void Test_2948() - { - } - [Fact] - public void Test_2949() - { - } - [Fact] - public void Test_2950() - { - } - [Fact] - public void Test_2951() - { - } - [Fact] - public void Test_2952() - { - } - [Fact] - public void Test_2953() - { - } - [Fact] - public void Test_2954() - { - } - [Fact] - public void Test_2955() - { - } - [Fact] - public void Test_2956() - { - } - [Fact] - public void Test_2957() - { - } - [Fact] - public void Test_2958() - { - } - [Fact] - public void Test_2959() - { - } - [Fact] - public void Test_2960() - { - } - [Fact] - public void Test_2961() - { - } - [Fact] - public void Test_2962() - { - } - [Fact] - public void Test_2963() - { - } - [Fact] - public void Test_2964() - { - } - [Fact] - public void Test_2965() - { - } - [Fact] - public void Test_2966() - { - } - [Fact] - public void Test_2967() - { - } - [Fact] - public void Test_2968() - { - } - [Fact] - public void Test_2969() - { - } - [Fact] - public void Test_2970() - { - } - [Fact] - public void Test_2971() - { - } - [Fact] - public void Test_2972() - { - } - [Fact] - public void Test_2973() - { - } - [Fact] - public void Test_2974() - { - } - [Fact] - public void Test_2975() - { - } - [Fact] - public void Test_2976() - { - } - [Fact] - public void Test_2977() - { - } - [Fact] - public void Test_2978() - { - } - [Fact] - public void Test_2979() - { - } - [Fact] - public void Test_2980() - { - } - [Fact] - public void Test_2981() - { - } - [Fact] - public void Test_2982() - { - } - [Fact] - public void Test_2983() - { - } - [Fact] - public void Test_2984() - { - } - [Fact] - public void Test_2985() - { - } - [Fact] - public void Test_2986() - { - } - [Fact] - public void Test_2987() - { - } - [Fact] - public void Test_2988() - { - } - [Fact] - public void Test_2989() - { - } - [Fact] - public void Test_2990() - { - } - [Fact] - public void Test_2991() - { - } - [Fact] - public void Test_2992() - { - } - [Fact] - public void Test_2993() - { - } - [Fact] - public void Test_2994() - { - } - [Fact] - public void Test_2995() - { - } - [Fact] - public void Test_2996() - { - } - [Fact] - public void Test_2997() - { - } - [Fact] - public void Test_2998() - { - } - [Fact] - public void Test_2999() - { - } - [Fact] - public void Test_3000() - { - } - [Fact] - public void Test_3001() - { - } - [Fact] - public void Test_3002() - { - } - [Fact] - public void Test_3003() - { - } - [Fact] - public void Test_3004() - { - } - [Fact] - public void Test_3005() - { - } - [Fact] - public void Test_3006() - { - } - [Fact] - public void Test_3007() - { - } - [Fact] - public void Test_3008() - { - } - [Fact] - public void Test_3009() - { - } - [Fact] - public void Test_3010() - { - } - [Fact] - public void Test_3011() - { - } - [Fact] - public void Test_3012() - { - } - [Fact] - public void Test_3013() - { - } - [Fact] - public void Test_3014() - { - } - [Fact] - public void Test_3015() - { - } - [Fact] - public void Test_3016() - { - } - [Fact] - public void Test_3017() - { - } - [Fact] - public void Test_3018() - { - } - [Fact] - public void Test_3019() - { - } - [Fact] - public void Test_3020() - { - } - [Fact] - public void Test_3021() - { - } - [Fact] - public void Test_3022() - { - } - [Fact] - public void Test_3023() - { - } - [Fact] - public void Test_3024() - { - } - [Fact] - public void Test_3025() - { - } - [Fact] - public void Test_3026() - { - } - [Fact] - public void Test_3027() - { - } - [Fact] - public void Test_3028() - { - } - [Fact] - public void Test_3029() - { - } - [Fact] - public void Test_3030() - { - } - [Fact] - public void Test_3031() - { - } - [Fact] - public void Test_3032() - { - } - [Fact] - public void Test_3033() - { - } - [Fact] - public void Test_3034() - { - } - [Fact] - public void Test_3035() - { - } - [Fact] - public void Test_3036() - { - } - [Fact] - public void Test_3037() - { - } - [Fact] - public void Test_3038() - { - } - [Fact] - public void Test_3039() - { - } - [Fact] - public void Test_3040() - { - } - [Fact] - public void Test_3041() - { - } - [Fact] - public void Test_3042() - { - } - [Fact] - public void Test_3043() - { - } - [Fact] - public void Test_3044() - { - } - [Fact] - public void Test_3045() - { - } - [Fact] - public void Test_3046() - { - } - [Fact] - public void Test_3047() - { - } - [Fact] - public void Test_3048() - { - } - [Fact] - public void Test_3049() - { - } - [Fact] - public void Test_3050() - { - } - [Fact] - public void Test_3051() - { - } - [Fact] - public void Test_3052() - { - } - [Fact] - public void Test_3053() - { - } - [Fact] - public void Test_3054() - { - } - [Fact] - public void Test_3055() - { - } - [Fact] - public void Test_3056() - { - } - [Fact] - public void Test_3057() - { - } - [Fact] - public void Test_3058() - { - } - [Fact] - public void Test_3059() - { - } - [Fact] - public void Test_3060() - { - } - [Fact] - public void Test_3061() - { - } - [Fact] - public void Test_3062() - { - } - [Fact] - public void Test_3063() - { - } - [Fact] - public void Test_3064() - { - } - [Fact] - public void Test_3065() - { - } - [Fact] - public void Test_3066() - { - } - [Fact] - public void Test_3067() - { - } - [Fact] - public void Test_3068() - { - } - [Fact] - public void Test_3069() - { - } - [Fact] - public void Test_3070() - { - } - [Fact] - public void Test_3071() - { - } - [Fact] - public void Test_3072() - { - } - [Fact] - public void Test_3073() - { - } - [Fact] - public void Test_3074() - { - } - [Fact] - public void Test_3075() - { - } - [Fact] - public void Test_3076() - { - } - [Fact] - public void Test_3077() - { - } - [Fact] - public void Test_3078() - { - } - [Fact] - public void Test_3079() - { - } - [Fact] - public void Test_3080() - { - } - [Fact] - public void Test_3081() - { - } - [Fact] - public void Test_3082() - { - } - [Fact] - public void Test_3083() - { - } - [Fact] - public void Test_3084() - { - } - [Fact] - public void Test_3085() - { - } - [Fact] - public void Test_3086() - { - } - [Fact] - public void Test_3087() - { - } - [Fact] - public void Test_3088() - { - } - [Fact] - public void Test_3089() - { - } - [Fact] - public void Test_3090() - { - } - [Fact] - public void Test_3091() - { - } - [Fact] - public void Test_3092() - { - } - [Fact] - public void Test_3093() - { - } - [Fact] - public void Test_3094() - { - } - [Fact] - public void Test_3095() - { - } - [Fact] - public void Test_3096() - { - } - [Fact] - public void Test_3097() - { - } - [Fact] - public void Test_3098() - { - } - [Fact] - public void Test_3099() - { - } - [Fact] - public void Test_3100() - { - } - [Fact] - public void Test_3101() - { - } - [Fact] - public void Test_3102() - { - } - [Fact] - public void Test_3103() - { - } - [Fact] - public void Test_3104() - { - } - [Fact] - public void Test_3105() - { - } - [Fact] - public void Test_3106() - { - } - [Fact] - public void Test_3107() - { - } - [Fact] - public void Test_3108() - { - } - [Fact] - public void Test_3109() - { - } - [Fact] - public void Test_3110() - { - } - [Fact] - public void Test_3111() - { - } - [Fact] - public void Test_3112() - { - } - [Fact] - public void Test_3113() - { - } - [Fact] - public void Test_3114() - { - } - [Fact] - public void Test_3115() - { - } - [Fact] - public void Test_3116() - { - } - [Fact] - public void Test_3117() - { - } - [Fact] - public void Test_3118() - { - } - [Fact] - public void Test_3119() - { - } - [Fact] - public void Test_3120() - { - } - [Fact] - public void Test_3121() - { - } - [Fact] - public void Test_3122() - { - } - [Fact] - public void Test_3123() - { - } - [Fact] - public void Test_3124() - { - } - [Fact] - public void Test_3125() - { - } - [Fact] - public void Test_3126() - { - } - [Fact] - public void Test_3127() - { - } - [Fact] - public void Test_3128() - { - } - [Fact] - public void Test_3129() - { - } - [Fact] - public void Test_3130() - { - } - [Fact] - public void Test_3131() - { - } - [Fact] - public void Test_3132() - { - } - [Fact] - public void Test_3133() - { - } - [Fact] - public void Test_3134() - { - } - [Fact] - public void Test_3135() - { - } - [Fact] - public void Test_3136() - { - } - [Fact] - public void Test_3137() - { - } - [Fact] - public void Test_3138() - { - } - [Fact] - public void Test_3139() - { - } - [Fact] - public void Test_3140() - { - } - [Fact] - public void Test_3141() - { - } - [Fact] - public void Test_3142() - { - } - [Fact] - public void Test_3143() - { - } - [Fact] - public void Test_3144() - { - } - [Fact] - public void Test_3145() - { - } - [Fact] - public void Test_3146() - { - } - [Fact] - public void Test_3147() - { - } - [Fact] - public void Test_3148() - { - } - [Fact] - public void Test_3149() - { - } - [Fact] - public void Test_3150() - { - } - [Fact] - public void Test_3151() - { - } - [Fact] - public void Test_3152() - { - } - [Fact] - public void Test_3153() - { - } - [Fact] - public void Test_3154() - { - } - [Fact] - public void Test_3155() - { - } - [Fact] - public void Test_3156() - { - } - [Fact] - public void Test_3157() - { - } - [Fact] - public void Test_3158() - { - } - [Fact] - public void Test_3159() - { - } - [Fact] - public void Test_3160() - { - } - [Fact] - public void Test_3161() - { - } - [Fact] - public void Test_3162() - { - } - [Fact] - public void Test_3163() - { - } - [Fact] - public void Test_3164() - { - } - [Fact] - public void Test_3165() - { - } - [Fact] - public void Test_3166() - { - } - [Fact] - public void Test_3167() - { - } - [Fact] - public void Test_3168() - { - } - [Fact] - public void Test_3169() - { - } - [Fact] - public void Test_3170() - { - } - [Fact] - public void Test_3171() - { - } - [Fact] - public void Test_3172() - { - } - [Fact] - public void Test_3173() - { - } - [Fact] - public void Test_3174() - { - } - [Fact] - public void Test_3175() - { - } - [Fact] - public void Test_3176() - { - } - [Fact] - public void Test_3177() - { - } - [Fact] - public void Test_3178() - { - } - [Fact] - public void Test_3179() - { - } - [Fact] - public void Test_3180() - { - } - [Fact] - public void Test_3181() - { - } - [Fact] - public void Test_3182() - { - } - [Fact] - public void Test_3183() - { - } - [Fact] - public void Test_3184() - { - } - [Fact] - public void Test_3185() - { - } - [Fact] - public void Test_3186() - { - } - [Fact] - public void Test_3187() - { - } - [Fact] - public void Test_3188() - { - } - [Fact] - public void Test_3189() - { - } - [Fact] - public void Test_3190() - { - } - [Fact] - public void Test_3191() - { - } - [Fact] - public void Test_3192() - { - } - [Fact] - public void Test_3193() - { - } - [Fact] - public void Test_3194() - { - } - [Fact] - public void Test_3195() - { - } - [Fact] - public void Test_3196() - { - } - [Fact] - public void Test_3197() - { - } - [Fact] - public void Test_3198() - { - } - [Fact] - public void Test_3199() - { - } - [Fact] - public void Test_3200() - { - } - [Fact] - public void Test_3201() - { - } - [Fact] - public void Test_3202() - { - } - [Fact] - public void Test_3203() - { - } - [Fact] - public void Test_3204() - { - } - [Fact] - public void Test_3205() - { - } - [Fact] - public void Test_3206() - { - } - [Fact] - public void Test_3207() - { - } - [Fact] - public void Test_3208() - { - } - [Fact] - public void Test_3209() - { - } - [Fact] - public void Test_3210() - { - } - [Fact] - public void Test_3211() - { - } - [Fact] - public void Test_3212() - { - } - [Fact] - public void Test_3213() - { - } - [Fact] - public void Test_3214() - { - } - [Fact] - public void Test_3215() - { - } - [Fact] - public void Test_3216() - { - } - [Fact] - public void Test_3217() - { - } - [Fact] - public void Test_3218() - { - } - [Fact] - public void Test_3219() - { - } - [Fact] - public void Test_3220() - { - } - [Fact] - public void Test_3221() - { - } - [Fact] - public void Test_3222() - { - } - [Fact] - public void Test_3223() - { - } - [Fact] - public void Test_3224() - { - } - [Fact] - public void Test_3225() - { - } - [Fact] - public void Test_3226() - { - } - [Fact] - public void Test_3227() - { - } - [Fact] - public void Test_3228() - { - } - [Fact] - public void Test_3229() - { - } - [Fact] - public void Test_3230() - { - } - [Fact] - public void Test_3231() - { - } - [Fact] - public void Test_3232() - { - } - [Fact] - public void Test_3233() - { - } - [Fact] - public void Test_3234() - { - } - [Fact] - public void Test_3235() - { - } - [Fact] - public void Test_3236() - { - } - [Fact] - public void Test_3237() - { - } - [Fact] - public void Test_3238() - { - } - [Fact] - public void Test_3239() - { - } - [Fact] - public void Test_3240() - { - } - [Fact] - public void Test_3241() - { - } - [Fact] - public void Test_3242() - { - } - [Fact] - public void Test_3243() - { - } - [Fact] - public void Test_3244() - { - } - [Fact] - public void Test_3245() - { - } - [Fact] - public void Test_3246() - { - } - [Fact] - public void Test_3247() - { - } - [Fact] - public void Test_3248() - { - } - [Fact] - public void Test_3249() - { - } - [Fact] - public void Test_3250() - { - } - [Fact] - public void Test_3251() - { - } - [Fact] - public void Test_3252() - { - } - [Fact] - public void Test_3253() - { - } - [Fact] - public void Test_3254() - { - } - [Fact] - public void Test_3255() - { - } - [Fact] - public void Test_3256() - { - } - [Fact] - public void Test_3257() - { - } - [Fact] - public void Test_3258() - { - } - [Fact] - public void Test_3259() - { - } - [Fact] - public void Test_3260() - { - } - [Fact] - public void Test_3261() - { - } - [Fact] - public void Test_3262() - { - } - [Fact] - public void Test_3263() - { - } - [Fact] - public void Test_3264() - { - } - [Fact] - public void Test_3265() - { - } - [Fact] - public void Test_3266() - { - } - [Fact] - public void Test_3267() - { - } - [Fact] - public void Test_3268() - { - } - [Fact] - public void Test_3269() - { - } - [Fact] - public void Test_3270() - { - } - [Fact] - public void Test_3271() - { - } - [Fact] - public void Test_3272() - { - } - [Fact] - public void Test_3273() - { - } - [Fact] - public void Test_3274() - { - } - [Fact] - public void Test_3275() - { - } - [Fact] - public void Test_3276() - { - } - [Fact] - public void Test_3277() - { - } - [Fact] - public void Test_3278() - { - } - [Fact] - public void Test_3279() - { - } - [Fact] - public void Test_3280() - { - } - [Fact] - public void Test_3281() - { - } - [Fact] - public void Test_3282() - { - } - [Fact] - public void Test_3283() - { - } - [Fact] - public void Test_3284() - { - } - [Fact] - public void Test_3285() - { - } - [Fact] - public void Test_3286() - { - } - [Fact] - public void Test_3287() - { - } - [Fact] - public void Test_3288() - { - } - [Fact] - public void Test_3289() - { - } - [Fact] - public void Test_3290() - { - } - [Fact] - public void Test_3291() - { - } - [Fact] - public void Test_3292() - { - } - [Fact] - public void Test_3293() - { - } - [Fact] - public void Test_3294() - { - } - [Fact] - public void Test_3295() - { - } - [Fact] - public void Test_3296() - { - } - [Fact] - public void Test_3297() - { - } - [Fact] - public void Test_3298() - { - } - [Fact] - public void Test_3299() - { - } - [Fact] - public void Test_3300() - { - } - [Fact] - public void Test_3301() - { - } - [Fact] - public void Test_3302() - { - } - [Fact] - public void Test_3303() - { - } - [Fact] - public void Test_3304() - { - } - [Fact] - public void Test_3305() - { - } - [Fact] - public void Test_3306() - { - } - [Fact] - public void Test_3307() - { - } - [Fact] - public void Test_3308() - { - } - [Fact] - public void Test_3309() - { - } - [Fact] - public void Test_3310() - { - } - [Fact] - public void Test_3311() - { - } - [Fact] - public void Test_3312() - { - } - [Fact] - public void Test_3313() - { - } - [Fact] - public void Test_3314() - { - } - [Fact] - public void Test_3315() - { - } - [Fact] - public void Test_3316() - { - } - [Fact] - public void Test_3317() - { - } - [Fact] - public void Test_3318() - { - } - [Fact] - public void Test_3319() - { - } - [Fact] - public void Test_3320() - { - } - [Fact] - public void Test_3321() - { - } - [Fact] - public void Test_3322() - { - } - [Fact] - public void Test_3323() - { - } - [Fact] - public void Test_3324() - { - } - [Fact] - public void Test_3325() - { - } - [Fact] - public void Test_3326() - { - } - [Fact] - public void Test_3327() - { - } - [Fact] - public void Test_3328() - { - } - [Fact] - public void Test_3329() - { - } - [Fact] - public void Test_3330() - { - } - [Fact] - public void Test_3331() - { - } - [Fact] - public void Test_3332() - { - } - [Fact] - public void Test_3333() - { - } - [Fact] - public void Test_3334() - { - } - [Fact] - public void Test_3335() - { - } - [Fact] - public void Test_3336() - { - } - [Fact] - public void Test_3337() - { - } - [Fact] - public void Test_3338() - { - } - [Fact] - public void Test_3339() - { - } - [Fact] - public void Test_3340() - { - } - [Fact] - public void Test_3341() - { - } - [Fact] - public void Test_3342() - { - } - [Fact] - public void Test_3343() - { - } - [Fact] - public void Test_3344() - { - } - [Fact] - public void Test_3345() - { - } - [Fact] - public void Test_3346() - { - } - [Fact] - public void Test_3347() - { - } - [Fact] - public void Test_3348() - { - } - [Fact] - public void Test_3349() - { - } - [Fact] - public void Test_3350() - { - } - [Fact] - public void Test_3351() - { - } - [Fact] - public void Test_3352() - { - } - [Fact] - public void Test_3353() - { - } - [Fact] - public void Test_3354() - { - } - [Fact] - public void Test_3355() - { - } - [Fact] - public void Test_3356() - { - } - [Fact] - public void Test_3357() - { - } - [Fact] - public void Test_3358() - { - } - [Fact] - public void Test_3359() - { - } - [Fact] - public void Test_3360() - { - } - [Fact] - public void Test_3361() - { - } - [Fact] - public void Test_3362() - { - } - [Fact] - public void Test_3363() - { - } - [Fact] - public void Test_3364() - { - } - [Fact] - public void Test_3365() - { - } - [Fact] - public void Test_3366() - { - } - [Fact] - public void Test_3367() - { - } - [Fact] - public void Test_3368() - { - } - [Fact] - public void Test_3369() - { - } - [Fact] - public void Test_3370() - { - } - [Fact] - public void Test_3371() - { - } - [Fact] - public void Test_3372() - { - } - [Fact] - public void Test_3373() - { - } - [Fact] - public void Test_3374() - { - } - [Fact] - public void Test_3375() - { - } - [Fact] - public void Test_3376() - { - } - [Fact] - public void Test_3377() - { - } - [Fact] - public void Test_3378() - { - } - [Fact] - public void Test_3379() - { - } - [Fact] - public void Test_3380() - { - } - [Fact] - public void Test_3381() - { - } - [Fact] - public void Test_3382() - { - } - [Fact] - public void Test_3383() - { - } - [Fact] - public void Test_3384() - { - } - [Fact] - public void Test_3385() - { - } - [Fact] - public void Test_3386() - { - } - [Fact] - public void Test_3387() - { - } - [Fact] - public void Test_3388() - { - } - [Fact] - public void Test_3389() - { - } - [Fact] - public void Test_3390() - { - } - [Fact] - public void Test_3391() - { - } - [Fact] - public void Test_3392() - { - } - [Fact] - public void Test_3393() - { - } - [Fact] - public void Test_3394() - { - } - [Fact] - public void Test_3395() - { - } - [Fact] - public void Test_3396() - { - } - [Fact] - public void Test_3397() - { - } - [Fact] - public void Test_3398() - { - } - [Fact] - public void Test_3399() - { - } - [Fact] - public void Test_3400() - { - } - [Fact] - public void Test_3401() - { - } - [Fact] - public void Test_3402() - { - } - [Fact] - public void Test_3403() - { - } - [Fact] - public void Test_3404() - { - } - [Fact] - public void Test_3405() - { - } - [Fact] - public void Test_3406() - { - } - [Fact] - public void Test_3407() - { - } - [Fact] - public void Test_3408() - { - } - [Fact] - public void Test_3409() - { - } - [Fact] - public void Test_3410() - { - } - [Fact] - public void Test_3411() - { - } - [Fact] - public void Test_3412() - { - } - [Fact] - public void Test_3413() - { - } - [Fact] - public void Test_3414() - { - } - [Fact] - public void Test_3415() - { - } - [Fact] - public void Test_3416() - { - } - [Fact] - public void Test_3417() - { - } - [Fact] - public void Test_3418() - { - } - [Fact] - public void Test_3419() - { - } - [Fact] - public void Test_3420() - { - } - [Fact] - public void Test_3421() - { - } - [Fact] - public void Test_3422() - { - } - [Fact] - public void Test_3423() - { - } - [Fact] - public void Test_3424() - { - } - [Fact] - public void Test_3425() - { - } - [Fact] - public void Test_3426() - { - } - [Fact] - public void Test_3427() - { - } - [Fact] - public void Test_3428() - { - } - [Fact] - public void Test_3429() - { - } - [Fact] - public void Test_3430() - { - } - [Fact] - public void Test_3431() - { - } - [Fact] - public void Test_3432() - { - } - [Fact] - public void Test_3433() - { - } - [Fact] - public void Test_3434() - { - } - [Fact] - public void Test_3435() - { - } - [Fact] - public void Test_3436() - { - } - [Fact] - public void Test_3437() - { - } - [Fact] - public void Test_3438() - { - } - [Fact] - public void Test_3439() - { - } - [Fact] - public void Test_3440() - { - } - [Fact] - public void Test_3441() - { - } - [Fact] - public void Test_3442() - { - } - [Fact] - public void Test_3443() - { - } - [Fact] - public void Test_3444() - { - } - [Fact] - public void Test_3445() - { - } - [Fact] - public void Test_3446() - { - } - [Fact] - public void Test_3447() - { - } - [Fact] - public void Test_3448() - { - } - [Fact] - public void Test_3449() - { - } - [Fact] - public void Test_3450() - { - } - [Fact] - public void Test_3451() - { - } - [Fact] - public void Test_3452() - { - } - [Fact] - public void Test_3453() - { - } - [Fact] - public void Test_3454() - { - } - [Fact] - public void Test_3455() - { - } - [Fact] - public void Test_3456() - { - } - [Fact] - public void Test_3457() - { - } - [Fact] - public void Test_3458() - { - } - [Fact] - public void Test_3459() - { - } - [Fact] - public void Test_3460() - { - } - [Fact] - public void Test_3461() - { - } - [Fact] - public void Test_3462() - { - } - [Fact] - public void Test_3463() - { - } - [Fact] - public void Test_3464() - { - } - [Fact] - public void Test_3465() - { - } - [Fact] - public void Test_3466() - { - } - [Fact] - public void Test_3467() - { - } - [Fact] - public void Test_3468() - { - } - [Fact] - public void Test_3469() - { - } - [Fact] - public void Test_3470() - { - } - [Fact] - public void Test_3471() - { - } - [Fact] - public void Test_3472() - { - } - [Fact] - public void Test_3473() - { - } - [Fact] - public void Test_3474() - { - } - [Fact] - public void Test_3475() - { - } - [Fact] - public void Test_3476() - { - } - [Fact] - public void Test_3477() - { - } - [Fact] - public void Test_3478() - { - } - [Fact] - public void Test_3479() - { - } - [Fact] - public void Test_3480() - { - } - [Fact] - public void Test_3481() - { - } - [Fact] - public void Test_3482() - { - } - [Fact] - public void Test_3483() - { - } - [Fact] - public void Test_3484() - { - } - [Fact] - public void Test_3485() - { - } - [Fact] - public void Test_3486() - { - } - [Fact] - public void Test_3487() - { - } - [Fact] - public void Test_3488() - { - } - [Fact] - public void Test_3489() - { - } - [Fact] - public void Test_3490() - { - } - [Fact] - public void Test_3491() - { - } - [Fact] - public void Test_3492() - { - } - [Fact] - public void Test_3493() - { - } - [Fact] - public void Test_3494() - { - } - [Fact] - public void Test_3495() - { - } - [Fact] - public void Test_3496() - { - } - [Fact] - public void Test_3497() - { - } - [Fact] - public void Test_3498() - { - } - [Fact] - public void Test_3499() - { - } - [Fact] - public void Test_3500() - { - } - [Fact] - public void Test_3501() - { - } - [Fact] - public void Test_3502() - { - } - [Fact] - public void Test_3503() - { - } - [Fact] - public void Test_3504() - { - } - [Fact] - public void Test_3505() - { - } - [Fact] - public void Test_3506() - { - } - [Fact] - public void Test_3507() - { - } - [Fact] - public void Test_3508() - { - } - [Fact] - public void Test_3509() - { - } - [Fact] - public void Test_3510() - { - } - [Fact] - public void Test_3511() - { - } - [Fact] - public void Test_3512() - { - } - [Fact] - public void Test_3513() - { - } - [Fact] - public void Test_3514() - { - } - [Fact] - public void Test_3515() - { - } - [Fact] - public void Test_3516() - { - } - [Fact] - public void Test_3517() - { - } - [Fact] - public void Test_3518() - { - } - [Fact] - public void Test_3519() - { - } - [Fact] - public void Test_3520() - { - } - [Fact] - public void Test_3521() - { - } - [Fact] - public void Test_3522() - { - } - [Fact] - public void Test_3523() - { - } - [Fact] - public void Test_3524() - { - } - [Fact] - public void Test_3525() - { - } - [Fact] - public void Test_3526() - { - } - [Fact] - public void Test_3527() - { - } - [Fact] - public void Test_3528() - { - } - [Fact] - public void Test_3529() - { - } - [Fact] - public void Test_3530() - { - } - [Fact] - public void Test_3531() - { - } - [Fact] - public void Test_3532() - { - } - [Fact] - public void Test_3533() - { - } - [Fact] - public void Test_3534() - { - } - [Fact] - public void Test_3535() - { - } - [Fact] - public void Test_3536() - { - } - [Fact] - public void Test_3537() - { - } - [Fact] - public void Test_3538() - { - } - [Fact] - public void Test_3539() - { - } - [Fact] - public void Test_3540() - { - } - [Fact] - public void Test_3541() - { - } - [Fact] - public void Test_3542() - { - } - [Fact] - public void Test_3543() - { - } - [Fact] - public void Test_3544() - { - } - [Fact] - public void Test_3545() - { - } - [Fact] - public void Test_3546() - { - } - [Fact] - public void Test_3547() - { - } - [Fact] - public void Test_3548() - { - } - [Fact] - public void Test_3549() - { - } - [Fact] - public void Test_3550() - { - } - [Fact] - public void Test_3551() - { - } - [Fact] - public void Test_3552() - { - } - [Fact] - public void Test_3553() - { - } - [Fact] - public void Test_3554() - { - } - [Fact] - public void Test_3555() - { - } - [Fact] - public void Test_3556() - { - } - [Fact] - public void Test_3557() - { - } - [Fact] - public void Test_3558() - { - } - [Fact] - public void Test_3559() - { - } - [Fact] - public void Test_3560() - { - } - [Fact] - public void Test_3561() - { - } - [Fact] - public void Test_3562() - { - } - [Fact] - public void Test_3563() - { - } - [Fact] - public void Test_3564() - { - } - [Fact] - public void Test_3565() - { - } - [Fact] - public void Test_3566() - { - } - [Fact] - public void Test_3567() - { - } - [Fact] - public void Test_3568() - { - } - [Fact] - public void Test_3569() - { - } - [Fact] - public void Test_3570() - { - } - [Fact] - public void Test_3571() - { - } - [Fact] - public void Test_3572() - { - } - [Fact] - public void Test_3573() - { - } - [Fact] - public void Test_3574() - { - } - [Fact] - public void Test_3575() - { - } - [Fact] - public void Test_3576() - { - } - [Fact] - public void Test_3577() - { - } - [Fact] - public void Test_3578() - { - } - [Fact] - public void Test_3579() - { - } - [Fact] - public void Test_3580() - { - } - [Fact] - public void Test_3581() - { - } - [Fact] - public void Test_3582() - { - } - [Fact] - public void Test_3583() - { - } - [Fact] - public void Test_3584() - { - } - [Fact] - public void Test_3585() - { - } - [Fact] - public void Test_3586() - { - } - [Fact] - public void Test_3587() - { - } - [Fact] - public void Test_3588() - { - } - [Fact] - public void Test_3589() - { - } - [Fact] - public void Test_3590() - { - } - [Fact] - public void Test_3591() - { - } - [Fact] - public void Test_3592() - { - } - [Fact] - public void Test_3593() - { - } - [Fact] - public void Test_3594() - { - } - [Fact] - public void Test_3595() - { - } - [Fact] - public void Test_3596() - { - } - [Fact] - public void Test_3597() - { - } - [Fact] - public void Test_3598() - { - } - [Fact] - public void Test_3599() - { - } - [Fact] - public void Test_3600() - { - } - [Fact] - public void Test_3601() - { - } - [Fact] - public void Test_3602() - { - } - [Fact] - public void Test_3603() - { - } - [Fact] - public void Test_3604() - { - } - [Fact] - public void Test_3605() - { - } - [Fact] - public void Test_3606() - { - } - [Fact] - public void Test_3607() - { - } - [Fact] - public void Test_3608() - { - } - [Fact] - public void Test_3609() - { - } - [Fact] - public void Test_3610() - { - } - [Fact] - public void Test_3611() - { - } - [Fact] - public void Test_3612() - { - } - [Fact] - public void Test_3613() - { - } - [Fact] - public void Test_3614() - { - } - [Fact] - public void Test_3615() - { - } - [Fact] - public void Test_3616() - { - } - [Fact] - public void Test_3617() - { - } - [Fact] - public void Test_3618() - { - } - [Fact] - public void Test_3619() - { - } - [Fact] - public void Test_3620() - { - } - [Fact] - public void Test_3621() - { - } - [Fact] - public void Test_3622() - { - } - [Fact] - public void Test_3623() - { - } - [Fact] - public void Test_3624() - { - } - [Fact] - public void Test_3625() - { - } - [Fact] - public void Test_3626() - { - } - [Fact] - public void Test_3627() - { - } - [Fact] - public void Test_3628() - { - } - [Fact] - public void Test_3629() - { - } - [Fact] - public void Test_3630() - { - } - [Fact] - public void Test_3631() - { - } - [Fact] - public void Test_3632() - { - } - [Fact] - public void Test_3633() - { - } - [Fact] - public void Test_3634() - { - } - [Fact] - public void Test_3635() - { - } - [Fact] - public void Test_3636() - { - } - [Fact] - public void Test_3637() - { - } - [Fact] - public void Test_3638() - { - } - [Fact] - public void Test_3639() - { - } - [Fact] - public void Test_3640() - { - } - [Fact] - public void Test_3641() - { - } - [Fact] - public void Test_3642() - { - } - [Fact] - public void Test_3643() - { - } - [Fact] - public void Test_3644() - { - } - [Fact] - public void Test_3645() - { - } - [Fact] - public void Test_3646() - { - } - [Fact] - public void Test_3647() - { - } - [Fact] - public void Test_3648() - { - } - [Fact] - public void Test_3649() - { - } - [Fact] - public void Test_3650() - { - } - [Fact] - public void Test_3651() - { - } - [Fact] - public void Test_3652() - { - } - [Fact] - public void Test_3653() - { - } - [Fact] - public void Test_3654() - { - } - [Fact] - public void Test_3655() - { - } - [Fact] - public void Test_3656() - { - } - [Fact] - public void Test_3657() - { - } - [Fact] - public void Test_3658() - { - } - [Fact] - public void Test_3659() - { - } - [Fact] - public void Test_3660() - { - } - [Fact] - public void Test_3661() - { - } - [Fact] - public void Test_3662() - { - } - [Fact] - public void Test_3663() - { - } - [Fact] - public void Test_3664() - { - } - [Fact] - public void Test_3665() - { - } - [Fact] - public void Test_3666() - { - } - [Fact] - public void Test_3667() - { - } - [Fact] - public void Test_3668() - { - } - [Fact] - public void Test_3669() - { - } - [Fact] - public void Test_3670() - { - } - [Fact] - public void Test_3671() - { - } - [Fact] - public void Test_3672() - { - } - [Fact] - public void Test_3673() - { - } - [Fact] - public void Test_3674() - { - } - [Fact] - public void Test_3675() - { - } - [Fact] - public void Test_3676() - { - } - [Fact] - public void Test_3677() - { - } - [Fact] - public void Test_3678() - { - } - [Fact] - public void Test_3679() - { - } - [Fact] - public void Test_3680() - { - } - [Fact] - public void Test_3681() - { - } - [Fact] - public void Test_3682() - { - } - [Fact] - public void Test_3683() - { - } - [Fact] - public void Test_3684() - { - } - [Fact] - public void Test_3685() - { - } - [Fact] - public void Test_3686() - { - } - [Fact] - public void Test_3687() - { - } - [Fact] - public void Test_3688() - { - } - [Fact] - public void Test_3689() - { - } - [Fact] - public void Test_3690() - { - } - [Fact] - public void Test_3691() - { - } - [Fact] - public void Test_3692() - { - } - [Fact] - public void Test_3693() - { - } - [Fact] - public void Test_3694() - { - } - [Fact] - public void Test_3695() - { - } - [Fact] - public void Test_3696() - { - } - [Fact] - public void Test_3697() - { - } - [Fact] - public void Test_3698() - { - } - [Fact] - public void Test_3699() - { - } - [Fact] - public void Test_3700() - { - } - [Fact] - public void Test_3701() - { - } - [Fact] - public void Test_3702() - { - } - [Fact] - public void Test_3703() - { - } - [Fact] - public void Test_3704() - { - } - [Fact] - public void Test_3705() - { - } - [Fact] - public void Test_3706() - { - } - [Fact] - public void Test_3707() - { - } - [Fact] - public void Test_3708() - { - } - [Fact] - public void Test_3709() - { - } - [Fact] - public void Test_3710() - { - } - [Fact] - public void Test_3711() - { - } - [Fact] - public void Test_3712() - { - } - [Fact] - public void Test_3713() - { - } - [Fact] - public void Test_3714() - { - } - [Fact] - public void Test_3715() - { - } - [Fact] - public void Test_3716() - { - } - [Fact] - public void Test_3717() - { - } - [Fact] - public void Test_3718() - { - } - [Fact] - public void Test_3719() - { - } - [Fact] - public void Test_3720() - { - } - [Fact] - public void Test_3721() - { - } - [Fact] - public void Test_3722() - { - } - [Fact] - public void Test_3723() - { - } - [Fact] - public void Test_3724() - { - } - [Fact] - public void Test_3725() - { - } - [Fact] - public void Test_3726() - { - } - [Fact] - public void Test_3727() - { - } - [Fact] - public void Test_3728() - { - } - [Fact] - public void Test_3729() - { - } - [Fact] - public void Test_3730() - { - } - [Fact] - public void Test_3731() - { - } - [Fact] - public void Test_3732() - { - } - [Fact] - public void Test_3733() - { - } - [Fact] - public void Test_3734() - { - } - [Fact] - public void Test_3735() - { - } - [Fact] - public void Test_3736() - { - } - [Fact] - public void Test_3737() - { - } - [Fact] - public void Test_3738() - { - } - [Fact] - public void Test_3739() - { - } - [Fact] - public void Test_3740() - { - } - [Fact] - public void Test_3741() - { - } - [Fact] - public void Test_3742() - { - } - [Fact] - public void Test_3743() - { - } - [Fact] - public void Test_3744() - { - } - [Fact] - public void Test_3745() - { - } - [Fact] - public void Test_3746() - { - } - [Fact] - public void Test_3747() - { - } - [Fact] - public void Test_3748() - { - } - [Fact] - public void Test_3749() - { - } - [Fact] - public void Test_3750() - { - } - [Fact] - public void Test_3751() - { - } - [Fact] - public void Test_3752() - { - } - [Fact] - public void Test_3753() - { - } - [Fact] - public void Test_3754() - { - } - [Fact] - public void Test_3755() - { - } - [Fact] - public void Test_3756() - { - } - [Fact] - public void Test_3757() - { - } - [Fact] - public void Test_3758() - { - } - [Fact] - public void Test_3759() - { - } - [Fact] - public void Test_3760() - { - } - [Fact] - public void Test_3761() - { - } - [Fact] - public void Test_3762() - { - } - [Fact] - public void Test_3763() - { - } - [Fact] - public void Test_3764() - { - } - [Fact] - public void Test_3765() - { - } - [Fact] - public void Test_3766() - { - } - [Fact] - public void Test_3767() - { - } - [Fact] - public void Test_3768() - { - } - [Fact] - public void Test_3769() - { - } - [Fact] - public void Test_3770() - { - } - [Fact] - public void Test_3771() - { - } - [Fact] - public void Test_3772() - { - } - [Fact] - public void Test_3773() - { - } - [Fact] - public void Test_3774() - { - } - [Fact] - public void Test_3775() - { - } - [Fact] - public void Test_3776() - { - } - [Fact] - public void Test_3777() - { - } - [Fact] - public void Test_3778() - { - } - [Fact] - public void Test_3779() - { - } - [Fact] - public void Test_3780() - { - } - [Fact] - public void Test_3781() - { - } - [Fact] - public void Test_3782() - { - } - [Fact] - public void Test_3783() - { - } - [Fact] - public void Test_3784() - { - } - [Fact] - public void Test_3785() - { - } - [Fact] - public void Test_3786() - { - } - [Fact] - public void Test_3787() - { - } - [Fact] - public void Test_3788() - { - } - [Fact] - public void Test_3789() - { - } - [Fact] - public void Test_3790() - { - } - [Fact] - public void Test_3791() - { - } - [Fact] - public void Test_3792() - { - } - [Fact] - public void Test_3793() - { - } - [Fact] - public void Test_3794() - { - } - [Fact] - public void Test_3795() - { - } - [Fact] - public void Test_3796() - { - } - [Fact] - public void Test_3797() - { - } - [Fact] - public void Test_3798() - { - } - [Fact] - public void Test_3799() - { - } - [Fact] - public void Test_3800() - { - } - [Fact] - public void Test_3801() - { - } - [Fact] - public void Test_3802() - { - } - [Fact] - public void Test_3803() - { - } - [Fact] - public void Test_3804() - { - } - [Fact] - public void Test_3805() - { - } - [Fact] - public void Test_3806() - { - } - [Fact] - public void Test_3807() - { - } - [Fact] - public void Test_3808() - { - } - [Fact] - public void Test_3809() - { - } - [Fact] - public void Test_3810() - { - } - [Fact] - public void Test_3811() - { - } - [Fact] - public void Test_3812() - { - } - [Fact] - public void Test_3813() - { - } - [Fact] - public void Test_3814() - { - } - [Fact] - public void Test_3815() - { - } - [Fact] - public void Test_3816() - { - } - [Fact] - public void Test_3817() - { - } - [Fact] - public void Test_3818() - { - } - [Fact] - public void Test_3819() - { - } - [Fact] - public void Test_3820() - { - } - [Fact] - public void Test_3821() - { - } - [Fact] - public void Test_3822() - { - } - [Fact] - public void Test_3823() - { - } - [Fact] - public void Test_3824() - { - } - [Fact] - public void Test_3825() - { - } - [Fact] - public void Test_3826() - { - } - [Fact] - public void Test_3827() - { - } - [Fact] - public void Test_3828() - { - } - [Fact] - public void Test_3829() - { - } - [Fact] - public void Test_3830() - { - } - [Fact] - public void Test_3831() - { - } - [Fact] - public void Test_3832() - { - } - [Fact] - public void Test_3833() - { - } - [Fact] - public void Test_3834() - { - } - [Fact] - public void Test_3835() - { - } - [Fact] - public void Test_3836() - { - } - [Fact] - public void Test_3837() - { - } - [Fact] - public void Test_3838() - { - } - [Fact] - public void Test_3839() - { - } - [Fact] - public void Test_3840() - { - } - [Fact] - public void Test_3841() - { - } - [Fact] - public void Test_3842() - { - } - [Fact] - public void Test_3843() - { - } - [Fact] - public void Test_3844() - { - } - [Fact] - public void Test_3845() - { - } - [Fact] - public void Test_3846() - { - } - [Fact] - public void Test_3847() - { - } - [Fact] - public void Test_3848() - { - } - [Fact] - public void Test_3849() - { - } - [Fact] - public void Test_3850() - { - } - [Fact] - public void Test_3851() - { - } - [Fact] - public void Test_3852() - { - } - [Fact] - public void Test_3853() - { - } - [Fact] - public void Test_3854() - { - } - [Fact] - public void Test_3855() - { - } - [Fact] - public void Test_3856() - { - } - [Fact] - public void Test_3857() - { - } - [Fact] - public void Test_3858() - { - } - [Fact] - public void Test_3859() - { - } - [Fact] - public void Test_3860() - { - } - [Fact] - public void Test_3861() - { - } - [Fact] - public void Test_3862() - { - } - [Fact] - public void Test_3863() - { - } - [Fact] - public void Test_3864() - { - } - [Fact] - public void Test_3865() - { - } - [Fact] - public void Test_3866() - { - } - [Fact] - public void Test_3867() - { - } - [Fact] - public void Test_3868() - { - } - [Fact] - public void Test_3869() - { - } - [Fact] - public void Test_3870() - { - } - [Fact] - public void Test_3871() - { - } - [Fact] - public void Test_3872() - { - } - [Fact] - public void Test_3873() - { - } - [Fact] - public void Test_3874() - { - } - [Fact] - public void Test_3875() - { - } - [Fact] - public void Test_3876() - { - } - [Fact] - public void Test_3877() - { - } - [Fact] - public void Test_3878() - { - } - [Fact] - public void Test_3879() - { - } - [Fact] - public void Test_3880() - { - } - [Fact] - public void Test_3881() - { - } - [Fact] - public void Test_3882() - { - } - [Fact] - public void Test_3883() - { - } - [Fact] - public void Test_3884() - { - } - [Fact] - public void Test_3885() - { - } - [Fact] - public void Test_3886() - { - } - [Fact] - public void Test_3887() - { - } - [Fact] - public void Test_3888() - { - } - [Fact] - public void Test_3889() - { - } - [Fact] - public void Test_3890() - { - } - [Fact] - public void Test_3891() - { - } - [Fact] - public void Test_3892() - { - } - [Fact] - public void Test_3893() - { - } - [Fact] - public void Test_3894() - { - } - [Fact] - public void Test_3895() - { - } - [Fact] - public void Test_3896() - { - } - [Fact] - public void Test_3897() - { - } - [Fact] - public void Test_3898() - { - } - [Fact] - public void Test_3899() - { - } - [Fact] - public void Test_3900() - { - } - [Fact] - public void Test_3901() - { - } - [Fact] - public void Test_3902() - { - } - [Fact] - public void Test_3903() - { - } - [Fact] - public void Test_3904() - { - } - [Fact] - public void Test_3905() - { - } - [Fact] - public void Test_3906() - { - } - [Fact] - public void Test_3907() - { - } - [Fact] - public void Test_3908() - { - } - [Fact] - public void Test_3909() - { - } - [Fact] - public void Test_3910() - { - } - [Fact] - public void Test_3911() - { - } - [Fact] - public void Test_3912() - { - } - [Fact] - public void Test_3913() - { - } - [Fact] - public void Test_3914() - { - } - [Fact] - public void Test_3915() - { - } - [Fact] - public void Test_3916() - { - } - [Fact] - public void Test_3917() - { - } - [Fact] - public void Test_3918() - { - } - [Fact] - public void Test_3919() - { - } - [Fact] - public void Test_3920() - { - } - [Fact] - public void Test_3921() - { - } - [Fact] - public void Test_3922() - { - } - [Fact] - public void Test_3923() - { - } - [Fact] - public void Test_3924() - { - } - [Fact] - public void Test_3925() - { - } - [Fact] - public void Test_3926() - { - } - [Fact] - public void Test_3927() - { - } - [Fact] - public void Test_3928() - { - } - [Fact] - public void Test_3929() - { - } - [Fact] - public void Test_3930() - { - } - [Fact] - public void Test_3931() - { - } - [Fact] - public void Test_3932() - { - } - [Fact] - public void Test_3933() - { - } - [Fact] - public void Test_3934() - { - } - [Fact] - public void Test_3935() - { - } - [Fact] - public void Test_3936() - { - } - [Fact] - public void Test_3937() - { - } - [Fact] - public void Test_3938() - { - } - [Fact] - public void Test_3939() - { - } - [Fact] - public void Test_3940() - { - } - [Fact] - public void Test_3941() - { - } - [Fact] - public void Test_3942() - { - } - [Fact] - public void Test_3943() - { - } - [Fact] - public void Test_3944() - { - } - [Fact] - public void Test_3945() - { - } - [Fact] - public void Test_3946() - { - } - [Fact] - public void Test_3947() - { - } - [Fact] - public void Test_3948() - { - } - [Fact] - public void Test_3949() - { - } - [Fact] - public void Test_3950() - { - } - [Fact] - public void Test_3951() - { - } - [Fact] - public void Test_3952() - { - } - [Fact] - public void Test_3953() - { - } - [Fact] - public void Test_3954() - { - } - [Fact] - public void Test_3955() - { - } - [Fact] - public void Test_3956() - { - } - [Fact] - public void Test_3957() - { - } - [Fact] - public void Test_3958() - { - } - [Fact] - public void Test_3959() - { - } - [Fact] - public void Test_3960() - { - } - [Fact] - public void Test_3961() - { - } - [Fact] - public void Test_3962() - { - } - [Fact] - public void Test_3963() - { - } - [Fact] - public void Test_3964() - { - } - [Fact] - public void Test_3965() - { - } - [Fact] - public void Test_3966() - { - } - [Fact] - public void Test_3967() - { - } - [Fact] - public void Test_3968() - { - } - [Fact] - public void Test_3969() - { - } - [Fact] - public void Test_3970() - { - } - [Fact] - public void Test_3971() - { - } - [Fact] - public void Test_3972() - { - } - [Fact] - public void Test_3973() - { - } - [Fact] - public void Test_3974() - { - } - [Fact] - public void Test_3975() - { - } - [Fact] - public void Test_3976() - { - } - [Fact] - public void Test_3977() - { - } - [Fact] - public void Test_3978() - { - } - [Fact] - public void Test_3979() - { - } - [Fact] - public void Test_3980() - { - } - [Fact] - public void Test_3981() - { - } - [Fact] - public void Test_3982() - { - } - [Fact] - public void Test_3983() - { - } - [Fact] - public void Test_3984() - { - } - [Fact] - public void Test_3985() - { - } - [Fact] - public void Test_3986() - { - } - [Fact] - public void Test_3987() - { - } - [Fact] - public void Test_3988() - { - } - [Fact] - public void Test_3989() - { - } - [Fact] - public void Test_3990() - { - } - [Fact] - public void Test_3991() - { - } - [Fact] - public void Test_3992() - { - } - [Fact] - public void Test_3993() - { - } - [Fact] - public void Test_3994() - { - } - [Fact] - public void Test_3995() - { - } - [Fact] - public void Test_3996() - { - } - [Fact] - public void Test_3997() - { - } - [Fact] - public void Test_3998() - { - } - [Fact] - public void Test_3999() - { - } - [Fact] - public void Test_4000() - { - } - [Fact] - public void Test_4001() - { - } - [Fact] - public void Test_4002() - { - } - [Fact] - public void Test_4003() - { - } - [Fact] - public void Test_4004() - { - } - [Fact] - public void Test_4005() - { - } - [Fact] - public void Test_4006() - { - } - [Fact] - public void Test_4007() - { - } - [Fact] - public void Test_4008() - { - } - [Fact] - public void Test_4009() - { - } - [Fact] - public void Test_4010() - { - } - [Fact] - public void Test_4011() - { - } - [Fact] - public void Test_4012() - { - } - [Fact] - public void Test_4013() - { - } - [Fact] - public void Test_4014() - { - } - [Fact] - public void Test_4015() - { - } - [Fact] - public void Test_4016() - { - } - [Fact] - public void Test_4017() - { - } - [Fact] - public void Test_4018() - { - } - [Fact] - public void Test_4019() - { - } - [Fact] - public void Test_4020() - { - } - [Fact] - public void Test_4021() - { - } - [Fact] - public void Test_4022() - { - } - [Fact] - public void Test_4023() - { - } - [Fact] - public void Test_4024() - { - } - [Fact] - public void Test_4025() - { - } - [Fact] - public void Test_4026() - { - } - [Fact] - public void Test_4027() - { - } - [Fact] - public void Test_4028() - { - } - [Fact] - public void Test_4029() - { - } - [Fact] - public void Test_4030() - { - } - [Fact] - public void Test_4031() - { - } - [Fact] - public void Test_4032() - { - } - [Fact] - public void Test_4033() - { - } - [Fact] - public void Test_4034() - { - } - [Fact] - public void Test_4035() - { - } - [Fact] - public void Test_4036() - { - } - [Fact] - public void Test_4037() - { - } - [Fact] - public void Test_4038() - { - } - [Fact] - public void Test_4039() - { - } - [Fact] - public void Test_4040() - { - } - [Fact] - public void Test_4041() - { - } - [Fact] - public void Test_4042() - { - } - [Fact] - public void Test_4043() - { - } - [Fact] - public void Test_4044() - { - } - [Fact] - public void Test_4045() - { - } - [Fact] - public void Test_4046() - { - } - [Fact] - public void Test_4047() - { - } - [Fact] - public void Test_4048() - { - } - [Fact] - public void Test_4049() - { - } - [Fact] - public void Test_4050() - { - } - [Fact] - public void Test_4051() - { - } - [Fact] - public void Test_4052() - { - } - [Fact] - public void Test_4053() - { - } - [Fact] - public void Test_4054() - { - } - [Fact] - public void Test_4055() - { - } - [Fact] - public void Test_4056() - { - } - [Fact] - public void Test_4057() - { - } - [Fact] - public void Test_4058() - { - } - [Fact] - public void Test_4059() - { - } - [Fact] - public void Test_4060() - { - } - [Fact] - public void Test_4061() - { - } - [Fact] - public void Test_4062() - { - } - [Fact] - public void Test_4063() - { - } - [Fact] - public void Test_4064() - { - } - [Fact] - public void Test_4065() - { - } - [Fact] - public void Test_4066() - { - } - [Fact] - public void Test_4067() - { - } - [Fact] - public void Test_4068() - { - } - [Fact] - public void Test_4069() - { - } - [Fact] - public void Test_4070() - { - } - [Fact] - public void Test_4071() - { - } - [Fact] - public void Test_4072() - { - } - [Fact] - public void Test_4073() - { - } - [Fact] - public void Test_4074() - { - } - [Fact] - public void Test_4075() - { - } - [Fact] - public void Test_4076() - { - } - [Fact] - public void Test_4077() - { - } - [Fact] - public void Test_4078() - { - } - [Fact] - public void Test_4079() - { - } - [Fact] - public void Test_4080() - { - } - [Fact] - public void Test_4081() - { - } - [Fact] - public void Test_4082() - { - } - [Fact] - public void Test_4083() - { - } - [Fact] - public void Test_4084() - { - } - [Fact] - public void Test_4085() - { - } - [Fact] - public void Test_4086() - { - } - [Fact] - public void Test_4087() - { - } - [Fact] - public void Test_4088() - { - } - [Fact] - public void Test_4089() - { - } - [Fact] - public void Test_4090() - { - } - [Fact] - public void Test_4091() - { - } - [Fact] - public void Test_4092() - { - } - [Fact] - public void Test_4093() - { - } - [Fact] - public void Test_4094() - { - } - [Fact] - public void Test_4095() - { - } - [Fact] - public void Test_4096() - { - } - [Fact] - public void Test_4097() - { - } - [Fact] - public void Test_4098() - { - } - [Fact] - public void Test_4099() - { - } - [Fact] - public void Test_4100() - { - } - [Fact] - public void Test_4101() - { - } - [Fact] - public void Test_4102() - { - } - [Fact] - public void Test_4103() - { - } - [Fact] - public void Test_4104() - { - } - [Fact] - public void Test_4105() - { - } - [Fact] - public void Test_4106() - { - } - [Fact] - public void Test_4107() - { - } - [Fact] - public void Test_4108() - { - } - [Fact] - public void Test_4109() - { - } - [Fact] - public void Test_4110() - { - } - [Fact] - public void Test_4111() - { - } - [Fact] - public void Test_4112() - { - } - [Fact] - public void Test_4113() - { - } - [Fact] - public void Test_4114() - { - } - [Fact] - public void Test_4115() - { - } - [Fact] - public void Test_4116() - { - } - [Fact] - public void Test_4117() - { - } - [Fact] - public void Test_4118() - { - } - [Fact] - public void Test_4119() - { - } - [Fact] - public void Test_4120() - { - } - [Fact] - public void Test_4121() - { - } - [Fact] - public void Test_4122() - { - } - [Fact] - public void Test_4123() - { - } - [Fact] - public void Test_4124() - { - } - [Fact] - public void Test_4125() - { - } - [Fact] - public void Test_4126() - { - } - [Fact] - public void Test_4127() - { - } - [Fact] - public void Test_4128() - { - } - [Fact] - public void Test_4129() - { - } - [Fact] - public void Test_4130() - { - } - [Fact] - public void Test_4131() - { - } - [Fact] - public void Test_4132() - { - } - [Fact] - public void Test_4133() - { - } - [Fact] - public void Test_4134() - { - } - [Fact] - public void Test_4135() - { - } - [Fact] - public void Test_4136() - { - } - [Fact] - public void Test_4137() - { - } - [Fact] - public void Test_4138() - { - } - [Fact] - public void Test_4139() - { - } - [Fact] - public void Test_4140() - { - } - [Fact] - public void Test_4141() - { - } - [Fact] - public void Test_4142() - { - } - [Fact] - public void Test_4143() - { - } - [Fact] - public void Test_4144() - { - } - [Fact] - public void Test_4145() - { - } - [Fact] - public void Test_4146() - { - } - [Fact] - public void Test_4147() - { - } - [Fact] - public void Test_4148() - { - } - [Fact] - public void Test_4149() - { - } - [Fact] - public void Test_4150() - { - } - [Fact] - public void Test_4151() - { - } - [Fact] - public void Test_4152() - { - } - [Fact] - public void Test_4153() - { - } - [Fact] - public void Test_4154() - { - } - [Fact] - public void Test_4155() - { - } - [Fact] - public void Test_4156() - { - } - [Fact] - public void Test_4157() - { - } - [Fact] - public void Test_4158() - { - } - [Fact] - public void Test_4159() - { - } - [Fact] - public void Test_4160() - { - } - [Fact] - public void Test_4161() - { - } - [Fact] - public void Test_4162() - { - } - [Fact] - public void Test_4163() - { - } - [Fact] - public void Test_4164() - { - } - [Fact] - public void Test_4165() - { - } - [Fact] - public void Test_4166() - { - } - [Fact] - public void Test_4167() - { - } - [Fact] - public void Test_4168() - { - } - [Fact] - public void Test_4169() - { - } - [Fact] - public void Test_4170() - { - } - [Fact] - public void Test_4171() - { - } - [Fact] - public void Test_4172() - { - } - [Fact] - public void Test_4173() - { - } - [Fact] - public void Test_4174() - { - } - [Fact] - public void Test_4175() - { - } - [Fact] - public void Test_4176() - { - } - [Fact] - public void Test_4177() - { - } - [Fact] - public void Test_4178() - { - } - [Fact] - public void Test_4179() - { - } - [Fact] - public void Test_4180() - { - } - [Fact] - public void Test_4181() - { - } - [Fact] - public void Test_4182() - { - } - [Fact] - public void Test_4183() - { - } - [Fact] - public void Test_4184() - { - } - [Fact] - public void Test_4185() - { - } - [Fact] - public void Test_4186() - { - } - [Fact] - public void Test_4187() - { - } - [Fact] - public void Test_4188() - { - } - [Fact] - public void Test_4189() - { - } - [Fact] - public void Test_4190() - { - } - [Fact] - public void Test_4191() - { - } - [Fact] - public void Test_4192() - { - } - [Fact] - public void Test_4193() - { - } - [Fact] - public void Test_4194() - { - } - [Fact] - public void Test_4195() - { - } - [Fact] - public void Test_4196() - { - } - [Fact] - public void Test_4197() - { - } - [Fact] - public void Test_4198() - { - } - [Fact] - public void Test_4199() - { - } - [Fact] - public void Test_4200() - { - } - [Fact] - public void Test_4201() - { - } - [Fact] - public void Test_4202() - { - } - [Fact] - public void Test_4203() - { - } - [Fact] - public void Test_4204() - { - } - [Fact] - public void Test_4205() - { - } - [Fact] - public void Test_4206() - { - } - [Fact] - public void Test_4207() - { - } - [Fact] - public void Test_4208() - { - } - [Fact] - public void Test_4209() - { - } - [Fact] - public void Test_4210() - { - } - [Fact] - public void Test_4211() - { - } - [Fact] - public void Test_4212() - { - } - [Fact] - public void Test_4213() - { - } - [Fact] - public void Test_4214() - { - } - [Fact] - public void Test_4215() - { - } - [Fact] - public void Test_4216() - { - } - [Fact] - public void Test_4217() - { - } - [Fact] - public void Test_4218() - { - } - [Fact] - public void Test_4219() - { - } - [Fact] - public void Test_4220() - { - } - [Fact] - public void Test_4221() - { - } - [Fact] - public void Test_4222() - { - } - [Fact] - public void Test_4223() - { - } - [Fact] - public void Test_4224() - { - } - [Fact] - public void Test_4225() - { - } - [Fact] - public void Test_4226() - { - } - [Fact] - public void Test_4227() - { - } - [Fact] - public void Test_4228() - { - } - [Fact] - public void Test_4229() - { - } - [Fact] - public void Test_4230() - { - } - [Fact] - public void Test_4231() - { - } - [Fact] - public void Test_4232() - { - } - [Fact] - public void Test_4233() - { - } - [Fact] - public void Test_4234() - { - } - [Fact] - public void Test_4235() - { - } - [Fact] - public void Test_4236() - { - } - [Fact] - public void Test_4237() - { - } - [Fact] - public void Test_4238() - { - } - [Fact] - public void Test_4239() - { - } - [Fact] - public void Test_4240() - { - } - [Fact] - public void Test_4241() - { - } - [Fact] - public void Test_4242() - { - } - [Fact] - public void Test_4243() - { - } - [Fact] - public void Test_4244() - { - } - [Fact] - public void Test_4245() - { - } - [Fact] - public void Test_4246() - { - } - [Fact] - public void Test_4247() - { - } - [Fact] - public void Test_4248() - { - } - [Fact] - public void Test_4249() - { - } - [Fact] - public void Test_4250() - { - } - [Fact] - public void Test_4251() - { - } - [Fact] - public void Test_4252() - { - } - [Fact] - public void Test_4253() - { - } - [Fact] - public void Test_4254() - { - } - [Fact] - public void Test_4255() - { - } - [Fact] - public void Test_4256() - { - } - [Fact] - public void Test_4257() - { - } - [Fact] - public void Test_4258() - { - } - [Fact] - public void Test_4259() - { - } - [Fact] - public void Test_4260() - { - } - [Fact] - public void Test_4261() - { - } - [Fact] - public void Test_4262() - { - } - [Fact] - public void Test_4263() - { - } - [Fact] - public void Test_4264() - { - } - [Fact] - public void Test_4265() - { - } - [Fact] - public void Test_4266() - { - } - [Fact] - public void Test_4267() - { - } - [Fact] - public void Test_4268() - { - } - [Fact] - public void Test_4269() - { - } - [Fact] - public void Test_4270() - { - } - [Fact] - public void Test_4271() - { - } - [Fact] - public void Test_4272() - { - } - [Fact] - public void Test_4273() - { - } - [Fact] - public void Test_4274() - { - } - [Fact] - public void Test_4275() - { - } - [Fact] - public void Test_4276() - { - } - [Fact] - public void Test_4277() - { - } - [Fact] - public void Test_4278() - { - } - [Fact] - public void Test_4279() - { - } - [Fact] - public void Test_4280() - { - } - [Fact] - public void Test_4281() - { - } - [Fact] - public void Test_4282() - { - } - [Fact] - public void Test_4283() - { - } - [Fact] - public void Test_4284() - { - } - [Fact] - public void Test_4285() - { - } - [Fact] - public void Test_4286() - { - } - [Fact] - public void Test_4287() - { - } - [Fact] - public void Test_4288() - { - } - [Fact] - public void Test_4289() - { - } - [Fact] - public void Test_4290() - { - } - [Fact] - public void Test_4291() - { - } - [Fact] - public void Test_4292() - { - } - [Fact] - public void Test_4293() - { - } - [Fact] - public void Test_4294() - { - } - [Fact] - public void Test_4295() - { - } - [Fact] - public void Test_4296() - { - } - [Fact] - public void Test_4297() - { - } - [Fact] - public void Test_4298() - { - } - [Fact] - public void Test_4299() - { - } - [Fact] - public void Test_4300() - { - } - [Fact] - public void Test_4301() - { - } - [Fact] - public void Test_4302() - { - } - [Fact] - public void Test_4303() - { - } - [Fact] - public void Test_4304() - { - } - [Fact] - public void Test_4305() - { - } - [Fact] - public void Test_4306() - { - } - [Fact] - public void Test_4307() - { - } - [Fact] - public void Test_4308() - { - } - [Fact] - public void Test_4309() - { - } - [Fact] - public void Test_4310() - { - } - [Fact] - public void Test_4311() - { - } - [Fact] - public void Test_4312() - { - } - [Fact] - public void Test_4313() - { - } - [Fact] - public void Test_4314() - { - } - [Fact] - public void Test_4315() - { - } - [Fact] - public void Test_4316() - { - } - [Fact] - public void Test_4317() - { - } - [Fact] - public void Test_4318() - { - } - [Fact] - public void Test_4319() - { - } - [Fact] - public void Test_4320() - { - } - [Fact] - public void Test_4321() - { - } - [Fact] - public void Test_4322() - { - } - [Fact] - public void Test_4323() - { - } - [Fact] - public void Test_4324() - { - } - [Fact] - public void Test_4325() - { - } - [Fact] - public void Test_4326() - { - } - [Fact] - public void Test_4327() - { - } - [Fact] - public void Test_4328() - { - } - [Fact] - public void Test_4329() - { - } - [Fact] - public void Test_4330() - { - } - [Fact] - public void Test_4331() - { - } - [Fact] - public void Test_4332() - { - } - [Fact] - public void Test_4333() - { - } - [Fact] - public void Test_4334() - { - } - [Fact] - public void Test_4335() - { - } - [Fact] - public void Test_4336() - { - } - [Fact] - public void Test_4337() - { - } - [Fact] - public void Test_4338() - { - } - [Fact] - public void Test_4339() - { - } - [Fact] - public void Test_4340() - { - } - [Fact] - public void Test_4341() - { - } - [Fact] - public void Test_4342() - { - } - [Fact] - public void Test_4343() - { - } - [Fact] - public void Test_4344() - { - } - [Fact] - public void Test_4345() - { - } - [Fact] - public void Test_4346() - { - } - [Fact] - public void Test_4347() - { - } - [Fact] - public void Test_4348() - { - } - [Fact] - public void Test_4349() - { - } - [Fact] - public void Test_4350() - { - } - [Fact] - public void Test_4351() - { - } - [Fact] - public void Test_4352() - { - } - [Fact] - public void Test_4353() - { - } - [Fact] - public void Test_4354() - { - } - [Fact] - public void Test_4355() - { - } - [Fact] - public void Test_4356() - { - } - [Fact] - public void Test_4357() - { - } - [Fact] - public void Test_4358() - { - } - [Fact] - public void Test_4359() - { - } - [Fact] - public void Test_4360() - { - } - [Fact] - public void Test_4361() - { - } - [Fact] - public void Test_4362() - { - } - [Fact] - public void Test_4363() - { - } - [Fact] - public void Test_4364() - { - } - [Fact] - public void Test_4365() - { - } - [Fact] - public void Test_4366() - { - } - [Fact] - public void Test_4367() - { - } - [Fact] - public void Test_4368() - { - } - [Fact] - public void Test_4369() - { - } - [Fact] - public void Test_4370() - { - } - [Fact] - public void Test_4371() - { - } - [Fact] - public void Test_4372() - { - } - [Fact] - public void Test_4373() - { - } - [Fact] - public void Test_4374() - { - } - [Fact] - public void Test_4375() - { - } - [Fact] - public void Test_4376() - { - } - [Fact] - public void Test_4377() - { - } - [Fact] - public void Test_4378() - { - } - [Fact] - public void Test_4379() - { - } - [Fact] - public void Test_4380() - { - } - [Fact] - public void Test_4381() - { - } - [Fact] - public void Test_4382() - { - } - [Fact] - public void Test_4383() - { - } - [Fact] - public void Test_4384() - { - } - [Fact] - public void Test_4385() - { - } - [Fact] - public void Test_4386() - { - } - [Fact] - public void Test_4387() - { - } - [Fact] - public void Test_4388() - { - } - [Fact] - public void Test_4389() - { - } - [Fact] - public void Test_4390() - { - } - [Fact] - public void Test_4391() - { - } - [Fact] - public void Test_4392() - { - } - [Fact] - public void Test_4393() - { - } - [Fact] - public void Test_4394() - { - } - [Fact] - public void Test_4395() - { - } - [Fact] - public void Test_4396() - { - } - [Fact] - public void Test_4397() - { - } - [Fact] - public void Test_4398() - { - } - [Fact] - public void Test_4399() - { - } - [Fact] - public void Test_4400() - { - } - [Fact] - public void Test_4401() - { - } - [Fact] - public void Test_4402() - { - } - [Fact] - public void Test_4403() - { - } - [Fact] - public void Test_4404() - { - } - [Fact] - public void Test_4405() - { - } - [Fact] - public void Test_4406() - { - } - [Fact] - public void Test_4407() - { - } - [Fact] - public void Test_4408() - { - } - [Fact] - public void Test_4409() - { - } - [Fact] - public void Test_4410() - { - } - [Fact] - public void Test_4411() - { - } - [Fact] - public void Test_4412() - { - } - [Fact] - public void Test_4413() - { - } - [Fact] - public void Test_4414() - { - } - [Fact] - public void Test_4415() - { - } - [Fact] - public void Test_4416() - { - } - [Fact] - public void Test_4417() - { - } - [Fact] - public void Test_4418() - { - } - [Fact] - public void Test_4419() - { - } - [Fact] - public void Test_4420() - { - } - [Fact] - public void Test_4421() - { - } - [Fact] - public void Test_4422() - { - } - [Fact] - public void Test_4423() - { - } - [Fact] - public void Test_4424() - { - } - [Fact] - public void Test_4425() - { - } - [Fact] - public void Test_4426() - { - } - [Fact] - public void Test_4427() - { - } - [Fact] - public void Test_4428() - { - } - [Fact] - public void Test_4429() - { - } - [Fact] - public void Test_4430() - { - } - [Fact] - public void Test_4431() - { - } - [Fact] - public void Test_4432() - { - } - [Fact] - public void Test_4433() - { - } - [Fact] - public void Test_4434() - { - } - [Fact] - public void Test_4435() - { - } - [Fact] - public void Test_4436() - { - } - [Fact] - public void Test_4437() - { - } - [Fact] - public void Test_4438() - { - } - [Fact] - public void Test_4439() - { - } - [Fact] - public void Test_4440() - { - } - [Fact] - public void Test_4441() - { - } - [Fact] - public void Test_4442() - { - } - [Fact] - public void Test_4443() - { - } - [Fact] - public void Test_4444() - { - } - [Fact] - public void Test_4445() - { - } - [Fact] - public void Test_4446() - { - } - [Fact] - public void Test_4447() - { - } - [Fact] - public void Test_4448() - { - } - [Fact] - public void Test_4449() - { - } - [Fact] - public void Test_4450() - { - } - [Fact] - public void Test_4451() - { - } - [Fact] - public void Test_4452() - { - } - [Fact] - public void Test_4453() - { - } - [Fact] - public void Test_4454() - { - } - [Fact] - public void Test_4455() - { - } - [Fact] - public void Test_4456() - { - } - [Fact] - public void Test_4457() - { - } - [Fact] - public void Test_4458() - { - } - [Fact] - public void Test_4459() - { - } - [Fact] - public void Test_4460() - { - } - [Fact] - public void Test_4461() - { - } - [Fact] - public void Test_4462() - { - } - [Fact] - public void Test_4463() - { - } - [Fact] - public void Test_4464() - { - } - [Fact] - public void Test_4465() - { - } - [Fact] - public void Test_4466() - { - } - [Fact] - public void Test_4467() - { - } - [Fact] - public void Test_4468() - { - } - [Fact] - public void Test_4469() - { - } - [Fact] - public void Test_4470() - { - } - [Fact] - public void Test_4471() - { - } - [Fact] - public void Test_4472() - { - } - [Fact] - public void Test_4473() - { - } - [Fact] - public void Test_4474() - { - } - [Fact] - public void Test_4475() - { - } - [Fact] - public void Test_4476() - { - } - [Fact] - public void Test_4477() - { - } - [Fact] - public void Test_4478() - { - } - [Fact] - public void Test_4479() - { - } - [Fact] - public void Test_4480() - { - } - [Fact] - public void Test_4481() - { - } - [Fact] - public void Test_4482() - { - } - [Fact] - public void Test_4483() - { - } - [Fact] - public void Test_4484() - { - } - [Fact] - public void Test_4485() - { - } - [Fact] - public void Test_4486() - { - } - [Fact] - public void Test_4487() - { - } - [Fact] - public void Test_4488() - { - } - [Fact] - public void Test_4489() - { - } - [Fact] - public void Test_4490() - { - } - [Fact] - public void Test_4491() - { - } - [Fact] - public void Test_4492() - { - } - [Fact] - public void Test_4493() - { - } - [Fact] - public void Test_4494() - { - } - [Fact] - public void Test_4495() - { - } - [Fact] - public void Test_4496() - { - } - [Fact] - public void Test_4497() - { - } - [Fact] - public void Test_4498() - { - } - [Fact] - public void Test_4499() - { - } - [Fact] - public void Test_4500() - { - } - [Fact] - public void Test_4501() - { - } - [Fact] - public void Test_4502() - { - } - [Fact] - public void Test_4503() - { - } - [Fact] - public void Test_4504() - { - } - [Fact] - public void Test_4505() - { - } - [Fact] - public void Test_4506() - { - } - [Fact] - public void Test_4507() - { - } - [Fact] - public void Test_4508() - { - } - [Fact] - public void Test_4509() - { - } - [Fact] - public void Test_4510() - { - } - [Fact] - public void Test_4511() - { - } - [Fact] - public void Test_4512() - { - } - [Fact] - public void Test_4513() - { - } - [Fact] - public void Test_4514() - { - } - [Fact] - public void Test_4515() - { - } - [Fact] - public void Test_4516() - { - } - [Fact] - public void Test_4517() - { - } - [Fact] - public void Test_4518() - { - } - [Fact] - public void Test_4519() - { - } - [Fact] - public void Test_4520() - { - } - [Fact] - public void Test_4521() - { - } - [Fact] - public void Test_4522() - { - } - [Fact] - public void Test_4523() - { - } - [Fact] - public void Test_4524() - { - } - [Fact] - public void Test_4525() - { - } - [Fact] - public void Test_4526() - { - } - [Fact] - public void Test_4527() - { - } - [Fact] - public void Test_4528() - { - } - [Fact] - public void Test_4529() - { - } - [Fact] - public void Test_4530() - { - } - [Fact] - public void Test_4531() - { - } - [Fact] - public void Test_4532() - { - } - [Fact] - public void Test_4533() - { - } - [Fact] - public void Test_4534() - { - } - [Fact] - public void Test_4535() - { - } - [Fact] - public void Test_4536() - { - } - [Fact] - public void Test_4537() - { - } - [Fact] - public void Test_4538() - { - } - [Fact] - public void Test_4539() - { - } - [Fact] - public void Test_4540() - { - } - [Fact] - public void Test_4541() - { - } - [Fact] - public void Test_4542() - { - } - [Fact] - public void Test_4543() - { - } - [Fact] - public void Test_4544() - { - } - [Fact] - public void Test_4545() - { - } - [Fact] - public void Test_4546() - { - } - [Fact] - public void Test_4547() - { - } - [Fact] - public void Test_4548() - { - } - [Fact] - public void Test_4549() - { - } - [Fact] - public void Test_4550() - { - } - [Fact] - public void Test_4551() - { - } - [Fact] - public void Test_4552() - { - } - [Fact] - public void Test_4553() - { - } - [Fact] - public void Test_4554() - { - } - [Fact] - public void Test_4555() - { - } - [Fact] - public void Test_4556() - { - } - [Fact] - public void Test_4557() - { - } - [Fact] - public void Test_4558() - { - } - [Fact] - public void Test_4559() - { - } - [Fact] - public void Test_4560() - { - } - [Fact] - public void Test_4561() - { - } - [Fact] - public void Test_4562() - { - } - [Fact] - public void Test_4563() - { - } - [Fact] - public void Test_4564() - { - } - [Fact] - public void Test_4565() - { - } - [Fact] - public void Test_4566() - { - } - [Fact] - public void Test_4567() - { - } - [Fact] - public void Test_4568() - { - } - [Fact] - public void Test_4569() - { - } - [Fact] - public void Test_4570() - { - } - [Fact] - public void Test_4571() - { - } - [Fact] - public void Test_4572() - { - } - [Fact] - public void Test_4573() - { - } - [Fact] - public void Test_4574() - { - } - [Fact] - public void Test_4575() - { - } - [Fact] - public void Test_4576() - { - } - [Fact] - public void Test_4577() - { - } - [Fact] - public void Test_4578() - { - } - [Fact] - public void Test_4579() - { - } - [Fact] - public void Test_4580() - { - } - [Fact] - public void Test_4581() - { - } - [Fact] - public void Test_4582() - { - } - [Fact] - public void Test_4583() - { - } - [Fact] - public void Test_4584() - { - } - [Fact] - public void Test_4585() - { - } - [Fact] - public void Test_4586() - { - } - [Fact] - public void Test_4587() - { - } - [Fact] - public void Test_4588() - { - } - [Fact] - public void Test_4589() - { - } - [Fact] - public void Test_4590() - { - } - [Fact] - public void Test_4591() - { - } - [Fact] - public void Test_4592() - { - } - [Fact] - public void Test_4593() - { - } - [Fact] - public void Test_4594() - { - } - [Fact] - public void Test_4595() - { - } - [Fact] - public void Test_4596() - { - } - [Fact] - public void Test_4597() - { - } - [Fact] - public void Test_4598() - { - } - [Fact] - public void Test_4599() - { - } - [Fact] - public void Test_4600() - { - } - [Fact] - public void Test_4601() - { - } - [Fact] - public void Test_4602() - { - } - [Fact] - public void Test_4603() - { - } - [Fact] - public void Test_4604() - { - } - [Fact] - public void Test_4605() - { - } - [Fact] - public void Test_4606() - { - } - [Fact] - public void Test_4607() - { - } - [Fact] - public void Test_4608() - { - } - [Fact] - public void Test_4609() - { - } - [Fact] - public void Test_4610() - { - } - [Fact] - public void Test_4611() - { - } - [Fact] - public void Test_4612() - { - } - [Fact] - public void Test_4613() - { - } - [Fact] - public void Test_4614() - { - } - [Fact] - public void Test_4615() - { - } - [Fact] - public void Test_4616() - { - } - [Fact] - public void Test_4617() - { - } - [Fact] - public void Test_4618() - { - } - [Fact] - public void Test_4619() - { - } - [Fact] - public void Test_4620() - { - } - [Fact] - public void Test_4621() - { - } - [Fact] - public void Test_4622() - { - } - [Fact] - public void Test_4623() - { - } - [Fact] - public void Test_4624() - { - } - [Fact] - public void Test_4625() - { - } - [Fact] - public void Test_4626() - { - } - [Fact] - public void Test_4627() - { - } - [Fact] - public void Test_4628() - { - } - [Fact] - public void Test_4629() - { - } - [Fact] - public void Test_4630() - { - } - [Fact] - public void Test_4631() - { - } - [Fact] - public void Test_4632() - { - } - [Fact] - public void Test_4633() - { - } - [Fact] - public void Test_4634() - { - } - [Fact] - public void Test_4635() - { - } - [Fact] - public void Test_4636() - { - } - [Fact] - public void Test_4637() - { - } - [Fact] - public void Test_4638() - { - } - [Fact] - public void Test_4639() - { - } - [Fact] - public void Test_4640() - { - } - [Fact] - public void Test_4641() - { - } - [Fact] - public void Test_4642() - { - } - [Fact] - public void Test_4643() - { - } - [Fact] - public void Test_4644() - { - } - [Fact] - public void Test_4645() - { - } - [Fact] - public void Test_4646() - { - } - [Fact] - public void Test_4647() - { - } - [Fact] - public void Test_4648() - { - } - [Fact] - public void Test_4649() - { - } - [Fact] - public void Test_4650() - { - } - [Fact] - public void Test_4651() - { - } - [Fact] - public void Test_4652() - { - } - [Fact] - public void Test_4653() - { - } - [Fact] - public void Test_4654() - { - } - [Fact] - public void Test_4655() - { - } - [Fact] - public void Test_4656() - { - } - [Fact] - public void Test_4657() - { - } - [Fact] - public void Test_4658() - { - } - [Fact] - public void Test_4659() - { - } - [Fact] - public void Test_4660() - { - } - [Fact] - public void Test_4661() - { - } - [Fact] - public void Test_4662() - { - } - [Fact] - public void Test_4663() - { - } - [Fact] - public void Test_4664() - { - } - [Fact] - public void Test_4665() - { - } - [Fact] - public void Test_4666() - { - } - [Fact] - public void Test_4667() - { - } - [Fact] - public void Test_4668() - { - } - [Fact] - public void Test_4669() - { - } - [Fact] - public void Test_4670() - { - } - [Fact] - public void Test_4671() - { - } - [Fact] - public void Test_4672() - { - } - [Fact] - public void Test_4673() - { - } - [Fact] - public void Test_4674() - { - } - [Fact] - public void Test_4675() - { - } - [Fact] - public void Test_4676() - { - } - [Fact] - public void Test_4677() - { - } - [Fact] - public void Test_4678() - { - } - [Fact] - public void Test_4679() - { - } - [Fact] - public void Test_4680() - { - } - [Fact] - public void Test_4681() - { - } - [Fact] - public void Test_4682() - { - } - [Fact] - public void Test_4683() - { - } - [Fact] - public void Test_4684() - { - } - [Fact] - public void Test_4685() - { - } - [Fact] - public void Test_4686() - { - } - [Fact] - public void Test_4687() - { - } - [Fact] - public void Test_4688() - { - } - [Fact] - public void Test_4689() - { - } - [Fact] - public void Test_4690() - { - } - [Fact] - public void Test_4691() - { - } - [Fact] - public void Test_4692() - { - } - [Fact] - public void Test_4693() - { - } - [Fact] - public void Test_4694() - { - } - [Fact] - public void Test_4695() - { - } - [Fact] - public void Test_4696() - { - } - [Fact] - public void Test_4697() - { - } - [Fact] - public void Test_4698() - { - } - [Fact] - public void Test_4699() - { - } - [Fact] - public void Test_4700() - { - } - [Fact] - public void Test_4701() - { - } - [Fact] - public void Test_4702() - { - } - [Fact] - public void Test_4703() - { - } - [Fact] - public void Test_4704() - { - } - [Fact] - public void Test_4705() - { - } - [Fact] - public void Test_4706() - { - } - [Fact] - public void Test_4707() - { - } - [Fact] - public void Test_4708() - { - } - [Fact] - public void Test_4709() - { - } - [Fact] - public void Test_4710() - { - } - [Fact] - public void Test_4711() - { - } - [Fact] - public void Test_4712() - { - } - [Fact] - public void Test_4713() - { - } - [Fact] - public void Test_4714() - { - } - [Fact] - public void Test_4715() - { - } - [Fact] - public void Test_4716() - { - } - [Fact] - public void Test_4717() - { - } - [Fact] - public void Test_4718() - { - } - [Fact] - public void Test_4719() - { - } - [Fact] - public void Test_4720() - { - } - [Fact] - public void Test_4721() - { - } - [Fact] - public void Test_4722() - { - } - [Fact] - public void Test_4723() - { - } - [Fact] - public void Test_4724() - { - } - [Fact] - public void Test_4725() - { - } - [Fact] - public void Test_4726() - { - } - [Fact] - public void Test_4727() - { - } - [Fact] - public void Test_4728() - { - } - [Fact] - public void Test_4729() - { - } - [Fact] - public void Test_4730() - { - } - [Fact] - public void Test_4731() - { - } - [Fact] - public void Test_4732() - { - } - [Fact] - public void Test_4733() - { - } - [Fact] - public void Test_4734() - { - } - [Fact] - public void Test_4735() - { - } - [Fact] - public void Test_4736() - { - } - [Fact] - public void Test_4737() - { - } - [Fact] - public void Test_4738() - { - } - [Fact] - public void Test_4739() - { - } - [Fact] - public void Test_4740() - { - } - [Fact] - public void Test_4741() - { - } - [Fact] - public void Test_4742() - { - } - [Fact] - public void Test_4743() - { - } - [Fact] - public void Test_4744() - { - } - [Fact] - public void Test_4745() - { - } - [Fact] - public void Test_4746() - { - } - [Fact] - public void Test_4747() - { - } - [Fact] - public void Test_4748() - { - } - [Fact] - public void Test_4749() - { - } - [Fact] - public void Test_4750() - { - } - [Fact] - public void Test_4751() - { - } - [Fact] - public void Test_4752() - { - } - [Fact] - public void Test_4753() - { - } - [Fact] - public void Test_4754() - { - } - [Fact] - public void Test_4755() - { - } - [Fact] - public void Test_4756() - { - } - [Fact] - public void Test_4757() - { - } - [Fact] - public void Test_4758() - { - } - [Fact] - public void Test_4759() - { - } - [Fact] - public void Test_4760() - { - } - [Fact] - public void Test_4761() - { - } - [Fact] - public void Test_4762() - { - } - [Fact] - public void Test_4763() - { - } - [Fact] - public void Test_4764() - { - } - [Fact] - public void Test_4765() - { - } - [Fact] - public void Test_4766() - { - } - [Fact] - public void Test_4767() - { - } - [Fact] - public void Test_4768() - { - } - [Fact] - public void Test_4769() - { - } - [Fact] - public void Test_4770() - { - } - [Fact] - public void Test_4771() - { - } - [Fact] - public void Test_4772() - { - } - [Fact] - public void Test_4773() - { - } - [Fact] - public void Test_4774() - { - } - [Fact] - public void Test_4775() - { - } - [Fact] - public void Test_4776() - { - } - [Fact] - public void Test_4777() - { - } - [Fact] - public void Test_4778() - { - } - [Fact] - public void Test_4779() - { - } - [Fact] - public void Test_4780() - { - } - [Fact] - public void Test_4781() - { - } - [Fact] - public void Test_4782() - { - } - [Fact] - public void Test_4783() - { - } - [Fact] - public void Test_4784() - { - } - [Fact] - public void Test_4785() - { - } - [Fact] - public void Test_4786() - { - } - [Fact] - public void Test_4787() - { - } - [Fact] - public void Test_4788() - { - } - [Fact] - public void Test_4789() - { - } - [Fact] - public void Test_4790() - { - } - [Fact] - public void Test_4791() - { - } - [Fact] - public void Test_4792() - { - } - [Fact] - public void Test_4793() - { - } - [Fact] - public void Test_4794() - { - } - [Fact] - public void Test_4795() - { - } - [Fact] - public void Test_4796() - { - } - [Fact] - public void Test_4797() - { - } - [Fact] - public void Test_4798() - { - } - [Fact] - public void Test_4799() - { - } - [Fact] - public void Test_4800() - { - } - [Fact] - public void Test_4801() - { - } - [Fact] - public void Test_4802() - { - } - [Fact] - public void Test_4803() - { - } - [Fact] - public void Test_4804() - { - } - [Fact] - public void Test_4805() - { - } - [Fact] - public void Test_4806() - { - } - [Fact] - public void Test_4807() - { - } - [Fact] - public void Test_4808() - { - } - [Fact] - public void Test_4809() - { - } - [Fact] - public void Test_4810() - { - } - [Fact] - public void Test_4811() - { - } - [Fact] - public void Test_4812() - { - } - [Fact] - public void Test_4813() - { - } - [Fact] - public void Test_4814() - { - } - [Fact] - public void Test_4815() - { - } - [Fact] - public void Test_4816() - { - } - [Fact] - public void Test_4817() - { - } - [Fact] - public void Test_4818() - { - } - [Fact] - public void Test_4819() - { - } - [Fact] - public void Test_4820() - { - } - [Fact] - public void Test_4821() - { - } - [Fact] - public void Test_4822() - { - } - [Fact] - public void Test_4823() - { - } - [Fact] - public void Test_4824() - { - } - [Fact] - public void Test_4825() - { - } - [Fact] - public void Test_4826() - { - } - [Fact] - public void Test_4827() - { - } - [Fact] - public void Test_4828() - { - } - [Fact] - public void Test_4829() - { - } - [Fact] - public void Test_4830() - { - } - [Fact] - public void Test_4831() - { - } - [Fact] - public void Test_4832() - { - } - [Fact] - public void Test_4833() - { - } - [Fact] - public void Test_4834() - { - } - [Fact] - public void Test_4835() - { - } - [Fact] - public void Test_4836() - { - } - [Fact] - public void Test_4837() - { - } - [Fact] - public void Test_4838() - { - } - [Fact] - public void Test_4839() - { - } - [Fact] - public void Test_4840() - { - } - [Fact] - public void Test_4841() - { - } - [Fact] - public void Test_4842() - { - } - [Fact] - public void Test_4843() - { - } - [Fact] - public void Test_4844() - { - } - [Fact] - public void Test_4845() - { - } - [Fact] - public void Test_4846() - { - } - [Fact] - public void Test_4847() - { - } - [Fact] - public void Test_4848() - { - } - [Fact] - public void Test_4849() - { - } - [Fact] - public void Test_4850() - { - } - [Fact] - public void Test_4851() - { - } - [Fact] - public void Test_4852() - { - } - [Fact] - public void Test_4853() - { - } - [Fact] - public void Test_4854() - { - } - [Fact] - public void Test_4855() - { - } - [Fact] - public void Test_4856() - { - } - [Fact] - public void Test_4857() - { - } - [Fact] - public void Test_4858() - { - } - [Fact] - public void Test_4859() - { - } - [Fact] - public void Test_4860() - { - } - [Fact] - public void Test_4861() - { - } - [Fact] - public void Test_4862() - { - } - [Fact] - public void Test_4863() - { - } - [Fact] - public void Test_4864() - { - } - [Fact] - public void Test_4865() - { - } - [Fact] - public void Test_4866() - { - } - [Fact] - public void Test_4867() - { - } - [Fact] - public void Test_4868() - { - } - [Fact] - public void Test_4869() - { - } - [Fact] - public void Test_4870() - { - } - [Fact] - public void Test_4871() - { - } - [Fact] - public void Test_4872() - { - } - [Fact] - public void Test_4873() - { - } - [Fact] - public void Test_4874() - { - } - [Fact] - public void Test_4875() - { - } - [Fact] - public void Test_4876() - { - } - [Fact] - public void Test_4877() - { - } - [Fact] - public void Test_4878() - { - } - [Fact] - public void Test_4879() - { - } - [Fact] - public void Test_4880() - { - } - [Fact] - public void Test_4881() - { - } - [Fact] - public void Test_4882() - { - } - [Fact] - public void Test_4883() - { - } - [Fact] - public void Test_4884() - { - } - [Fact] - public void Test_4885() - { - } - [Fact] - public void Test_4886() - { - } - [Fact] - public void Test_4887() - { - } - [Fact] - public void Test_4888() - { - } - [Fact] - public void Test_4889() - { - } - [Fact] - public void Test_4890() - { - } - [Fact] - public void Test_4891() - { - } - [Fact] - public void Test_4892() - { - } - [Fact] - public void Test_4893() - { - } - [Fact] - public void Test_4894() - { - } - [Fact] - public void Test_4895() - { - } - [Fact] - public void Test_4896() - { - } - [Fact] - public void Test_4897() - { - } - [Fact] - public void Test_4898() - { - } - [Fact] - public void Test_4899() - { - } - [Fact] - public void Test_4900() - { - } - [Fact] - public void Test_4901() - { - } - [Fact] - public void Test_4902() - { - } - [Fact] - public void Test_4903() - { - } - [Fact] - public void Test_4904() - { - } - [Fact] - public void Test_4905() - { - } - [Fact] - public void Test_4906() - { - } - [Fact] - public void Test_4907() - { - } - [Fact] - public void Test_4908() - { - } - [Fact] - public void Test_4909() - { - } - [Fact] - public void Test_4910() - { - } - [Fact] - public void Test_4911() - { - } - [Fact] - public void Test_4912() - { - } - [Fact] - public void Test_4913() - { - } - [Fact] - public void Test_4914() - { - } - [Fact] - public void Test_4915() - { - } - [Fact] - public void Test_4916() - { - } - [Fact] - public void Test_4917() - { - } - [Fact] - public void Test_4918() - { - } - [Fact] - public void Test_4919() - { - } - [Fact] - public void Test_4920() - { - } - [Fact] - public void Test_4921() - { - } - [Fact] - public void Test_4922() - { - } - [Fact] - public void Test_4923() - { - } - [Fact] - public void Test_4924() - { - } - [Fact] - public void Test_4925() - { - } - [Fact] - public void Test_4926() - { - } - [Fact] - public void Test_4927() - { - } - [Fact] - public void Test_4928() - { - } - [Fact] - public void Test_4929() - { - } - [Fact] - public void Test_4930() - { - } - [Fact] - public void Test_4931() - { - } - [Fact] - public void Test_4932() - { - } - [Fact] - public void Test_4933() - { - } - [Fact] - public void Test_4934() - { - } - [Fact] - public void Test_4935() - { - } - [Fact] - public void Test_4936() - { - } - [Fact] - public void Test_4937() - { - } - [Fact] - public void Test_4938() - { - } - [Fact] - public void Test_4939() - { - } - [Fact] - public void Test_4940() - { - } - [Fact] - public void Test_4941() - { - } - [Fact] - public void Test_4942() - { - } - [Fact] - public void Test_4943() - { - } - [Fact] - public void Test_4944() - { - } - [Fact] - public void Test_4945() - { - } - [Fact] - public void Test_4946() - { - } - [Fact] - public void Test_4947() - { - } - [Fact] - public void Test_4948() - { - } - [Fact] - public void Test_4949() - { - } - [Fact] - public void Test_4950() - { - } - [Fact] - public void Test_4951() - { - } - [Fact] - public void Test_4952() - { - } - [Fact] - public void Test_4953() - { - } - [Fact] - public void Test_4954() - { - } - [Fact] - public void Test_4955() - { - } - [Fact] - public void Test_4956() - { - } - [Fact] - public void Test_4957() - { - } - [Fact] - public void Test_4958() - { - } - [Fact] - public void Test_4959() - { - } - [Fact] - public void Test_4960() - { - } - [Fact] - public void Test_4961() - { - } - [Fact] - public void Test_4962() - { - } - [Fact] - public void Test_4963() - { - } - [Fact] - public void Test_4964() - { - } - [Fact] - public void Test_4965() - { - } - [Fact] - public void Test_4966() - { - } - [Fact] - public void Test_4967() - { - } - [Fact] - public void Test_4968() - { - } - [Fact] - public void Test_4969() - { - } - [Fact] - public void Test_4970() - { - } - [Fact] - public void Test_4971() - { - } - [Fact] - public void Test_4972() - { - } - [Fact] - public void Test_4973() - { - } - [Fact] - public void Test_4974() - { - } - [Fact] - public void Test_4975() - { - } - [Fact] - public void Test_4976() - { - } - [Fact] - public void Test_4977() - { - } - [Fact] - public void Test_4978() - { - } - [Fact] - public void Test_4979() - { - } - [Fact] - public void Test_4980() - { - } - [Fact] - public void Test_4981() - { - } - [Fact] - public void Test_4982() - { - } - [Fact] - public void Test_4983() - { - } - [Fact] - public void Test_4984() - { - } - [Fact] - public void Test_4985() - { - } - [Fact] - public void Test_4986() - { - } - [Fact] - public void Test_4987() - { - } - [Fact] - public void Test_4988() - { - } - [Fact] - public void Test_4989() - { - } - [Fact] - public void Test_4990() - { - } - [Fact] - public void Test_4991() - { - } - [Fact] - public void Test_4992() - { - } - [Fact] - public void Test_4993() - { - } - [Fact] - public void Test_4994() - { - } - [Fact] - public void Test_4995() - { - } - [Fact] - public void Test_4996() - { - } - [Fact] - public void Test_4997() - { - } - [Fact] - public void Test_4998() - { - } - [Fact] - public void Test_4999() - { - } - [Fact] - public void Test_5000() - { - } - [Fact] - public void Test_5001() - { - } - [Fact] - public void Test_5002() - { - } - [Fact] - public void Test_5003() - { - } - [Fact] - public void Test_5004() - { - } - [Fact] - public void Test_5005() - { - } - [Fact] - public void Test_5006() - { - } - [Fact] - public void Test_5007() - { - } - [Fact] - public void Test_5008() - { - } - [Fact] - public void Test_5009() - { - } - [Fact] - public void Test_5010() - { - } - [Fact] - public void Test_5011() - { - } - [Fact] - public void Test_5012() - { - } - [Fact] - public void Test_5013() - { - } - [Fact] - public void Test_5014() - { - } - [Fact] - public void Test_5015() - { - } - [Fact] - public void Test_5016() - { - } - [Fact] - public void Test_5017() - { - } - [Fact] - public void Test_5018() - { - } - [Fact] - public void Test_5019() - { - } - [Fact] - public void Test_5020() - { - } - [Fact] - public void Test_5021() - { - } - [Fact] - public void Test_5022() - { - } - [Fact] - public void Test_5023() - { - } - [Fact] - public void Test_5024() - { - } - [Fact] - public void Test_5025() - { - } - [Fact] - public void Test_5026() - { - } - [Fact] - public void Test_5027() - { - } - [Fact] - public void Test_5028() - { - } - [Fact] - public void Test_5029() - { - } - [Fact] - public void Test_5030() - { - } - [Fact] - public void Test_5031() - { - } - [Fact] - public void Test_5032() - { - } - [Fact] - public void Test_5033() - { - } - [Fact] - public void Test_5034() - { - } - [Fact] - public void Test_5035() - { - } - [Fact] - public void Test_5036() - { - } - [Fact] - public void Test_5037() - { - } - [Fact] - public void Test_5038() - { - } - [Fact] - public void Test_5039() - { - } - [Fact] - public void Test_5040() - { - } - [Fact] - public void Test_5041() - { - } - [Fact] - public void Test_5042() - { - } - [Fact] - public void Test_5043() - { - } - [Fact] - public void Test_5044() - { - } - [Fact] - public void Test_5045() - { - } - [Fact] - public void Test_5046() - { - } - [Fact] - public void Test_5047() - { - } - [Fact] - public void Test_5048() - { - } - [Fact] - public void Test_5049() - { - } - [Fact] - public void Test_5050() - { - } - [Fact] - public void Test_5051() - { - } - [Fact] - public void Test_5052() - { - } - [Fact] - public void Test_5053() - { - } - [Fact] - public void Test_5054() - { - } - [Fact] - public void Test_5055() - { - } - [Fact] - public void Test_5056() - { - } - [Fact] - public void Test_5057() - { - } - [Fact] - public void Test_5058() - { - } - [Fact] - public void Test_5059() - { - } - [Fact] - public void Test_5060() - { - } - [Fact] - public void Test_5061() - { - } - [Fact] - public void Test_5062() - { - } - [Fact] - public void Test_5063() - { - } - [Fact] - public void Test_5064() - { - } - [Fact] - public void Test_5065() - { - } - [Fact] - public void Test_5066() - { - } - [Fact] - public void Test_5067() - { - } - [Fact] - public void Test_5068() - { - } - [Fact] - public void Test_5069() - { - } - [Fact] - public void Test_5070() - { - } - [Fact] - public void Test_5071() - { - } - [Fact] - public void Test_5072() - { - } - [Fact] - public void Test_5073() - { - } - [Fact] - public void Test_5074() - { - } - [Fact] - public void Test_5075() - { - } - [Fact] - public void Test_5076() - { - } - [Fact] - public void Test_5077() - { - } - [Fact] - public void Test_5078() - { - } - [Fact] - public void Test_5079() - { - } - [Fact] - public void Test_5080() - { - } - [Fact] - public void Test_5081() - { - } - [Fact] - public void Test_5082() - { - } - [Fact] - public void Test_5083() - { - } - [Fact] - public void Test_5084() - { - } - [Fact] - public void Test_5085() - { - } - [Fact] - public void Test_5086() - { - } - [Fact] - public void Test_5087() - { - } - [Fact] - public void Test_5088() - { - } - [Fact] - public void Test_5089() - { - } - [Fact] - public void Test_5090() - { - } - [Fact] - public void Test_5091() - { - } - [Fact] - public void Test_5092() - { - } - [Fact] - public void Test_5093() - { - } - [Fact] - public void Test_5094() - { - } - [Fact] - public void Test_5095() - { - } - [Fact] - public void Test_5096() - { - } - [Fact] - public void Test_5097() - { - } - [Fact] - public void Test_5098() - { - } - [Fact] - public void Test_5099() - { - } - [Fact] - public void Test_5100() - { - } - [Fact] - public void Test_5101() - { - } - [Fact] - public void Test_5102() - { - } - [Fact] - public void Test_5103() - { - } - [Fact] - public void Test_5104() - { - } - [Fact] - public void Test_5105() - { - } - [Fact] - public void Test_5106() - { - } - [Fact] - public void Test_5107() - { - } - [Fact] - public void Test_5108() - { - } - [Fact] - public void Test_5109() - { - } - [Fact] - public void Test_5110() - { - } - [Fact] - public void Test_5111() - { - } - [Fact] - public void Test_5112() - { - } - [Fact] - public void Test_5113() - { - } - [Fact] - public void Test_5114() - { - } - [Fact] - public void Test_5115() - { - } - [Fact] - public void Test_5116() - { - } - [Fact] - public void Test_5117() - { - } - [Fact] - public void Test_5118() - { - } - [Fact] - public void Test_5119() - { - } - [Fact] - public void Test_5120() - { - } - [Fact] - public void Test_5121() - { - } - [Fact] - public void Test_5122() - { - } - [Fact] - public void Test_5123() - { - } - [Fact] - public void Test_5124() - { - } - [Fact] - public void Test_5125() - { - } - [Fact] - public void Test_5126() - { - } - [Fact] - public void Test_5127() - { - } - [Fact] - public void Test_5128() - { - } - [Fact] - public void Test_5129() - { - } - [Fact] - public void Test_5130() - { - } - [Fact] - public void Test_5131() - { - } - [Fact] - public void Test_5132() - { - } - [Fact] - public void Test_5133() - { - } - [Fact] - public void Test_5134() - { - } - [Fact] - public void Test_5135() - { - } - [Fact] - public void Test_5136() - { - } - [Fact] - public void Test_5137() - { - } - [Fact] - public void Test_5138() - { - } - [Fact] - public void Test_5139() - { - } - [Fact] - public void Test_5140() - { - } - [Fact] - public void Test_5141() - { - } - [Fact] - public void Test_5142() - { - } - [Fact] - public void Test_5143() - { - } - [Fact] - public void Test_5144() - { - } - [Fact] - public void Test_5145() - { - } - [Fact] - public void Test_5146() - { - } - [Fact] - public void Test_5147() - { - } - [Fact] - public void Test_5148() - { - } - [Fact] - public void Test_5149() - { - } - [Fact] - public void Test_5150() - { - } - [Fact] - public void Test_5151() - { - } - [Fact] - public void Test_5152() - { - } - [Fact] - public void Test_5153() - { - } - [Fact] - public void Test_5154() - { - } - [Fact] - public void Test_5155() - { - } - [Fact] - public void Test_5156() - { - } - [Fact] - public void Test_5157() - { - } - [Fact] - public void Test_5158() - { - } - [Fact] - public void Test_5159() - { - } - [Fact] - public void Test_5160() - { - } - [Fact] - public void Test_5161() - { - } - [Fact] - public void Test_5162() - { - } - [Fact] - public void Test_5163() - { - } - [Fact] - public void Test_5164() - { - } - [Fact] - public void Test_5165() - { - } - [Fact] - public void Test_5166() - { - } - [Fact] - public void Test_5167() - { - } - [Fact] - public void Test_5168() - { - } - [Fact] - public void Test_5169() - { - } - [Fact] - public void Test_5170() - { - } - [Fact] - public void Test_5171() - { - } - [Fact] - public void Test_5172() - { - } - [Fact] - public void Test_5173() - { - } - [Fact] - public void Test_5174() - { - } - [Fact] - public void Test_5175() - { - } - [Fact] - public void Test_5176() - { - } - [Fact] - public void Test_5177() - { - } - [Fact] - public void Test_5178() - { - } - [Fact] - public void Test_5179() - { - } - [Fact] - public void Test_5180() - { - } - [Fact] - public void Test_5181() - { - } - [Fact] - public void Test_5182() - { - } - [Fact] - public void Test_5183() - { - } - [Fact] - public void Test_5184() - { - } - [Fact] - public void Test_5185() - { - } - [Fact] - public void Test_5186() - { - } - [Fact] - public void Test_5187() - { - } - [Fact] - public void Test_5188() - { - } - [Fact] - public void Test_5189() - { - } - [Fact] - public void Test_5190() - { - } - [Fact] - public void Test_5191() - { - } - [Fact] - public void Test_5192() - { - } - [Fact] - public void Test_5193() - { - } - [Fact] - public void Test_5194() - { - } - [Fact] - public void Test_5195() - { - } - [Fact] - public void Test_5196() - { - } - [Fact] - public void Test_5197() - { - } - [Fact] - public void Test_5198() - { - } - [Fact] - public void Test_5199() - { - } - [Fact] - public void Test_5200() - { - } - [Fact] - public void Test_5201() - { - } - [Fact] - public void Test_5202() - { - } - [Fact] - public void Test_5203() - { - } - [Fact] - public void Test_5204() - { - } - [Fact] - public void Test_5205() - { - } - [Fact] - public void Test_5206() - { - } - [Fact] - public void Test_5207() - { - } - [Fact] - public void Test_5208() - { - } - [Fact] - public void Test_5209() - { - } - [Fact] - public void Test_5210() - { - } - [Fact] - public void Test_5211() - { - } - [Fact] - public void Test_5212() - { - } - [Fact] - public void Test_5213() - { - } - [Fact] - public void Test_5214() - { - } - [Fact] - public void Test_5215() - { - } - [Fact] - public void Test_5216() - { - } - [Fact] - public void Test_5217() - { - } - [Fact] - public void Test_5218() - { - } - [Fact] - public void Test_5219() - { - } - [Fact] - public void Test_5220() - { - } - [Fact] - public void Test_5221() - { - } - [Fact] - public void Test_5222() - { - } - [Fact] - public void Test_5223() - { - } - [Fact] - public void Test_5224() - { - } - [Fact] - public void Test_5225() - { - } - [Fact] - public void Test_5226() - { - } - [Fact] - public void Test_5227() - { - } - [Fact] - public void Test_5228() - { - } - [Fact] - public void Test_5229() - { - } - [Fact] - public void Test_5230() - { - } - [Fact] - public void Test_5231() - { - } - [Fact] - public void Test_5232() - { - } - [Fact] - public void Test_5233() - { - } - [Fact] - public void Test_5234() - { - } - [Fact] - public void Test_5235() - { - } - [Fact] - public void Test_5236() - { - } - [Fact] - public void Test_5237() - { - } - [Fact] - public void Test_5238() - { - } - [Fact] - public void Test_5239() - { - } - [Fact] - public void Test_5240() - { - } - [Fact] - public void Test_5241() - { - } - [Fact] - public void Test_5242() - { - } - [Fact] - public void Test_5243() - { - } - [Fact] - public void Test_5244() - { - } - [Fact] - public void Test_5245() - { - } - [Fact] - public void Test_5246() - { - } - [Fact] - public void Test_5247() - { - } - [Fact] - public void Test_5248() - { - } - [Fact] - public void Test_5249() - { - } - [Fact] - public void Test_5250() - { - } - [Fact] - public void Test_5251() - { - } - [Fact] - public void Test_5252() - { - } - [Fact] - public void Test_5253() - { - } - [Fact] - public void Test_5254() - { - } - [Fact] - public void Test_5255() - { - } - [Fact] - public void Test_5256() - { - } - [Fact] - public void Test_5257() - { - } - [Fact] - public void Test_5258() - { - } - [Fact] - public void Test_5259() - { - } - [Fact] - public void Test_5260() - { - } - [Fact] - public void Test_5261() - { - } - [Fact] - public void Test_5262() - { - } - [Fact] - public void Test_5263() - { - } - [Fact] - public void Test_5264() - { - } - [Fact] - public void Test_5265() - { - } - [Fact] - public void Test_5266() - { - } - [Fact] - public void Test_5267() - { - } - [Fact] - public void Test_5268() - { - } - [Fact] - public void Test_5269() - { - } - [Fact] - public void Test_5270() - { - } - [Fact] - public void Test_5271() - { - } - [Fact] - public void Test_5272() - { - } - [Fact] - public void Test_5273() - { - } - [Fact] - public void Test_5274() - { - } - [Fact] - public void Test_5275() - { - } - [Fact] - public void Test_5276() - { - } - [Fact] - public void Test_5277() - { - } - [Fact] - public void Test_5278() - { - } - [Fact] - public void Test_5279() - { - } - [Fact] - public void Test_5280() - { - } - [Fact] - public void Test_5281() - { - } - [Fact] - public void Test_5282() - { - } - [Fact] - public void Test_5283() - { - } - [Fact] - public void Test_5284() - { - } - [Fact] - public void Test_5285() - { - } - [Fact] - public void Test_5286() - { - } - [Fact] - public void Test_5287() - { - } - [Fact] - public void Test_5288() - { - } - [Fact] - public void Test_5289() - { - } - [Fact] - public void Test_5290() - { - } - [Fact] - public void Test_5291() - { - } - [Fact] - public void Test_5292() - { - } - [Fact] - public void Test_5293() - { - } - [Fact] - public void Test_5294() - { - } - [Fact] - public void Test_5295() - { - } - [Fact] - public void Test_5296() - { - } - [Fact] - public void Test_5297() - { - } - [Fact] - public void Test_5298() - { - } - [Fact] - public void Test_5299() - { - } - [Fact] - public void Test_5300() - { - } - [Fact] - public void Test_5301() - { - } - [Fact] - public void Test_5302() - { - } - [Fact] - public void Test_5303() - { - } - [Fact] - public void Test_5304() - { - } - [Fact] - public void Test_5305() - { - } - [Fact] - public void Test_5306() - { - } - [Fact] - public void Test_5307() - { - } - [Fact] - public void Test_5308() - { - } - [Fact] - public void Test_5309() - { - } - [Fact] - public void Test_5310() - { - } - [Fact] - public void Test_5311() - { - } - [Fact] - public void Test_5312() - { - } - [Fact] - public void Test_5313() - { - } - [Fact] - public void Test_5314() - { - } - [Fact] - public void Test_5315() - { - } - [Fact] - public void Test_5316() - { - } - [Fact] - public void Test_5317() - { - } - [Fact] - public void Test_5318() - { - } - [Fact] - public void Test_5319() - { - } - [Fact] - public void Test_5320() - { - } - [Fact] - public void Test_5321() - { - } - [Fact] - public void Test_5322() - { - } - [Fact] - public void Test_5323() - { - } - [Fact] - public void Test_5324() - { - } - [Fact] - public void Test_5325() - { - } - [Fact] - public void Test_5326() - { - } - [Fact] - public void Test_5327() - { - } - [Fact] - public void Test_5328() - { - } - [Fact] - public void Test_5329() - { - } - [Fact] - public void Test_5330() - { - } - [Fact] - public void Test_5331() - { - } - [Fact] - public void Test_5332() - { - } - [Fact] - public void Test_5333() - { - } - [Fact] - public void Test_5334() - { - } - [Fact] - public void Test_5335() - { - } - [Fact] - public void Test_5336() - { - } - [Fact] - public void Test_5337() - { - } - [Fact] - public void Test_5338() - { - } - [Fact] - public void Test_5339() - { - } - [Fact] - public void Test_5340() - { - } - [Fact] - public void Test_5341() - { - } - [Fact] - public void Test_5342() - { - } - [Fact] - public void Test_5343() - { - } - [Fact] - public void Test_5344() - { - } - [Fact] - public void Test_5345() - { - } - [Fact] - public void Test_5346() - { - } - [Fact] - public void Test_5347() - { - } - [Fact] - public void Test_5348() - { - } - [Fact] - public void Test_5349() - { - } - [Fact] - public void Test_5350() - { - } - [Fact] - public void Test_5351() - { - } - [Fact] - public void Test_5352() - { - } - [Fact] - public void Test_5353() - { - } - [Fact] - public void Test_5354() - { - } - [Fact] - public void Test_5355() - { - } - [Fact] - public void Test_5356() - { - } - [Fact] - public void Test_5357() - { - } - [Fact] - public void Test_5358() - { - } - [Fact] - public void Test_5359() - { - } - [Fact] - public void Test_5360() - { - } - [Fact] - public void Test_5361() - { - } - [Fact] - public void Test_5362() - { - } - [Fact] - public void Test_5363() - { - } - [Fact] - public void Test_5364() - { - } - [Fact] - public void Test_5365() - { - } - [Fact] - public void Test_5366() - { - } - [Fact] - public void Test_5367() - { - } - [Fact] - public void Test_5368() - { - } - [Fact] - public void Test_5369() - { - } - [Fact] - public void Test_5370() - { - } - [Fact] - public void Test_5371() - { - } - [Fact] - public void Test_5372() - { - } - [Fact] - public void Test_5373() - { - } - [Fact] - public void Test_5374() - { - } - [Fact] - public void Test_5375() - { - } - [Fact] - public void Test_5376() - { - } - [Fact] - public void Test_5377() - { - } - [Fact] - public void Test_5378() - { - } - [Fact] - public void Test_5379() - { - } - [Fact] - public void Test_5380() - { - } - [Fact] - public void Test_5381() - { - } - [Fact] - public void Test_5382() - { - } - [Fact] - public void Test_5383() - { - } - [Fact] - public void Test_5384() - { - } - [Fact] - public void Test_5385() - { - } - [Fact] - public void Test_5386() - { - } - [Fact] - public void Test_5387() - { - } - [Fact] - public void Test_5388() - { - } - [Fact] - public void Test_5389() - { - } - [Fact] - public void Test_5390() - { - } - [Fact] - public void Test_5391() - { - } - [Fact] - public void Test_5392() - { - } - [Fact] - public void Test_5393() - { - } - [Fact] - public void Test_5394() - { - } - [Fact] - public void Test_5395() - { - } - [Fact] - public void Test_5396() - { - } - [Fact] - public void Test_5397() - { - } - [Fact] - public void Test_5398() - { - } - [Fact] - public void Test_5399() - { - } - [Fact] - public void Test_5400() - { - } - [Fact] - public void Test_5401() - { - } - [Fact] - public void Test_5402() - { - } - [Fact] - public void Test_5403() - { - } - [Fact] - public void Test_5404() - { - } - [Fact] - public void Test_5405() - { - } - [Fact] - public void Test_5406() - { - } - [Fact] - public void Test_5407() - { - } - [Fact] - public void Test_5408() - { - } - [Fact] - public void Test_5409() - { - } - [Fact] - public void Test_5410() - { - } - [Fact] - public void Test_5411() - { - } - [Fact] - public void Test_5412() - { - } - [Fact] - public void Test_5413() - { - } - [Fact] - public void Test_5414() - { - } - [Fact] - public void Test_5415() - { - } - [Fact] - public void Test_5416() - { - } - [Fact] - public void Test_5417() - { - } - [Fact] - public void Test_5418() - { - } - [Fact] - public void Test_5419() - { - } - [Fact] - public void Test_5420() - { - } - [Fact] - public void Test_5421() - { - } - [Fact] - public void Test_5422() - { - } - [Fact] - public void Test_5423() - { - } - [Fact] - public void Test_5424() - { - } - [Fact] - public void Test_5425() - { - } - [Fact] - public void Test_5426() - { - } - [Fact] - public void Test_5427() - { - } - [Fact] - public void Test_5428() - { - } - [Fact] - public void Test_5429() - { - } - [Fact] - public void Test_5430() - { - } - [Fact] - public void Test_5431() - { - } - [Fact] - public void Test_5432() - { - } - [Fact] - public void Test_5433() - { - } - [Fact] - public void Test_5434() - { - } - [Fact] - public void Test_5435() - { - } - [Fact] - public void Test_5436() - { - } - [Fact] - public void Test_5437() - { - } - [Fact] - public void Test_5438() - { - } - [Fact] - public void Test_5439() - { - } - [Fact] - public void Test_5440() - { - } - [Fact] - public void Test_5441() - { - } - [Fact] - public void Test_5442() - { - } - [Fact] - public void Test_5443() - { - } - [Fact] - public void Test_5444() - { - } - [Fact] - public void Test_5445() - { - } - [Fact] - public void Test_5446() - { - } - [Fact] - public void Test_5447() - { - } - [Fact] - public void Test_5448() - { - } - [Fact] - public void Test_5449() - { - } - [Fact] - public void Test_5450() - { - } - [Fact] - public void Test_5451() - { - } - [Fact] - public void Test_5452() - { - } - [Fact] - public void Test_5453() - { - } - [Fact] - public void Test_5454() - { - } - [Fact] - public void Test_5455() - { - } - [Fact] - public void Test_5456() - { - } - [Fact] - public void Test_5457() - { - } - [Fact] - public void Test_5458() - { - } - [Fact] - public void Test_5459() - { - } - [Fact] - public void Test_5460() - { - } - [Fact] - public void Test_5461() - { - } - [Fact] - public void Test_5462() - { - } - [Fact] - public void Test_5463() - { - } - [Fact] - public void Test_5464() - { - } - [Fact] - public void Test_5465() - { - } - [Fact] - public void Test_5466() - { - } - [Fact] - public void Test_5467() - { - } - [Fact] - public void Test_5468() - { - } - [Fact] - public void Test_5469() - { - } - [Fact] - public void Test_5470() - { - } - [Fact] - public void Test_5471() - { - } - [Fact] - public void Test_5472() - { - } - [Fact] - public void Test_5473() - { - } - [Fact] - public void Test_5474() - { - } - [Fact] - public void Test_5475() - { - } - [Fact] - public void Test_5476() - { - } - [Fact] - public void Test_5477() - { - } - [Fact] - public void Test_5478() - { - } - [Fact] - public void Test_5479() - { - } - [Fact] - public void Test_5480() - { - } - [Fact] - public void Test_5481() - { - } - [Fact] - public void Test_5482() - { - } - [Fact] - public void Test_5483() - { - } - [Fact] - public void Test_5484() - { - } - [Fact] - public void Test_5485() - { - } - [Fact] - public void Test_5486() - { - } - [Fact] - public void Test_5487() - { - } - [Fact] - public void Test_5488() - { - } - [Fact] - public void Test_5489() - { - } - [Fact] - public void Test_5490() - { - } - [Fact] - public void Test_5491() - { - } - [Fact] - public void Test_5492() - { - } - [Fact] - public void Test_5493() - { - } - [Fact] - public void Test_5494() - { - } - [Fact] - public void Test_5495() - { - } - [Fact] - public void Test_5496() - { - } - [Fact] - public void Test_5497() - { - } - [Fact] - public void Test_5498() - { - } - [Fact] - public void Test_5499() - { - } - [Fact] - public void Test_5500() - { - } - [Fact] - public void Test_5501() - { - } - [Fact] - public void Test_5502() - { - } - [Fact] - public void Test_5503() - { - } - [Fact] - public void Test_5504() - { - } - [Fact] - public void Test_5505() - { - } - [Fact] - public void Test_5506() - { - } - [Fact] - public void Test_5507() - { - } - [Fact] - public void Test_5508() - { - } - [Fact] - public void Test_5509() - { - } - [Fact] - public void Test_5510() - { - } - [Fact] - public void Test_5511() - { - } - [Fact] - public void Test_5512() - { - } - [Fact] - public void Test_5513() - { - } - [Fact] - public void Test_5514() - { - } - [Fact] - public void Test_5515() - { - } - [Fact] - public void Test_5516() - { - } - [Fact] - public void Test_5517() - { - } - [Fact] - public void Test_5518() - { - } - [Fact] - public void Test_5519() - { - } - [Fact] - public void Test_5520() - { - } - [Fact] - public void Test_5521() - { - } - [Fact] - public void Test_5522() - { - } - [Fact] - public void Test_5523() - { - } - [Fact] - public void Test_5524() - { - } - [Fact] - public void Test_5525() - { - } - [Fact] - public void Test_5526() - { - } - [Fact] - public void Test_5527() - { - } - [Fact] - public void Test_5528() - { - } - [Fact] - public void Test_5529() - { - } - [Fact] - public void Test_5530() - { - } - [Fact] - public void Test_5531() - { - } - [Fact] - public void Test_5532() - { - } - [Fact] - public void Test_5533() - { - } - [Fact] - public void Test_5534() - { - } - [Fact] - public void Test_5535() - { - } - [Fact] - public void Test_5536() - { - } - [Fact] - public void Test_5537() - { - } - [Fact] - public void Test_5538() - { - } - [Fact] - public void Test_5539() - { - } - [Fact] - public void Test_5540() - { - } - [Fact] - public void Test_5541() - { - } - [Fact] - public void Test_5542() - { - } - [Fact] - public void Test_5543() - { - } - [Fact] - public void Test_5544() - { - } - [Fact] - public void Test_5545() - { - } - [Fact] - public void Test_5546() - { - } - [Fact] - public void Test_5547() - { - } - [Fact] - public void Test_5548() - { - } - [Fact] - public void Test_5549() - { - } - [Fact] - public void Test_5550() - { - } - [Fact] - public void Test_5551() - { - } - [Fact] - public void Test_5552() - { - } - [Fact] - public void Test_5553() - { - } - [Fact] - public void Test_5554() - { - } - [Fact] - public void Test_5555() - { - } - [Fact] - public void Test_5556() - { - } - [Fact] - public void Test_5557() - { - } - [Fact] - public void Test_5558() - { - } - [Fact] - public void Test_5559() - { - } - [Fact] - public void Test_5560() - { - } - [Fact] - public void Test_5561() - { - } - [Fact] - public void Test_5562() - { - } - [Fact] - public void Test_5563() - { - } - [Fact] - public void Test_5564() - { - } - [Fact] - public void Test_5565() - { - } - [Fact] - public void Test_5566() - { - } - [Fact] - public void Test_5567() - { - } - [Fact] - public void Test_5568() - { - } - [Fact] - public void Test_5569() - { - } - [Fact] - public void Test_5570() - { - } - [Fact] - public void Test_5571() - { - } - [Fact] - public void Test_5572() - { - } - [Fact] - public void Test_5573() - { - } - [Fact] - public void Test_5574() - { - } - [Fact] - public void Test_5575() - { - } - [Fact] - public void Test_5576() - { - } - [Fact] - public void Test_5577() - { - } - [Fact] - public void Test_5578() - { - } - [Fact] - public void Test_5579() - { - } - [Fact] - public void Test_5580() - { - } - [Fact] - public void Test_5581() - { - } - [Fact] - public void Test_5582() - { - } - [Fact] - public void Test_5583() - { - } - [Fact] - public void Test_5584() - { - } - [Fact] - public void Test_5585() - { - } - [Fact] - public void Test_5586() - { - } - [Fact] - public void Test_5587() - { - } - [Fact] - public void Test_5588() - { - } - [Fact] - public void Test_5589() - { - } - [Fact] - public void Test_5590() - { - } - [Fact] - public void Test_5591() - { - } - [Fact] - public void Test_5592() - { - } - [Fact] - public void Test_5593() - { - } - [Fact] - public void Test_5594() - { - } - [Fact] - public void Test_5595() - { - } - [Fact] - public void Test_5596() - { - } - [Fact] - public void Test_5597() - { - } - [Fact] - public void Test_5598() - { - } - [Fact] - public void Test_5599() - { - } - [Fact] - public void Test_5600() - { - } - [Fact] - public void Test_5601() - { - } - [Fact] - public void Test_5602() - { - } - [Fact] - public void Test_5603() - { - } - [Fact] - public void Test_5604() - { - } - [Fact] - public void Test_5605() - { - } - [Fact] - public void Test_5606() - { - } - [Fact] - public void Test_5607() - { - } - [Fact] - public void Test_5608() - { - } - [Fact] - public void Test_5609() - { - } - [Fact] - public void Test_5610() - { - } - [Fact] - public void Test_5611() - { - } - [Fact] - public void Test_5612() - { - } - [Fact] - public void Test_5613() - { - } - [Fact] - public void Test_5614() - { - } - [Fact] - public void Test_5615() - { - } - [Fact] - public void Test_5616() - { - } - [Fact] - public void Test_5617() - { - } - [Fact] - public void Test_5618() - { - } - [Fact] - public void Test_5619() - { - } - [Fact] - public void Test_5620() - { - } - [Fact] - public void Test_5621() - { - } - [Fact] - public void Test_5622() - { - } - [Fact] - public void Test_5623() - { - } - [Fact] - public void Test_5624() - { - } - [Fact] - public void Test_5625() - { - } - [Fact] - public void Test_5626() - { - } - [Fact] - public void Test_5627() - { - } - [Fact] - public void Test_5628() - { - } - [Fact] - public void Test_5629() - { - } - [Fact] - public void Test_5630() - { - } - [Fact] - public void Test_5631() - { - } - [Fact] - public void Test_5632() - { - } - [Fact] - public void Test_5633() - { - } - [Fact] - public void Test_5634() - { - } - [Fact] - public void Test_5635() - { - } - [Fact] - public void Test_5636() - { - } - [Fact] - public void Test_5637() - { - } - [Fact] - public void Test_5638() - { - } - [Fact] - public void Test_5639() - { - } - [Fact] - public void Test_5640() - { - } - [Fact] - public void Test_5641() - { - } - [Fact] - public void Test_5642() - { - } - [Fact] - public void Test_5643() - { - } - [Fact] - public void Test_5644() - { - } - [Fact] - public void Test_5645() - { - } - [Fact] - public void Test_5646() - { - } - [Fact] - public void Test_5647() - { - } - [Fact] - public void Test_5648() - { - } - [Fact] - public void Test_5649() - { - } - [Fact] - public void Test_5650() - { - } - [Fact] - public void Test_5651() - { - } - [Fact] - public void Test_5652() - { - } - [Fact] - public void Test_5653() - { - } - [Fact] - public void Test_5654() - { - } - [Fact] - public void Test_5655() - { - } - [Fact] - public void Test_5656() - { - } - [Fact] - public void Test_5657() - { - } - [Fact] - public void Test_5658() - { - } - [Fact] - public void Test_5659() - { - } - [Fact] - public void Test_5660() - { - } - [Fact] - public void Test_5661() - { - } - [Fact] - public void Test_5662() - { - } - [Fact] - public void Test_5663() - { - } - [Fact] - public void Test_5664() - { - } - [Fact] - public void Test_5665() - { - } - [Fact] - public void Test_5666() - { - } - [Fact] - public void Test_5667() - { - } - [Fact] - public void Test_5668() - { - } - [Fact] - public void Test_5669() - { - } - [Fact] - public void Test_5670() - { - } - [Fact] - public void Test_5671() - { - } - [Fact] - public void Test_5672() - { - } - [Fact] - public void Test_5673() - { - } - [Fact] - public void Test_5674() - { - } - [Fact] - public void Test_5675() - { - } - [Fact] - public void Test_5676() - { - } - [Fact] - public void Test_5677() - { - } - [Fact] - public void Test_5678() - { - } - [Fact] - public void Test_5679() - { - } - [Fact] - public void Test_5680() - { - } - [Fact] - public void Test_5681() - { - } - [Fact] - public void Test_5682() - { - } - [Fact] - public void Test_5683() - { - } - [Fact] - public void Test_5684() - { - } - [Fact] - public void Test_5685() - { - } - [Fact] - public void Test_5686() - { - } - [Fact] - public void Test_5687() - { - } - [Fact] - public void Test_5688() - { - } - [Fact] - public void Test_5689() - { - } - [Fact] - public void Test_5690() - { - } - [Fact] - public void Test_5691() - { - } - [Fact] - public void Test_5692() - { - } - [Fact] - public void Test_5693() - { - } - [Fact] - public void Test_5694() - { - } - [Fact] - public void Test_5695() - { - } - [Fact] - public void Test_5696() - { - } - [Fact] - public void Test_5697() - { - } - [Fact] - public void Test_5698() - { - } - [Fact] - public void Test_5699() - { - } - [Fact] - public void Test_5700() - { - } - [Fact] - public void Test_5701() - { - } - [Fact] - public void Test_5702() - { - } - [Fact] - public void Test_5703() - { - } - [Fact] - public void Test_5704() - { - } - [Fact] - public void Test_5705() - { - } - [Fact] - public void Test_5706() - { - } - [Fact] - public void Test_5707() - { - } - [Fact] - public void Test_5708() - { - } - [Fact] - public void Test_5709() - { - } - [Fact] - public void Test_5710() - { - } - [Fact] - public void Test_5711() - { - } - [Fact] - public void Test_5712() - { - } - [Fact] - public void Test_5713() - { - } - [Fact] - public void Test_5714() - { - } - [Fact] - public void Test_5715() - { - } - [Fact] - public void Test_5716() - { - } - [Fact] - public void Test_5717() - { - } - [Fact] - public void Test_5718() - { - } - [Fact] - public void Test_5719() - { - } - [Fact] - public void Test_5720() - { - } - [Fact] - public void Test_5721() - { - } - [Fact] - public void Test_5722() - { - } - [Fact] - public void Test_5723() - { - } - [Fact] - public void Test_5724() - { - } - [Fact] - public void Test_5725() - { - } - [Fact] - public void Test_5726() - { - } - [Fact] - public void Test_5727() - { - } - [Fact] - public void Test_5728() - { - } - [Fact] - public void Test_5729() - { - } - [Fact] - public void Test_5730() - { - } - [Fact] - public void Test_5731() - { - } - [Fact] - public void Test_5732() - { - } - [Fact] - public void Test_5733() - { - } - [Fact] - public void Test_5734() - { - } - [Fact] - public void Test_5735() - { - } - [Fact] - public void Test_5736() - { - } - [Fact] - public void Test_5737() - { - } - [Fact] - public void Test_5738() - { - } - [Fact] - public void Test_5739() - { - } - [Fact] - public void Test_5740() - { - } - [Fact] - public void Test_5741() - { - } - [Fact] - public void Test_5742() - { - } - [Fact] - public void Test_5743() - { - } - [Fact] - public void Test_5744() - { - } - [Fact] - public void Test_5745() - { - } - [Fact] - public void Test_5746() - { - } - [Fact] - public void Test_5747() - { - } - [Fact] - public void Test_5748() - { - } - [Fact] - public void Test_5749() - { - } - [Fact] - public void Test_5750() - { - } - [Fact] - public void Test_5751() - { - } - [Fact] - public void Test_5752() - { - } - [Fact] - public void Test_5753() - { - } - [Fact] - public void Test_5754() - { - } - [Fact] - public void Test_5755() - { - } - [Fact] - public void Test_5756() - { - } - [Fact] - public void Test_5757() - { - } - [Fact] - public void Test_5758() - { - } - [Fact] - public void Test_5759() - { - } - [Fact] - public void Test_5760() - { - } - [Fact] - public void Test_5761() - { - } - [Fact] - public void Test_5762() - { - } - [Fact] - public void Test_5763() - { - } - [Fact] - public void Test_5764() - { - } - [Fact] - public void Test_5765() - { - } - [Fact] - public void Test_5766() - { - } - [Fact] - public void Test_5767() - { - } - [Fact] - public void Test_5768() - { - } - [Fact] - public void Test_5769() - { - } - [Fact] - public void Test_5770() - { - } - [Fact] - public void Test_5771() - { - } - [Fact] - public void Test_5772() - { - } - [Fact] - public void Test_5773() - { - } - [Fact] - public void Test_5774() - { - } - [Fact] - public void Test_5775() - { - } - [Fact] - public void Test_5776() - { - } - [Fact] - public void Test_5777() - { - } - [Fact] - public void Test_5778() - { - } - [Fact] - public void Test_5779() - { - } - [Fact] - public void Test_5780() - { - } - [Fact] - public void Test_5781() - { - } - [Fact] - public void Test_5782() - { - } - [Fact] - public void Test_5783() - { - } - [Fact] - public void Test_5784() - { - } - [Fact] - public void Test_5785() - { - } - [Fact] - public void Test_5786() - { - } - [Fact] - public void Test_5787() - { - } - [Fact] - public void Test_5788() - { - } - [Fact] - public void Test_5789() - { - } - [Fact] - public void Test_5790() - { - } - [Fact] - public void Test_5791() - { - } - [Fact] - public void Test_5792() - { - } - [Fact] - public void Test_5793() - { - } - [Fact] - public void Test_5794() - { - } - [Fact] - public void Test_5795() - { - } - [Fact] - public void Test_5796() - { - } - [Fact] - public void Test_5797() - { - } - [Fact] - public void Test_5798() - { - } - [Fact] - public void Test_5799() - { - } - [Fact] - public void Test_5800() - { - } - [Fact] - public void Test_5801() - { - } - [Fact] - public void Test_5802() - { - } - [Fact] - public void Test_5803() - { - } - [Fact] - public void Test_5804() - { - } - [Fact] - public void Test_5805() - { - } - [Fact] - public void Test_5806() - { - } - [Fact] - public void Test_5807() - { - } - [Fact] - public void Test_5808() - { - } - [Fact] - public void Test_5809() - { - } - [Fact] - public void Test_5810() - { - } - [Fact] - public void Test_5811() - { - } - [Fact] - public void Test_5812() - { - } - [Fact] - public void Test_5813() - { - } - [Fact] - public void Test_5814() - { - } - [Fact] - public void Test_5815() - { - } - [Fact] - public void Test_5816() - { - } - [Fact] - public void Test_5817() - { - } - [Fact] - public void Test_5818() - { - } - [Fact] - public void Test_5819() - { - } - [Fact] - public void Test_5820() - { - } - [Fact] - public void Test_5821() - { - } - [Fact] - public void Test_5822() - { - } - [Fact] - public void Test_5823() - { - } - [Fact] - public void Test_5824() - { - } - [Fact] - public void Test_5825() - { - } - [Fact] - public void Test_5826() - { - } - [Fact] - public void Test_5827() - { - } - [Fact] - public void Test_5828() - { - } - [Fact] - public void Test_5829() - { - } - [Fact] - public void Test_5830() - { - } - [Fact] - public void Test_5831() - { - } - [Fact] - public void Test_5832() - { - } - [Fact] - public void Test_5833() - { - } - [Fact] - public void Test_5834() - { - } - [Fact] - public void Test_5835() - { - } - [Fact] - public void Test_5836() - { - } - [Fact] - public void Test_5837() - { - } - [Fact] - public void Test_5838() - { - } - [Fact] - public void Test_5839() - { - } - [Fact] - public void Test_5840() - { - } - [Fact] - public void Test_5841() - { - } - [Fact] - public void Test_5842() - { - } - [Fact] - public void Test_5843() - { - } - [Fact] - public void Test_5844() - { - } - [Fact] - public void Test_5845() - { - } - [Fact] - public void Test_5846() - { - } - [Fact] - public void Test_5847() - { - } - [Fact] - public void Test_5848() - { - } - [Fact] - public void Test_5849() - { - } - [Fact] - public void Test_5850() - { - } - [Fact] - public void Test_5851() - { - } - [Fact] - public void Test_5852() - { - } - [Fact] - public void Test_5853() - { - } - [Fact] - public void Test_5854() - { - } - [Fact] - public void Test_5855() - { - } - [Fact] - public void Test_5856() - { - } - [Fact] - public void Test_5857() - { - } - [Fact] - public void Test_5858() - { - } - [Fact] - public void Test_5859() - { - } - [Fact] - public void Test_5860() - { - } - [Fact] - public void Test_5861() - { - } - [Fact] - public void Test_5862() - { - } - [Fact] - public void Test_5863() - { - } - [Fact] - public void Test_5864() - { - } - [Fact] - public void Test_5865() - { - } - [Fact] - public void Test_5866() - { - } - [Fact] - public void Test_5867() - { - } - [Fact] - public void Test_5868() - { - } - [Fact] - public void Test_5869() - { - } - [Fact] - public void Test_5870() - { - } - [Fact] - public void Test_5871() - { - } - [Fact] - public void Test_5872() - { - } - [Fact] - public void Test_5873() - { - } - [Fact] - public void Test_5874() - { - } - [Fact] - public void Test_5875() - { - } - [Fact] - public void Test_5876() - { - } - [Fact] - public void Test_5877() - { - } - [Fact] - public void Test_5878() - { - } - [Fact] - public void Test_5879() - { - } - [Fact] - public void Test_5880() - { - } - [Fact] - public void Test_5881() - { - } - [Fact] - public void Test_5882() - { - } - [Fact] - public void Test_5883() - { - } - [Fact] - public void Test_5884() - { - } - [Fact] - public void Test_5885() - { - } - [Fact] - public void Test_5886() - { - } - [Fact] - public void Test_5887() - { - } - [Fact] - public void Test_5888() - { - } - [Fact] - public void Test_5889() - { - } - [Fact] - public void Test_5890() - { - } - [Fact] - public void Test_5891() - { - } - [Fact] - public void Test_5892() - { - } - [Fact] - public void Test_5893() - { - } - [Fact] - public void Test_5894() - { - } - [Fact] - public void Test_5895() - { - } - [Fact] - public void Test_5896() - { - } - [Fact] - public void Test_5897() - { - } - [Fact] - public void Test_5898() - { - } - [Fact] - public void Test_5899() - { - } - [Fact] - public void Test_5900() - { - } - [Fact] - public void Test_5901() - { - } - [Fact] - public void Test_5902() - { - } - [Fact] - public void Test_5903() - { - } - [Fact] - public void Test_5904() - { - } - [Fact] - public void Test_5905() - { - } - [Fact] - public void Test_5906() - { - } - [Fact] - public void Test_5907() - { - } - [Fact] - public void Test_5908() - { - } - [Fact] - public void Test_5909() - { - } - [Fact] - public void Test_5910() - { - } - [Fact] - public void Test_5911() - { - } - [Fact] - public void Test_5912() - { - } - [Fact] - public void Test_5913() - { - } - [Fact] - public void Test_5914() - { - } - [Fact] - public void Test_5915() - { - } - [Fact] - public void Test_5916() - { - } - [Fact] - public void Test_5917() - { - } - [Fact] - public void Test_5918() - { - } - [Fact] - public void Test_5919() - { - } - [Fact] - public void Test_5920() - { - } - [Fact] - public void Test_5921() - { - } - [Fact] - public void Test_5922() - { - } - [Fact] - public void Test_5923() - { - } - [Fact] - public void Test_5924() - { - } - [Fact] - public void Test_5925() - { - } - [Fact] - public void Test_5926() - { - } - [Fact] - public void Test_5927() - { - } - [Fact] - public void Test_5928() - { - } - [Fact] - public void Test_5929() - { - } - [Fact] - public void Test_5930() - { - } - [Fact] - public void Test_5931() - { - } - [Fact] - public void Test_5932() - { - } - [Fact] - public void Test_5933() - { - } - [Fact] - public void Test_5934() - { - } - [Fact] - public void Test_5935() - { - } - [Fact] - public void Test_5936() - { - } - [Fact] - public void Test_5937() - { - } - [Fact] - public void Test_5938() - { - } - [Fact] - public void Test_5939() - { - } - [Fact] - public void Test_5940() - { - } - [Fact] - public void Test_5941() - { - } - [Fact] - public void Test_5942() - { - } - [Fact] - public void Test_5943() - { - } - [Fact] - public void Test_5944() - { - } - [Fact] - public void Test_5945() - { - } - [Fact] - public void Test_5946() - { - } - [Fact] - public void Test_5947() - { - } - [Fact] - public void Test_5948() - { - } - [Fact] - public void Test_5949() - { - } - [Fact] - public void Test_5950() - { - } - [Fact] - public void Test_5951() - { - } - [Fact] - public void Test_5952() - { - } - [Fact] - public void Test_5953() - { - } - [Fact] - public void Test_5954() - { - } - [Fact] - public void Test_5955() - { - } - [Fact] - public void Test_5956() - { - } - [Fact] - public void Test_5957() - { - } - [Fact] - public void Test_5958() - { - } - [Fact] - public void Test_5959() - { - } - [Fact] - public void Test_5960() - { - } - [Fact] - public void Test_5961() - { - } - [Fact] - public void Test_5962() - { - } - [Fact] - public void Test_5963() - { - } - [Fact] - public void Test_5964() - { - } - [Fact] - public void Test_5965() - { - } - [Fact] - public void Test_5966() - { - } - [Fact] - public void Test_5967() - { - } - [Fact] - public void Test_5968() - { - } - [Fact] - public void Test_5969() - { - } - [Fact] - public void Test_5970() - { - } - [Fact] - public void Test_5971() - { - } - [Fact] - public void Test_5972() - { - } - [Fact] - public void Test_5973() - { - } - [Fact] - public void Test_5974() - { - } - [Fact] - public void Test_5975() - { - } - [Fact] - public void Test_5976() - { - } - [Fact] - public void Test_5977() - { - } - [Fact] - public void Test_5978() - { - } - [Fact] - public void Test_5979() - { - } - [Fact] - public void Test_5980() - { - } - [Fact] - public void Test_5981() - { - } - [Fact] - public void Test_5982() - { - } - [Fact] - public void Test_5983() - { - } - [Fact] - public void Test_5984() - { - } - [Fact] - public void Test_5985() - { - } - [Fact] - public void Test_5986() - { - } - [Fact] - public void Test_5987() - { - } - [Fact] - public void Test_5988() - { - } - [Fact] - public void Test_5989() - { - } - [Fact] - public void Test_5990() - { - } - [Fact] - public void Test_5991() - { - } - [Fact] - public void Test_5992() - { - } - [Fact] - public void Test_5993() - { - } - [Fact] - public void Test_5994() - { - } - [Fact] - public void Test_5995() - { - } - [Fact] - public void Test_5996() - { - } - [Fact] - public void Test_5997() - { - } - [Fact] - public void Test_5998() - { - } - [Fact] - public void Test_5999() - { - } - [Fact] - public void Test_6000() - { - } - [Fact] - public void Test_6001() - { - } - [Fact] - public void Test_6002() - { - } - [Fact] - public void Test_6003() - { - } - [Fact] - public void Test_6004() - { - } - [Fact] - public void Test_6005() - { - } - [Fact] - public void Test_6006() - { - } - [Fact] - public void Test_6007() - { - } - [Fact] - public void Test_6008() - { - } - [Fact] - public void Test_6009() - { - } - [Fact] - public void Test_6010() - { - } - [Fact] - public void Test_6011() - { - } - [Fact] - public void Test_6012() - { - } - [Fact] - public void Test_6013() - { - } - [Fact] - public void Test_6014() - { - } - [Fact] - public void Test_6015() - { - } - [Fact] - public void Test_6016() - { - } - [Fact] - public void Test_6017() - { - } - [Fact] - public void Test_6018() - { - } - [Fact] - public void Test_6019() - { - } - [Fact] - public void Test_6020() - { - } - [Fact] - public void Test_6021() - { - } - [Fact] - public void Test_6022() - { - } - [Fact] - public void Test_6023() - { - } - [Fact] - public void Test_6024() - { - } - [Fact] - public void Test_6025() - { - } - [Fact] - public void Test_6026() - { - } - [Fact] - public void Test_6027() - { - } - [Fact] - public void Test_6028() - { - } - [Fact] - public void Test_6029() - { - } - [Fact] - public void Test_6030() - { - } - [Fact] - public void Test_6031() - { - } - [Fact] - public void Test_6032() - { - } - [Fact] - public void Test_6033() - { - } - [Fact] - public void Test_6034() - { - } - [Fact] - public void Test_6035() - { - } - [Fact] - public void Test_6036() - { - } - [Fact] - public void Test_6037() - { - } - [Fact] - public void Test_6038() - { - } - [Fact] - public void Test_6039() - { - } - [Fact] - public void Test_6040() - { - } - [Fact] - public void Test_6041() - { - } - [Fact] - public void Test_6042() - { - } - [Fact] - public void Test_6043() - { - } - [Fact] - public void Test_6044() - { - } - [Fact] - public void Test_6045() - { - } - [Fact] - public void Test_6046() - { - } - [Fact] - public void Test_6047() - { - } - [Fact] - public void Test_6048() - { - } - [Fact] - public void Test_6049() - { - } - [Fact] - public void Test_6050() - { - } - [Fact] - public void Test_6051() - { - } - [Fact] - public void Test_6052() - { - } - [Fact] - public void Test_6053() - { - } - [Fact] - public void Test_6054() - { - } - [Fact] - public void Test_6055() - { - } - [Fact] - public void Test_6056() - { - } - [Fact] - public void Test_6057() - { - } - [Fact] - public void Test_6058() - { - } - [Fact] - public void Test_6059() - { - } - [Fact] - public void Test_6060() - { - } - [Fact] - public void Test_6061() - { - } - [Fact] - public void Test_6062() - { - } - [Fact] - public void Test_6063() - { - } - [Fact] - public void Test_6064() - { - } - [Fact] - public void Test_6065() - { - } - [Fact] - public void Test_6066() - { - } - [Fact] - public void Test_6067() - { - } - [Fact] - public void Test_6068() - { - } - [Fact] - public void Test_6069() - { - } - [Fact] - public void Test_6070() - { - } - [Fact] - public void Test_6071() - { - } - [Fact] - public void Test_6072() - { - } - [Fact] - public void Test_6073() - { - } - [Fact] - public void Test_6074() - { - } - [Fact] - public void Test_6075() - { - } - [Fact] - public void Test_6076() - { - } - [Fact] - public void Test_6077() - { - } - [Fact] - public void Test_6078() - { - } - [Fact] - public void Test_6079() - { - } - [Fact] - public void Test_6080() - { - } - [Fact] - public void Test_6081() - { - } - [Fact] - public void Test_6082() - { - } - [Fact] - public void Test_6083() - { - } - [Fact] - public void Test_6084() - { - } - [Fact] - public void Test_6085() - { - } - [Fact] - public void Test_6086() - { - } - [Fact] - public void Test_6087() - { - } - [Fact] - public void Test_6088() - { - } - [Fact] - public void Test_6089() - { - } - [Fact] - public void Test_6090() - { - } - [Fact] - public void Test_6091() - { - } - [Fact] - public void Test_6092() - { - } - [Fact] - public void Test_6093() - { - } - [Fact] - public void Test_6094() - { - } - [Fact] - public void Test_6095() - { - } - [Fact] - public void Test_6096() - { - } - [Fact] - public void Test_6097() - { - } - [Fact] - public void Test_6098() - { - } - [Fact] - public void Test_6099() - { - } - [Fact] - public void Test_6100() - { - } - [Fact] - public void Test_6101() - { - } - [Fact] - public void Test_6102() - { - } - [Fact] - public void Test_6103() - { - } - [Fact] - public void Test_6104() - { - } - [Fact] - public void Test_6105() - { - } - [Fact] - public void Test_6106() - { - } - [Fact] - public void Test_6107() - { - } - [Fact] - public void Test_6108() - { - } - [Fact] - public void Test_6109() - { - } - [Fact] - public void Test_6110() - { - } - [Fact] - public void Test_6111() - { - } - [Fact] - public void Test_6112() - { - } - [Fact] - public void Test_6113() - { - } - [Fact] - public void Test_6114() - { - } - [Fact] - public void Test_6115() - { - } - [Fact] - public void Test_6116() - { - } - [Fact] - public void Test_6117() - { - } - [Fact] - public void Test_6118() - { - } - [Fact] - public void Test_6119() - { - } - [Fact] - public void Test_6120() - { - } - [Fact] - public void Test_6121() - { - } - [Fact] - public void Test_6122() - { - } - [Fact] - public void Test_6123() - { - } - [Fact] - public void Test_6124() - { - } - [Fact] - public void Test_6125() - { - } - [Fact] - public void Test_6126() - { - } - [Fact] - public void Test_6127() - { - } - [Fact] - public void Test_6128() - { - } - [Fact] - public void Test_6129() - { - } - [Fact] - public void Test_6130() - { - } - [Fact] - public void Test_6131() - { - } - [Fact] - public void Test_6132() - { - } - [Fact] - public void Test_6133() - { - } - [Fact] - public void Test_6134() - { - } - [Fact] - public void Test_6135() - { - } - [Fact] - public void Test_6136() - { - } - [Fact] - public void Test_6137() - { - } - [Fact] - public void Test_6138() - { - } - [Fact] - public void Test_6139() - { - } - [Fact] - public void Test_6140() - { - } - [Fact] - public void Test_6141() - { - } - [Fact] - public void Test_6142() - { - } - [Fact] - public void Test_6143() - { - } - [Fact] - public void Test_6144() - { - } - [Fact] - public void Test_6145() - { - } - [Fact] - public void Test_6146() - { - } - [Fact] - public void Test_6147() - { - } - [Fact] - public void Test_6148() - { - } - [Fact] - public void Test_6149() - { - } - [Fact] - public void Test_6150() - { - } - [Fact] - public void Test_6151() - { - } - [Fact] - public void Test_6152() - { - } - [Fact] - public void Test_6153() - { - } - [Fact] - public void Test_6154() - { - } - [Fact] - public void Test_6155() - { - } - [Fact] - public void Test_6156() - { - } - [Fact] - public void Test_6157() - { - } - [Fact] - public void Test_6158() - { - } - [Fact] - public void Test_6159() - { - } - [Fact] - public void Test_6160() - { - } - [Fact] - public void Test_6161() - { - } - [Fact] - public void Test_6162() - { - } - [Fact] - public void Test_6163() - { - } - [Fact] - public void Test_6164() - { - } - [Fact] - public void Test_6165() - { - } - [Fact] - public void Test_6166() - { - } - [Fact] - public void Test_6167() - { - } - [Fact] - public void Test_6168() - { - } - [Fact] - public void Test_6169() - { - } - [Fact] - public void Test_6170() - { - } - [Fact] - public void Test_6171() - { - } - [Fact] - public void Test_6172() - { - } - [Fact] - public void Test_6173() - { - } - [Fact] - public void Test_6174() - { - } - [Fact] - public void Test_6175() - { - } - [Fact] - public void Test_6176() - { - } - [Fact] - public void Test_6177() - { - } - [Fact] - public void Test_6178() - { - } - [Fact] - public void Test_6179() - { - } - [Fact] - public void Test_6180() - { - } - [Fact] - public void Test_6181() - { - } - [Fact] - public void Test_6182() - { - } - [Fact] - public void Test_6183() - { - } - [Fact] - public void Test_6184() - { - } - [Fact] - public void Test_6185() - { - } - [Fact] - public void Test_6186() - { - } - [Fact] - public void Test_6187() - { - } - [Fact] - public void Test_6188() - { - } - [Fact] - public void Test_6189() - { - } - [Fact] - public void Test_6190() - { - } - [Fact] - public void Test_6191() - { - } - [Fact] - public void Test_6192() - { - } - [Fact] - public void Test_6193() - { - } - [Fact] - public void Test_6194() - { - } - [Fact] - public void Test_6195() - { - } - [Fact] - public void Test_6196() - { - } - [Fact] - public void Test_6197() - { - } - [Fact] - public void Test_6198() - { - } - [Fact] - public void Test_6199() - { - } - [Fact] - public void Test_6200() - { - } - [Fact] - public void Test_6201() - { - } - [Fact] - public void Test_6202() - { - } - [Fact] - public void Test_6203() - { - } - [Fact] - public void Test_6204() - { - } - [Fact] - public void Test_6205() - { - } - [Fact] - public void Test_6206() - { - } - [Fact] - public void Test_6207() - { - } - [Fact] - public void Test_6208() - { - } - [Fact] - public void Test_6209() - { - } - [Fact] - public void Test_6210() - { - } - [Fact] - public void Test_6211() - { - } - [Fact] - public void Test_6212() - { - } - [Fact] - public void Test_6213() - { - } - [Fact] - public void Test_6214() - { - } - [Fact] - public void Test_6215() - { - } - [Fact] - public void Test_6216() - { - } - [Fact] - public void Test_6217() - { - } - [Fact] - public void Test_6218() - { - } - [Fact] - public void Test_6219() - { - } - [Fact] - public void Test_6220() - { - } - [Fact] - public void Test_6221() - { - } - [Fact] - public void Test_6222() - { - } - [Fact] - public void Test_6223() - { - } - [Fact] - public void Test_6224() - { - } - [Fact] - public void Test_6225() - { - } - [Fact] - public void Test_6226() - { - } - [Fact] - public void Test_6227() - { - } - [Fact] - public void Test_6228() - { - } - [Fact] - public void Test_6229() - { - } - [Fact] - public void Test_6230() - { - } - [Fact] - public void Test_6231() - { - } - [Fact] - public void Test_6232() - { - } - [Fact] - public void Test_6233() - { - } - [Fact] - public void Test_6234() - { - } - [Fact] - public void Test_6235() - { - } - [Fact] - public void Test_6236() - { - } - [Fact] - public void Test_6237() - { - } - [Fact] - public void Test_6238() - { - } - [Fact] - public void Test_6239() - { - } - [Fact] - public void Test_6240() - { - } - [Fact] - public void Test_6241() - { - } - [Fact] - public void Test_6242() - { - } - [Fact] - public void Test_6243() - { - } - [Fact] - public void Test_6244() - { - } - [Fact] - public void Test_6245() - { - } - [Fact] - public void Test_6246() - { - } - [Fact] - public void Test_6247() - { - } - [Fact] - public void Test_6248() - { - } - [Fact] - public void Test_6249() - { - } - [Fact] - public void Test_6250() - { - } - [Fact] - public void Test_6251() - { - } - [Fact] - public void Test_6252() - { - } - [Fact] - public void Test_6253() - { - } - [Fact] - public void Test_6254() - { - } - [Fact] - public void Test_6255() - { - } - [Fact] - public void Test_6256() - { - } - [Fact] - public void Test_6257() - { - } - [Fact] - public void Test_6258() - { - } - [Fact] - public void Test_6259() - { - } - [Fact] - public void Test_6260() - { - } - [Fact] - public void Test_6261() - { - } - [Fact] - public void Test_6262() - { - } - [Fact] - public void Test_6263() - { - } - [Fact] - public void Test_6264() - { - } - [Fact] - public void Test_6265() - { - } - [Fact] - public void Test_6266() - { - } - [Fact] - public void Test_6267() - { - } - [Fact] - public void Test_6268() - { - } - [Fact] - public void Test_6269() - { - } - [Fact] - public void Test_6270() - { - } - [Fact] - public void Test_6271() - { - } - [Fact] - public void Test_6272() - { - } - [Fact] - public void Test_6273() - { - } - [Fact] - public void Test_6274() - { - } - [Fact] - public void Test_6275() - { - } - [Fact] - public void Test_6276() - { - } - [Fact] - public void Test_6277() - { - } - [Fact] - public void Test_6278() - { - } - [Fact] - public void Test_6279() - { - } - [Fact] - public void Test_6280() - { - } - [Fact] - public void Test_6281() - { - } - [Fact] - public void Test_6282() - { - } - [Fact] - public void Test_6283() - { - } - [Fact] - public void Test_6284() - { - } - [Fact] - public void Test_6285() - { - } - [Fact] - public void Test_6286() - { - } - [Fact] - public void Test_6287() - { - } - [Fact] - public void Test_6288() - { - } - [Fact] - public void Test_6289() - { - } - [Fact] - public void Test_6290() - { - } - [Fact] - public void Test_6291() - { - } - [Fact] - public void Test_6292() - { - } - [Fact] - public void Test_6293() - { - } - [Fact] - public void Test_6294() - { - } - [Fact] - public void Test_6295() - { - } - [Fact] - public void Test_6296() - { - } - [Fact] - public void Test_6297() - { - } - [Fact] - public void Test_6298() - { - } - [Fact] - public void Test_6299() - { - } - [Fact] - public void Test_6300() - { - } - [Fact] - public void Test_6301() - { - } - [Fact] - public void Test_6302() - { - } - [Fact] - public void Test_6303() - { - } - [Fact] - public void Test_6304() - { - } - [Fact] - public void Test_6305() - { - } - [Fact] - public void Test_6306() - { - } - [Fact] - public void Test_6307() - { - } - [Fact] - public void Test_6308() - { - } - [Fact] - public void Test_6309() - { - } - [Fact] - public void Test_6310() - { - } - [Fact] - public void Test_6311() - { - } - [Fact] - public void Test_6312() - { - } - [Fact] - public void Test_6313() - { - } - [Fact] - public void Test_6314() - { - } - [Fact] - public void Test_6315() - { - } - [Fact] - public void Test_6316() - { - } - [Fact] - public void Test_6317() - { - } - [Fact] - public void Test_6318() - { - } - [Fact] - public void Test_6319() - { - } - [Fact] - public void Test_6320() - { - } - [Fact] - public void Test_6321() - { - } - [Fact] - public void Test_6322() - { - } - [Fact] - public void Test_6323() - { - } - [Fact] - public void Test_6324() - { - } - [Fact] - public void Test_6325() - { - } - [Fact] - public void Test_6326() - { - } - [Fact] - public void Test_6327() - { - } - [Fact] - public void Test_6328() - { - } - [Fact] - public void Test_6329() - { - } - [Fact] - public void Test_6330() - { - } - [Fact] - public void Test_6331() - { - } - [Fact] - public void Test_6332() - { - } - [Fact] - public void Test_6333() - { - } - [Fact] - public void Test_6334() - { - } - [Fact] - public void Test_6335() - { - } - [Fact] - public void Test_6336() - { - } - [Fact] - public void Test_6337() - { - } - [Fact] - public void Test_6338() - { - } - [Fact] - public void Test_6339() - { - } - [Fact] - public void Test_6340() - { - } - [Fact] - public void Test_6341() - { - } - [Fact] - public void Test_6342() - { - } - [Fact] - public void Test_6343() - { - } - [Fact] - public void Test_6344() - { - } - [Fact] - public void Test_6345() - { - } - [Fact] - public void Test_6346() - { - } - [Fact] - public void Test_6347() - { - } - [Fact] - public void Test_6348() - { - } - [Fact] - public void Test_6349() - { - } - [Fact] - public void Test_6350() - { - } - [Fact] - public void Test_6351() - { - } - [Fact] - public void Test_6352() - { - } - [Fact] - public void Test_6353() - { - } - [Fact] - public void Test_6354() - { - } - [Fact] - public void Test_6355() - { - } - [Fact] - public void Test_6356() - { - } - [Fact] - public void Test_6357() - { - } - [Fact] - public void Test_6358() - { - } - [Fact] - public void Test_6359() - { - } - [Fact] - public void Test_6360() - { - } - [Fact] - public void Test_6361() - { - } - [Fact] - public void Test_6362() - { - } - [Fact] - public void Test_6363() - { - } - [Fact] - public void Test_6364() - { - } - [Fact] - public void Test_6365() - { - } - [Fact] - public void Test_6366() - { - } - [Fact] - public void Test_6367() - { - } - [Fact] - public void Test_6368() - { - } - [Fact] - public void Test_6369() - { - } - [Fact] - public void Test_6370() - { - } - [Fact] - public void Test_6371() - { - } - [Fact] - public void Test_6372() - { - } - [Fact] - public void Test_6373() - { - } - [Fact] - public void Test_6374() - { - } - [Fact] - public void Test_6375() - { - } - [Fact] - public void Test_6376() - { - } - [Fact] - public void Test_6377() - { - } - [Fact] - public void Test_6378() - { - } - [Fact] - public void Test_6379() - { - } - [Fact] - public void Test_6380() - { - } - [Fact] - public void Test_6381() - { - } - [Fact] - public void Test_6382() - { - } - [Fact] - public void Test_6383() - { - } - [Fact] - public void Test_6384() - { - } - [Fact] - public void Test_6385() - { - } - [Fact] - public void Test_6386() - { - } - [Fact] - public void Test_6387() - { - } - [Fact] - public void Test_6388() - { - } - [Fact] - public void Test_6389() - { - } - [Fact] - public void Test_6390() - { - } - [Fact] - public void Test_6391() - { - } - [Fact] - public void Test_6392() - { - } - [Fact] - public void Test_6393() - { - } - [Fact] - public void Test_6394() - { - } - [Fact] - public void Test_6395() - { - } - [Fact] - public void Test_6396() - { - } - [Fact] - public void Test_6397() - { - } - [Fact] - public void Test_6398() - { - } - [Fact] - public void Test_6399() - { - } - [Fact] - public void Test_6400() - { - } - [Fact] - public void Test_6401() - { - } - [Fact] - public void Test_6402() - { - } - [Fact] - public void Test_6403() - { - } - [Fact] - public void Test_6404() - { - } - [Fact] - public void Test_6405() - { - } - [Fact] - public void Test_6406() - { - } - [Fact] - public void Test_6407() - { - } - [Fact] - public void Test_6408() - { - } - [Fact] - public void Test_6409() - { - } - [Fact] - public void Test_6410() - { - } - [Fact] - public void Test_6411() - { - } - [Fact] - public void Test_6412() - { - } - [Fact] - public void Test_6413() - { - } - [Fact] - public void Test_6414() - { - } - [Fact] - public void Test_6415() - { - } - [Fact] - public void Test_6416() - { - } - [Fact] - public void Test_6417() - { - } - [Fact] - public void Test_6418() - { - } - [Fact] - public void Test_6419() - { - } - [Fact] - public void Test_6420() - { - } - [Fact] - public void Test_6421() - { - } - [Fact] - public void Test_6422() - { - } - [Fact] - public void Test_6423() - { - } - [Fact] - public void Test_6424() - { - } - [Fact] - public void Test_6425() - { - } - [Fact] - public void Test_6426() - { - } - [Fact] - public void Test_6427() - { - } - [Fact] - public void Test_6428() - { - } - [Fact] - public void Test_6429() - { - } - [Fact] - public void Test_6430() - { - } - [Fact] - public void Test_6431() - { - } - [Fact] - public void Test_6432() - { - } - [Fact] - public void Test_6433() - { - } - [Fact] - public void Test_6434() - { - } - [Fact] - public void Test_6435() - { - } - [Fact] - public void Test_6436() - { - } - [Fact] - public void Test_6437() - { - } - [Fact] - public void Test_6438() - { - } - [Fact] - public void Test_6439() - { - } - [Fact] - public void Test_6440() - { - } - [Fact] - public void Test_6441() - { - } - [Fact] - public void Test_6442() - { - } - [Fact] - public void Test_6443() - { - } - [Fact] - public void Test_6444() - { - } - [Fact] - public void Test_6445() - { - } - [Fact] - public void Test_6446() - { - } - [Fact] - public void Test_6447() - { - } - [Fact] - public void Test_6448() - { - } - [Fact] - public void Test_6449() - { - } - [Fact] - public void Test_6450() - { - } - [Fact] - public void Test_6451() - { - } - [Fact] - public void Test_6452() - { - } - [Fact] - public void Test_6453() - { - } - [Fact] - public void Test_6454() - { - } - [Fact] - public void Test_6455() - { - } - [Fact] - public void Test_6456() - { - } - [Fact] - public void Test_6457() - { - } - [Fact] - public void Test_6458() - { - } - [Fact] - public void Test_6459() - { - } - [Fact] - public void Test_6460() - { - } - [Fact] - public void Test_6461() - { - } - [Fact] - public void Test_6462() - { - } - [Fact] - public void Test_6463() - { - } - [Fact] - public void Test_6464() - { - } - [Fact] - public void Test_6465() - { - } - [Fact] - public void Test_6466() - { - } - [Fact] - public void Test_6467() - { - } - [Fact] - public void Test_6468() - { - } - [Fact] - public void Test_6469() - { - } - [Fact] - public void Test_6470() - { - } - [Fact] - public void Test_6471() - { - } - [Fact] - public void Test_6472() - { - } - [Fact] - public void Test_6473() - { - } - [Fact] - public void Test_6474() - { - } - [Fact] - public void Test_6475() - { - } - [Fact] - public void Test_6476() - { - } - [Fact] - public void Test_6477() - { - } - [Fact] - public void Test_6478() - { - } - [Fact] - public void Test_6479() - { - } - [Fact] - public void Test_6480() - { - } - [Fact] - public void Test_6481() - { - } - [Fact] - public void Test_6482() - { - } - [Fact] - public void Test_6483() - { - } - [Fact] - public void Test_6484() - { - } - [Fact] - public void Test_6485() - { - } - [Fact] - public void Test_6486() - { - } - [Fact] - public void Test_6487() - { - } - [Fact] - public void Test_6488() - { - } - [Fact] - public void Test_6489() - { - } - [Fact] - public void Test_6490() - { - } - [Fact] - public void Test_6491() - { - } - [Fact] - public void Test_6492() - { - } - [Fact] - public void Test_6493() - { - } - [Fact] - public void Test_6494() - { - } - [Fact] - public void Test_6495() - { - } - [Fact] - public void Test_6496() - { - } - [Fact] - public void Test_6497() - { - } - [Fact] - public void Test_6498() - { - } - [Fact] - public void Test_6499() - { - } - [Fact] - public void Test_6500() - { - } - [Fact] - public void Test_6501() - { - } - [Fact] - public void Test_6502() - { - } - [Fact] - public void Test_6503() - { - } - [Fact] - public void Test_6504() - { - } - [Fact] - public void Test_6505() - { - } - [Fact] - public void Test_6506() - { - } - [Fact] - public void Test_6507() - { - } - [Fact] - public void Test_6508() - { - } - [Fact] - public void Test_6509() - { - } - [Fact] - public void Test_6510() - { - } - [Fact] - public void Test_6511() - { - } - [Fact] - public void Test_6512() - { - } - [Fact] - public void Test_6513() - { - } - [Fact] - public void Test_6514() - { - } - [Fact] - public void Test_6515() - { - } - [Fact] - public void Test_6516() - { - } - [Fact] - public void Test_6517() - { - } - [Fact] - public void Test_6518() - { - } - [Fact] - public void Test_6519() - { - } - [Fact] - public void Test_6520() - { - } - [Fact] - public void Test_6521() - { - } - [Fact] - public void Test_6522() - { - } - [Fact] - public void Test_6523() - { - } - [Fact] - public void Test_6524() - { - } - [Fact] - public void Test_6525() - { - } - [Fact] - public void Test_6526() - { - } - [Fact] - public void Test_6527() - { - } - [Fact] - public void Test_6528() - { - } - [Fact] - public void Test_6529() - { - } - [Fact] - public void Test_6530() - { - } - [Fact] - public void Test_6531() - { - } - [Fact] - public void Test_6532() - { - } - [Fact] - public void Test_6533() - { - } - [Fact] - public void Test_6534() - { - } - [Fact] - public void Test_6535() - { - } - [Fact] - public void Test_6536() - { - } - [Fact] - public void Test_6537() - { - } - [Fact] - public void Test_6538() - { - } - [Fact] - public void Test_6539() - { - } - [Fact] - public void Test_6540() - { - } - [Fact] - public void Test_6541() - { - } - [Fact] - public void Test_6542() - { - } - [Fact] - public void Test_6543() - { - } - [Fact] - public void Test_6544() - { - } - [Fact] - public void Test_6545() - { - } - [Fact] - public void Test_6546() - { - } - [Fact] - public void Test_6547() - { - } - [Fact] - public void Test_6548() - { - } - [Fact] - public void Test_6549() - { - } - [Fact] - public void Test_6550() - { - } - [Fact] - public void Test_6551() - { - } - [Fact] - public void Test_6552() - { - } - [Fact] - public void Test_6553() - { - } - [Fact] - public void Test_6554() - { - } - [Fact] - public void Test_6555() - { - } - [Fact] - public void Test_6556() - { - } - [Fact] - public void Test_6557() - { - } - [Fact] - public void Test_6558() - { - } - [Fact] - public void Test_6559() - { - } - [Fact] - public void Test_6560() - { - } - [Fact] - public void Test_6561() - { - } - [Fact] - public void Test_6562() - { - } - [Fact] - public void Test_6563() - { - } - [Fact] - public void Test_6564() - { - } - [Fact] - public void Test_6565() - { - } - [Fact] - public void Test_6566() - { - } - [Fact] - public void Test_6567() - { - } - [Fact] - public void Test_6568() - { - } - [Fact] - public void Test_6569() - { - } - [Fact] - public void Test_6570() - { - } - [Fact] - public void Test_6571() - { - } - [Fact] - public void Test_6572() - { - } - [Fact] - public void Test_6573() - { - } - [Fact] - public void Test_6574() - { - } - [Fact] - public void Test_6575() - { - } - [Fact] - public void Test_6576() - { - } - [Fact] - public void Test_6577() - { - } - [Fact] - public void Test_6578() - { - } - [Fact] - public void Test_6579() - { - } - [Fact] - public void Test_6580() - { - } - [Fact] - public void Test_6581() - { - } - [Fact] - public void Test_6582() - { - } - [Fact] - public void Test_6583() - { - } - [Fact] - public void Test_6584() - { - } - [Fact] - public void Test_6585() - { - } - [Fact] - public void Test_6586() - { - } - [Fact] - public void Test_6587() - { - } - [Fact] - public void Test_6588() - { - } - [Fact] - public void Test_6589() - { - } - [Fact] - public void Test_6590() - { - } - [Fact] - public void Test_6591() - { - } - [Fact] - public void Test_6592() - { - } - [Fact] - public void Test_6593() - { - } - [Fact] - public void Test_6594() - { - } - [Fact] - public void Test_6595() - { - } - [Fact] - public void Test_6596() - { - } - [Fact] - public void Test_6597() - { - } - [Fact] - public void Test_6598() - { - } - [Fact] - public void Test_6599() - { - } - [Fact] - public void Test_6600() - { - } - [Fact] - public void Test_6601() - { - } - [Fact] - public void Test_6602() - { - } - [Fact] - public void Test_6603() - { - } - [Fact] - public void Test_6604() - { - } - [Fact] - public void Test_6605() - { - } - [Fact] - public void Test_6606() - { - } - [Fact] - public void Test_6607() - { - } - [Fact] - public void Test_6608() - { - } - [Fact] - public void Test_6609() - { - } - [Fact] - public void Test_6610() - { - } - [Fact] - public void Test_6611() - { - } - [Fact] - public void Test_6612() - { - } - [Fact] - public void Test_6613() - { - } - [Fact] - public void Test_6614() - { - } - [Fact] - public void Test_6615() - { - } - [Fact] - public void Test_6616() - { - } - [Fact] - public void Test_6617() - { - } - [Fact] - public void Test_6618() - { - } - [Fact] - public void Test_6619() - { - } - [Fact] - public void Test_6620() - { - } - [Fact] - public void Test_6621() - { - } - [Fact] - public void Test_6622() - { - } - [Fact] - public void Test_6623() - { - } - [Fact] - public void Test_6624() - { - } - [Fact] - public void Test_6625() - { - } - [Fact] - public void Test_6626() - { - } - [Fact] - public void Test_6627() - { - } - [Fact] - public void Test_6628() - { - } - [Fact] - public void Test_6629() - { - } - [Fact] - public void Test_6630() - { - } - [Fact] - public void Test_6631() - { - } - [Fact] - public void Test_6632() - { - } - [Fact] - public void Test_6633() - { - } - [Fact] - public void Test_6634() - { - } - [Fact] - public void Test_6635() - { - } - [Fact] - public void Test_6636() - { - } - [Fact] - public void Test_6637() - { - } - [Fact] - public void Test_6638() - { - } - [Fact] - public void Test_6639() - { - } - [Fact] - public void Test_6640() - { - } - [Fact] - public void Test_6641() - { - } - [Fact] - public void Test_6642() - { - } - [Fact] - public void Test_6643() - { - } - [Fact] - public void Test_6644() - { - } - [Fact] - public void Test_6645() - { - } - [Fact] - public void Test_6646() - { - } - [Fact] - public void Test_6647() - { - } - [Fact] - public void Test_6648() - { - } - [Fact] - public void Test_6649() - { - } - [Fact] - public void Test_6650() - { - } - [Fact] - public void Test_6651() - { - } - [Fact] - public void Test_6652() - { - } - [Fact] - public void Test_6653() - { - } - [Fact] - public void Test_6654() - { - } - [Fact] - public void Test_6655() - { - } - [Fact] - public void Test_6656() - { - } - [Fact] - public void Test_6657() - { - } - [Fact] - public void Test_6658() - { - } - [Fact] - public void Test_6659() - { - } - [Fact] - public void Test_6660() - { - } - [Fact] - public void Test_6661() - { - } - [Fact] - public void Test_6662() - { - } - [Fact] - public void Test_6663() - { - } - [Fact] - public void Test_6664() - { - } - [Fact] - public void Test_6665() - { - } - [Fact] - public void Test_6666() - { - } - [Fact] - public void Test_6667() - { - } - [Fact] - public void Test_6668() - { - } - [Fact] - public void Test_6669() - { - } - [Fact] - public void Test_6670() - { - } - [Fact] - public void Test_6671() - { - } - [Fact] - public void Test_6672() - { - } - [Fact] - public void Test_6673() - { - } - [Fact] - public void Test_6674() - { - } - [Fact] - public void Test_6675() - { - } - [Fact] - public void Test_6676() - { - } - [Fact] - public void Test_6677() - { - } - [Fact] - public void Test_6678() - { - } - [Fact] - public void Test_6679() - { - } - [Fact] - public void Test_6680() - { - } - [Fact] - public void Test_6681() - { - } - [Fact] - public void Test_6682() - { - } - [Fact] - public void Test_6683() - { - } - [Fact] - public void Test_6684() - { - } - [Fact] - public void Test_6685() - { - } - [Fact] - public void Test_6686() - { - } - [Fact] - public void Test_6687() - { - } - [Fact] - public void Test_6688() - { - } - [Fact] - public void Test_6689() - { - } - [Fact] - public void Test_6690() - { - } - [Fact] - public void Test_6691() - { - } - [Fact] - public void Test_6692() - { - } - [Fact] - public void Test_6693() - { - } - [Fact] - public void Test_6694() - { - } - [Fact] - public void Test_6695() - { - } - [Fact] - public void Test_6696() - { - } - [Fact] - public void Test_6697() - { - } - [Fact] - public void Test_6698() - { - } - [Fact] - public void Test_6699() - { - } - [Fact] - public void Test_6700() - { - } - [Fact] - public void Test_6701() - { - } - [Fact] - public void Test_6702() - { - } - [Fact] - public void Test_6703() - { - } - [Fact] - public void Test_6704() - { - } - [Fact] - public void Test_6705() - { - } - [Fact] - public void Test_6706() - { - } - [Fact] - public void Test_6707() - { - } - [Fact] - public void Test_6708() - { - } - [Fact] - public void Test_6709() - { - } - [Fact] - public void Test_6710() - { - } - [Fact] - public void Test_6711() - { - } - [Fact] - public void Test_6712() - { - } - [Fact] - public void Test_6713() - { - } - [Fact] - public void Test_6714() - { - } - [Fact] - public void Test_6715() - { - } - [Fact] - public void Test_6716() - { - } - [Fact] - public void Test_6717() - { - } - [Fact] - public void Test_6718() - { - } - [Fact] - public void Test_6719() - { - } - [Fact] - public void Test_6720() - { - } - [Fact] - public void Test_6721() - { - } - [Fact] - public void Test_6722() - { - } - [Fact] - public void Test_6723() - { - } - [Fact] - public void Test_6724() - { - } - [Fact] - public void Test_6725() - { - } - [Fact] - public void Test_6726() - { - } - [Fact] - public void Test_6727() - { - } - [Fact] - public void Test_6728() - { - } - [Fact] - public void Test_6729() - { - } - [Fact] - public void Test_6730() - { - } - [Fact] - public void Test_6731() - { - } - [Fact] - public void Test_6732() - { - } - [Fact] - public void Test_6733() - { - } - [Fact] - public void Test_6734() - { - } - [Fact] - public void Test_6735() - { - } - [Fact] - public void Test_6736() - { - } - [Fact] - public void Test_6737() - { - } - [Fact] - public void Test_6738() - { - } - [Fact] - public void Test_6739() - { - } - [Fact] - public void Test_6740() - { - } - [Fact] - public void Test_6741() - { - } - [Fact] - public void Test_6742() - { - } - [Fact] - public void Test_6743() - { - } - [Fact] - public void Test_6744() - { - } - [Fact] - public void Test_6745() - { - } - [Fact] - public void Test_6746() - { - } - [Fact] - public void Test_6747() - { - } - [Fact] - public void Test_6748() - { - } - [Fact] - public void Test_6749() - { - } - [Fact] - public void Test_6750() - { - } - [Fact] - public void Test_6751() - { - } - [Fact] - public void Test_6752() - { - } - [Fact] - public void Test_6753() - { - } - [Fact] - public void Test_6754() - { - } - [Fact] - public void Test_6755() - { - } - [Fact] - public void Test_6756() - { - } - [Fact] - public void Test_6757() - { - } - [Fact] - public void Test_6758() - { - } - [Fact] - public void Test_6759() - { - } - [Fact] - public void Test_6760() - { - } - [Fact] - public void Test_6761() - { - } - [Fact] - public void Test_6762() - { - } - [Fact] - public void Test_6763() - { - } - [Fact] - public void Test_6764() - { - } - [Fact] - public void Test_6765() - { - } - [Fact] - public void Test_6766() - { - } - [Fact] - public void Test_6767() - { - } - [Fact] - public void Test_6768() - { - } - [Fact] - public void Test_6769() - { - } - [Fact] - public void Test_6770() - { - } - [Fact] - public void Test_6771() - { - } - [Fact] - public void Test_6772() - { - } - [Fact] - public void Test_6773() - { - } - [Fact] - public void Test_6774() - { - } - [Fact] - public void Test_6775() - { - } - [Fact] - public void Test_6776() - { - } - [Fact] - public void Test_6777() - { - } - [Fact] - public void Test_6778() - { - } - [Fact] - public void Test_6779() - { - } - [Fact] - public void Test_6780() - { - } - [Fact] - public void Test_6781() - { - } - [Fact] - public void Test_6782() - { - } - [Fact] - public void Test_6783() - { - } - [Fact] - public void Test_6784() - { - } - [Fact] - public void Test_6785() - { - } - [Fact] - public void Test_6786() - { - } - [Fact] - public void Test_6787() - { - } - [Fact] - public void Test_6788() - { - } - [Fact] - public void Test_6789() - { - } - [Fact] - public void Test_6790() - { - } - [Fact] - public void Test_6791() - { - } - [Fact] - public void Test_6792() - { - } - [Fact] - public void Test_6793() - { - } - [Fact] - public void Test_6794() - { - } - [Fact] - public void Test_6795() - { - } - [Fact] - public void Test_6796() - { - } - [Fact] - public void Test_6797() - { - } - [Fact] - public void Test_6798() - { - } - [Fact] - public void Test_6799() - { - } - [Fact] - public void Test_6800() - { - } - [Fact] - public void Test_6801() - { - } - [Fact] - public void Test_6802() - { - } - [Fact] - public void Test_6803() - { - } - [Fact] - public void Test_6804() - { - } - [Fact] - public void Test_6805() - { - } - [Fact] - public void Test_6806() - { - } - [Fact] - public void Test_6807() - { - } - [Fact] - public void Test_6808() - { - } - [Fact] - public void Test_6809() - { - } - [Fact] - public void Test_6810() - { - } - [Fact] - public void Test_6811() - { - } - [Fact] - public void Test_6812() - { - } - [Fact] - public void Test_6813() - { - } - [Fact] - public void Test_6814() - { - } - [Fact] - public void Test_6815() - { - } - [Fact] - public void Test_6816() - { - } - [Fact] - public void Test_6817() - { - } - [Fact] - public void Test_6818() - { - } - [Fact] - public void Test_6819() - { - } - [Fact] - public void Test_6820() - { - } - [Fact] - public void Test_6821() - { - } - [Fact] - public void Test_6822() - { - } - [Fact] - public void Test_6823() - { - } - [Fact] - public void Test_6824() - { - } - [Fact] - public void Test_6825() - { - } - [Fact] - public void Test_6826() - { - } - [Fact] - public void Test_6827() - { - } - [Fact] - public void Test_6828() - { - } - [Fact] - public void Test_6829() - { - } - [Fact] - public void Test_6830() - { - } - [Fact] - public void Test_6831() - { - } - [Fact] - public void Test_6832() - { - } - [Fact] - public void Test_6833() - { - } - [Fact] - public void Test_6834() - { - } - [Fact] - public void Test_6835() - { - } - [Fact] - public void Test_6836() - { - } - [Fact] - public void Test_6837() - { - } - [Fact] - public void Test_6838() - { - } - [Fact] - public void Test_6839() - { - } - [Fact] - public void Test_6840() - { - } - [Fact] - public void Test_6841() - { - } - [Fact] - public void Test_6842() - { - } - [Fact] - public void Test_6843() - { - } - [Fact] - public void Test_6844() - { - } - [Fact] - public void Test_6845() - { - } - [Fact] - public void Test_6846() - { - } - [Fact] - public void Test_6847() - { - } - [Fact] - public void Test_6848() - { - } - [Fact] - public void Test_6849() - { - } - [Fact] - public void Test_6850() - { - } - [Fact] - public void Test_6851() - { - } - [Fact] - public void Test_6852() - { - } - [Fact] - public void Test_6853() - { - } - [Fact] - public void Test_6854() - { - } - [Fact] - public void Test_6855() - { - } - [Fact] - public void Test_6856() - { - } - [Fact] - public void Test_6857() - { - } - [Fact] - public void Test_6858() - { - } - [Fact] - public void Test_6859() - { - } - [Fact] - public void Test_6860() - { - } - [Fact] - public void Test_6861() - { - } - [Fact] - public void Test_6862() - { - } - [Fact] - public void Test_6863() - { - } - [Fact] - public void Test_6864() - { - } - [Fact] - public void Test_6865() - { - } - [Fact] - public void Test_6866() - { - } - [Fact] - public void Test_6867() - { - } - [Fact] - public void Test_6868() - { - } - [Fact] - public void Test_6869() - { - } - [Fact] - public void Test_6870() - { - } - [Fact] - public void Test_6871() - { - } - [Fact] - public void Test_6872() - { - } - [Fact] - public void Test_6873() - { - } - [Fact] - public void Test_6874() - { - } - [Fact] - public void Test_6875() - { - } - [Fact] - public void Test_6876() - { - } - [Fact] - public void Test_6877() - { - } - [Fact] - public void Test_6878() - { - } - [Fact] - public void Test_6879() - { - } - [Fact] - public void Test_6880() - { - } - [Fact] - public void Test_6881() - { - } - [Fact] - public void Test_6882() - { - } - [Fact] - public void Test_6883() - { - } - [Fact] - public void Test_6884() - { - } - [Fact] - public void Test_6885() - { - } - [Fact] - public void Test_6886() - { - } - [Fact] - public void Test_6887() - { - } - [Fact] - public void Test_6888() - { - } - [Fact] - public void Test_6889() - { - } - [Fact] - public void Test_6890() - { - } - [Fact] - public void Test_6891() - { - } - [Fact] - public void Test_6892() - { - } - [Fact] - public void Test_6893() - { - } - [Fact] - public void Test_6894() - { - } - [Fact] - public void Test_6895() - { - } - [Fact] - public void Test_6896() - { - } - [Fact] - public void Test_6897() - { - } - [Fact] - public void Test_6898() - { - } - [Fact] - public void Test_6899() - { - } - [Fact] - public void Test_6900() - { - } - [Fact] - public void Test_6901() - { - } - [Fact] - public void Test_6902() - { - } - [Fact] - public void Test_6903() - { - } - [Fact] - public void Test_6904() - { - } - [Fact] - public void Test_6905() - { - } - [Fact] - public void Test_6906() - { - } - [Fact] - public void Test_6907() - { - } - [Fact] - public void Test_6908() - { - } - [Fact] - public void Test_6909() - { - } - [Fact] - public void Test_6910() - { - } - [Fact] - public void Test_6911() - { - } - [Fact] - public void Test_6912() - { - } - [Fact] - public void Test_6913() - { - } - [Fact] - public void Test_6914() - { - } - [Fact] - public void Test_6915() - { - } - [Fact] - public void Test_6916() - { - } - [Fact] - public void Test_6917() - { - } - [Fact] - public void Test_6918() - { - } - [Fact] - public void Test_6919() - { - } - [Fact] - public void Test_6920() - { - } - [Fact] - public void Test_6921() - { - } - [Fact] - public void Test_6922() - { - } - [Fact] - public void Test_6923() - { - } - [Fact] - public void Test_6924() - { - } - [Fact] - public void Test_6925() - { - } - [Fact] - public void Test_6926() - { - } - [Fact] - public void Test_6927() - { - } - [Fact] - public void Test_6928() - { - } - [Fact] - public void Test_6929() - { - } - [Fact] - public void Test_6930() - { - } - [Fact] - public void Test_6931() - { - } - [Fact] - public void Test_6932() - { - } - [Fact] - public void Test_6933() - { - } - [Fact] - public void Test_6934() - { - } - [Fact] - public void Test_6935() - { - } - [Fact] - public void Test_6936() - { - } - [Fact] - public void Test_6937() - { - } - [Fact] - public void Test_6938() - { - } - [Fact] - public void Test_6939() - { - } - [Fact] - public void Test_6940() - { - } - [Fact] - public void Test_6941() - { - } - [Fact] - public void Test_6942() - { - } - [Fact] - public void Test_6943() - { - } - [Fact] - public void Test_6944() - { - } - [Fact] - public void Test_6945() - { - } - [Fact] - public void Test_6946() - { - } - [Fact] - public void Test_6947() - { - } - [Fact] - public void Test_6948() - { - } - [Fact] - public void Test_6949() - { - } - [Fact] - public void Test_6950() - { - } - [Fact] - public void Test_6951() - { - } - [Fact] - public void Test_6952() - { - } - [Fact] - public void Test_6953() - { - } - [Fact] - public void Test_6954() - { - } - [Fact] - public void Test_6955() - { - } - [Fact] - public void Test_6956() - { - } - [Fact] - public void Test_6957() - { - } - [Fact] - public void Test_6958() - { - } - [Fact] - public void Test_6959() - { - } - [Fact] - public void Test_6960() - { - } - [Fact] - public void Test_6961() - { - } - [Fact] - public void Test_6962() - { - } - [Fact] - public void Test_6963() - { - } - [Fact] - public void Test_6964() - { - } - [Fact] - public void Test_6965() - { - } - [Fact] - public void Test_6966() - { - } - [Fact] - public void Test_6967() - { - } - [Fact] - public void Test_6968() - { - } - [Fact] - public void Test_6969() - { - } - [Fact] - public void Test_6970() - { - } - [Fact] - public void Test_6971() - { - } - [Fact] - public void Test_6972() - { - } - [Fact] - public void Test_6973() - { - } - [Fact] - public void Test_6974() - { - } - [Fact] - public void Test_6975() - { - } - [Fact] - public void Test_6976() - { - } - [Fact] - public void Test_6977() - { - } - [Fact] - public void Test_6978() - { - } - [Fact] - public void Test_6979() - { - } - [Fact] - public void Test_6980() - { - } - [Fact] - public void Test_6981() - { - } - [Fact] - public void Test_6982() - { - } - [Fact] - public void Test_6983() - { - } - [Fact] - public void Test_6984() - { - } - [Fact] - public void Test_6985() - { - } - [Fact] - public void Test_6986() - { - } - [Fact] - public void Test_6987() - { - } - [Fact] - public void Test_6988() - { - } - [Fact] - public void Test_6989() - { - } - [Fact] - public void Test_6990() - { - } - [Fact] - public void Test_6991() - { - } - [Fact] - public void Test_6992() - { - } - [Fact] - public void Test_6993() - { - } - [Fact] - public void Test_6994() - { - } - [Fact] - public void Test_6995() - { - } - [Fact] - public void Test_6996() - { - } - [Fact] - public void Test_6997() - { - } - [Fact] - public void Test_6998() - { - } - [Fact] - public void Test_6999() - { - } - [Fact] - public void Test_7000() - { - } - [Fact] - public void Test_7001() - { - } - [Fact] - public void Test_7002() - { - } - [Fact] - public void Test_7003() - { - } - [Fact] - public void Test_7004() - { - } - [Fact] - public void Test_7005() - { - } - [Fact] - public void Test_7006() - { - } - [Fact] - public void Test_7007() - { - } - [Fact] - public void Test_7008() - { - } - [Fact] - public void Test_7009() - { - } - [Fact] - public void Test_7010() - { - } - [Fact] - public void Test_7011() - { - } - [Fact] - public void Test_7012() - { - } - [Fact] - public void Test_7013() - { - } - [Fact] - public void Test_7014() - { - } - [Fact] - public void Test_7015() - { - } - [Fact] - public void Test_7016() - { - } - [Fact] - public void Test_7017() - { - } - [Fact] - public void Test_7018() - { - } - [Fact] - public void Test_7019() - { - } - [Fact] - public void Test_7020() - { - } - [Fact] - public void Test_7021() - { - } - [Fact] - public void Test_7022() - { - } - [Fact] - public void Test_7023() - { - } - [Fact] - public void Test_7024() - { - } - [Fact] - public void Test_7025() - { - } - [Fact] - public void Test_7026() - { - } - [Fact] - public void Test_7027() - { - } - [Fact] - public void Test_7028() - { - } - [Fact] - public void Test_7029() - { - } - [Fact] - public void Test_7030() - { - } - [Fact] - public void Test_7031() - { - } - [Fact] - public void Test_7032() - { - } - [Fact] - public void Test_7033() - { - } - [Fact] - public void Test_7034() - { - } - [Fact] - public void Test_7035() - { - } - [Fact] - public void Test_7036() - { - } - [Fact] - public void Test_7037() - { - } - [Fact] - public void Test_7038() - { - } - [Fact] - public void Test_7039() - { - } - [Fact] - public void Test_7040() - { - } - [Fact] - public void Test_7041() - { - } - [Fact] - public void Test_7042() - { - } - [Fact] - public void Test_7043() - { - } - [Fact] - public void Test_7044() - { - } - [Fact] - public void Test_7045() - { - } - [Fact] - public void Test_7046() - { - } - [Fact] - public void Test_7047() - { - } - [Fact] - public void Test_7048() - { - } - [Fact] - public void Test_7049() - { - } - [Fact] - public void Test_7050() - { - } - [Fact] - public void Test_7051() - { - } - [Fact] - public void Test_7052() - { - } - [Fact] - public void Test_7053() - { - } - [Fact] - public void Test_7054() - { - } - [Fact] - public void Test_7055() - { - } - [Fact] - public void Test_7056() - { - } - [Fact] - public void Test_7057() - { - } - [Fact] - public void Test_7058() - { - } - [Fact] - public void Test_7059() - { - } - [Fact] - public void Test_7060() - { - } - [Fact] - public void Test_7061() - { - } - [Fact] - public void Test_7062() - { - } - [Fact] - public void Test_7063() - { - } - [Fact] - public void Test_7064() - { - } - [Fact] - public void Test_7065() - { - } - [Fact] - public void Test_7066() - { - } - [Fact] - public void Test_7067() - { - } - [Fact] - public void Test_7068() - { - } - [Fact] - public void Test_7069() - { - } - [Fact] - public void Test_7070() - { - } - [Fact] - public void Test_7071() - { - } - [Fact] - public void Test_7072() - { - } - [Fact] - public void Test_7073() - { - } - [Fact] - public void Test_7074() - { - } - [Fact] - public void Test_7075() - { - } - [Fact] - public void Test_7076() - { - } - [Fact] - public void Test_7077() - { - } - [Fact] - public void Test_7078() - { - } - [Fact] - public void Test_7079() - { - } - [Fact] - public void Test_7080() - { - } - [Fact] - public void Test_7081() - { - } - [Fact] - public void Test_7082() - { - } - [Fact] - public void Test_7083() - { - } - [Fact] - public void Test_7084() - { - } - [Fact] - public void Test_7085() - { - } - [Fact] - public void Test_7086() - { - } - [Fact] - public void Test_7087() - { - } - [Fact] - public void Test_7088() - { - } - [Fact] - public void Test_7089() - { - } - [Fact] - public void Test_7090() - { - } - [Fact] - public void Test_7091() - { - } - [Fact] - public void Test_7092() - { - } - [Fact] - public void Test_7093() - { - } - [Fact] - public void Test_7094() - { - } - [Fact] - public void Test_7095() - { - } - [Fact] - public void Test_7096() - { - } - [Fact] - public void Test_7097() - { - } - [Fact] - public void Test_7098() - { - } - [Fact] - public void Test_7099() - { - } - [Fact] - public void Test_7100() - { - } - [Fact] - public void Test_7101() - { - } - [Fact] - public void Test_7102() - { - } - [Fact] - public void Test_7103() - { - } - [Fact] - public void Test_7104() - { - } - [Fact] - public void Test_7105() - { - } - [Fact] - public void Test_7106() - { - } - [Fact] - public void Test_7107() - { - } - [Fact] - public void Test_7108() - { - } - [Fact] - public void Test_7109() - { - } - [Fact] - public void Test_7110() - { - } - [Fact] - public void Test_7111() - { - } - [Fact] - public void Test_7112() - { - } - [Fact] - public void Test_7113() - { - } - [Fact] - public void Test_7114() - { - } - [Fact] - public void Test_7115() - { - } - [Fact] - public void Test_7116() - { - } - [Fact] - public void Test_7117() - { - } - [Fact] - public void Test_7118() - { - } - [Fact] - public void Test_7119() - { - } - [Fact] - public void Test_7120() - { - } - [Fact] - public void Test_7121() - { - } - [Fact] - public void Test_7122() - { - } - [Fact] - public void Test_7123() - { - } - [Fact] - public void Test_7124() - { - } - [Fact] - public void Test_7125() - { - } - [Fact] - public void Test_7126() - { - } - [Fact] - public void Test_7127() - { - } - [Fact] - public void Test_7128() - { - } - [Fact] - public void Test_7129() - { - } - [Fact] - public void Test_7130() - { - } - [Fact] - public void Test_7131() - { - } - [Fact] - public void Test_7132() - { - } - [Fact] - public void Test_7133() - { - } - [Fact] - public void Test_7134() - { - } - [Fact] - public void Test_7135() - { - } - [Fact] - public void Test_7136() - { - } - [Fact] - public void Test_7137() - { - } - [Fact] - public void Test_7138() - { - } - [Fact] - public void Test_7139() - { - } - [Fact] - public void Test_7140() - { - } - [Fact] - public void Test_7141() - { - } - [Fact] - public void Test_7142() - { - } - [Fact] - public void Test_7143() - { - } - [Fact] - public void Test_7144() - { - } - [Fact] - public void Test_7145() - { - } - [Fact] - public void Test_7146() - { - } - [Fact] - public void Test_7147() - { - } - [Fact] - public void Test_7148() - { - } - [Fact] - public void Test_7149() - { - } - [Fact] - public void Test_7150() - { - } - [Fact] - public void Test_7151() - { - } - [Fact] - public void Test_7152() - { - } - [Fact] - public void Test_7153() - { - } - [Fact] - public void Test_7154() - { - } - [Fact] - public void Test_7155() - { - } - [Fact] - public void Test_7156() - { - } - [Fact] - public void Test_7157() - { - } - [Fact] - public void Test_7158() - { - } - [Fact] - public void Test_7159() - { - } - [Fact] - public void Test_7160() - { - } - [Fact] - public void Test_7161() - { - } - [Fact] - public void Test_7162() - { - } - [Fact] - public void Test_7163() - { - } - [Fact] - public void Test_7164() - { - } - [Fact] - public void Test_7165() - { - } - [Fact] - public void Test_7166() - { - } - [Fact] - public void Test_7167() - { - } - [Fact] - public void Test_7168() - { - } - [Fact] - public void Test_7169() - { - } - [Fact] - public void Test_7170() - { - } - [Fact] - public void Test_7171() - { - } - [Fact] - public void Test_7172() - { - } - [Fact] - public void Test_7173() - { - } - [Fact] - public void Test_7174() - { - } - [Fact] - public void Test_7175() - { - } - [Fact] - public void Test_7176() - { - } - [Fact] - public void Test_7177() - { - } - [Fact] - public void Test_7178() - { - } - [Fact] - public void Test_7179() - { - } - [Fact] - public void Test_7180() - { - } - [Fact] - public void Test_7181() - { - } - [Fact] - public void Test_7182() - { - } - [Fact] - public void Test_7183() - { - } - [Fact] - public void Test_7184() - { - } - [Fact] - public void Test_7185() - { - } - [Fact] - public void Test_7186() - { - } - [Fact] - public void Test_7187() - { - } - [Fact] - public void Test_7188() - { - } - [Fact] - public void Test_7189() - { - } - [Fact] - public void Test_7190() - { - } - [Fact] - public void Test_7191() - { - } - [Fact] - public void Test_7192() - { - } - [Fact] - public void Test_7193() - { - } - [Fact] - public void Test_7194() - { - } - [Fact] - public void Test_7195() - { - } - [Fact] - public void Test_7196() - { - } - [Fact] - public void Test_7197() - { - } - [Fact] - public void Test_7198() - { - } - [Fact] - public void Test_7199() - { - } - [Fact] - public void Test_7200() - { - } - [Fact] - public void Test_7201() - { - } - [Fact] - public void Test_7202() - { - } - [Fact] - public void Test_7203() - { - } - [Fact] - public void Test_7204() - { - } - [Fact] - public void Test_7205() - { - } - [Fact] - public void Test_7206() - { - } - [Fact] - public void Test_7207() - { - } - [Fact] - public void Test_7208() - { - } - [Fact] - public void Test_7209() - { - } - [Fact] - public void Test_7210() - { - } - [Fact] - public void Test_7211() - { - } - [Fact] - public void Test_7212() - { - } - [Fact] - public void Test_7213() - { - } - [Fact] - public void Test_7214() - { - } - [Fact] - public void Test_7215() - { - } - [Fact] - public void Test_7216() - { - } - [Fact] - public void Test_7217() - { - } - [Fact] - public void Test_7218() - { - } - [Fact] - public void Test_7219() - { - } - [Fact] - public void Test_7220() - { - } - [Fact] - public void Test_7221() - { - } - [Fact] - public void Test_7222() - { - } - [Fact] - public void Test_7223() - { - } - [Fact] - public void Test_7224() - { - } - [Fact] - public void Test_7225() - { - } - [Fact] - public void Test_7226() - { - } - [Fact] - public void Test_7227() - { - } - [Fact] - public void Test_7228() - { - } - [Fact] - public void Test_7229() - { - } - [Fact] - public void Test_7230() - { - } - [Fact] - public void Test_7231() - { - } - [Fact] - public void Test_7232() - { - } - [Fact] - public void Test_7233() - { - } - [Fact] - public void Test_7234() - { - } - [Fact] - public void Test_7235() - { - } - [Fact] - public void Test_7236() - { - } - [Fact] - public void Test_7237() - { - } - [Fact] - public void Test_7238() - { - } - [Fact] - public void Test_7239() - { - } - [Fact] - public void Test_7240() - { - } - [Fact] - public void Test_7241() - { - } - [Fact] - public void Test_7242() - { - } - [Fact] - public void Test_7243() - { - } - [Fact] - public void Test_7244() - { - } - [Fact] - public void Test_7245() - { - } - [Fact] - public void Test_7246() - { - } - [Fact] - public void Test_7247() - { - } - [Fact] - public void Test_7248() - { - } - [Fact] - public void Test_7249() - { - } - [Fact] - public void Test_7250() - { - } - [Fact] - public void Test_7251() - { - } - [Fact] - public void Test_7252() - { - } - [Fact] - public void Test_7253() - { - } - [Fact] - public void Test_7254() - { - } - [Fact] - public void Test_7255() - { - } - [Fact] - public void Test_7256() - { - } - [Fact] - public void Test_7257() - { - } - [Fact] - public void Test_7258() - { - } - [Fact] - public void Test_7259() - { - } - [Fact] - public void Test_7260() - { - } - [Fact] - public void Test_7261() - { - } - [Fact] - public void Test_7262() - { - } - [Fact] - public void Test_7263() - { - } - [Fact] - public void Test_7264() - { - } - [Fact] - public void Test_7265() - { - } - [Fact] - public void Test_7266() - { - } - [Fact] - public void Test_7267() - { - } - [Fact] - public void Test_7268() - { - } - [Fact] - public void Test_7269() - { - } - [Fact] - public void Test_7270() - { - } - [Fact] - public void Test_7271() - { - } - [Fact] - public void Test_7272() - { - } - [Fact] - public void Test_7273() - { - } - [Fact] - public void Test_7274() - { - } - [Fact] - public void Test_7275() - { - } - [Fact] - public void Test_7276() - { - } - [Fact] - public void Test_7277() - { - } - [Fact] - public void Test_7278() - { - } - [Fact] - public void Test_7279() - { - } - [Fact] - public void Test_7280() - { - } - [Fact] - public void Test_7281() - { - } - [Fact] - public void Test_7282() - { - } - [Fact] - public void Test_7283() - { - } - [Fact] - public void Test_7284() - { - } - [Fact] - public void Test_7285() - { - } - [Fact] - public void Test_7286() - { - } - [Fact] - public void Test_7287() - { - } - [Fact] - public void Test_7288() - { - } - [Fact] - public void Test_7289() - { - } - [Fact] - public void Test_7290() - { - } - [Fact] - public void Test_7291() - { - } - [Fact] - public void Test_7292() - { - } - [Fact] - public void Test_7293() - { - } - [Fact] - public void Test_7294() - { - } - [Fact] - public void Test_7295() - { - } - [Fact] - public void Test_7296() - { - } - [Fact] - public void Test_7297() - { - } - [Fact] - public void Test_7298() - { - } - [Fact] - public void Test_7299() - { - } - [Fact] - public void Test_7300() - { - } - [Fact] - public void Test_7301() - { - } - [Fact] - public void Test_7302() - { - } - [Fact] - public void Test_7303() - { - } - [Fact] - public void Test_7304() - { - } - [Fact] - public void Test_7305() - { - } - [Fact] - public void Test_7306() - { - } - [Fact] - public void Test_7307() - { - } - [Fact] - public void Test_7308() - { - } - [Fact] - public void Test_7309() - { - } - [Fact] - public void Test_7310() - { - } - [Fact] - public void Test_7311() - { - } - [Fact] - public void Test_7312() - { - } - [Fact] - public void Test_7313() - { - } - [Fact] - public void Test_7314() - { - } - [Fact] - public void Test_7315() - { - } - [Fact] - public void Test_7316() - { - } - [Fact] - public void Test_7317() - { - } - [Fact] - public void Test_7318() - { - } - [Fact] - public void Test_7319() - { - } - [Fact] - public void Test_7320() - { - } - [Fact] - public void Test_7321() - { - } - [Fact] - public void Test_7322() - { - } - [Fact] - public void Test_7323() - { - } - [Fact] - public void Test_7324() - { - } - [Fact] - public void Test_7325() - { - } - [Fact] - public void Test_7326() - { - } - [Fact] - public void Test_7327() - { - } - [Fact] - public void Test_7328() - { - } - [Fact] - public void Test_7329() - { - } - [Fact] - public void Test_7330() - { - } - [Fact] - public void Test_7331() - { - } - [Fact] - public void Test_7332() - { - } - [Fact] - public void Test_7333() - { - } - [Fact] - public void Test_7334() - { - } - [Fact] - public void Test_7335() - { - } - [Fact] - public void Test_7336() - { - } - [Fact] - public void Test_7337() - { - } - [Fact] - public void Test_7338() - { - } - [Fact] - public void Test_7339() - { - } - [Fact] - public void Test_7340() - { - } - [Fact] - public void Test_7341() - { - } - [Fact] - public void Test_7342() - { - } - [Fact] - public void Test_7343() - { - } - [Fact] - public void Test_7344() - { - } - [Fact] - public void Test_7345() - { - } - [Fact] - public void Test_7346() - { - } - [Fact] - public void Test_7347() - { - } - [Fact] - public void Test_7348() - { - } - [Fact] - public void Test_7349() - { - } - [Fact] - public void Test_7350() - { - } - [Fact] - public void Test_7351() - { - } - [Fact] - public void Test_7352() - { - } - [Fact] - public void Test_7353() - { - } - [Fact] - public void Test_7354() - { - } - [Fact] - public void Test_7355() - { - } - [Fact] - public void Test_7356() - { - } - [Fact] - public void Test_7357() - { - } - [Fact] - public void Test_7358() - { - } - [Fact] - public void Test_7359() - { - } - [Fact] - public void Test_7360() - { - } - [Fact] - public void Test_7361() - { - } - [Fact] - public void Test_7362() - { - } - [Fact] - public void Test_7363() - { - } - [Fact] - public void Test_7364() - { - } - [Fact] - public void Test_7365() - { - } - [Fact] - public void Test_7366() - { - } - [Fact] - public void Test_7367() - { - } - [Fact] - public void Test_7368() - { - } - [Fact] - public void Test_7369() - { - } - [Fact] - public void Test_7370() - { - } - [Fact] - public void Test_7371() - { - } - [Fact] - public void Test_7372() - { - } - [Fact] - public void Test_7373() - { - } - [Fact] - public void Test_7374() - { - } - [Fact] - public void Test_7375() - { - } - [Fact] - public void Test_7376() - { - } - [Fact] - public void Test_7377() - { - } - [Fact] - public void Test_7378() - { - } - [Fact] - public void Test_7379() - { - } - [Fact] - public void Test_7380() - { - } - [Fact] - public void Test_7381() - { - } - [Fact] - public void Test_7382() - { - } - [Fact] - public void Test_7383() - { - } - [Fact] - public void Test_7384() - { - } - [Fact] - public void Test_7385() - { - } - [Fact] - public void Test_7386() - { - } - [Fact] - public void Test_7387() - { - } - [Fact] - public void Test_7388() - { - } - [Fact] - public void Test_7389() - { - } - [Fact] - public void Test_7390() - { - } - [Fact] - public void Test_7391() - { - } - [Fact] - public void Test_7392() - { - } - [Fact] - public void Test_7393() - { - } - [Fact] - public void Test_7394() - { - } - [Fact] - public void Test_7395() - { - } - [Fact] - public void Test_7396() - { - } - [Fact] - public void Test_7397() - { - } - [Fact] - public void Test_7398() - { - } - [Fact] - public void Test_7399() - { - } - [Fact] - public void Test_7400() - { - } - [Fact] - public void Test_7401() - { - } - [Fact] - public void Test_7402() - { - } - [Fact] - public void Test_7403() - { - } - [Fact] - public void Test_7404() - { - } - [Fact] - public void Test_7405() - { - } - [Fact] - public void Test_7406() - { - } - [Fact] - public void Test_7407() - { - } - [Fact] - public void Test_7408() - { - } - [Fact] - public void Test_7409() - { - } - [Fact] - public void Test_7410() - { - } - [Fact] - public void Test_7411() - { - } - [Fact] - public void Test_7412() - { - } - [Fact] - public void Test_7413() - { - } - [Fact] - public void Test_7414() - { - } - [Fact] - public void Test_7415() - { - } - [Fact] - public void Test_7416() - { - } - [Fact] - public void Test_7417() - { - } - [Fact] - public void Test_7418() - { - } - [Fact] - public void Test_7419() - { - } - [Fact] - public void Test_7420() - { - } - [Fact] - public void Test_7421() - { - } - [Fact] - public void Test_7422() - { - } - [Fact] - public void Test_7423() - { - } - [Fact] - public void Test_7424() - { - } - [Fact] - public void Test_7425() - { - } - [Fact] - public void Test_7426() - { - } - [Fact] - public void Test_7427() - { - } - [Fact] - public void Test_7428() - { - } - [Fact] - public void Test_7429() - { - } - [Fact] - public void Test_7430() - { - } - [Fact] - public void Test_7431() - { - } - [Fact] - public void Test_7432() - { - } - [Fact] - public void Test_7433() - { - } - [Fact] - public void Test_7434() - { - } - [Fact] - public void Test_7435() - { - } - [Fact] - public void Test_7436() - { - } - [Fact] - public void Test_7437() - { - } - [Fact] - public void Test_7438() - { - } - [Fact] - public void Test_7439() - { - } - [Fact] - public void Test_7440() - { - } - [Fact] - public void Test_7441() - { - } - [Fact] - public void Test_7442() - { - } - [Fact] - public void Test_7443() - { - } - [Fact] - public void Test_7444() - { - } - [Fact] - public void Test_7445() - { - } - [Fact] - public void Test_7446() - { - } - [Fact] - public void Test_7447() - { - } - [Fact] - public void Test_7448() - { - } - [Fact] - public void Test_7449() - { - } - [Fact] - public void Test_7450() - { - } - [Fact] - public void Test_7451() - { - } - [Fact] - public void Test_7452() - { - } - [Fact] - public void Test_7453() - { - } - [Fact] - public void Test_7454() - { - } - [Fact] - public void Test_7455() - { - } - [Fact] - public void Test_7456() - { - } - [Fact] - public void Test_7457() - { - } - [Fact] - public void Test_7458() - { - } - [Fact] - public void Test_7459() - { - } - [Fact] - public void Test_7460() - { - } - [Fact] - public void Test_7461() - { - } - [Fact] - public void Test_7462() - { - } - [Fact] - public void Test_7463() - { - } - [Fact] - public void Test_7464() - { - } - [Fact] - public void Test_7465() - { - } - [Fact] - public void Test_7466() - { - } - [Fact] - public void Test_7467() - { - } - [Fact] - public void Test_7468() - { - } - [Fact] - public void Test_7469() - { - } - [Fact] - public void Test_7470() - { - } - [Fact] - public void Test_7471() - { - } - [Fact] - public void Test_7472() - { - } - [Fact] - public void Test_7473() - { - } - [Fact] - public void Test_7474() - { - } - [Fact] - public void Test_7475() - { - } - [Fact] - public void Test_7476() - { - } - [Fact] - public void Test_7477() - { - } - [Fact] - public void Test_7478() - { - } - [Fact] - public void Test_7479() - { - } - [Fact] - public void Test_7480() - { - } - [Fact] - public void Test_7481() - { - } - [Fact] - public void Test_7482() - { - } - [Fact] - public void Test_7483() - { - } - [Fact] - public void Test_7484() - { - } - [Fact] - public void Test_7485() - { - } - [Fact] - public void Test_7486() - { - } - [Fact] - public void Test_7487() - { - } - [Fact] - public void Test_7488() - { - } - [Fact] - public void Test_7489() - { - } - [Fact] - public void Test_7490() - { - } - [Fact] - public void Test_7491() - { - } - [Fact] - public void Test_7492() - { - } - [Fact] - public void Test_7493() - { - } - [Fact] - public void Test_7494() - { - } - [Fact] - public void Test_7495() - { - } - [Fact] - public void Test_7496() - { - } - [Fact] - public void Test_7497() - { - } - [Fact] - public void Test_7498() - { - } - [Fact] - public void Test_7499() - { - } - [Fact] - public void Test_7500() - { - } - [Fact] - public void Test_7501() - { - } - [Fact] - public void Test_7502() - { - } - [Fact] - public void Test_7503() - { - } - [Fact] - public void Test_7504() - { - } - [Fact] - public void Test_7505() - { - } - [Fact] - public void Test_7506() - { - } - [Fact] - public void Test_7507() - { - } - [Fact] - public void Test_7508() - { - } - [Fact] - public void Test_7509() - { - } - [Fact] - public void Test_7510() - { - } - [Fact] - public void Test_7511() - { - } - [Fact] - public void Test_7512() - { - } - [Fact] - public void Test_7513() - { - } - [Fact] - public void Test_7514() - { - } - [Fact] - public void Test_7515() - { - } - [Fact] - public void Test_7516() - { - } - [Fact] - public void Test_7517() - { - } - [Fact] - public void Test_7518() - { - } - [Fact] - public void Test_7519() - { - } - [Fact] - public void Test_7520() - { - } - [Fact] - public void Test_7521() - { - } - [Fact] - public void Test_7522() - { - } - [Fact] - public void Test_7523() - { - } - [Fact] - public void Test_7524() - { - } - [Fact] - public void Test_7525() - { - } - [Fact] - public void Test_7526() - { - } - [Fact] - public void Test_7527() - { - } - [Fact] - public void Test_7528() - { - } - [Fact] - public void Test_7529() - { - } - [Fact] - public void Test_7530() - { - } - [Fact] - public void Test_7531() - { - } - [Fact] - public void Test_7532() - { - } - [Fact] - public void Test_7533() - { - } - [Fact] - public void Test_7534() - { - } - [Fact] - public void Test_7535() - { - } - [Fact] - public void Test_7536() - { - } - [Fact] - public void Test_7537() - { - } - [Fact] - public void Test_7538() - { - } - [Fact] - public void Test_7539() - { - } - [Fact] - public void Test_7540() - { - } - [Fact] - public void Test_7541() - { - } - [Fact] - public void Test_7542() - { - } - [Fact] - public void Test_7543() - { - } - [Fact] - public void Test_7544() - { - } - [Fact] - public void Test_7545() - { - } - [Fact] - public void Test_7546() - { - } - [Fact] - public void Test_7547() - { - } - [Fact] - public void Test_7548() - { - } - [Fact] - public void Test_7549() - { - } - [Fact] - public void Test_7550() - { - } - [Fact] - public void Test_7551() - { - } - [Fact] - public void Test_7552() - { - } - [Fact] - public void Test_7553() - { - } - [Fact] - public void Test_7554() - { - } - [Fact] - public void Test_7555() - { - } - [Fact] - public void Test_7556() - { - } - [Fact] - public void Test_7557() - { - } - [Fact] - public void Test_7558() - { - } - [Fact] - public void Test_7559() - { - } - [Fact] - public void Test_7560() - { - } - [Fact] - public void Test_7561() - { - } - [Fact] - public void Test_7562() - { - } - [Fact] - public void Test_7563() - { - } - [Fact] - public void Test_7564() - { - } - [Fact] - public void Test_7565() - { - } - [Fact] - public void Test_7566() - { - } - [Fact] - public void Test_7567() - { - } - [Fact] - public void Test_7568() - { - } - [Fact] - public void Test_7569() - { - } - [Fact] - public void Test_7570() - { - } - [Fact] - public void Test_7571() - { - } - [Fact] - public void Test_7572() - { - } - [Fact] - public void Test_7573() - { - } - [Fact] - public void Test_7574() - { - } - [Fact] - public void Test_7575() - { - } - [Fact] - public void Test_7576() - { - } - [Fact] - public void Test_7577() - { - } - [Fact] - public void Test_7578() - { - } - [Fact] - public void Test_7579() - { - } - [Fact] - public void Test_7580() - { - } - [Fact] - public void Test_7581() - { - } - [Fact] - public void Test_7582() - { - } - [Fact] - public void Test_7583() - { - } - [Fact] - public void Test_7584() - { - } - [Fact] - public void Test_7585() - { - } - [Fact] - public void Test_7586() - { - } - [Fact] - public void Test_7587() - { - } - [Fact] - public void Test_7588() - { - } - [Fact] - public void Test_7589() - { - } - [Fact] - public void Test_7590() - { - } - [Fact] - public void Test_7591() - { - } - [Fact] - public void Test_7592() - { - } - [Fact] - public void Test_7593() - { - } - [Fact] - public void Test_7594() - { - } - [Fact] - public void Test_7595() - { - } - [Fact] - public void Test_7596() - { - } - [Fact] - public void Test_7597() - { - } - [Fact] - public void Test_7598() - { - } - [Fact] - public void Test_7599() - { - } - [Fact] - public void Test_7600() - { - } - [Fact] - public void Test_7601() - { - } - [Fact] - public void Test_7602() - { - } - [Fact] - public void Test_7603() - { - } - [Fact] - public void Test_7604() - { - } - [Fact] - public void Test_7605() - { - } - [Fact] - public void Test_7606() - { - } - [Fact] - public void Test_7607() - { - } - [Fact] - public void Test_7608() - { - } - [Fact] - public void Test_7609() - { - } - [Fact] - public void Test_7610() - { - } - [Fact] - public void Test_7611() - { - } - [Fact] - public void Test_7612() - { - } - [Fact] - public void Test_7613() - { - } - [Fact] - public void Test_7614() - { - } - [Fact] - public void Test_7615() - { - } - [Fact] - public void Test_7616() - { - } - [Fact] - public void Test_7617() - { - } - [Fact] - public void Test_7618() - { - } - [Fact] - public void Test_7619() - { - } - [Fact] - public void Test_7620() - { - } - [Fact] - public void Test_7621() - { - } - [Fact] - public void Test_7622() - { - } - [Fact] - public void Test_7623() - { - } - [Fact] - public void Test_7624() - { - } - [Fact] - public void Test_7625() - { - } - [Fact] - public void Test_7626() - { - } - [Fact] - public void Test_7627() - { - } - [Fact] - public void Test_7628() - { - } - [Fact] - public void Test_7629() - { - } - [Fact] - public void Test_7630() - { - } - [Fact] - public void Test_7631() - { - } - [Fact] - public void Test_7632() - { - } - [Fact] - public void Test_7633() - { - } - [Fact] - public void Test_7634() - { - } - [Fact] - public void Test_7635() - { - } - [Fact] - public void Test_7636() - { - } - [Fact] - public void Test_7637() - { - } - [Fact] - public void Test_7638() - { - } - [Fact] - public void Test_7639() - { - } - [Fact] - public void Test_7640() - { - } - [Fact] - public void Test_7641() - { - } - [Fact] - public void Test_7642() - { - } - [Fact] - public void Test_7643() - { - } - [Fact] - public void Test_7644() - { - } - [Fact] - public void Test_7645() - { - } - [Fact] - public void Test_7646() - { - } - [Fact] - public void Test_7647() - { - } - [Fact] - public void Test_7648() - { - } - [Fact] - public void Test_7649() - { - } - [Fact] - public void Test_7650() - { - } - [Fact] - public void Test_7651() - { - } - [Fact] - public void Test_7652() - { - } - [Fact] - public void Test_7653() - { - } - [Fact] - public void Test_7654() - { - } - [Fact] - public void Test_7655() - { - } - [Fact] - public void Test_7656() - { - } - [Fact] - public void Test_7657() - { - } - [Fact] - public void Test_7658() - { - } - [Fact] - public void Test_7659() - { - } - [Fact] - public void Test_7660() - { - } - [Fact] - public void Test_7661() - { - } - [Fact] - public void Test_7662() - { - } - [Fact] - public void Test_7663() - { - } - [Fact] - public void Test_7664() - { - } - [Fact] - public void Test_7665() - { - } - [Fact] - public void Test_7666() - { - } - [Fact] - public void Test_7667() - { - } - [Fact] - public void Test_7668() - { - } - [Fact] - public void Test_7669() - { - } - [Fact] - public void Test_7670() - { - } - [Fact] - public void Test_7671() - { - } - [Fact] - public void Test_7672() - { - } - [Fact] - public void Test_7673() - { - } - [Fact] - public void Test_7674() - { - } - [Fact] - public void Test_7675() - { - } - [Fact] - public void Test_7676() - { - } - [Fact] - public void Test_7677() - { - } - [Fact] - public void Test_7678() - { - } - [Fact] - public void Test_7679() - { - } - [Fact] - public void Test_7680() - { - } - [Fact] - public void Test_7681() - { - } - [Fact] - public void Test_7682() - { - } - [Fact] - public void Test_7683() - { - } - [Fact] - public void Test_7684() - { - } - [Fact] - public void Test_7685() - { - } - [Fact] - public void Test_7686() - { - } - [Fact] - public void Test_7687() - { - } - [Fact] - public void Test_7688() - { - } - [Fact] - public void Test_7689() - { - } - [Fact] - public void Test_7690() - { - } - [Fact] - public void Test_7691() - { - } - [Fact] - public void Test_7692() - { - } - [Fact] - public void Test_7693() - { - } - [Fact] - public void Test_7694() - { - } - [Fact] - public void Test_7695() - { - } - [Fact] - public void Test_7696() - { - } - [Fact] - public void Test_7697() - { - } - [Fact] - public void Test_7698() - { - } - [Fact] - public void Test_7699() - { - } - [Fact] - public void Test_7700() - { - } - [Fact] - public void Test_7701() - { - } - [Fact] - public void Test_7702() - { - } - [Fact] - public void Test_7703() - { - } - [Fact] - public void Test_7704() - { - } - [Fact] - public void Test_7705() - { - } - [Fact] - public void Test_7706() - { - } - [Fact] - public void Test_7707() - { - } - [Fact] - public void Test_7708() - { - } - [Fact] - public void Test_7709() - { - } - [Fact] - public void Test_7710() - { - } - [Fact] - public void Test_7711() - { - } - [Fact] - public void Test_7712() - { - } - [Fact] - public void Test_7713() - { - } - [Fact] - public void Test_7714() - { - } - [Fact] - public void Test_7715() - { - } - [Fact] - public void Test_7716() - { - } - [Fact] - public void Test_7717() - { - } - [Fact] - public void Test_7718() - { - } - [Fact] - public void Test_7719() - { - } - [Fact] - public void Test_7720() - { - } - [Fact] - public void Test_7721() - { - } - [Fact] - public void Test_7722() - { - } - [Fact] - public void Test_7723() - { - } - [Fact] - public void Test_7724() - { - } - [Fact] - public void Test_7725() - { - } - [Fact] - public void Test_7726() - { - } - [Fact] - public void Test_7727() - { - } - [Fact] - public void Test_7728() - { - } - [Fact] - public void Test_7729() - { - } - [Fact] - public void Test_7730() - { - } - [Fact] - public void Test_7731() - { - } - [Fact] - public void Test_7732() - { - } - [Fact] - public void Test_7733() - { - } - [Fact] - public void Test_7734() - { - } - [Fact] - public void Test_7735() - { - } - [Fact] - public void Test_7736() - { - } - [Fact] - public void Test_7737() - { - } - [Fact] - public void Test_7738() - { - } - [Fact] - public void Test_7739() - { - } - [Fact] - public void Test_7740() - { - } - [Fact] - public void Test_7741() - { - } - [Fact] - public void Test_7742() - { - } - [Fact] - public void Test_7743() - { - } - [Fact] - public void Test_7744() - { - } - [Fact] - public void Test_7745() - { - } - [Fact] - public void Test_7746() - { - } - [Fact] - public void Test_7747() - { - } - [Fact] - public void Test_7748() - { - } - [Fact] - public void Test_7749() - { - } - [Fact] - public void Test_7750() - { - } - [Fact] - public void Test_7751() - { - } - [Fact] - public void Test_7752() - { - } - [Fact] - public void Test_7753() - { - } - [Fact] - public void Test_7754() - { - } - [Fact] - public void Test_7755() - { - } - [Fact] - public void Test_7756() - { - } - [Fact] - public void Test_7757() - { - } - [Fact] - public void Test_7758() - { - } - [Fact] - public void Test_7759() - { - } - [Fact] - public void Test_7760() - { - } - [Fact] - public void Test_7761() - { - } - [Fact] - public void Test_7762() - { - } - [Fact] - public void Test_7763() - { - } - [Fact] - public void Test_7764() - { - } - [Fact] - public void Test_7765() - { - } - [Fact] - public void Test_7766() - { - } - [Fact] - public void Test_7767() - { - } - [Fact] - public void Test_7768() - { - } - [Fact] - public void Test_7769() - { - } - [Fact] - public void Test_7770() - { - } - [Fact] - public void Test_7771() - { - } - [Fact] - public void Test_7772() - { - } - [Fact] - public void Test_7773() - { - } - [Fact] - public void Test_7774() - { - } - [Fact] - public void Test_7775() - { - } - [Fact] - public void Test_7776() - { - } - [Fact] - public void Test_7777() - { - } - [Fact] - public void Test_7778() - { - } - [Fact] - public void Test_7779() - { - } - [Fact] - public void Test_7780() - { - } - [Fact] - public void Test_7781() - { - } - [Fact] - public void Test_7782() - { - } - [Fact] - public void Test_7783() - { - } - [Fact] - public void Test_7784() - { - } - [Fact] - public void Test_7785() - { - } - [Fact] - public void Test_7786() - { - } - [Fact] - public void Test_7787() - { - } - [Fact] - public void Test_7788() - { - } - [Fact] - public void Test_7789() - { - } - [Fact] - public void Test_7790() - { - } - [Fact] - public void Test_7791() - { - } - [Fact] - public void Test_7792() - { - } - [Fact] - public void Test_7793() - { - } - [Fact] - public void Test_7794() - { - } - [Fact] - public void Test_7795() - { - } - [Fact] - public void Test_7796() - { - } - [Fact] - public void Test_7797() - { - } - [Fact] - public void Test_7798() - { - } - [Fact] - public void Test_7799() - { - } - [Fact] - public void Test_7800() - { - } - [Fact] - public void Test_7801() - { - } - [Fact] - public void Test_7802() - { - } - [Fact] - public void Test_7803() - { - } - [Fact] - public void Test_7804() - { - } - [Fact] - public void Test_7805() - { - } - [Fact] - public void Test_7806() - { - } - [Fact] - public void Test_7807() - { - } - [Fact] - public void Test_7808() - { - } - [Fact] - public void Test_7809() - { - } - [Fact] - public void Test_7810() - { - } - [Fact] - public void Test_7811() - { - } - [Fact] - public void Test_7812() - { - } - [Fact] - public void Test_7813() - { - } - [Fact] - public void Test_7814() - { - } - [Fact] - public void Test_7815() - { - } - [Fact] - public void Test_7816() - { - } - [Fact] - public void Test_7817() - { - } - [Fact] - public void Test_7818() - { - } - [Fact] - public void Test_7819() - { - } - [Fact] - public void Test_7820() - { - } - [Fact] - public void Test_7821() - { - } - [Fact] - public void Test_7822() - { - } - [Fact] - public void Test_7823() - { - } - [Fact] - public void Test_7824() - { - } - [Fact] - public void Test_7825() - { - } - [Fact] - public void Test_7826() - { - } - [Fact] - public void Test_7827() - { - } - [Fact] - public void Test_7828() - { - } - [Fact] - public void Test_7829() - { - } - [Fact] - public void Test_7830() - { - } - [Fact] - public void Test_7831() - { - } - [Fact] - public void Test_7832() - { - } - [Fact] - public void Test_7833() - { - } - [Fact] - public void Test_7834() - { - } - [Fact] - public void Test_7835() - { - } - [Fact] - public void Test_7836() - { - } - [Fact] - public void Test_7837() - { - } - [Fact] - public void Test_7838() - { - } - [Fact] - public void Test_7839() - { - } - [Fact] - public void Test_7840() - { - } - [Fact] - public void Test_7841() - { - } - [Fact] - public void Test_7842() - { - } - [Fact] - public void Test_7843() - { - } - [Fact] - public void Test_7844() - { - } - [Fact] - public void Test_7845() - { - } - [Fact] - public void Test_7846() - { - } - [Fact] - public void Test_7847() - { - } - [Fact] - public void Test_7848() - { - } - [Fact] - public void Test_7849() - { - } - [Fact] - public void Test_7850() - { - } - [Fact] - public void Test_7851() - { - } - [Fact] - public void Test_7852() - { - } - [Fact] - public void Test_7853() - { - } - [Fact] - public void Test_7854() - { - } - [Fact] - public void Test_7855() - { - } - [Fact] - public void Test_7856() - { - } - [Fact] - public void Test_7857() - { - } - [Fact] - public void Test_7858() - { - } - [Fact] - public void Test_7859() - { - } - [Fact] - public void Test_7860() - { - } - [Fact] - public void Test_7861() - { - } - [Fact] - public void Test_7862() - { - } - [Fact] - public void Test_7863() - { - } - [Fact] - public void Test_7864() - { - } - [Fact] - public void Test_7865() - { - } - [Fact] - public void Test_7866() - { - } - [Fact] - public void Test_7867() - { - } - [Fact] - public void Test_7868() - { - } - [Fact] - public void Test_7869() - { - } - [Fact] - public void Test_7870() - { - } - [Fact] - public void Test_7871() - { - } - [Fact] - public void Test_7872() - { - } - [Fact] - public void Test_7873() - { - } - [Fact] - public void Test_7874() - { - } - [Fact] - public void Test_7875() - { - } - [Fact] - public void Test_7876() - { - } - [Fact] - public void Test_7877() - { - } - [Fact] - public void Test_7878() - { - } - [Fact] - public void Test_7879() - { - } - [Fact] - public void Test_7880() - { - } - [Fact] - public void Test_7881() - { - } - [Fact] - public void Test_7882() - { - } - [Fact] - public void Test_7883() - { - } - [Fact] - public void Test_7884() - { - } - [Fact] - public void Test_7885() - { - } - [Fact] - public void Test_7886() - { - } - [Fact] - public void Test_7887() - { - } - [Fact] - public void Test_7888() - { - } - [Fact] - public void Test_7889() - { - } - [Fact] - public void Test_7890() - { - } - [Fact] - public void Test_7891() - { - } - [Fact] - public void Test_7892() - { - } - [Fact] - public void Test_7893() - { - } - [Fact] - public void Test_7894() - { - } - [Fact] - public void Test_7895() - { - } - [Fact] - public void Test_7896() - { - } - [Fact] - public void Test_7897() - { - } - [Fact] - public void Test_7898() - { - } - [Fact] - public void Test_7899() - { - } - [Fact] - public void Test_7900() - { - } - [Fact] - public void Test_7901() - { - } - [Fact] - public void Test_7902() - { - } - [Fact] - public void Test_7903() - { - } - [Fact] - public void Test_7904() - { - } - [Fact] - public void Test_7905() - { - } - [Fact] - public void Test_7906() - { - } - [Fact] - public void Test_7907() - { - } - [Fact] - public void Test_7908() - { - } - [Fact] - public void Test_7909() - { - } - [Fact] - public void Test_7910() - { - } - [Fact] - public void Test_7911() - { - } - [Fact] - public void Test_7912() - { - } - [Fact] - public void Test_7913() - { - } - [Fact] - public void Test_7914() - { - } - [Fact] - public void Test_7915() - { - } - [Fact] - public void Test_7916() - { - } - [Fact] - public void Test_7917() - { - } - [Fact] - public void Test_7918() - { - } - [Fact] - public void Test_7919() - { - } - [Fact] - public void Test_7920() - { - } - [Fact] - public void Test_7921() - { - } - [Fact] - public void Test_7922() - { - } - [Fact] - public void Test_7923() - { - } - [Fact] - public void Test_7924() - { - } - [Fact] - public void Test_7925() - { - } - [Fact] - public void Test_7926() - { - } - [Fact] - public void Test_7927() - { - } - [Fact] - public void Test_7928() - { - } - [Fact] - public void Test_7929() - { - } - [Fact] - public void Test_7930() - { - } - [Fact] - public void Test_7931() - { - } - [Fact] - public void Test_7932() - { - } - [Fact] - public void Test_7933() - { - } - [Fact] - public void Test_7934() - { - } - [Fact] - public void Test_7935() - { - } - [Fact] - public void Test_7936() - { - } - [Fact] - public void Test_7937() - { - } - [Fact] - public void Test_7938() - { - } - [Fact] - public void Test_7939() - { - } - [Fact] - public void Test_7940() - { - } - [Fact] - public void Test_7941() - { - } - [Fact] - public void Test_7942() - { - } - [Fact] - public void Test_7943() - { - } - [Fact] - public void Test_7944() - { - } - [Fact] - public void Test_7945() - { - } - [Fact] - public void Test_7946() - { - } - [Fact] - public void Test_7947() - { - } - [Fact] - public void Test_7948() - { - } - [Fact] - public void Test_7949() - { - } - [Fact] - public void Test_7950() - { - } - [Fact] - public void Test_7951() - { - } - [Fact] - public void Test_7952() - { - } - [Fact] - public void Test_7953() - { - } - [Fact] - public void Test_7954() - { - } - [Fact] - public void Test_7955() - { - } - [Fact] - public void Test_7956() - { - } - [Fact] - public void Test_7957() - { - } - [Fact] - public void Test_7958() - { - } - [Fact] - public void Test_7959() - { - } - [Fact] - public void Test_7960() - { - } - [Fact] - public void Test_7961() - { - } - [Fact] - public void Test_7962() - { - } - [Fact] - public void Test_7963() - { - } - [Fact] - public void Test_7964() - { - } - [Fact] - public void Test_7965() - { - } - [Fact] - public void Test_7966() - { - } - [Fact] - public void Test_7967() - { - } - [Fact] - public void Test_7968() - { - } - [Fact] - public void Test_7969() - { - } - [Fact] - public void Test_7970() - { - } - [Fact] - public void Test_7971() - { - } - [Fact] - public void Test_7972() - { - } - [Fact] - public void Test_7973() - { - } - [Fact] - public void Test_7974() - { - } - [Fact] - public void Test_7975() - { - } - [Fact] - public void Test_7976() - { - } - [Fact] - public void Test_7977() - { - } - [Fact] - public void Test_7978() - { - } - [Fact] - public void Test_7979() - { - } - [Fact] - public void Test_7980() - { - } - [Fact] - public void Test_7981() - { - } - [Fact] - public void Test_7982() - { - } - [Fact] - public void Test_7983() - { - } - [Fact] - public void Test_7984() - { - } - [Fact] - public void Test_7985() - { - } - [Fact] - public void Test_7986() - { - } - [Fact] - public void Test_7987() - { - } - [Fact] - public void Test_7988() - { - } - [Fact] - public void Test_7989() - { - } - [Fact] - public void Test_7990() - { - } - [Fact] - public void Test_7991() - { - } - [Fact] - public void Test_7992() - { - } - [Fact] - public void Test_7993() - { - } - [Fact] - public void Test_7994() - { - } - [Fact] - public void Test_7995() - { - } - [Fact] - public void Test_7996() - { - } - [Fact] - public void Test_7997() - { - } - [Fact] - public void Test_7998() - { - } - [Fact] - public void Test_7999() - { - } - [Fact] - public void Test_8000() - { - } - [Fact] - public void Test_8001() - { - } - [Fact] - public void Test_8002() - { - } - [Fact] - public void Test_8003() - { - } - [Fact] - public void Test_8004() - { - } - [Fact] - public void Test_8005() - { - } - [Fact] - public void Test_8006() - { - } - [Fact] - public void Test_8007() - { - } - [Fact] - public void Test_8008() - { - } - [Fact] - public void Test_8009() - { - } - [Fact] - public void Test_8010() - { - } - [Fact] - public void Test_8011() - { - } - [Fact] - public void Test_8012() - { - } - [Fact] - public void Test_8013() - { - } - [Fact] - public void Test_8014() - { - } - [Fact] - public void Test_8015() - { - } - [Fact] - public void Test_8016() - { - } - [Fact] - public void Test_8017() - { - } - [Fact] - public void Test_8018() - { - } - [Fact] - public void Test_8019() - { - } - [Fact] - public void Test_8020() - { - } - [Fact] - public void Test_8021() - { - } - [Fact] - public void Test_8022() - { - } - [Fact] - public void Test_8023() - { - } - [Fact] - public void Test_8024() - { - } - [Fact] - public void Test_8025() - { - } - [Fact] - public void Test_8026() - { - } - [Fact] - public void Test_8027() - { - } - [Fact] - public void Test_8028() - { - } - [Fact] - public void Test_8029() - { - } - [Fact] - public void Test_8030() - { - } - [Fact] - public void Test_8031() - { - } - [Fact] - public void Test_8032() - { - } - [Fact] - public void Test_8033() - { - } - [Fact] - public void Test_8034() - { - } - [Fact] - public void Test_8035() - { - } - [Fact] - public void Test_8036() - { - } - [Fact] - public void Test_8037() - { - } - [Fact] - public void Test_8038() - { - } - [Fact] - public void Test_8039() - { - } - [Fact] - public void Test_8040() - { - } - [Fact] - public void Test_8041() - { - } - [Fact] - public void Test_8042() - { - } - [Fact] - public void Test_8043() - { - } - [Fact] - public void Test_8044() - { - } - [Fact] - public void Test_8045() - { - } - [Fact] - public void Test_8046() - { - } - [Fact] - public void Test_8047() - { - } - [Fact] - public void Test_8048() - { - } - [Fact] - public void Test_8049() - { - } - [Fact] - public void Test_8050() - { - } - [Fact] - public void Test_8051() - { - } - [Fact] - public void Test_8052() - { - } - [Fact] - public void Test_8053() - { - } - [Fact] - public void Test_8054() - { - } - [Fact] - public void Test_8055() - { - } - [Fact] - public void Test_8056() - { - } - [Fact] - public void Test_8057() - { - } - [Fact] - public void Test_8058() - { - } - [Fact] - public void Test_8059() - { - } - [Fact] - public void Test_8060() - { - } - [Fact] - public void Test_8061() - { - } - [Fact] - public void Test_8062() - { - } - [Fact] - public void Test_8063() - { - } - [Fact] - public void Test_8064() - { - } - [Fact] - public void Test_8065() - { - } - [Fact] - public void Test_8066() - { - } - [Fact] - public void Test_8067() - { - } - [Fact] - public void Test_8068() - { - } - [Fact] - public void Test_8069() - { - } - [Fact] - public void Test_8070() - { - } - [Fact] - public void Test_8071() - { - } - [Fact] - public void Test_8072() - { - } - [Fact] - public void Test_8073() - { - } - [Fact] - public void Test_8074() - { - } - [Fact] - public void Test_8075() - { - } - [Fact] - public void Test_8076() - { - } - [Fact] - public void Test_8077() - { - } - [Fact] - public void Test_8078() - { - } - [Fact] - public void Test_8079() - { - } - [Fact] - public void Test_8080() - { - } - [Fact] - public void Test_8081() - { - } - [Fact] - public void Test_8082() - { - } - [Fact] - public void Test_8083() - { - } - [Fact] - public void Test_8084() - { - } - [Fact] - public void Test_8085() - { - } - [Fact] - public void Test_8086() - { - } - [Fact] - public void Test_8087() - { - } - [Fact] - public void Test_8088() - { - } - [Fact] - public void Test_8089() - { - } - [Fact] - public void Test_8090() - { - } - [Fact] - public void Test_8091() - { - } - [Fact] - public void Test_8092() - { - } - [Fact] - public void Test_8093() - { - } - [Fact] - public void Test_8094() - { - } - [Fact] - public void Test_8095() - { - } - [Fact] - public void Test_8096() - { - } - [Fact] - public void Test_8097() - { - } - [Fact] - public void Test_8098() - { - } - [Fact] - public void Test_8099() - { - } - [Fact] - public void Test_8100() - { - } - [Fact] - public void Test_8101() - { - } - [Fact] - public void Test_8102() - { - } - [Fact] - public void Test_8103() - { - } - [Fact] - public void Test_8104() - { - } - [Fact] - public void Test_8105() - { - } - [Fact] - public void Test_8106() - { - } - [Fact] - public void Test_8107() - { - } - [Fact] - public void Test_8108() - { - } - [Fact] - public void Test_8109() - { - } - [Fact] - public void Test_8110() - { - } - [Fact] - public void Test_8111() - { - } - [Fact] - public void Test_8112() - { - } - [Fact] - public void Test_8113() - { - } - [Fact] - public void Test_8114() - { - } - [Fact] - public void Test_8115() - { - } - [Fact] - public void Test_8116() - { - } - [Fact] - public void Test_8117() - { - } - [Fact] - public void Test_8118() - { - } - [Fact] - public void Test_8119() - { - } - [Fact] - public void Test_8120() - { - } - [Fact] - public void Test_8121() - { - } - [Fact] - public void Test_8122() - { - } - [Fact] - public void Test_8123() - { - } - [Fact] - public void Test_8124() - { - } - [Fact] - public void Test_8125() - { - } - [Fact] - public void Test_8126() - { - } - [Fact] - public void Test_8127() - { - } - [Fact] - public void Test_8128() - { - } - [Fact] - public void Test_8129() - { - } - [Fact] - public void Test_8130() - { - } - [Fact] - public void Test_8131() - { - } - [Fact] - public void Test_8132() - { - } - [Fact] - public void Test_8133() - { - } - [Fact] - public void Test_8134() - { - } - [Fact] - public void Test_8135() - { - } - [Fact] - public void Test_8136() - { - } - [Fact] - public void Test_8137() - { - } - [Fact] - public void Test_8138() - { - } - [Fact] - public void Test_8139() - { - } - [Fact] - public void Test_8140() - { - } - [Fact] - public void Test_8141() - { - } - [Fact] - public void Test_8142() - { - } - [Fact] - public void Test_8143() - { - } - [Fact] - public void Test_8144() - { - } - [Fact] - public void Test_8145() - { - } - [Fact] - public void Test_8146() - { - } - [Fact] - public void Test_8147() - { - } - [Fact] - public void Test_8148() - { - } - [Fact] - public void Test_8149() - { - } - [Fact] - public void Test_8150() - { - } - [Fact] - public void Test_8151() - { - } - [Fact] - public void Test_8152() - { - } - [Fact] - public void Test_8153() - { - } - [Fact] - public void Test_8154() - { - } - [Fact] - public void Test_8155() - { - } - [Fact] - public void Test_8156() - { - } - [Fact] - public void Test_8157() - { - } - [Fact] - public void Test_8158() - { - } - [Fact] - public void Test_8159() - { - } - [Fact] - public void Test_8160() - { - } - [Fact] - public void Test_8161() - { - } - [Fact] - public void Test_8162() - { - } - [Fact] - public void Test_8163() - { - } - [Fact] - public void Test_8164() - { - } - [Fact] - public void Test_8165() - { - } - [Fact] - public void Test_8166() - { - } - [Fact] - public void Test_8167() - { - } - [Fact] - public void Test_8168() - { - } - [Fact] - public void Test_8169() - { - } - [Fact] - public void Test_8170() - { - } - [Fact] - public void Test_8171() - { - } - [Fact] - public void Test_8172() - { - } - [Fact] - public void Test_8173() - { - } - [Fact] - public void Test_8174() - { - } - [Fact] - public void Test_8175() - { - } - [Fact] - public void Test_8176() - { - } - [Fact] - public void Test_8177() - { - } - [Fact] - public void Test_8178() - { - } - [Fact] - public void Test_8179() - { - } - [Fact] - public void Test_8180() - { - } - [Fact] - public void Test_8181() - { - } - [Fact] - public void Test_8182() - { - } - [Fact] - public void Test_8183() - { - } - [Fact] - public void Test_8184() - { - } - [Fact] - public void Test_8185() - { - } - [Fact] - public void Test_8186() - { - } - [Fact] - public void Test_8187() - { - } - [Fact] - public void Test_8188() - { - } - [Fact] - public void Test_8189() - { - } - [Fact] - public void Test_8190() - { - } - [Fact] - public void Test_8191() - { - } - [Fact] - public void Test_8192() - { - } - [Fact] - public void Test_8193() - { - } - [Fact] - public void Test_8194() - { - } - [Fact] - public void Test_8195() - { - } - [Fact] - public void Test_8196() - { - } - [Fact] - public void Test_8197() - { - } - [Fact] - public void Test_8198() - { - } - [Fact] - public void Test_8199() - { - } - [Fact] - public void Test_8200() - { - } - [Fact] - public void Test_8201() - { - } - [Fact] - public void Test_8202() - { - } - [Fact] - public void Test_8203() - { - } - [Fact] - public void Test_8204() - { - } - [Fact] - public void Test_8205() - { - } - [Fact] - public void Test_8206() - { - } - [Fact] - public void Test_8207() - { - } - [Fact] - public void Test_8208() - { - } - [Fact] - public void Test_8209() - { - } - [Fact] - public void Test_8210() - { - } - [Fact] - public void Test_8211() - { - } - [Fact] - public void Test_8212() - { - } - [Fact] - public void Test_8213() - { - } - [Fact] - public void Test_8214() - { - } - [Fact] - public void Test_8215() - { - } - [Fact] - public void Test_8216() - { - } - [Fact] - public void Test_8217() - { - } - [Fact] - public void Test_8218() - { - } - [Fact] - public void Test_8219() - { - } - [Fact] - public void Test_8220() - { - } - [Fact] - public void Test_8221() - { - } - [Fact] - public void Test_8222() - { - } - [Fact] - public void Test_8223() - { - } - [Fact] - public void Test_8224() - { - } - [Fact] - public void Test_8225() - { - } - [Fact] - public void Test_8226() - { - } - [Fact] - public void Test_8227() - { - } - [Fact] - public void Test_8228() - { - } - [Fact] - public void Test_8229() - { - } - [Fact] - public void Test_8230() - { - } - [Fact] - public void Test_8231() - { - } - [Fact] - public void Test_8232() - { - } - [Fact] - public void Test_8233() - { - } - [Fact] - public void Test_8234() - { - } - [Fact] - public void Test_8235() - { - } - [Fact] - public void Test_8236() - { - } - [Fact] - public void Test_8237() - { - } - [Fact] - public void Test_8238() - { - } - [Fact] - public void Test_8239() - { - } - [Fact] - public void Test_8240() - { - } - [Fact] - public void Test_8241() - { - } - [Fact] - public void Test_8242() - { - } - [Fact] - public void Test_8243() - { - } - [Fact] - public void Test_8244() - { - } - [Fact] - public void Test_8245() - { - } - [Fact] - public void Test_8246() - { - } - [Fact] - public void Test_8247() - { - } - [Fact] - public void Test_8248() - { - } - [Fact] - public void Test_8249() - { - } - [Fact] - public void Test_8250() - { - } - [Fact] - public void Test_8251() - { - } - [Fact] - public void Test_8252() - { - } - [Fact] - public void Test_8253() - { - } - [Fact] - public void Test_8254() - { - } - [Fact] - public void Test_8255() - { - } - [Fact] - public void Test_8256() - { - } - [Fact] - public void Test_8257() - { - } - [Fact] - public void Test_8258() - { - } - [Fact] - public void Test_8259() - { - } - [Fact] - public void Test_8260() - { - } - [Fact] - public void Test_8261() - { - } - [Fact] - public void Test_8262() - { - } - [Fact] - public void Test_8263() - { - } - [Fact] - public void Test_8264() - { - } - [Fact] - public void Test_8265() - { - } - [Fact] - public void Test_8266() - { - } - [Fact] - public void Test_8267() - { - } - [Fact] - public void Test_8268() - { - } - [Fact] - public void Test_8269() - { - } - [Fact] - public void Test_8270() - { - } - [Fact] - public void Test_8271() - { - } - [Fact] - public void Test_8272() - { - } - [Fact] - public void Test_8273() - { - } - [Fact] - public void Test_8274() - { - } - [Fact] - public void Test_8275() - { - } - [Fact] - public void Test_8276() - { - } - [Fact] - public void Test_8277() - { - } - [Fact] - public void Test_8278() - { - } - [Fact] - public void Test_8279() - { - } - [Fact] - public void Test_8280() - { - } - [Fact] - public void Test_8281() - { - } - [Fact] - public void Test_8282() - { - } - [Fact] - public void Test_8283() - { - } - [Fact] - public void Test_8284() - { - } - [Fact] - public void Test_8285() - { - } - [Fact] - public void Test_8286() - { - } - [Fact] - public void Test_8287() - { - } - [Fact] - public void Test_8288() - { - } - [Fact] - public void Test_8289() - { - } - [Fact] - public void Test_8290() - { - } - [Fact] - public void Test_8291() - { - } - [Fact] - public void Test_8292() - { - } - [Fact] - public void Test_8293() - { - } - [Fact] - public void Test_8294() - { - } - [Fact] - public void Test_8295() - { - } - [Fact] - public void Test_8296() - { - } - [Fact] - public void Test_8297() - { - } - [Fact] - public void Test_8298() - { - } - [Fact] - public void Test_8299() - { - } - [Fact] - public void Test_8300() - { - } - [Fact] - public void Test_8301() - { - } - [Fact] - public void Test_8302() - { - } - [Fact] - public void Test_8303() - { - } - [Fact] - public void Test_8304() - { - } - [Fact] - public void Test_8305() - { - } - [Fact] - public void Test_8306() - { - } - [Fact] - public void Test_8307() - { - } - [Fact] - public void Test_8308() - { - } - [Fact] - public void Test_8309() - { - } - [Fact] - public void Test_8310() - { - } - [Fact] - public void Test_8311() - { - } - [Fact] - public void Test_8312() - { - } - [Fact] - public void Test_8313() - { - } - [Fact] - public void Test_8314() - { - } - [Fact] - public void Test_8315() - { - } - [Fact] - public void Test_8316() - { - } - [Fact] - public void Test_8317() - { - } - [Fact] - public void Test_8318() - { - } - [Fact] - public void Test_8319() - { - } - [Fact] - public void Test_8320() - { - } - [Fact] - public void Test_8321() - { - } - [Fact] - public void Test_8322() - { - } - [Fact] - public void Test_8323() - { - } - [Fact] - public void Test_8324() - { - } - [Fact] - public void Test_8325() - { - } - [Fact] - public void Test_8326() - { - } - [Fact] - public void Test_8327() - { - } - [Fact] - public void Test_8328() - { - } - [Fact] - public void Test_8329() - { - } - [Fact] - public void Test_8330() - { - } - [Fact] - public void Test_8331() - { - } - [Fact] - public void Test_8332() - { - } - [Fact] - public void Test_8333() - { - } - [Fact] - public void Test_8334() - { - } - [Fact] - public void Test_8335() - { - } - [Fact] - public void Test_8336() - { - } - [Fact] - public void Test_8337() - { - } - [Fact] - public void Test_8338() - { - } - [Fact] - public void Test_8339() - { - } - [Fact] - public void Test_8340() - { - } - [Fact] - public void Test_8341() - { - } - [Fact] - public void Test_8342() - { - } - [Fact] - public void Test_8343() - { - } - [Fact] - public void Test_8344() - { - } - [Fact] - public void Test_8345() - { - } - [Fact] - public void Test_8346() - { - } - [Fact] - public void Test_8347() - { - } - [Fact] - public void Test_8348() - { - } - [Fact] - public void Test_8349() - { - } - [Fact] - public void Test_8350() - { - } - [Fact] - public void Test_8351() - { - } - [Fact] - public void Test_8352() - { - } - [Fact] - public void Test_8353() - { - } - [Fact] - public void Test_8354() - { - } - [Fact] - public void Test_8355() - { - } - [Fact] - public void Test_8356() - { - } - [Fact] - public void Test_8357() - { - } - [Fact] - public void Test_8358() - { - } - [Fact] - public void Test_8359() - { - } - [Fact] - public void Test_8360() - { - } - [Fact] - public void Test_8361() - { - } - [Fact] - public void Test_8362() - { - } - [Fact] - public void Test_8363() - { - } - [Fact] - public void Test_8364() - { - } - [Fact] - public void Test_8365() - { - } - [Fact] - public void Test_8366() - { - } - [Fact] - public void Test_8367() - { - } - [Fact] - public void Test_8368() - { - } - [Fact] - public void Test_8369() - { - } - [Fact] - public void Test_8370() - { - } - [Fact] - public void Test_8371() - { - } - [Fact] - public void Test_8372() - { - } - [Fact] - public void Test_8373() - { - } - [Fact] - public void Test_8374() - { - } - [Fact] - public void Test_8375() - { - } - [Fact] - public void Test_8376() - { - } - [Fact] - public void Test_8377() - { - } - [Fact] - public void Test_8378() - { - } - [Fact] - public void Test_8379() - { - } - [Fact] - public void Test_8380() - { - } - [Fact] - public void Test_8381() - { - } - [Fact] - public void Test_8382() - { - } - [Fact] - public void Test_8383() - { - } - [Fact] - public void Test_8384() - { - } - [Fact] - public void Test_8385() - { - } - [Fact] - public void Test_8386() - { - } - [Fact] - public void Test_8387() - { - } - [Fact] - public void Test_8388() - { - } - [Fact] - public void Test_8389() - { - } - [Fact] - public void Test_8390() - { - } - [Fact] - public void Test_8391() - { - } - [Fact] - public void Test_8392() - { - } - [Fact] - public void Test_8393() - { - } - [Fact] - public void Test_8394() - { - } - [Fact] - public void Test_8395() - { - } - [Fact] - public void Test_8396() - { - } - [Fact] - public void Test_8397() - { - } - [Fact] - public void Test_8398() - { - } - [Fact] - public void Test_8399() - { - } - [Fact] - public void Test_8400() - { - } - [Fact] - public void Test_8401() - { - } - [Fact] - public void Test_8402() - { - } - [Fact] - public void Test_8403() - { - } - [Fact] - public void Test_8404() - { - } - [Fact] - public void Test_8405() - { - } - [Fact] - public void Test_8406() - { - } - [Fact] - public void Test_8407() - { - } - [Fact] - public void Test_8408() - { - } - [Fact] - public void Test_8409() - { - } - [Fact] - public void Test_8410() - { - } - [Fact] - public void Test_8411() - { - } - [Fact] - public void Test_8412() - { - } - [Fact] - public void Test_8413() - { - } - [Fact] - public void Test_8414() - { - } - [Fact] - public void Test_8415() - { - } - [Fact] - public void Test_8416() - { - } - [Fact] - public void Test_8417() - { - } - [Fact] - public void Test_8418() - { - } - [Fact] - public void Test_8419() - { - } - [Fact] - public void Test_8420() - { - } - [Fact] - public void Test_8421() - { - } - [Fact] - public void Test_8422() - { - } - [Fact] - public void Test_8423() - { - } - [Fact] - public void Test_8424() - { - } - [Fact] - public void Test_8425() - { - } - [Fact] - public void Test_8426() - { - } - [Fact] - public void Test_8427() - { - } - [Fact] - public void Test_8428() - { - } - [Fact] - public void Test_8429() - { - } - [Fact] - public void Test_8430() - { - } - [Fact] - public void Test_8431() - { - } - [Fact] - public void Test_8432() - { - } - [Fact] - public void Test_8433() - { - } - [Fact] - public void Test_8434() - { - } - [Fact] - public void Test_8435() - { - } - [Fact] - public void Test_8436() - { - } - [Fact] - public void Test_8437() - { - } - [Fact] - public void Test_8438() - { - } - [Fact] - public void Test_8439() - { - } - [Fact] - public void Test_8440() - { - } - [Fact] - public void Test_8441() - { - } - [Fact] - public void Test_8442() - { - } - [Fact] - public void Test_8443() - { - } - [Fact] - public void Test_8444() - { - } - [Fact] - public void Test_8445() - { - } - [Fact] - public void Test_8446() - { - } - [Fact] - public void Test_8447() - { - } - [Fact] - public void Test_8448() - { - } - [Fact] - public void Test_8449() - { - } - [Fact] - public void Test_8450() - { - } - [Fact] - public void Test_8451() - { - } - [Fact] - public void Test_8452() - { - } - [Fact] - public void Test_8453() - { - } - [Fact] - public void Test_8454() - { - } - [Fact] - public void Test_8455() - { - } - [Fact] - public void Test_8456() - { - } - [Fact] - public void Test_8457() - { - } - [Fact] - public void Test_8458() - { - } - [Fact] - public void Test_8459() - { - } - [Fact] - public void Test_8460() - { - } - [Fact] - public void Test_8461() - { - } - [Fact] - public void Test_8462() - { - } - [Fact] - public void Test_8463() - { - } - [Fact] - public void Test_8464() - { - } - [Fact] - public void Test_8465() - { - } - [Fact] - public void Test_8466() - { - } - [Fact] - public void Test_8467() - { - } - [Fact] - public void Test_8468() - { - } - [Fact] - public void Test_8469() - { - } - [Fact] - public void Test_8470() - { - } - [Fact] - public void Test_8471() - { - } - [Fact] - public void Test_8472() - { - } - [Fact] - public void Test_8473() - { - } - [Fact] - public void Test_8474() - { - } - [Fact] - public void Test_8475() - { - } - [Fact] - public void Test_8476() - { - } - [Fact] - public void Test_8477() - { - } - [Fact] - public void Test_8478() - { - } - [Fact] - public void Test_8479() - { - } - [Fact] - public void Test_8480() - { - } - [Fact] - public void Test_8481() - { - } - [Fact] - public void Test_8482() - { - } - [Fact] - public void Test_8483() - { - } - [Fact] - public void Test_8484() - { - } - [Fact] - public void Test_8485() - { - } - [Fact] - public void Test_8486() - { - } - [Fact] - public void Test_8487() - { - } - [Fact] - public void Test_8488() - { - } - [Fact] - public void Test_8489() - { - } - [Fact] - public void Test_8490() - { - } - [Fact] - public void Test_8491() - { - } - [Fact] - public void Test_8492() - { - } - [Fact] - public void Test_8493() - { - } - [Fact] - public void Test_8494() - { - } - [Fact] - public void Test_8495() - { - } - [Fact] - public void Test_8496() - { - } - [Fact] - public void Test_8497() - { - } - [Fact] - public void Test_8498() - { - } - [Fact] - public void Test_8499() - { - } - [Fact] - public void Test_8500() - { - } - [Fact] - public void Test_8501() - { - } - [Fact] - public void Test_8502() - { - } - [Fact] - public void Test_8503() - { - } - [Fact] - public void Test_8504() - { - } - [Fact] - public void Test_8505() - { - } - [Fact] - public void Test_8506() - { - } - [Fact] - public void Test_8507() - { - } - [Fact] - public void Test_8508() - { - } - [Fact] - public void Test_8509() - { - } - [Fact] - public void Test_8510() - { - } - [Fact] - public void Test_8511() - { - } - [Fact] - public void Test_8512() - { - } - [Fact] - public void Test_8513() - { - } - [Fact] - public void Test_8514() - { - } - [Fact] - public void Test_8515() - { - } - [Fact] - public void Test_8516() - { - } - [Fact] - public void Test_8517() - { - } - [Fact] - public void Test_8518() - { - } - [Fact] - public void Test_8519() - { - } - [Fact] - public void Test_8520() - { - } - [Fact] - public void Test_8521() - { - } - [Fact] - public void Test_8522() - { - } - [Fact] - public void Test_8523() - { - } - [Fact] - public void Test_8524() - { - } - [Fact] - public void Test_8525() - { - } - [Fact] - public void Test_8526() - { - } - [Fact] - public void Test_8527() - { - } - [Fact] - public void Test_8528() - { - } - [Fact] - public void Test_8529() - { - } - [Fact] - public void Test_8530() - { - } - [Fact] - public void Test_8531() - { - } - [Fact] - public void Test_8532() - { - } - [Fact] - public void Test_8533() - { - } - [Fact] - public void Test_8534() - { - } - [Fact] - public void Test_8535() - { - } - [Fact] - public void Test_8536() - { - } - [Fact] - public void Test_8537() - { - } - [Fact] - public void Test_8538() - { - } - [Fact] - public void Test_8539() - { - } - [Fact] - public void Test_8540() - { - } - [Fact] - public void Test_8541() - { - } - [Fact] - public void Test_8542() - { - } - [Fact] - public void Test_8543() - { - } - [Fact] - public void Test_8544() - { - } - [Fact] - public void Test_8545() - { - } - [Fact] - public void Test_8546() - { - } - [Fact] - public void Test_8547() - { - } - [Fact] - public void Test_8548() - { - } - [Fact] - public void Test_8549() - { - } - [Fact] - public void Test_8550() - { - } - [Fact] - public void Test_8551() - { - } - [Fact] - public void Test_8552() - { - } - [Fact] - public void Test_8553() - { - } - [Fact] - public void Test_8554() - { - } - [Fact] - public void Test_8555() - { - } - [Fact] - public void Test_8556() - { - } - [Fact] - public void Test_8557() - { - } - [Fact] - public void Test_8558() - { - } - [Fact] - public void Test_8559() - { - } - [Fact] - public void Test_8560() - { - } - [Fact] - public void Test_8561() - { - } - [Fact] - public void Test_8562() - { - } - [Fact] - public void Test_8563() - { - } - [Fact] - public void Test_8564() - { - } - [Fact] - public void Test_8565() - { - } - [Fact] - public void Test_8566() - { - } - [Fact] - public void Test_8567() - { - } - [Fact] - public void Test_8568() - { - } - [Fact] - public void Test_8569() - { - } - [Fact] - public void Test_8570() - { - } - [Fact] - public void Test_8571() - { - } - [Fact] - public void Test_8572() - { - } - [Fact] - public void Test_8573() - { - } - [Fact] - public void Test_8574() - { - } - [Fact] - public void Test_8575() - { - } - [Fact] - public void Test_8576() - { - } - [Fact] - public void Test_8577() - { - } - [Fact] - public void Test_8578() - { - } - [Fact] - public void Test_8579() - { - } - [Fact] - public void Test_8580() - { - } - [Fact] - public void Test_8581() - { - } - [Fact] - public void Test_8582() - { - } - [Fact] - public void Test_8583() - { - } - [Fact] - public void Test_8584() - { - } - [Fact] - public void Test_8585() - { - } - [Fact] - public void Test_8586() - { - } - [Fact] - public void Test_8587() - { - } - [Fact] - public void Test_8588() - { - } - [Fact] - public void Test_8589() - { - } - [Fact] - public void Test_8590() - { - } - [Fact] - public void Test_8591() - { - } - [Fact] - public void Test_8592() - { - } - [Fact] - public void Test_8593() - { - } - [Fact] - public void Test_8594() - { - } - [Fact] - public void Test_8595() - { - } - [Fact] - public void Test_8596() - { - } - [Fact] - public void Test_8597() - { - } - [Fact] - public void Test_8598() - { - } - [Fact] - public void Test_8599() - { - } - [Fact] - public void Test_8600() - { - } - [Fact] - public void Test_8601() - { - } - [Fact] - public void Test_8602() - { - } - [Fact] - public void Test_8603() - { - } - [Fact] - public void Test_8604() - { - } - [Fact] - public void Test_8605() - { - } - [Fact] - public void Test_8606() - { - } - [Fact] - public void Test_8607() - { - } - [Fact] - public void Test_8608() - { - } - [Fact] - public void Test_8609() - { - } - [Fact] - public void Test_8610() - { - } - [Fact] - public void Test_8611() - { - } - [Fact] - public void Test_8612() - { - } - [Fact] - public void Test_8613() - { - } - [Fact] - public void Test_8614() - { - } - [Fact] - public void Test_8615() - { - } - [Fact] - public void Test_8616() - { - } - [Fact] - public void Test_8617() - { - } - [Fact] - public void Test_8618() - { - } - [Fact] - public void Test_8619() - { - } - [Fact] - public void Test_8620() - { - } - [Fact] - public void Test_8621() - { - } - [Fact] - public void Test_8622() - { - } - [Fact] - public void Test_8623() - { - } - [Fact] - public void Test_8624() - { - } - [Fact] - public void Test_8625() - { - } - [Fact] - public void Test_8626() - { - } - [Fact] - public void Test_8627() - { - } - [Fact] - public void Test_8628() - { - } - [Fact] - public void Test_8629() - { - } - [Fact] - public void Test_8630() - { - } - [Fact] - public void Test_8631() - { - } - [Fact] - public void Test_8632() - { - } - [Fact] - public void Test_8633() - { - } - [Fact] - public void Test_8634() - { - } - [Fact] - public void Test_8635() - { - } - [Fact] - public void Test_8636() - { - } - [Fact] - public void Test_8637() - { - } - [Fact] - public void Test_8638() - { - } - [Fact] - public void Test_8639() - { - } - [Fact] - public void Test_8640() - { - } - [Fact] - public void Test_8641() - { - } - [Fact] - public void Test_8642() - { - } - [Fact] - public void Test_8643() - { - } - [Fact] - public void Test_8644() - { - } - [Fact] - public void Test_8645() - { - } - [Fact] - public void Test_8646() - { - } - [Fact] - public void Test_8647() - { - } - [Fact] - public void Test_8648() - { - } - [Fact] - public void Test_8649() - { - } - [Fact] - public void Test_8650() - { - } - [Fact] - public void Test_8651() - { - } - [Fact] - public void Test_8652() - { - } - [Fact] - public void Test_8653() - { - } - [Fact] - public void Test_8654() - { - } - [Fact] - public void Test_8655() - { - } - [Fact] - public void Test_8656() - { - } - [Fact] - public void Test_8657() - { - } - [Fact] - public void Test_8658() - { - } - [Fact] - public void Test_8659() - { - } - [Fact] - public void Test_8660() - { - } - [Fact] - public void Test_8661() - { - } - [Fact] - public void Test_8662() - { - } - [Fact] - public void Test_8663() - { - } - [Fact] - public void Test_8664() - { - } - [Fact] - public void Test_8665() - { - } - [Fact] - public void Test_8666() - { - } - [Fact] - public void Test_8667() - { - } - [Fact] - public void Test_8668() - { - } - [Fact] - public void Test_8669() - { - } - [Fact] - public void Test_8670() - { - } - [Fact] - public void Test_8671() - { - } - [Fact] - public void Test_8672() - { - } - [Fact] - public void Test_8673() - { - } - [Fact] - public void Test_8674() - { - } - [Fact] - public void Test_8675() - { - } - [Fact] - public void Test_8676() - { - } - [Fact] - public void Test_8677() - { - } - [Fact] - public void Test_8678() - { - } - [Fact] - public void Test_8679() - { - } - [Fact] - public void Test_8680() - { - } - [Fact] - public void Test_8681() - { - } - [Fact] - public void Test_8682() - { - } - [Fact] - public void Test_8683() - { - } - [Fact] - public void Test_8684() - { - } - [Fact] - public void Test_8685() - { - } - [Fact] - public void Test_8686() - { - } - [Fact] - public void Test_8687() - { - } - [Fact] - public void Test_8688() - { - } - [Fact] - public void Test_8689() - { - } - [Fact] - public void Test_8690() - { - } - [Fact] - public void Test_8691() - { - } - [Fact] - public void Test_8692() - { - } - [Fact] - public void Test_8693() - { - } - [Fact] - public void Test_8694() - { - } - [Fact] - public void Test_8695() - { - } - [Fact] - public void Test_8696() - { - } - [Fact] - public void Test_8697() - { - } - [Fact] - public void Test_8698() - { - } - [Fact] - public void Test_8699() - { - } - [Fact] - public void Test_8700() - { - } - [Fact] - public void Test_8701() - { - } - [Fact] - public void Test_8702() - { - } - [Fact] - public void Test_8703() - { - } - [Fact] - public void Test_8704() - { - } - [Fact] - public void Test_8705() - { - } - [Fact] - public void Test_8706() - { - } - [Fact] - public void Test_8707() - { - } - [Fact] - public void Test_8708() - { - } - [Fact] - public void Test_8709() - { - } - [Fact] - public void Test_8710() - { - } - [Fact] - public void Test_8711() - { - } - [Fact] - public void Test_8712() - { - } - [Fact] - public void Test_8713() - { - } - [Fact] - public void Test_8714() - { - } - [Fact] - public void Test_8715() - { - } - [Fact] - public void Test_8716() - { - } - [Fact] - public void Test_8717() - { - } - [Fact] - public void Test_8718() - { - } - [Fact] - public void Test_8719() - { - } - [Fact] - public void Test_8720() - { - } - [Fact] - public void Test_8721() - { - } - [Fact] - public void Test_8722() - { - } - [Fact] - public void Test_8723() - { - } - [Fact] - public void Test_8724() - { - } - [Fact] - public void Test_8725() - { - } - [Fact] - public void Test_8726() - { - } - [Fact] - public void Test_8727() - { - } - [Fact] - public void Test_8728() - { - } - [Fact] - public void Test_8729() - { - } - [Fact] - public void Test_8730() - { - } - [Fact] - public void Test_8731() - { - } - [Fact] - public void Test_8732() - { - } - [Fact] - public void Test_8733() - { - } - [Fact] - public void Test_8734() - { - } - [Fact] - public void Test_8735() - { - } - [Fact] - public void Test_8736() - { - } - [Fact] - public void Test_8737() - { - } - [Fact] - public void Test_8738() - { - } - [Fact] - public void Test_8739() - { - } - [Fact] - public void Test_8740() - { - } - [Fact] - public void Test_8741() - { - } - [Fact] - public void Test_8742() - { - } - [Fact] - public void Test_8743() - { - } - [Fact] - public void Test_8744() - { - } - [Fact] - public void Test_8745() - { - } - [Fact] - public void Test_8746() - { - } - [Fact] - public void Test_8747() - { - } - [Fact] - public void Test_8748() - { - } - [Fact] - public void Test_8749() - { - } - [Fact] - public void Test_8750() - { - } - [Fact] - public void Test_8751() - { - } - [Fact] - public void Test_8752() - { - } - [Fact] - public void Test_8753() - { - } - [Fact] - public void Test_8754() - { - } - [Fact] - public void Test_8755() - { - } - [Fact] - public void Test_8756() - { - } - [Fact] - public void Test_8757() - { - } - [Fact] - public void Test_8758() - { - } - [Fact] - public void Test_8759() - { - } - [Fact] - public void Test_8760() - { - } - [Fact] - public void Test_8761() - { - } - [Fact] - public void Test_8762() - { - } - [Fact] - public void Test_8763() - { - } - [Fact] - public void Test_8764() - { - } - [Fact] - public void Test_8765() - { - } - [Fact] - public void Test_8766() - { - } - [Fact] - public void Test_8767() - { - } - [Fact] - public void Test_8768() - { - } - [Fact] - public void Test_8769() - { - } - [Fact] - public void Test_8770() - { - } - [Fact] - public void Test_8771() - { - } - [Fact] - public void Test_8772() - { - } - [Fact] - public void Test_8773() - { - } - [Fact] - public void Test_8774() - { - } - [Fact] - public void Test_8775() - { - } - [Fact] - public void Test_8776() - { - } - [Fact] - public void Test_8777() - { - } - [Fact] - public void Test_8778() - { - } - [Fact] - public void Test_8779() - { - } - [Fact] - public void Test_8780() - { - } - [Fact] - public void Test_8781() - { - } - [Fact] - public void Test_8782() - { - } - [Fact] - public void Test_8783() - { - } - [Fact] - public void Test_8784() - { - } - [Fact] - public void Test_8785() - { - } - [Fact] - public void Test_8786() - { - } - [Fact] - public void Test_8787() - { - } - [Fact] - public void Test_8788() - { - } - [Fact] - public void Test_8789() - { - } - [Fact] - public void Test_8790() - { - } - [Fact] - public void Test_8791() - { - } - [Fact] - public void Test_8792() - { - } - [Fact] - public void Test_8793() - { - } - [Fact] - public void Test_8794() - { - } - [Fact] - public void Test_8795() - { - } - [Fact] - public void Test_8796() - { - } - [Fact] - public void Test_8797() - { - } - [Fact] - public void Test_8798() - { - } - [Fact] - public void Test_8799() - { - } - [Fact] - public void Test_8800() - { - } - [Fact] - public void Test_8801() - { - } - [Fact] - public void Test_8802() - { - } - [Fact] - public void Test_8803() - { - } - [Fact] - public void Test_8804() - { - } - [Fact] - public void Test_8805() - { - } - [Fact] - public void Test_8806() - { - } - [Fact] - public void Test_8807() - { - } - [Fact] - public void Test_8808() - { - } - [Fact] - public void Test_8809() - { - } - [Fact] - public void Test_8810() - { - } - [Fact] - public void Test_8811() - { - } - [Fact] - public void Test_8812() - { - } - [Fact] - public void Test_8813() - { - } - [Fact] - public void Test_8814() - { - } - [Fact] - public void Test_8815() - { - } - [Fact] - public void Test_8816() - { - } - [Fact] - public void Test_8817() - { - } - [Fact] - public void Test_8818() - { - } - [Fact] - public void Test_8819() - { - } - [Fact] - public void Test_8820() - { - } - [Fact] - public void Test_8821() - { - } - [Fact] - public void Test_8822() - { - } - [Fact] - public void Test_8823() - { - } - [Fact] - public void Test_8824() - { - } - [Fact] - public void Test_8825() - { - } - [Fact] - public void Test_8826() - { - } - [Fact] - public void Test_8827() - { - } - [Fact] - public void Test_8828() - { - } - [Fact] - public void Test_8829() - { - } - [Fact] - public void Test_8830() - { - } - [Fact] - public void Test_8831() - { - } - [Fact] - public void Test_8832() - { - } - [Fact] - public void Test_8833() - { - } - [Fact] - public void Test_8834() - { - } - [Fact] - public void Test_8835() - { - } - [Fact] - public void Test_8836() - { - } - [Fact] - public void Test_8837() - { - } - [Fact] - public void Test_8838() - { - } - [Fact] - public void Test_8839() - { - } - [Fact] - public void Test_8840() - { - } - [Fact] - public void Test_8841() - { - } - [Fact] - public void Test_8842() - { - } - [Fact] - public void Test_8843() - { - } - [Fact] - public void Test_8844() - { - } - [Fact] - public void Test_8845() - { - } - [Fact] - public void Test_8846() - { - } - [Fact] - public void Test_8847() - { - } - [Fact] - public void Test_8848() - { - } - [Fact] - public void Test_8849() - { - } - [Fact] - public void Test_8850() - { - } - [Fact] - public void Test_8851() - { - } - [Fact] - public void Test_8852() - { - } - [Fact] - public void Test_8853() - { - } - [Fact] - public void Test_8854() - { - } - [Fact] - public void Test_8855() - { - } - [Fact] - public void Test_8856() - { - } - [Fact] - public void Test_8857() - { - } - [Fact] - public void Test_8858() - { - } - [Fact] - public void Test_8859() - { - } - [Fact] - public void Test_8860() - { - } - [Fact] - public void Test_8861() - { - } - [Fact] - public void Test_8862() - { - } - [Fact] - public void Test_8863() - { - } - [Fact] - public void Test_8864() - { - } - [Fact] - public void Test_8865() - { - } - [Fact] - public void Test_8866() - { - } - [Fact] - public void Test_8867() - { - } - [Fact] - public void Test_8868() - { - } - [Fact] - public void Test_8869() - { - } - [Fact] - public void Test_8870() - { - } - [Fact] - public void Test_8871() - { - } - [Fact] - public void Test_8872() - { - } - [Fact] - public void Test_8873() - { - } - [Fact] - public void Test_8874() - { - } - [Fact] - public void Test_8875() - { - } - [Fact] - public void Test_8876() - { - } - [Fact] - public void Test_8877() - { - } - [Fact] - public void Test_8878() - { - } - [Fact] - public void Test_8879() - { - } - [Fact] - public void Test_8880() - { - } - [Fact] - public void Test_8881() - { - } - [Fact] - public void Test_8882() - { - } - [Fact] - public void Test_8883() - { - } - [Fact] - public void Test_8884() - { - } - [Fact] - public void Test_8885() - { - } - [Fact] - public void Test_8886() - { - } - [Fact] - public void Test_8887() - { - } - [Fact] - public void Test_8888() - { - } - [Fact] - public void Test_8889() - { - } - [Fact] - public void Test_8890() - { - } - [Fact] - public void Test_8891() - { - } - [Fact] - public void Test_8892() - { - } - [Fact] - public void Test_8893() - { - } - [Fact] - public void Test_8894() - { - } - [Fact] - public void Test_8895() - { - } - [Fact] - public void Test_8896() - { - } - [Fact] - public void Test_8897() - { - } - [Fact] - public void Test_8898() - { - } - [Fact] - public void Test_8899() - { - } - [Fact] - public void Test_8900() - { - } - [Fact] - public void Test_8901() - { - } - [Fact] - public void Test_8902() - { - } - [Fact] - public void Test_8903() - { - } - [Fact] - public void Test_8904() - { - } - [Fact] - public void Test_8905() - { - } - [Fact] - public void Test_8906() - { - } - [Fact] - public void Test_8907() - { - } - [Fact] - public void Test_8908() - { - } - [Fact] - public void Test_8909() - { - } - [Fact] - public void Test_8910() - { - } - [Fact] - public void Test_8911() - { - } - [Fact] - public void Test_8912() - { - } - [Fact] - public void Test_8913() - { - } - [Fact] - public void Test_8914() - { - } - [Fact] - public void Test_8915() - { - } - [Fact] - public void Test_8916() - { - } - [Fact] - public void Test_8917() - { - } - [Fact] - public void Test_8918() - { - } - [Fact] - public void Test_8919() - { - } - [Fact] - public void Test_8920() - { - } - [Fact] - public void Test_8921() - { - } - [Fact] - public void Test_8922() - { - } - [Fact] - public void Test_8923() - { - } - [Fact] - public void Test_8924() - { - } - [Fact] - public void Test_8925() - { - } - [Fact] - public void Test_8926() - { - } - [Fact] - public void Test_8927() - { - } - [Fact] - public void Test_8928() - { - } - [Fact] - public void Test_8929() - { - } - [Fact] - public void Test_8930() - { - } - [Fact] - public void Test_8931() - { - } - [Fact] - public void Test_8932() - { - } - [Fact] - public void Test_8933() - { - } - [Fact] - public void Test_8934() - { - } - [Fact] - public void Test_8935() - { - } - [Fact] - public void Test_8936() - { - } - [Fact] - public void Test_8937() - { - } - [Fact] - public void Test_8938() - { - } - [Fact] - public void Test_8939() - { - } - [Fact] - public void Test_8940() - { - } - [Fact] - public void Test_8941() - { - } - [Fact] - public void Test_8942() - { - } - [Fact] - public void Test_8943() - { - } - [Fact] - public void Test_8944() - { - } - [Fact] - public void Test_8945() - { - } - [Fact] - public void Test_8946() - { - } - [Fact] - public void Test_8947() - { - } - [Fact] - public void Test_8948() - { - } - [Fact] - public void Test_8949() - { - } - [Fact] - public void Test_8950() - { - } - [Fact] - public void Test_8951() - { - } - [Fact] - public void Test_8952() - { - } - [Fact] - public void Test_8953() - { - } - [Fact] - public void Test_8954() - { - } - [Fact] - public void Test_8955() - { - } - [Fact] - public void Test_8956() - { - } - [Fact] - public void Test_8957() - { - } - [Fact] - public void Test_8958() - { - } - [Fact] - public void Test_8959() - { - } - [Fact] - public void Test_8960() - { - } - [Fact] - public void Test_8961() - { - } - [Fact] - public void Test_8962() - { - } - [Fact] - public void Test_8963() - { - } - [Fact] - public void Test_8964() - { - } - [Fact] - public void Test_8965() - { - } - [Fact] - public void Test_8966() - { - } - [Fact] - public void Test_8967() - { - } - [Fact] - public void Test_8968() - { - } - [Fact] - public void Test_8969() - { - } - [Fact] - public void Test_8970() - { - } - [Fact] - public void Test_8971() - { - } - [Fact] - public void Test_8972() - { - } - [Fact] - public void Test_8973() - { - } - [Fact] - public void Test_8974() - { - } - [Fact] - public void Test_8975() - { - } - [Fact] - public void Test_8976() - { - } - [Fact] - public void Test_8977() - { - } - [Fact] - public void Test_8978() - { - } - [Fact] - public void Test_8979() - { - } - [Fact] - public void Test_8980() - { - } - [Fact] - public void Test_8981() - { - } - [Fact] - public void Test_8982() - { - } - [Fact] - public void Test_8983() - { - } - [Fact] - public void Test_8984() - { - } - [Fact] - public void Test_8985() - { - } - [Fact] - public void Test_8986() - { - } - [Fact] - public void Test_8987() - { - } - [Fact] - public void Test_8988() - { - } - [Fact] - public void Test_8989() - { - } - [Fact] - public void Test_8990() - { - } - [Fact] - public void Test_8991() - { - } - [Fact] - public void Test_8992() - { - } - [Fact] - public void Test_8993() - { - } - [Fact] - public void Test_8994() - { - } - [Fact] - public void Test_8995() - { - } - [Fact] - public void Test_8996() - { - } - [Fact] - public void Test_8997() - { - } - [Fact] - public void Test_8998() - { - } - [Fact] - public void Test_8999() - { - } - [Fact] - public void Test_9000() - { - } - [Fact] - public void Test_9001() - { - } - [Fact] - public void Test_9002() - { - } - [Fact] - public void Test_9003() - { - } - [Fact] - public void Test_9004() - { - } - [Fact] - public void Test_9005() - { - } - [Fact] - public void Test_9006() - { - } - [Fact] - public void Test_9007() - { - } - [Fact] - public void Test_9008() - { - } - [Fact] - public void Test_9009() - { - } - [Fact] - public void Test_9010() - { - } - [Fact] - public void Test_9011() - { - } - [Fact] - public void Test_9012() - { - } - [Fact] - public void Test_9013() - { - } - [Fact] - public void Test_9014() - { - } - [Fact] - public void Test_9015() - { - } - [Fact] - public void Test_9016() - { - } - [Fact] - public void Test_9017() - { - } - [Fact] - public void Test_9018() - { - } - [Fact] - public void Test_9019() - { - } - [Fact] - public void Test_9020() - { - } - [Fact] - public void Test_9021() - { - } - [Fact] - public void Test_9022() - { - } - [Fact] - public void Test_9023() - { - } - [Fact] - public void Test_9024() - { - } - [Fact] - public void Test_9025() - { - } - [Fact] - public void Test_9026() - { - } - [Fact] - public void Test_9027() - { - } - [Fact] - public void Test_9028() - { - } - [Fact] - public void Test_9029() - { - } - [Fact] - public void Test_9030() - { - } - [Fact] - public void Test_9031() - { - } - [Fact] - public void Test_9032() - { - } - [Fact] - public void Test_9033() - { - } - [Fact] - public void Test_9034() - { - } - [Fact] - public void Test_9035() - { - } - [Fact] - public void Test_9036() - { - } - [Fact] - public void Test_9037() - { - } - [Fact] - public void Test_9038() - { - } - [Fact] - public void Test_9039() - { - } - [Fact] - public void Test_9040() - { - } - [Fact] - public void Test_9041() - { - } - [Fact] - public void Test_9042() - { - } - [Fact] - public void Test_9043() - { - } - [Fact] - public void Test_9044() - { - } - [Fact] - public void Test_9045() - { - } - [Fact] - public void Test_9046() - { - } - [Fact] - public void Test_9047() - { - } - [Fact] - public void Test_9048() - { - } - [Fact] - public void Test_9049() - { - } - [Fact] - public void Test_9050() - { - } - [Fact] - public void Test_9051() - { - } - [Fact] - public void Test_9052() - { - } - [Fact] - public void Test_9053() - { - } - [Fact] - public void Test_9054() - { - } - [Fact] - public void Test_9055() - { - } - [Fact] - public void Test_9056() - { - } - [Fact] - public void Test_9057() - { - } - [Fact] - public void Test_9058() - { - } - [Fact] - public void Test_9059() - { - } - [Fact] - public void Test_9060() - { - } - [Fact] - public void Test_9061() - { - } - [Fact] - public void Test_9062() - { - } - [Fact] - public void Test_9063() - { - } - [Fact] - public void Test_9064() - { - } - [Fact] - public void Test_9065() - { - } - [Fact] - public void Test_9066() - { - } - [Fact] - public void Test_9067() - { - } - [Fact] - public void Test_9068() - { - } - [Fact] - public void Test_9069() - { - } - [Fact] - public void Test_9070() - { - } - [Fact] - public void Test_9071() - { - } - [Fact] - public void Test_9072() - { - } - [Fact] - public void Test_9073() - { - } - [Fact] - public void Test_9074() - { - } - [Fact] - public void Test_9075() - { - } - [Fact] - public void Test_9076() - { - } - [Fact] - public void Test_9077() - { - } - [Fact] - public void Test_9078() - { - } - [Fact] - public void Test_9079() - { - } - [Fact] - public void Test_9080() - { - } - [Fact] - public void Test_9081() - { - } - [Fact] - public void Test_9082() - { - } - [Fact] - public void Test_9083() - { - } - [Fact] - public void Test_9084() - { - } - [Fact] - public void Test_9085() - { - } - [Fact] - public void Test_9086() - { - } - [Fact] - public void Test_9087() - { - } - [Fact] - public void Test_9088() - { - } - [Fact] - public void Test_9089() - { - } - [Fact] - public void Test_9090() - { - } - [Fact] - public void Test_9091() - { - } - [Fact] - public void Test_9092() - { - } - [Fact] - public void Test_9093() - { - } - [Fact] - public void Test_9094() - { - } - [Fact] - public void Test_9095() - { - } - [Fact] - public void Test_9096() - { - } - [Fact] - public void Test_9097() - { - } - [Fact] - public void Test_9098() - { - } - [Fact] - public void Test_9099() - { - } - [Fact] - public void Test_9100() - { - } - [Fact] - public void Test_9101() - { - } - [Fact] - public void Test_9102() - { - } - [Fact] - public void Test_9103() - { - } - [Fact] - public void Test_9104() - { - } - [Fact] - public void Test_9105() - { - } - [Fact] - public void Test_9106() - { - } - [Fact] - public void Test_9107() - { - } - [Fact] - public void Test_9108() - { - } - [Fact] - public void Test_9109() - { - } - [Fact] - public void Test_9110() - { - } - [Fact] - public void Test_9111() - { - } - [Fact] - public void Test_9112() - { - } - [Fact] - public void Test_9113() - { - } - [Fact] - public void Test_9114() - { - } - [Fact] - public void Test_9115() - { - } - [Fact] - public void Test_9116() - { - } - [Fact] - public void Test_9117() - { - } - [Fact] - public void Test_9118() - { - } - [Fact] - public void Test_9119() - { - } - [Fact] - public void Test_9120() - { - } - [Fact] - public void Test_9121() - { - } - [Fact] - public void Test_9122() - { - } - [Fact] - public void Test_9123() - { - } - [Fact] - public void Test_9124() - { - } - [Fact] - public void Test_9125() - { - } - [Fact] - public void Test_9126() - { - } - [Fact] - public void Test_9127() - { - } - [Fact] - public void Test_9128() - { - } - [Fact] - public void Test_9129() - { - } - [Fact] - public void Test_9130() - { - } - [Fact] - public void Test_9131() - { - } - [Fact] - public void Test_9132() - { - } - [Fact] - public void Test_9133() - { - } - [Fact] - public void Test_9134() - { - } - [Fact] - public void Test_9135() - { - } - [Fact] - public void Test_9136() - { - } - [Fact] - public void Test_9137() - { - } - [Fact] - public void Test_9138() - { - } - [Fact] - public void Test_9139() - { - } - [Fact] - public void Test_9140() - { - } - [Fact] - public void Test_9141() - { - } - [Fact] - public void Test_9142() - { - } - [Fact] - public void Test_9143() - { - } - [Fact] - public void Test_9144() - { - } - [Fact] - public void Test_9145() - { - } - [Fact] - public void Test_9146() - { - } - [Fact] - public void Test_9147() - { - } - [Fact] - public void Test_9148() - { - } - [Fact] - public void Test_9149() - { - } - [Fact] - public void Test_9150() - { - } - [Fact] - public void Test_9151() - { - } - [Fact] - public void Test_9152() - { - } - [Fact] - public void Test_9153() - { - } - [Fact] - public void Test_9154() - { - } - [Fact] - public void Test_9155() - { - } - [Fact] - public void Test_9156() - { - } - [Fact] - public void Test_9157() - { - } - [Fact] - public void Test_9158() - { - } - [Fact] - public void Test_9159() - { - } - [Fact] - public void Test_9160() - { - } - [Fact] - public void Test_9161() - { - } - [Fact] - public void Test_9162() - { - } - [Fact] - public void Test_9163() - { - } - [Fact] - public void Test_9164() - { - } - [Fact] - public void Test_9165() - { - } - [Fact] - public void Test_9166() - { - } - [Fact] - public void Test_9167() - { - } - [Fact] - public void Test_9168() - { - } - [Fact] - public void Test_9169() - { - } - [Fact] - public void Test_9170() - { - } - [Fact] - public void Test_9171() - { - } - [Fact] - public void Test_9172() - { - } - [Fact] - public void Test_9173() - { - } - [Fact] - public void Test_9174() - { - } - [Fact] - public void Test_9175() - { - } - [Fact] - public void Test_9176() - { - } - [Fact] - public void Test_9177() - { - } - [Fact] - public void Test_9178() - { - } - [Fact] - public void Test_9179() - { - } - [Fact] - public void Test_9180() - { - } - [Fact] - public void Test_9181() - { - } - [Fact] - public void Test_9182() - { - } - [Fact] - public void Test_9183() - { - } - [Fact] - public void Test_9184() - { - } - [Fact] - public void Test_9185() - { - } - [Fact] - public void Test_9186() - { - } - [Fact] - public void Test_9187() - { - } - [Fact] - public void Test_9188() - { - } - [Fact] - public void Test_9189() - { - } - [Fact] - public void Test_9190() - { - } - [Fact] - public void Test_9191() - { - } - [Fact] - public void Test_9192() - { - } - [Fact] - public void Test_9193() - { - } - [Fact] - public void Test_9194() - { - } - [Fact] - public void Test_9195() - { - } - [Fact] - public void Test_9196() - { - } - [Fact] - public void Test_9197() - { - } - [Fact] - public void Test_9198() - { - } - [Fact] - public void Test_9199() - { - } - [Fact] - public void Test_9200() - { - } - [Fact] - public void Test_9201() - { - } - [Fact] - public void Test_9202() - { - } - [Fact] - public void Test_9203() - { - } - [Fact] - public void Test_9204() - { - } - [Fact] - public void Test_9205() - { - } - [Fact] - public void Test_9206() - { - } - [Fact] - public void Test_9207() - { - } - [Fact] - public void Test_9208() - { - } - [Fact] - public void Test_9209() - { - } - [Fact] - public void Test_9210() - { - } - [Fact] - public void Test_9211() - { - } - [Fact] - public void Test_9212() - { - } - [Fact] - public void Test_9213() - { - } - [Fact] - public void Test_9214() - { - } - [Fact] - public void Test_9215() - { - } - [Fact] - public void Test_9216() - { - } - [Fact] - public void Test_9217() - { - } - [Fact] - public void Test_9218() - { - } - [Fact] - public void Test_9219() - { - } - [Fact] - public void Test_9220() - { - } - [Fact] - public void Test_9221() - { - } - [Fact] - public void Test_9222() - { - } - [Fact] - public void Test_9223() - { - } - [Fact] - public void Test_9224() - { - } - [Fact] - public void Test_9225() - { - } - [Fact] - public void Test_9226() - { - } - [Fact] - public void Test_9227() - { - } - [Fact] - public void Test_9228() - { - } - [Fact] - public void Test_9229() - { - } - [Fact] - public void Test_9230() - { - } - [Fact] - public void Test_9231() - { - } - [Fact] - public void Test_9232() - { - } - [Fact] - public void Test_9233() - { - } - [Fact] - public void Test_9234() - { - } - [Fact] - public void Test_9235() - { - } - [Fact] - public void Test_9236() - { - } - [Fact] - public void Test_9237() - { - } - [Fact] - public void Test_9238() - { - } - [Fact] - public void Test_9239() - { - } - [Fact] - public void Test_9240() - { - } - [Fact] - public void Test_9241() - { - } - [Fact] - public void Test_9242() - { - } - [Fact] - public void Test_9243() - { - } - [Fact] - public void Test_9244() - { - } - [Fact] - public void Test_9245() - { - } - [Fact] - public void Test_9246() - { - } - [Fact] - public void Test_9247() - { - } - [Fact] - public void Test_9248() - { - } - [Fact] - public void Test_9249() - { - } - [Fact] - public void Test_9250() - { - } - [Fact] - public void Test_9251() - { - } - [Fact] - public void Test_9252() - { - } - [Fact] - public void Test_9253() - { - } - [Fact] - public void Test_9254() - { - } - [Fact] - public void Test_9255() - { - } - [Fact] - public void Test_9256() - { - } - [Fact] - public void Test_9257() - { - } - [Fact] - public void Test_9258() - { - } - [Fact] - public void Test_9259() - { - } - [Fact] - public void Test_9260() - { - } - [Fact] - public void Test_9261() - { - } - [Fact] - public void Test_9262() - { - } - [Fact] - public void Test_9263() - { - } - [Fact] - public void Test_9264() - { - } - [Fact] - public void Test_9265() - { - } - [Fact] - public void Test_9266() - { - } - [Fact] - public void Test_9267() - { - } - [Fact] - public void Test_9268() - { - } - [Fact] - public void Test_9269() - { - } - [Fact] - public void Test_9270() - { - } - [Fact] - public void Test_9271() - { - } - [Fact] - public void Test_9272() - { - } - [Fact] - public void Test_9273() - { - } - [Fact] - public void Test_9274() - { - } - [Fact] - public void Test_9275() - { - } - [Fact] - public void Test_9276() - { - } - [Fact] - public void Test_9277() - { - } - [Fact] - public void Test_9278() - { - } - [Fact] - public void Test_9279() - { - } - [Fact] - public void Test_9280() - { - } - [Fact] - public void Test_9281() - { - } - [Fact] - public void Test_9282() - { - } - [Fact] - public void Test_9283() - { - } - [Fact] - public void Test_9284() - { - } - [Fact] - public void Test_9285() - { - } - [Fact] - public void Test_9286() - { - } - [Fact] - public void Test_9287() - { - } - [Fact] - public void Test_9288() - { - } - [Fact] - public void Test_9289() - { - } - [Fact] - public void Test_9290() - { - } - [Fact] - public void Test_9291() - { - } - [Fact] - public void Test_9292() - { - } - [Fact] - public void Test_9293() - { - } - [Fact] - public void Test_9294() - { - } - [Fact] - public void Test_9295() - { - } - [Fact] - public void Test_9296() - { - } - [Fact] - public void Test_9297() - { - } - [Fact] - public void Test_9298() - { - } - [Fact] - public void Test_9299() - { - } - [Fact] - public void Test_9300() - { - } - [Fact] - public void Test_9301() - { - } - [Fact] - public void Test_9302() - { - } - [Fact] - public void Test_9303() - { - } - [Fact] - public void Test_9304() - { - } - [Fact] - public void Test_9305() - { - } - [Fact] - public void Test_9306() - { - } - [Fact] - public void Test_9307() - { - } - [Fact] - public void Test_9308() - { - } - [Fact] - public void Test_9309() - { - } - [Fact] - public void Test_9310() - { - } - [Fact] - public void Test_9311() - { - } - [Fact] - public void Test_9312() - { - } - [Fact] - public void Test_9313() - { - } - [Fact] - public void Test_9314() - { - } - [Fact] - public void Test_9315() - { - } - [Fact] - public void Test_9316() - { - } - [Fact] - public void Test_9317() - { - } - [Fact] - public void Test_9318() - { - } - [Fact] - public void Test_9319() - { - } - [Fact] - public void Test_9320() - { - } - [Fact] - public void Test_9321() - { - } - [Fact] - public void Test_9322() - { - } - [Fact] - public void Test_9323() - { - } - [Fact] - public void Test_9324() - { - } - [Fact] - public void Test_9325() - { - } - [Fact] - public void Test_9326() - { - } - [Fact] - public void Test_9327() - { - } - [Fact] - public void Test_9328() - { - } - [Fact] - public void Test_9329() - { - } - [Fact] - public void Test_9330() - { - } - [Fact] - public void Test_9331() - { - } - [Fact] - public void Test_9332() - { - } - [Fact] - public void Test_9333() - { - } - [Fact] - public void Test_9334() - { - } - [Fact] - public void Test_9335() - { - } - [Fact] - public void Test_9336() - { - } - [Fact] - public void Test_9337() - { - } - [Fact] - public void Test_9338() - { - } - [Fact] - public void Test_9339() - { - } - [Fact] - public void Test_9340() - { - } - [Fact] - public void Test_9341() - { - } - [Fact] - public void Test_9342() - { - } - [Fact] - public void Test_9343() - { - } - [Fact] - public void Test_9344() - { - } - [Fact] - public void Test_9345() - { - } - [Fact] - public void Test_9346() - { - } - [Fact] - public void Test_9347() - { - } - [Fact] - public void Test_9348() - { - } - [Fact] - public void Test_9349() - { - } - [Fact] - public void Test_9350() - { - } - [Fact] - public void Test_9351() - { - } - [Fact] - public void Test_9352() - { - } - [Fact] - public void Test_9353() - { - } - [Fact] - public void Test_9354() - { - } - [Fact] - public void Test_9355() - { - } - [Fact] - public void Test_9356() - { - } - [Fact] - public void Test_9357() - { - } - [Fact] - public void Test_9358() - { - } - [Fact] - public void Test_9359() - { - } - [Fact] - public void Test_9360() - { - } - [Fact] - public void Test_9361() - { - } - [Fact] - public void Test_9362() - { - } - [Fact] - public void Test_9363() - { - } - [Fact] - public void Test_9364() - { - } - [Fact] - public void Test_9365() - { - } - [Fact] - public void Test_9366() - { - } - [Fact] - public void Test_9367() - { - } - [Fact] - public void Test_9368() - { - } - [Fact] - public void Test_9369() - { - } - [Fact] - public void Test_9370() - { - } - [Fact] - public void Test_9371() - { - } - [Fact] - public void Test_9372() - { - } - [Fact] - public void Test_9373() - { - } - [Fact] - public void Test_9374() - { - } - [Fact] - public void Test_9375() - { - } - [Fact] - public void Test_9376() - { - } - [Fact] - public void Test_9377() - { - } - [Fact] - public void Test_9378() - { - } - [Fact] - public void Test_9379() - { - } - [Fact] - public void Test_9380() - { - } - [Fact] - public void Test_9381() - { - } - [Fact] - public void Test_9382() - { - } - [Fact] - public void Test_9383() - { - } - [Fact] - public void Test_9384() - { - } - [Fact] - public void Test_9385() - { - } - [Fact] - public void Test_9386() - { - } - [Fact] - public void Test_9387() - { - } - [Fact] - public void Test_9388() - { - } - [Fact] - public void Test_9389() - { - } - [Fact] - public void Test_9390() - { - } - [Fact] - public void Test_9391() - { - } - [Fact] - public void Test_9392() - { - } - [Fact] - public void Test_9393() - { - } - [Fact] - public void Test_9394() - { - } - [Fact] - public void Test_9395() - { - } - [Fact] - public void Test_9396() - { - } - [Fact] - public void Test_9397() - { - } - [Fact] - public void Test_9398() - { - } - [Fact] - public void Test_9399() - { - } - [Fact] - public void Test_9400() - { - } - [Fact] - public void Test_9401() - { - } - [Fact] - public void Test_9402() - { - } - [Fact] - public void Test_9403() - { - } - [Fact] - public void Test_9404() - { - } - [Fact] - public void Test_9405() - { - } - [Fact] - public void Test_9406() - { - } - [Fact] - public void Test_9407() - { - } - [Fact] - public void Test_9408() - { - } - [Fact] - public void Test_9409() - { - } - [Fact] - public void Test_9410() - { - } - [Fact] - public void Test_9411() - { - } - [Fact] - public void Test_9412() - { - } - [Fact] - public void Test_9413() - { - } - [Fact] - public void Test_9414() - { - } - [Fact] - public void Test_9415() - { - } - [Fact] - public void Test_9416() - { - } - [Fact] - public void Test_9417() - { - } - [Fact] - public void Test_9418() - { - } - [Fact] - public void Test_9419() - { - } - [Fact] - public void Test_9420() - { - } - [Fact] - public void Test_9421() - { - } - [Fact] - public void Test_9422() - { - } - [Fact] - public void Test_9423() - { - } - [Fact] - public void Test_9424() - { - } - [Fact] - public void Test_9425() - { - } - [Fact] - public void Test_9426() - { - } - [Fact] - public void Test_9427() - { - } - [Fact] - public void Test_9428() - { - } - [Fact] - public void Test_9429() - { - } - [Fact] - public void Test_9430() - { - } - [Fact] - public void Test_9431() - { - } - [Fact] - public void Test_9432() - { - } - [Fact] - public void Test_9433() - { - } - [Fact] - public void Test_9434() - { - } - [Fact] - public void Test_9435() - { - } - [Fact] - public void Test_9436() - { - } - [Fact] - public void Test_9437() - { - } - [Fact] - public void Test_9438() - { - } - [Fact] - public void Test_9439() - { - } - [Fact] - public void Test_9440() - { - } - [Fact] - public void Test_9441() - { - } - [Fact] - public void Test_9442() - { - } - [Fact] - public void Test_9443() - { - } - [Fact] - public void Test_9444() - { - } - [Fact] - public void Test_9445() - { - } - [Fact] - public void Test_9446() - { - } - [Fact] - public void Test_9447() - { - } - [Fact] - public void Test_9448() - { - } - [Fact] - public void Test_9449() - { - } - [Fact] - public void Test_9450() - { - } - [Fact] - public void Test_9451() - { - } - [Fact] - public void Test_9452() - { - } - [Fact] - public void Test_9453() - { - } - [Fact] - public void Test_9454() - { - } - [Fact] - public void Test_9455() - { - } - [Fact] - public void Test_9456() - { - } - [Fact] - public void Test_9457() - { - } - [Fact] - public void Test_9458() - { - } - [Fact] - public void Test_9459() - { - } - [Fact] - public void Test_9460() - { - } - [Fact] - public void Test_9461() - { - } - [Fact] - public void Test_9462() - { - } - [Fact] - public void Test_9463() - { - } - [Fact] - public void Test_9464() - { - } - [Fact] - public void Test_9465() - { - } - [Fact] - public void Test_9466() - { - } - [Fact] - public void Test_9467() - { - } - [Fact] - public void Test_9468() - { - } - [Fact] - public void Test_9469() - { - } - [Fact] - public void Test_9470() - { - } - [Fact] - public void Test_9471() - { - } - [Fact] - public void Test_9472() - { - } - [Fact] - public void Test_9473() - { - } - [Fact] - public void Test_9474() - { - } - [Fact] - public void Test_9475() - { - } - [Fact] - public void Test_9476() - { - } - [Fact] - public void Test_9477() - { - } - [Fact] - public void Test_9478() - { - } - [Fact] - public void Test_9479() - { - } - [Fact] - public void Test_9480() - { - } - [Fact] - public void Test_9481() - { - } - [Fact] - public void Test_9482() - { - } - [Fact] - public void Test_9483() - { - } - [Fact] - public void Test_9484() - { - } - [Fact] - public void Test_9485() - { - } - [Fact] - public void Test_9486() - { - } - [Fact] - public void Test_9487() - { - } - [Fact] - public void Test_9488() - { - } - [Fact] - public void Test_9489() - { - } - [Fact] - public void Test_9490() - { - } - [Fact] - public void Test_9491() - { - } - [Fact] - public void Test_9492() - { - } - [Fact] - public void Test_9493() - { - } - [Fact] - public void Test_9494() - { - } - [Fact] - public void Test_9495() - { - } - [Fact] - public void Test_9496() - { - } - [Fact] - public void Test_9497() - { - } - [Fact] - public void Test_9498() - { - } - [Fact] - public void Test_9499() - { - } - [Fact] - public void Test_9500() - { - } - [Fact] - public void Test_9501() - { - } - [Fact] - public void Test_9502() - { - } - [Fact] - public void Test_9503() - { - } - [Fact] - public void Test_9504() - { - } - [Fact] - public void Test_9505() - { - } - [Fact] - public void Test_9506() - { - } - [Fact] - public void Test_9507() - { - } - [Fact] - public void Test_9508() - { - } - [Fact] - public void Test_9509() - { - } - [Fact] - public void Test_9510() - { - } - [Fact] - public void Test_9511() - { - } - [Fact] - public void Test_9512() - { - } - [Fact] - public void Test_9513() - { - } - [Fact] - public void Test_9514() - { - } - [Fact] - public void Test_9515() - { - } - [Fact] - public void Test_9516() - { - } - [Fact] - public void Test_9517() - { - } - [Fact] - public void Test_9518() - { - } - [Fact] - public void Test_9519() - { - } - [Fact] - public void Test_9520() - { - } - [Fact] - public void Test_9521() - { - } - [Fact] - public void Test_9522() - { - } - [Fact] - public void Test_9523() - { - } - [Fact] - public void Test_9524() - { - } - [Fact] - public void Test_9525() - { - } - [Fact] - public void Test_9526() - { - } - [Fact] - public void Test_9527() - { - } - [Fact] - public void Test_9528() - { - } - [Fact] - public void Test_9529() - { - } - [Fact] - public void Test_9530() - { - } - [Fact] - public void Test_9531() - { - } - [Fact] - public void Test_9532() - { - } - [Fact] - public void Test_9533() - { - } - [Fact] - public void Test_9534() - { - } - [Fact] - public void Test_9535() - { - } - [Fact] - public void Test_9536() - { - } - [Fact] - public void Test_9537() - { - } - [Fact] - public void Test_9538() - { - } - [Fact] - public void Test_9539() - { - } - [Fact] - public void Test_9540() - { - } - [Fact] - public void Test_9541() - { - } - [Fact] - public void Test_9542() - { - } - [Fact] - public void Test_9543() - { - } - [Fact] - public void Test_9544() - { - } - [Fact] - public void Test_9545() - { - } - [Fact] - public void Test_9546() - { - } - [Fact] - public void Test_9547() - { - } - [Fact] - public void Test_9548() - { - } - [Fact] - public void Test_9549() - { - } - [Fact] - public void Test_9550() - { - } - [Fact] - public void Test_9551() - { - } - [Fact] - public void Test_9552() - { - } - [Fact] - public void Test_9553() - { - } - [Fact] - public void Test_9554() - { - } - [Fact] - public void Test_9555() - { - } - [Fact] - public void Test_9556() - { - } - [Fact] - public void Test_9557() - { - } - [Fact] - public void Test_9558() - { - } - [Fact] - public void Test_9559() - { - } - [Fact] - public void Test_9560() - { - } - [Fact] - public void Test_9561() - { - } - [Fact] - public void Test_9562() - { - } - [Fact] - public void Test_9563() - { - } - [Fact] - public void Test_9564() - { - } - [Fact] - public void Test_9565() - { - } - [Fact] - public void Test_9566() - { - } - [Fact] - public void Test_9567() - { - } - [Fact] - public void Test_9568() - { - } - [Fact] - public void Test_9569() - { - } - [Fact] - public void Test_9570() - { - } - [Fact] - public void Test_9571() - { - } - [Fact] - public void Test_9572() - { - } - [Fact] - public void Test_9573() - { - } - [Fact] - public void Test_9574() - { - } - [Fact] - public void Test_9575() - { - } - [Fact] - public void Test_9576() - { - } - [Fact] - public void Test_9577() - { - } - [Fact] - public void Test_9578() - { - } - [Fact] - public void Test_9579() - { - } - [Fact] - public void Test_9580() - { - } - [Fact] - public void Test_9581() - { - } - [Fact] - public void Test_9582() - { - } - [Fact] - public void Test_9583() - { - } - [Fact] - public void Test_9584() - { - } - [Fact] - public void Test_9585() - { - } - [Fact] - public void Test_9586() - { - } - [Fact] - public void Test_9587() - { - } - [Fact] - public void Test_9588() - { - } - [Fact] - public void Test_9589() - { - } - [Fact] - public void Test_9590() - { - } - [Fact] - public void Test_9591() - { - } - [Fact] - public void Test_9592() - { - } - [Fact] - public void Test_9593() - { - } - [Fact] - public void Test_9594() - { - } - [Fact] - public void Test_9595() - { - } - [Fact] - public void Test_9596() - { - } - [Fact] - public void Test_9597() - { - } - [Fact] - public void Test_9598() - { - } - [Fact] - public void Test_9599() - { - } - [Fact] - public void Test_9600() - { - } - [Fact] - public void Test_9601() - { - } - [Fact] - public void Test_9602() - { - } - [Fact] - public void Test_9603() - { - } - [Fact] - public void Test_9604() - { - } - [Fact] - public void Test_9605() - { - } - [Fact] - public void Test_9606() - { - } - [Fact] - public void Test_9607() - { - } - [Fact] - public void Test_9608() - { - } - [Fact] - public void Test_9609() - { - } - [Fact] - public void Test_9610() - { - } - [Fact] - public void Test_9611() - { - } - [Fact] - public void Test_9612() - { - } - [Fact] - public void Test_9613() - { - } - [Fact] - public void Test_9614() - { - } - [Fact] - public void Test_9615() - { - } - [Fact] - public void Test_9616() - { - } - [Fact] - public void Test_9617() - { - } - [Fact] - public void Test_9618() - { - } - [Fact] - public void Test_9619() - { - } - [Fact] - public void Test_9620() - { - } - [Fact] - public void Test_9621() - { - } - [Fact] - public void Test_9622() - { - } - [Fact] - public void Test_9623() - { - } - [Fact] - public void Test_9624() - { - } - [Fact] - public void Test_9625() - { - } - [Fact] - public void Test_9626() - { - } - [Fact] - public void Test_9627() - { - } - [Fact] - public void Test_9628() - { - } - [Fact] - public void Test_9629() - { - } - [Fact] - public void Test_9630() - { - } - [Fact] - public void Test_9631() - { - } - [Fact] - public void Test_9632() - { - } - [Fact] - public void Test_9633() - { - } - [Fact] - public void Test_9634() - { - } - [Fact] - public void Test_9635() - { - } - [Fact] - public void Test_9636() - { - } - [Fact] - public void Test_9637() - { - } - [Fact] - public void Test_9638() - { - } - [Fact] - public void Test_9639() - { - } - [Fact] - public void Test_9640() - { - } - [Fact] - public void Test_9641() - { - } - [Fact] - public void Test_9642() - { - } - [Fact] - public void Test_9643() - { - } - [Fact] - public void Test_9644() - { - } - [Fact] - public void Test_9645() - { - } - [Fact] - public void Test_9646() - { - } - [Fact] - public void Test_9647() - { - } - [Fact] - public void Test_9648() - { - } - [Fact] - public void Test_9649() - { - } - [Fact] - public void Test_9650() - { - } - [Fact] - public void Test_9651() - { - } - [Fact] - public void Test_9652() - { - } - [Fact] - public void Test_9653() - { - } - [Fact] - public void Test_9654() - { - } - [Fact] - public void Test_9655() - { - } - [Fact] - public void Test_9656() - { - } - [Fact] - public void Test_9657() - { - } - [Fact] - public void Test_9658() - { - } - [Fact] - public void Test_9659() - { - } - [Fact] - public void Test_9660() - { - } - [Fact] - public void Test_9661() - { - } - [Fact] - public void Test_9662() - { - } - [Fact] - public void Test_9663() - { - } - [Fact] - public void Test_9664() - { - } - [Fact] - public void Test_9665() - { - } - [Fact] - public void Test_9666() - { - } - [Fact] - public void Test_9667() - { - } - [Fact] - public void Test_9668() - { - } - [Fact] - public void Test_9669() - { - } - [Fact] - public void Test_9670() - { - } - [Fact] - public void Test_9671() - { - } - [Fact] - public void Test_9672() - { - } - [Fact] - public void Test_9673() - { - } - [Fact] - public void Test_9674() - { - } - [Fact] - public void Test_9675() - { - } - [Fact] - public void Test_9676() - { - } - [Fact] - public void Test_9677() - { - } - [Fact] - public void Test_9678() - { - } - [Fact] - public void Test_9679() - { - } - [Fact] - public void Test_9680() - { - } - [Fact] - public void Test_9681() - { - } - [Fact] - public void Test_9682() - { - } - [Fact] - public void Test_9683() - { - } - [Fact] - public void Test_9684() - { - } - [Fact] - public void Test_9685() - { - } - [Fact] - public void Test_9686() - { - } - [Fact] - public void Test_9687() - { - } - [Fact] - public void Test_9688() - { - } - [Fact] - public void Test_9689() - { - } - [Fact] - public void Test_9690() - { - } - [Fact] - public void Test_9691() - { - } - [Fact] - public void Test_9692() - { - } - [Fact] - public void Test_9693() - { - } - [Fact] - public void Test_9694() - { - } - [Fact] - public void Test_9695() - { - } - [Fact] - public void Test_9696() - { - } - [Fact] - public void Test_9697() - { - } - [Fact] - public void Test_9698() - { - } - [Fact] - public void Test_9699() - { - } - [Fact] - public void Test_9700() - { - } - [Fact] - public void Test_9701() - { - } - [Fact] - public void Test_9702() - { - } - [Fact] - public void Test_9703() - { - } - [Fact] - public void Test_9704() - { - } - [Fact] - public void Test_9705() - { - } - [Fact] - public void Test_9706() - { - } - [Fact] - public void Test_9707() - { - } - [Fact] - public void Test_9708() - { - } - [Fact] - public void Test_9709() - { - } - [Fact] - public void Test_9710() - { - } - [Fact] - public void Test_9711() - { - } - [Fact] - public void Test_9712() - { - } - [Fact] - public void Test_9713() - { - } - [Fact] - public void Test_9714() - { - } - [Fact] - public void Test_9715() - { - } - [Fact] - public void Test_9716() - { - } - [Fact] - public void Test_9717() - { - } - [Fact] - public void Test_9718() - { - } - [Fact] - public void Test_9719() - { - } - [Fact] - public void Test_9720() - { - } - [Fact] - public void Test_9721() - { - } - [Fact] - public void Test_9722() - { - } - [Fact] - public void Test_9723() - { - } - [Fact] - public void Test_9724() - { - } - [Fact] - public void Test_9725() - { - } - [Fact] - public void Test_9726() - { - } - [Fact] - public void Test_9727() - { - } - [Fact] - public void Test_9728() - { - } - [Fact] - public void Test_9729() - { - } - [Fact] - public void Test_9730() - { - } - [Fact] - public void Test_9731() - { - } - [Fact] - public void Test_9732() - { - } - [Fact] - public void Test_9733() - { - } - [Fact] - public void Test_9734() - { - } - [Fact] - public void Test_9735() - { - } - [Fact] - public void Test_9736() - { - } - [Fact] - public void Test_9737() - { - } - [Fact] - public void Test_9738() - { - } - [Fact] - public void Test_9739() - { - } - [Fact] - public void Test_9740() - { - } - [Fact] - public void Test_9741() - { - } - [Fact] - public void Test_9742() - { - } - [Fact] - public void Test_9743() - { - } - [Fact] - public void Test_9744() - { - } - [Fact] - public void Test_9745() - { - } - [Fact] - public void Test_9746() - { - } - [Fact] - public void Test_9747() - { - } - [Fact] - public void Test_9748() - { - } - [Fact] - public void Test_9749() - { - } - [Fact] - public void Test_9750() - { - } - [Fact] - public void Test_9751() - { - } - [Fact] - public void Test_9752() - { - } - [Fact] - public void Test_9753() - { - } - [Fact] - public void Test_9754() - { - } - [Fact] - public void Test_9755() - { - } - [Fact] - public void Test_9756() - { - } - [Fact] - public void Test_9757() - { - } - [Fact] - public void Test_9758() - { - } - [Fact] - public void Test_9759() - { - } - [Fact] - public void Test_9760() - { - } - [Fact] - public void Test_9761() - { - } - [Fact] - public void Test_9762() - { - } - [Fact] - public void Test_9763() - { - } - [Fact] - public void Test_9764() - { - } - [Fact] - public void Test_9765() - { - } - [Fact] - public void Test_9766() - { - } - [Fact] - public void Test_9767() - { - } - [Fact] - public void Test_9768() - { - } - [Fact] - public void Test_9769() - { - } - [Fact] - public void Test_9770() - { - } - [Fact] - public void Test_9771() - { - } - [Fact] - public void Test_9772() - { - } - [Fact] - public void Test_9773() - { - } - [Fact] - public void Test_9774() - { - } - [Fact] - public void Test_9775() - { - } - [Fact] - public void Test_9776() - { - } - [Fact] - public void Test_9777() - { - } - [Fact] - public void Test_9778() - { - } - [Fact] - public void Test_9779() - { - } - [Fact] - public void Test_9780() - { - } - [Fact] - public void Test_9781() - { - } - [Fact] - public void Test_9782() - { - } - [Fact] - public void Test_9783() - { - } - [Fact] - public void Test_9784() - { - } - [Fact] - public void Test_9785() - { - } - [Fact] - public void Test_9786() - { - } - [Fact] - public void Test_9787() - { - } - [Fact] - public void Test_9788() - { - } - [Fact] - public void Test_9789() - { - } - [Fact] - public void Test_9790() - { - } - [Fact] - public void Test_9791() - { - } - [Fact] - public void Test_9792() - { - } - [Fact] - public void Test_9793() - { - } - [Fact] - public void Test_9794() - { - } - [Fact] - public void Test_9795() - { - } - [Fact] - public void Test_9796() - { - } - [Fact] - public void Test_9797() - { - } - [Fact] - public void Test_9798() - { - } - [Fact] - public void Test_9799() - { - } - [Fact] - public void Test_9800() - { - } - [Fact] - public void Test_9801() - { - } - [Fact] - public void Test_9802() - { - } - [Fact] - public void Test_9803() - { - } - [Fact] - public void Test_9804() - { - } - [Fact] - public void Test_9805() - { - } - [Fact] - public void Test_9806() - { - } - [Fact] - public void Test_9807() - { - } - [Fact] - public void Test_9808() - { - } - [Fact] - public void Test_9809() - { - } - [Fact] - public void Test_9810() - { - } - [Fact] - public void Test_9811() - { - } - [Fact] - public void Test_9812() - { - } - [Fact] - public void Test_9813() - { - } - [Fact] - public void Test_9814() - { - } - [Fact] - public void Test_9815() - { - } - [Fact] - public void Test_9816() - { - } - [Fact] - public void Test_9817() - { - } - [Fact] - public void Test_9818() - { - } - [Fact] - public void Test_9819() - { - } - [Fact] - public void Test_9820() - { - } - [Fact] - public void Test_9821() - { - } - [Fact] - public void Test_9822() - { - } - [Fact] - public void Test_9823() - { - } - [Fact] - public void Test_9824() - { - } - [Fact] - public void Test_9825() - { - } - [Fact] - public void Test_9826() - { - } - [Fact] - public void Test_9827() - { - } - [Fact] - public void Test_9828() - { - } - [Fact] - public void Test_9829() - { - } - [Fact] - public void Test_9830() - { - } - [Fact] - public void Test_9831() - { - } - [Fact] - public void Test_9832() - { - } - [Fact] - public void Test_9833() - { - } - [Fact] - public void Test_9834() - { - } - [Fact] - public void Test_9835() - { - } - [Fact] - public void Test_9836() - { - } - [Fact] - public void Test_9837() - { - } - [Fact] - public void Test_9838() - { - } - [Fact] - public void Test_9839() - { - } - [Fact] - public void Test_9840() - { - } - [Fact] - public void Test_9841() - { - } - [Fact] - public void Test_9842() - { - } - [Fact] - public void Test_9843() - { - } - [Fact] - public void Test_9844() - { - } - [Fact] - public void Test_9845() - { - } - [Fact] - public void Test_9846() - { - } - [Fact] - public void Test_9847() - { - } - [Fact] - public void Test_9848() - { - } - [Fact] - public void Test_9849() - { - } - [Fact] - public void Test_9850() - { - } - [Fact] - public void Test_9851() - { - } - [Fact] - public void Test_9852() - { - } - [Fact] - public void Test_9853() - { - } - [Fact] - public void Test_9854() - { - } - [Fact] - public void Test_9855() - { - } - [Fact] - public void Test_9856() - { - } - [Fact] - public void Test_9857() - { - } - [Fact] - public void Test_9858() - { - } - [Fact] - public void Test_9859() - { - } - [Fact] - public void Test_9860() - { - } - [Fact] - public void Test_9861() - { - } - [Fact] - public void Test_9862() - { - } - [Fact] - public void Test_9863() - { - } - [Fact] - public void Test_9864() - { - } - [Fact] - public void Test_9865() - { - } - [Fact] - public void Test_9866() - { - } - [Fact] - public void Test_9867() - { - } - [Fact] - public void Test_9868() - { - } - [Fact] - public void Test_9869() - { - } - [Fact] - public void Test_9870() - { - } - [Fact] - public void Test_9871() - { - } - [Fact] - public void Test_9872() - { - } - [Fact] - public void Test_9873() - { - } - [Fact] - public void Test_9874() - { - } - [Fact] - public void Test_9875() - { - } - [Fact] - public void Test_9876() - { - } - [Fact] - public void Test_9877() - { - } - [Fact] - public void Test_9878() - { - } - [Fact] - public void Test_9879() - { - } - [Fact] - public void Test_9880() - { - } - [Fact] - public void Test_9881() - { - } - [Fact] - public void Test_9882() - { - } - [Fact] - public void Test_9883() - { - } - [Fact] - public void Test_9884() - { - } - [Fact] - public void Test_9885() - { - } - [Fact] - public void Test_9886() - { - } - [Fact] - public void Test_9887() - { - } - [Fact] - public void Test_9888() - { - } - [Fact] - public void Test_9889() - { - } - [Fact] - public void Test_9890() - { - } - [Fact] - public void Test_9891() - { - } - [Fact] - public void Test_9892() - { - } - [Fact] - public void Test_9893() - { - } - [Fact] - public void Test_9894() - { - } - [Fact] - public void Test_9895() - { - } - [Fact] - public void Test_9896() - { - } - [Fact] - public void Test_9897() - { - } - [Fact] - public void Test_9898() - { - } - [Fact] - public void Test_9899() - { - } - [Fact] - public void Test_9900() - { - } - [Fact] - public void Test_9901() - { - } - [Fact] - public void Test_9902() - { - } - [Fact] - public void Test_9903() - { - } - [Fact] - public void Test_9904() - { - } - [Fact] - public void Test_9905() - { - } - [Fact] - public void Test_9906() - { - } - [Fact] - public void Test_9907() - { - } - [Fact] - public void Test_9908() - { - } - [Fact] - public void Test_9909() - { - } - [Fact] - public void Test_9910() - { - } - [Fact] - public void Test_9911() - { - } - [Fact] - public void Test_9912() - { - } - [Fact] - public void Test_9913() - { - } - [Fact] - public void Test_9914() - { - } - [Fact] - public void Test_9915() - { - } - [Fact] - public void Test_9916() - { - } - [Fact] - public void Test_9917() - { - } - [Fact] - public void Test_9918() - { - } - [Fact] - public void Test_9919() - { - } - [Fact] - public void Test_9920() - { - } - [Fact] - public void Test_9921() - { - } - [Fact] - public void Test_9922() - { - } - [Fact] - public void Test_9923() - { - } - [Fact] - public void Test_9924() - { - } - [Fact] - public void Test_9925() - { - } - [Fact] - public void Test_9926() - { - } - [Fact] - public void Test_9927() - { - } - [Fact] - public void Test_9928() - { - } - [Fact] - public void Test_9929() - { - } - [Fact] - public void Test_9930() - { - } - [Fact] - public void Test_9931() - { - } - [Fact] - public void Test_9932() - { - } - [Fact] - public void Test_9933() - { - } - [Fact] - public void Test_9934() - { - } - [Fact] - public void Test_9935() - { - } - [Fact] - public void Test_9936() - { - } - [Fact] - public void Test_9937() - { - } - [Fact] - public void Test_9938() - { - } - [Fact] - public void Test_9939() - { - } - [Fact] - public void Test_9940() - { - } - [Fact] - public void Test_9941() - { - } - [Fact] - public void Test_9942() - { - } - [Fact] - public void Test_9943() - { - } - [Fact] - public void Test_9944() - { - } - [Fact] - public void Test_9945() - { - } - [Fact] - public void Test_9946() - { - } - [Fact] - public void Test_9947() - { - } - [Fact] - public void Test_9948() - { - } - [Fact] - public void Test_9949() - { - } - [Fact] - public void Test_9950() - { - } - [Fact] - public void Test_9951() - { - } - [Fact] - public void Test_9952() - { - } - [Fact] - public void Test_9953() - { - } - [Fact] - public void Test_9954() - { - } - [Fact] - public void Test_9955() - { - } - [Fact] - public void Test_9956() - { - } - [Fact] - public void Test_9957() - { - } - [Fact] - public void Test_9958() - { - } - [Fact] - public void Test_9959() - { - } - [Fact] - public void Test_9960() - { - } - [Fact] - public void Test_9961() - { - } - [Fact] - public void Test_9962() - { - } - [Fact] - public void Test_9963() - { - } - [Fact] - public void Test_9964() - { - } - [Fact] - public void Test_9965() - { - } - [Fact] - public void Test_9966() - { - } - [Fact] - public void Test_9967() - { - } - [Fact] - public void Test_9968() - { - } - [Fact] - public void Test_9969() - { - } - [Fact] - public void Test_9970() - { - } - [Fact] - public void Test_9971() - { - } - [Fact] - public void Test_9972() - { - } - [Fact] - public void Test_9973() - { - } - [Fact] - public void Test_9974() - { - } - [Fact] - public void Test_9975() - { - } - [Fact] - public void Test_9976() - { - } - [Fact] - public void Test_9977() - { - } - [Fact] - public void Test_9978() - { - } - [Fact] - public void Test_9979() - { - } - [Fact] - public void Test_9980() - { - } - [Fact] - public void Test_9981() - { - } - [Fact] - public void Test_9982() - { - } - [Fact] - public void Test_9983() - { - } - [Fact] - public void Test_9984() - { - } - [Fact] - public void Test_9985() - { - } - [Fact] - public void Test_9986() - { - } - [Fact] - public void Test_9987() - { - } - [Fact] - public void Test_9988() - { - } - [Fact] - public void Test_9989() - { - } - [Fact] - public void Test_9990() - { - } - [Fact] - public void Test_9991() - { - } - [Fact] - public void Test_9992() - { - } - [Fact] - public void Test_9993() - { - } - [Fact] - public void Test_9994() - { - } - [Fact] - public void Test_9995() - { - } - [Fact] - public void Test_9996() - { - } - [Fact] - public void Test_9997() - { - } - [Fact] - public void Test_9998() - { - } - [Fact] - public void Test_9999() - { - } - [Fact] - public void Test_10000() - { - } - #endregion - - #region FailingTests - #endregion - - } -} diff --git a/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XunitTests.tt b/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XunitTests.tt deleted file mode 100644 index f70f52d215..0000000000 --- a/test/TestAssets/PerfAssets/XUnitAdapterPerfTestProject/XunitTests.tt +++ /dev/null @@ -1,49 +0,0 @@ -using Xunit; - -namespace XUnitAdapterPerfTests -{ - public class XuniTests - { -<# - int passedTests = 10000; - int failedTests = 0; - String padding = "00"; - int count = 1; - String testmethodprefix = "Test_"; -#> - - #region PassingTests -<# - for(int i=0;i - [Fact] - public void <#=methodName#>() - { - } -<# - count++; - } -#> - #endregion - - #region FailingTests -<# - for(int i=0;i - [Fact] - public void <#=methodName#>() - { - Assert.Fail(); - } -<# - count++; - } -#> - #endregion - - } -} diff --git a/test/TestAssets/PerfTestProject/PerfTestProject.csproj b/test/TestAssets/PerfTestProject/PerfTestProject.csproj index 94c7a09f41..1601a6e3d3 100644 Binary files a/test/TestAssets/PerfTestProject/PerfTestProject.csproj and b/test/TestAssets/PerfTestProject/PerfTestProject.csproj differ diff --git a/test/TestAssets/PerfTestProject/Program.cs b/test/TestAssets/PerfTestProject/Program.cs deleted file mode 100644 index 3ee39b8af8..0000000000 --- a/test/TestAssets/PerfTestProject/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace PerfTestProject -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} - diff --git a/test/TestAssets/PerfTestProject/UnitTest1.cs b/test/TestAssets/PerfTestProject/UnitTest1.cs index e124b31913..13e350f0c2 100644 --- a/test/TestAssets/PerfTestProject/UnitTest1.cs +++ b/test/TestAssets/PerfTestProject/UnitTest1.cs @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using Microsoft.VisualStudio.TestTools.UnitTesting; + namespace PerfTestProject { - using Microsoft.VisualStudio.TestTools.UnitTesting; - /// /// The unit test 1. /// diff --git a/test/TestAssets/ProjectFileRunSettingsTestProject/ProjectFileRunSettingsTestProject.csproj b/test/TestAssets/ProjectFileRunSettingsTestProject/ProjectFileRunSettingsTestProject.csproj index 1ad743626e..c44b84fd01 100644 --- a/test/TestAssets/ProjectFileRunSettingsTestProject/ProjectFileRunSettingsTestProject.csproj +++ b/test/TestAssets/ProjectFileRunSettingsTestProject/ProjectFileRunSettingsTestProject.csproj @@ -1,25 +1,21 @@ - - - netcoreapp2.1;net451 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) x64 fail.runsettings - - - + + + - + - \ No newline at end of file + diff --git a/test/TestAssets/ProjectFileRunSettingsTestProject/UnitTest1.cs b/test/TestAssets/ProjectFileRunSettingsTestProject/UnitTest1.cs index 0ec4b790f2..ee1491d65d 100644 --- a/test/TestAssets/ProjectFileRunSettingsTestProject/UnitTest1.cs +++ b/test/TestAssets/ProjectFileRunSettingsTestProject/UnitTest1.cs @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; namespace ProjectFileRunSettingsTestProject diff --git a/test/TestAssets/QualityToolsAssets/BingWebTest/BingWebTest.csproj b/test/TestAssets/QualityToolsAssets/BingWebTest/BingWebTest.csproj index e9c0056a3f..248b264e3e 100644 --- a/test/TestAssets/QualityToolsAssets/BingWebTest/BingWebTest.csproj +++ b/test/TestAssets/QualityToolsAssets/BingWebTest/BingWebTest.csproj @@ -17,7 +17,6 @@ 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False true @@ -54,24 +53,6 @@ PreserveNewest - - - - - False - - - False - - - False - - - False - - - - - - - - netcoreapp1.0;netcoreapp1.1;netcoreapp2.1 - netcoreapp3.1 - true - false - - - - - - - - - - - - - - diff --git a/test/TestAssets/SampleProjectWithOldTestHost/UnitTest1.cs b/test/TestAssets/SampleProjectWithOldTestHost/UnitTest1.cs deleted file mode 100644 index 4df22575dc..0000000000 --- a/test/TestAssets/SampleProjectWithOldTestHost/UnitTest1.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace SampleProjectWithOldTestHost -{ - [TestClass] - public class UnitTest1 - { - [TestMethod] - public void TestMethod1() - { - } - } -} diff --git a/test/TestAssets/SelfContainedAppTestProject/SelfContainedAppTestProject.csproj b/test/TestAssets/SelfContainedAppTestProject/SelfContainedAppTestProject.csproj index e6980294b6..0ec96ca324 100644 Binary files a/test/TestAssets/SelfContainedAppTestProject/SelfContainedAppTestProject.csproj and b/test/TestAssets/SelfContainedAppTestProject/SelfContainedAppTestProject.csproj differ diff --git a/test/TestAssets/SelfContainedAppTestProject/UnitTest1.cs b/test/TestAssets/SelfContainedAppTestProject/UnitTest1.cs index 6b5e36fa0b..418fed62d3 100644 --- a/test/TestAssets/SelfContainedAppTestProject/UnitTest1.cs +++ b/test/TestAssets/SelfContainedAppTestProject/UnitTest1.cs @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; namespace SelfContainedAppTestProject diff --git a/test/TestAssets/SerializeTestRunTestProject/SerializeTestRunTestProject.csproj b/test/TestAssets/SerializeTestRunTestProject/SerializeTestRunTestProject.csproj new file mode 100644 index 0000000000..02776870c2 --- /dev/null +++ b/test/TestAssets/SerializeTestRunTestProject/SerializeTestRunTestProject.csproj @@ -0,0 +1,24 @@ + + + + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + + + + + $(MSTestTestFrameworkVersion) + + + $(MSTestTestAdapterVersion) + + + $(PackageVersion) + + + + + + + + + diff --git a/test/TestAssets/SerializeTestRunTestProject/UnitTest1.cs b/test/TestAssets/SerializeTestRunTestProject/UnitTest1.cs new file mode 100644 index 0000000000..475ade64ee --- /dev/null +++ b/test/TestAssets/SerializeTestRunTestProject/UnitTest1.cs @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Threading; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +// Parallelize the execution +[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] + +namespace SerializeTestRunTestProject +{ + [TestClass] + public class UnitTest1 + { + private static readonly object ObjectToAcquire = new object(); + + private static void AcquireAndReleaseLock() + { + Assert.IsTrue(Monitor.TryEnter(ObjectToAcquire)); + Thread.Sleep(100); + Monitor.Exit(ObjectToAcquire); + } + + [TestMethod] + public void TestMethod1() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod2() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod3() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod4() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod5() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod6() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod7() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod8() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod9() => AcquireAndReleaseLock(); + + [TestMethod] + public void TestMethod10() => AcquireAndReleaseLock(); + } +} diff --git a/test/TestAssets/SimpleClassLibrary/Class1.cs b/test/TestAssets/SimpleClassLibrary/Class1.cs index b84cb4118f..a967b82aaf 100644 --- a/test/TestAssets/SimpleClassLibrary/Class1.cs +++ b/test/TestAssets/SimpleClassLibrary/Class1.cs @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System.Threading.Tasks; + namespace SimpleClassLibrary { - using System.Diagnostics; - using System.Threading.Tasks; - public class Class1 { public void PassingTest() @@ -22,7 +21,7 @@ public void OverLoadedMethod() { } - public void OverLoadedMethod(string name) + public void OverLoadedMethod(string _) { } } diff --git a/test/TestAssets/SimpleClassLibrary/SimpleClassLibrary.csproj b/test/TestAssets/SimpleClassLibrary/SimpleClassLibrary.csproj index ea770a0731..ac382027ea 100644 --- a/test/TestAssets/SimpleClassLibrary/SimpleClassLibrary.csproj +++ b/test/TestAssets/SimpleClassLibrary/SimpleClassLibrary.csproj @@ -1,15 +1,11 @@ - - - + - netcoreapp1.0;netcoreapp1.1;netcoreapp2.1;net451 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) - - + + @@ -18,10 +14,11 @@ portable - + full - + portable - \ No newline at end of file + + diff --git a/test/TestAssets/SimpleDataCollector/Class1.cs b/test/TestAssets/SimpleDataCollector/Class1.cs index 50998b8881..580e986450 100644 --- a/test/TestAssets/SimpleDataCollector/Class1.cs +++ b/test/TestAssets/SimpleDataCollector/Class1.cs @@ -1,32 +1,33 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.InProcDataCollector; + namespace SimpleDataCollector { - using System; - using System.IO; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.InProcDataCollector; - /// /// The ti listener tests. /// public class SimpleDataCollector : InProcDataCollection { - private readonly string fileName; + private readonly string _fileName; /// /// Initializes a new instance of the class. /// public SimpleDataCollector() { - this.fileName = Path.Combine(Path.GetTempPath(), "inproctest.txt"); + _fileName = Path.Combine(Path.GetTempPath(), "inproctest.txt"); } public void Initialize(IDataCollectionSink dataCollectionSink) { - // Do Nothing + // Do Nothing } /// @@ -38,10 +39,10 @@ public void Initialize(IDataCollectionSink dataCollectionSink) public void TestSessionStart(TestSessionStartArgs testSessionStartArgs) { Console.WriteLine(testSessionStartArgs.Configuration); - File.WriteAllText(this.fileName, "TestSessionStart : " + testSessionStartArgs.Configuration + "\r\n"); + File.WriteAllText(_fileName, "TestSessionStart : " + testSessionStartArgs.Configuration + "\r\n"); #if NETFRAMEWORK - var appDomainFilePath = Path.Combine(Path.GetTempPath(), "appdomain_datacollector.txt"); - File.WriteAllText(appDomainFilePath, "AppDomain FriendlyName: "+ AppDomain.CurrentDomain.FriendlyName); + var appDomainFilePath = Environment.GetEnvironmentVariable("TEST_ASSET_APPDOMAIN_COLLECTOR_PATH") ?? Path.Combine(Path.GetTempPath(), "appdomain_datacollector.txt"); + File.WriteAllText(appDomainFilePath, "AppDomain FriendlyName: " + AppDomain.CurrentDomain.FriendlyName); #endif } @@ -57,7 +58,7 @@ public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) "TestCase Name : {0}, TestCase ID:{1}", testCaseStartArgs.TestCase.DisplayName, testCaseStartArgs.TestCase.Id); - File.AppendAllText(this.fileName, "TestCaseStart : " + testCaseStartArgs.TestCase.DisplayName + "\r\n"); + File.AppendAllText(_fileName, "TestCaseStart : " + testCaseStartArgs.TestCase.DisplayName + "\r\n"); } /// @@ -68,8 +69,8 @@ public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) /// public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) { - Console.WriteLine("TestCase Name:{0}, TestCase ID:{1}, OutCome:{2}", testCaseEndArgs.DataCollectionContext.TestCase.DisplayName, testCaseEndArgs.DataCollectionContext.TestCase.Id, testCaseEndArgs.TestOutcome); - File.AppendAllText(this.fileName, "TestCaseEnd : " + testCaseEndArgs.DataCollectionContext.TestCase.DisplayName + "\r\n"); + Console.WriteLine("TestCase Name:{0}, TestCase ID:{1}, OutCome:{2}", testCaseEndArgs.DataCollectionContext.TestCase.DisplayName, testCaseEndArgs.DataCollectionContext.TestCase.Id, testCaseEndArgs.TestOutcome); + File.AppendAllText(_fileName, "TestCaseEnd : " + testCaseEndArgs.DataCollectionContext.TestCase.DisplayName + "\r\n"); } /// @@ -81,7 +82,7 @@ public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) public void TestSessionEnd(TestSessionEndArgs testSessionEndArgs) { Console.WriteLine("TestSession Ended"); - File.AppendAllText(this.fileName, "TestSessionEnd"); + File.AppendAllText(_fileName, "TestSessionEnd"); } } } diff --git a/test/TestAssets/SimpleDataCollector/SimpleDataCollector.csproj b/test/TestAssets/SimpleDataCollector/SimpleDataCollector.csproj index b14207c1d7..7f7262516d 100644 Binary files a/test/TestAssets/SimpleDataCollector/SimpleDataCollector.csproj and b/test/TestAssets/SimpleDataCollector/SimpleDataCollector.csproj differ diff --git a/test/TestAssets/SimpleTestProject/SimpleTestProject.csproj b/test/TestAssets/SimpleTestProject/SimpleTestProject.csproj index 6aa9b4cc10..bfd19d5549 100644 Binary files a/test/TestAssets/SimpleTestProject/SimpleTestProject.csproj and b/test/TestAssets/SimpleTestProject/SimpleTestProject.csproj differ diff --git a/test/TestAssets/SimpleTestProject/UnitTest1.cs b/test/TestAssets/SimpleTestProject/UnitTest1.cs index fba55f698b..1496002aec 100644 --- a/test/TestAssets/SimpleTestProject/UnitTest1.cs +++ b/test/TestAssets/SimpleTestProject/UnitTest1.cs @@ -1,12 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +#if NETFRAMEWORK +using System; +using System.IO; +#endif +using Microsoft.VisualStudio.TestTools.UnitTesting; + namespace SampleUnitTestProject { - using System; - using System.IO; - using Microsoft.VisualStudio.TestTools.UnitTesting; - /// /// The unit test 1. /// @@ -33,7 +35,7 @@ public void FailingTest() { #if NETFRAMEWORK // current App domain should be write to file to test DisableAppDomain acceptance test. - var appDomainFilePath = Path.Combine(Path.GetTempPath(), "appdomain_test.txt"); + var appDomainFilePath = Environment.GetEnvironmentVariable("TEST_ASSET_APPDOMAIN_TEST_PATH") ?? Path.Combine(Path.GetTempPath(), "appdomain_test.txt"); File.WriteAllText(appDomainFilePath, "AppDomain FriendlyName: " + AppDomain.CurrentDomain.FriendlyName); #endif Assert.AreEqual(2, 3); diff --git a/test/TestAssets/SimpleTestProject2/Program.cs b/test/TestAssets/SimpleTestProject2/Program.cs deleted file mode 100644 index 80615b0898..0000000000 --- a/test/TestAssets/SimpleTestProject2/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace SimpleTestProject2 -{ - public class Program - { - public static void Main(string[] args) - { - - } - } -} diff --git a/test/TestAssets/SimpleTestProject2/SimpleTestProject2.csproj b/test/TestAssets/SimpleTestProject2/SimpleTestProject2.csproj index e3cd2aa7b3..5747451e98 100644 Binary files a/test/TestAssets/SimpleTestProject2/SimpleTestProject2.csproj and b/test/TestAssets/SimpleTestProject2/SimpleTestProject2.csproj differ diff --git a/test/TestAssets/SimpleTestProject2/UnitTest1.cs b/test/TestAssets/SimpleTestProject2/UnitTest1.cs index b97b671bb9..4b790665a2 100644 --- a/test/TestAssets/SimpleTestProject2/UnitTest1.cs +++ b/test/TestAssets/SimpleTestProject2/UnitTest1.cs @@ -1,40 +1,40 @@ -// Copyright (c) Microsoft. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace SampleUnitTestProject2 -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SampleUnitTestProject2; +/// +/// The unit test 1. +/// +[TestClass] +public class UnitTest1 +{ /// - /// The unit test 1. + /// The passing test. /// - [TestClass] - public class UnitTest1 + [TestMethod] + public void PassingTest2() { - /// - /// The passing test. - /// - [TestMethod] - public void PassingTest2() - { - Assert.AreEqual(2, 2); - } + Assert.AreEqual(2, 2); + } - /// - /// The failing test. - /// - [TestMethod] - public void FailingTest2() - { - Assert.AreEqual(2, 3); - } + /// + /// The failing test. + /// + [TestMethod] + public void FailingTest2() + { + Assert.AreEqual(2, 3); + } - /// - /// The skipping test. - /// - [Ignore] - [TestMethod] - public void SkippingTest2() - { - } + /// + /// The skipping test. + /// + [Ignore] + [TestMethod] + public void SkippingTest2() + { } } diff --git a/test/TestAssets/SimpleTestProject3/SimpleTestProject3.csproj b/test/TestAssets/SimpleTestProject3/SimpleTestProject3.csproj index 68d44a12b0..9d5a70e0fa 100644 --- a/test/TestAssets/SimpleTestProject3/SimpleTestProject3.csproj +++ b/test/TestAssets/SimpleTestProject3/SimpleTestProject3.csproj @@ -1,27 +1,23 @@ - + - - - netcoreapp2.1;net451 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) Exe x64 - - - + + + - + - - + + diff --git a/test/TestAssets/SimpleTestProject3/TestSessionTimeoutTest.cs b/test/TestAssets/SimpleTestProject3/TestSessionTimeoutTest.cs index 9de44ab9a5..4860755700 100644 --- a/test/TestAssets/SimpleTestProject3/TestSessionTimeoutTest.cs +++ b/test/TestAssets/SimpleTestProject3/TestSessionTimeoutTest.cs @@ -1,9 +1,10 @@ -// Copyright (c) Microsoft. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace SampleUnitTestProject3 { - using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] public class TestSessionTimeoutTest { diff --git a/test/TestAssets/SimpleTestProject3/UnitTest1.cs b/test/TestAssets/SimpleTestProject3/UnitTest1.cs index 3ce4c563cc..78c39fe3d1 100644 --- a/test/TestAssets/SimpleTestProject3/UnitTest1.cs +++ b/test/TestAssets/SimpleTestProject3/UnitTest1.cs @@ -1,16 +1,19 @@ -// Copyright (c) Microsoft. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace SampleUnitTestProject3 -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using System.IO; - using System.Reflection; - using System.Threading; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using System; +using System.IO; +using System.Reflection; +using System.Threading; #if NETFRAMEWORK - using System.Windows.Forms; +using System.Windows.Forms; #endif +namespace SampleUnitTestProject3 +{ + [TestClass] public class UnitTest1 { diff --git a/test/TestAssets/SimpleTestProjectARM/Program.cs b/test/TestAssets/SimpleTestProjectARM/Program.cs deleted file mode 100644 index 72a9860cf2..0000000000 --- a/test/TestAssets/SimpleTestProjectARM/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace SimpleTestProjectARM -{ - public class Program - { - public static void Main(string[] args) - { - } - } -} diff --git a/test/TestAssets/SimpleTestProjectARM/SimpleTestProjectARM.csproj b/test/TestAssets/SimpleTestProjectARM/SimpleTestProjectARM.csproj deleted file mode 100644 index 659d4e1984..0000000000 Binary files a/test/TestAssets/SimpleTestProjectARM/SimpleTestProjectARM.csproj and /dev/null differ diff --git a/test/TestAssets/SimpleTestProjectARM/UnitTest1.cs b/test/TestAssets/SimpleTestProjectARM/UnitTest1.cs deleted file mode 100644 index cddcbc7f11..0000000000 --- a/test/TestAssets/SimpleTestProjectARM/UnitTest1.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace SimpleTestProjectARM -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - /// - /// The unit test 1. - /// - [TestClass] - public class UnitTest1 - { - } -} diff --git a/test/TestAssets/SimpleTestProjectARM64/SimpleTestProjectARM64.csproj b/test/TestAssets/SimpleTestProjectARM64/SimpleTestProjectARM64.csproj new file mode 100644 index 0000000000..3f1c4b034e --- /dev/null +++ b/test/TestAssets/SimpleTestProjectARM64/SimpleTestProjectARM64.csproj @@ -0,0 +1,21 @@ + + + + + true + true + ARM64 + + + + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + Exe + + + + + + + + + diff --git a/test/TestAssets/SimpleTestProjectARM64/UnitTest1.cs b/test/TestAssets/SimpleTestProjectARM64/UnitTest1.cs new file mode 100644 index 0000000000..8603230ce7 --- /dev/null +++ b/test/TestAssets/SimpleTestProjectARM64/UnitTest1.cs @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SimpleTestProjectARM +{ + /// + /// The unit test 1. + /// + [TestClass] + public class UnitTest1 + { + } +} diff --git a/test/TestAssets/SimpleTestProjectMessedUpTargetFramework/SimpleTestProjectMessedUpTargetFramework.csproj b/test/TestAssets/SimpleTestProjectMessedUpTargetFramework/SimpleTestProjectMessedUpTargetFramework.csproj new file mode 100644 index 0000000000..34187149f4 --- /dev/null +++ b/test/TestAssets/SimpleTestProjectMessedUpTargetFramework/SimpleTestProjectMessedUpTargetFramework.csproj @@ -0,0 +1,21 @@ + + + + $(NetCoreAppMinimum) + true + true + + + + + $(MSTestTestFrameworkVersion) + + + $(MSTestTestAdapterVersion) + + + $(PackageVersion) + + + + diff --git a/test/TestAssets/SimpleTestProjectMessedUpTargetFramework/UnitTest1.cs b/test/TestAssets/SimpleTestProjectMessedUpTargetFramework/UnitTest1.cs new file mode 100644 index 0000000000..8c3ad218b1 --- /dev/null +++ b/test/TestAssets/SimpleTestProjectMessedUpTargetFramework/UnitTest1.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SimpleTestProjectMessedUpTargetFramework +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + } + } +} diff --git a/test/TestAssets/SimpleTestProjectx86/Program.cs b/test/TestAssets/SimpleTestProjectx86/Program.cs deleted file mode 100644 index 8988f8c442..0000000000 --- a/test/TestAssets/SimpleTestProjectx86/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace SimpleTestProjectx86 -{ - public class Program - { - public static void Main(string[] args) - { - - } - } -} diff --git a/test/TestAssets/SimpleTestProjectx86/SimpleTestProjectx86.csproj b/test/TestAssets/SimpleTestProjectx86/SimpleTestProjectx86.csproj index 6606fa6add..398c3d908d 100644 Binary files a/test/TestAssets/SimpleTestProjectx86/SimpleTestProjectx86.csproj and b/test/TestAssets/SimpleTestProjectx86/SimpleTestProjectx86.csproj differ diff --git a/test/TestAssets/SimpleTestProjectx86/UnitTest1.cs b/test/TestAssets/SimpleTestProjectx86/UnitTest1.cs index db8897be24..4e405dace5 100644 --- a/test/TestAssets/SimpleTestProjectx86/UnitTest1.cs +++ b/test/TestAssets/SimpleTestProjectx86/UnitTest1.cs @@ -1,9 +1,10 @@ -// Copyright (c) Microsoft. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace SimpleTestProjectx86 { - using Microsoft.VisualStudio.TestTools.UnitTesting; - /// /// The unit test 1. /// diff --git a/test/TestAssets/TerminalLoggerTestProject/TerminalLoggerTestProject.csproj b/test/TestAssets/TerminalLoggerTestProject/TerminalLoggerTestProject.csproj new file mode 100644 index 0000000000..bfd19d5549 --- /dev/null +++ b/test/TestAssets/TerminalLoggerTestProject/TerminalLoggerTestProject.csproj @@ -0,0 +1,28 @@ + + + + + SimpleTestProject + $(NetFrameworkMinimum);$(NetCoreAppMinimum) + + + + + $(MSTestTestFrameworkVersion) + + + $(MSTestTestAdapterVersion) + + + $(PackageVersion) + + + + + + + + + + + diff --git a/test/TestAssets/TerminalLoggerTestProject/UnitTest1.cs b/test/TestAssets/TerminalLoggerTestProject/UnitTest1.cs new file mode 100644 index 0000000000..1d4b51287a --- /dev/null +++ b/test/TestAssets/TerminalLoggerTestProject/UnitTest1.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if NETFRAMEWORK +using System; +using System.IO; +#endif +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace TerminalLoggerUnitTests +{ + /// + /// The unit test 1. + /// + [TestClass] + public class UnitTest1 + { + /// + /// The passing test. + /// + [TestMethod] + public void PassingTest() + { + Assert.AreEqual(2, 2); + } + + /// + /// The failing test. + /// + [TestMethod] + public void FailingTest() + { + // test characters taken from https://pages.ucsd.edu/~dkjordan/chin/unitestuni.html + Assert.AreEqual("ğğğ𦮙我們剛才從𓋴𓅓𓏏𓇏𓇌𓀀", "not the same"); + } + + /// + /// The skipping test. + /// + [Ignore] + [TestMethod] + public void SkippingTest() + { + } + } +} diff --git a/test/TestAssets/TestAssets.sln b/test/TestAssets/TestAssets.sln index 8aa29c6ac7..286260a313 100644 --- a/test/TestAssets/TestAssets.sln +++ b/test/TestAssets/TestAssets.sln @@ -1,13 +1,13 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29102.190 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32024.52 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUnitAdapterPerfTestProject", "PerfAssets\NUnitAdapterPerfTestProject\NUnitAdapterPerfTestProject.csproj", "{F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUnit10kPassing", "performance\NUnit10kPassing\NUnit10kPassing.csproj", "{F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XUnitAdapterPerfTestProject", "PerfAssets\XUnitAdapterPerfTestProject\XUnitAdapterPerfTestProject.csproj", "{C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XUnit10kPassing", "performance\XUnit10kPassing\XUnit10kPassing.csproj", "{C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTestAdapterPerfTestProject", "PerfAssets\MSTestAdapterPerfTestProject\MSTestAdapterPerfTestProject.csproj", "{52CAF89F-2309-4597-B531-79D6A96902BE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTest10kPassing", "performance\MSTest10kPassing\MSTest10kPassing.csproj", "{52CAF89F-2309-4597-B531-79D6A96902BE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUTestProject", "NUTestProject\NUTestProject.csproj", "{1ADE5795-2365-4790-8ACB-2EF0C2613D61}" EndProject @@ -23,17 +23,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestProject2", "Simpl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OutOfProcDataCollector", "OutOfProcDataCollector\OutOfProcDataCollector.csproj", "{1266AB9D-94D9-496D-8AE5-73612D097A09}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfTestProject", "PerfTestProject\PerfTestProject.csproj", "{1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleRunners", "ConsoleRunners\ConsoleRunners.csproj", "{FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MstestV1UnitTestProject", "MstestV1UnitTestProject\MstestV1UnitTestProject.csproj", "{E28DD78A-E4C1-48C1-B027-88576F669C73}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestProjectx86", "SimpleTestProjectx86\SimpleTestProjectx86.csproj", "{C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestProjectARM", "SimpleTestProjectARM\SimpleTestProjectARM.csproj", "{7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CUITTestProject", "CUITTestProject\CUITTestProject.csproj", "{CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestProjectARM64", "SimpleTestProjectARM64\SimpleTestProjectARM64.csproj", "{7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DisableAppdomainTest1", "DisableAppdomainTest1\DisableAppdomainTest1.csproj", "{36C7990F-0A36-47CE-8E10-7887D24E2F9A}" EndProject @@ -64,8 +60,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscoveryTestProject", "Dis EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventLogUnitTestProject", "EventLogUnitTestProject\EventLogUnitTestProject.csproj", "{40DA6965-C3C3-46BC-BA56-6D457C097F3C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleProjectWithOldTestHost", "SampleProjectWithOldTestHost\SampleProjectWithOldTestHost.csproj", "{D7869421-F18B-4BEF-AECD-71485136808C}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleClassLibrary", "SimpleClassLibrary\SimpleClassLibrary.csproj", "{F37144D7-2C6D-42AF-9E85-EF10E5244A7B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SelfContainedAppTestProject", "SelfContainedAppTestProject\SelfContainedAppTestProject.csproj", "{7F85E9D0-7BCE-431D-B468-4F6104E52DFA}" @@ -90,512 +84,327 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "problematic-child", "proble EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ParametrizedTestProject", "ParametrizedTestProject\ParametrizedTestProject.csproj", "{CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AttachmentProcessorDataCollector", "AttachmentProcessorDataCollector\AttachmentProcessorDataCollector.csproj", "{16F51720-29D0-472A-93FA-2604D61991B7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ArchitectureSwitch", "ArchitectureSwitch\ArchitectureSwitch.csproj", "{452352E1-71CA-436E-8165-F284EE36C924}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestProjectMessedUpTargetFramework", "SimpleTestProjectMessedUpTargetFramework\SimpleTestProjectMessedUpTargetFramework.csproj", "{08C44607-EB80-4EE5-927D-08C34AA277AF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "performance", "performance", "{0C9CA869-32FD-4A9E-8885-E2E19786C746}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTest1Passing", "performance\MSTest1Passing\MSTest1Passing.csproj", "{3F23276F-F7D6-4E50-AA43-8DDB3EF1F680}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTest100Passing", "performance\MSTest100Passing\MSTest100Passing.csproj", "{027CADBF-7071-482A-8D86-CA03AC31FC4D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTest1000Passing", "performance\MSTest1000Passing\MSTest1000Passing.csproj", "{B0ECF78C-71A7-4281-B81E-7BD09649E5EE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUnit1Passing", "performance\NUnit1Passing\NUnit1Passing.csproj", "{EF157AEA-43B8-4923-9E86-BB134F17F2F0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUnit100Passing", "performance\NUnit100Passing\NUnit100Passing.csproj", "{76EFDDEC-4AD2-4B12-8EC9-440190B89418}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUnit1000Passing", "performance\NUnit1000Passing\NUnit1000Passing.csproj", "{75A46D17-91D6-430C-A8A8-C2D2E8C9943C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XUnit1Passing", "performance\XUnit1Passing\XUnit1Passing.csproj", "{B2F74D8D-9D16-493C-A716-B58426074075}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XUnit100Passing", "performance\XUnit100Passing\XUnit100Passing.csproj", "{06724523-611A-4054-A1AC-29DA2E87DD87}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XUnit1000Passing", "performance\XUnit1000Passing\XUnit1000Passing.csproj", "{15DC879D-1A60-4745-8DF4-EBC36EE12339}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTestProject2", "MSTestProject2\MSTestProject2.csproj", "{10AA955C-B412-41A8-899F-8609AAE19F61}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSTestProject1", "MSTestProject1\MSTestProject1.csproj", "{E166D337-4033-4209-863F-8F77675EAEE8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "basic", "basic", "{2633D125-64A7-456C-AD37-F8A6B56C2403}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tools", "Tools\Tools.csproj", "{85F9F2A8-D2A5-4EA1-8BE0-06CCE141EC7A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Perfy.TestAdapter", "performance\Perfy.TestAdapter\Perfy.TestAdapter.csproj", "{71BF7EC9-7BEE-4038-8F4E-87032FA4E995}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RecursiveResourceLookupCrash", "RecursiveResourceLookupCrash\RecursiveResourceLookupCrash.csproj", "{9B5BDF7D-5816-47C6-8CFD-E45B152CA35F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SerializeTestRunTestProject", "SerializeTestRunTestProject\SerializeTestRunTestProject.csproj", "{64C4C4CD-2319-4033-9F33-53AAA8FECEFA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MultiHostTestExecutionProject", "MultiHostTestExecutionProject\MultiHostTestExecutionProject.csproj", "{CE6673DA-B50F-46DF-99A3-8A7C54DE9B61}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NonDll.TestAdapter", "NonDll.TestAdapter\NonDll.TestAdapter.csproj", "{429552A4-4C18-4355-94C5-80DC88C48405}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetStandard2Library", "NetStandard2Library\NetStandard2Library.csproj", "{080F0AD2-E7AE-42C8-B867-56D78576735D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TerminalLoggerTestProject", "TerminalLoggerTestProject\TerminalLoggerTestProject.csproj", "{C69BEEA4-BE37-4155-8DD0-130C62D8BF6D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OutputtingTestProject", "OutputtingTestProject\OutputtingTestProject.csproj", "{A83CE873-2536-4795-B601-5816294ED0B8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Debug|x64.ActiveCfg = Debug|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Debug|x64.Build.0 = Debug|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Debug|x86.ActiveCfg = Debug|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Debug|x86.Build.0 = Debug|Any CPU {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Release|Any CPU.ActiveCfg = Release|Any CPU {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Release|Any CPU.Build.0 = Release|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Release|x64.ActiveCfg = Release|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Release|x64.Build.0 = Release|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Release|x86.ActiveCfg = Release|Any CPU - {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4}.Release|x86.Build.0 = Release|Any CPU {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Debug|x64.ActiveCfg = Debug|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Debug|x64.Build.0 = Debug|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Debug|x86.ActiveCfg = Debug|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Debug|x86.Build.0 = Debug|Any CPU {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Release|Any CPU.ActiveCfg = Release|Any CPU {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Release|Any CPU.Build.0 = Release|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Release|x64.ActiveCfg = Release|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Release|x64.Build.0 = Release|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Release|x86.ActiveCfg = Release|Any CPU - {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF}.Release|x86.Build.0 = Release|Any CPU {52CAF89F-2309-4597-B531-79D6A96902BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {52CAF89F-2309-4597-B531-79D6A96902BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Debug|x64.ActiveCfg = Debug|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Debug|x64.Build.0 = Debug|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Debug|x86.ActiveCfg = Debug|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Debug|x86.Build.0 = Debug|Any CPU {52CAF89F-2309-4597-B531-79D6A96902BE}.Release|Any CPU.ActiveCfg = Release|Any CPU {52CAF89F-2309-4597-B531-79D6A96902BE}.Release|Any CPU.Build.0 = Release|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Release|x64.ActiveCfg = Release|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Release|x64.Build.0 = Release|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Release|x86.ActiveCfg = Release|Any CPU - {52CAF89F-2309-4597-B531-79D6A96902BE}.Release|x86.Build.0 = Release|Any CPU {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Debug|x64.ActiveCfg = Debug|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Debug|x64.Build.0 = Debug|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Debug|x86.ActiveCfg = Debug|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Debug|x86.Build.0 = Debug|Any CPU {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Release|Any CPU.ActiveCfg = Release|Any CPU {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Release|Any CPU.Build.0 = Release|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Release|x64.ActiveCfg = Release|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Release|x64.Build.0 = Release|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Release|x86.ActiveCfg = Release|Any CPU - {1ADE5795-2365-4790-8ACB-2EF0C2613D61}.Release|x86.Build.0 = Release|Any CPU {29294E06-3998-4FF4-910F-EE93A915C3A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {29294E06-3998-4FF4-910F-EE93A915C3A1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Debug|x64.ActiveCfg = Debug|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Debug|x64.Build.0 = Debug|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Debug|x86.ActiveCfg = Debug|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Debug|x86.Build.0 = Debug|Any CPU {29294E06-3998-4FF4-910F-EE93A915C3A1}.Release|Any CPU.ActiveCfg = Release|Any CPU {29294E06-3998-4FF4-910F-EE93A915C3A1}.Release|Any CPU.Build.0 = Release|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Release|x64.ActiveCfg = Release|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Release|x64.Build.0 = Release|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Release|x86.ActiveCfg = Release|Any CPU - {29294E06-3998-4FF4-910F-EE93A915C3A1}.Release|x86.Build.0 = Release|Any CPU {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Debug|x64.ActiveCfg = Debug|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Debug|x64.Build.0 = Debug|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Debug|x86.ActiveCfg = Debug|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Debug|x86.Build.0 = Debug|Any CPU {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Release|Any CPU.ActiveCfg = Release|Any CPU {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Release|Any CPU.Build.0 = Release|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Release|x64.ActiveCfg = Release|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Release|x64.Build.0 = Release|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Release|x86.ActiveCfg = Release|Any CPU - {C8AB532E-28E9-4C5E-9F2D-06B6690FCB72}.Release|x86.Build.0 = Release|Any CPU {7E79BDC2-49BA-403A-BE07-212C463A279B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7E79BDC2-49BA-403A-BE07-212C463A279B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Debug|x64.ActiveCfg = Debug|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Debug|x64.Build.0 = Debug|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Debug|x86.ActiveCfg = Debug|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Debug|x86.Build.0 = Debug|Any CPU {7E79BDC2-49BA-403A-BE07-212C463A279B}.Release|Any CPU.ActiveCfg = Release|Any CPU {7E79BDC2-49BA-403A-BE07-212C463A279B}.Release|Any CPU.Build.0 = Release|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Release|x64.ActiveCfg = Release|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Release|x64.Build.0 = Release|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Release|x86.ActiveCfg = Release|Any CPU - {7E79BDC2-49BA-403A-BE07-212C463A279B}.Release|x86.Build.0 = Release|Any CPU {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Debug|x64.ActiveCfg = Debug|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Debug|x64.Build.0 = Debug|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Debug|x86.ActiveCfg = Debug|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Debug|x86.Build.0 = Debug|Any CPU {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Release|Any CPU.Build.0 = Release|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Release|x64.ActiveCfg = Release|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Release|x64.Build.0 = Release|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Release|x86.ActiveCfg = Release|Any CPU - {E0042DCD-0C90-4736-B673-BC6CBDA04834}.Release|x86.Build.0 = Release|Any CPU {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Debug|x64.ActiveCfg = Debug|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Debug|x64.Build.0 = Debug|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Debug|x86.ActiveCfg = Debug|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Debug|x86.Build.0 = Debug|Any CPU {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Release|Any CPU.ActiveCfg = Release|Any CPU {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Release|Any CPU.Build.0 = Release|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Release|x64.ActiveCfg = Release|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Release|x64.Build.0 = Release|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Release|x86.ActiveCfg = Release|Any CPU - {2B0F911C-5864-4EF7-A1F4-6923F7963D74}.Release|x86.Build.0 = Release|Any CPU {1266AB9D-94D9-496D-8AE5-73612D097A09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1266AB9D-94D9-496D-8AE5-73612D097A09}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Debug|x64.ActiveCfg = Debug|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Debug|x64.Build.0 = Debug|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Debug|x86.ActiveCfg = Debug|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Debug|x86.Build.0 = Debug|Any CPU {1266AB9D-94D9-496D-8AE5-73612D097A09}.Release|Any CPU.ActiveCfg = Release|Any CPU {1266AB9D-94D9-496D-8AE5-73612D097A09}.Release|Any CPU.Build.0 = Release|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Release|x64.ActiveCfg = Release|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Release|x64.Build.0 = Release|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Release|x86.ActiveCfg = Release|Any CPU - {1266AB9D-94D9-496D-8AE5-73612D097A09}.Release|x86.Build.0 = Release|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Debug|x64.ActiveCfg = Debug|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Debug|x64.Build.0 = Debug|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Debug|x86.ActiveCfg = Debug|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Debug|x86.Build.0 = Debug|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Release|Any CPU.Build.0 = Release|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Release|x64.ActiveCfg = Release|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Release|x64.Build.0 = Release|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Release|x86.ActiveCfg = Release|Any CPU - {1D1FDCD9-10B5-4C54-8A95-AD0C941F41C6}.Release|x86.Build.0 = Release|Any CPU {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Debug|x64.ActiveCfg = Debug|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Debug|x64.Build.0 = Debug|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Debug|x86.ActiveCfg = Debug|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Debug|x86.Build.0 = Debug|Any CPU {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Release|Any CPU.ActiveCfg = Release|Any CPU {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Release|Any CPU.Build.0 = Release|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Release|x64.ActiveCfg = Release|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Release|x64.Build.0 = Release|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Release|x86.ActiveCfg = Release|Any CPU - {FBDB7A61-C1DB-4B24-B568-DA96AAD0DB8A}.Release|x86.Build.0 = Release|Any CPU {E28DD78A-E4C1-48C1-B027-88576F669C73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E28DD78A-E4C1-48C1-B027-88576F669C73}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Debug|x64.ActiveCfg = Debug|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Debug|x64.Build.0 = Debug|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Debug|x86.ActiveCfg = Debug|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Debug|x86.Build.0 = Debug|Any CPU {E28DD78A-E4C1-48C1-B027-88576F669C73}.Release|Any CPU.ActiveCfg = Release|Any CPU {E28DD78A-E4C1-48C1-B027-88576F669C73}.Release|Any CPU.Build.0 = Release|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Release|x64.ActiveCfg = Release|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Release|x64.Build.0 = Release|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Release|x86.ActiveCfg = Release|Any CPU - {E28DD78A-E4C1-48C1-B027-88576F669C73}.Release|x86.Build.0 = Release|Any CPU {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Debug|x64.ActiveCfg = Debug|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Debug|x64.Build.0 = Debug|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Debug|x86.ActiveCfg = Debug|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Debug|x86.Build.0 = Debug|Any CPU {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Release|Any CPU.ActiveCfg = Release|Any CPU {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Release|Any CPU.Build.0 = Release|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Release|x64.ActiveCfg = Release|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Release|x64.Build.0 = Release|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Release|x86.ActiveCfg = Release|Any CPU - {C4369F97-5D81-4D1A-BAE1-2AE3B2408D44}.Release|x86.Build.0 = Release|Any CPU {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Debug|x64.ActiveCfg = Debug|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Debug|x64.Build.0 = Debug|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Debug|x86.ActiveCfg = Debug|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Debug|x86.Build.0 = Debug|Any CPU {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Release|Any CPU.Build.0 = Release|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Release|x64.ActiveCfg = Release|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Release|x64.Build.0 = Release|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Release|x86.ActiveCfg = Release|Any CPU - {7C865EAA-C6C2-4CAF-A6AD-D9CF29577A36}.Release|x86.Build.0 = Release|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Debug|x64.ActiveCfg = Debug|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Debug|x64.Build.0 = Debug|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Debug|x86.ActiveCfg = Debug|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Debug|x86.Build.0 = Debug|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Release|Any CPU.Build.0 = Release|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Release|x64.ActiveCfg = Release|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Release|x64.Build.0 = Release|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Release|x86.ActiveCfg = Release|Any CPU - {CF46C8A0-E9FA-40E9-96CA-DCD3797546D8}.Release|x86.Build.0 = Release|Any CPU {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Debug|x64.ActiveCfg = Debug|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Debug|x64.Build.0 = Debug|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Debug|x86.ActiveCfg = Debug|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Debug|x86.Build.0 = Debug|Any CPU {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Release|Any CPU.ActiveCfg = Release|Any CPU {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Release|Any CPU.Build.0 = Release|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Release|x64.ActiveCfg = Release|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Release|x64.Build.0 = Release|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Release|x86.ActiveCfg = Release|Any CPU - {36C7990F-0A36-47CE-8E10-7887D24E2F9A}.Release|x86.Build.0 = Release|Any CPU {A09B21CC-F726-413A-B185-3AE1172BAED0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A09B21CC-F726-413A-B185-3AE1172BAED0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Debug|x64.ActiveCfg = Debug|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Debug|x64.Build.0 = Debug|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Debug|x86.ActiveCfg = Debug|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Debug|x86.Build.0 = Debug|Any CPU {A09B21CC-F726-413A-B185-3AE1172BAED0}.Release|Any CPU.ActiveCfg = Release|Any CPU {A09B21CC-F726-413A-B185-3AE1172BAED0}.Release|Any CPU.Build.0 = Release|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Release|x64.ActiveCfg = Release|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Release|x64.Build.0 = Release|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Release|x86.ActiveCfg = Release|Any CPU - {A09B21CC-F726-413A-B185-3AE1172BAED0}.Release|x86.Build.0 = Release|Any CPU {132E4690-DE43-4684-BA05-6942155EEAB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {132E4690-DE43-4684-BA05-6942155EEAB5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Debug|x64.ActiveCfg = Debug|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Debug|x64.Build.0 = Debug|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Debug|x86.ActiveCfg = Debug|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Debug|x86.Build.0 = Debug|Any CPU {132E4690-DE43-4684-BA05-6942155EEAB5}.Release|Any CPU.ActiveCfg = Release|Any CPU {132E4690-DE43-4684-BA05-6942155EEAB5}.Release|Any CPU.Build.0 = Release|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Release|x64.ActiveCfg = Release|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Release|x64.Build.0 = Release|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Release|x86.ActiveCfg = Release|Any CPU - {132E4690-DE43-4684-BA05-6942155EEAB5}.Release|x86.Build.0 = Release|Any CPU {8C38E692-FBE3-41A4-A008-4CA79B203985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8C38E692-FBE3-41A4-A008-4CA79B203985}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Debug|x64.ActiveCfg = Debug|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Debug|x64.Build.0 = Debug|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Debug|x86.ActiveCfg = Debug|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Debug|x86.Build.0 = Debug|Any CPU {8C38E692-FBE3-41A4-A008-4CA79B203985}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C38E692-FBE3-41A4-A008-4CA79B203985}.Release|Any CPU.Build.0 = Release|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Release|x64.ActiveCfg = Release|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Release|x64.Build.0 = Release|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Release|x86.ActiveCfg = Release|Any CPU - {8C38E692-FBE3-41A4-A008-4CA79B203985}.Release|x86.Build.0 = Release|Any CPU {79EDA259-5EA0-45F0-990A-F078427E198A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {79EDA259-5EA0-45F0-990A-F078427E198A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Debug|x64.ActiveCfg = Debug|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Debug|x64.Build.0 = Debug|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Debug|x86.ActiveCfg = Debug|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Debug|x86.Build.0 = Debug|Any CPU {79EDA259-5EA0-45F0-990A-F078427E198A}.Release|Any CPU.ActiveCfg = Release|Any CPU {79EDA259-5EA0-45F0-990A-F078427E198A}.Release|Any CPU.Build.0 = Release|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Release|x64.ActiveCfg = Release|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Release|x64.Build.0 = Release|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Release|x86.ActiveCfg = Release|Any CPU - {79EDA259-5EA0-45F0-990A-F078427E198A}.Release|x86.Build.0 = Release|Any CPU {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Debug|x64.ActiveCfg = Debug|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Debug|x64.Build.0 = Debug|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Debug|x86.ActiveCfg = Debug|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Debug|x86.Build.0 = Debug|Any CPU {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Release|Any CPU.Build.0 = Release|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Release|x64.ActiveCfg = Release|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Release|x64.Build.0 = Release|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Release|x86.ActiveCfg = Release|Any CPU - {BF090BCE-CC7D-4359-93E2-30F2B454F751}.Release|x86.Build.0 = Release|Any CPU {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Debug|x64.ActiveCfg = Debug|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Debug|x64.Build.0 = Debug|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Debug|x86.ActiveCfg = Debug|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Debug|x86.Build.0 = Debug|Any CPU {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Release|Any CPU.ActiveCfg = Release|Any CPU {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Release|Any CPU.Build.0 = Release|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Release|x64.ActiveCfg = Release|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Release|x64.Build.0 = Release|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Release|x86.ActiveCfg = Release|Any CPU - {BA53C202-55D6-4BBC-A24A-444B2D5F6309}.Release|x86.Build.0 = Release|Any CPU {A0113409-56D3-4060-BD94-A4BA4739712D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A0113409-56D3-4060-BD94-A4BA4739712D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Debug|x64.ActiveCfg = Debug|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Debug|x64.Build.0 = Debug|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Debug|x86.ActiveCfg = Debug|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Debug|x86.Build.0 = Debug|Any CPU {A0113409-56D3-4060-BD94-A4BA4739712D}.Release|Any CPU.ActiveCfg = Release|Any CPU {A0113409-56D3-4060-BD94-A4BA4739712D}.Release|Any CPU.Build.0 = Release|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Release|x64.ActiveCfg = Release|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Release|x64.Build.0 = Release|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Release|x86.ActiveCfg = Release|Any CPU - {A0113409-56D3-4060-BD94-A4BA4739712D}.Release|x86.Build.0 = Release|Any CPU {7A04F7AC-09E4-426C-A599-110DFA693200}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A04F7AC-09E4-426C-A599-110DFA693200}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Debug|x64.ActiveCfg = Debug|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Debug|x64.Build.0 = Debug|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Debug|x86.ActiveCfg = Debug|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Debug|x86.Build.0 = Debug|Any CPU {7A04F7AC-09E4-426C-A599-110DFA693200}.Release|Any CPU.ActiveCfg = Release|Any CPU {7A04F7AC-09E4-426C-A599-110DFA693200}.Release|Any CPU.Build.0 = Release|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Release|x64.ActiveCfg = Release|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Release|x64.Build.0 = Release|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Release|x86.ActiveCfg = Release|Any CPU - {7A04F7AC-09E4-426C-A599-110DFA693200}.Release|x86.Build.0 = Release|Any CPU {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Debug|x64.ActiveCfg = Debug|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Debug|x64.Build.0 = Debug|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Debug|x86.ActiveCfg = Debug|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Debug|x86.Build.0 = Debug|Any CPU {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Release|Any CPU.ActiveCfg = Release|Any CPU {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Release|Any CPU.Build.0 = Release|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Release|x64.ActiveCfg = Release|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Release|x64.Build.0 = Release|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Release|x86.ActiveCfg = Release|Any CPU - {1FF723F6-3A09-41F6-B85C-C4BE9C4374F0}.Release|x86.Build.0 = Release|Any CPU {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Debug|x64.ActiveCfg = Debug|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Debug|x64.Build.0 = Debug|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Debug|x86.ActiveCfg = Debug|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Debug|x86.Build.0 = Debug|Any CPU {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Release|Any CPU.ActiveCfg = Release|Any CPU {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Release|Any CPU.Build.0 = Release|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Release|x64.ActiveCfg = Release|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Release|x64.Build.0 = Release|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Release|x86.ActiveCfg = Release|Any CPU - {4BAA0E81-FB31-4BAB-BD75-0CA315245BD8}.Release|x86.Build.0 = Release|Any CPU {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Debug|x64.ActiveCfg = Debug|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Debug|x64.Build.0 = Debug|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Debug|x86.ActiveCfg = Debug|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Debug|x86.Build.0 = Debug|Any CPU {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Release|Any CPU.ActiveCfg = Release|Any CPU {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Release|Any CPU.Build.0 = Release|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Release|x64.ActiveCfg = Release|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Release|x64.Build.0 = Release|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Release|x86.ActiveCfg = Release|Any CPU - {40DA6965-C3C3-46BC-BA56-6D457C097F3C}.Release|x86.Build.0 = Release|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Debug|x64.ActiveCfg = Debug|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Debug|x64.Build.0 = Debug|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Debug|x86.ActiveCfg = Debug|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Debug|x86.Build.0 = Debug|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Release|Any CPU.Build.0 = Release|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Release|x64.ActiveCfg = Release|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Release|x64.Build.0 = Release|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Release|x86.ActiveCfg = Release|Any CPU - {D7869421-F18B-4BEF-AECD-71485136808C}.Release|x86.Build.0 = Release|Any CPU {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Debug|x64.ActiveCfg = Debug|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Debug|x64.Build.0 = Debug|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Debug|x86.ActiveCfg = Debug|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Debug|x86.Build.0 = Debug|Any CPU {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Release|Any CPU.ActiveCfg = Release|Any CPU {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Release|Any CPU.Build.0 = Release|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Release|x64.ActiveCfg = Release|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Release|x64.Build.0 = Release|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Release|x86.ActiveCfg = Release|Any CPU - {F37144D7-2C6D-42AF-9E85-EF10E5244A7B}.Release|x86.Build.0 = Release|Any CPU {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Debug|x64.Build.0 = Debug|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Debug|x86.ActiveCfg = Debug|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Debug|x86.Build.0 = Debug|Any CPU {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Release|Any CPU.Build.0 = Release|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Release|x64.ActiveCfg = Release|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Release|x64.Build.0 = Release|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Release|x86.ActiveCfg = Release|Any CPU - {7F85E9D0-7BCE-431D-B468-4F6104E52DFA}.Release|x86.Build.0 = Release|Any CPU {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Debug|x64.ActiveCfg = Debug|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Debug|x64.Build.0 = Debug|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Debug|x86.ActiveCfg = Debug|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Debug|x86.Build.0 = Debug|Any CPU {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Release|Any CPU.ActiveCfg = Release|Any CPU {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Release|Any CPU.Build.0 = Release|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Release|x64.ActiveCfg = Release|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Release|x64.Build.0 = Release|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Release|x86.ActiveCfg = Release|Any CPU - {0D4D59D7-C52F-4858-A220-EAC7484E3827}.Release|x86.Build.0 = Release|Any CPU {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Debug|x64.ActiveCfg = Debug|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Debug|x64.Build.0 = Debug|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Debug|x86.ActiveCfg = Debug|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Debug|x86.Build.0 = Debug|Any CPU {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Release|Any CPU.ActiveCfg = Release|Any CPU {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Release|Any CPU.Build.0 = Release|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Release|x64.ActiveCfg = Release|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Release|x64.Build.0 = Release|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Release|x86.ActiveCfg = Release|Any CPU - {23790570-66D2-4CD5-9CD0-F8787C5B61BF}.Release|x86.Build.0 = Release|Any CPU {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Debug|x64.ActiveCfg = Debug|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Debug|x64.Build.0 = Debug|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Debug|x86.ActiveCfg = Debug|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Debug|x86.Build.0 = Debug|Any CPU {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Release|Any CPU.ActiveCfg = Release|Any CPU {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Release|Any CPU.Build.0 = Release|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Release|x64.ActiveCfg = Release|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Release|x64.Build.0 = Release|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Release|x86.ActiveCfg = Release|Any CPU - {E2F1E03B-002A-4A3E-BAFC-8F2F0AB5B86F}.Release|x86.Build.0 = Release|Any CPU {A716ED69-FBC8-4E3F-B728-589873A1540D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A716ED69-FBC8-4E3F-B728-589873A1540D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Debug|x64.ActiveCfg = Debug|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Debug|x64.Build.0 = Debug|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Debug|x86.ActiveCfg = Debug|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Debug|x86.Build.0 = Debug|Any CPU {A716ED69-FBC8-4E3F-B728-589873A1540D}.Release|Any CPU.ActiveCfg = Release|Any CPU {A716ED69-FBC8-4E3F-B728-589873A1540D}.Release|Any CPU.Build.0 = Release|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Release|x64.ActiveCfg = Release|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Release|x64.Build.0 = Release|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Release|x86.ActiveCfg = Release|Any CPU - {A716ED69-FBC8-4E3F-B728-589873A1540D}.Release|x86.Build.0 = Release|Any CPU {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Debug|x64.ActiveCfg = Debug|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Debug|x64.Build.0 = Debug|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Debug|x86.ActiveCfg = Debug|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Debug|x86.Build.0 = Debug|Any CPU {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Release|Any CPU.Build.0 = Release|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Release|x64.ActiveCfg = Release|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Release|x64.Build.0 = Release|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Release|x86.ActiveCfg = Release|Any CPU - {F262678B-7CD8-43DD-B752-4E761BE9A0A3}.Release|x86.Build.0 = Release|Any CPU {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Debug|x64.ActiveCfg = Debug|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Debug|x64.Build.0 = Debug|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Debug|x86.ActiveCfg = Debug|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Debug|x86.Build.0 = Debug|Any CPU {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Release|Any CPU.Build.0 = Release|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Release|x64.ActiveCfg = Release|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Release|x64.Build.0 = Release|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Release|x86.ActiveCfg = Release|Any CPU - {CA159C14-FCE9-4D65-815C-F5D7D79583DE}.Release|x86.Build.0 = Release|Any CPU {4393D63A-0C36-42F3-98A9-81440F213640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4393D63A-0C36-42F3-98A9-81440F213640}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Debug|x64.ActiveCfg = Debug|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Debug|x64.Build.0 = Debug|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Debug|x86.ActiveCfg = Debug|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Debug|x86.Build.0 = Debug|Any CPU {4393D63A-0C36-42F3-98A9-81440F213640}.Release|Any CPU.ActiveCfg = Release|Any CPU {4393D63A-0C36-42F3-98A9-81440F213640}.Release|Any CPU.Build.0 = Release|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Release|x64.ActiveCfg = Release|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Release|x64.Build.0 = Release|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Release|x86.ActiveCfg = Release|Any CPU - {4393D63A-0C36-42F3-98A9-81440F213640}.Release|x86.Build.0 = Release|Any CPU {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Debug|Any CPU.Build.0 = Debug|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Debug|x64.ActiveCfg = Debug|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Debug|x64.Build.0 = Debug|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Debug|x86.ActiveCfg = Debug|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Debug|x86.Build.0 = Debug|Any CPU {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Release|Any CPU.ActiveCfg = Release|Any CPU {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Release|Any CPU.Build.0 = Release|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Release|x64.ActiveCfg = Release|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Release|x64.Build.0 = Release|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Release|x86.ActiveCfg = Release|Any CPU - {135B06DB-1A0E-4DC3-93DA-8649AE3BDE19}.Release|x86.Build.0 = Release|Any CPU {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Debug|x64.ActiveCfg = Debug|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Debug|x64.Build.0 = Debug|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Debug|x86.ActiveCfg = Debug|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Debug|x86.Build.0 = Debug|Any CPU {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Release|Any CPU.ActiveCfg = Release|Any CPU {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Release|Any CPU.Build.0 = Release|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Release|x64.ActiveCfg = Release|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Release|x64.Build.0 = Release|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Release|x86.ActiveCfg = Release|Any CPU - {5FB9DFB8-2453-40EA-AAAD-D44677BCDF50}.Release|x86.Build.0 = Release|Any CPU {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Debug|x64.ActiveCfg = Debug|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Debug|x64.Build.0 = Debug|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Debug|x86.ActiveCfg = Debug|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Debug|x86.Build.0 = Debug|Any CPU {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Release|Any CPU.Build.0 = Release|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Release|x64.ActiveCfg = Release|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Release|x64.Build.0 = Release|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Release|x86.ActiveCfg = Release|Any CPU - {CA82D2B3-CCF7-4F68-8840-286BA2D5B23B}.Release|x86.Build.0 = Release|Any CPU + {16F51720-29D0-472A-93FA-2604D61991B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16F51720-29D0-472A-93FA-2604D61991B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16F51720-29D0-472A-93FA-2604D61991B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16F51720-29D0-472A-93FA-2604D61991B7}.Release|Any CPU.Build.0 = Release|Any CPU + {452352E1-71CA-436E-8165-F284EE36C924}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {452352E1-71CA-436E-8165-F284EE36C924}.Debug|Any CPU.Build.0 = Debug|Any CPU + {452352E1-71CA-436E-8165-F284EE36C924}.Release|Any CPU.ActiveCfg = Release|Any CPU + {452352E1-71CA-436E-8165-F284EE36C924}.Release|Any CPU.Build.0 = Release|Any CPU + {08C44607-EB80-4EE5-927D-08C34AA277AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08C44607-EB80-4EE5-927D-08C34AA277AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08C44607-EB80-4EE5-927D-08C34AA277AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08C44607-EB80-4EE5-927D-08C34AA277AF}.Release|Any CPU.Build.0 = Release|Any CPU + {3F23276F-F7D6-4E50-AA43-8DDB3EF1F680}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F23276F-F7D6-4E50-AA43-8DDB3EF1F680}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F23276F-F7D6-4E50-AA43-8DDB3EF1F680}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F23276F-F7D6-4E50-AA43-8DDB3EF1F680}.Release|Any CPU.Build.0 = Release|Any CPU + {027CADBF-7071-482A-8D86-CA03AC31FC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {027CADBF-7071-482A-8D86-CA03AC31FC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {027CADBF-7071-482A-8D86-CA03AC31FC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {027CADBF-7071-482A-8D86-CA03AC31FC4D}.Release|Any CPU.Build.0 = Release|Any CPU + {B0ECF78C-71A7-4281-B81E-7BD09649E5EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B0ECF78C-71A7-4281-B81E-7BD09649E5EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0ECF78C-71A7-4281-B81E-7BD09649E5EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B0ECF78C-71A7-4281-B81E-7BD09649E5EE}.Release|Any CPU.Build.0 = Release|Any CPU + {EF157AEA-43B8-4923-9E86-BB134F17F2F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF157AEA-43B8-4923-9E86-BB134F17F2F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF157AEA-43B8-4923-9E86-BB134F17F2F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF157AEA-43B8-4923-9E86-BB134F17F2F0}.Release|Any CPU.Build.0 = Release|Any CPU + {76EFDDEC-4AD2-4B12-8EC9-440190B89418}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76EFDDEC-4AD2-4B12-8EC9-440190B89418}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76EFDDEC-4AD2-4B12-8EC9-440190B89418}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76EFDDEC-4AD2-4B12-8EC9-440190B89418}.Release|Any CPU.Build.0 = Release|Any CPU + {75A46D17-91D6-430C-A8A8-C2D2E8C9943C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75A46D17-91D6-430C-A8A8-C2D2E8C9943C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75A46D17-91D6-430C-A8A8-C2D2E8C9943C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75A46D17-91D6-430C-A8A8-C2D2E8C9943C}.Release|Any CPU.Build.0 = Release|Any CPU + {B2F74D8D-9D16-493C-A716-B58426074075}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2F74D8D-9D16-493C-A716-B58426074075}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2F74D8D-9D16-493C-A716-B58426074075}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2F74D8D-9D16-493C-A716-B58426074075}.Release|Any CPU.Build.0 = Release|Any CPU + {06724523-611A-4054-A1AC-29DA2E87DD87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {06724523-611A-4054-A1AC-29DA2E87DD87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06724523-611A-4054-A1AC-29DA2E87DD87}.Release|Any CPU.ActiveCfg = Release|Any CPU + {06724523-611A-4054-A1AC-29DA2E87DD87}.Release|Any CPU.Build.0 = Release|Any CPU + {15DC879D-1A60-4745-8DF4-EBC36EE12339}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {15DC879D-1A60-4745-8DF4-EBC36EE12339}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15DC879D-1A60-4745-8DF4-EBC36EE12339}.Release|Any CPU.ActiveCfg = Release|Any CPU + {15DC879D-1A60-4745-8DF4-EBC36EE12339}.Release|Any CPU.Build.0 = Release|Any CPU + {10AA955C-B412-41A8-899F-8609AAE19F61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10AA955C-B412-41A8-899F-8609AAE19F61}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10AA955C-B412-41A8-899F-8609AAE19F61}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10AA955C-B412-41A8-899F-8609AAE19F61}.Release|Any CPU.Build.0 = Release|Any CPU + {E166D337-4033-4209-863F-8F77675EAEE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E166D337-4033-4209-863F-8F77675EAEE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E166D337-4033-4209-863F-8F77675EAEE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E166D337-4033-4209-863F-8F77675EAEE8}.Release|Any CPU.Build.0 = Release|Any CPU + {85F9F2A8-D2A5-4EA1-8BE0-06CCE141EC7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85F9F2A8-D2A5-4EA1-8BE0-06CCE141EC7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85F9F2A8-D2A5-4EA1-8BE0-06CCE141EC7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85F9F2A8-D2A5-4EA1-8BE0-06CCE141EC7A}.Release|Any CPU.Build.0 = Release|Any CPU + {71BF7EC9-7BEE-4038-8F4E-87032FA4E995}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {71BF7EC9-7BEE-4038-8F4E-87032FA4E995}.Debug|Any CPU.Build.0 = Debug|Any CPU + {71BF7EC9-7BEE-4038-8F4E-87032FA4E995}.Release|Any CPU.ActiveCfg = Release|Any CPU + {71BF7EC9-7BEE-4038-8F4E-87032FA4E995}.Release|Any CPU.Build.0 = Release|Any CPU + {9B5BDF7D-5816-47C6-8CFD-E45B152CA35F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B5BDF7D-5816-47C6-8CFD-E45B152CA35F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B5BDF7D-5816-47C6-8CFD-E45B152CA35F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B5BDF7D-5816-47C6-8CFD-E45B152CA35F}.Release|Any CPU.Build.0 = Release|Any CPU + {64C4C4CD-2319-4033-9F33-53AAA8FECEFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64C4C4CD-2319-4033-9F33-53AAA8FECEFA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64C4C4CD-2319-4033-9F33-53AAA8FECEFA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64C4C4CD-2319-4033-9F33-53AAA8FECEFA}.Release|Any CPU.Build.0 = Release|Any CPU + {CE6673DA-B50F-46DF-99A3-8A7C54DE9B61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE6673DA-B50F-46DF-99A3-8A7C54DE9B61}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE6673DA-B50F-46DF-99A3-8A7C54DE9B61}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE6673DA-B50F-46DF-99A3-8A7C54DE9B61}.Release|Any CPU.Build.0 = Release|Any CPU + {429552A4-4C18-4355-94C5-80DC88C48405}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {429552A4-4C18-4355-94C5-80DC88C48405}.Debug|Any CPU.Build.0 = Debug|Any CPU + {429552A4-4C18-4355-94C5-80DC88C48405}.Release|Any CPU.ActiveCfg = Release|Any CPU + {429552A4-4C18-4355-94C5-80DC88C48405}.Release|Any CPU.Build.0 = Release|Any CPU + {080F0AD2-E7AE-42C8-B867-56D78576735D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {080F0AD2-E7AE-42C8-B867-56D78576735D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {080F0AD2-E7AE-42C8-B867-56D78576735D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {080F0AD2-E7AE-42C8-B867-56D78576735D}.Release|Any CPU.Build.0 = Release|Any CPU + {C69BEEA4-BE37-4155-8DD0-130C62D8BF6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C69BEEA4-BE37-4155-8DD0-130C62D8BF6D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C69BEEA4-BE37-4155-8DD0-130C62D8BF6D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C69BEEA4-BE37-4155-8DD0-130C62D8BF6D}.Release|Any CPU.Build.0 = Release|Any CPU + {A83CE873-2536-4795-B601-5816294ED0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A83CE873-2536-4795-B601-5816294ED0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A83CE873-2536-4795-B601-5816294ED0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A83CE873-2536-4795-B601-5816294ED0B8}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {F22A8D65-0581-4CC7-9C1C-9BC9F9E80DA4} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {C1A621CF-8FA8-437C-98E8-C6C6418FEBEF} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {52CAF89F-2309-4597-B531-79D6A96902BE} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {3F23276F-F7D6-4E50-AA43-8DDB3EF1F680} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {027CADBF-7071-482A-8D86-CA03AC31FC4D} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {B0ECF78C-71A7-4281-B81E-7BD09649E5EE} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {EF157AEA-43B8-4923-9E86-BB134F17F2F0} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {76EFDDEC-4AD2-4B12-8EC9-440190B89418} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {75A46D17-91D6-430C-A8A8-C2D2E8C9943C} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {B2F74D8D-9D16-493C-A716-B58426074075} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {06724523-611A-4054-A1AC-29DA2E87DD87} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {15DC879D-1A60-4745-8DF4-EBC36EE12339} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + {10AA955C-B412-41A8-899F-8609AAE19F61} = {2633D125-64A7-456C-AD37-F8A6B56C2403} + {E166D337-4033-4209-863F-8F77675EAEE8} = {2633D125-64A7-456C-AD37-F8A6B56C2403} + {71BF7EC9-7BEE-4038-8F4E-87032FA4E995} = {0C9CA869-32FD-4A9E-8885-E2E19786C746} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D2334DAA-F7B2-450E-ABA4-FBC185152500} EndGlobalSection diff --git a/test/TestAssets/Tools/Program.cs b/test/TestAssets/Tools/Program.cs new file mode 100644 index 0000000000..94783ab8a9 --- /dev/null +++ b/test/TestAssets/Tools/Program.cs @@ -0,0 +1,7 @@ +// See https://aka.ms/new-console-template for more information +using System; + +// This project is used to restore TestPlatform and TestPlatform.CLI tools packages +// for testing with older versions. + +Console.WriteLine("Hello, World!"); diff --git a/test/TestAssets/Tools/Tools.csproj b/test/TestAssets/Tools/Tools.csproj new file mode 100644 index 0000000000..7c13e8ec53 --- /dev/null +++ b/test/TestAssets/Tools/Tools.csproj @@ -0,0 +1,20 @@ + + + + true + true + + + + net8.0;net9.0 + Exe + hanging_child + + + + + + + + + diff --git a/test/TestAssets/XUPerfTestProject/Program.cs b/test/TestAssets/XUPerfTestProject/Program.cs deleted file mode 100644 index 7424402cd8..0000000000 --- a/test/TestAssets/XUPerfTestProject/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace XUPerfTestProject -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} - diff --git a/test/TestAssets/XUPerfTestProject/UnitTest1.cs b/test/TestAssets/XUPerfTestProject/UnitTest1.cs deleted file mode 100644 index dbc9a5329c..0000000000 --- a/test/TestAssets/XUPerfTestProject/UnitTest1.cs +++ /dev/null @@ -1,60016 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace XUPerfTestProject -{ - using Xunit; - - public class UnitTest1 - { - #region PassingTests - [Fact] - public void XUnit_D1_01() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_02() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_03() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_04() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_05() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_06() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_07() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_08() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_09() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_10() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_11() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_12() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_13() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_14() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_15() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_16() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_17() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_18() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_19() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_20() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_21() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_22() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_23() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_24() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_25() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_26() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_27() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_28() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_29() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_30() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_31() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_32() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_33() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_34() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_35() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_36() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_37() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_38() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_39() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_40() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_41() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_42() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_43() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_44() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_45() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_46() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_47() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_48() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_49() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_50() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_51() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_52() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_53() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_54() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_55() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_56() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_57() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_58() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_59() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_60() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_61() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_62() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_63() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_64() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_65() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_66() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_67() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_68() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_69() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_70() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_71() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_72() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_73() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_74() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_75() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_76() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_77() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_78() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_79() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_80() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_81() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_82() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_83() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_84() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_85() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_86() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_87() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_88() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_89() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_90() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_91() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_92() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_93() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_94() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_95() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_96() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_97() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_98() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_99() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_100() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_101() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_102() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_103() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_104() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_105() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_106() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_107() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_108() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_109() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_110() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_111() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_112() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_113() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_114() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_115() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_116() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_117() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_118() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_119() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_120() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_121() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_122() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_123() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_124() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_125() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_126() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_127() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_128() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_129() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_130() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_131() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_132() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_133() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_134() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_135() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_136() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_137() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_138() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_139() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_140() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_141() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_142() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_143() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_144() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_145() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_146() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_147() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_148() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_149() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_150() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_151() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_152() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_153() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_154() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_155() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_156() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_157() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_158() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_159() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_160() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_161() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_162() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_163() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_164() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_165() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_166() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_167() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_168() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_169() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_170() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_171() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_172() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_173() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_174() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_175() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_176() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_177() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_178() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_179() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_180() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_181() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_182() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_183() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_184() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_185() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_186() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_187() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_188() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_189() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_190() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_191() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_192() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_193() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_194() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_195() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_196() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_197() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_198() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_199() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_200() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_201() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_202() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_203() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_204() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_205() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_206() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_207() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_208() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_209() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_210() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_211() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_212() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_213() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_214() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_215() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_216() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_217() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_218() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_219() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_220() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_221() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_222() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_223() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_224() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_225() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_226() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_227() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_228() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_229() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_230() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_231() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_232() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_233() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_234() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_235() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_236() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_237() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_238() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_239() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_240() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_241() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_242() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_243() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_244() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_245() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_246() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_247() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_248() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_249() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_250() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_251() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_252() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_253() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_254() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_255() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_256() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_257() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_258() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_259() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_260() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_261() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_262() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_263() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_264() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_265() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_266() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_267() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_268() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_269() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_270() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_271() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_272() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_273() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_274() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_275() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_276() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_277() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_278() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_279() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_280() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_281() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_282() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_283() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_284() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_285() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_286() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_287() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_288() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_289() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_290() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_291() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_292() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_293() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_294() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_295() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_296() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_297() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_298() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_299() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_300() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_301() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_302() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_303() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_304() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_305() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_306() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_307() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_308() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_309() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_310() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_311() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_312() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_313() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_314() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_315() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_316() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_317() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_318() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_319() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_320() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_321() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_322() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_323() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_324() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_325() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_326() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_327() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_328() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_329() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_330() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_331() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_332() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_333() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_334() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_335() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_336() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_337() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_338() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_339() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_340() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_341() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_342() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_343() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_344() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_345() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_346() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_347() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_348() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_349() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_350() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_351() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_352() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_353() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_354() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_355() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_356() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_357() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_358() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_359() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_360() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_361() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_362() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_363() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_364() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_365() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_366() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_367() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_368() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_369() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_370() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_371() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_372() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_373() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_374() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_375() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_376() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_377() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_378() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_379() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_380() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_381() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_382() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_383() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_384() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_385() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_386() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_387() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_388() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_389() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_390() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_391() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_392() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_393() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_394() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_395() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_396() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_397() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_398() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_399() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_400() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_401() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_402() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_403() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_404() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_405() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_406() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_407() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_408() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_409() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_410() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_411() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_412() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_413() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_414() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_415() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_416() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_417() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_418() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_419() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_420() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_421() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_422() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_423() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_424() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_425() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_426() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_427() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_428() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_429() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_430() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_431() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_432() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_433() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_434() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_435() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_436() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_437() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_438() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_439() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_440() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_441() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_442() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_443() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_444() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_445() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_446() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_447() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_448() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_449() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_450() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_451() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_452() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_453() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_454() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_455() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_456() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_457() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_458() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_459() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_460() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_461() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_462() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_463() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_464() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_465() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_466() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_467() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_468() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_469() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_470() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_471() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_472() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_473() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_474() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_475() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_476() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_477() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_478() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_479() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_480() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_481() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_482() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_483() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_484() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_485() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_486() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_487() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_488() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_489() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_490() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_491() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_492() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_493() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_494() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_495() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_496() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_497() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_498() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_499() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_500() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_501() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_502() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_503() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_504() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_505() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_506() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_507() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_508() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_509() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_510() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_511() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_512() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_513() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_514() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_515() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_516() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_517() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_518() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_519() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_520() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_521() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_522() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_523() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_524() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_525() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_526() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_527() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_528() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_529() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_530() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_531() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_532() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_533() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_534() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_535() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_536() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_537() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_538() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_539() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_540() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_541() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_542() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_543() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_544() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_545() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_546() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_547() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_548() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_549() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_550() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_551() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_552() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_553() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_554() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_555() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_556() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_557() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_558() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_559() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_560() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_561() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_562() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_563() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_564() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_565() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_566() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_567() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_568() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_569() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_570() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_571() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_572() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_573() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_574() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_575() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_576() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_577() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_578() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_579() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_580() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_581() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_582() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_583() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_584() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_585() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_586() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_587() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_588() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_589() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_590() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_591() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_592() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_593() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_594() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_595() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_596() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_597() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_598() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_599() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_600() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_601() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_602() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_603() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_604() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_605() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_606() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_607() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_608() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_609() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_610() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_611() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_612() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_613() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_614() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_615() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_616() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_617() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_618() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_619() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_620() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_621() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_622() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_623() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_624() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_625() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_626() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_627() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_628() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_629() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_630() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_631() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_632() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_633() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_634() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_635() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_636() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_637() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_638() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_639() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_640() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_641() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_642() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_643() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_644() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_645() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_646() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_647() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_648() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_649() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_650() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_651() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_652() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_653() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_654() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_655() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_656() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_657() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_658() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_659() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_660() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_661() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_662() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_663() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_664() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_665() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_666() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_667() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_668() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_669() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_670() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_671() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_672() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_673() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_674() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_675() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_676() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_677() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_678() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_679() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_680() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_681() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_682() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_683() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_684() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_685() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_686() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_687() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_688() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_689() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_690() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_691() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_692() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_693() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_694() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_695() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_696() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_697() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_698() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_699() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_700() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_701() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_702() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_703() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_704() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_705() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_706() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_707() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_708() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_709() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_710() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_711() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_712() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_713() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_714() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_715() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_716() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_717() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_718() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_719() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_720() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_721() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_722() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_723() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_724() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_725() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_726() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_727() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_728() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_729() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_730() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_731() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_732() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_733() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_734() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_735() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_736() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_737() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_738() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_739() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_740() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_741() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_742() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_743() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_744() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_745() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_746() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_747() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_748() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_749() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_750() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_751() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_752() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_753() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_754() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_755() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_756() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_757() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_758() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_759() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_760() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_761() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_762() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_763() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_764() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_765() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_766() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_767() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_768() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_769() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_770() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_771() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_772() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_773() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_774() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_775() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_776() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_777() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_778() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_779() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_780() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_781() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_782() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_783() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_784() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_785() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_786() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_787() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_788() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_789() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_790() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_791() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_792() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_793() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_794() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_795() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_796() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_797() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_798() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_799() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_800() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_801() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_802() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_803() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_804() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_805() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_806() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_807() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_808() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_809() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_810() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_811() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_812() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_813() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_814() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_815() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_816() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_817() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_818() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_819() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_820() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_821() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_822() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_823() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_824() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_825() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_826() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_827() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_828() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_829() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_830() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_831() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_832() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_833() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_834() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_835() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_836() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_837() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_838() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_839() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_840() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_841() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_842() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_843() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_844() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_845() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_846() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_847() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_848() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_849() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_850() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_851() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_852() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_853() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_854() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_855() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_856() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_857() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_858() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_859() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_860() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_861() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_862() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_863() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_864() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_865() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_866() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_867() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_868() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_869() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_870() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_871() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_872() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_873() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_874() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_875() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_876() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_877() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_878() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_879() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_880() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_881() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_882() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_883() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_884() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_885() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_886() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_887() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_888() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_889() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_890() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_891() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_892() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_893() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_894() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_895() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_896() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_897() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_898() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_899() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_900() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_901() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_902() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_903() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_904() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_905() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_906() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_907() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_908() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_909() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_910() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_911() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_912() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_913() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_914() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_915() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_916() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_917() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_918() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_919() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_920() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_921() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_922() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_923() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_924() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_925() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_926() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_927() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_928() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_929() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_930() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_931() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_932() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_933() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_934() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_935() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_936() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_937() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_938() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_939() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_940() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_941() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_942() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_943() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_944() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_945() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_946() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_947() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_948() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_949() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_950() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_951() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_952() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_953() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_954() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_955() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_956() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_957() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_958() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_959() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_960() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_961() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_962() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_963() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_964() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_965() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_966() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_967() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_968() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_969() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_970() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_971() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_972() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_973() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_974() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_975() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_976() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_977() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_978() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_979() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_980() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_981() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_982() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_983() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_984() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_985() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_986() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_987() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_988() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_989() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_990() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_991() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_992() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_993() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_994() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_995() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_996() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_997() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_998() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_999() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1000() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1001() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1002() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1003() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1004() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1005() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1006() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1007() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1008() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1009() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1010() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1011() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1012() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1013() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1014() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1015() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1016() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1017() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1018() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1019() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1020() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1021() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1022() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1023() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1024() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1025() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1026() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1027() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1028() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1029() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1030() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1031() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1032() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1033() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1034() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1035() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1036() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1037() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1038() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1039() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1040() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1041() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1042() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1043() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1044() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1045() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1046() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1047() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1048() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1049() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1050() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1051() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1052() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1053() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1054() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1055() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1056() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1057() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1058() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1059() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1060() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1061() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1062() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1063() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1064() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1065() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1066() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1067() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1068() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1069() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1070() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1071() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1072() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1073() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1074() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1075() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1076() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1077() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1078() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1079() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1080() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1081() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1082() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1083() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1084() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1085() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1086() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1087() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1088() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1089() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1090() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1091() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1092() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1093() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1094() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1095() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1096() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1097() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1098() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1099() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1100() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1101() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1102() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1103() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1104() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1105() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1106() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1107() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1108() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1109() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1110() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1111() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1112() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1113() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1114() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1115() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1116() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1117() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1118() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1119() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1120() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1121() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1122() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1123() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1124() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1125() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1126() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1127() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1128() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1129() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1130() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1131() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1132() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1133() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1134() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1135() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1136() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1137() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1138() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1139() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1140() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1141() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1142() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1143() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1144() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1145() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1146() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1147() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1148() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1149() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1150() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1151() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1152() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1153() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1154() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1155() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1156() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1157() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1158() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1159() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1160() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1161() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1162() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1163() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1164() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1165() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1166() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1167() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1168() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1169() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1170() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1171() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1172() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1173() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1174() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1175() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1176() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1177() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1178() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1179() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1180() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1181() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1182() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1183() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1184() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1185() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1186() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1187() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1188() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1189() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1190() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1191() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1192() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1193() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1194() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1195() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1196() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1197() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1198() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1199() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1200() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1201() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1202() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1203() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1204() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1205() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1206() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1207() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1208() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1209() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1210() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1211() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1212() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1213() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1214() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1215() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1216() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1217() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1218() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1219() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1220() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1221() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1222() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1223() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1224() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1225() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1226() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1227() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1228() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1229() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1230() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1231() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1232() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1233() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1234() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1235() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1236() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1237() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1238() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1239() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1240() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1241() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1242() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1243() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1244() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1245() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1246() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1247() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1248() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1249() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1250() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1251() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1252() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1253() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1254() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1255() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1256() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1257() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1258() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1259() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1260() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1261() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1262() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1263() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1264() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1265() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1266() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1267() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1268() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1269() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1270() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1271() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1272() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1273() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1274() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1275() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1276() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1277() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1278() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1279() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1280() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1281() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1282() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1283() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1284() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1285() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1286() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1287() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1288() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1289() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1290() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1291() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1292() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1293() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1294() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1295() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1296() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1297() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1298() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1299() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1300() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1301() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1302() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1303() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1304() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1305() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1306() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1307() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1308() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1309() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1310() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1311() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1312() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1313() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1314() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1315() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1316() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1317() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1318() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1319() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1320() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1321() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1322() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1323() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1324() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1325() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1326() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1327() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1328() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1329() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1330() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1331() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1332() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1333() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1334() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1335() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1336() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1337() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1338() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1339() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1340() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1341() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1342() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1343() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1344() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1345() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1346() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1347() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1348() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1349() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1350() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1351() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1352() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1353() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1354() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1355() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1356() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1357() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1358() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1359() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1360() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1361() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1362() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1363() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1364() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1365() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1366() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1367() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1368() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1369() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1370() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1371() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1372() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1373() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1374() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1375() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1376() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1377() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1378() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1379() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1380() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1381() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1382() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1383() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1384() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1385() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1386() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1387() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1388() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1389() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1390() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1391() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1392() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1393() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1394() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1395() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1396() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1397() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1398() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1399() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1400() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1401() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1402() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1403() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1404() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1405() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1406() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1407() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1408() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1409() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1410() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1411() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1412() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1413() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1414() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1415() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1416() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1417() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1418() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1419() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1420() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1421() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1422() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1423() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1424() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1425() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1426() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1427() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1428() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1429() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1430() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1431() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1432() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1433() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1434() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1435() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1436() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1437() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1438() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1439() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1440() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1441() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1442() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1443() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1444() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1445() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1446() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1447() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1448() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1449() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1450() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1451() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1452() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1453() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1454() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1455() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1456() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1457() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1458() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1459() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1460() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1461() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1462() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1463() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1464() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1465() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1466() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1467() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1468() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1469() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1470() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1471() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1472() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1473() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1474() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1475() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1476() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1477() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1478() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1479() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1480() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1481() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1482() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1483() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1484() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1485() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1486() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1487() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1488() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1489() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1490() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1491() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1492() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1493() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1494() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1495() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1496() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1497() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1498() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1499() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1500() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1501() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1502() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1503() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1504() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1505() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1506() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1507() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1508() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1509() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1510() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1511() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1512() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1513() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1514() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1515() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1516() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1517() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1518() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1519() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1520() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1521() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1522() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1523() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1524() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1525() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1526() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1527() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1528() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1529() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1530() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1531() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1532() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1533() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1534() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1535() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1536() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1537() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1538() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1539() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1540() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1541() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1542() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1543() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1544() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1545() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1546() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1547() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1548() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1549() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1550() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1551() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1552() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1553() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1554() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1555() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1556() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1557() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1558() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1559() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1560() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1561() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1562() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1563() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1564() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1565() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1566() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1567() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1568() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1569() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1570() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1571() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1572() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1573() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1574() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1575() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1576() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1577() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1578() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1579() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1580() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1581() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1582() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1583() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1584() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1585() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1586() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1587() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1588() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1589() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1590() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1591() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1592() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1593() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1594() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1595() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1596() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1597() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1598() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1599() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1600() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1601() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1602() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1603() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1604() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1605() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1606() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1607() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1608() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1609() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1610() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1611() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1612() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1613() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1614() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1615() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1616() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1617() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1618() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1619() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1620() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1621() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1622() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1623() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1624() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1625() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1626() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1627() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1628() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1629() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1630() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1631() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1632() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1633() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1634() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1635() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1636() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1637() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1638() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1639() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1640() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1641() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1642() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1643() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1644() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1645() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1646() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1647() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1648() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1649() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1650() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1651() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1652() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1653() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1654() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1655() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1656() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1657() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1658() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1659() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1660() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1661() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1662() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1663() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1664() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1665() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1666() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1667() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1668() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1669() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1670() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1671() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1672() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1673() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1674() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1675() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1676() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1677() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1678() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1679() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1680() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1681() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1682() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1683() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1684() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1685() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1686() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1687() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1688() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1689() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1690() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1691() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1692() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1693() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1694() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1695() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1696() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1697() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1698() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1699() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1700() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1701() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1702() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1703() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1704() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1705() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1706() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1707() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1708() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1709() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1710() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1711() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1712() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1713() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1714() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1715() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1716() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1717() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1718() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1719() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1720() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1721() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1722() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1723() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1724() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1725() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1726() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1727() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1728() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1729() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1730() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1731() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1732() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1733() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1734() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1735() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1736() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1737() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1738() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1739() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1740() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1741() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1742() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1743() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1744() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1745() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1746() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1747() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1748() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1749() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1750() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1751() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1752() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1753() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1754() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1755() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1756() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1757() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1758() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1759() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1760() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1761() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1762() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1763() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1764() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1765() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1766() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1767() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1768() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1769() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1770() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1771() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1772() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1773() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1774() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1775() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1776() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1777() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1778() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1779() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1780() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1781() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1782() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1783() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1784() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1785() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1786() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1787() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1788() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1789() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1790() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1791() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1792() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1793() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1794() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1795() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1796() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1797() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1798() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1799() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1800() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1801() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1802() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1803() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1804() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1805() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1806() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1807() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1808() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1809() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1810() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1811() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1812() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1813() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1814() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1815() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1816() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1817() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1818() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1819() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1820() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1821() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1822() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1823() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1824() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1825() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1826() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1827() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1828() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1829() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1830() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1831() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1832() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1833() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1834() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1835() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1836() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1837() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1838() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1839() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1840() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1841() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1842() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1843() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1844() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1845() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1846() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1847() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1848() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1849() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1850() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1851() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1852() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1853() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1854() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1855() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1856() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1857() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1858() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1859() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1860() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1861() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1862() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1863() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1864() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1865() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1866() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1867() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1868() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1869() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1870() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1871() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1872() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1873() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1874() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1875() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1876() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1877() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1878() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1879() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1880() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1881() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1882() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1883() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1884() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1885() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1886() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1887() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1888() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1889() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1890() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1891() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1892() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1893() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1894() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1895() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1896() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1897() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1898() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1899() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1900() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1901() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1902() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1903() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1904() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1905() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1906() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1907() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1908() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1909() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1910() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1911() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1912() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1913() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1914() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1915() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1916() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1917() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1918() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1919() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1920() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1921() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1922() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1923() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1924() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1925() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1926() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1927() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1928() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1929() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1930() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1931() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1932() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1933() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1934() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1935() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1936() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1937() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1938() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1939() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1940() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1941() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1942() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1943() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1944() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1945() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1946() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1947() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1948() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1949() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1950() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1951() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1952() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1953() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1954() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1955() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1956() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1957() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1958() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1959() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1960() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1961() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1962() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1963() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1964() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1965() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1966() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1967() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1968() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1969() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1970() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1971() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1972() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1973() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1974() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1975() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1976() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1977() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1978() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1979() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1980() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1981() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1982() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1983() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1984() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1985() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1986() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1987() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1988() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1989() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1990() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1991() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1992() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1993() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1994() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1995() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1996() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1997() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1998() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_1999() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2000() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2001() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2002() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2003() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2004() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2005() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2006() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2007() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2008() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2009() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2010() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2011() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2012() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2013() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2014() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2015() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2016() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2017() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2018() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2019() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2020() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2021() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2022() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2023() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2024() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2025() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2026() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2027() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2028() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2029() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2030() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2031() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2032() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2033() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2034() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2035() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2036() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2037() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2038() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2039() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2040() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2041() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2042() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2043() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2044() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2045() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2046() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2047() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2048() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2049() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2050() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2051() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2052() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2053() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2054() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2055() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2056() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2057() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2058() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2059() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2060() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2061() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2062() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2063() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2064() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2065() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2066() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2067() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2068() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2069() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2070() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2071() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2072() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2073() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2074() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2075() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2076() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2077() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2078() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2079() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2080() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2081() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2082() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2083() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2084() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2085() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2086() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2087() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2088() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2089() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2090() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2091() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2092() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2093() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2094() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2095() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2096() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2097() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2098() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2099() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2100() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2101() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2102() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2103() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2104() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2105() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2106() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2107() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2108() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2109() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2110() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2111() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2112() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2113() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2114() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2115() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2116() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2117() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2118() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2119() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2120() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2121() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2122() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2123() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2124() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2125() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2126() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2127() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2128() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2129() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2130() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2131() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2132() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2133() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2134() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2135() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2136() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2137() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2138() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2139() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2140() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2141() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2142() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2143() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2144() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2145() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2146() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2147() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2148() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2149() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2150() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2151() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2152() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2153() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2154() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2155() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2156() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2157() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2158() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2159() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2160() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2161() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2162() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2163() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2164() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2165() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2166() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2167() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2168() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2169() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2170() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2171() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2172() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2173() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2174() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2175() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2176() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2177() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2178() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2179() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2180() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2181() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2182() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2183() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2184() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2185() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2186() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2187() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2188() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2189() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2190() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2191() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2192() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2193() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2194() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2195() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2196() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2197() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2198() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2199() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2200() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2201() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2202() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2203() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2204() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2205() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2206() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2207() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2208() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2209() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2210() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2211() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2212() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2213() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2214() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2215() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2216() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2217() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2218() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2219() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2220() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2221() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2222() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2223() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2224() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2225() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2226() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2227() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2228() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2229() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2230() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2231() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2232() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2233() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2234() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2235() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2236() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2237() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2238() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2239() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2240() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2241() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2242() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2243() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2244() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2245() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2246() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2247() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2248() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2249() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2250() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2251() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2252() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2253() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2254() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2255() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2256() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2257() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2258() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2259() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2260() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2261() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2262() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2263() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2264() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2265() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2266() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2267() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2268() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2269() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2270() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2271() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2272() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2273() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2274() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2275() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2276() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2277() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2278() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2279() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2280() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2281() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2282() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2283() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2284() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2285() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2286() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2287() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2288() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2289() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2290() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2291() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2292() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2293() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2294() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2295() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2296() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2297() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2298() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2299() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2300() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2301() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2302() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2303() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2304() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2305() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2306() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2307() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2308() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2309() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2310() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2311() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2312() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2313() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2314() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2315() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2316() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2317() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2318() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2319() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2320() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2321() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2322() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2323() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2324() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2325() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2326() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2327() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2328() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2329() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2330() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2331() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2332() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2333() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2334() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2335() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2336() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2337() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2338() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2339() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2340() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2341() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2342() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2343() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2344() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2345() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2346() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2347() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2348() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2349() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2350() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2351() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2352() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2353() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2354() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2355() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2356() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2357() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2358() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2359() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2360() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2361() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2362() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2363() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2364() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2365() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2366() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2367() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2368() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2369() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2370() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2371() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2372() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2373() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2374() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2375() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2376() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2377() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2378() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2379() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2380() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2381() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2382() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2383() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2384() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2385() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2386() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2387() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2388() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2389() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2390() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2391() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2392() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2393() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2394() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2395() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2396() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2397() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2398() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2399() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2400() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2401() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2402() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2403() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2404() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2405() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2406() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2407() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2408() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2409() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2410() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2411() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2412() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2413() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2414() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2415() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2416() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2417() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2418() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2419() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2420() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2421() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2422() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2423() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2424() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2425() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2426() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2427() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2428() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2429() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2430() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2431() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2432() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2433() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2434() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2435() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2436() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2437() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2438() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2439() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2440() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2441() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2442() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2443() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2444() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2445() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2446() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2447() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2448() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2449() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2450() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2451() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2452() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2453() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2454() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2455() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2456() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2457() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2458() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2459() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2460() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2461() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2462() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2463() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2464() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2465() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2466() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2467() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2468() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2469() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2470() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2471() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2472() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2473() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2474() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2475() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2476() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2477() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2478() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2479() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2480() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2481() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2482() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2483() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2484() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2485() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2486() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2487() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2488() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2489() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2490() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2491() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2492() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2493() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2494() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2495() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2496() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2497() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2498() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2499() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2500() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2501() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2502() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2503() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2504() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2505() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2506() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2507() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2508() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2509() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2510() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2511() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2512() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2513() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2514() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2515() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2516() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2517() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2518() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2519() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2520() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2521() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2522() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2523() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2524() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2525() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2526() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2527() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2528() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2529() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2530() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2531() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2532() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2533() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2534() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2535() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2536() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2537() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2538() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2539() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2540() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2541() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2542() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2543() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2544() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2545() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2546() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2547() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2548() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2549() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2550() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2551() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2552() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2553() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2554() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2555() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2556() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2557() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2558() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2559() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2560() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2561() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2562() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2563() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2564() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2565() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2566() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2567() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2568() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2569() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2570() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2571() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2572() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2573() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2574() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2575() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2576() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2577() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2578() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2579() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2580() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2581() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2582() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2583() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2584() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2585() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2586() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2587() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2588() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2589() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2590() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2591() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2592() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2593() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2594() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2595() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2596() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2597() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2598() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2599() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2600() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2601() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2602() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2603() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2604() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2605() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2606() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2607() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2608() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2609() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2610() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2611() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2612() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2613() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2614() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2615() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2616() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2617() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2618() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2619() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2620() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2621() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2622() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2623() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2624() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2625() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2626() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2627() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2628() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2629() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2630() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2631() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2632() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2633() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2634() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2635() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2636() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2637() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2638() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2639() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2640() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2641() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2642() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2643() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2644() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2645() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2646() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2647() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2648() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2649() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2650() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2651() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2652() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2653() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2654() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2655() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2656() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2657() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2658() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2659() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2660() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2661() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2662() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2663() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2664() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2665() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2666() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2667() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2668() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2669() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2670() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2671() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2672() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2673() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2674() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2675() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2676() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2677() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2678() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2679() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2680() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2681() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2682() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2683() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2684() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2685() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2686() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2687() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2688() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2689() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2690() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2691() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2692() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2693() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2694() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2695() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2696() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2697() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2698() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2699() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2700() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2701() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2702() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2703() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2704() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2705() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2706() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2707() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2708() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2709() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2710() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2711() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2712() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2713() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2714() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2715() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2716() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2717() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2718() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2719() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2720() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2721() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2722() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2723() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2724() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2725() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2726() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2727() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2728() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2729() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2730() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2731() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2732() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2733() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2734() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2735() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2736() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2737() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2738() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2739() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2740() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2741() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2742() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2743() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2744() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2745() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2746() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2747() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2748() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2749() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2750() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2751() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2752() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2753() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2754() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2755() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2756() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2757() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2758() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2759() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2760() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2761() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2762() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2763() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2764() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2765() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2766() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2767() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2768() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2769() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2770() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2771() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2772() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2773() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2774() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2775() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2776() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2777() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2778() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2779() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2780() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2781() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2782() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2783() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2784() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2785() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2786() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2787() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2788() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2789() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2790() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2791() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2792() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2793() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2794() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2795() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2796() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2797() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2798() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2799() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2800() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2801() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2802() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2803() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2804() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2805() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2806() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2807() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2808() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2809() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2810() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2811() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2812() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2813() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2814() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2815() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2816() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2817() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2818() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2819() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2820() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2821() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2822() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2823() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2824() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2825() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2826() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2827() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2828() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2829() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2830() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2831() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2832() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2833() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2834() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2835() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2836() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2837() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2838() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2839() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2840() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2841() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2842() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2843() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2844() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2845() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2846() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2847() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2848() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2849() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2850() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2851() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2852() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2853() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2854() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2855() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2856() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2857() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2858() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2859() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2860() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2861() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2862() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2863() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2864() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2865() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2866() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2867() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2868() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2869() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2870() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2871() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2872() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2873() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2874() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2875() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2876() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2877() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2878() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2879() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2880() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2881() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2882() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2883() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2884() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2885() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2886() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2887() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2888() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2889() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2890() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2891() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2892() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2893() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2894() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2895() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2896() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2897() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2898() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2899() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2900() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2901() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2902() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2903() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2904() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2905() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2906() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2907() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2908() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2909() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2910() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2911() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2912() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2913() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2914() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2915() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2916() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2917() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2918() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2919() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2920() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2921() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2922() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2923() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2924() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2925() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2926() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2927() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2928() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2929() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2930() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2931() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2932() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2933() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2934() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2935() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2936() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2937() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2938() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2939() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2940() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2941() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2942() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2943() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2944() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2945() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2946() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2947() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2948() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2949() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2950() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2951() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2952() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2953() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2954() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2955() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2956() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2957() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2958() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2959() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2960() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2961() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2962() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2963() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2964() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2965() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2966() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2967() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2968() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2969() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2970() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2971() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2972() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2973() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2974() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2975() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2976() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2977() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2978() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2979() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2980() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2981() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2982() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2983() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2984() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2985() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2986() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2987() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2988() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2989() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2990() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2991() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2992() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2993() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2994() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2995() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2996() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2997() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2998() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_2999() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3000() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3001() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3002() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3003() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3004() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3005() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3006() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3007() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3008() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3009() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3010() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3011() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3012() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3013() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3014() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3015() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3016() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3017() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3018() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3019() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3020() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3021() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3022() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3023() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3024() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3025() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3026() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3027() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3028() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3029() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3030() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3031() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3032() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3033() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3034() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3035() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3036() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3037() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3038() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3039() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3040() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3041() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3042() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3043() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3044() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3045() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3046() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3047() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3048() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3049() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3050() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3051() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3052() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3053() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3054() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3055() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3056() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3057() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3058() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3059() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3060() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3061() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3062() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3063() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3064() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3065() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3066() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3067() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3068() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3069() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3070() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3071() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3072() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3073() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3074() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3075() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3076() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3077() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3078() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3079() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3080() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3081() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3082() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3083() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3084() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3085() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3086() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3087() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3088() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3089() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3090() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3091() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3092() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3093() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3094() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3095() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3096() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3097() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3098() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3099() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3100() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3101() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3102() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3103() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3104() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3105() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3106() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3107() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3108() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3109() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3110() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3111() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3112() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3113() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3114() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3115() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3116() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3117() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3118() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3119() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3120() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3121() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3122() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3123() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3124() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3125() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3126() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3127() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3128() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3129() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3130() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3131() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3132() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3133() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3134() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3135() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3136() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3137() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3138() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3139() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3140() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3141() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3142() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3143() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3144() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3145() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3146() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3147() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3148() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3149() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3150() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3151() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3152() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3153() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3154() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3155() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3156() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3157() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3158() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3159() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3160() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3161() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3162() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3163() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3164() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3165() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3166() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3167() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3168() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3169() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3170() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3171() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3172() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3173() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3174() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3175() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3176() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3177() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3178() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3179() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3180() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3181() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3182() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3183() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3184() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3185() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3186() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3187() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3188() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3189() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3190() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3191() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3192() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3193() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3194() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3195() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3196() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3197() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3198() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3199() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3200() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3201() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3202() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3203() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3204() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3205() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3206() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3207() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3208() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3209() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3210() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3211() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3212() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3213() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3214() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3215() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3216() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3217() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3218() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3219() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3220() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3221() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3222() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3223() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3224() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3225() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3226() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3227() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3228() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3229() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3230() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3231() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3232() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3233() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3234() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3235() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3236() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3237() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3238() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3239() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3240() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3241() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3242() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3243() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3244() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3245() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3246() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3247() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3248() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3249() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3250() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3251() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3252() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3253() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3254() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3255() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3256() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3257() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3258() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3259() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3260() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3261() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3262() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3263() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3264() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3265() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3266() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3267() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3268() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3269() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3270() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3271() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3272() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3273() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3274() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3275() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3276() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3277() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3278() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3279() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3280() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3281() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3282() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3283() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3284() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3285() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3286() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3287() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3288() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3289() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3290() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3291() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3292() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3293() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3294() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3295() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3296() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3297() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3298() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3299() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3300() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3301() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3302() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3303() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3304() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3305() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3306() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3307() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3308() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3309() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3310() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3311() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3312() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3313() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3314() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3315() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3316() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3317() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3318() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3319() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3320() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3321() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3322() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3323() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3324() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3325() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3326() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3327() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3328() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3329() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3330() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3331() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3332() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3333() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3334() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3335() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3336() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3337() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3338() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3339() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3340() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3341() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3342() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3343() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3344() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3345() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3346() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3347() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3348() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3349() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3350() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3351() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3352() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3353() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3354() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3355() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3356() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3357() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3358() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3359() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3360() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3361() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3362() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3363() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3364() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3365() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3366() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3367() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3368() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3369() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3370() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3371() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3372() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3373() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3374() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3375() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3376() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3377() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3378() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3379() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3380() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3381() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3382() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3383() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3384() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3385() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3386() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3387() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3388() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3389() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3390() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3391() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3392() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3393() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3394() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3395() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3396() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3397() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3398() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3399() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3400() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3401() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3402() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3403() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3404() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3405() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3406() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3407() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3408() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3409() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3410() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3411() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3412() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3413() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3414() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3415() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3416() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3417() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3418() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3419() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3420() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3421() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3422() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3423() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3424() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3425() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3426() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3427() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3428() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3429() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3430() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3431() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3432() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3433() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3434() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3435() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3436() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3437() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3438() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3439() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3440() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3441() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3442() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3443() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3444() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3445() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3446() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3447() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3448() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3449() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3450() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3451() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3452() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3453() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3454() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3455() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3456() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3457() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3458() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3459() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3460() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3461() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3462() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3463() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3464() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3465() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3466() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3467() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3468() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3469() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3470() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3471() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3472() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3473() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3474() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3475() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3476() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3477() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3478() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3479() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3480() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3481() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3482() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3483() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3484() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3485() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3486() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3487() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3488() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3489() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3490() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3491() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3492() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3493() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3494() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3495() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3496() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3497() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3498() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3499() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3500() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3501() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3502() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3503() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3504() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3505() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3506() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3507() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3508() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3509() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3510() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3511() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3512() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3513() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3514() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3515() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3516() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3517() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3518() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3519() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3520() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3521() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3522() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3523() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3524() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3525() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3526() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3527() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3528() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3529() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3530() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3531() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3532() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3533() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3534() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3535() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3536() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3537() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3538() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3539() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3540() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3541() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3542() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3543() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3544() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3545() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3546() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3547() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3548() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3549() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3550() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3551() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3552() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3553() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3554() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3555() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3556() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3557() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3558() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3559() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3560() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3561() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3562() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3563() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3564() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3565() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3566() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3567() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3568() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3569() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3570() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3571() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3572() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3573() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3574() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3575() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3576() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3577() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3578() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3579() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3580() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3581() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3582() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3583() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3584() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3585() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3586() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3587() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3588() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3589() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3590() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3591() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3592() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3593() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3594() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3595() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3596() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3597() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3598() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3599() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3600() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3601() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3602() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3603() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3604() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3605() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3606() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3607() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3608() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3609() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3610() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3611() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3612() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3613() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3614() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3615() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3616() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3617() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3618() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3619() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3620() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3621() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3622() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3623() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3624() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3625() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3626() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3627() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3628() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3629() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3630() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3631() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3632() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3633() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3634() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3635() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3636() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3637() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3638() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3639() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3640() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3641() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3642() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3643() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3644() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3645() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3646() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3647() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3648() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3649() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3650() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3651() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3652() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3653() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3654() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3655() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3656() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3657() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3658() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3659() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3660() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3661() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3662() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3663() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3664() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3665() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3666() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3667() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3668() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3669() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3670() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3671() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3672() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3673() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3674() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3675() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3676() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3677() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3678() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3679() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3680() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3681() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3682() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3683() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3684() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3685() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3686() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3687() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3688() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3689() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3690() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3691() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3692() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3693() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3694() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3695() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3696() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3697() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3698() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3699() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3700() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3701() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3702() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3703() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3704() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3705() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3706() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3707() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3708() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3709() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3710() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3711() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3712() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3713() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3714() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3715() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3716() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3717() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3718() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3719() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3720() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3721() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3722() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3723() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3724() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3725() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3726() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3727() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3728() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3729() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3730() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3731() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3732() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3733() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3734() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3735() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3736() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3737() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3738() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3739() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3740() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3741() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3742() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3743() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3744() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3745() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3746() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3747() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3748() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3749() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3750() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3751() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3752() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3753() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3754() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3755() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3756() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3757() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3758() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3759() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3760() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3761() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3762() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3763() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3764() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3765() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3766() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3767() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3768() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3769() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3770() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3771() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3772() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3773() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3774() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3775() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3776() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3777() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3778() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3779() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3780() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3781() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3782() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3783() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3784() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3785() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3786() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3787() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3788() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3789() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3790() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3791() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3792() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3793() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3794() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3795() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3796() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3797() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3798() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3799() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3800() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3801() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3802() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3803() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3804() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3805() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3806() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3807() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3808() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3809() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3810() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3811() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3812() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3813() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3814() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3815() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3816() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3817() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3818() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3819() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3820() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3821() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3822() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3823() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3824() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3825() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3826() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3827() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3828() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3829() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3830() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3831() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3832() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3833() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3834() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3835() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3836() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3837() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3838() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3839() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3840() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3841() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3842() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3843() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3844() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3845() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3846() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3847() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3848() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3849() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3850() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3851() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3852() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3853() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3854() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3855() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3856() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3857() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3858() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3859() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3860() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3861() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3862() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3863() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3864() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3865() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3866() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3867() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3868() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3869() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3870() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3871() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3872() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3873() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3874() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3875() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3876() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3877() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3878() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3879() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3880() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3881() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3882() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3883() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3884() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3885() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3886() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3887() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3888() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3889() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3890() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3891() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3892() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3893() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3894() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3895() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3896() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3897() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3898() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3899() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3900() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3901() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3902() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3903() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3904() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3905() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3906() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3907() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3908() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3909() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3910() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3911() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3912() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3913() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3914() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3915() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3916() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3917() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3918() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3919() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3920() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3921() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3922() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3923() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3924() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3925() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3926() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3927() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3928() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3929() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3930() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3931() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3932() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3933() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3934() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3935() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3936() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3937() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3938() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3939() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3940() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3941() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3942() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3943() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3944() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3945() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3946() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3947() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3948() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3949() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3950() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3951() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3952() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3953() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3954() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3955() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3956() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3957() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3958() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3959() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3960() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3961() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3962() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3963() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3964() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3965() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3966() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3967() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3968() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3969() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3970() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3971() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3972() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3973() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3974() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3975() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3976() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3977() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3978() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3979() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3980() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3981() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3982() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3983() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3984() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3985() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3986() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3987() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3988() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3989() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3990() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3991() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3992() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3993() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3994() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3995() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3996() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3997() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3998() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_3999() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4000() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4001() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4002() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4003() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4004() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4005() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4006() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4007() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4008() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4009() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4010() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4011() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4012() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4013() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4014() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4015() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4016() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4017() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4018() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4019() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4020() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4021() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4022() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4023() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4024() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4025() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4026() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4027() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4028() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4029() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4030() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4031() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4032() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4033() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4034() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4035() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4036() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4037() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4038() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4039() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4040() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4041() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4042() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4043() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4044() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4045() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4046() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4047() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4048() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4049() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4050() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4051() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4052() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4053() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4054() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4055() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4056() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4057() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4058() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4059() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4060() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4061() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4062() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4063() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4064() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4065() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4066() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4067() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4068() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4069() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4070() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4071() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4072() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4073() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4074() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4075() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4076() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4077() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4078() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4079() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4080() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4081() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4082() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4083() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4084() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4085() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4086() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4087() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4088() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4089() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4090() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4091() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4092() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4093() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4094() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4095() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4096() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4097() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4098() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4099() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4100() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4101() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4102() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4103() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4104() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4105() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4106() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4107() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4108() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4109() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4110() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4111() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4112() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4113() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4114() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4115() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4116() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4117() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4118() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4119() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4120() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4121() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4122() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4123() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4124() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4125() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4126() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4127() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4128() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4129() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4130() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4131() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4132() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4133() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4134() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4135() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4136() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4137() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4138() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4139() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4140() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4141() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4142() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4143() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4144() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4145() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4146() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4147() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4148() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4149() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4150() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4151() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4152() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4153() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4154() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4155() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4156() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4157() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4158() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4159() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4160() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4161() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4162() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4163() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4164() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4165() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4166() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4167() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4168() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4169() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4170() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4171() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4172() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4173() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4174() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4175() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4176() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4177() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4178() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4179() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4180() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4181() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4182() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4183() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4184() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4185() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4186() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4187() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4188() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4189() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4190() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4191() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4192() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4193() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4194() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4195() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4196() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4197() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4198() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4199() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4200() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4201() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4202() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4203() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4204() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4205() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4206() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4207() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4208() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4209() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4210() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4211() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4212() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4213() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4214() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4215() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4216() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4217() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4218() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4219() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4220() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4221() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4222() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4223() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4224() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4225() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4226() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4227() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4228() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4229() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4230() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4231() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4232() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4233() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4234() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4235() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4236() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4237() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4238() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4239() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4240() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4241() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4242() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4243() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4244() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4245() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4246() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4247() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4248() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4249() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4250() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4251() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4252() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4253() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4254() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4255() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4256() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4257() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4258() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4259() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4260() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4261() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4262() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4263() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4264() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4265() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4266() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4267() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4268() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4269() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4270() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4271() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4272() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4273() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4274() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4275() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4276() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4277() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4278() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4279() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4280() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4281() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4282() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4283() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4284() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4285() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4286() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4287() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4288() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4289() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4290() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4291() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4292() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4293() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4294() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4295() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4296() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4297() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4298() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4299() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4300() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4301() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4302() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4303() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4304() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4305() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4306() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4307() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4308() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4309() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4310() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4311() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4312() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4313() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4314() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4315() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4316() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4317() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4318() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4319() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4320() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4321() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4322() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4323() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4324() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4325() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4326() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4327() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4328() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4329() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4330() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4331() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4332() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4333() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4334() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4335() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4336() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4337() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4338() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4339() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4340() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4341() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4342() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4343() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4344() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4345() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4346() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4347() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4348() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4349() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4350() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4351() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4352() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4353() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4354() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4355() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4356() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4357() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4358() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4359() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4360() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4361() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4362() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4363() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4364() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4365() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4366() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4367() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4368() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4369() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4370() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4371() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4372() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4373() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4374() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4375() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4376() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4377() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4378() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4379() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4380() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4381() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4382() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4383() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4384() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4385() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4386() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4387() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4388() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4389() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4390() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4391() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4392() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4393() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4394() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4395() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4396() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4397() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4398() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4399() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4400() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4401() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4402() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4403() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4404() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4405() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4406() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4407() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4408() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4409() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4410() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4411() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4412() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4413() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4414() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4415() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4416() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4417() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4418() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4419() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4420() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4421() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4422() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4423() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4424() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4425() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4426() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4427() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4428() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4429() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4430() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4431() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4432() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4433() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4434() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4435() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4436() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4437() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4438() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4439() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4440() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4441() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4442() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4443() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4444() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4445() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4446() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4447() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4448() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4449() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4450() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4451() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4452() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4453() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4454() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4455() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4456() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4457() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4458() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4459() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4460() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4461() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4462() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4463() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4464() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4465() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4466() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4467() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4468() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4469() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4470() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4471() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4472() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4473() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4474() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4475() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4476() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4477() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4478() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4479() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4480() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4481() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4482() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4483() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4484() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4485() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4486() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4487() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4488() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4489() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4490() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4491() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4492() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4493() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4494() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4495() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4496() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4497() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4498() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4499() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4500() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4501() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4502() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4503() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4504() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4505() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4506() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4507() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4508() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4509() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4510() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4511() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4512() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4513() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4514() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4515() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4516() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4517() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4518() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4519() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4520() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4521() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4522() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4523() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4524() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4525() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4526() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4527() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4528() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4529() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4530() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4531() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4532() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4533() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4534() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4535() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4536() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4537() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4538() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4539() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4540() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4541() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4542() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4543() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4544() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4545() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4546() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4547() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4548() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4549() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4550() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4551() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4552() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4553() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4554() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4555() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4556() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4557() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4558() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4559() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4560() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4561() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4562() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4563() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4564() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4565() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4566() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4567() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4568() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4569() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4570() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4571() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4572() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4573() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4574() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4575() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4576() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4577() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4578() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4579() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4580() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4581() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4582() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4583() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4584() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4585() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4586() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4587() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4588() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4589() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4590() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4591() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4592() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4593() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4594() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4595() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4596() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4597() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4598() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4599() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4600() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4601() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4602() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4603() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4604() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4605() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4606() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4607() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4608() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4609() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4610() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4611() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4612() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4613() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4614() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4615() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4616() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4617() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4618() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4619() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4620() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4621() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4622() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4623() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4624() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4625() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4626() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4627() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4628() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4629() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4630() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4631() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4632() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4633() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4634() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4635() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4636() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4637() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4638() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4639() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4640() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4641() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4642() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4643() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4644() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4645() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4646() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4647() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4648() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4649() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4650() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4651() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4652() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4653() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4654() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4655() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4656() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4657() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4658() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4659() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4660() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4661() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4662() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4663() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4664() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4665() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4666() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4667() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4668() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4669() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4670() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4671() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4672() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4673() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4674() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4675() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4676() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4677() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4678() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4679() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4680() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4681() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4682() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4683() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4684() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4685() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4686() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4687() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4688() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4689() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4690() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4691() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4692() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4693() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4694() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4695() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4696() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4697() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4698() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4699() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4700() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4701() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4702() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4703() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4704() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4705() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4706() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4707() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4708() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4709() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4710() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4711() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4712() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4713() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4714() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4715() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4716() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4717() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4718() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4719() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4720() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4721() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4722() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4723() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4724() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4725() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4726() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4727() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4728() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4729() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4730() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4731() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4732() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4733() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4734() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4735() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4736() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4737() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4738() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4739() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4740() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4741() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4742() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4743() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4744() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4745() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4746() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4747() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4748() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4749() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4750() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4751() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4752() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4753() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4754() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4755() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4756() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4757() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4758() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4759() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4760() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4761() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4762() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4763() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4764() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4765() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4766() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4767() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4768() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4769() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4770() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4771() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4772() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4773() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4774() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4775() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4776() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4777() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4778() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4779() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4780() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4781() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4782() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4783() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4784() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4785() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4786() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4787() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4788() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4789() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4790() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4791() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4792() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4793() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4794() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4795() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4796() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4797() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4798() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4799() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4800() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4801() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4802() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4803() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4804() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4805() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4806() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4807() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4808() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4809() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4810() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4811() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4812() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4813() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4814() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4815() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4816() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4817() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4818() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4819() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4820() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4821() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4822() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4823() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4824() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4825() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4826() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4827() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4828() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4829() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4830() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4831() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4832() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4833() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4834() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4835() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4836() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4837() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4838() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4839() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4840() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4841() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4842() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4843() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4844() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4845() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4846() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4847() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4848() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4849() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4850() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4851() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4852() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4853() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4854() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4855() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4856() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4857() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4858() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4859() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4860() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4861() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4862() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4863() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4864() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4865() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4866() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4867() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4868() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4869() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4870() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4871() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4872() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4873() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4874() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4875() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4876() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4877() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4878() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4879() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4880() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4881() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4882() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4883() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4884() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4885() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4886() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4887() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4888() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4889() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4890() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4891() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4892() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4893() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4894() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4895() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4896() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4897() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4898() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4899() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4900() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4901() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4902() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4903() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4904() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4905() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4906() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4907() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4908() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4909() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4910() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4911() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4912() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4913() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4914() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4915() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4916() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4917() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4918() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4919() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4920() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4921() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4922() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4923() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4924() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4925() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4926() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4927() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4928() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4929() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4930() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4931() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4932() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4933() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4934() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4935() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4936() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4937() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4938() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4939() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4940() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4941() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4942() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4943() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4944() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4945() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4946() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4947() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4948() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4949() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4950() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4951() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4952() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4953() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4954() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4955() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4956() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4957() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4958() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4959() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4960() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4961() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4962() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4963() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4964() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4965() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4966() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4967() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4968() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4969() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4970() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4971() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4972() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4973() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4974() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4975() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4976() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4977() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4978() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4979() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4980() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4981() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4982() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4983() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4984() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4985() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4986() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4987() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4988() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4989() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4990() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4991() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4992() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4993() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4994() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4995() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4996() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4997() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4998() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_4999() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - [Fact] - public void XUnit_D1_5000() - { - //System.Threading.Thread.Sleep(1500); - Assert.Equal(1, 1); - } - #endregion - - #region FailingTests - [Fact] - public void XUnit_D1_5001() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5002() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5003() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5004() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5005() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5006() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5007() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5008() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5009() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5010() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5011() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5012() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5013() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5014() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5015() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5016() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5017() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5018() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5019() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5020() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5021() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5022() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5023() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5024() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5025() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5026() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5027() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5028() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5029() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5030() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5031() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5032() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5033() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5034() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5035() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5036() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5037() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5038() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5039() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5040() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5041() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5042() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5043() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5044() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5045() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5046() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5047() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5048() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5049() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5050() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5051() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5052() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5053() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5054() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5055() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5056() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5057() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5058() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5059() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5060() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5061() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5062() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5063() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5064() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5065() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5066() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5067() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5068() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5069() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5070() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5071() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5072() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5073() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5074() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5075() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5076() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5077() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5078() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5079() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5080() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5081() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5082() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5083() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5084() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5085() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5086() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5087() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5088() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5089() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5090() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5091() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5092() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5093() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5094() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5095() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5096() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5097() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5098() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5099() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5100() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5101() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5102() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5103() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5104() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5105() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5106() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5107() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5108() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5109() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5110() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5111() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5112() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5113() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5114() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5115() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5116() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5117() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5118() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5119() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5120() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5121() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5122() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5123() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5124() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5125() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5126() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5127() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5128() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5129() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5130() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5131() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5132() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5133() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5134() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5135() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5136() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5137() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5138() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5139() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5140() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5141() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5142() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5143() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5144() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5145() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5146() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5147() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5148() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5149() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5150() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5151() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5152() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5153() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5154() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5155() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5156() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5157() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5158() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5159() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5160() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5161() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5162() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5163() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5164() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5165() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5166() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5167() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5168() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5169() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5170() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5171() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5172() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5173() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5174() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5175() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5176() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5177() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5178() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5179() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5180() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5181() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5182() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5183() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5184() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5185() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5186() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5187() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5188() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5189() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5190() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5191() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5192() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5193() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5194() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5195() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5196() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5197() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5198() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5199() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5200() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5201() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5202() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5203() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5204() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5205() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5206() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5207() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5208() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5209() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5210() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5211() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5212() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5213() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5214() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5215() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5216() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5217() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5218() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5219() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5220() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5221() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5222() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5223() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5224() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5225() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5226() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5227() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5228() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5229() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5230() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5231() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5232() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5233() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5234() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5235() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5236() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5237() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5238() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5239() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5240() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5241() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5242() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5243() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5244() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5245() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5246() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5247() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5248() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5249() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5250() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5251() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5252() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5253() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5254() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5255() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5256() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5257() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5258() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5259() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5260() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5261() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5262() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5263() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5264() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5265() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5266() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5267() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5268() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5269() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5270() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5271() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5272() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5273() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5274() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5275() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5276() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5277() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5278() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5279() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5280() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5281() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5282() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5283() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5284() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5285() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5286() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5287() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5288() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5289() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5290() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5291() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5292() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5293() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5294() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5295() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5296() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5297() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5298() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5299() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5300() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5301() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5302() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5303() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5304() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5305() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5306() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5307() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5308() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5309() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5310() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5311() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5312() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5313() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5314() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5315() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5316() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5317() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5318() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5319() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5320() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5321() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5322() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5323() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5324() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5325() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5326() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5327() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5328() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5329() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5330() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5331() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5332() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5333() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5334() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5335() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5336() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5337() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5338() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5339() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5340() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5341() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5342() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5343() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5344() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5345() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5346() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5347() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5348() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5349() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5350() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5351() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5352() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5353() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5354() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5355() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5356() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5357() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5358() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5359() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5360() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5361() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5362() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5363() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5364() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5365() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5366() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5367() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5368() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5369() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5370() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5371() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5372() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5373() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5374() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5375() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5376() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5377() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5378() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5379() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5380() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5381() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5382() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5383() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5384() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5385() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5386() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5387() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5388() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5389() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5390() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5391() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5392() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5393() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5394() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5395() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5396() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5397() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5398() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5399() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5400() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5401() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5402() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5403() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5404() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5405() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5406() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5407() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5408() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5409() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5410() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5411() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5412() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5413() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5414() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5415() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5416() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5417() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5418() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5419() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5420() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5421() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5422() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5423() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5424() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5425() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5426() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5427() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5428() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5429() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5430() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5431() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5432() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5433() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5434() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5435() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5436() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5437() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5438() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5439() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5440() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5441() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5442() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5443() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5444() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5445() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5446() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5447() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5448() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5449() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5450() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5451() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5452() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5453() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5454() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5455() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5456() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5457() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5458() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5459() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5460() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5461() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5462() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5463() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5464() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5465() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5466() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5467() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5468() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5469() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5470() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5471() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5472() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5473() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5474() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5475() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5476() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5477() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5478() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5479() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5480() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5481() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5482() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5483() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5484() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5485() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5486() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5487() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5488() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5489() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5490() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5491() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5492() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5493() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5494() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5495() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5496() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5497() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5498() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5499() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5500() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5501() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5502() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5503() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5504() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5505() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5506() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5507() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5508() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5509() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5510() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5511() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5512() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5513() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5514() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5515() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5516() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5517() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5518() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5519() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5520() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5521() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5522() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5523() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5524() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5525() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5526() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5527() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5528() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5529() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5530() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5531() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5532() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5533() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5534() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5535() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5536() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5537() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5538() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5539() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5540() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5541() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5542() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5543() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5544() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5545() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5546() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5547() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5548() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5549() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5550() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5551() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5552() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5553() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5554() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5555() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5556() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5557() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5558() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5559() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5560() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5561() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5562() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5563() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5564() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5565() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5566() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5567() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5568() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5569() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5570() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5571() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5572() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5573() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5574() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5575() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5576() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5577() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5578() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5579() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5580() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5581() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5582() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5583() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5584() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5585() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5586() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5587() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5588() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5589() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5590() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5591() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5592() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5593() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5594() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5595() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5596() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5597() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5598() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5599() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5600() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5601() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5602() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5603() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5604() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5605() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5606() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5607() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5608() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5609() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5610() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5611() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5612() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5613() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5614() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5615() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5616() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5617() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5618() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5619() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5620() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5621() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5622() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5623() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5624() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5625() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5626() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5627() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5628() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5629() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5630() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5631() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5632() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5633() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5634() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5635() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5636() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5637() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5638() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5639() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5640() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5641() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5642() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5643() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5644() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5645() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5646() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5647() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5648() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5649() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5650() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5651() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5652() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5653() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5654() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5655() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5656() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5657() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5658() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5659() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5660() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5661() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5662() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5663() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5664() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5665() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5666() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5667() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5668() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5669() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5670() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5671() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5672() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5673() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5674() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5675() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5676() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5677() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5678() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5679() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5680() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5681() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5682() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5683() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5684() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5685() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5686() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5687() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5688() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5689() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5690() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5691() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5692() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5693() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5694() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5695() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5696() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5697() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5698() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5699() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5700() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5701() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5702() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5703() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5704() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5705() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5706() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5707() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5708() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5709() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5710() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5711() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5712() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5713() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5714() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5715() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5716() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5717() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5718() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5719() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5720() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5721() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5722() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5723() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5724() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5725() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5726() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5727() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5728() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5729() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5730() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5731() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5732() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5733() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5734() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5735() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5736() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5737() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5738() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5739() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5740() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5741() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5742() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5743() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5744() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5745() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5746() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5747() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5748() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5749() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5750() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5751() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5752() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5753() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5754() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5755() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5756() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5757() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5758() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5759() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5760() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5761() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5762() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5763() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5764() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5765() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5766() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5767() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5768() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5769() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5770() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5771() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5772() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5773() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5774() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5775() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5776() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5777() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5778() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5779() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5780() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5781() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5782() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5783() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5784() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5785() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5786() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5787() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5788() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5789() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5790() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5791() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5792() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5793() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5794() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5795() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5796() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5797() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5798() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5799() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5800() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5801() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5802() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5803() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5804() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5805() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5806() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5807() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5808() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5809() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5810() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5811() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5812() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5813() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5814() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5815() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5816() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5817() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5818() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5819() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5820() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5821() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5822() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5823() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5824() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5825() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5826() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5827() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5828() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5829() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5830() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5831() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5832() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5833() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5834() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5835() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5836() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5837() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5838() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5839() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5840() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5841() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5842() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5843() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5844() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5845() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5846() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5847() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5848() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5849() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5850() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5851() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5852() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5853() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5854() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5855() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5856() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5857() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5858() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5859() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5860() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5861() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5862() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5863() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5864() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5865() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5866() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5867() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5868() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5869() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5870() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5871() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5872() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5873() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5874() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5875() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5876() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5877() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5878() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5879() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5880() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5881() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5882() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5883() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5884() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5885() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5886() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5887() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5888() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5889() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5890() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5891() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5892() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5893() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5894() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5895() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5896() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5897() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5898() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5899() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5900() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5901() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5902() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5903() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5904() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5905() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5906() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5907() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5908() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5909() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5910() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5911() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5912() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5913() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5914() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5915() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5916() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5917() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5918() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5919() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5920() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5921() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5922() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5923() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5924() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5925() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5926() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5927() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5928() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5929() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5930() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5931() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5932() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5933() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5934() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5935() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5936() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5937() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5938() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5939() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5940() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5941() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5942() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5943() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5944() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5945() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5946() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5947() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5948() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5949() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5950() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5951() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5952() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5953() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5954() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5955() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5956() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5957() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5958() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5959() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5960() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5961() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5962() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5963() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5964() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5965() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5966() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5967() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5968() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5969() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5970() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5971() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5972() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5973() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5974() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5975() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5976() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5977() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5978() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5979() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5980() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5981() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5982() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5983() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5984() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5985() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5986() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5987() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5988() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5989() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5990() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5991() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5992() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5993() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5994() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5995() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5996() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5997() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5998() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_5999() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6000() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6001() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6002() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6003() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6004() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6005() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6006() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6007() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6008() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6009() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6010() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6011() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6012() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6013() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6014() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6015() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6016() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6017() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6018() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6019() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6020() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6021() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6022() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6023() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6024() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6025() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6026() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6027() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6028() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6029() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6030() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6031() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6032() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6033() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6034() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6035() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6036() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6037() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6038() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6039() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6040() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6041() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6042() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6043() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6044() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6045() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6046() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6047() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6048() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6049() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6050() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6051() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6052() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6053() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6054() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6055() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6056() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6057() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6058() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6059() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6060() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6061() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6062() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6063() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6064() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6065() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6066() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6067() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6068() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6069() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6070() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6071() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6072() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6073() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6074() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6075() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6076() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6077() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6078() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6079() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6080() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6081() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6082() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6083() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6084() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6085() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6086() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6087() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6088() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6089() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6090() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6091() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6092() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6093() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6094() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6095() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6096() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6097() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6098() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6099() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6100() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6101() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6102() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6103() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6104() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6105() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6106() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6107() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6108() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6109() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6110() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6111() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6112() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6113() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6114() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6115() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6116() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6117() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6118() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6119() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6120() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6121() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6122() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6123() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6124() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6125() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6126() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6127() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6128() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6129() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6130() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6131() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6132() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6133() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6134() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6135() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6136() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6137() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6138() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6139() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6140() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6141() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6142() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6143() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6144() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6145() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6146() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6147() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6148() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6149() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6150() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6151() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6152() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6153() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6154() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6155() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6156() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6157() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6158() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6159() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6160() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6161() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6162() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6163() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6164() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6165() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6166() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6167() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6168() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6169() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6170() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6171() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6172() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6173() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6174() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6175() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6176() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6177() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6178() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6179() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6180() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6181() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6182() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6183() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6184() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6185() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6186() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6187() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6188() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6189() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6190() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6191() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6192() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6193() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6194() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6195() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6196() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6197() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6198() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6199() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6200() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6201() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6202() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6203() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6204() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6205() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6206() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6207() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6208() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6209() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6210() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6211() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6212() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6213() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6214() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6215() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6216() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6217() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6218() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6219() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6220() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6221() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6222() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6223() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6224() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6225() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6226() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6227() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6228() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6229() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6230() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6231() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6232() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6233() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6234() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6235() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6236() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6237() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6238() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6239() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6240() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6241() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6242() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6243() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6244() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6245() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6246() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6247() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6248() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6249() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6250() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6251() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6252() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6253() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6254() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6255() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6256() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6257() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6258() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6259() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6260() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6261() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6262() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6263() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6264() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6265() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6266() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6267() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6268() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6269() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6270() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6271() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6272() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6273() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6274() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6275() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6276() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6277() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6278() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6279() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6280() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6281() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6282() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6283() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6284() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6285() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6286() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6287() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6288() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6289() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6290() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6291() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6292() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6293() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6294() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6295() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6296() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6297() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6298() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6299() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6300() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6301() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6302() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6303() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6304() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6305() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6306() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6307() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6308() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6309() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6310() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6311() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6312() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6313() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6314() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6315() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6316() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6317() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6318() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6319() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6320() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6321() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6322() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6323() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6324() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6325() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6326() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6327() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6328() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6329() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6330() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6331() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6332() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6333() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6334() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6335() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6336() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6337() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6338() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6339() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6340() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6341() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6342() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6343() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6344() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6345() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6346() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6347() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6348() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6349() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6350() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6351() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6352() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6353() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6354() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6355() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6356() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6357() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6358() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6359() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6360() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6361() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6362() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6363() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6364() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6365() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6366() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6367() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6368() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6369() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6370() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6371() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6372() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6373() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6374() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6375() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6376() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6377() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6378() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6379() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6380() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6381() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6382() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6383() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6384() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6385() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6386() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6387() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6388() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6389() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6390() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6391() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6392() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6393() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6394() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6395() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6396() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6397() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6398() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6399() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6400() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6401() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6402() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6403() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6404() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6405() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6406() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6407() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6408() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6409() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6410() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6411() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6412() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6413() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6414() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6415() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6416() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6417() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6418() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6419() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6420() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6421() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6422() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6423() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6424() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6425() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6426() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6427() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6428() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6429() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6430() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6431() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6432() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6433() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6434() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6435() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6436() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6437() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6438() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6439() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6440() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6441() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6442() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6443() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6444() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6445() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6446() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6447() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6448() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6449() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6450() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6451() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6452() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6453() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6454() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6455() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6456() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6457() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6458() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6459() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6460() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6461() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6462() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6463() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6464() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6465() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6466() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6467() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6468() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6469() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6470() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6471() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6472() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6473() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6474() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6475() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6476() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6477() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6478() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6479() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6480() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6481() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6482() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6483() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6484() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6485() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6486() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6487() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6488() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6489() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6490() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6491() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6492() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6493() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6494() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6495() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6496() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6497() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6498() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6499() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6500() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6501() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6502() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6503() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6504() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6505() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6506() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6507() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6508() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6509() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6510() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6511() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6512() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6513() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6514() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6515() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6516() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6517() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6518() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6519() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6520() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6521() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6522() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6523() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6524() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6525() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6526() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6527() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6528() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6529() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6530() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6531() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6532() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6533() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6534() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6535() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6536() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6537() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6538() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6539() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6540() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6541() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6542() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6543() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6544() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6545() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6546() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6547() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6548() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6549() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6550() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6551() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6552() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6553() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6554() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6555() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6556() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6557() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6558() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6559() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6560() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6561() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6562() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6563() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6564() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6565() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6566() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6567() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6568() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6569() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6570() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6571() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6572() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6573() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6574() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6575() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6576() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6577() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6578() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6579() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6580() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6581() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6582() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6583() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6584() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6585() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6586() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6587() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6588() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6589() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6590() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6591() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6592() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6593() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6594() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6595() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6596() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6597() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6598() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6599() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6600() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6601() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6602() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6603() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6604() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6605() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6606() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6607() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6608() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6609() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6610() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6611() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6612() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6613() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6614() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6615() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6616() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6617() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6618() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6619() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6620() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6621() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6622() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6623() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6624() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6625() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6626() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6627() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6628() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6629() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6630() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6631() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6632() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6633() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6634() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6635() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6636() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6637() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6638() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6639() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6640() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6641() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6642() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6643() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6644() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6645() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6646() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6647() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6648() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6649() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6650() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6651() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6652() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6653() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6654() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6655() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6656() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6657() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6658() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6659() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6660() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6661() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6662() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6663() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6664() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6665() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6666() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6667() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6668() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6669() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6670() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6671() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6672() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6673() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6674() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6675() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6676() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6677() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6678() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6679() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6680() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6681() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6682() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6683() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6684() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6685() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6686() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6687() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6688() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6689() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6690() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6691() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6692() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6693() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6694() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6695() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6696() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6697() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6698() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6699() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6700() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6701() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6702() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6703() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6704() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6705() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6706() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6707() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6708() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6709() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6710() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6711() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6712() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6713() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6714() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6715() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6716() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6717() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6718() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6719() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6720() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6721() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6722() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6723() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6724() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6725() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6726() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6727() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6728() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6729() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6730() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6731() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6732() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6733() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6734() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6735() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6736() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6737() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6738() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6739() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6740() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6741() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6742() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6743() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6744() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6745() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6746() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6747() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6748() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6749() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6750() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6751() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6752() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6753() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6754() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6755() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6756() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6757() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6758() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6759() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6760() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6761() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6762() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6763() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6764() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6765() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6766() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6767() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6768() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6769() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6770() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6771() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6772() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6773() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6774() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6775() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6776() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6777() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6778() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6779() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6780() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6781() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6782() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6783() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6784() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6785() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6786() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6787() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6788() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6789() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6790() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6791() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6792() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6793() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6794() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6795() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6796() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6797() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6798() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6799() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6800() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6801() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6802() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6803() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6804() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6805() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6806() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6807() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6808() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6809() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6810() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6811() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6812() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6813() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6814() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6815() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6816() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6817() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6818() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6819() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6820() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6821() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6822() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6823() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6824() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6825() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6826() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6827() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6828() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6829() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6830() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6831() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6832() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6833() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6834() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6835() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6836() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6837() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6838() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6839() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6840() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6841() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6842() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6843() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6844() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6845() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6846() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6847() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6848() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6849() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6850() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6851() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6852() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6853() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6854() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6855() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6856() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6857() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6858() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6859() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6860() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6861() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6862() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6863() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6864() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6865() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6866() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6867() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6868() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6869() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6870() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6871() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6872() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6873() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6874() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6875() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6876() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6877() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6878() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6879() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6880() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6881() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6882() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6883() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6884() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6885() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6886() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6887() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6888() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6889() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6890() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6891() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6892() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6893() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6894() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6895() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6896() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6897() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6898() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6899() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6900() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6901() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6902() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6903() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6904() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6905() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6906() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6907() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6908() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6909() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6910() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6911() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6912() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6913() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6914() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6915() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6916() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6917() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6918() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6919() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6920() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6921() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6922() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6923() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6924() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6925() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6926() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6927() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6928() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6929() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6930() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6931() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6932() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6933() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6934() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6935() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6936() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6937() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6938() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6939() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6940() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6941() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6942() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6943() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6944() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6945() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6946() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6947() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6948() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6949() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6950() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6951() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6952() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6953() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6954() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6955() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6956() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6957() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6958() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6959() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6960() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6961() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6962() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6963() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6964() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6965() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6966() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6967() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6968() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6969() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6970() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6971() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6972() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6973() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6974() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6975() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6976() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6977() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6978() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6979() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6980() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6981() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6982() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6983() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6984() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6985() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6986() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6987() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6988() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6989() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6990() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6991() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6992() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6993() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6994() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6995() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6996() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6997() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6998() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_6999() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7000() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7001() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7002() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7003() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7004() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7005() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7006() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7007() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7008() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7009() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7010() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7011() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7012() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7013() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7014() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7015() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7016() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7017() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7018() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7019() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7020() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7021() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7022() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7023() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7024() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7025() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7026() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7027() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7028() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7029() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7030() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7031() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7032() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7033() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7034() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7035() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7036() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7037() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7038() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7039() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7040() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7041() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7042() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7043() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7044() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7045() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7046() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7047() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7048() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7049() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7050() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7051() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7052() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7053() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7054() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7055() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7056() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7057() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7058() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7059() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7060() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7061() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7062() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7063() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7064() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7065() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7066() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7067() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7068() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7069() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7070() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7071() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7072() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7073() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7074() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7075() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7076() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7077() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7078() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7079() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7080() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7081() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7082() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7083() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7084() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7085() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7086() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7087() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7088() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7089() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7090() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7091() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7092() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7093() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7094() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7095() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7096() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7097() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7098() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7099() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7100() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7101() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7102() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7103() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7104() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7105() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7106() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7107() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7108() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7109() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7110() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7111() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7112() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7113() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7114() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7115() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7116() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7117() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7118() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7119() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7120() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7121() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7122() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7123() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7124() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7125() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7126() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7127() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7128() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7129() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7130() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7131() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7132() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7133() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7134() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7135() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7136() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7137() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7138() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7139() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7140() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7141() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7142() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7143() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7144() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7145() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7146() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7147() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7148() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7149() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7150() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7151() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7152() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7153() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7154() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7155() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7156() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7157() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7158() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7159() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7160() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7161() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7162() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7163() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7164() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7165() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7166() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7167() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7168() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7169() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7170() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7171() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7172() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7173() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7174() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7175() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7176() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7177() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7178() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7179() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7180() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7181() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7182() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7183() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7184() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7185() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7186() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7187() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7188() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7189() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7190() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7191() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7192() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7193() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7194() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7195() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7196() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7197() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7198() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7199() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7200() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7201() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7202() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7203() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7204() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7205() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7206() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7207() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7208() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7209() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7210() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7211() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7212() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7213() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7214() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7215() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7216() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7217() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7218() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7219() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7220() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7221() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7222() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7223() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7224() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7225() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7226() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7227() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7228() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7229() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7230() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7231() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7232() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7233() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7234() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7235() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7236() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7237() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7238() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7239() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7240() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7241() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7242() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7243() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7244() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7245() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7246() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7247() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7248() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7249() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7250() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7251() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7252() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7253() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7254() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7255() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7256() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7257() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7258() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7259() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7260() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7261() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7262() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7263() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7264() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7265() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7266() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7267() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7268() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7269() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7270() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7271() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7272() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7273() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7274() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7275() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7276() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7277() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7278() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7279() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7280() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7281() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7282() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7283() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7284() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7285() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7286() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7287() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7288() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7289() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7290() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7291() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7292() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7293() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7294() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7295() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7296() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7297() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7298() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7299() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7300() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7301() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7302() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7303() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7304() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7305() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7306() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7307() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7308() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7309() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7310() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7311() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7312() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7313() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7314() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7315() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7316() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7317() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7318() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7319() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7320() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7321() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7322() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7323() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7324() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7325() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7326() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7327() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7328() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7329() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7330() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7331() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7332() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7333() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7334() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7335() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7336() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7337() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7338() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7339() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7340() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7341() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7342() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7343() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7344() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7345() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7346() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7347() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7348() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7349() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7350() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7351() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7352() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7353() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7354() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7355() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7356() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7357() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7358() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7359() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7360() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7361() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7362() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7363() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7364() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7365() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7366() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7367() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7368() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7369() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7370() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7371() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7372() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7373() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7374() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7375() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7376() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7377() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7378() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7379() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7380() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7381() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7382() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7383() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7384() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7385() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7386() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7387() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7388() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7389() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7390() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7391() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7392() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7393() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7394() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7395() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7396() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7397() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7398() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7399() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7400() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7401() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7402() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7403() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7404() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7405() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7406() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7407() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7408() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7409() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7410() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7411() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7412() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7413() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7414() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7415() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7416() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7417() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7418() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7419() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7420() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7421() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7422() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7423() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7424() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7425() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7426() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7427() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7428() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7429() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7430() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7431() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7432() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7433() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7434() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7435() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7436() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7437() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7438() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7439() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7440() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7441() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7442() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7443() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7444() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7445() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7446() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7447() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7448() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7449() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7450() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7451() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7452() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7453() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7454() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7455() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7456() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7457() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7458() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7459() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7460() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7461() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7462() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7463() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7464() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7465() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7466() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7467() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7468() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7469() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7470() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7471() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7472() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7473() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7474() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7475() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7476() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7477() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7478() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7479() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7480() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7481() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7482() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7483() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7484() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7485() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7486() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7487() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7488() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7489() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7490() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7491() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7492() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7493() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7494() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7495() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7496() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7497() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7498() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7499() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7500() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7501() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7502() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7503() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7504() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7505() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7506() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7507() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7508() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7509() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7510() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7511() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7512() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7513() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7514() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7515() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7516() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7517() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7518() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7519() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7520() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7521() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7522() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7523() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7524() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7525() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7526() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7527() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7528() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7529() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7530() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7531() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7532() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7533() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7534() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7535() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7536() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7537() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7538() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7539() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7540() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7541() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7542() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7543() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7544() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7545() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7546() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7547() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7548() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7549() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7550() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7551() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7552() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7553() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7554() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7555() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7556() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7557() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7558() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7559() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7560() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7561() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7562() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7563() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7564() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7565() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7566() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7567() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7568() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7569() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7570() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7571() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7572() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7573() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7574() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7575() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7576() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7577() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7578() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7579() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7580() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7581() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7582() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7583() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7584() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7585() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7586() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7587() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7588() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7589() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7590() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7591() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7592() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7593() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7594() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7595() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7596() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7597() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7598() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7599() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7600() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7601() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7602() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7603() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7604() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7605() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7606() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7607() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7608() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7609() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7610() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7611() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7612() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7613() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7614() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7615() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7616() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7617() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7618() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7619() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7620() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7621() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7622() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7623() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7624() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7625() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7626() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7627() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7628() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7629() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7630() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7631() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7632() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7633() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7634() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7635() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7636() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7637() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7638() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7639() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7640() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7641() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7642() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7643() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7644() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7645() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7646() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7647() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7648() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7649() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7650() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7651() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7652() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7653() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7654() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7655() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7656() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7657() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7658() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7659() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7660() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7661() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7662() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7663() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7664() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7665() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7666() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7667() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7668() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7669() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7670() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7671() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7672() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7673() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7674() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7675() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7676() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7677() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7678() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7679() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7680() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7681() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7682() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7683() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7684() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7685() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7686() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7687() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7688() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7689() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7690() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7691() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7692() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7693() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7694() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7695() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7696() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7697() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7698() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7699() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7700() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7701() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7702() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7703() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7704() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7705() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7706() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7707() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7708() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7709() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7710() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7711() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7712() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7713() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7714() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7715() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7716() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7717() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7718() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7719() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7720() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7721() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7722() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7723() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7724() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7725() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7726() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7727() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7728() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7729() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7730() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7731() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7732() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7733() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7734() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7735() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7736() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7737() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7738() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7739() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7740() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7741() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7742() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7743() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7744() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7745() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7746() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7747() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7748() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7749() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7750() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7751() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7752() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7753() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7754() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7755() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7756() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7757() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7758() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7759() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7760() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7761() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7762() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7763() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7764() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7765() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7766() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7767() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7768() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7769() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7770() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7771() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7772() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7773() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7774() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7775() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7776() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7777() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7778() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7779() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7780() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7781() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7782() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7783() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7784() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7785() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7786() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7787() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7788() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7789() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7790() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7791() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7792() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7793() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7794() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7795() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7796() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7797() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7798() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7799() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7800() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7801() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7802() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7803() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7804() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7805() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7806() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7807() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7808() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7809() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7810() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7811() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7812() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7813() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7814() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7815() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7816() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7817() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7818() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7819() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7820() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7821() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7822() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7823() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7824() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7825() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7826() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7827() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7828() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7829() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7830() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7831() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7832() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7833() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7834() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7835() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7836() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7837() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7838() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7839() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7840() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7841() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7842() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7843() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7844() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7845() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7846() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7847() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7848() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7849() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7850() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7851() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7852() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7853() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7854() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7855() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7856() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7857() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7858() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7859() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7860() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7861() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7862() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7863() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7864() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7865() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7866() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7867() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7868() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7869() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7870() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7871() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7872() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7873() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7874() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7875() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7876() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7877() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7878() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7879() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7880() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7881() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7882() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7883() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7884() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7885() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7886() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7887() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7888() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7889() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7890() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7891() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7892() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7893() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7894() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7895() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7896() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7897() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7898() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7899() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7900() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7901() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7902() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7903() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7904() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7905() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7906() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7907() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7908() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7909() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7910() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7911() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7912() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7913() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7914() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7915() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7916() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7917() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7918() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7919() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7920() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7921() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7922() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7923() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7924() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7925() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7926() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7927() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7928() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7929() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7930() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7931() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7932() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7933() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7934() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7935() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7936() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7937() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7938() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7939() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7940() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7941() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7942() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7943() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7944() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7945() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7946() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7947() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7948() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7949() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7950() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7951() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7952() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7953() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7954() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7955() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7956() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7957() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7958() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7959() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7960() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7961() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7962() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7963() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7964() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7965() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7966() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7967() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7968() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7969() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7970() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7971() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7972() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7973() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7974() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7975() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7976() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7977() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7978() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7979() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7980() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7981() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7982() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7983() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7984() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7985() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7986() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7987() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7988() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7989() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7990() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7991() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7992() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7993() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7994() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7995() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7996() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7997() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7998() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_7999() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8000() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8001() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8002() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8003() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8004() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8005() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8006() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8007() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8008() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8009() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8010() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8011() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8012() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8013() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8014() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8015() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8016() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8017() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8018() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8019() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8020() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8021() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8022() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8023() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8024() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8025() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8026() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8027() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8028() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8029() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8030() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8031() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8032() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8033() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8034() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8035() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8036() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8037() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8038() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8039() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8040() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8041() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8042() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8043() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8044() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8045() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8046() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8047() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8048() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8049() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8050() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8051() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8052() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8053() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8054() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8055() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8056() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8057() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8058() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8059() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8060() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8061() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8062() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8063() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8064() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8065() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8066() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8067() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8068() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8069() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8070() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8071() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8072() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8073() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8074() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8075() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8076() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8077() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8078() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8079() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8080() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8081() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8082() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8083() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8084() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8085() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8086() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8087() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8088() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8089() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8090() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8091() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8092() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8093() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8094() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8095() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8096() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8097() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8098() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8099() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8100() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8101() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8102() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8103() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8104() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8105() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8106() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8107() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8108() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8109() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8110() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8111() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8112() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8113() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8114() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8115() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8116() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8117() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8118() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8119() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8120() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8121() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8122() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8123() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8124() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8125() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8126() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8127() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8128() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8129() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8130() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8131() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8132() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8133() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8134() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8135() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8136() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8137() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8138() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8139() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8140() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8141() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8142() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8143() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8144() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8145() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8146() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8147() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8148() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8149() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8150() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8151() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8152() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8153() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8154() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8155() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8156() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8157() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8158() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8159() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8160() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8161() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8162() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8163() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8164() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8165() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8166() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8167() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8168() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8169() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8170() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8171() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8172() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8173() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8174() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8175() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8176() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8177() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8178() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8179() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8180() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8181() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8182() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8183() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8184() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8185() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8186() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8187() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8188() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8189() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8190() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8191() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8192() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8193() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8194() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8195() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8196() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8197() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8198() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8199() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8200() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8201() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8202() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8203() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8204() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8205() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8206() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8207() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8208() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8209() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8210() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8211() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8212() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8213() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8214() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8215() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8216() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8217() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8218() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8219() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8220() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8221() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8222() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8223() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8224() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8225() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8226() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8227() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8228() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8229() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8230() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8231() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8232() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8233() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8234() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8235() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8236() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8237() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8238() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8239() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8240() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8241() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8242() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8243() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8244() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8245() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8246() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8247() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8248() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8249() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8250() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8251() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8252() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8253() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8254() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8255() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8256() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8257() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8258() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8259() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8260() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8261() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8262() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8263() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8264() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8265() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8266() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8267() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8268() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8269() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8270() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8271() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8272() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8273() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8274() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8275() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8276() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8277() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8278() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8279() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8280() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8281() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8282() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8283() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8284() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8285() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8286() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8287() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8288() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8289() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8290() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8291() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8292() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8293() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8294() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8295() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8296() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8297() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8298() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8299() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8300() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8301() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8302() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8303() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8304() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8305() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8306() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8307() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8308() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8309() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8310() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8311() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8312() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8313() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8314() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8315() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8316() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8317() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8318() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8319() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8320() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8321() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8322() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8323() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8324() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8325() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8326() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8327() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8328() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8329() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8330() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8331() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8332() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8333() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8334() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8335() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8336() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8337() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8338() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8339() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8340() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8341() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8342() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8343() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8344() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8345() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8346() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8347() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8348() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8349() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8350() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8351() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8352() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8353() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8354() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8355() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8356() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8357() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8358() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8359() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8360() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8361() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8362() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8363() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8364() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8365() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8366() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8367() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8368() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8369() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8370() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8371() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8372() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8373() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8374() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8375() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8376() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8377() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8378() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8379() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8380() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8381() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8382() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8383() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8384() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8385() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8386() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8387() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8388() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8389() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8390() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8391() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8392() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8393() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8394() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8395() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8396() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8397() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8398() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8399() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8400() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8401() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8402() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8403() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8404() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8405() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8406() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8407() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8408() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8409() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8410() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8411() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8412() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8413() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8414() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8415() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8416() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8417() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8418() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8419() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8420() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8421() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8422() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8423() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8424() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8425() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8426() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8427() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8428() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8429() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8430() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8431() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8432() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8433() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8434() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8435() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8436() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8437() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8438() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8439() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8440() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8441() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8442() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8443() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8444() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8445() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8446() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8447() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8448() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8449() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8450() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8451() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8452() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8453() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8454() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8455() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8456() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8457() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8458() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8459() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8460() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8461() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8462() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8463() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8464() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8465() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8466() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8467() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8468() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8469() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8470() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8471() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8472() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8473() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8474() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8475() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8476() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8477() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8478() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8479() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8480() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8481() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8482() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8483() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8484() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8485() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8486() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8487() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8488() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8489() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8490() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8491() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8492() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8493() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8494() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8495() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8496() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8497() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8498() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8499() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8500() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8501() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8502() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8503() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8504() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8505() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8506() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8507() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8508() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8509() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8510() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8511() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8512() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8513() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8514() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8515() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8516() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8517() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8518() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8519() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8520() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8521() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8522() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8523() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8524() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8525() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8526() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8527() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8528() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8529() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8530() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8531() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8532() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8533() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8534() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8535() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8536() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8537() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8538() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8539() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8540() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8541() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8542() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8543() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8544() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8545() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8546() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8547() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8548() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8549() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8550() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8551() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8552() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8553() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8554() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8555() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8556() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8557() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8558() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8559() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8560() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8561() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8562() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8563() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8564() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8565() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8566() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8567() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8568() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8569() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8570() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8571() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8572() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8573() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8574() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8575() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8576() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8577() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8578() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8579() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8580() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8581() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8582() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8583() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8584() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8585() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8586() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8587() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8588() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8589() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8590() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8591() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8592() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8593() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8594() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8595() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8596() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8597() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8598() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8599() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8600() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8601() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8602() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8603() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8604() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8605() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8606() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8607() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8608() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8609() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8610() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8611() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8612() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8613() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8614() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8615() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8616() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8617() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8618() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8619() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8620() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8621() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8622() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8623() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8624() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8625() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8626() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8627() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8628() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8629() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8630() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8631() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8632() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8633() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8634() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8635() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8636() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8637() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8638() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8639() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8640() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8641() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8642() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8643() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8644() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8645() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8646() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8647() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8648() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8649() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8650() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8651() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8652() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8653() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8654() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8655() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8656() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8657() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8658() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8659() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8660() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8661() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8662() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8663() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8664() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8665() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8666() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8667() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8668() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8669() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8670() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8671() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8672() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8673() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8674() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8675() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8676() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8677() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8678() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8679() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8680() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8681() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8682() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8683() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8684() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8685() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8686() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8687() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8688() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8689() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8690() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8691() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8692() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8693() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8694() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8695() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8696() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8697() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8698() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8699() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8700() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8701() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8702() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8703() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8704() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8705() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8706() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8707() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8708() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8709() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8710() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8711() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8712() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8713() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8714() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8715() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8716() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8717() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8718() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8719() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8720() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8721() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8722() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8723() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8724() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8725() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8726() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8727() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8728() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8729() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8730() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8731() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8732() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8733() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8734() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8735() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8736() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8737() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8738() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8739() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8740() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8741() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8742() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8743() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8744() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8745() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8746() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8747() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8748() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8749() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8750() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8751() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8752() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8753() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8754() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8755() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8756() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8757() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8758() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8759() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8760() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8761() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8762() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8763() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8764() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8765() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8766() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8767() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8768() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8769() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8770() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8771() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8772() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8773() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8774() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8775() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8776() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8777() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8778() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8779() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8780() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8781() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8782() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8783() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8784() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8785() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8786() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8787() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8788() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8789() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8790() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8791() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8792() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8793() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8794() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8795() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8796() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8797() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8798() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8799() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8800() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8801() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8802() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8803() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8804() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8805() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8806() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8807() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8808() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8809() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8810() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8811() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8812() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8813() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8814() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8815() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8816() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8817() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8818() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8819() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8820() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8821() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8822() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8823() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8824() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8825() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8826() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8827() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8828() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8829() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8830() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8831() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8832() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8833() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8834() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8835() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8836() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8837() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8838() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8839() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8840() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8841() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8842() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8843() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8844() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8845() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8846() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8847() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8848() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8849() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8850() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8851() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8852() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8853() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8854() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8855() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8856() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8857() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8858() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8859() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8860() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8861() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8862() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8863() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8864() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8865() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8866() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8867() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8868() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8869() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8870() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8871() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8872() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8873() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8874() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8875() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8876() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8877() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8878() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8879() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8880() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8881() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8882() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8883() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8884() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8885() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8886() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8887() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8888() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8889() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8890() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8891() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8892() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8893() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8894() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8895() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8896() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8897() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8898() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8899() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8900() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8901() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8902() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8903() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8904() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8905() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8906() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8907() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8908() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8909() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8910() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8911() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8912() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8913() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8914() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8915() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8916() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8917() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8918() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8919() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8920() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8921() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8922() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8923() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8924() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8925() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8926() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8927() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8928() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8929() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8930() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8931() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8932() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8933() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8934() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8935() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8936() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8937() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8938() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8939() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8940() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8941() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8942() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8943() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8944() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8945() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8946() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8947() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8948() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8949() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8950() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8951() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8952() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8953() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8954() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8955() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8956() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8957() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8958() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8959() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8960() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8961() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8962() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8963() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8964() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8965() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8966() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8967() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8968() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8969() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8970() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8971() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8972() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8973() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8974() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8975() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8976() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8977() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8978() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8979() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8980() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8981() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8982() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8983() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8984() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8985() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8986() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8987() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8988() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8989() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8990() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8991() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8992() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8993() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8994() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8995() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8996() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8997() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8998() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_8999() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9000() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9001() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9002() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9003() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9004() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9005() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9006() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9007() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9008() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9009() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9010() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9011() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9012() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9013() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9014() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9015() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9016() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9017() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9018() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9019() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9020() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9021() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9022() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9023() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9024() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9025() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9026() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9027() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9028() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9029() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9030() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9031() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9032() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9033() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9034() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9035() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9036() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9037() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9038() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9039() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9040() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9041() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9042() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9043() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9044() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9045() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9046() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9047() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9048() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9049() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9050() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9051() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9052() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9053() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9054() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9055() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9056() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9057() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9058() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9059() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9060() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9061() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9062() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9063() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9064() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9065() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9066() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9067() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9068() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9069() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9070() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9071() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9072() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9073() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9074() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9075() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9076() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9077() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9078() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9079() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9080() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9081() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9082() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9083() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9084() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9085() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9086() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9087() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9088() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9089() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9090() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9091() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9092() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9093() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9094() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9095() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9096() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9097() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9098() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9099() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9100() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9101() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9102() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9103() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9104() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9105() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9106() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9107() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9108() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9109() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9110() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9111() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9112() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9113() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9114() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9115() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9116() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9117() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9118() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9119() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9120() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9121() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9122() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9123() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9124() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9125() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9126() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9127() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9128() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9129() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9130() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9131() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9132() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9133() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9134() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9135() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9136() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9137() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9138() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9139() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9140() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9141() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9142() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9143() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9144() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9145() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9146() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9147() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9148() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9149() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9150() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9151() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9152() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9153() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9154() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9155() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9156() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9157() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9158() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9159() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9160() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9161() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9162() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9163() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9164() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9165() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9166() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9167() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9168() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9169() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9170() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9171() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9172() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9173() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9174() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9175() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9176() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9177() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9178() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9179() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9180() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9181() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9182() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9183() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9184() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9185() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9186() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9187() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9188() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9189() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9190() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9191() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9192() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9193() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9194() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9195() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9196() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9197() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9198() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9199() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9200() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9201() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9202() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9203() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9204() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9205() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9206() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9207() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9208() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9209() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9210() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9211() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9212() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9213() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9214() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9215() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9216() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9217() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9218() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9219() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9220() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9221() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9222() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9223() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9224() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9225() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9226() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9227() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9228() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9229() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9230() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9231() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9232() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9233() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9234() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9235() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9236() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9237() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9238() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9239() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9240() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9241() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9242() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9243() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9244() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9245() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9246() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9247() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9248() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9249() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9250() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9251() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9252() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9253() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9254() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9255() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9256() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9257() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9258() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9259() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9260() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9261() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9262() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9263() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9264() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9265() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9266() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9267() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9268() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9269() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9270() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9271() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9272() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9273() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9274() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9275() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9276() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9277() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9278() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9279() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9280() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9281() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9282() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9283() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9284() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9285() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9286() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9287() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9288() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9289() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9290() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9291() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9292() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9293() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9294() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9295() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9296() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9297() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9298() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9299() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9300() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9301() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9302() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9303() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9304() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9305() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9306() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9307() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9308() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9309() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9310() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9311() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9312() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9313() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9314() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9315() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9316() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9317() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9318() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9319() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9320() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9321() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9322() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9323() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9324() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9325() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9326() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9327() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9328() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9329() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9330() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9331() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9332() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9333() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9334() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9335() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9336() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9337() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9338() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9339() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9340() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9341() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9342() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9343() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9344() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9345() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9346() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9347() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9348() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9349() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9350() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9351() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9352() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9353() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9354() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9355() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9356() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9357() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9358() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9359() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9360() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9361() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9362() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9363() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9364() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9365() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9366() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9367() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9368() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9369() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9370() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9371() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9372() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9373() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9374() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9375() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9376() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9377() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9378() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9379() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9380() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9381() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9382() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9383() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9384() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9385() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9386() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9387() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9388() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9389() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9390() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9391() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9392() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9393() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9394() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9395() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9396() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9397() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9398() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9399() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9400() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9401() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9402() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9403() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9404() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9405() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9406() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9407() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9408() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9409() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9410() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9411() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9412() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9413() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9414() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9415() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9416() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9417() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9418() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9419() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9420() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9421() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9422() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9423() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9424() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9425() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9426() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9427() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9428() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9429() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9430() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9431() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9432() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9433() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9434() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9435() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9436() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9437() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9438() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9439() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9440() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9441() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9442() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9443() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9444() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9445() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9446() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9447() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9448() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9449() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9450() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9451() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9452() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9453() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9454() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9455() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9456() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9457() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9458() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9459() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9460() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9461() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9462() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9463() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9464() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9465() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9466() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9467() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9468() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9469() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9470() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9471() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9472() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9473() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9474() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9475() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9476() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9477() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9478() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9479() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9480() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9481() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9482() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9483() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9484() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9485() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9486() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9487() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9488() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9489() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9490() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9491() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9492() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9493() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9494() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9495() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9496() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9497() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9498() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9499() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9500() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9501() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9502() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9503() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9504() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9505() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9506() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9507() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9508() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9509() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9510() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9511() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9512() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9513() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9514() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9515() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9516() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9517() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9518() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9519() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9520() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9521() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9522() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9523() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9524() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9525() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9526() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9527() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9528() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9529() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9530() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9531() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9532() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9533() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9534() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9535() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9536() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9537() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9538() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9539() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9540() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9541() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9542() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9543() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9544() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9545() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9546() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9547() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9548() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9549() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9550() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9551() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9552() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9553() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9554() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9555() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9556() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9557() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9558() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9559() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9560() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9561() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9562() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9563() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9564() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9565() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9566() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9567() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9568() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9569() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9570() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9571() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9572() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9573() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9574() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9575() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9576() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9577() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9578() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9579() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9580() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9581() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9582() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9583() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9584() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9585() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9586() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9587() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9588() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9589() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9590() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9591() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9592() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9593() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9594() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9595() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9596() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9597() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9598() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9599() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9600() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9601() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9602() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9603() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9604() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9605() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9606() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9607() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9608() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9609() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9610() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9611() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9612() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9613() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9614() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9615() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9616() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9617() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9618() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9619() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9620() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9621() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9622() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9623() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9624() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9625() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9626() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9627() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9628() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9629() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9630() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9631() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9632() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9633() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9634() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9635() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9636() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9637() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9638() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9639() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9640() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9641() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9642() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9643() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9644() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9645() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9646() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9647() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9648() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9649() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9650() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9651() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9652() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9653() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9654() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9655() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9656() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9657() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9658() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9659() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9660() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9661() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9662() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9663() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9664() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9665() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9666() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9667() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9668() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9669() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9670() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9671() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9672() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9673() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9674() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9675() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9676() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9677() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9678() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9679() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9680() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9681() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9682() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9683() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9684() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9685() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9686() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9687() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9688() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9689() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9690() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9691() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9692() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9693() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9694() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9695() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9696() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9697() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9698() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9699() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9700() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9701() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9702() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9703() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9704() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9705() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9706() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9707() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9708() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9709() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9710() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9711() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9712() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9713() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9714() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9715() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9716() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9717() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9718() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9719() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9720() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9721() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9722() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9723() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9724() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9725() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9726() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9727() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9728() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9729() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9730() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9731() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9732() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9733() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9734() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9735() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9736() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9737() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9738() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9739() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9740() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9741() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9742() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9743() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9744() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9745() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9746() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9747() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9748() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9749() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9750() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9751() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9752() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9753() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9754() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9755() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9756() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9757() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9758() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9759() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9760() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9761() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9762() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9763() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9764() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9765() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9766() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9767() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9768() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9769() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9770() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9771() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9772() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9773() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9774() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9775() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9776() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9777() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9778() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9779() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9780() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9781() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9782() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9783() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9784() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9785() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9786() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9787() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9788() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9789() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9790() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9791() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9792() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9793() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9794() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9795() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9796() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9797() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9798() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9799() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9800() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9801() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9802() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9803() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9804() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9805() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9806() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9807() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9808() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9809() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9810() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9811() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9812() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9813() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9814() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9815() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9816() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9817() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9818() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9819() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9820() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9821() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9822() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9823() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9824() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9825() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9826() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9827() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9828() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9829() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9830() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9831() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9832() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9833() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9834() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9835() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9836() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9837() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9838() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9839() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9840() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9841() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9842() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9843() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9844() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9845() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9846() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9847() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9848() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9849() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9850() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9851() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9852() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9853() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9854() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9855() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9856() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9857() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9858() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9859() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9860() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9861() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9862() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9863() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9864() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9865() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9866() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9867() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9868() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9869() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9870() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9871() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9872() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9873() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9874() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9875() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9876() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9877() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9878() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9879() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9880() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9881() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9882() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9883() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9884() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9885() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9886() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9887() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9888() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9889() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9890() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9891() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9892() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9893() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9894() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9895() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9896() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9897() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9898() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9899() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9900() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9901() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9902() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9903() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9904() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9905() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9906() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9907() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9908() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9909() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9910() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9911() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9912() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9913() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9914() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9915() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9916() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9917() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9918() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9919() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9920() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9921() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9922() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9923() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9924() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9925() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9926() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9927() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9928() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9929() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9930() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9931() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9932() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9933() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9934() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9935() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9936() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9937() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9938() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9939() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9940() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9941() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9942() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9943() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9944() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9945() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9946() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9947() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9948() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9949() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9950() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9951() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9952() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9953() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9954() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9955() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9956() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9957() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9958() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9959() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9960() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9961() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9962() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9963() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9964() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9965() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9966() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9967() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9968() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9969() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9970() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9971() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9972() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9973() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9974() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9975() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9976() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9977() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9978() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9979() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9980() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9981() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9982() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9983() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9984() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9985() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9986() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9987() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9988() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9989() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9990() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9991() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9992() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9993() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9994() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9995() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9996() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9997() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9998() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_9999() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - [Fact] - public void XUnit_D1_10000() - { - //System.Threading.Thread.Sleep(1500); - Assert.False(true); - } - #endregion - } -} diff --git a/test/TestAssets/XUPerfTestProject/XUPerfTestProject.csproj b/test/TestAssets/XUPerfTestProject/XUPerfTestProject.csproj deleted file mode 100644 index b74766c104..0000000000 --- a/test/TestAssets/XUPerfTestProject/XUPerfTestProject.csproj +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - ..\..\..\ - true - true - - - - netcoreapp1.0;net452 - netcoreapp3.1 - Exe - XUPerfTestProject - false - false - false - - - portable - - - full - - - - - - - - - - diff --git a/test/TestAssets/XUTestProject/Class1.cs b/test/TestAssets/XUTestProject/Class1.cs index e1d33d201f..5ae946aa5a 100644 --- a/test/TestAssets/XUTestProject/Class1.cs +++ b/test/TestAssets/XUTestProject/Class1.cs @@ -1,13 +1,12 @@ -// Copyright (c) Microsoft. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +using Xunit; + +#pragma warning disable IDE1006 // Naming Styles namespace xUnitTestProject +#pragma warning restore IDE1006 // Naming Styles { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - using Xunit; - public class Class1 { [Fact] diff --git a/test/TestAssets/XUTestProject/XUTestProject.csproj b/test/TestAssets/XUTestProject/XUTestProject.csproj index 6a1c12cddc..5e91dc7e9d 100644 --- a/test/TestAssets/XUTestProject/XUTestProject.csproj +++ b/test/TestAssets/XUTestProject/XUTestProject.csproj @@ -1,17 +1,13 @@ - + - - XUTestProject - netcoreapp2.1;net46 - netcoreapp3.1 - false + $(NetFrameworkMinimum);$(NetCoreAppMinimum) - + diff --git a/test/TestAssets/child-crash/UnitTest1.cs b/test/TestAssets/child-crash/UnitTest1.cs index f35ac67928..6ea2e14d2d 100644 --- a/test/TestAssets/child-crash/UnitTest1.cs +++ b/test/TestAssets/child-crash/UnitTest1.cs @@ -1,10 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; +#pragma warning disable IDE1006 // Naming Styles namespace child_crash +#pragma warning restore IDE1006 // Naming Styles { [TestClass] public class UnitTest1 @@ -18,7 +24,7 @@ public void TestMethod1() var directory = "Release"; #endif // wait for two children to crash - var childProcess = Path.GetFullPath($@"../../../../problematic-child/bin/{directory}/net5.0/problematic-child{(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : ".dll")}"); + var childProcess = Path.GetFullPath($@"../../../problematic-child/{directory}/net9.0/problematic-child{(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : ".dll")}"); if (!File.Exists(childProcess)) { throw new FileNotFoundException(childProcess); diff --git a/test/TestAssets/child-crash/child-crash.csproj b/test/TestAssets/child-crash/child-crash.csproj index be91e37289..5503a12b23 100644 --- a/test/TestAssets/child-crash/child-crash.csproj +++ b/test/TestAssets/child-crash/child-crash.csproj @@ -1,26 +1,23 @@ - + - ..\..\..\ true true - - - + - net5.0 + net8.0;net9.0 child_crash false - - - - + + + + - + diff --git a/test/TestAssets/child-hang/UnitTest1.cs b/test/TestAssets/child-hang/UnitTest1.cs index 1c0f378c8e..621fc7b3e5 100644 --- a/test/TestAssets/child-hang/UnitTest1.cs +++ b/test/TestAssets/child-hang/UnitTest1.cs @@ -1,11 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Threading; +#pragma warning disable IDE1006 // Naming Styles namespace child_hang +#pragma warning restore IDE1006 // Naming Styles { [TestClass] public class UnitTest1 @@ -19,7 +25,7 @@ public void TestMethod1() var directory = "Release"; #endif // wait for two children to crash - var childProcess = Path.GetFullPath($@"../../../../hanging-child/bin/{directory}/net5.0/hanging-child{(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : ".dll")}"); + var childProcess = Path.GetFullPath($@"../../../hanging-child/{directory}/net9.0/hanging-child{(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : ".dll")}"); // 2 chidren, that is 3 hanging processes var process = (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? Process.Start(childProcess, "2") : Process.Start(GetFullPath("dotnet"), $"{childProcess} 2")); process.WaitForExit(); diff --git a/test/TestAssets/child-hang/child-hang.csproj b/test/TestAssets/child-hang/child-hang.csproj index 318d5f6204..0a96b3dcf2 100644 --- a/test/TestAssets/child-hang/child-hang.csproj +++ b/test/TestAssets/child-hang/child-hang.csproj @@ -1,27 +1,23 @@ - + - ..\..\..\ true true - - - + - net452;net461;net472;net48;netcoreapp2.1;netcoreapp3.1;net5.0 - netcoreapp3.1 + $(NetFrameworkMinimum);net472;net48;$(NetCoreAppMinimum);net8.0;net9.0 child_hang false - - - - + + + + - - + + diff --git a/test/TestAssets/crash/UnitTest1.cs b/test/TestAssets/crash/UnitTest1.cs index c3e0e3a547..cfcb1181c3 100644 --- a/test/TestAssets/crash/UnitTest1.cs +++ b/test/TestAssets/crash/UnitTest1.cs @@ -1,7 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System; +#pragma warning disable IDE1006 // Naming Styles namespace timeout +#pragma warning restore IDE1006 // Naming Styles { [TestClass] public class UnitTest1 diff --git a/test/TestAssets/crash/crash.csproj b/test/TestAssets/crash/crash.csproj index f6a159698a..8488ca3319 100644 --- a/test/TestAssets/crash/crash.csproj +++ b/test/TestAssets/crash/crash.csproj @@ -1,26 +1,20 @@ - + - ..\..\..\ true true - - - - - net452;net461;net472;net48;netcoreapp2.1;netcoreapp3.1;net5.0 - netcoreapp3.1 - false + + $(NetFrameworkMinimum);net472;net48;$(NetCoreAppMinimum);net8.0;net9.0 false - - - - + + + + - + diff --git a/test/TestAssets/hanging-child/Program.cs b/test/TestAssets/hanging-child/Program.cs index 62719c9a47..54eddaecac 100644 --- a/test/TestAssets/hanging-child/Program.cs +++ b/test/TestAssets/hanging-child/Program.cs @@ -1,11 +1,17 @@ -using System; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.Diagnostics; +using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Threading; +#pragma warning disable IDE1006 // Naming Styles namespace hanging_child +#pragma warning restore IDE1006 // Naming Styles { class Program { @@ -13,13 +19,13 @@ static void Main(string[] args) { if (args.Length > 0) { - var val = int.Parse(args[0]); + var val = int.Parse(args[0], CultureInfo.InvariantCulture); if (val > 0) { - // 2 chidren, that is 3 hanging processes + // 2 children, that is 3 hanging processes if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - Process.Start(Process.GetCurrentProcess().MainModule.FileName, (val - 1).ToString()); + Process.Start(Process.GetCurrentProcess().MainModule.FileName, (val - 1).ToString(CultureInfo.InvariantCulture)); } else { diff --git a/test/TestAssets/hanging-child/hanging-child.csproj b/test/TestAssets/hanging-child/hanging-child.csproj index ad2be3e645..2c46cb554d 100644 --- a/test/TestAssets/hanging-child/hanging-child.csproj +++ b/test/TestAssets/hanging-child/hanging-child.csproj @@ -1,15 +1,12 @@ - + - ..\..\..\ true true - - - + - net5.0 + net8.0;net9.0 Exe hanging_child @@ -17,5 +14,5 @@ - + diff --git a/test/TestAssets/performance/MSTest1000Passing/MSTest1000Passing.csproj b/test/TestAssets/performance/MSTest1000Passing/MSTest1000Passing.csproj new file mode 100644 index 0000000000..003be862b0 --- /dev/null +++ b/test/TestAssets/performance/MSTest1000Passing/MSTest1000Passing.csproj @@ -0,0 +1,33 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + MSTests.cs + + + + + + + + + + True + True + MSTests.tt + + + + diff --git a/test/TestAssets/performance/MSTest1000Passing/MSTests.cs b/test/TestAssets/performance/MSTest1000Passing/MSTests.cs new file mode 100644 index 0000000000..d896ce5180 --- /dev/null +++ b/test/TestAssets/performance/MSTest1000Passing/MSTests.cs @@ -0,0 +1,5455 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ + [TestClass] + public class TestClass_01 + { + #region PassingTests + [TestMethod] + public void Test_01_01() + { + } + + [TestMethod] + public void Test_01_02() + { + } + + [TestMethod] + public void Test_01_03() + { + } + + [TestMethod] + public void Test_01_04() + { + } + + [TestMethod] + public void Test_01_05() + { + } + + [TestMethod] + public void Test_01_06() + { + } + + [TestMethod] + public void Test_01_07() + { + } + + [TestMethod] + public void Test_01_08() + { + } + + [TestMethod] + public void Test_01_09() + { + } + + [TestMethod] + public void Test_01_10() + { + } + + [TestMethod] + public void Test_01_11() + { + } + + [TestMethod] + public void Test_01_12() + { + } + + [TestMethod] + public void Test_01_13() + { + } + + [TestMethod] + public void Test_01_14() + { + } + + [TestMethod] + public void Test_01_15() + { + } + + [TestMethod] + public void Test_01_16() + { + } + + [TestMethod] + public void Test_01_17() + { + } + + [TestMethod] + public void Test_01_18() + { + } + + [TestMethod] + public void Test_01_19() + { + } + + [TestMethod] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_02 + { + #region PassingTests + [TestMethod] + public void Test_02_01() + { + } + + [TestMethod] + public void Test_02_02() + { + } + + [TestMethod] + public void Test_02_03() + { + } + + [TestMethod] + public void Test_02_04() + { + } + + [TestMethod] + public void Test_02_05() + { + } + + [TestMethod] + public void Test_02_06() + { + } + + [TestMethod] + public void Test_02_07() + { + } + + [TestMethod] + public void Test_02_08() + { + } + + [TestMethod] + public void Test_02_09() + { + } + + [TestMethod] + public void Test_02_10() + { + } + + [TestMethod] + public void Test_02_11() + { + } + + [TestMethod] + public void Test_02_12() + { + } + + [TestMethod] + public void Test_02_13() + { + } + + [TestMethod] + public void Test_02_14() + { + } + + [TestMethod] + public void Test_02_15() + { + } + + [TestMethod] + public void Test_02_16() + { + } + + [TestMethod] + public void Test_02_17() + { + } + + [TestMethod] + public void Test_02_18() + { + } + + [TestMethod] + public void Test_02_19() + { + } + + [TestMethod] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_03 + { + #region PassingTests + [TestMethod] + public void Test_03_01() + { + } + + [TestMethod] + public void Test_03_02() + { + } + + [TestMethod] + public void Test_03_03() + { + } + + [TestMethod] + public void Test_03_04() + { + } + + [TestMethod] + public void Test_03_05() + { + } + + [TestMethod] + public void Test_03_06() + { + } + + [TestMethod] + public void Test_03_07() + { + } + + [TestMethod] + public void Test_03_08() + { + } + + [TestMethod] + public void Test_03_09() + { + } + + [TestMethod] + public void Test_03_10() + { + } + + [TestMethod] + public void Test_03_11() + { + } + + [TestMethod] + public void Test_03_12() + { + } + + [TestMethod] + public void Test_03_13() + { + } + + [TestMethod] + public void Test_03_14() + { + } + + [TestMethod] + public void Test_03_15() + { + } + + [TestMethod] + public void Test_03_16() + { + } + + [TestMethod] + public void Test_03_17() + { + } + + [TestMethod] + public void Test_03_18() + { + } + + [TestMethod] + public void Test_03_19() + { + } + + [TestMethod] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_04 + { + #region PassingTests + [TestMethod] + public void Test_04_01() + { + } + + [TestMethod] + public void Test_04_02() + { + } + + [TestMethod] + public void Test_04_03() + { + } + + [TestMethod] + public void Test_04_04() + { + } + + [TestMethod] + public void Test_04_05() + { + } + + [TestMethod] + public void Test_04_06() + { + } + + [TestMethod] + public void Test_04_07() + { + } + + [TestMethod] + public void Test_04_08() + { + } + + [TestMethod] + public void Test_04_09() + { + } + + [TestMethod] + public void Test_04_10() + { + } + + [TestMethod] + public void Test_04_11() + { + } + + [TestMethod] + public void Test_04_12() + { + } + + [TestMethod] + public void Test_04_13() + { + } + + [TestMethod] + public void Test_04_14() + { + } + + [TestMethod] + public void Test_04_15() + { + } + + [TestMethod] + public void Test_04_16() + { + } + + [TestMethod] + public void Test_04_17() + { + } + + [TestMethod] + public void Test_04_18() + { + } + + [TestMethod] + public void Test_04_19() + { + } + + [TestMethod] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_05 + { + #region PassingTests + [TestMethod] + public void Test_05_01() + { + } + + [TestMethod] + public void Test_05_02() + { + } + + [TestMethod] + public void Test_05_03() + { + } + + [TestMethod] + public void Test_05_04() + { + } + + [TestMethod] + public void Test_05_05() + { + } + + [TestMethod] + public void Test_05_06() + { + } + + [TestMethod] + public void Test_05_07() + { + } + + [TestMethod] + public void Test_05_08() + { + } + + [TestMethod] + public void Test_05_09() + { + } + + [TestMethod] + public void Test_05_10() + { + } + + [TestMethod] + public void Test_05_11() + { + } + + [TestMethod] + public void Test_05_12() + { + } + + [TestMethod] + public void Test_05_13() + { + } + + [TestMethod] + public void Test_05_14() + { + } + + [TestMethod] + public void Test_05_15() + { + } + + [TestMethod] + public void Test_05_16() + { + } + + [TestMethod] + public void Test_05_17() + { + } + + [TestMethod] + public void Test_05_18() + { + } + + [TestMethod] + public void Test_05_19() + { + } + + [TestMethod] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_06 + { + #region PassingTests + [TestMethod] + public void Test_06_01() + { + } + + [TestMethod] + public void Test_06_02() + { + } + + [TestMethod] + public void Test_06_03() + { + } + + [TestMethod] + public void Test_06_04() + { + } + + [TestMethod] + public void Test_06_05() + { + } + + [TestMethod] + public void Test_06_06() + { + } + + [TestMethod] + public void Test_06_07() + { + } + + [TestMethod] + public void Test_06_08() + { + } + + [TestMethod] + public void Test_06_09() + { + } + + [TestMethod] + public void Test_06_10() + { + } + + [TestMethod] + public void Test_06_11() + { + } + + [TestMethod] + public void Test_06_12() + { + } + + [TestMethod] + public void Test_06_13() + { + } + + [TestMethod] + public void Test_06_14() + { + } + + [TestMethod] + public void Test_06_15() + { + } + + [TestMethod] + public void Test_06_16() + { + } + + [TestMethod] + public void Test_06_17() + { + } + + [TestMethod] + public void Test_06_18() + { + } + + [TestMethod] + public void Test_06_19() + { + } + + [TestMethod] + public void Test_06_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_07 + { + #region PassingTests + [TestMethod] + public void Test_07_01() + { + } + + [TestMethod] + public void Test_07_02() + { + } + + [TestMethod] + public void Test_07_03() + { + } + + [TestMethod] + public void Test_07_04() + { + } + + [TestMethod] + public void Test_07_05() + { + } + + [TestMethod] + public void Test_07_06() + { + } + + [TestMethod] + public void Test_07_07() + { + } + + [TestMethod] + public void Test_07_08() + { + } + + [TestMethod] + public void Test_07_09() + { + } + + [TestMethod] + public void Test_07_10() + { + } + + [TestMethod] + public void Test_07_11() + { + } + + [TestMethod] + public void Test_07_12() + { + } + + [TestMethod] + public void Test_07_13() + { + } + + [TestMethod] + public void Test_07_14() + { + } + + [TestMethod] + public void Test_07_15() + { + } + + [TestMethod] + public void Test_07_16() + { + } + + [TestMethod] + public void Test_07_17() + { + } + + [TestMethod] + public void Test_07_18() + { + } + + [TestMethod] + public void Test_07_19() + { + } + + [TestMethod] + public void Test_07_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_08 + { + #region PassingTests + [TestMethod] + public void Test_08_01() + { + } + + [TestMethod] + public void Test_08_02() + { + } + + [TestMethod] + public void Test_08_03() + { + } + + [TestMethod] + public void Test_08_04() + { + } + + [TestMethod] + public void Test_08_05() + { + } + + [TestMethod] + public void Test_08_06() + { + } + + [TestMethod] + public void Test_08_07() + { + } + + [TestMethod] + public void Test_08_08() + { + } + + [TestMethod] + public void Test_08_09() + { + } + + [TestMethod] + public void Test_08_10() + { + } + + [TestMethod] + public void Test_08_11() + { + } + + [TestMethod] + public void Test_08_12() + { + } + + [TestMethod] + public void Test_08_13() + { + } + + [TestMethod] + public void Test_08_14() + { + } + + [TestMethod] + public void Test_08_15() + { + } + + [TestMethod] + public void Test_08_16() + { + } + + [TestMethod] + public void Test_08_17() + { + } + + [TestMethod] + public void Test_08_18() + { + } + + [TestMethod] + public void Test_08_19() + { + } + + [TestMethod] + public void Test_08_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_09 + { + #region PassingTests + [TestMethod] + public void Test_09_01() + { + } + + [TestMethod] + public void Test_09_02() + { + } + + [TestMethod] + public void Test_09_03() + { + } + + [TestMethod] + public void Test_09_04() + { + } + + [TestMethod] + public void Test_09_05() + { + } + + [TestMethod] + public void Test_09_06() + { + } + + [TestMethod] + public void Test_09_07() + { + } + + [TestMethod] + public void Test_09_08() + { + } + + [TestMethod] + public void Test_09_09() + { + } + + [TestMethod] + public void Test_09_10() + { + } + + [TestMethod] + public void Test_09_11() + { + } + + [TestMethod] + public void Test_09_12() + { + } + + [TestMethod] + public void Test_09_13() + { + } + + [TestMethod] + public void Test_09_14() + { + } + + [TestMethod] + public void Test_09_15() + { + } + + [TestMethod] + public void Test_09_16() + { + } + + [TestMethod] + public void Test_09_17() + { + } + + [TestMethod] + public void Test_09_18() + { + } + + [TestMethod] + public void Test_09_19() + { + } + + [TestMethod] + public void Test_09_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_10 + { + #region PassingTests + [TestMethod] + public void Test_10_01() + { + } + + [TestMethod] + public void Test_10_02() + { + } + + [TestMethod] + public void Test_10_03() + { + } + + [TestMethod] + public void Test_10_04() + { + } + + [TestMethod] + public void Test_10_05() + { + } + + [TestMethod] + public void Test_10_06() + { + } + + [TestMethod] + public void Test_10_07() + { + } + + [TestMethod] + public void Test_10_08() + { + } + + [TestMethod] + public void Test_10_09() + { + } + + [TestMethod] + public void Test_10_10() + { + } + + [TestMethod] + public void Test_10_11() + { + } + + [TestMethod] + public void Test_10_12() + { + } + + [TestMethod] + public void Test_10_13() + { + } + + [TestMethod] + public void Test_10_14() + { + } + + [TestMethod] + public void Test_10_15() + { + } + + [TestMethod] + public void Test_10_16() + { + } + + [TestMethod] + public void Test_10_17() + { + } + + [TestMethod] + public void Test_10_18() + { + } + + [TestMethod] + public void Test_10_19() + { + } + + [TestMethod] + public void Test_10_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_11 + { + #region PassingTests + [TestMethod] + public void Test_11_01() + { + } + + [TestMethod] + public void Test_11_02() + { + } + + [TestMethod] + public void Test_11_03() + { + } + + [TestMethod] + public void Test_11_04() + { + } + + [TestMethod] + public void Test_11_05() + { + } + + [TestMethod] + public void Test_11_06() + { + } + + [TestMethod] + public void Test_11_07() + { + } + + [TestMethod] + public void Test_11_08() + { + } + + [TestMethod] + public void Test_11_09() + { + } + + [TestMethod] + public void Test_11_10() + { + } + + [TestMethod] + public void Test_11_11() + { + } + + [TestMethod] + public void Test_11_12() + { + } + + [TestMethod] + public void Test_11_13() + { + } + + [TestMethod] + public void Test_11_14() + { + } + + [TestMethod] + public void Test_11_15() + { + } + + [TestMethod] + public void Test_11_16() + { + } + + [TestMethod] + public void Test_11_17() + { + } + + [TestMethod] + public void Test_11_18() + { + } + + [TestMethod] + public void Test_11_19() + { + } + + [TestMethod] + public void Test_11_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_12 + { + #region PassingTests + [TestMethod] + public void Test_12_01() + { + } + + [TestMethod] + public void Test_12_02() + { + } + + [TestMethod] + public void Test_12_03() + { + } + + [TestMethod] + public void Test_12_04() + { + } + + [TestMethod] + public void Test_12_05() + { + } + + [TestMethod] + public void Test_12_06() + { + } + + [TestMethod] + public void Test_12_07() + { + } + + [TestMethod] + public void Test_12_08() + { + } + + [TestMethod] + public void Test_12_09() + { + } + + [TestMethod] + public void Test_12_10() + { + } + + [TestMethod] + public void Test_12_11() + { + } + + [TestMethod] + public void Test_12_12() + { + } + + [TestMethod] + public void Test_12_13() + { + } + + [TestMethod] + public void Test_12_14() + { + } + + [TestMethod] + public void Test_12_15() + { + } + + [TestMethod] + public void Test_12_16() + { + } + + [TestMethod] + public void Test_12_17() + { + } + + [TestMethod] + public void Test_12_18() + { + } + + [TestMethod] + public void Test_12_19() + { + } + + [TestMethod] + public void Test_12_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_13 + { + #region PassingTests + [TestMethod] + public void Test_13_01() + { + } + + [TestMethod] + public void Test_13_02() + { + } + + [TestMethod] + public void Test_13_03() + { + } + + [TestMethod] + public void Test_13_04() + { + } + + [TestMethod] + public void Test_13_05() + { + } + + [TestMethod] + public void Test_13_06() + { + } + + [TestMethod] + public void Test_13_07() + { + } + + [TestMethod] + public void Test_13_08() + { + } + + [TestMethod] + public void Test_13_09() + { + } + + [TestMethod] + public void Test_13_10() + { + } + + [TestMethod] + public void Test_13_11() + { + } + + [TestMethod] + public void Test_13_12() + { + } + + [TestMethod] + public void Test_13_13() + { + } + + [TestMethod] + public void Test_13_14() + { + } + + [TestMethod] + public void Test_13_15() + { + } + + [TestMethod] + public void Test_13_16() + { + } + + [TestMethod] + public void Test_13_17() + { + } + + [TestMethod] + public void Test_13_18() + { + } + + [TestMethod] + public void Test_13_19() + { + } + + [TestMethod] + public void Test_13_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_14 + { + #region PassingTests + [TestMethod] + public void Test_14_01() + { + } + + [TestMethod] + public void Test_14_02() + { + } + + [TestMethod] + public void Test_14_03() + { + } + + [TestMethod] + public void Test_14_04() + { + } + + [TestMethod] + public void Test_14_05() + { + } + + [TestMethod] + public void Test_14_06() + { + } + + [TestMethod] + public void Test_14_07() + { + } + + [TestMethod] + public void Test_14_08() + { + } + + [TestMethod] + public void Test_14_09() + { + } + + [TestMethod] + public void Test_14_10() + { + } + + [TestMethod] + public void Test_14_11() + { + } + + [TestMethod] + public void Test_14_12() + { + } + + [TestMethod] + public void Test_14_13() + { + } + + [TestMethod] + public void Test_14_14() + { + } + + [TestMethod] + public void Test_14_15() + { + } + + [TestMethod] + public void Test_14_16() + { + } + + [TestMethod] + public void Test_14_17() + { + } + + [TestMethod] + public void Test_14_18() + { + } + + [TestMethod] + public void Test_14_19() + { + } + + [TestMethod] + public void Test_14_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_15 + { + #region PassingTests + [TestMethod] + public void Test_15_01() + { + } + + [TestMethod] + public void Test_15_02() + { + } + + [TestMethod] + public void Test_15_03() + { + } + + [TestMethod] + public void Test_15_04() + { + } + + [TestMethod] + public void Test_15_05() + { + } + + [TestMethod] + public void Test_15_06() + { + } + + [TestMethod] + public void Test_15_07() + { + } + + [TestMethod] + public void Test_15_08() + { + } + + [TestMethod] + public void Test_15_09() + { + } + + [TestMethod] + public void Test_15_10() + { + } + + [TestMethod] + public void Test_15_11() + { + } + + [TestMethod] + public void Test_15_12() + { + } + + [TestMethod] + public void Test_15_13() + { + } + + [TestMethod] + public void Test_15_14() + { + } + + [TestMethod] + public void Test_15_15() + { + } + + [TestMethod] + public void Test_15_16() + { + } + + [TestMethod] + public void Test_15_17() + { + } + + [TestMethod] + public void Test_15_18() + { + } + + [TestMethod] + public void Test_15_19() + { + } + + [TestMethod] + public void Test_15_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_16 + { + #region PassingTests + [TestMethod] + public void Test_16_01() + { + } + + [TestMethod] + public void Test_16_02() + { + } + + [TestMethod] + public void Test_16_03() + { + } + + [TestMethod] + public void Test_16_04() + { + } + + [TestMethod] + public void Test_16_05() + { + } + + [TestMethod] + public void Test_16_06() + { + } + + [TestMethod] + public void Test_16_07() + { + } + + [TestMethod] + public void Test_16_08() + { + } + + [TestMethod] + public void Test_16_09() + { + } + + [TestMethod] + public void Test_16_10() + { + } + + [TestMethod] + public void Test_16_11() + { + } + + [TestMethod] + public void Test_16_12() + { + } + + [TestMethod] + public void Test_16_13() + { + } + + [TestMethod] + public void Test_16_14() + { + } + + [TestMethod] + public void Test_16_15() + { + } + + [TestMethod] + public void Test_16_16() + { + } + + [TestMethod] + public void Test_16_17() + { + } + + [TestMethod] + public void Test_16_18() + { + } + + [TestMethod] + public void Test_16_19() + { + } + + [TestMethod] + public void Test_16_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_17 + { + #region PassingTests + [TestMethod] + public void Test_17_01() + { + } + + [TestMethod] + public void Test_17_02() + { + } + + [TestMethod] + public void Test_17_03() + { + } + + [TestMethod] + public void Test_17_04() + { + } + + [TestMethod] + public void Test_17_05() + { + } + + [TestMethod] + public void Test_17_06() + { + } + + [TestMethod] + public void Test_17_07() + { + } + + [TestMethod] + public void Test_17_08() + { + } + + [TestMethod] + public void Test_17_09() + { + } + + [TestMethod] + public void Test_17_10() + { + } + + [TestMethod] + public void Test_17_11() + { + } + + [TestMethod] + public void Test_17_12() + { + } + + [TestMethod] + public void Test_17_13() + { + } + + [TestMethod] + public void Test_17_14() + { + } + + [TestMethod] + public void Test_17_15() + { + } + + [TestMethod] + public void Test_17_16() + { + } + + [TestMethod] + public void Test_17_17() + { + } + + [TestMethod] + public void Test_17_18() + { + } + + [TestMethod] + public void Test_17_19() + { + } + + [TestMethod] + public void Test_17_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_18 + { + #region PassingTests + [TestMethod] + public void Test_18_01() + { + } + + [TestMethod] + public void Test_18_02() + { + } + + [TestMethod] + public void Test_18_03() + { + } + + [TestMethod] + public void Test_18_04() + { + } + + [TestMethod] + public void Test_18_05() + { + } + + [TestMethod] + public void Test_18_06() + { + } + + [TestMethod] + public void Test_18_07() + { + } + + [TestMethod] + public void Test_18_08() + { + } + + [TestMethod] + public void Test_18_09() + { + } + + [TestMethod] + public void Test_18_10() + { + } + + [TestMethod] + public void Test_18_11() + { + } + + [TestMethod] + public void Test_18_12() + { + } + + [TestMethod] + public void Test_18_13() + { + } + + [TestMethod] + public void Test_18_14() + { + } + + [TestMethod] + public void Test_18_15() + { + } + + [TestMethod] + public void Test_18_16() + { + } + + [TestMethod] + public void Test_18_17() + { + } + + [TestMethod] + public void Test_18_18() + { + } + + [TestMethod] + public void Test_18_19() + { + } + + [TestMethod] + public void Test_18_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_19 + { + #region PassingTests + [TestMethod] + public void Test_19_01() + { + } + + [TestMethod] + public void Test_19_02() + { + } + + [TestMethod] + public void Test_19_03() + { + } + + [TestMethod] + public void Test_19_04() + { + } + + [TestMethod] + public void Test_19_05() + { + } + + [TestMethod] + public void Test_19_06() + { + } + + [TestMethod] + public void Test_19_07() + { + } + + [TestMethod] + public void Test_19_08() + { + } + + [TestMethod] + public void Test_19_09() + { + } + + [TestMethod] + public void Test_19_10() + { + } + + [TestMethod] + public void Test_19_11() + { + } + + [TestMethod] + public void Test_19_12() + { + } + + [TestMethod] + public void Test_19_13() + { + } + + [TestMethod] + public void Test_19_14() + { + } + + [TestMethod] + public void Test_19_15() + { + } + + [TestMethod] + public void Test_19_16() + { + } + + [TestMethod] + public void Test_19_17() + { + } + + [TestMethod] + public void Test_19_18() + { + } + + [TestMethod] + public void Test_19_19() + { + } + + [TestMethod] + public void Test_19_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_20 + { + #region PassingTests + [TestMethod] + public void Test_20_01() + { + } + + [TestMethod] + public void Test_20_02() + { + } + + [TestMethod] + public void Test_20_03() + { + } + + [TestMethod] + public void Test_20_04() + { + } + + [TestMethod] + public void Test_20_05() + { + } + + [TestMethod] + public void Test_20_06() + { + } + + [TestMethod] + public void Test_20_07() + { + } + + [TestMethod] + public void Test_20_08() + { + } + + [TestMethod] + public void Test_20_09() + { + } + + [TestMethod] + public void Test_20_10() + { + } + + [TestMethod] + public void Test_20_11() + { + } + + [TestMethod] + public void Test_20_12() + { + } + + [TestMethod] + public void Test_20_13() + { + } + + [TestMethod] + public void Test_20_14() + { + } + + [TestMethod] + public void Test_20_15() + { + } + + [TestMethod] + public void Test_20_16() + { + } + + [TestMethod] + public void Test_20_17() + { + } + + [TestMethod] + public void Test_20_18() + { + } + + [TestMethod] + public void Test_20_19() + { + } + + [TestMethod] + public void Test_20_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_21 + { + #region PassingTests + [TestMethod] + public void Test_21_01() + { + } + + [TestMethod] + public void Test_21_02() + { + } + + [TestMethod] + public void Test_21_03() + { + } + + [TestMethod] + public void Test_21_04() + { + } + + [TestMethod] + public void Test_21_05() + { + } + + [TestMethod] + public void Test_21_06() + { + } + + [TestMethod] + public void Test_21_07() + { + } + + [TestMethod] + public void Test_21_08() + { + } + + [TestMethod] + public void Test_21_09() + { + } + + [TestMethod] + public void Test_21_10() + { + } + + [TestMethod] + public void Test_21_11() + { + } + + [TestMethod] + public void Test_21_12() + { + } + + [TestMethod] + public void Test_21_13() + { + } + + [TestMethod] + public void Test_21_14() + { + } + + [TestMethod] + public void Test_21_15() + { + } + + [TestMethod] + public void Test_21_16() + { + } + + [TestMethod] + public void Test_21_17() + { + } + + [TestMethod] + public void Test_21_18() + { + } + + [TestMethod] + public void Test_21_19() + { + } + + [TestMethod] + public void Test_21_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_22 + { + #region PassingTests + [TestMethod] + public void Test_22_01() + { + } + + [TestMethod] + public void Test_22_02() + { + } + + [TestMethod] + public void Test_22_03() + { + } + + [TestMethod] + public void Test_22_04() + { + } + + [TestMethod] + public void Test_22_05() + { + } + + [TestMethod] + public void Test_22_06() + { + } + + [TestMethod] + public void Test_22_07() + { + } + + [TestMethod] + public void Test_22_08() + { + } + + [TestMethod] + public void Test_22_09() + { + } + + [TestMethod] + public void Test_22_10() + { + } + + [TestMethod] + public void Test_22_11() + { + } + + [TestMethod] + public void Test_22_12() + { + } + + [TestMethod] + public void Test_22_13() + { + } + + [TestMethod] + public void Test_22_14() + { + } + + [TestMethod] + public void Test_22_15() + { + } + + [TestMethod] + public void Test_22_16() + { + } + + [TestMethod] + public void Test_22_17() + { + } + + [TestMethod] + public void Test_22_18() + { + } + + [TestMethod] + public void Test_22_19() + { + } + + [TestMethod] + public void Test_22_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_23 + { + #region PassingTests + [TestMethod] + public void Test_23_01() + { + } + + [TestMethod] + public void Test_23_02() + { + } + + [TestMethod] + public void Test_23_03() + { + } + + [TestMethod] + public void Test_23_04() + { + } + + [TestMethod] + public void Test_23_05() + { + } + + [TestMethod] + public void Test_23_06() + { + } + + [TestMethod] + public void Test_23_07() + { + } + + [TestMethod] + public void Test_23_08() + { + } + + [TestMethod] + public void Test_23_09() + { + } + + [TestMethod] + public void Test_23_10() + { + } + + [TestMethod] + public void Test_23_11() + { + } + + [TestMethod] + public void Test_23_12() + { + } + + [TestMethod] + public void Test_23_13() + { + } + + [TestMethod] + public void Test_23_14() + { + } + + [TestMethod] + public void Test_23_15() + { + } + + [TestMethod] + public void Test_23_16() + { + } + + [TestMethod] + public void Test_23_17() + { + } + + [TestMethod] + public void Test_23_18() + { + } + + [TestMethod] + public void Test_23_19() + { + } + + [TestMethod] + public void Test_23_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_24 + { + #region PassingTests + [TestMethod] + public void Test_24_01() + { + } + + [TestMethod] + public void Test_24_02() + { + } + + [TestMethod] + public void Test_24_03() + { + } + + [TestMethod] + public void Test_24_04() + { + } + + [TestMethod] + public void Test_24_05() + { + } + + [TestMethod] + public void Test_24_06() + { + } + + [TestMethod] + public void Test_24_07() + { + } + + [TestMethod] + public void Test_24_08() + { + } + + [TestMethod] + public void Test_24_09() + { + } + + [TestMethod] + public void Test_24_10() + { + } + + [TestMethod] + public void Test_24_11() + { + } + + [TestMethod] + public void Test_24_12() + { + } + + [TestMethod] + public void Test_24_13() + { + } + + [TestMethod] + public void Test_24_14() + { + } + + [TestMethod] + public void Test_24_15() + { + } + + [TestMethod] + public void Test_24_16() + { + } + + [TestMethod] + public void Test_24_17() + { + } + + [TestMethod] + public void Test_24_18() + { + } + + [TestMethod] + public void Test_24_19() + { + } + + [TestMethod] + public void Test_24_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_25 + { + #region PassingTests + [TestMethod] + public void Test_25_01() + { + } + + [TestMethod] + public void Test_25_02() + { + } + + [TestMethod] + public void Test_25_03() + { + } + + [TestMethod] + public void Test_25_04() + { + } + + [TestMethod] + public void Test_25_05() + { + } + + [TestMethod] + public void Test_25_06() + { + } + + [TestMethod] + public void Test_25_07() + { + } + + [TestMethod] + public void Test_25_08() + { + } + + [TestMethod] + public void Test_25_09() + { + } + + [TestMethod] + public void Test_25_10() + { + } + + [TestMethod] + public void Test_25_11() + { + } + + [TestMethod] + public void Test_25_12() + { + } + + [TestMethod] + public void Test_25_13() + { + } + + [TestMethod] + public void Test_25_14() + { + } + + [TestMethod] + public void Test_25_15() + { + } + + [TestMethod] + public void Test_25_16() + { + } + + [TestMethod] + public void Test_25_17() + { + } + + [TestMethod] + public void Test_25_18() + { + } + + [TestMethod] + public void Test_25_19() + { + } + + [TestMethod] + public void Test_25_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_26 + { + #region PassingTests + [TestMethod] + public void Test_26_01() + { + } + + [TestMethod] + public void Test_26_02() + { + } + + [TestMethod] + public void Test_26_03() + { + } + + [TestMethod] + public void Test_26_04() + { + } + + [TestMethod] + public void Test_26_05() + { + } + + [TestMethod] + public void Test_26_06() + { + } + + [TestMethod] + public void Test_26_07() + { + } + + [TestMethod] + public void Test_26_08() + { + } + + [TestMethod] + public void Test_26_09() + { + } + + [TestMethod] + public void Test_26_10() + { + } + + [TestMethod] + public void Test_26_11() + { + } + + [TestMethod] + public void Test_26_12() + { + } + + [TestMethod] + public void Test_26_13() + { + } + + [TestMethod] + public void Test_26_14() + { + } + + [TestMethod] + public void Test_26_15() + { + } + + [TestMethod] + public void Test_26_16() + { + } + + [TestMethod] + public void Test_26_17() + { + } + + [TestMethod] + public void Test_26_18() + { + } + + [TestMethod] + public void Test_26_19() + { + } + + [TestMethod] + public void Test_26_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_27 + { + #region PassingTests + [TestMethod] + public void Test_27_01() + { + } + + [TestMethod] + public void Test_27_02() + { + } + + [TestMethod] + public void Test_27_03() + { + } + + [TestMethod] + public void Test_27_04() + { + } + + [TestMethod] + public void Test_27_05() + { + } + + [TestMethod] + public void Test_27_06() + { + } + + [TestMethod] + public void Test_27_07() + { + } + + [TestMethod] + public void Test_27_08() + { + } + + [TestMethod] + public void Test_27_09() + { + } + + [TestMethod] + public void Test_27_10() + { + } + + [TestMethod] + public void Test_27_11() + { + } + + [TestMethod] + public void Test_27_12() + { + } + + [TestMethod] + public void Test_27_13() + { + } + + [TestMethod] + public void Test_27_14() + { + } + + [TestMethod] + public void Test_27_15() + { + } + + [TestMethod] + public void Test_27_16() + { + } + + [TestMethod] + public void Test_27_17() + { + } + + [TestMethod] + public void Test_27_18() + { + } + + [TestMethod] + public void Test_27_19() + { + } + + [TestMethod] + public void Test_27_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_28 + { + #region PassingTests + [TestMethod] + public void Test_28_01() + { + } + + [TestMethod] + public void Test_28_02() + { + } + + [TestMethod] + public void Test_28_03() + { + } + + [TestMethod] + public void Test_28_04() + { + } + + [TestMethod] + public void Test_28_05() + { + } + + [TestMethod] + public void Test_28_06() + { + } + + [TestMethod] + public void Test_28_07() + { + } + + [TestMethod] + public void Test_28_08() + { + } + + [TestMethod] + public void Test_28_09() + { + } + + [TestMethod] + public void Test_28_10() + { + } + + [TestMethod] + public void Test_28_11() + { + } + + [TestMethod] + public void Test_28_12() + { + } + + [TestMethod] + public void Test_28_13() + { + } + + [TestMethod] + public void Test_28_14() + { + } + + [TestMethod] + public void Test_28_15() + { + } + + [TestMethod] + public void Test_28_16() + { + } + + [TestMethod] + public void Test_28_17() + { + } + + [TestMethod] + public void Test_28_18() + { + } + + [TestMethod] + public void Test_28_19() + { + } + + [TestMethod] + public void Test_28_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_29 + { + #region PassingTests + [TestMethod] + public void Test_29_01() + { + } + + [TestMethod] + public void Test_29_02() + { + } + + [TestMethod] + public void Test_29_03() + { + } + + [TestMethod] + public void Test_29_04() + { + } + + [TestMethod] + public void Test_29_05() + { + } + + [TestMethod] + public void Test_29_06() + { + } + + [TestMethod] + public void Test_29_07() + { + } + + [TestMethod] + public void Test_29_08() + { + } + + [TestMethod] + public void Test_29_09() + { + } + + [TestMethod] + public void Test_29_10() + { + } + + [TestMethod] + public void Test_29_11() + { + } + + [TestMethod] + public void Test_29_12() + { + } + + [TestMethod] + public void Test_29_13() + { + } + + [TestMethod] + public void Test_29_14() + { + } + + [TestMethod] + public void Test_29_15() + { + } + + [TestMethod] + public void Test_29_16() + { + } + + [TestMethod] + public void Test_29_17() + { + } + + [TestMethod] + public void Test_29_18() + { + } + + [TestMethod] + public void Test_29_19() + { + } + + [TestMethod] + public void Test_29_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_30 + { + #region PassingTests + [TestMethod] + public void Test_30_01() + { + } + + [TestMethod] + public void Test_30_02() + { + } + + [TestMethod] + public void Test_30_03() + { + } + + [TestMethod] + public void Test_30_04() + { + } + + [TestMethod] + public void Test_30_05() + { + } + + [TestMethod] + public void Test_30_06() + { + } + + [TestMethod] + public void Test_30_07() + { + } + + [TestMethod] + public void Test_30_08() + { + } + + [TestMethod] + public void Test_30_09() + { + } + + [TestMethod] + public void Test_30_10() + { + } + + [TestMethod] + public void Test_30_11() + { + } + + [TestMethod] + public void Test_30_12() + { + } + + [TestMethod] + public void Test_30_13() + { + } + + [TestMethod] + public void Test_30_14() + { + } + + [TestMethod] + public void Test_30_15() + { + } + + [TestMethod] + public void Test_30_16() + { + } + + [TestMethod] + public void Test_30_17() + { + } + + [TestMethod] + public void Test_30_18() + { + } + + [TestMethod] + public void Test_30_19() + { + } + + [TestMethod] + public void Test_30_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_31 + { + #region PassingTests + [TestMethod] + public void Test_31_01() + { + } + + [TestMethod] + public void Test_31_02() + { + } + + [TestMethod] + public void Test_31_03() + { + } + + [TestMethod] + public void Test_31_04() + { + } + + [TestMethod] + public void Test_31_05() + { + } + + [TestMethod] + public void Test_31_06() + { + } + + [TestMethod] + public void Test_31_07() + { + } + + [TestMethod] + public void Test_31_08() + { + } + + [TestMethod] + public void Test_31_09() + { + } + + [TestMethod] + public void Test_31_10() + { + } + + [TestMethod] + public void Test_31_11() + { + } + + [TestMethod] + public void Test_31_12() + { + } + + [TestMethod] + public void Test_31_13() + { + } + + [TestMethod] + public void Test_31_14() + { + } + + [TestMethod] + public void Test_31_15() + { + } + + [TestMethod] + public void Test_31_16() + { + } + + [TestMethod] + public void Test_31_17() + { + } + + [TestMethod] + public void Test_31_18() + { + } + + [TestMethod] + public void Test_31_19() + { + } + + [TestMethod] + public void Test_31_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_32 + { + #region PassingTests + [TestMethod] + public void Test_32_01() + { + } + + [TestMethod] + public void Test_32_02() + { + } + + [TestMethod] + public void Test_32_03() + { + } + + [TestMethod] + public void Test_32_04() + { + } + + [TestMethod] + public void Test_32_05() + { + } + + [TestMethod] + public void Test_32_06() + { + } + + [TestMethod] + public void Test_32_07() + { + } + + [TestMethod] + public void Test_32_08() + { + } + + [TestMethod] + public void Test_32_09() + { + } + + [TestMethod] + public void Test_32_10() + { + } + + [TestMethod] + public void Test_32_11() + { + } + + [TestMethod] + public void Test_32_12() + { + } + + [TestMethod] + public void Test_32_13() + { + } + + [TestMethod] + public void Test_32_14() + { + } + + [TestMethod] + public void Test_32_15() + { + } + + [TestMethod] + public void Test_32_16() + { + } + + [TestMethod] + public void Test_32_17() + { + } + + [TestMethod] + public void Test_32_18() + { + } + + [TestMethod] + public void Test_32_19() + { + } + + [TestMethod] + public void Test_32_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_33 + { + #region PassingTests + [TestMethod] + public void Test_33_01() + { + } + + [TestMethod] + public void Test_33_02() + { + } + + [TestMethod] + public void Test_33_03() + { + } + + [TestMethod] + public void Test_33_04() + { + } + + [TestMethod] + public void Test_33_05() + { + } + + [TestMethod] + public void Test_33_06() + { + } + + [TestMethod] + public void Test_33_07() + { + } + + [TestMethod] + public void Test_33_08() + { + } + + [TestMethod] + public void Test_33_09() + { + } + + [TestMethod] + public void Test_33_10() + { + } + + [TestMethod] + public void Test_33_11() + { + } + + [TestMethod] + public void Test_33_12() + { + } + + [TestMethod] + public void Test_33_13() + { + } + + [TestMethod] + public void Test_33_14() + { + } + + [TestMethod] + public void Test_33_15() + { + } + + [TestMethod] + public void Test_33_16() + { + } + + [TestMethod] + public void Test_33_17() + { + } + + [TestMethod] + public void Test_33_18() + { + } + + [TestMethod] + public void Test_33_19() + { + } + + [TestMethod] + public void Test_33_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_34 + { + #region PassingTests + [TestMethod] + public void Test_34_01() + { + } + + [TestMethod] + public void Test_34_02() + { + } + + [TestMethod] + public void Test_34_03() + { + } + + [TestMethod] + public void Test_34_04() + { + } + + [TestMethod] + public void Test_34_05() + { + } + + [TestMethod] + public void Test_34_06() + { + } + + [TestMethod] + public void Test_34_07() + { + } + + [TestMethod] + public void Test_34_08() + { + } + + [TestMethod] + public void Test_34_09() + { + } + + [TestMethod] + public void Test_34_10() + { + } + + [TestMethod] + public void Test_34_11() + { + } + + [TestMethod] + public void Test_34_12() + { + } + + [TestMethod] + public void Test_34_13() + { + } + + [TestMethod] + public void Test_34_14() + { + } + + [TestMethod] + public void Test_34_15() + { + } + + [TestMethod] + public void Test_34_16() + { + } + + [TestMethod] + public void Test_34_17() + { + } + + [TestMethod] + public void Test_34_18() + { + } + + [TestMethod] + public void Test_34_19() + { + } + + [TestMethod] + public void Test_34_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_35 + { + #region PassingTests + [TestMethod] + public void Test_35_01() + { + } + + [TestMethod] + public void Test_35_02() + { + } + + [TestMethod] + public void Test_35_03() + { + } + + [TestMethod] + public void Test_35_04() + { + } + + [TestMethod] + public void Test_35_05() + { + } + + [TestMethod] + public void Test_35_06() + { + } + + [TestMethod] + public void Test_35_07() + { + } + + [TestMethod] + public void Test_35_08() + { + } + + [TestMethod] + public void Test_35_09() + { + } + + [TestMethod] + public void Test_35_10() + { + } + + [TestMethod] + public void Test_35_11() + { + } + + [TestMethod] + public void Test_35_12() + { + } + + [TestMethod] + public void Test_35_13() + { + } + + [TestMethod] + public void Test_35_14() + { + } + + [TestMethod] + public void Test_35_15() + { + } + + [TestMethod] + public void Test_35_16() + { + } + + [TestMethod] + public void Test_35_17() + { + } + + [TestMethod] + public void Test_35_18() + { + } + + [TestMethod] + public void Test_35_19() + { + } + + [TestMethod] + public void Test_35_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_36 + { + #region PassingTests + [TestMethod] + public void Test_36_01() + { + } + + [TestMethod] + public void Test_36_02() + { + } + + [TestMethod] + public void Test_36_03() + { + } + + [TestMethod] + public void Test_36_04() + { + } + + [TestMethod] + public void Test_36_05() + { + } + + [TestMethod] + public void Test_36_06() + { + } + + [TestMethod] + public void Test_36_07() + { + } + + [TestMethod] + public void Test_36_08() + { + } + + [TestMethod] + public void Test_36_09() + { + } + + [TestMethod] + public void Test_36_10() + { + } + + [TestMethod] + public void Test_36_11() + { + } + + [TestMethod] + public void Test_36_12() + { + } + + [TestMethod] + public void Test_36_13() + { + } + + [TestMethod] + public void Test_36_14() + { + } + + [TestMethod] + public void Test_36_15() + { + } + + [TestMethod] + public void Test_36_16() + { + } + + [TestMethod] + public void Test_36_17() + { + } + + [TestMethod] + public void Test_36_18() + { + } + + [TestMethod] + public void Test_36_19() + { + } + + [TestMethod] + public void Test_36_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_37 + { + #region PassingTests + [TestMethod] + public void Test_37_01() + { + } + + [TestMethod] + public void Test_37_02() + { + } + + [TestMethod] + public void Test_37_03() + { + } + + [TestMethod] + public void Test_37_04() + { + } + + [TestMethod] + public void Test_37_05() + { + } + + [TestMethod] + public void Test_37_06() + { + } + + [TestMethod] + public void Test_37_07() + { + } + + [TestMethod] + public void Test_37_08() + { + } + + [TestMethod] + public void Test_37_09() + { + } + + [TestMethod] + public void Test_37_10() + { + } + + [TestMethod] + public void Test_37_11() + { + } + + [TestMethod] + public void Test_37_12() + { + } + + [TestMethod] + public void Test_37_13() + { + } + + [TestMethod] + public void Test_37_14() + { + } + + [TestMethod] + public void Test_37_15() + { + } + + [TestMethod] + public void Test_37_16() + { + } + + [TestMethod] + public void Test_37_17() + { + } + + [TestMethod] + public void Test_37_18() + { + } + + [TestMethod] + public void Test_37_19() + { + } + + [TestMethod] + public void Test_37_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_38 + { + #region PassingTests + [TestMethod] + public void Test_38_01() + { + } + + [TestMethod] + public void Test_38_02() + { + } + + [TestMethod] + public void Test_38_03() + { + } + + [TestMethod] + public void Test_38_04() + { + } + + [TestMethod] + public void Test_38_05() + { + } + + [TestMethod] + public void Test_38_06() + { + } + + [TestMethod] + public void Test_38_07() + { + } + + [TestMethod] + public void Test_38_08() + { + } + + [TestMethod] + public void Test_38_09() + { + } + + [TestMethod] + public void Test_38_10() + { + } + + [TestMethod] + public void Test_38_11() + { + } + + [TestMethod] + public void Test_38_12() + { + } + + [TestMethod] + public void Test_38_13() + { + } + + [TestMethod] + public void Test_38_14() + { + } + + [TestMethod] + public void Test_38_15() + { + } + + [TestMethod] + public void Test_38_16() + { + } + + [TestMethod] + public void Test_38_17() + { + } + + [TestMethod] + public void Test_38_18() + { + } + + [TestMethod] + public void Test_38_19() + { + } + + [TestMethod] + public void Test_38_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_39 + { + #region PassingTests + [TestMethod] + public void Test_39_01() + { + } + + [TestMethod] + public void Test_39_02() + { + } + + [TestMethod] + public void Test_39_03() + { + } + + [TestMethod] + public void Test_39_04() + { + } + + [TestMethod] + public void Test_39_05() + { + } + + [TestMethod] + public void Test_39_06() + { + } + + [TestMethod] + public void Test_39_07() + { + } + + [TestMethod] + public void Test_39_08() + { + } + + [TestMethod] + public void Test_39_09() + { + } + + [TestMethod] + public void Test_39_10() + { + } + + [TestMethod] + public void Test_39_11() + { + } + + [TestMethod] + public void Test_39_12() + { + } + + [TestMethod] + public void Test_39_13() + { + } + + [TestMethod] + public void Test_39_14() + { + } + + [TestMethod] + public void Test_39_15() + { + } + + [TestMethod] + public void Test_39_16() + { + } + + [TestMethod] + public void Test_39_17() + { + } + + [TestMethod] + public void Test_39_18() + { + } + + [TestMethod] + public void Test_39_19() + { + } + + [TestMethod] + public void Test_39_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_40 + { + #region PassingTests + [TestMethod] + public void Test_40_01() + { + } + + [TestMethod] + public void Test_40_02() + { + } + + [TestMethod] + public void Test_40_03() + { + } + + [TestMethod] + public void Test_40_04() + { + } + + [TestMethod] + public void Test_40_05() + { + } + + [TestMethod] + public void Test_40_06() + { + } + + [TestMethod] + public void Test_40_07() + { + } + + [TestMethod] + public void Test_40_08() + { + } + + [TestMethod] + public void Test_40_09() + { + } + + [TestMethod] + public void Test_40_10() + { + } + + [TestMethod] + public void Test_40_11() + { + } + + [TestMethod] + public void Test_40_12() + { + } + + [TestMethod] + public void Test_40_13() + { + } + + [TestMethod] + public void Test_40_14() + { + } + + [TestMethod] + public void Test_40_15() + { + } + + [TestMethod] + public void Test_40_16() + { + } + + [TestMethod] + public void Test_40_17() + { + } + + [TestMethod] + public void Test_40_18() + { + } + + [TestMethod] + public void Test_40_19() + { + } + + [TestMethod] + public void Test_40_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_41 + { + #region PassingTests + [TestMethod] + public void Test_41_01() + { + } + + [TestMethod] + public void Test_41_02() + { + } + + [TestMethod] + public void Test_41_03() + { + } + + [TestMethod] + public void Test_41_04() + { + } + + [TestMethod] + public void Test_41_05() + { + } + + [TestMethod] + public void Test_41_06() + { + } + + [TestMethod] + public void Test_41_07() + { + } + + [TestMethod] + public void Test_41_08() + { + } + + [TestMethod] + public void Test_41_09() + { + } + + [TestMethod] + public void Test_41_10() + { + } + + [TestMethod] + public void Test_41_11() + { + } + + [TestMethod] + public void Test_41_12() + { + } + + [TestMethod] + public void Test_41_13() + { + } + + [TestMethod] + public void Test_41_14() + { + } + + [TestMethod] + public void Test_41_15() + { + } + + [TestMethod] + public void Test_41_16() + { + } + + [TestMethod] + public void Test_41_17() + { + } + + [TestMethod] + public void Test_41_18() + { + } + + [TestMethod] + public void Test_41_19() + { + } + + [TestMethod] + public void Test_41_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_42 + { + #region PassingTests + [TestMethod] + public void Test_42_01() + { + } + + [TestMethod] + public void Test_42_02() + { + } + + [TestMethod] + public void Test_42_03() + { + } + + [TestMethod] + public void Test_42_04() + { + } + + [TestMethod] + public void Test_42_05() + { + } + + [TestMethod] + public void Test_42_06() + { + } + + [TestMethod] + public void Test_42_07() + { + } + + [TestMethod] + public void Test_42_08() + { + } + + [TestMethod] + public void Test_42_09() + { + } + + [TestMethod] + public void Test_42_10() + { + } + + [TestMethod] + public void Test_42_11() + { + } + + [TestMethod] + public void Test_42_12() + { + } + + [TestMethod] + public void Test_42_13() + { + } + + [TestMethod] + public void Test_42_14() + { + } + + [TestMethod] + public void Test_42_15() + { + } + + [TestMethod] + public void Test_42_16() + { + } + + [TestMethod] + public void Test_42_17() + { + } + + [TestMethod] + public void Test_42_18() + { + } + + [TestMethod] + public void Test_42_19() + { + } + + [TestMethod] + public void Test_42_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_43 + { + #region PassingTests + [TestMethod] + public void Test_43_01() + { + } + + [TestMethod] + public void Test_43_02() + { + } + + [TestMethod] + public void Test_43_03() + { + } + + [TestMethod] + public void Test_43_04() + { + } + + [TestMethod] + public void Test_43_05() + { + } + + [TestMethod] + public void Test_43_06() + { + } + + [TestMethod] + public void Test_43_07() + { + } + + [TestMethod] + public void Test_43_08() + { + } + + [TestMethod] + public void Test_43_09() + { + } + + [TestMethod] + public void Test_43_10() + { + } + + [TestMethod] + public void Test_43_11() + { + } + + [TestMethod] + public void Test_43_12() + { + } + + [TestMethod] + public void Test_43_13() + { + } + + [TestMethod] + public void Test_43_14() + { + } + + [TestMethod] + public void Test_43_15() + { + } + + [TestMethod] + public void Test_43_16() + { + } + + [TestMethod] + public void Test_43_17() + { + } + + [TestMethod] + public void Test_43_18() + { + } + + [TestMethod] + public void Test_43_19() + { + } + + [TestMethod] + public void Test_43_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_44 + { + #region PassingTests + [TestMethod] + public void Test_44_01() + { + } + + [TestMethod] + public void Test_44_02() + { + } + + [TestMethod] + public void Test_44_03() + { + } + + [TestMethod] + public void Test_44_04() + { + } + + [TestMethod] + public void Test_44_05() + { + } + + [TestMethod] + public void Test_44_06() + { + } + + [TestMethod] + public void Test_44_07() + { + } + + [TestMethod] + public void Test_44_08() + { + } + + [TestMethod] + public void Test_44_09() + { + } + + [TestMethod] + public void Test_44_10() + { + } + + [TestMethod] + public void Test_44_11() + { + } + + [TestMethod] + public void Test_44_12() + { + } + + [TestMethod] + public void Test_44_13() + { + } + + [TestMethod] + public void Test_44_14() + { + } + + [TestMethod] + public void Test_44_15() + { + } + + [TestMethod] + public void Test_44_16() + { + } + + [TestMethod] + public void Test_44_17() + { + } + + [TestMethod] + public void Test_44_18() + { + } + + [TestMethod] + public void Test_44_19() + { + } + + [TestMethod] + public void Test_44_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_45 + { + #region PassingTests + [TestMethod] + public void Test_45_01() + { + } + + [TestMethod] + public void Test_45_02() + { + } + + [TestMethod] + public void Test_45_03() + { + } + + [TestMethod] + public void Test_45_04() + { + } + + [TestMethod] + public void Test_45_05() + { + } + + [TestMethod] + public void Test_45_06() + { + } + + [TestMethod] + public void Test_45_07() + { + } + + [TestMethod] + public void Test_45_08() + { + } + + [TestMethod] + public void Test_45_09() + { + } + + [TestMethod] + public void Test_45_10() + { + } + + [TestMethod] + public void Test_45_11() + { + } + + [TestMethod] + public void Test_45_12() + { + } + + [TestMethod] + public void Test_45_13() + { + } + + [TestMethod] + public void Test_45_14() + { + } + + [TestMethod] + public void Test_45_15() + { + } + + [TestMethod] + public void Test_45_16() + { + } + + [TestMethod] + public void Test_45_17() + { + } + + [TestMethod] + public void Test_45_18() + { + } + + [TestMethod] + public void Test_45_19() + { + } + + [TestMethod] + public void Test_45_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_46 + { + #region PassingTests + [TestMethod] + public void Test_46_01() + { + } + + [TestMethod] + public void Test_46_02() + { + } + + [TestMethod] + public void Test_46_03() + { + } + + [TestMethod] + public void Test_46_04() + { + } + + [TestMethod] + public void Test_46_05() + { + } + + [TestMethod] + public void Test_46_06() + { + } + + [TestMethod] + public void Test_46_07() + { + } + + [TestMethod] + public void Test_46_08() + { + } + + [TestMethod] + public void Test_46_09() + { + } + + [TestMethod] + public void Test_46_10() + { + } + + [TestMethod] + public void Test_46_11() + { + } + + [TestMethod] + public void Test_46_12() + { + } + + [TestMethod] + public void Test_46_13() + { + } + + [TestMethod] + public void Test_46_14() + { + } + + [TestMethod] + public void Test_46_15() + { + } + + [TestMethod] + public void Test_46_16() + { + } + + [TestMethod] + public void Test_46_17() + { + } + + [TestMethod] + public void Test_46_18() + { + } + + [TestMethod] + public void Test_46_19() + { + } + + [TestMethod] + public void Test_46_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_47 + { + #region PassingTests + [TestMethod] + public void Test_47_01() + { + } + + [TestMethod] + public void Test_47_02() + { + } + + [TestMethod] + public void Test_47_03() + { + } + + [TestMethod] + public void Test_47_04() + { + } + + [TestMethod] + public void Test_47_05() + { + } + + [TestMethod] + public void Test_47_06() + { + } + + [TestMethod] + public void Test_47_07() + { + } + + [TestMethod] + public void Test_47_08() + { + } + + [TestMethod] + public void Test_47_09() + { + } + + [TestMethod] + public void Test_47_10() + { + } + + [TestMethod] + public void Test_47_11() + { + } + + [TestMethod] + public void Test_47_12() + { + } + + [TestMethod] + public void Test_47_13() + { + } + + [TestMethod] + public void Test_47_14() + { + } + + [TestMethod] + public void Test_47_15() + { + } + + [TestMethod] + public void Test_47_16() + { + } + + [TestMethod] + public void Test_47_17() + { + } + + [TestMethod] + public void Test_47_18() + { + } + + [TestMethod] + public void Test_47_19() + { + } + + [TestMethod] + public void Test_47_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_48 + { + #region PassingTests + [TestMethod] + public void Test_48_01() + { + } + + [TestMethod] + public void Test_48_02() + { + } + + [TestMethod] + public void Test_48_03() + { + } + + [TestMethod] + public void Test_48_04() + { + } + + [TestMethod] + public void Test_48_05() + { + } + + [TestMethod] + public void Test_48_06() + { + } + + [TestMethod] + public void Test_48_07() + { + } + + [TestMethod] + public void Test_48_08() + { + } + + [TestMethod] + public void Test_48_09() + { + } + + [TestMethod] + public void Test_48_10() + { + } + + [TestMethod] + public void Test_48_11() + { + } + + [TestMethod] + public void Test_48_12() + { + } + + [TestMethod] + public void Test_48_13() + { + } + + [TestMethod] + public void Test_48_14() + { + } + + [TestMethod] + public void Test_48_15() + { + } + + [TestMethod] + public void Test_48_16() + { + } + + [TestMethod] + public void Test_48_17() + { + } + + [TestMethod] + public void Test_48_18() + { + } + + [TestMethod] + public void Test_48_19() + { + } + + [TestMethod] + public void Test_48_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_49 + { + #region PassingTests + [TestMethod] + public void Test_49_01() + { + } + + [TestMethod] + public void Test_49_02() + { + } + + [TestMethod] + public void Test_49_03() + { + } + + [TestMethod] + public void Test_49_04() + { + } + + [TestMethod] + public void Test_49_05() + { + } + + [TestMethod] + public void Test_49_06() + { + } + + [TestMethod] + public void Test_49_07() + { + } + + [TestMethod] + public void Test_49_08() + { + } + + [TestMethod] + public void Test_49_09() + { + } + + [TestMethod] + public void Test_49_10() + { + } + + [TestMethod] + public void Test_49_11() + { + } + + [TestMethod] + public void Test_49_12() + { + } + + [TestMethod] + public void Test_49_13() + { + } + + [TestMethod] + public void Test_49_14() + { + } + + [TestMethod] + public void Test_49_15() + { + } + + [TestMethod] + public void Test_49_16() + { + } + + [TestMethod] + public void Test_49_17() + { + } + + [TestMethod] + public void Test_49_18() + { + } + + [TestMethod] + public void Test_49_19() + { + } + + [TestMethod] + public void Test_49_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_50 + { + #region PassingTests + [TestMethod] + public void Test_50_01() + { + } + + [TestMethod] + public void Test_50_02() + { + } + + [TestMethod] + public void Test_50_03() + { + } + + [TestMethod] + public void Test_50_04() + { + } + + [TestMethod] + public void Test_50_05() + { + } + + [TestMethod] + public void Test_50_06() + { + } + + [TestMethod] + public void Test_50_07() + { + } + + [TestMethod] + public void Test_50_08() + { + } + + [TestMethod] + public void Test_50_09() + { + } + + [TestMethod] + public void Test_50_10() + { + } + + [TestMethod] + public void Test_50_11() + { + } + + [TestMethod] + public void Test_50_12() + { + } + + [TestMethod] + public void Test_50_13() + { + } + + [TestMethod] + public void Test_50_14() + { + } + + [TestMethod] + public void Test_50_15() + { + } + + [TestMethod] + public void Test_50_16() + { + } + + [TestMethod] + public void Test_50_17() + { + } + + [TestMethod] + public void Test_50_18() + { + } + + [TestMethod] + public void Test_50_19() + { + } + + [TestMethod] + public void Test_50_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/MSTest1000Passing/MSTests.tt b/test/TestAssets/performance/MSTest1000Passing/MSTests.tt new file mode 100644 index 0000000000..dfbb3afc54 --- /dev/null +++ b/test/TestAssets/performance/MSTest1000Passing/MSTests.tt @@ -0,0 +1,56 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ +<# + int classes = 50; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestClass] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/MSTest100Passing/MSTest100Passing.csproj b/test/TestAssets/performance/MSTest100Passing/MSTest100Passing.csproj new file mode 100644 index 0000000000..003be862b0 --- /dev/null +++ b/test/TestAssets/performance/MSTest100Passing/MSTest100Passing.csproj @@ -0,0 +1,33 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + MSTests.cs + + + + + + + + + + True + True + MSTests.tt + + + + diff --git a/test/TestAssets/performance/MSTest100Passing/MSTests.cs b/test/TestAssets/performance/MSTest100Passing/MSTests.cs new file mode 100644 index 0000000000..0820bf071a --- /dev/null +++ b/test/TestAssets/performance/MSTest100Passing/MSTests.cs @@ -0,0 +1,550 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ + [TestClass] + public class TestClass_01 + { + #region PassingTests + [TestMethod] + public void Test_01_01() + { + } + + [TestMethod] + public void Test_01_02() + { + } + + [TestMethod] + public void Test_01_03() + { + } + + [TestMethod] + public void Test_01_04() + { + } + + [TestMethod] + public void Test_01_05() + { + } + + [TestMethod] + public void Test_01_06() + { + } + + [TestMethod] + public void Test_01_07() + { + } + + [TestMethod] + public void Test_01_08() + { + } + + [TestMethod] + public void Test_01_09() + { + } + + [TestMethod] + public void Test_01_10() + { + } + + [TestMethod] + public void Test_01_11() + { + } + + [TestMethod] + public void Test_01_12() + { + } + + [TestMethod] + public void Test_01_13() + { + } + + [TestMethod] + public void Test_01_14() + { + } + + [TestMethod] + public void Test_01_15() + { + } + + [TestMethod] + public void Test_01_16() + { + } + + [TestMethod] + public void Test_01_17() + { + } + + [TestMethod] + public void Test_01_18() + { + } + + [TestMethod] + public void Test_01_19() + { + } + + [TestMethod] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_02 + { + #region PassingTests + [TestMethod] + public void Test_02_01() + { + } + + [TestMethod] + public void Test_02_02() + { + } + + [TestMethod] + public void Test_02_03() + { + } + + [TestMethod] + public void Test_02_04() + { + } + + [TestMethod] + public void Test_02_05() + { + } + + [TestMethod] + public void Test_02_06() + { + } + + [TestMethod] + public void Test_02_07() + { + } + + [TestMethod] + public void Test_02_08() + { + } + + [TestMethod] + public void Test_02_09() + { + } + + [TestMethod] + public void Test_02_10() + { + } + + [TestMethod] + public void Test_02_11() + { + } + + [TestMethod] + public void Test_02_12() + { + } + + [TestMethod] + public void Test_02_13() + { + } + + [TestMethod] + public void Test_02_14() + { + } + + [TestMethod] + public void Test_02_15() + { + } + + [TestMethod] + public void Test_02_16() + { + } + + [TestMethod] + public void Test_02_17() + { + } + + [TestMethod] + public void Test_02_18() + { + } + + [TestMethod] + public void Test_02_19() + { + } + + [TestMethod] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_03 + { + #region PassingTests + [TestMethod] + public void Test_03_01() + { + } + + [TestMethod] + public void Test_03_02() + { + } + + [TestMethod] + public void Test_03_03() + { + } + + [TestMethod] + public void Test_03_04() + { + } + + [TestMethod] + public void Test_03_05() + { + } + + [TestMethod] + public void Test_03_06() + { + } + + [TestMethod] + public void Test_03_07() + { + } + + [TestMethod] + public void Test_03_08() + { + } + + [TestMethod] + public void Test_03_09() + { + } + + [TestMethod] + public void Test_03_10() + { + } + + [TestMethod] + public void Test_03_11() + { + } + + [TestMethod] + public void Test_03_12() + { + } + + [TestMethod] + public void Test_03_13() + { + } + + [TestMethod] + public void Test_03_14() + { + } + + [TestMethod] + public void Test_03_15() + { + } + + [TestMethod] + public void Test_03_16() + { + } + + [TestMethod] + public void Test_03_17() + { + } + + [TestMethod] + public void Test_03_18() + { + } + + [TestMethod] + public void Test_03_19() + { + } + + [TestMethod] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_04 + { + #region PassingTests + [TestMethod] + public void Test_04_01() + { + } + + [TestMethod] + public void Test_04_02() + { + } + + [TestMethod] + public void Test_04_03() + { + } + + [TestMethod] + public void Test_04_04() + { + } + + [TestMethod] + public void Test_04_05() + { + } + + [TestMethod] + public void Test_04_06() + { + } + + [TestMethod] + public void Test_04_07() + { + } + + [TestMethod] + public void Test_04_08() + { + } + + [TestMethod] + public void Test_04_09() + { + } + + [TestMethod] + public void Test_04_10() + { + } + + [TestMethod] + public void Test_04_11() + { + } + + [TestMethod] + public void Test_04_12() + { + } + + [TestMethod] + public void Test_04_13() + { + } + + [TestMethod] + public void Test_04_14() + { + } + + [TestMethod] + public void Test_04_15() + { + } + + [TestMethod] + public void Test_04_16() + { + } + + [TestMethod] + public void Test_04_17() + { + } + + [TestMethod] + public void Test_04_18() + { + } + + [TestMethod] + public void Test_04_19() + { + } + + [TestMethod] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_05 + { + #region PassingTests + [TestMethod] + public void Test_05_01() + { + } + + [TestMethod] + public void Test_05_02() + { + } + + [TestMethod] + public void Test_05_03() + { + } + + [TestMethod] + public void Test_05_04() + { + } + + [TestMethod] + public void Test_05_05() + { + } + + [TestMethod] + public void Test_05_06() + { + } + + [TestMethod] + public void Test_05_07() + { + } + + [TestMethod] + public void Test_05_08() + { + } + + [TestMethod] + public void Test_05_09() + { + } + + [TestMethod] + public void Test_05_10() + { + } + + [TestMethod] + public void Test_05_11() + { + } + + [TestMethod] + public void Test_05_12() + { + } + + [TestMethod] + public void Test_05_13() + { + } + + [TestMethod] + public void Test_05_14() + { + } + + [TestMethod] + public void Test_05_15() + { + } + + [TestMethod] + public void Test_05_16() + { + } + + [TestMethod] + public void Test_05_17() + { + } + + [TestMethod] + public void Test_05_18() + { + } + + [TestMethod] + public void Test_05_19() + { + } + + [TestMethod] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/MSTest100Passing/MSTests.tt b/test/TestAssets/performance/MSTest100Passing/MSTests.tt new file mode 100644 index 0000000000..bf88b84c78 --- /dev/null +++ b/test/TestAssets/performance/MSTest100Passing/MSTests.tt @@ -0,0 +1,56 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ +<# + int classes = 5; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestClass] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/MSTest10kPassing/MSTest10kPassing.csproj b/test/TestAssets/performance/MSTest10kPassing/MSTest10kPassing.csproj new file mode 100644 index 0000000000..38220eb26e --- /dev/null +++ b/test/TestAssets/performance/MSTest10kPassing/MSTest10kPassing.csproj @@ -0,0 +1,33 @@ + + + + net8.0;net48;net472 + false + + + + + + + + + + + TextTemplatingFileGenerator + MSTests.cs + + + + + + + + + + True + True + MSTests.tt + + + + diff --git a/test/TestAssets/performance/MSTest10kPassing/MSTests.cs b/test/TestAssets/performance/MSTest10kPassing/MSTests.cs new file mode 100644 index 0000000000..20e9319c11 --- /dev/null +++ b/test/TestAssets/performance/MSTest10kPassing/MSTests.cs @@ -0,0 +1,54505 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ + [TestClass] + public class TestClass_01 + { + #region PassingTests + [TestMethod] + public void Test_01_01() + { + } + + [TestMethod] + public void Test_01_02() + { + } + + [TestMethod] + public void Test_01_03() + { + } + + [TestMethod] + public void Test_01_04() + { + } + + [TestMethod] + public void Test_01_05() + { + } + + [TestMethod] + public void Test_01_06() + { + } + + [TestMethod] + public void Test_01_07() + { + } + + [TestMethod] + public void Test_01_08() + { + } + + [TestMethod] + public void Test_01_09() + { + } + + [TestMethod] + public void Test_01_10() + { + } + + [TestMethod] + public void Test_01_11() + { + } + + [TestMethod] + public void Test_01_12() + { + } + + [TestMethod] + public void Test_01_13() + { + } + + [TestMethod] + public void Test_01_14() + { + } + + [TestMethod] + public void Test_01_15() + { + } + + [TestMethod] + public void Test_01_16() + { + } + + [TestMethod] + public void Test_01_17() + { + } + + [TestMethod] + public void Test_01_18() + { + } + + [TestMethod] + public void Test_01_19() + { + } + + [TestMethod] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_02 + { + #region PassingTests + [TestMethod] + public void Test_02_01() + { + } + + [TestMethod] + public void Test_02_02() + { + } + + [TestMethod] + public void Test_02_03() + { + } + + [TestMethod] + public void Test_02_04() + { + } + + [TestMethod] + public void Test_02_05() + { + } + + [TestMethod] + public void Test_02_06() + { + } + + [TestMethod] + public void Test_02_07() + { + } + + [TestMethod] + public void Test_02_08() + { + } + + [TestMethod] + public void Test_02_09() + { + } + + [TestMethod] + public void Test_02_10() + { + } + + [TestMethod] + public void Test_02_11() + { + } + + [TestMethod] + public void Test_02_12() + { + } + + [TestMethod] + public void Test_02_13() + { + } + + [TestMethod] + public void Test_02_14() + { + } + + [TestMethod] + public void Test_02_15() + { + } + + [TestMethod] + public void Test_02_16() + { + } + + [TestMethod] + public void Test_02_17() + { + } + + [TestMethod] + public void Test_02_18() + { + } + + [TestMethod] + public void Test_02_19() + { + } + + [TestMethod] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_03 + { + #region PassingTests + [TestMethod] + public void Test_03_01() + { + } + + [TestMethod] + public void Test_03_02() + { + } + + [TestMethod] + public void Test_03_03() + { + } + + [TestMethod] + public void Test_03_04() + { + } + + [TestMethod] + public void Test_03_05() + { + } + + [TestMethod] + public void Test_03_06() + { + } + + [TestMethod] + public void Test_03_07() + { + } + + [TestMethod] + public void Test_03_08() + { + } + + [TestMethod] + public void Test_03_09() + { + } + + [TestMethod] + public void Test_03_10() + { + } + + [TestMethod] + public void Test_03_11() + { + } + + [TestMethod] + public void Test_03_12() + { + } + + [TestMethod] + public void Test_03_13() + { + } + + [TestMethod] + public void Test_03_14() + { + } + + [TestMethod] + public void Test_03_15() + { + } + + [TestMethod] + public void Test_03_16() + { + } + + [TestMethod] + public void Test_03_17() + { + } + + [TestMethod] + public void Test_03_18() + { + } + + [TestMethod] + public void Test_03_19() + { + } + + [TestMethod] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_04 + { + #region PassingTests + [TestMethod] + public void Test_04_01() + { + } + + [TestMethod] + public void Test_04_02() + { + } + + [TestMethod] + public void Test_04_03() + { + } + + [TestMethod] + public void Test_04_04() + { + } + + [TestMethod] + public void Test_04_05() + { + } + + [TestMethod] + public void Test_04_06() + { + } + + [TestMethod] + public void Test_04_07() + { + } + + [TestMethod] + public void Test_04_08() + { + } + + [TestMethod] + public void Test_04_09() + { + } + + [TestMethod] + public void Test_04_10() + { + } + + [TestMethod] + public void Test_04_11() + { + } + + [TestMethod] + public void Test_04_12() + { + } + + [TestMethod] + public void Test_04_13() + { + } + + [TestMethod] + public void Test_04_14() + { + } + + [TestMethod] + public void Test_04_15() + { + } + + [TestMethod] + public void Test_04_16() + { + } + + [TestMethod] + public void Test_04_17() + { + } + + [TestMethod] + public void Test_04_18() + { + } + + [TestMethod] + public void Test_04_19() + { + } + + [TestMethod] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_05 + { + #region PassingTests + [TestMethod] + public void Test_05_01() + { + } + + [TestMethod] + public void Test_05_02() + { + } + + [TestMethod] + public void Test_05_03() + { + } + + [TestMethod] + public void Test_05_04() + { + } + + [TestMethod] + public void Test_05_05() + { + } + + [TestMethod] + public void Test_05_06() + { + } + + [TestMethod] + public void Test_05_07() + { + } + + [TestMethod] + public void Test_05_08() + { + } + + [TestMethod] + public void Test_05_09() + { + } + + [TestMethod] + public void Test_05_10() + { + } + + [TestMethod] + public void Test_05_11() + { + } + + [TestMethod] + public void Test_05_12() + { + } + + [TestMethod] + public void Test_05_13() + { + } + + [TestMethod] + public void Test_05_14() + { + } + + [TestMethod] + public void Test_05_15() + { + } + + [TestMethod] + public void Test_05_16() + { + } + + [TestMethod] + public void Test_05_17() + { + } + + [TestMethod] + public void Test_05_18() + { + } + + [TestMethod] + public void Test_05_19() + { + } + + [TestMethod] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_06 + { + #region PassingTests + [TestMethod] + public void Test_06_01() + { + } + + [TestMethod] + public void Test_06_02() + { + } + + [TestMethod] + public void Test_06_03() + { + } + + [TestMethod] + public void Test_06_04() + { + } + + [TestMethod] + public void Test_06_05() + { + } + + [TestMethod] + public void Test_06_06() + { + } + + [TestMethod] + public void Test_06_07() + { + } + + [TestMethod] + public void Test_06_08() + { + } + + [TestMethod] + public void Test_06_09() + { + } + + [TestMethod] + public void Test_06_10() + { + } + + [TestMethod] + public void Test_06_11() + { + } + + [TestMethod] + public void Test_06_12() + { + } + + [TestMethod] + public void Test_06_13() + { + } + + [TestMethod] + public void Test_06_14() + { + } + + [TestMethod] + public void Test_06_15() + { + } + + [TestMethod] + public void Test_06_16() + { + } + + [TestMethod] + public void Test_06_17() + { + } + + [TestMethod] + public void Test_06_18() + { + } + + [TestMethod] + public void Test_06_19() + { + } + + [TestMethod] + public void Test_06_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_07 + { + #region PassingTests + [TestMethod] + public void Test_07_01() + { + } + + [TestMethod] + public void Test_07_02() + { + } + + [TestMethod] + public void Test_07_03() + { + } + + [TestMethod] + public void Test_07_04() + { + } + + [TestMethod] + public void Test_07_05() + { + } + + [TestMethod] + public void Test_07_06() + { + } + + [TestMethod] + public void Test_07_07() + { + } + + [TestMethod] + public void Test_07_08() + { + } + + [TestMethod] + public void Test_07_09() + { + } + + [TestMethod] + public void Test_07_10() + { + } + + [TestMethod] + public void Test_07_11() + { + } + + [TestMethod] + public void Test_07_12() + { + } + + [TestMethod] + public void Test_07_13() + { + } + + [TestMethod] + public void Test_07_14() + { + } + + [TestMethod] + public void Test_07_15() + { + } + + [TestMethod] + public void Test_07_16() + { + } + + [TestMethod] + public void Test_07_17() + { + } + + [TestMethod] + public void Test_07_18() + { + } + + [TestMethod] + public void Test_07_19() + { + } + + [TestMethod] + public void Test_07_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_08 + { + #region PassingTests + [TestMethod] + public void Test_08_01() + { + } + + [TestMethod] + public void Test_08_02() + { + } + + [TestMethod] + public void Test_08_03() + { + } + + [TestMethod] + public void Test_08_04() + { + } + + [TestMethod] + public void Test_08_05() + { + } + + [TestMethod] + public void Test_08_06() + { + } + + [TestMethod] + public void Test_08_07() + { + } + + [TestMethod] + public void Test_08_08() + { + } + + [TestMethod] + public void Test_08_09() + { + } + + [TestMethod] + public void Test_08_10() + { + } + + [TestMethod] + public void Test_08_11() + { + } + + [TestMethod] + public void Test_08_12() + { + } + + [TestMethod] + public void Test_08_13() + { + } + + [TestMethod] + public void Test_08_14() + { + } + + [TestMethod] + public void Test_08_15() + { + } + + [TestMethod] + public void Test_08_16() + { + } + + [TestMethod] + public void Test_08_17() + { + } + + [TestMethod] + public void Test_08_18() + { + } + + [TestMethod] + public void Test_08_19() + { + } + + [TestMethod] + public void Test_08_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_09 + { + #region PassingTests + [TestMethod] + public void Test_09_01() + { + } + + [TestMethod] + public void Test_09_02() + { + } + + [TestMethod] + public void Test_09_03() + { + } + + [TestMethod] + public void Test_09_04() + { + } + + [TestMethod] + public void Test_09_05() + { + } + + [TestMethod] + public void Test_09_06() + { + } + + [TestMethod] + public void Test_09_07() + { + } + + [TestMethod] + public void Test_09_08() + { + } + + [TestMethod] + public void Test_09_09() + { + } + + [TestMethod] + public void Test_09_10() + { + } + + [TestMethod] + public void Test_09_11() + { + } + + [TestMethod] + public void Test_09_12() + { + } + + [TestMethod] + public void Test_09_13() + { + } + + [TestMethod] + public void Test_09_14() + { + } + + [TestMethod] + public void Test_09_15() + { + } + + [TestMethod] + public void Test_09_16() + { + } + + [TestMethod] + public void Test_09_17() + { + } + + [TestMethod] + public void Test_09_18() + { + } + + [TestMethod] + public void Test_09_19() + { + } + + [TestMethod] + public void Test_09_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_10 + { + #region PassingTests + [TestMethod] + public void Test_10_01() + { + } + + [TestMethod] + public void Test_10_02() + { + } + + [TestMethod] + public void Test_10_03() + { + } + + [TestMethod] + public void Test_10_04() + { + } + + [TestMethod] + public void Test_10_05() + { + } + + [TestMethod] + public void Test_10_06() + { + } + + [TestMethod] + public void Test_10_07() + { + } + + [TestMethod] + public void Test_10_08() + { + } + + [TestMethod] + public void Test_10_09() + { + } + + [TestMethod] + public void Test_10_10() + { + } + + [TestMethod] + public void Test_10_11() + { + } + + [TestMethod] + public void Test_10_12() + { + } + + [TestMethod] + public void Test_10_13() + { + } + + [TestMethod] + public void Test_10_14() + { + } + + [TestMethod] + public void Test_10_15() + { + } + + [TestMethod] + public void Test_10_16() + { + } + + [TestMethod] + public void Test_10_17() + { + } + + [TestMethod] + public void Test_10_18() + { + } + + [TestMethod] + public void Test_10_19() + { + } + + [TestMethod] + public void Test_10_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_11 + { + #region PassingTests + [TestMethod] + public void Test_11_01() + { + } + + [TestMethod] + public void Test_11_02() + { + } + + [TestMethod] + public void Test_11_03() + { + } + + [TestMethod] + public void Test_11_04() + { + } + + [TestMethod] + public void Test_11_05() + { + } + + [TestMethod] + public void Test_11_06() + { + } + + [TestMethod] + public void Test_11_07() + { + } + + [TestMethod] + public void Test_11_08() + { + } + + [TestMethod] + public void Test_11_09() + { + } + + [TestMethod] + public void Test_11_10() + { + } + + [TestMethod] + public void Test_11_11() + { + } + + [TestMethod] + public void Test_11_12() + { + } + + [TestMethod] + public void Test_11_13() + { + } + + [TestMethod] + public void Test_11_14() + { + } + + [TestMethod] + public void Test_11_15() + { + } + + [TestMethod] + public void Test_11_16() + { + } + + [TestMethod] + public void Test_11_17() + { + } + + [TestMethod] + public void Test_11_18() + { + } + + [TestMethod] + public void Test_11_19() + { + } + + [TestMethod] + public void Test_11_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_12 + { + #region PassingTests + [TestMethod] + public void Test_12_01() + { + } + + [TestMethod] + public void Test_12_02() + { + } + + [TestMethod] + public void Test_12_03() + { + } + + [TestMethod] + public void Test_12_04() + { + } + + [TestMethod] + public void Test_12_05() + { + } + + [TestMethod] + public void Test_12_06() + { + } + + [TestMethod] + public void Test_12_07() + { + } + + [TestMethod] + public void Test_12_08() + { + } + + [TestMethod] + public void Test_12_09() + { + } + + [TestMethod] + public void Test_12_10() + { + } + + [TestMethod] + public void Test_12_11() + { + } + + [TestMethod] + public void Test_12_12() + { + } + + [TestMethod] + public void Test_12_13() + { + } + + [TestMethod] + public void Test_12_14() + { + } + + [TestMethod] + public void Test_12_15() + { + } + + [TestMethod] + public void Test_12_16() + { + } + + [TestMethod] + public void Test_12_17() + { + } + + [TestMethod] + public void Test_12_18() + { + } + + [TestMethod] + public void Test_12_19() + { + } + + [TestMethod] + public void Test_12_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_13 + { + #region PassingTests + [TestMethod] + public void Test_13_01() + { + } + + [TestMethod] + public void Test_13_02() + { + } + + [TestMethod] + public void Test_13_03() + { + } + + [TestMethod] + public void Test_13_04() + { + } + + [TestMethod] + public void Test_13_05() + { + } + + [TestMethod] + public void Test_13_06() + { + } + + [TestMethod] + public void Test_13_07() + { + } + + [TestMethod] + public void Test_13_08() + { + } + + [TestMethod] + public void Test_13_09() + { + } + + [TestMethod] + public void Test_13_10() + { + } + + [TestMethod] + public void Test_13_11() + { + } + + [TestMethod] + public void Test_13_12() + { + } + + [TestMethod] + public void Test_13_13() + { + } + + [TestMethod] + public void Test_13_14() + { + } + + [TestMethod] + public void Test_13_15() + { + } + + [TestMethod] + public void Test_13_16() + { + } + + [TestMethod] + public void Test_13_17() + { + } + + [TestMethod] + public void Test_13_18() + { + } + + [TestMethod] + public void Test_13_19() + { + } + + [TestMethod] + public void Test_13_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_14 + { + #region PassingTests + [TestMethod] + public void Test_14_01() + { + } + + [TestMethod] + public void Test_14_02() + { + } + + [TestMethod] + public void Test_14_03() + { + } + + [TestMethod] + public void Test_14_04() + { + } + + [TestMethod] + public void Test_14_05() + { + } + + [TestMethod] + public void Test_14_06() + { + } + + [TestMethod] + public void Test_14_07() + { + } + + [TestMethod] + public void Test_14_08() + { + } + + [TestMethod] + public void Test_14_09() + { + } + + [TestMethod] + public void Test_14_10() + { + } + + [TestMethod] + public void Test_14_11() + { + } + + [TestMethod] + public void Test_14_12() + { + } + + [TestMethod] + public void Test_14_13() + { + } + + [TestMethod] + public void Test_14_14() + { + } + + [TestMethod] + public void Test_14_15() + { + } + + [TestMethod] + public void Test_14_16() + { + } + + [TestMethod] + public void Test_14_17() + { + } + + [TestMethod] + public void Test_14_18() + { + } + + [TestMethod] + public void Test_14_19() + { + } + + [TestMethod] + public void Test_14_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_15 + { + #region PassingTests + [TestMethod] + public void Test_15_01() + { + } + + [TestMethod] + public void Test_15_02() + { + } + + [TestMethod] + public void Test_15_03() + { + } + + [TestMethod] + public void Test_15_04() + { + } + + [TestMethod] + public void Test_15_05() + { + } + + [TestMethod] + public void Test_15_06() + { + } + + [TestMethod] + public void Test_15_07() + { + } + + [TestMethod] + public void Test_15_08() + { + } + + [TestMethod] + public void Test_15_09() + { + } + + [TestMethod] + public void Test_15_10() + { + } + + [TestMethod] + public void Test_15_11() + { + } + + [TestMethod] + public void Test_15_12() + { + } + + [TestMethod] + public void Test_15_13() + { + } + + [TestMethod] + public void Test_15_14() + { + } + + [TestMethod] + public void Test_15_15() + { + } + + [TestMethod] + public void Test_15_16() + { + } + + [TestMethod] + public void Test_15_17() + { + } + + [TestMethod] + public void Test_15_18() + { + } + + [TestMethod] + public void Test_15_19() + { + } + + [TestMethod] + public void Test_15_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_16 + { + #region PassingTests + [TestMethod] + public void Test_16_01() + { + } + + [TestMethod] + public void Test_16_02() + { + } + + [TestMethod] + public void Test_16_03() + { + } + + [TestMethod] + public void Test_16_04() + { + } + + [TestMethod] + public void Test_16_05() + { + } + + [TestMethod] + public void Test_16_06() + { + } + + [TestMethod] + public void Test_16_07() + { + } + + [TestMethod] + public void Test_16_08() + { + } + + [TestMethod] + public void Test_16_09() + { + } + + [TestMethod] + public void Test_16_10() + { + } + + [TestMethod] + public void Test_16_11() + { + } + + [TestMethod] + public void Test_16_12() + { + } + + [TestMethod] + public void Test_16_13() + { + } + + [TestMethod] + public void Test_16_14() + { + } + + [TestMethod] + public void Test_16_15() + { + } + + [TestMethod] + public void Test_16_16() + { + } + + [TestMethod] + public void Test_16_17() + { + } + + [TestMethod] + public void Test_16_18() + { + } + + [TestMethod] + public void Test_16_19() + { + } + + [TestMethod] + public void Test_16_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_17 + { + #region PassingTests + [TestMethod] + public void Test_17_01() + { + } + + [TestMethod] + public void Test_17_02() + { + } + + [TestMethod] + public void Test_17_03() + { + } + + [TestMethod] + public void Test_17_04() + { + } + + [TestMethod] + public void Test_17_05() + { + } + + [TestMethod] + public void Test_17_06() + { + } + + [TestMethod] + public void Test_17_07() + { + } + + [TestMethod] + public void Test_17_08() + { + } + + [TestMethod] + public void Test_17_09() + { + } + + [TestMethod] + public void Test_17_10() + { + } + + [TestMethod] + public void Test_17_11() + { + } + + [TestMethod] + public void Test_17_12() + { + } + + [TestMethod] + public void Test_17_13() + { + } + + [TestMethod] + public void Test_17_14() + { + } + + [TestMethod] + public void Test_17_15() + { + } + + [TestMethod] + public void Test_17_16() + { + } + + [TestMethod] + public void Test_17_17() + { + } + + [TestMethod] + public void Test_17_18() + { + } + + [TestMethod] + public void Test_17_19() + { + } + + [TestMethod] + public void Test_17_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_18 + { + #region PassingTests + [TestMethod] + public void Test_18_01() + { + } + + [TestMethod] + public void Test_18_02() + { + } + + [TestMethod] + public void Test_18_03() + { + } + + [TestMethod] + public void Test_18_04() + { + } + + [TestMethod] + public void Test_18_05() + { + } + + [TestMethod] + public void Test_18_06() + { + } + + [TestMethod] + public void Test_18_07() + { + } + + [TestMethod] + public void Test_18_08() + { + } + + [TestMethod] + public void Test_18_09() + { + } + + [TestMethod] + public void Test_18_10() + { + } + + [TestMethod] + public void Test_18_11() + { + } + + [TestMethod] + public void Test_18_12() + { + } + + [TestMethod] + public void Test_18_13() + { + } + + [TestMethod] + public void Test_18_14() + { + } + + [TestMethod] + public void Test_18_15() + { + } + + [TestMethod] + public void Test_18_16() + { + } + + [TestMethod] + public void Test_18_17() + { + } + + [TestMethod] + public void Test_18_18() + { + } + + [TestMethod] + public void Test_18_19() + { + } + + [TestMethod] + public void Test_18_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_19 + { + #region PassingTests + [TestMethod] + public void Test_19_01() + { + } + + [TestMethod] + public void Test_19_02() + { + } + + [TestMethod] + public void Test_19_03() + { + } + + [TestMethod] + public void Test_19_04() + { + } + + [TestMethod] + public void Test_19_05() + { + } + + [TestMethod] + public void Test_19_06() + { + } + + [TestMethod] + public void Test_19_07() + { + } + + [TestMethod] + public void Test_19_08() + { + } + + [TestMethod] + public void Test_19_09() + { + } + + [TestMethod] + public void Test_19_10() + { + } + + [TestMethod] + public void Test_19_11() + { + } + + [TestMethod] + public void Test_19_12() + { + } + + [TestMethod] + public void Test_19_13() + { + } + + [TestMethod] + public void Test_19_14() + { + } + + [TestMethod] + public void Test_19_15() + { + } + + [TestMethod] + public void Test_19_16() + { + } + + [TestMethod] + public void Test_19_17() + { + } + + [TestMethod] + public void Test_19_18() + { + } + + [TestMethod] + public void Test_19_19() + { + } + + [TestMethod] + public void Test_19_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_20 + { + #region PassingTests + [TestMethod] + public void Test_20_01() + { + } + + [TestMethod] + public void Test_20_02() + { + } + + [TestMethod] + public void Test_20_03() + { + } + + [TestMethod] + public void Test_20_04() + { + } + + [TestMethod] + public void Test_20_05() + { + } + + [TestMethod] + public void Test_20_06() + { + } + + [TestMethod] + public void Test_20_07() + { + } + + [TestMethod] + public void Test_20_08() + { + } + + [TestMethod] + public void Test_20_09() + { + } + + [TestMethod] + public void Test_20_10() + { + } + + [TestMethod] + public void Test_20_11() + { + } + + [TestMethod] + public void Test_20_12() + { + } + + [TestMethod] + public void Test_20_13() + { + } + + [TestMethod] + public void Test_20_14() + { + } + + [TestMethod] + public void Test_20_15() + { + } + + [TestMethod] + public void Test_20_16() + { + } + + [TestMethod] + public void Test_20_17() + { + } + + [TestMethod] + public void Test_20_18() + { + } + + [TestMethod] + public void Test_20_19() + { + } + + [TestMethod] + public void Test_20_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_21 + { + #region PassingTests + [TestMethod] + public void Test_21_01() + { + } + + [TestMethod] + public void Test_21_02() + { + } + + [TestMethod] + public void Test_21_03() + { + } + + [TestMethod] + public void Test_21_04() + { + } + + [TestMethod] + public void Test_21_05() + { + } + + [TestMethod] + public void Test_21_06() + { + } + + [TestMethod] + public void Test_21_07() + { + } + + [TestMethod] + public void Test_21_08() + { + } + + [TestMethod] + public void Test_21_09() + { + } + + [TestMethod] + public void Test_21_10() + { + } + + [TestMethod] + public void Test_21_11() + { + } + + [TestMethod] + public void Test_21_12() + { + } + + [TestMethod] + public void Test_21_13() + { + } + + [TestMethod] + public void Test_21_14() + { + } + + [TestMethod] + public void Test_21_15() + { + } + + [TestMethod] + public void Test_21_16() + { + } + + [TestMethod] + public void Test_21_17() + { + } + + [TestMethod] + public void Test_21_18() + { + } + + [TestMethod] + public void Test_21_19() + { + } + + [TestMethod] + public void Test_21_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_22 + { + #region PassingTests + [TestMethod] + public void Test_22_01() + { + } + + [TestMethod] + public void Test_22_02() + { + } + + [TestMethod] + public void Test_22_03() + { + } + + [TestMethod] + public void Test_22_04() + { + } + + [TestMethod] + public void Test_22_05() + { + } + + [TestMethod] + public void Test_22_06() + { + } + + [TestMethod] + public void Test_22_07() + { + } + + [TestMethod] + public void Test_22_08() + { + } + + [TestMethod] + public void Test_22_09() + { + } + + [TestMethod] + public void Test_22_10() + { + } + + [TestMethod] + public void Test_22_11() + { + } + + [TestMethod] + public void Test_22_12() + { + } + + [TestMethod] + public void Test_22_13() + { + } + + [TestMethod] + public void Test_22_14() + { + } + + [TestMethod] + public void Test_22_15() + { + } + + [TestMethod] + public void Test_22_16() + { + } + + [TestMethod] + public void Test_22_17() + { + } + + [TestMethod] + public void Test_22_18() + { + } + + [TestMethod] + public void Test_22_19() + { + } + + [TestMethod] + public void Test_22_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_23 + { + #region PassingTests + [TestMethod] + public void Test_23_01() + { + } + + [TestMethod] + public void Test_23_02() + { + } + + [TestMethod] + public void Test_23_03() + { + } + + [TestMethod] + public void Test_23_04() + { + } + + [TestMethod] + public void Test_23_05() + { + } + + [TestMethod] + public void Test_23_06() + { + } + + [TestMethod] + public void Test_23_07() + { + } + + [TestMethod] + public void Test_23_08() + { + } + + [TestMethod] + public void Test_23_09() + { + } + + [TestMethod] + public void Test_23_10() + { + } + + [TestMethod] + public void Test_23_11() + { + } + + [TestMethod] + public void Test_23_12() + { + } + + [TestMethod] + public void Test_23_13() + { + } + + [TestMethod] + public void Test_23_14() + { + } + + [TestMethod] + public void Test_23_15() + { + } + + [TestMethod] + public void Test_23_16() + { + } + + [TestMethod] + public void Test_23_17() + { + } + + [TestMethod] + public void Test_23_18() + { + } + + [TestMethod] + public void Test_23_19() + { + } + + [TestMethod] + public void Test_23_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_24 + { + #region PassingTests + [TestMethod] + public void Test_24_01() + { + } + + [TestMethod] + public void Test_24_02() + { + } + + [TestMethod] + public void Test_24_03() + { + } + + [TestMethod] + public void Test_24_04() + { + } + + [TestMethod] + public void Test_24_05() + { + } + + [TestMethod] + public void Test_24_06() + { + } + + [TestMethod] + public void Test_24_07() + { + } + + [TestMethod] + public void Test_24_08() + { + } + + [TestMethod] + public void Test_24_09() + { + } + + [TestMethod] + public void Test_24_10() + { + } + + [TestMethod] + public void Test_24_11() + { + } + + [TestMethod] + public void Test_24_12() + { + } + + [TestMethod] + public void Test_24_13() + { + } + + [TestMethod] + public void Test_24_14() + { + } + + [TestMethod] + public void Test_24_15() + { + } + + [TestMethod] + public void Test_24_16() + { + } + + [TestMethod] + public void Test_24_17() + { + } + + [TestMethod] + public void Test_24_18() + { + } + + [TestMethod] + public void Test_24_19() + { + } + + [TestMethod] + public void Test_24_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_25 + { + #region PassingTests + [TestMethod] + public void Test_25_01() + { + } + + [TestMethod] + public void Test_25_02() + { + } + + [TestMethod] + public void Test_25_03() + { + } + + [TestMethod] + public void Test_25_04() + { + } + + [TestMethod] + public void Test_25_05() + { + } + + [TestMethod] + public void Test_25_06() + { + } + + [TestMethod] + public void Test_25_07() + { + } + + [TestMethod] + public void Test_25_08() + { + } + + [TestMethod] + public void Test_25_09() + { + } + + [TestMethod] + public void Test_25_10() + { + } + + [TestMethod] + public void Test_25_11() + { + } + + [TestMethod] + public void Test_25_12() + { + } + + [TestMethod] + public void Test_25_13() + { + } + + [TestMethod] + public void Test_25_14() + { + } + + [TestMethod] + public void Test_25_15() + { + } + + [TestMethod] + public void Test_25_16() + { + } + + [TestMethod] + public void Test_25_17() + { + } + + [TestMethod] + public void Test_25_18() + { + } + + [TestMethod] + public void Test_25_19() + { + } + + [TestMethod] + public void Test_25_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_26 + { + #region PassingTests + [TestMethod] + public void Test_26_01() + { + } + + [TestMethod] + public void Test_26_02() + { + } + + [TestMethod] + public void Test_26_03() + { + } + + [TestMethod] + public void Test_26_04() + { + } + + [TestMethod] + public void Test_26_05() + { + } + + [TestMethod] + public void Test_26_06() + { + } + + [TestMethod] + public void Test_26_07() + { + } + + [TestMethod] + public void Test_26_08() + { + } + + [TestMethod] + public void Test_26_09() + { + } + + [TestMethod] + public void Test_26_10() + { + } + + [TestMethod] + public void Test_26_11() + { + } + + [TestMethod] + public void Test_26_12() + { + } + + [TestMethod] + public void Test_26_13() + { + } + + [TestMethod] + public void Test_26_14() + { + } + + [TestMethod] + public void Test_26_15() + { + } + + [TestMethod] + public void Test_26_16() + { + } + + [TestMethod] + public void Test_26_17() + { + } + + [TestMethod] + public void Test_26_18() + { + } + + [TestMethod] + public void Test_26_19() + { + } + + [TestMethod] + public void Test_26_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_27 + { + #region PassingTests + [TestMethod] + public void Test_27_01() + { + } + + [TestMethod] + public void Test_27_02() + { + } + + [TestMethod] + public void Test_27_03() + { + } + + [TestMethod] + public void Test_27_04() + { + } + + [TestMethod] + public void Test_27_05() + { + } + + [TestMethod] + public void Test_27_06() + { + } + + [TestMethod] + public void Test_27_07() + { + } + + [TestMethod] + public void Test_27_08() + { + } + + [TestMethod] + public void Test_27_09() + { + } + + [TestMethod] + public void Test_27_10() + { + } + + [TestMethod] + public void Test_27_11() + { + } + + [TestMethod] + public void Test_27_12() + { + } + + [TestMethod] + public void Test_27_13() + { + } + + [TestMethod] + public void Test_27_14() + { + } + + [TestMethod] + public void Test_27_15() + { + } + + [TestMethod] + public void Test_27_16() + { + } + + [TestMethod] + public void Test_27_17() + { + } + + [TestMethod] + public void Test_27_18() + { + } + + [TestMethod] + public void Test_27_19() + { + } + + [TestMethod] + public void Test_27_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_28 + { + #region PassingTests + [TestMethod] + public void Test_28_01() + { + } + + [TestMethod] + public void Test_28_02() + { + } + + [TestMethod] + public void Test_28_03() + { + } + + [TestMethod] + public void Test_28_04() + { + } + + [TestMethod] + public void Test_28_05() + { + } + + [TestMethod] + public void Test_28_06() + { + } + + [TestMethod] + public void Test_28_07() + { + } + + [TestMethod] + public void Test_28_08() + { + } + + [TestMethod] + public void Test_28_09() + { + } + + [TestMethod] + public void Test_28_10() + { + } + + [TestMethod] + public void Test_28_11() + { + } + + [TestMethod] + public void Test_28_12() + { + } + + [TestMethod] + public void Test_28_13() + { + } + + [TestMethod] + public void Test_28_14() + { + } + + [TestMethod] + public void Test_28_15() + { + } + + [TestMethod] + public void Test_28_16() + { + } + + [TestMethod] + public void Test_28_17() + { + } + + [TestMethod] + public void Test_28_18() + { + } + + [TestMethod] + public void Test_28_19() + { + } + + [TestMethod] + public void Test_28_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_29 + { + #region PassingTests + [TestMethod] + public void Test_29_01() + { + } + + [TestMethod] + public void Test_29_02() + { + } + + [TestMethod] + public void Test_29_03() + { + } + + [TestMethod] + public void Test_29_04() + { + } + + [TestMethod] + public void Test_29_05() + { + } + + [TestMethod] + public void Test_29_06() + { + } + + [TestMethod] + public void Test_29_07() + { + } + + [TestMethod] + public void Test_29_08() + { + } + + [TestMethod] + public void Test_29_09() + { + } + + [TestMethod] + public void Test_29_10() + { + } + + [TestMethod] + public void Test_29_11() + { + } + + [TestMethod] + public void Test_29_12() + { + } + + [TestMethod] + public void Test_29_13() + { + } + + [TestMethod] + public void Test_29_14() + { + } + + [TestMethod] + public void Test_29_15() + { + } + + [TestMethod] + public void Test_29_16() + { + } + + [TestMethod] + public void Test_29_17() + { + } + + [TestMethod] + public void Test_29_18() + { + } + + [TestMethod] + public void Test_29_19() + { + } + + [TestMethod] + public void Test_29_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_30 + { + #region PassingTests + [TestMethod] + public void Test_30_01() + { + } + + [TestMethod] + public void Test_30_02() + { + } + + [TestMethod] + public void Test_30_03() + { + } + + [TestMethod] + public void Test_30_04() + { + } + + [TestMethod] + public void Test_30_05() + { + } + + [TestMethod] + public void Test_30_06() + { + } + + [TestMethod] + public void Test_30_07() + { + } + + [TestMethod] + public void Test_30_08() + { + } + + [TestMethod] + public void Test_30_09() + { + } + + [TestMethod] + public void Test_30_10() + { + } + + [TestMethod] + public void Test_30_11() + { + } + + [TestMethod] + public void Test_30_12() + { + } + + [TestMethod] + public void Test_30_13() + { + } + + [TestMethod] + public void Test_30_14() + { + } + + [TestMethod] + public void Test_30_15() + { + } + + [TestMethod] + public void Test_30_16() + { + } + + [TestMethod] + public void Test_30_17() + { + } + + [TestMethod] + public void Test_30_18() + { + } + + [TestMethod] + public void Test_30_19() + { + } + + [TestMethod] + public void Test_30_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_31 + { + #region PassingTests + [TestMethod] + public void Test_31_01() + { + } + + [TestMethod] + public void Test_31_02() + { + } + + [TestMethod] + public void Test_31_03() + { + } + + [TestMethod] + public void Test_31_04() + { + } + + [TestMethod] + public void Test_31_05() + { + } + + [TestMethod] + public void Test_31_06() + { + } + + [TestMethod] + public void Test_31_07() + { + } + + [TestMethod] + public void Test_31_08() + { + } + + [TestMethod] + public void Test_31_09() + { + } + + [TestMethod] + public void Test_31_10() + { + } + + [TestMethod] + public void Test_31_11() + { + } + + [TestMethod] + public void Test_31_12() + { + } + + [TestMethod] + public void Test_31_13() + { + } + + [TestMethod] + public void Test_31_14() + { + } + + [TestMethod] + public void Test_31_15() + { + } + + [TestMethod] + public void Test_31_16() + { + } + + [TestMethod] + public void Test_31_17() + { + } + + [TestMethod] + public void Test_31_18() + { + } + + [TestMethod] + public void Test_31_19() + { + } + + [TestMethod] + public void Test_31_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_32 + { + #region PassingTests + [TestMethod] + public void Test_32_01() + { + } + + [TestMethod] + public void Test_32_02() + { + } + + [TestMethod] + public void Test_32_03() + { + } + + [TestMethod] + public void Test_32_04() + { + } + + [TestMethod] + public void Test_32_05() + { + } + + [TestMethod] + public void Test_32_06() + { + } + + [TestMethod] + public void Test_32_07() + { + } + + [TestMethod] + public void Test_32_08() + { + } + + [TestMethod] + public void Test_32_09() + { + } + + [TestMethod] + public void Test_32_10() + { + } + + [TestMethod] + public void Test_32_11() + { + } + + [TestMethod] + public void Test_32_12() + { + } + + [TestMethod] + public void Test_32_13() + { + } + + [TestMethod] + public void Test_32_14() + { + } + + [TestMethod] + public void Test_32_15() + { + } + + [TestMethod] + public void Test_32_16() + { + } + + [TestMethod] + public void Test_32_17() + { + } + + [TestMethod] + public void Test_32_18() + { + } + + [TestMethod] + public void Test_32_19() + { + } + + [TestMethod] + public void Test_32_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_33 + { + #region PassingTests + [TestMethod] + public void Test_33_01() + { + } + + [TestMethod] + public void Test_33_02() + { + } + + [TestMethod] + public void Test_33_03() + { + } + + [TestMethod] + public void Test_33_04() + { + } + + [TestMethod] + public void Test_33_05() + { + } + + [TestMethod] + public void Test_33_06() + { + } + + [TestMethod] + public void Test_33_07() + { + } + + [TestMethod] + public void Test_33_08() + { + } + + [TestMethod] + public void Test_33_09() + { + } + + [TestMethod] + public void Test_33_10() + { + } + + [TestMethod] + public void Test_33_11() + { + } + + [TestMethod] + public void Test_33_12() + { + } + + [TestMethod] + public void Test_33_13() + { + } + + [TestMethod] + public void Test_33_14() + { + } + + [TestMethod] + public void Test_33_15() + { + } + + [TestMethod] + public void Test_33_16() + { + } + + [TestMethod] + public void Test_33_17() + { + } + + [TestMethod] + public void Test_33_18() + { + } + + [TestMethod] + public void Test_33_19() + { + } + + [TestMethod] + public void Test_33_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_34 + { + #region PassingTests + [TestMethod] + public void Test_34_01() + { + } + + [TestMethod] + public void Test_34_02() + { + } + + [TestMethod] + public void Test_34_03() + { + } + + [TestMethod] + public void Test_34_04() + { + } + + [TestMethod] + public void Test_34_05() + { + } + + [TestMethod] + public void Test_34_06() + { + } + + [TestMethod] + public void Test_34_07() + { + } + + [TestMethod] + public void Test_34_08() + { + } + + [TestMethod] + public void Test_34_09() + { + } + + [TestMethod] + public void Test_34_10() + { + } + + [TestMethod] + public void Test_34_11() + { + } + + [TestMethod] + public void Test_34_12() + { + } + + [TestMethod] + public void Test_34_13() + { + } + + [TestMethod] + public void Test_34_14() + { + } + + [TestMethod] + public void Test_34_15() + { + } + + [TestMethod] + public void Test_34_16() + { + } + + [TestMethod] + public void Test_34_17() + { + } + + [TestMethod] + public void Test_34_18() + { + } + + [TestMethod] + public void Test_34_19() + { + } + + [TestMethod] + public void Test_34_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_35 + { + #region PassingTests + [TestMethod] + public void Test_35_01() + { + } + + [TestMethod] + public void Test_35_02() + { + } + + [TestMethod] + public void Test_35_03() + { + } + + [TestMethod] + public void Test_35_04() + { + } + + [TestMethod] + public void Test_35_05() + { + } + + [TestMethod] + public void Test_35_06() + { + } + + [TestMethod] + public void Test_35_07() + { + } + + [TestMethod] + public void Test_35_08() + { + } + + [TestMethod] + public void Test_35_09() + { + } + + [TestMethod] + public void Test_35_10() + { + } + + [TestMethod] + public void Test_35_11() + { + } + + [TestMethod] + public void Test_35_12() + { + } + + [TestMethod] + public void Test_35_13() + { + } + + [TestMethod] + public void Test_35_14() + { + } + + [TestMethod] + public void Test_35_15() + { + } + + [TestMethod] + public void Test_35_16() + { + } + + [TestMethod] + public void Test_35_17() + { + } + + [TestMethod] + public void Test_35_18() + { + } + + [TestMethod] + public void Test_35_19() + { + } + + [TestMethod] + public void Test_35_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_36 + { + #region PassingTests + [TestMethod] + public void Test_36_01() + { + } + + [TestMethod] + public void Test_36_02() + { + } + + [TestMethod] + public void Test_36_03() + { + } + + [TestMethod] + public void Test_36_04() + { + } + + [TestMethod] + public void Test_36_05() + { + } + + [TestMethod] + public void Test_36_06() + { + } + + [TestMethod] + public void Test_36_07() + { + } + + [TestMethod] + public void Test_36_08() + { + } + + [TestMethod] + public void Test_36_09() + { + } + + [TestMethod] + public void Test_36_10() + { + } + + [TestMethod] + public void Test_36_11() + { + } + + [TestMethod] + public void Test_36_12() + { + } + + [TestMethod] + public void Test_36_13() + { + } + + [TestMethod] + public void Test_36_14() + { + } + + [TestMethod] + public void Test_36_15() + { + } + + [TestMethod] + public void Test_36_16() + { + } + + [TestMethod] + public void Test_36_17() + { + } + + [TestMethod] + public void Test_36_18() + { + } + + [TestMethod] + public void Test_36_19() + { + } + + [TestMethod] + public void Test_36_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_37 + { + #region PassingTests + [TestMethod] + public void Test_37_01() + { + } + + [TestMethod] + public void Test_37_02() + { + } + + [TestMethod] + public void Test_37_03() + { + } + + [TestMethod] + public void Test_37_04() + { + } + + [TestMethod] + public void Test_37_05() + { + } + + [TestMethod] + public void Test_37_06() + { + } + + [TestMethod] + public void Test_37_07() + { + } + + [TestMethod] + public void Test_37_08() + { + } + + [TestMethod] + public void Test_37_09() + { + } + + [TestMethod] + public void Test_37_10() + { + } + + [TestMethod] + public void Test_37_11() + { + } + + [TestMethod] + public void Test_37_12() + { + } + + [TestMethod] + public void Test_37_13() + { + } + + [TestMethod] + public void Test_37_14() + { + } + + [TestMethod] + public void Test_37_15() + { + } + + [TestMethod] + public void Test_37_16() + { + } + + [TestMethod] + public void Test_37_17() + { + } + + [TestMethod] + public void Test_37_18() + { + } + + [TestMethod] + public void Test_37_19() + { + } + + [TestMethod] + public void Test_37_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_38 + { + #region PassingTests + [TestMethod] + public void Test_38_01() + { + } + + [TestMethod] + public void Test_38_02() + { + } + + [TestMethod] + public void Test_38_03() + { + } + + [TestMethod] + public void Test_38_04() + { + } + + [TestMethod] + public void Test_38_05() + { + } + + [TestMethod] + public void Test_38_06() + { + } + + [TestMethod] + public void Test_38_07() + { + } + + [TestMethod] + public void Test_38_08() + { + } + + [TestMethod] + public void Test_38_09() + { + } + + [TestMethod] + public void Test_38_10() + { + } + + [TestMethod] + public void Test_38_11() + { + } + + [TestMethod] + public void Test_38_12() + { + } + + [TestMethod] + public void Test_38_13() + { + } + + [TestMethod] + public void Test_38_14() + { + } + + [TestMethod] + public void Test_38_15() + { + } + + [TestMethod] + public void Test_38_16() + { + } + + [TestMethod] + public void Test_38_17() + { + } + + [TestMethod] + public void Test_38_18() + { + } + + [TestMethod] + public void Test_38_19() + { + } + + [TestMethod] + public void Test_38_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_39 + { + #region PassingTests + [TestMethod] + public void Test_39_01() + { + } + + [TestMethod] + public void Test_39_02() + { + } + + [TestMethod] + public void Test_39_03() + { + } + + [TestMethod] + public void Test_39_04() + { + } + + [TestMethod] + public void Test_39_05() + { + } + + [TestMethod] + public void Test_39_06() + { + } + + [TestMethod] + public void Test_39_07() + { + } + + [TestMethod] + public void Test_39_08() + { + } + + [TestMethod] + public void Test_39_09() + { + } + + [TestMethod] + public void Test_39_10() + { + } + + [TestMethod] + public void Test_39_11() + { + } + + [TestMethod] + public void Test_39_12() + { + } + + [TestMethod] + public void Test_39_13() + { + } + + [TestMethod] + public void Test_39_14() + { + } + + [TestMethod] + public void Test_39_15() + { + } + + [TestMethod] + public void Test_39_16() + { + } + + [TestMethod] + public void Test_39_17() + { + } + + [TestMethod] + public void Test_39_18() + { + } + + [TestMethod] + public void Test_39_19() + { + } + + [TestMethod] + public void Test_39_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_40 + { + #region PassingTests + [TestMethod] + public void Test_40_01() + { + } + + [TestMethod] + public void Test_40_02() + { + } + + [TestMethod] + public void Test_40_03() + { + } + + [TestMethod] + public void Test_40_04() + { + } + + [TestMethod] + public void Test_40_05() + { + } + + [TestMethod] + public void Test_40_06() + { + } + + [TestMethod] + public void Test_40_07() + { + } + + [TestMethod] + public void Test_40_08() + { + } + + [TestMethod] + public void Test_40_09() + { + } + + [TestMethod] + public void Test_40_10() + { + } + + [TestMethod] + public void Test_40_11() + { + } + + [TestMethod] + public void Test_40_12() + { + } + + [TestMethod] + public void Test_40_13() + { + } + + [TestMethod] + public void Test_40_14() + { + } + + [TestMethod] + public void Test_40_15() + { + } + + [TestMethod] + public void Test_40_16() + { + } + + [TestMethod] + public void Test_40_17() + { + } + + [TestMethod] + public void Test_40_18() + { + } + + [TestMethod] + public void Test_40_19() + { + } + + [TestMethod] + public void Test_40_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_41 + { + #region PassingTests + [TestMethod] + public void Test_41_01() + { + } + + [TestMethod] + public void Test_41_02() + { + } + + [TestMethod] + public void Test_41_03() + { + } + + [TestMethod] + public void Test_41_04() + { + } + + [TestMethod] + public void Test_41_05() + { + } + + [TestMethod] + public void Test_41_06() + { + } + + [TestMethod] + public void Test_41_07() + { + } + + [TestMethod] + public void Test_41_08() + { + } + + [TestMethod] + public void Test_41_09() + { + } + + [TestMethod] + public void Test_41_10() + { + } + + [TestMethod] + public void Test_41_11() + { + } + + [TestMethod] + public void Test_41_12() + { + } + + [TestMethod] + public void Test_41_13() + { + } + + [TestMethod] + public void Test_41_14() + { + } + + [TestMethod] + public void Test_41_15() + { + } + + [TestMethod] + public void Test_41_16() + { + } + + [TestMethod] + public void Test_41_17() + { + } + + [TestMethod] + public void Test_41_18() + { + } + + [TestMethod] + public void Test_41_19() + { + } + + [TestMethod] + public void Test_41_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_42 + { + #region PassingTests + [TestMethod] + public void Test_42_01() + { + } + + [TestMethod] + public void Test_42_02() + { + } + + [TestMethod] + public void Test_42_03() + { + } + + [TestMethod] + public void Test_42_04() + { + } + + [TestMethod] + public void Test_42_05() + { + } + + [TestMethod] + public void Test_42_06() + { + } + + [TestMethod] + public void Test_42_07() + { + } + + [TestMethod] + public void Test_42_08() + { + } + + [TestMethod] + public void Test_42_09() + { + } + + [TestMethod] + public void Test_42_10() + { + } + + [TestMethod] + public void Test_42_11() + { + } + + [TestMethod] + public void Test_42_12() + { + } + + [TestMethod] + public void Test_42_13() + { + } + + [TestMethod] + public void Test_42_14() + { + } + + [TestMethod] + public void Test_42_15() + { + } + + [TestMethod] + public void Test_42_16() + { + } + + [TestMethod] + public void Test_42_17() + { + } + + [TestMethod] + public void Test_42_18() + { + } + + [TestMethod] + public void Test_42_19() + { + } + + [TestMethod] + public void Test_42_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_43 + { + #region PassingTests + [TestMethod] + public void Test_43_01() + { + } + + [TestMethod] + public void Test_43_02() + { + } + + [TestMethod] + public void Test_43_03() + { + } + + [TestMethod] + public void Test_43_04() + { + } + + [TestMethod] + public void Test_43_05() + { + } + + [TestMethod] + public void Test_43_06() + { + } + + [TestMethod] + public void Test_43_07() + { + } + + [TestMethod] + public void Test_43_08() + { + } + + [TestMethod] + public void Test_43_09() + { + } + + [TestMethod] + public void Test_43_10() + { + } + + [TestMethod] + public void Test_43_11() + { + } + + [TestMethod] + public void Test_43_12() + { + } + + [TestMethod] + public void Test_43_13() + { + } + + [TestMethod] + public void Test_43_14() + { + } + + [TestMethod] + public void Test_43_15() + { + } + + [TestMethod] + public void Test_43_16() + { + } + + [TestMethod] + public void Test_43_17() + { + } + + [TestMethod] + public void Test_43_18() + { + } + + [TestMethod] + public void Test_43_19() + { + } + + [TestMethod] + public void Test_43_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_44 + { + #region PassingTests + [TestMethod] + public void Test_44_01() + { + } + + [TestMethod] + public void Test_44_02() + { + } + + [TestMethod] + public void Test_44_03() + { + } + + [TestMethod] + public void Test_44_04() + { + } + + [TestMethod] + public void Test_44_05() + { + } + + [TestMethod] + public void Test_44_06() + { + } + + [TestMethod] + public void Test_44_07() + { + } + + [TestMethod] + public void Test_44_08() + { + } + + [TestMethod] + public void Test_44_09() + { + } + + [TestMethod] + public void Test_44_10() + { + } + + [TestMethod] + public void Test_44_11() + { + } + + [TestMethod] + public void Test_44_12() + { + } + + [TestMethod] + public void Test_44_13() + { + } + + [TestMethod] + public void Test_44_14() + { + } + + [TestMethod] + public void Test_44_15() + { + } + + [TestMethod] + public void Test_44_16() + { + } + + [TestMethod] + public void Test_44_17() + { + } + + [TestMethod] + public void Test_44_18() + { + } + + [TestMethod] + public void Test_44_19() + { + } + + [TestMethod] + public void Test_44_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_45 + { + #region PassingTests + [TestMethod] + public void Test_45_01() + { + } + + [TestMethod] + public void Test_45_02() + { + } + + [TestMethod] + public void Test_45_03() + { + } + + [TestMethod] + public void Test_45_04() + { + } + + [TestMethod] + public void Test_45_05() + { + } + + [TestMethod] + public void Test_45_06() + { + } + + [TestMethod] + public void Test_45_07() + { + } + + [TestMethod] + public void Test_45_08() + { + } + + [TestMethod] + public void Test_45_09() + { + } + + [TestMethod] + public void Test_45_10() + { + } + + [TestMethod] + public void Test_45_11() + { + } + + [TestMethod] + public void Test_45_12() + { + } + + [TestMethod] + public void Test_45_13() + { + } + + [TestMethod] + public void Test_45_14() + { + } + + [TestMethod] + public void Test_45_15() + { + } + + [TestMethod] + public void Test_45_16() + { + } + + [TestMethod] + public void Test_45_17() + { + } + + [TestMethod] + public void Test_45_18() + { + } + + [TestMethod] + public void Test_45_19() + { + } + + [TestMethod] + public void Test_45_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_46 + { + #region PassingTests + [TestMethod] + public void Test_46_01() + { + } + + [TestMethod] + public void Test_46_02() + { + } + + [TestMethod] + public void Test_46_03() + { + } + + [TestMethod] + public void Test_46_04() + { + } + + [TestMethod] + public void Test_46_05() + { + } + + [TestMethod] + public void Test_46_06() + { + } + + [TestMethod] + public void Test_46_07() + { + } + + [TestMethod] + public void Test_46_08() + { + } + + [TestMethod] + public void Test_46_09() + { + } + + [TestMethod] + public void Test_46_10() + { + } + + [TestMethod] + public void Test_46_11() + { + } + + [TestMethod] + public void Test_46_12() + { + } + + [TestMethod] + public void Test_46_13() + { + } + + [TestMethod] + public void Test_46_14() + { + } + + [TestMethod] + public void Test_46_15() + { + } + + [TestMethod] + public void Test_46_16() + { + } + + [TestMethod] + public void Test_46_17() + { + } + + [TestMethod] + public void Test_46_18() + { + } + + [TestMethod] + public void Test_46_19() + { + } + + [TestMethod] + public void Test_46_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_47 + { + #region PassingTests + [TestMethod] + public void Test_47_01() + { + } + + [TestMethod] + public void Test_47_02() + { + } + + [TestMethod] + public void Test_47_03() + { + } + + [TestMethod] + public void Test_47_04() + { + } + + [TestMethod] + public void Test_47_05() + { + } + + [TestMethod] + public void Test_47_06() + { + } + + [TestMethod] + public void Test_47_07() + { + } + + [TestMethod] + public void Test_47_08() + { + } + + [TestMethod] + public void Test_47_09() + { + } + + [TestMethod] + public void Test_47_10() + { + } + + [TestMethod] + public void Test_47_11() + { + } + + [TestMethod] + public void Test_47_12() + { + } + + [TestMethod] + public void Test_47_13() + { + } + + [TestMethod] + public void Test_47_14() + { + } + + [TestMethod] + public void Test_47_15() + { + } + + [TestMethod] + public void Test_47_16() + { + } + + [TestMethod] + public void Test_47_17() + { + } + + [TestMethod] + public void Test_47_18() + { + } + + [TestMethod] + public void Test_47_19() + { + } + + [TestMethod] + public void Test_47_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_48 + { + #region PassingTests + [TestMethod] + public void Test_48_01() + { + } + + [TestMethod] + public void Test_48_02() + { + } + + [TestMethod] + public void Test_48_03() + { + } + + [TestMethod] + public void Test_48_04() + { + } + + [TestMethod] + public void Test_48_05() + { + } + + [TestMethod] + public void Test_48_06() + { + } + + [TestMethod] + public void Test_48_07() + { + } + + [TestMethod] + public void Test_48_08() + { + } + + [TestMethod] + public void Test_48_09() + { + } + + [TestMethod] + public void Test_48_10() + { + } + + [TestMethod] + public void Test_48_11() + { + } + + [TestMethod] + public void Test_48_12() + { + } + + [TestMethod] + public void Test_48_13() + { + } + + [TestMethod] + public void Test_48_14() + { + } + + [TestMethod] + public void Test_48_15() + { + } + + [TestMethod] + public void Test_48_16() + { + } + + [TestMethod] + public void Test_48_17() + { + } + + [TestMethod] + public void Test_48_18() + { + } + + [TestMethod] + public void Test_48_19() + { + } + + [TestMethod] + public void Test_48_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_49 + { + #region PassingTests + [TestMethod] + public void Test_49_01() + { + } + + [TestMethod] + public void Test_49_02() + { + } + + [TestMethod] + public void Test_49_03() + { + } + + [TestMethod] + public void Test_49_04() + { + } + + [TestMethod] + public void Test_49_05() + { + } + + [TestMethod] + public void Test_49_06() + { + } + + [TestMethod] + public void Test_49_07() + { + } + + [TestMethod] + public void Test_49_08() + { + } + + [TestMethod] + public void Test_49_09() + { + } + + [TestMethod] + public void Test_49_10() + { + } + + [TestMethod] + public void Test_49_11() + { + } + + [TestMethod] + public void Test_49_12() + { + } + + [TestMethod] + public void Test_49_13() + { + } + + [TestMethod] + public void Test_49_14() + { + } + + [TestMethod] + public void Test_49_15() + { + } + + [TestMethod] + public void Test_49_16() + { + } + + [TestMethod] + public void Test_49_17() + { + } + + [TestMethod] + public void Test_49_18() + { + } + + [TestMethod] + public void Test_49_19() + { + } + + [TestMethod] + public void Test_49_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_50 + { + #region PassingTests + [TestMethod] + public void Test_50_01() + { + } + + [TestMethod] + public void Test_50_02() + { + } + + [TestMethod] + public void Test_50_03() + { + } + + [TestMethod] + public void Test_50_04() + { + } + + [TestMethod] + public void Test_50_05() + { + } + + [TestMethod] + public void Test_50_06() + { + } + + [TestMethod] + public void Test_50_07() + { + } + + [TestMethod] + public void Test_50_08() + { + } + + [TestMethod] + public void Test_50_09() + { + } + + [TestMethod] + public void Test_50_10() + { + } + + [TestMethod] + public void Test_50_11() + { + } + + [TestMethod] + public void Test_50_12() + { + } + + [TestMethod] + public void Test_50_13() + { + } + + [TestMethod] + public void Test_50_14() + { + } + + [TestMethod] + public void Test_50_15() + { + } + + [TestMethod] + public void Test_50_16() + { + } + + [TestMethod] + public void Test_50_17() + { + } + + [TestMethod] + public void Test_50_18() + { + } + + [TestMethod] + public void Test_50_19() + { + } + + [TestMethod] + public void Test_50_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_51 + { + #region PassingTests + [TestMethod] + public void Test_51_01() + { + } + + [TestMethod] + public void Test_51_02() + { + } + + [TestMethod] + public void Test_51_03() + { + } + + [TestMethod] + public void Test_51_04() + { + } + + [TestMethod] + public void Test_51_05() + { + } + + [TestMethod] + public void Test_51_06() + { + } + + [TestMethod] + public void Test_51_07() + { + } + + [TestMethod] + public void Test_51_08() + { + } + + [TestMethod] + public void Test_51_09() + { + } + + [TestMethod] + public void Test_51_10() + { + } + + [TestMethod] + public void Test_51_11() + { + } + + [TestMethod] + public void Test_51_12() + { + } + + [TestMethod] + public void Test_51_13() + { + } + + [TestMethod] + public void Test_51_14() + { + } + + [TestMethod] + public void Test_51_15() + { + } + + [TestMethod] + public void Test_51_16() + { + } + + [TestMethod] + public void Test_51_17() + { + } + + [TestMethod] + public void Test_51_18() + { + } + + [TestMethod] + public void Test_51_19() + { + } + + [TestMethod] + public void Test_51_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_52 + { + #region PassingTests + [TestMethod] + public void Test_52_01() + { + } + + [TestMethod] + public void Test_52_02() + { + } + + [TestMethod] + public void Test_52_03() + { + } + + [TestMethod] + public void Test_52_04() + { + } + + [TestMethod] + public void Test_52_05() + { + } + + [TestMethod] + public void Test_52_06() + { + } + + [TestMethod] + public void Test_52_07() + { + } + + [TestMethod] + public void Test_52_08() + { + } + + [TestMethod] + public void Test_52_09() + { + } + + [TestMethod] + public void Test_52_10() + { + } + + [TestMethod] + public void Test_52_11() + { + } + + [TestMethod] + public void Test_52_12() + { + } + + [TestMethod] + public void Test_52_13() + { + } + + [TestMethod] + public void Test_52_14() + { + } + + [TestMethod] + public void Test_52_15() + { + } + + [TestMethod] + public void Test_52_16() + { + } + + [TestMethod] + public void Test_52_17() + { + } + + [TestMethod] + public void Test_52_18() + { + } + + [TestMethod] + public void Test_52_19() + { + } + + [TestMethod] + public void Test_52_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_53 + { + #region PassingTests + [TestMethod] + public void Test_53_01() + { + } + + [TestMethod] + public void Test_53_02() + { + } + + [TestMethod] + public void Test_53_03() + { + } + + [TestMethod] + public void Test_53_04() + { + } + + [TestMethod] + public void Test_53_05() + { + } + + [TestMethod] + public void Test_53_06() + { + } + + [TestMethod] + public void Test_53_07() + { + } + + [TestMethod] + public void Test_53_08() + { + } + + [TestMethod] + public void Test_53_09() + { + } + + [TestMethod] + public void Test_53_10() + { + } + + [TestMethod] + public void Test_53_11() + { + } + + [TestMethod] + public void Test_53_12() + { + } + + [TestMethod] + public void Test_53_13() + { + } + + [TestMethod] + public void Test_53_14() + { + } + + [TestMethod] + public void Test_53_15() + { + } + + [TestMethod] + public void Test_53_16() + { + } + + [TestMethod] + public void Test_53_17() + { + } + + [TestMethod] + public void Test_53_18() + { + } + + [TestMethod] + public void Test_53_19() + { + } + + [TestMethod] + public void Test_53_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_54 + { + #region PassingTests + [TestMethod] + public void Test_54_01() + { + } + + [TestMethod] + public void Test_54_02() + { + } + + [TestMethod] + public void Test_54_03() + { + } + + [TestMethod] + public void Test_54_04() + { + } + + [TestMethod] + public void Test_54_05() + { + } + + [TestMethod] + public void Test_54_06() + { + } + + [TestMethod] + public void Test_54_07() + { + } + + [TestMethod] + public void Test_54_08() + { + } + + [TestMethod] + public void Test_54_09() + { + } + + [TestMethod] + public void Test_54_10() + { + } + + [TestMethod] + public void Test_54_11() + { + } + + [TestMethod] + public void Test_54_12() + { + } + + [TestMethod] + public void Test_54_13() + { + } + + [TestMethod] + public void Test_54_14() + { + } + + [TestMethod] + public void Test_54_15() + { + } + + [TestMethod] + public void Test_54_16() + { + } + + [TestMethod] + public void Test_54_17() + { + } + + [TestMethod] + public void Test_54_18() + { + } + + [TestMethod] + public void Test_54_19() + { + } + + [TestMethod] + public void Test_54_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_55 + { + #region PassingTests + [TestMethod] + public void Test_55_01() + { + } + + [TestMethod] + public void Test_55_02() + { + } + + [TestMethod] + public void Test_55_03() + { + } + + [TestMethod] + public void Test_55_04() + { + } + + [TestMethod] + public void Test_55_05() + { + } + + [TestMethod] + public void Test_55_06() + { + } + + [TestMethod] + public void Test_55_07() + { + } + + [TestMethod] + public void Test_55_08() + { + } + + [TestMethod] + public void Test_55_09() + { + } + + [TestMethod] + public void Test_55_10() + { + } + + [TestMethod] + public void Test_55_11() + { + } + + [TestMethod] + public void Test_55_12() + { + } + + [TestMethod] + public void Test_55_13() + { + } + + [TestMethod] + public void Test_55_14() + { + } + + [TestMethod] + public void Test_55_15() + { + } + + [TestMethod] + public void Test_55_16() + { + } + + [TestMethod] + public void Test_55_17() + { + } + + [TestMethod] + public void Test_55_18() + { + } + + [TestMethod] + public void Test_55_19() + { + } + + [TestMethod] + public void Test_55_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_56 + { + #region PassingTests + [TestMethod] + public void Test_56_01() + { + } + + [TestMethod] + public void Test_56_02() + { + } + + [TestMethod] + public void Test_56_03() + { + } + + [TestMethod] + public void Test_56_04() + { + } + + [TestMethod] + public void Test_56_05() + { + } + + [TestMethod] + public void Test_56_06() + { + } + + [TestMethod] + public void Test_56_07() + { + } + + [TestMethod] + public void Test_56_08() + { + } + + [TestMethod] + public void Test_56_09() + { + } + + [TestMethod] + public void Test_56_10() + { + } + + [TestMethod] + public void Test_56_11() + { + } + + [TestMethod] + public void Test_56_12() + { + } + + [TestMethod] + public void Test_56_13() + { + } + + [TestMethod] + public void Test_56_14() + { + } + + [TestMethod] + public void Test_56_15() + { + } + + [TestMethod] + public void Test_56_16() + { + } + + [TestMethod] + public void Test_56_17() + { + } + + [TestMethod] + public void Test_56_18() + { + } + + [TestMethod] + public void Test_56_19() + { + } + + [TestMethod] + public void Test_56_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_57 + { + #region PassingTests + [TestMethod] + public void Test_57_01() + { + } + + [TestMethod] + public void Test_57_02() + { + } + + [TestMethod] + public void Test_57_03() + { + } + + [TestMethod] + public void Test_57_04() + { + } + + [TestMethod] + public void Test_57_05() + { + } + + [TestMethod] + public void Test_57_06() + { + } + + [TestMethod] + public void Test_57_07() + { + } + + [TestMethod] + public void Test_57_08() + { + } + + [TestMethod] + public void Test_57_09() + { + } + + [TestMethod] + public void Test_57_10() + { + } + + [TestMethod] + public void Test_57_11() + { + } + + [TestMethod] + public void Test_57_12() + { + } + + [TestMethod] + public void Test_57_13() + { + } + + [TestMethod] + public void Test_57_14() + { + } + + [TestMethod] + public void Test_57_15() + { + } + + [TestMethod] + public void Test_57_16() + { + } + + [TestMethod] + public void Test_57_17() + { + } + + [TestMethod] + public void Test_57_18() + { + } + + [TestMethod] + public void Test_57_19() + { + } + + [TestMethod] + public void Test_57_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_58 + { + #region PassingTests + [TestMethod] + public void Test_58_01() + { + } + + [TestMethod] + public void Test_58_02() + { + } + + [TestMethod] + public void Test_58_03() + { + } + + [TestMethod] + public void Test_58_04() + { + } + + [TestMethod] + public void Test_58_05() + { + } + + [TestMethod] + public void Test_58_06() + { + } + + [TestMethod] + public void Test_58_07() + { + } + + [TestMethod] + public void Test_58_08() + { + } + + [TestMethod] + public void Test_58_09() + { + } + + [TestMethod] + public void Test_58_10() + { + } + + [TestMethod] + public void Test_58_11() + { + } + + [TestMethod] + public void Test_58_12() + { + } + + [TestMethod] + public void Test_58_13() + { + } + + [TestMethod] + public void Test_58_14() + { + } + + [TestMethod] + public void Test_58_15() + { + } + + [TestMethod] + public void Test_58_16() + { + } + + [TestMethod] + public void Test_58_17() + { + } + + [TestMethod] + public void Test_58_18() + { + } + + [TestMethod] + public void Test_58_19() + { + } + + [TestMethod] + public void Test_58_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_59 + { + #region PassingTests + [TestMethod] + public void Test_59_01() + { + } + + [TestMethod] + public void Test_59_02() + { + } + + [TestMethod] + public void Test_59_03() + { + } + + [TestMethod] + public void Test_59_04() + { + } + + [TestMethod] + public void Test_59_05() + { + } + + [TestMethod] + public void Test_59_06() + { + } + + [TestMethod] + public void Test_59_07() + { + } + + [TestMethod] + public void Test_59_08() + { + } + + [TestMethod] + public void Test_59_09() + { + } + + [TestMethod] + public void Test_59_10() + { + } + + [TestMethod] + public void Test_59_11() + { + } + + [TestMethod] + public void Test_59_12() + { + } + + [TestMethod] + public void Test_59_13() + { + } + + [TestMethod] + public void Test_59_14() + { + } + + [TestMethod] + public void Test_59_15() + { + } + + [TestMethod] + public void Test_59_16() + { + } + + [TestMethod] + public void Test_59_17() + { + } + + [TestMethod] + public void Test_59_18() + { + } + + [TestMethod] + public void Test_59_19() + { + } + + [TestMethod] + public void Test_59_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_60 + { + #region PassingTests + [TestMethod] + public void Test_60_01() + { + } + + [TestMethod] + public void Test_60_02() + { + } + + [TestMethod] + public void Test_60_03() + { + } + + [TestMethod] + public void Test_60_04() + { + } + + [TestMethod] + public void Test_60_05() + { + } + + [TestMethod] + public void Test_60_06() + { + } + + [TestMethod] + public void Test_60_07() + { + } + + [TestMethod] + public void Test_60_08() + { + } + + [TestMethod] + public void Test_60_09() + { + } + + [TestMethod] + public void Test_60_10() + { + } + + [TestMethod] + public void Test_60_11() + { + } + + [TestMethod] + public void Test_60_12() + { + } + + [TestMethod] + public void Test_60_13() + { + } + + [TestMethod] + public void Test_60_14() + { + } + + [TestMethod] + public void Test_60_15() + { + } + + [TestMethod] + public void Test_60_16() + { + } + + [TestMethod] + public void Test_60_17() + { + } + + [TestMethod] + public void Test_60_18() + { + } + + [TestMethod] + public void Test_60_19() + { + } + + [TestMethod] + public void Test_60_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_61 + { + #region PassingTests + [TestMethod] + public void Test_61_01() + { + } + + [TestMethod] + public void Test_61_02() + { + } + + [TestMethod] + public void Test_61_03() + { + } + + [TestMethod] + public void Test_61_04() + { + } + + [TestMethod] + public void Test_61_05() + { + } + + [TestMethod] + public void Test_61_06() + { + } + + [TestMethod] + public void Test_61_07() + { + } + + [TestMethod] + public void Test_61_08() + { + } + + [TestMethod] + public void Test_61_09() + { + } + + [TestMethod] + public void Test_61_10() + { + } + + [TestMethod] + public void Test_61_11() + { + } + + [TestMethod] + public void Test_61_12() + { + } + + [TestMethod] + public void Test_61_13() + { + } + + [TestMethod] + public void Test_61_14() + { + } + + [TestMethod] + public void Test_61_15() + { + } + + [TestMethod] + public void Test_61_16() + { + } + + [TestMethod] + public void Test_61_17() + { + } + + [TestMethod] + public void Test_61_18() + { + } + + [TestMethod] + public void Test_61_19() + { + } + + [TestMethod] + public void Test_61_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_62 + { + #region PassingTests + [TestMethod] + public void Test_62_01() + { + } + + [TestMethod] + public void Test_62_02() + { + } + + [TestMethod] + public void Test_62_03() + { + } + + [TestMethod] + public void Test_62_04() + { + } + + [TestMethod] + public void Test_62_05() + { + } + + [TestMethod] + public void Test_62_06() + { + } + + [TestMethod] + public void Test_62_07() + { + } + + [TestMethod] + public void Test_62_08() + { + } + + [TestMethod] + public void Test_62_09() + { + } + + [TestMethod] + public void Test_62_10() + { + } + + [TestMethod] + public void Test_62_11() + { + } + + [TestMethod] + public void Test_62_12() + { + } + + [TestMethod] + public void Test_62_13() + { + } + + [TestMethod] + public void Test_62_14() + { + } + + [TestMethod] + public void Test_62_15() + { + } + + [TestMethod] + public void Test_62_16() + { + } + + [TestMethod] + public void Test_62_17() + { + } + + [TestMethod] + public void Test_62_18() + { + } + + [TestMethod] + public void Test_62_19() + { + } + + [TestMethod] + public void Test_62_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_63 + { + #region PassingTests + [TestMethod] + public void Test_63_01() + { + } + + [TestMethod] + public void Test_63_02() + { + } + + [TestMethod] + public void Test_63_03() + { + } + + [TestMethod] + public void Test_63_04() + { + } + + [TestMethod] + public void Test_63_05() + { + } + + [TestMethod] + public void Test_63_06() + { + } + + [TestMethod] + public void Test_63_07() + { + } + + [TestMethod] + public void Test_63_08() + { + } + + [TestMethod] + public void Test_63_09() + { + } + + [TestMethod] + public void Test_63_10() + { + } + + [TestMethod] + public void Test_63_11() + { + } + + [TestMethod] + public void Test_63_12() + { + } + + [TestMethod] + public void Test_63_13() + { + } + + [TestMethod] + public void Test_63_14() + { + } + + [TestMethod] + public void Test_63_15() + { + } + + [TestMethod] + public void Test_63_16() + { + } + + [TestMethod] + public void Test_63_17() + { + } + + [TestMethod] + public void Test_63_18() + { + } + + [TestMethod] + public void Test_63_19() + { + } + + [TestMethod] + public void Test_63_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_64 + { + #region PassingTests + [TestMethod] + public void Test_64_01() + { + } + + [TestMethod] + public void Test_64_02() + { + } + + [TestMethod] + public void Test_64_03() + { + } + + [TestMethod] + public void Test_64_04() + { + } + + [TestMethod] + public void Test_64_05() + { + } + + [TestMethod] + public void Test_64_06() + { + } + + [TestMethod] + public void Test_64_07() + { + } + + [TestMethod] + public void Test_64_08() + { + } + + [TestMethod] + public void Test_64_09() + { + } + + [TestMethod] + public void Test_64_10() + { + } + + [TestMethod] + public void Test_64_11() + { + } + + [TestMethod] + public void Test_64_12() + { + } + + [TestMethod] + public void Test_64_13() + { + } + + [TestMethod] + public void Test_64_14() + { + } + + [TestMethod] + public void Test_64_15() + { + } + + [TestMethod] + public void Test_64_16() + { + } + + [TestMethod] + public void Test_64_17() + { + } + + [TestMethod] + public void Test_64_18() + { + } + + [TestMethod] + public void Test_64_19() + { + } + + [TestMethod] + public void Test_64_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_65 + { + #region PassingTests + [TestMethod] + public void Test_65_01() + { + } + + [TestMethod] + public void Test_65_02() + { + } + + [TestMethod] + public void Test_65_03() + { + } + + [TestMethod] + public void Test_65_04() + { + } + + [TestMethod] + public void Test_65_05() + { + } + + [TestMethod] + public void Test_65_06() + { + } + + [TestMethod] + public void Test_65_07() + { + } + + [TestMethod] + public void Test_65_08() + { + } + + [TestMethod] + public void Test_65_09() + { + } + + [TestMethod] + public void Test_65_10() + { + } + + [TestMethod] + public void Test_65_11() + { + } + + [TestMethod] + public void Test_65_12() + { + } + + [TestMethod] + public void Test_65_13() + { + } + + [TestMethod] + public void Test_65_14() + { + } + + [TestMethod] + public void Test_65_15() + { + } + + [TestMethod] + public void Test_65_16() + { + } + + [TestMethod] + public void Test_65_17() + { + } + + [TestMethod] + public void Test_65_18() + { + } + + [TestMethod] + public void Test_65_19() + { + } + + [TestMethod] + public void Test_65_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_66 + { + #region PassingTests + [TestMethod] + public void Test_66_01() + { + } + + [TestMethod] + public void Test_66_02() + { + } + + [TestMethod] + public void Test_66_03() + { + } + + [TestMethod] + public void Test_66_04() + { + } + + [TestMethod] + public void Test_66_05() + { + } + + [TestMethod] + public void Test_66_06() + { + } + + [TestMethod] + public void Test_66_07() + { + } + + [TestMethod] + public void Test_66_08() + { + } + + [TestMethod] + public void Test_66_09() + { + } + + [TestMethod] + public void Test_66_10() + { + } + + [TestMethod] + public void Test_66_11() + { + } + + [TestMethod] + public void Test_66_12() + { + } + + [TestMethod] + public void Test_66_13() + { + } + + [TestMethod] + public void Test_66_14() + { + } + + [TestMethod] + public void Test_66_15() + { + } + + [TestMethod] + public void Test_66_16() + { + } + + [TestMethod] + public void Test_66_17() + { + } + + [TestMethod] + public void Test_66_18() + { + } + + [TestMethod] + public void Test_66_19() + { + } + + [TestMethod] + public void Test_66_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_67 + { + #region PassingTests + [TestMethod] + public void Test_67_01() + { + } + + [TestMethod] + public void Test_67_02() + { + } + + [TestMethod] + public void Test_67_03() + { + } + + [TestMethod] + public void Test_67_04() + { + } + + [TestMethod] + public void Test_67_05() + { + } + + [TestMethod] + public void Test_67_06() + { + } + + [TestMethod] + public void Test_67_07() + { + } + + [TestMethod] + public void Test_67_08() + { + } + + [TestMethod] + public void Test_67_09() + { + } + + [TestMethod] + public void Test_67_10() + { + } + + [TestMethod] + public void Test_67_11() + { + } + + [TestMethod] + public void Test_67_12() + { + } + + [TestMethod] + public void Test_67_13() + { + } + + [TestMethod] + public void Test_67_14() + { + } + + [TestMethod] + public void Test_67_15() + { + } + + [TestMethod] + public void Test_67_16() + { + } + + [TestMethod] + public void Test_67_17() + { + } + + [TestMethod] + public void Test_67_18() + { + } + + [TestMethod] + public void Test_67_19() + { + } + + [TestMethod] + public void Test_67_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_68 + { + #region PassingTests + [TestMethod] + public void Test_68_01() + { + } + + [TestMethod] + public void Test_68_02() + { + } + + [TestMethod] + public void Test_68_03() + { + } + + [TestMethod] + public void Test_68_04() + { + } + + [TestMethod] + public void Test_68_05() + { + } + + [TestMethod] + public void Test_68_06() + { + } + + [TestMethod] + public void Test_68_07() + { + } + + [TestMethod] + public void Test_68_08() + { + } + + [TestMethod] + public void Test_68_09() + { + } + + [TestMethod] + public void Test_68_10() + { + } + + [TestMethod] + public void Test_68_11() + { + } + + [TestMethod] + public void Test_68_12() + { + } + + [TestMethod] + public void Test_68_13() + { + } + + [TestMethod] + public void Test_68_14() + { + } + + [TestMethod] + public void Test_68_15() + { + } + + [TestMethod] + public void Test_68_16() + { + } + + [TestMethod] + public void Test_68_17() + { + } + + [TestMethod] + public void Test_68_18() + { + } + + [TestMethod] + public void Test_68_19() + { + } + + [TestMethod] + public void Test_68_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_69 + { + #region PassingTests + [TestMethod] + public void Test_69_01() + { + } + + [TestMethod] + public void Test_69_02() + { + } + + [TestMethod] + public void Test_69_03() + { + } + + [TestMethod] + public void Test_69_04() + { + } + + [TestMethod] + public void Test_69_05() + { + } + + [TestMethod] + public void Test_69_06() + { + } + + [TestMethod] + public void Test_69_07() + { + } + + [TestMethod] + public void Test_69_08() + { + } + + [TestMethod] + public void Test_69_09() + { + } + + [TestMethod] + public void Test_69_10() + { + } + + [TestMethod] + public void Test_69_11() + { + } + + [TestMethod] + public void Test_69_12() + { + } + + [TestMethod] + public void Test_69_13() + { + } + + [TestMethod] + public void Test_69_14() + { + } + + [TestMethod] + public void Test_69_15() + { + } + + [TestMethod] + public void Test_69_16() + { + } + + [TestMethod] + public void Test_69_17() + { + } + + [TestMethod] + public void Test_69_18() + { + } + + [TestMethod] + public void Test_69_19() + { + } + + [TestMethod] + public void Test_69_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_70 + { + #region PassingTests + [TestMethod] + public void Test_70_01() + { + } + + [TestMethod] + public void Test_70_02() + { + } + + [TestMethod] + public void Test_70_03() + { + } + + [TestMethod] + public void Test_70_04() + { + } + + [TestMethod] + public void Test_70_05() + { + } + + [TestMethod] + public void Test_70_06() + { + } + + [TestMethod] + public void Test_70_07() + { + } + + [TestMethod] + public void Test_70_08() + { + } + + [TestMethod] + public void Test_70_09() + { + } + + [TestMethod] + public void Test_70_10() + { + } + + [TestMethod] + public void Test_70_11() + { + } + + [TestMethod] + public void Test_70_12() + { + } + + [TestMethod] + public void Test_70_13() + { + } + + [TestMethod] + public void Test_70_14() + { + } + + [TestMethod] + public void Test_70_15() + { + } + + [TestMethod] + public void Test_70_16() + { + } + + [TestMethod] + public void Test_70_17() + { + } + + [TestMethod] + public void Test_70_18() + { + } + + [TestMethod] + public void Test_70_19() + { + } + + [TestMethod] + public void Test_70_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_71 + { + #region PassingTests + [TestMethod] + public void Test_71_01() + { + } + + [TestMethod] + public void Test_71_02() + { + } + + [TestMethod] + public void Test_71_03() + { + } + + [TestMethod] + public void Test_71_04() + { + } + + [TestMethod] + public void Test_71_05() + { + } + + [TestMethod] + public void Test_71_06() + { + } + + [TestMethod] + public void Test_71_07() + { + } + + [TestMethod] + public void Test_71_08() + { + } + + [TestMethod] + public void Test_71_09() + { + } + + [TestMethod] + public void Test_71_10() + { + } + + [TestMethod] + public void Test_71_11() + { + } + + [TestMethod] + public void Test_71_12() + { + } + + [TestMethod] + public void Test_71_13() + { + } + + [TestMethod] + public void Test_71_14() + { + } + + [TestMethod] + public void Test_71_15() + { + } + + [TestMethod] + public void Test_71_16() + { + } + + [TestMethod] + public void Test_71_17() + { + } + + [TestMethod] + public void Test_71_18() + { + } + + [TestMethod] + public void Test_71_19() + { + } + + [TestMethod] + public void Test_71_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_72 + { + #region PassingTests + [TestMethod] + public void Test_72_01() + { + } + + [TestMethod] + public void Test_72_02() + { + } + + [TestMethod] + public void Test_72_03() + { + } + + [TestMethod] + public void Test_72_04() + { + } + + [TestMethod] + public void Test_72_05() + { + } + + [TestMethod] + public void Test_72_06() + { + } + + [TestMethod] + public void Test_72_07() + { + } + + [TestMethod] + public void Test_72_08() + { + } + + [TestMethod] + public void Test_72_09() + { + } + + [TestMethod] + public void Test_72_10() + { + } + + [TestMethod] + public void Test_72_11() + { + } + + [TestMethod] + public void Test_72_12() + { + } + + [TestMethod] + public void Test_72_13() + { + } + + [TestMethod] + public void Test_72_14() + { + } + + [TestMethod] + public void Test_72_15() + { + } + + [TestMethod] + public void Test_72_16() + { + } + + [TestMethod] + public void Test_72_17() + { + } + + [TestMethod] + public void Test_72_18() + { + } + + [TestMethod] + public void Test_72_19() + { + } + + [TestMethod] + public void Test_72_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_73 + { + #region PassingTests + [TestMethod] + public void Test_73_01() + { + } + + [TestMethod] + public void Test_73_02() + { + } + + [TestMethod] + public void Test_73_03() + { + } + + [TestMethod] + public void Test_73_04() + { + } + + [TestMethod] + public void Test_73_05() + { + } + + [TestMethod] + public void Test_73_06() + { + } + + [TestMethod] + public void Test_73_07() + { + } + + [TestMethod] + public void Test_73_08() + { + } + + [TestMethod] + public void Test_73_09() + { + } + + [TestMethod] + public void Test_73_10() + { + } + + [TestMethod] + public void Test_73_11() + { + } + + [TestMethod] + public void Test_73_12() + { + } + + [TestMethod] + public void Test_73_13() + { + } + + [TestMethod] + public void Test_73_14() + { + } + + [TestMethod] + public void Test_73_15() + { + } + + [TestMethod] + public void Test_73_16() + { + } + + [TestMethod] + public void Test_73_17() + { + } + + [TestMethod] + public void Test_73_18() + { + } + + [TestMethod] + public void Test_73_19() + { + } + + [TestMethod] + public void Test_73_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_74 + { + #region PassingTests + [TestMethod] + public void Test_74_01() + { + } + + [TestMethod] + public void Test_74_02() + { + } + + [TestMethod] + public void Test_74_03() + { + } + + [TestMethod] + public void Test_74_04() + { + } + + [TestMethod] + public void Test_74_05() + { + } + + [TestMethod] + public void Test_74_06() + { + } + + [TestMethod] + public void Test_74_07() + { + } + + [TestMethod] + public void Test_74_08() + { + } + + [TestMethod] + public void Test_74_09() + { + } + + [TestMethod] + public void Test_74_10() + { + } + + [TestMethod] + public void Test_74_11() + { + } + + [TestMethod] + public void Test_74_12() + { + } + + [TestMethod] + public void Test_74_13() + { + } + + [TestMethod] + public void Test_74_14() + { + } + + [TestMethod] + public void Test_74_15() + { + } + + [TestMethod] + public void Test_74_16() + { + } + + [TestMethod] + public void Test_74_17() + { + } + + [TestMethod] + public void Test_74_18() + { + } + + [TestMethod] + public void Test_74_19() + { + } + + [TestMethod] + public void Test_74_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_75 + { + #region PassingTests + [TestMethod] + public void Test_75_01() + { + } + + [TestMethod] + public void Test_75_02() + { + } + + [TestMethod] + public void Test_75_03() + { + } + + [TestMethod] + public void Test_75_04() + { + } + + [TestMethod] + public void Test_75_05() + { + } + + [TestMethod] + public void Test_75_06() + { + } + + [TestMethod] + public void Test_75_07() + { + } + + [TestMethod] + public void Test_75_08() + { + } + + [TestMethod] + public void Test_75_09() + { + } + + [TestMethod] + public void Test_75_10() + { + } + + [TestMethod] + public void Test_75_11() + { + } + + [TestMethod] + public void Test_75_12() + { + } + + [TestMethod] + public void Test_75_13() + { + } + + [TestMethod] + public void Test_75_14() + { + } + + [TestMethod] + public void Test_75_15() + { + } + + [TestMethod] + public void Test_75_16() + { + } + + [TestMethod] + public void Test_75_17() + { + } + + [TestMethod] + public void Test_75_18() + { + } + + [TestMethod] + public void Test_75_19() + { + } + + [TestMethod] + public void Test_75_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_76 + { + #region PassingTests + [TestMethod] + public void Test_76_01() + { + } + + [TestMethod] + public void Test_76_02() + { + } + + [TestMethod] + public void Test_76_03() + { + } + + [TestMethod] + public void Test_76_04() + { + } + + [TestMethod] + public void Test_76_05() + { + } + + [TestMethod] + public void Test_76_06() + { + } + + [TestMethod] + public void Test_76_07() + { + } + + [TestMethod] + public void Test_76_08() + { + } + + [TestMethod] + public void Test_76_09() + { + } + + [TestMethod] + public void Test_76_10() + { + } + + [TestMethod] + public void Test_76_11() + { + } + + [TestMethod] + public void Test_76_12() + { + } + + [TestMethod] + public void Test_76_13() + { + } + + [TestMethod] + public void Test_76_14() + { + } + + [TestMethod] + public void Test_76_15() + { + } + + [TestMethod] + public void Test_76_16() + { + } + + [TestMethod] + public void Test_76_17() + { + } + + [TestMethod] + public void Test_76_18() + { + } + + [TestMethod] + public void Test_76_19() + { + } + + [TestMethod] + public void Test_76_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_77 + { + #region PassingTests + [TestMethod] + public void Test_77_01() + { + } + + [TestMethod] + public void Test_77_02() + { + } + + [TestMethod] + public void Test_77_03() + { + } + + [TestMethod] + public void Test_77_04() + { + } + + [TestMethod] + public void Test_77_05() + { + } + + [TestMethod] + public void Test_77_06() + { + } + + [TestMethod] + public void Test_77_07() + { + } + + [TestMethod] + public void Test_77_08() + { + } + + [TestMethod] + public void Test_77_09() + { + } + + [TestMethod] + public void Test_77_10() + { + } + + [TestMethod] + public void Test_77_11() + { + } + + [TestMethod] + public void Test_77_12() + { + } + + [TestMethod] + public void Test_77_13() + { + } + + [TestMethod] + public void Test_77_14() + { + } + + [TestMethod] + public void Test_77_15() + { + } + + [TestMethod] + public void Test_77_16() + { + } + + [TestMethod] + public void Test_77_17() + { + } + + [TestMethod] + public void Test_77_18() + { + } + + [TestMethod] + public void Test_77_19() + { + } + + [TestMethod] + public void Test_77_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_78 + { + #region PassingTests + [TestMethod] + public void Test_78_01() + { + } + + [TestMethod] + public void Test_78_02() + { + } + + [TestMethod] + public void Test_78_03() + { + } + + [TestMethod] + public void Test_78_04() + { + } + + [TestMethod] + public void Test_78_05() + { + } + + [TestMethod] + public void Test_78_06() + { + } + + [TestMethod] + public void Test_78_07() + { + } + + [TestMethod] + public void Test_78_08() + { + } + + [TestMethod] + public void Test_78_09() + { + } + + [TestMethod] + public void Test_78_10() + { + } + + [TestMethod] + public void Test_78_11() + { + } + + [TestMethod] + public void Test_78_12() + { + } + + [TestMethod] + public void Test_78_13() + { + } + + [TestMethod] + public void Test_78_14() + { + } + + [TestMethod] + public void Test_78_15() + { + } + + [TestMethod] + public void Test_78_16() + { + } + + [TestMethod] + public void Test_78_17() + { + } + + [TestMethod] + public void Test_78_18() + { + } + + [TestMethod] + public void Test_78_19() + { + } + + [TestMethod] + public void Test_78_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_79 + { + #region PassingTests + [TestMethod] + public void Test_79_01() + { + } + + [TestMethod] + public void Test_79_02() + { + } + + [TestMethod] + public void Test_79_03() + { + } + + [TestMethod] + public void Test_79_04() + { + } + + [TestMethod] + public void Test_79_05() + { + } + + [TestMethod] + public void Test_79_06() + { + } + + [TestMethod] + public void Test_79_07() + { + } + + [TestMethod] + public void Test_79_08() + { + } + + [TestMethod] + public void Test_79_09() + { + } + + [TestMethod] + public void Test_79_10() + { + } + + [TestMethod] + public void Test_79_11() + { + } + + [TestMethod] + public void Test_79_12() + { + } + + [TestMethod] + public void Test_79_13() + { + } + + [TestMethod] + public void Test_79_14() + { + } + + [TestMethod] + public void Test_79_15() + { + } + + [TestMethod] + public void Test_79_16() + { + } + + [TestMethod] + public void Test_79_17() + { + } + + [TestMethod] + public void Test_79_18() + { + } + + [TestMethod] + public void Test_79_19() + { + } + + [TestMethod] + public void Test_79_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_80 + { + #region PassingTests + [TestMethod] + public void Test_80_01() + { + } + + [TestMethod] + public void Test_80_02() + { + } + + [TestMethod] + public void Test_80_03() + { + } + + [TestMethod] + public void Test_80_04() + { + } + + [TestMethod] + public void Test_80_05() + { + } + + [TestMethod] + public void Test_80_06() + { + } + + [TestMethod] + public void Test_80_07() + { + } + + [TestMethod] + public void Test_80_08() + { + } + + [TestMethod] + public void Test_80_09() + { + } + + [TestMethod] + public void Test_80_10() + { + } + + [TestMethod] + public void Test_80_11() + { + } + + [TestMethod] + public void Test_80_12() + { + } + + [TestMethod] + public void Test_80_13() + { + } + + [TestMethod] + public void Test_80_14() + { + } + + [TestMethod] + public void Test_80_15() + { + } + + [TestMethod] + public void Test_80_16() + { + } + + [TestMethod] + public void Test_80_17() + { + } + + [TestMethod] + public void Test_80_18() + { + } + + [TestMethod] + public void Test_80_19() + { + } + + [TestMethod] + public void Test_80_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_81 + { + #region PassingTests + [TestMethod] + public void Test_81_01() + { + } + + [TestMethod] + public void Test_81_02() + { + } + + [TestMethod] + public void Test_81_03() + { + } + + [TestMethod] + public void Test_81_04() + { + } + + [TestMethod] + public void Test_81_05() + { + } + + [TestMethod] + public void Test_81_06() + { + } + + [TestMethod] + public void Test_81_07() + { + } + + [TestMethod] + public void Test_81_08() + { + } + + [TestMethod] + public void Test_81_09() + { + } + + [TestMethod] + public void Test_81_10() + { + } + + [TestMethod] + public void Test_81_11() + { + } + + [TestMethod] + public void Test_81_12() + { + } + + [TestMethod] + public void Test_81_13() + { + } + + [TestMethod] + public void Test_81_14() + { + } + + [TestMethod] + public void Test_81_15() + { + } + + [TestMethod] + public void Test_81_16() + { + } + + [TestMethod] + public void Test_81_17() + { + } + + [TestMethod] + public void Test_81_18() + { + } + + [TestMethod] + public void Test_81_19() + { + } + + [TestMethod] + public void Test_81_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_82 + { + #region PassingTests + [TestMethod] + public void Test_82_01() + { + } + + [TestMethod] + public void Test_82_02() + { + } + + [TestMethod] + public void Test_82_03() + { + } + + [TestMethod] + public void Test_82_04() + { + } + + [TestMethod] + public void Test_82_05() + { + } + + [TestMethod] + public void Test_82_06() + { + } + + [TestMethod] + public void Test_82_07() + { + } + + [TestMethod] + public void Test_82_08() + { + } + + [TestMethod] + public void Test_82_09() + { + } + + [TestMethod] + public void Test_82_10() + { + } + + [TestMethod] + public void Test_82_11() + { + } + + [TestMethod] + public void Test_82_12() + { + } + + [TestMethod] + public void Test_82_13() + { + } + + [TestMethod] + public void Test_82_14() + { + } + + [TestMethod] + public void Test_82_15() + { + } + + [TestMethod] + public void Test_82_16() + { + } + + [TestMethod] + public void Test_82_17() + { + } + + [TestMethod] + public void Test_82_18() + { + } + + [TestMethod] + public void Test_82_19() + { + } + + [TestMethod] + public void Test_82_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_83 + { + #region PassingTests + [TestMethod] + public void Test_83_01() + { + } + + [TestMethod] + public void Test_83_02() + { + } + + [TestMethod] + public void Test_83_03() + { + } + + [TestMethod] + public void Test_83_04() + { + } + + [TestMethod] + public void Test_83_05() + { + } + + [TestMethod] + public void Test_83_06() + { + } + + [TestMethod] + public void Test_83_07() + { + } + + [TestMethod] + public void Test_83_08() + { + } + + [TestMethod] + public void Test_83_09() + { + } + + [TestMethod] + public void Test_83_10() + { + } + + [TestMethod] + public void Test_83_11() + { + } + + [TestMethod] + public void Test_83_12() + { + } + + [TestMethod] + public void Test_83_13() + { + } + + [TestMethod] + public void Test_83_14() + { + } + + [TestMethod] + public void Test_83_15() + { + } + + [TestMethod] + public void Test_83_16() + { + } + + [TestMethod] + public void Test_83_17() + { + } + + [TestMethod] + public void Test_83_18() + { + } + + [TestMethod] + public void Test_83_19() + { + } + + [TestMethod] + public void Test_83_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_84 + { + #region PassingTests + [TestMethod] + public void Test_84_01() + { + } + + [TestMethod] + public void Test_84_02() + { + } + + [TestMethod] + public void Test_84_03() + { + } + + [TestMethod] + public void Test_84_04() + { + } + + [TestMethod] + public void Test_84_05() + { + } + + [TestMethod] + public void Test_84_06() + { + } + + [TestMethod] + public void Test_84_07() + { + } + + [TestMethod] + public void Test_84_08() + { + } + + [TestMethod] + public void Test_84_09() + { + } + + [TestMethod] + public void Test_84_10() + { + } + + [TestMethod] + public void Test_84_11() + { + } + + [TestMethod] + public void Test_84_12() + { + } + + [TestMethod] + public void Test_84_13() + { + } + + [TestMethod] + public void Test_84_14() + { + } + + [TestMethod] + public void Test_84_15() + { + } + + [TestMethod] + public void Test_84_16() + { + } + + [TestMethod] + public void Test_84_17() + { + } + + [TestMethod] + public void Test_84_18() + { + } + + [TestMethod] + public void Test_84_19() + { + } + + [TestMethod] + public void Test_84_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_85 + { + #region PassingTests + [TestMethod] + public void Test_85_01() + { + } + + [TestMethod] + public void Test_85_02() + { + } + + [TestMethod] + public void Test_85_03() + { + } + + [TestMethod] + public void Test_85_04() + { + } + + [TestMethod] + public void Test_85_05() + { + } + + [TestMethod] + public void Test_85_06() + { + } + + [TestMethod] + public void Test_85_07() + { + } + + [TestMethod] + public void Test_85_08() + { + } + + [TestMethod] + public void Test_85_09() + { + } + + [TestMethod] + public void Test_85_10() + { + } + + [TestMethod] + public void Test_85_11() + { + } + + [TestMethod] + public void Test_85_12() + { + } + + [TestMethod] + public void Test_85_13() + { + } + + [TestMethod] + public void Test_85_14() + { + } + + [TestMethod] + public void Test_85_15() + { + } + + [TestMethod] + public void Test_85_16() + { + } + + [TestMethod] + public void Test_85_17() + { + } + + [TestMethod] + public void Test_85_18() + { + } + + [TestMethod] + public void Test_85_19() + { + } + + [TestMethod] + public void Test_85_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_86 + { + #region PassingTests + [TestMethod] + public void Test_86_01() + { + } + + [TestMethod] + public void Test_86_02() + { + } + + [TestMethod] + public void Test_86_03() + { + } + + [TestMethod] + public void Test_86_04() + { + } + + [TestMethod] + public void Test_86_05() + { + } + + [TestMethod] + public void Test_86_06() + { + } + + [TestMethod] + public void Test_86_07() + { + } + + [TestMethod] + public void Test_86_08() + { + } + + [TestMethod] + public void Test_86_09() + { + } + + [TestMethod] + public void Test_86_10() + { + } + + [TestMethod] + public void Test_86_11() + { + } + + [TestMethod] + public void Test_86_12() + { + } + + [TestMethod] + public void Test_86_13() + { + } + + [TestMethod] + public void Test_86_14() + { + } + + [TestMethod] + public void Test_86_15() + { + } + + [TestMethod] + public void Test_86_16() + { + } + + [TestMethod] + public void Test_86_17() + { + } + + [TestMethod] + public void Test_86_18() + { + } + + [TestMethod] + public void Test_86_19() + { + } + + [TestMethod] + public void Test_86_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_87 + { + #region PassingTests + [TestMethod] + public void Test_87_01() + { + } + + [TestMethod] + public void Test_87_02() + { + } + + [TestMethod] + public void Test_87_03() + { + } + + [TestMethod] + public void Test_87_04() + { + } + + [TestMethod] + public void Test_87_05() + { + } + + [TestMethod] + public void Test_87_06() + { + } + + [TestMethod] + public void Test_87_07() + { + } + + [TestMethod] + public void Test_87_08() + { + } + + [TestMethod] + public void Test_87_09() + { + } + + [TestMethod] + public void Test_87_10() + { + } + + [TestMethod] + public void Test_87_11() + { + } + + [TestMethod] + public void Test_87_12() + { + } + + [TestMethod] + public void Test_87_13() + { + } + + [TestMethod] + public void Test_87_14() + { + } + + [TestMethod] + public void Test_87_15() + { + } + + [TestMethod] + public void Test_87_16() + { + } + + [TestMethod] + public void Test_87_17() + { + } + + [TestMethod] + public void Test_87_18() + { + } + + [TestMethod] + public void Test_87_19() + { + } + + [TestMethod] + public void Test_87_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_88 + { + #region PassingTests + [TestMethod] + public void Test_88_01() + { + } + + [TestMethod] + public void Test_88_02() + { + } + + [TestMethod] + public void Test_88_03() + { + } + + [TestMethod] + public void Test_88_04() + { + } + + [TestMethod] + public void Test_88_05() + { + } + + [TestMethod] + public void Test_88_06() + { + } + + [TestMethod] + public void Test_88_07() + { + } + + [TestMethod] + public void Test_88_08() + { + } + + [TestMethod] + public void Test_88_09() + { + } + + [TestMethod] + public void Test_88_10() + { + } + + [TestMethod] + public void Test_88_11() + { + } + + [TestMethod] + public void Test_88_12() + { + } + + [TestMethod] + public void Test_88_13() + { + } + + [TestMethod] + public void Test_88_14() + { + } + + [TestMethod] + public void Test_88_15() + { + } + + [TestMethod] + public void Test_88_16() + { + } + + [TestMethod] + public void Test_88_17() + { + } + + [TestMethod] + public void Test_88_18() + { + } + + [TestMethod] + public void Test_88_19() + { + } + + [TestMethod] + public void Test_88_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_89 + { + #region PassingTests + [TestMethod] + public void Test_89_01() + { + } + + [TestMethod] + public void Test_89_02() + { + } + + [TestMethod] + public void Test_89_03() + { + } + + [TestMethod] + public void Test_89_04() + { + } + + [TestMethod] + public void Test_89_05() + { + } + + [TestMethod] + public void Test_89_06() + { + } + + [TestMethod] + public void Test_89_07() + { + } + + [TestMethod] + public void Test_89_08() + { + } + + [TestMethod] + public void Test_89_09() + { + } + + [TestMethod] + public void Test_89_10() + { + } + + [TestMethod] + public void Test_89_11() + { + } + + [TestMethod] + public void Test_89_12() + { + } + + [TestMethod] + public void Test_89_13() + { + } + + [TestMethod] + public void Test_89_14() + { + } + + [TestMethod] + public void Test_89_15() + { + } + + [TestMethod] + public void Test_89_16() + { + } + + [TestMethod] + public void Test_89_17() + { + } + + [TestMethod] + public void Test_89_18() + { + } + + [TestMethod] + public void Test_89_19() + { + } + + [TestMethod] + public void Test_89_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_90 + { + #region PassingTests + [TestMethod] + public void Test_90_01() + { + } + + [TestMethod] + public void Test_90_02() + { + } + + [TestMethod] + public void Test_90_03() + { + } + + [TestMethod] + public void Test_90_04() + { + } + + [TestMethod] + public void Test_90_05() + { + } + + [TestMethod] + public void Test_90_06() + { + } + + [TestMethod] + public void Test_90_07() + { + } + + [TestMethod] + public void Test_90_08() + { + } + + [TestMethod] + public void Test_90_09() + { + } + + [TestMethod] + public void Test_90_10() + { + } + + [TestMethod] + public void Test_90_11() + { + } + + [TestMethod] + public void Test_90_12() + { + } + + [TestMethod] + public void Test_90_13() + { + } + + [TestMethod] + public void Test_90_14() + { + } + + [TestMethod] + public void Test_90_15() + { + } + + [TestMethod] + public void Test_90_16() + { + } + + [TestMethod] + public void Test_90_17() + { + } + + [TestMethod] + public void Test_90_18() + { + } + + [TestMethod] + public void Test_90_19() + { + } + + [TestMethod] + public void Test_90_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_91 + { + #region PassingTests + [TestMethod] + public void Test_91_01() + { + } + + [TestMethod] + public void Test_91_02() + { + } + + [TestMethod] + public void Test_91_03() + { + } + + [TestMethod] + public void Test_91_04() + { + } + + [TestMethod] + public void Test_91_05() + { + } + + [TestMethod] + public void Test_91_06() + { + } + + [TestMethod] + public void Test_91_07() + { + } + + [TestMethod] + public void Test_91_08() + { + } + + [TestMethod] + public void Test_91_09() + { + } + + [TestMethod] + public void Test_91_10() + { + } + + [TestMethod] + public void Test_91_11() + { + } + + [TestMethod] + public void Test_91_12() + { + } + + [TestMethod] + public void Test_91_13() + { + } + + [TestMethod] + public void Test_91_14() + { + } + + [TestMethod] + public void Test_91_15() + { + } + + [TestMethod] + public void Test_91_16() + { + } + + [TestMethod] + public void Test_91_17() + { + } + + [TestMethod] + public void Test_91_18() + { + } + + [TestMethod] + public void Test_91_19() + { + } + + [TestMethod] + public void Test_91_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_92 + { + #region PassingTests + [TestMethod] + public void Test_92_01() + { + } + + [TestMethod] + public void Test_92_02() + { + } + + [TestMethod] + public void Test_92_03() + { + } + + [TestMethod] + public void Test_92_04() + { + } + + [TestMethod] + public void Test_92_05() + { + } + + [TestMethod] + public void Test_92_06() + { + } + + [TestMethod] + public void Test_92_07() + { + } + + [TestMethod] + public void Test_92_08() + { + } + + [TestMethod] + public void Test_92_09() + { + } + + [TestMethod] + public void Test_92_10() + { + } + + [TestMethod] + public void Test_92_11() + { + } + + [TestMethod] + public void Test_92_12() + { + } + + [TestMethod] + public void Test_92_13() + { + } + + [TestMethod] + public void Test_92_14() + { + } + + [TestMethod] + public void Test_92_15() + { + } + + [TestMethod] + public void Test_92_16() + { + } + + [TestMethod] + public void Test_92_17() + { + } + + [TestMethod] + public void Test_92_18() + { + } + + [TestMethod] + public void Test_92_19() + { + } + + [TestMethod] + public void Test_92_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_93 + { + #region PassingTests + [TestMethod] + public void Test_93_01() + { + } + + [TestMethod] + public void Test_93_02() + { + } + + [TestMethod] + public void Test_93_03() + { + } + + [TestMethod] + public void Test_93_04() + { + } + + [TestMethod] + public void Test_93_05() + { + } + + [TestMethod] + public void Test_93_06() + { + } + + [TestMethod] + public void Test_93_07() + { + } + + [TestMethod] + public void Test_93_08() + { + } + + [TestMethod] + public void Test_93_09() + { + } + + [TestMethod] + public void Test_93_10() + { + } + + [TestMethod] + public void Test_93_11() + { + } + + [TestMethod] + public void Test_93_12() + { + } + + [TestMethod] + public void Test_93_13() + { + } + + [TestMethod] + public void Test_93_14() + { + } + + [TestMethod] + public void Test_93_15() + { + } + + [TestMethod] + public void Test_93_16() + { + } + + [TestMethod] + public void Test_93_17() + { + } + + [TestMethod] + public void Test_93_18() + { + } + + [TestMethod] + public void Test_93_19() + { + } + + [TestMethod] + public void Test_93_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_94 + { + #region PassingTests + [TestMethod] + public void Test_94_01() + { + } + + [TestMethod] + public void Test_94_02() + { + } + + [TestMethod] + public void Test_94_03() + { + } + + [TestMethod] + public void Test_94_04() + { + } + + [TestMethod] + public void Test_94_05() + { + } + + [TestMethod] + public void Test_94_06() + { + } + + [TestMethod] + public void Test_94_07() + { + } + + [TestMethod] + public void Test_94_08() + { + } + + [TestMethod] + public void Test_94_09() + { + } + + [TestMethod] + public void Test_94_10() + { + } + + [TestMethod] + public void Test_94_11() + { + } + + [TestMethod] + public void Test_94_12() + { + } + + [TestMethod] + public void Test_94_13() + { + } + + [TestMethod] + public void Test_94_14() + { + } + + [TestMethod] + public void Test_94_15() + { + } + + [TestMethod] + public void Test_94_16() + { + } + + [TestMethod] + public void Test_94_17() + { + } + + [TestMethod] + public void Test_94_18() + { + } + + [TestMethod] + public void Test_94_19() + { + } + + [TestMethod] + public void Test_94_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_95 + { + #region PassingTests + [TestMethod] + public void Test_95_01() + { + } + + [TestMethod] + public void Test_95_02() + { + } + + [TestMethod] + public void Test_95_03() + { + } + + [TestMethod] + public void Test_95_04() + { + } + + [TestMethod] + public void Test_95_05() + { + } + + [TestMethod] + public void Test_95_06() + { + } + + [TestMethod] + public void Test_95_07() + { + } + + [TestMethod] + public void Test_95_08() + { + } + + [TestMethod] + public void Test_95_09() + { + } + + [TestMethod] + public void Test_95_10() + { + } + + [TestMethod] + public void Test_95_11() + { + } + + [TestMethod] + public void Test_95_12() + { + } + + [TestMethod] + public void Test_95_13() + { + } + + [TestMethod] + public void Test_95_14() + { + } + + [TestMethod] + public void Test_95_15() + { + } + + [TestMethod] + public void Test_95_16() + { + } + + [TestMethod] + public void Test_95_17() + { + } + + [TestMethod] + public void Test_95_18() + { + } + + [TestMethod] + public void Test_95_19() + { + } + + [TestMethod] + public void Test_95_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_96 + { + #region PassingTests + [TestMethod] + public void Test_96_01() + { + } + + [TestMethod] + public void Test_96_02() + { + } + + [TestMethod] + public void Test_96_03() + { + } + + [TestMethod] + public void Test_96_04() + { + } + + [TestMethod] + public void Test_96_05() + { + } + + [TestMethod] + public void Test_96_06() + { + } + + [TestMethod] + public void Test_96_07() + { + } + + [TestMethod] + public void Test_96_08() + { + } + + [TestMethod] + public void Test_96_09() + { + } + + [TestMethod] + public void Test_96_10() + { + } + + [TestMethod] + public void Test_96_11() + { + } + + [TestMethod] + public void Test_96_12() + { + } + + [TestMethod] + public void Test_96_13() + { + } + + [TestMethod] + public void Test_96_14() + { + } + + [TestMethod] + public void Test_96_15() + { + } + + [TestMethod] + public void Test_96_16() + { + } + + [TestMethod] + public void Test_96_17() + { + } + + [TestMethod] + public void Test_96_18() + { + } + + [TestMethod] + public void Test_96_19() + { + } + + [TestMethod] + public void Test_96_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_97 + { + #region PassingTests + [TestMethod] + public void Test_97_01() + { + } + + [TestMethod] + public void Test_97_02() + { + } + + [TestMethod] + public void Test_97_03() + { + } + + [TestMethod] + public void Test_97_04() + { + } + + [TestMethod] + public void Test_97_05() + { + } + + [TestMethod] + public void Test_97_06() + { + } + + [TestMethod] + public void Test_97_07() + { + } + + [TestMethod] + public void Test_97_08() + { + } + + [TestMethod] + public void Test_97_09() + { + } + + [TestMethod] + public void Test_97_10() + { + } + + [TestMethod] + public void Test_97_11() + { + } + + [TestMethod] + public void Test_97_12() + { + } + + [TestMethod] + public void Test_97_13() + { + } + + [TestMethod] + public void Test_97_14() + { + } + + [TestMethod] + public void Test_97_15() + { + } + + [TestMethod] + public void Test_97_16() + { + } + + [TestMethod] + public void Test_97_17() + { + } + + [TestMethod] + public void Test_97_18() + { + } + + [TestMethod] + public void Test_97_19() + { + } + + [TestMethod] + public void Test_97_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_98 + { + #region PassingTests + [TestMethod] + public void Test_98_01() + { + } + + [TestMethod] + public void Test_98_02() + { + } + + [TestMethod] + public void Test_98_03() + { + } + + [TestMethod] + public void Test_98_04() + { + } + + [TestMethod] + public void Test_98_05() + { + } + + [TestMethod] + public void Test_98_06() + { + } + + [TestMethod] + public void Test_98_07() + { + } + + [TestMethod] + public void Test_98_08() + { + } + + [TestMethod] + public void Test_98_09() + { + } + + [TestMethod] + public void Test_98_10() + { + } + + [TestMethod] + public void Test_98_11() + { + } + + [TestMethod] + public void Test_98_12() + { + } + + [TestMethod] + public void Test_98_13() + { + } + + [TestMethod] + public void Test_98_14() + { + } + + [TestMethod] + public void Test_98_15() + { + } + + [TestMethod] + public void Test_98_16() + { + } + + [TestMethod] + public void Test_98_17() + { + } + + [TestMethod] + public void Test_98_18() + { + } + + [TestMethod] + public void Test_98_19() + { + } + + [TestMethod] + public void Test_98_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_99 + { + #region PassingTests + [TestMethod] + public void Test_99_01() + { + } + + [TestMethod] + public void Test_99_02() + { + } + + [TestMethod] + public void Test_99_03() + { + } + + [TestMethod] + public void Test_99_04() + { + } + + [TestMethod] + public void Test_99_05() + { + } + + [TestMethod] + public void Test_99_06() + { + } + + [TestMethod] + public void Test_99_07() + { + } + + [TestMethod] + public void Test_99_08() + { + } + + [TestMethod] + public void Test_99_09() + { + } + + [TestMethod] + public void Test_99_10() + { + } + + [TestMethod] + public void Test_99_11() + { + } + + [TestMethod] + public void Test_99_12() + { + } + + [TestMethod] + public void Test_99_13() + { + } + + [TestMethod] + public void Test_99_14() + { + } + + [TestMethod] + public void Test_99_15() + { + } + + [TestMethod] + public void Test_99_16() + { + } + + [TestMethod] + public void Test_99_17() + { + } + + [TestMethod] + public void Test_99_18() + { + } + + [TestMethod] + public void Test_99_19() + { + } + + [TestMethod] + public void Test_99_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_100 + { + #region PassingTests + [TestMethod] + public void Test_100_01() + { + } + + [TestMethod] + public void Test_100_02() + { + } + + [TestMethod] + public void Test_100_03() + { + } + + [TestMethod] + public void Test_100_04() + { + } + + [TestMethod] + public void Test_100_05() + { + } + + [TestMethod] + public void Test_100_06() + { + } + + [TestMethod] + public void Test_100_07() + { + } + + [TestMethod] + public void Test_100_08() + { + } + + [TestMethod] + public void Test_100_09() + { + } + + [TestMethod] + public void Test_100_10() + { + } + + [TestMethod] + public void Test_100_11() + { + } + + [TestMethod] + public void Test_100_12() + { + } + + [TestMethod] + public void Test_100_13() + { + } + + [TestMethod] + public void Test_100_14() + { + } + + [TestMethod] + public void Test_100_15() + { + } + + [TestMethod] + public void Test_100_16() + { + } + + [TestMethod] + public void Test_100_17() + { + } + + [TestMethod] + public void Test_100_18() + { + } + + [TestMethod] + public void Test_100_19() + { + } + + [TestMethod] + public void Test_100_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_101 + { + #region PassingTests + [TestMethod] + public void Test_101_01() + { + } + + [TestMethod] + public void Test_101_02() + { + } + + [TestMethod] + public void Test_101_03() + { + } + + [TestMethod] + public void Test_101_04() + { + } + + [TestMethod] + public void Test_101_05() + { + } + + [TestMethod] + public void Test_101_06() + { + } + + [TestMethod] + public void Test_101_07() + { + } + + [TestMethod] + public void Test_101_08() + { + } + + [TestMethod] + public void Test_101_09() + { + } + + [TestMethod] + public void Test_101_10() + { + } + + [TestMethod] + public void Test_101_11() + { + } + + [TestMethod] + public void Test_101_12() + { + } + + [TestMethod] + public void Test_101_13() + { + } + + [TestMethod] + public void Test_101_14() + { + } + + [TestMethod] + public void Test_101_15() + { + } + + [TestMethod] + public void Test_101_16() + { + } + + [TestMethod] + public void Test_101_17() + { + } + + [TestMethod] + public void Test_101_18() + { + } + + [TestMethod] + public void Test_101_19() + { + } + + [TestMethod] + public void Test_101_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_102 + { + #region PassingTests + [TestMethod] + public void Test_102_01() + { + } + + [TestMethod] + public void Test_102_02() + { + } + + [TestMethod] + public void Test_102_03() + { + } + + [TestMethod] + public void Test_102_04() + { + } + + [TestMethod] + public void Test_102_05() + { + } + + [TestMethod] + public void Test_102_06() + { + } + + [TestMethod] + public void Test_102_07() + { + } + + [TestMethod] + public void Test_102_08() + { + } + + [TestMethod] + public void Test_102_09() + { + } + + [TestMethod] + public void Test_102_10() + { + } + + [TestMethod] + public void Test_102_11() + { + } + + [TestMethod] + public void Test_102_12() + { + } + + [TestMethod] + public void Test_102_13() + { + } + + [TestMethod] + public void Test_102_14() + { + } + + [TestMethod] + public void Test_102_15() + { + } + + [TestMethod] + public void Test_102_16() + { + } + + [TestMethod] + public void Test_102_17() + { + } + + [TestMethod] + public void Test_102_18() + { + } + + [TestMethod] + public void Test_102_19() + { + } + + [TestMethod] + public void Test_102_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_103 + { + #region PassingTests + [TestMethod] + public void Test_103_01() + { + } + + [TestMethod] + public void Test_103_02() + { + } + + [TestMethod] + public void Test_103_03() + { + } + + [TestMethod] + public void Test_103_04() + { + } + + [TestMethod] + public void Test_103_05() + { + } + + [TestMethod] + public void Test_103_06() + { + } + + [TestMethod] + public void Test_103_07() + { + } + + [TestMethod] + public void Test_103_08() + { + } + + [TestMethod] + public void Test_103_09() + { + } + + [TestMethod] + public void Test_103_10() + { + } + + [TestMethod] + public void Test_103_11() + { + } + + [TestMethod] + public void Test_103_12() + { + } + + [TestMethod] + public void Test_103_13() + { + } + + [TestMethod] + public void Test_103_14() + { + } + + [TestMethod] + public void Test_103_15() + { + } + + [TestMethod] + public void Test_103_16() + { + } + + [TestMethod] + public void Test_103_17() + { + } + + [TestMethod] + public void Test_103_18() + { + } + + [TestMethod] + public void Test_103_19() + { + } + + [TestMethod] + public void Test_103_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_104 + { + #region PassingTests + [TestMethod] + public void Test_104_01() + { + } + + [TestMethod] + public void Test_104_02() + { + } + + [TestMethod] + public void Test_104_03() + { + } + + [TestMethod] + public void Test_104_04() + { + } + + [TestMethod] + public void Test_104_05() + { + } + + [TestMethod] + public void Test_104_06() + { + } + + [TestMethod] + public void Test_104_07() + { + } + + [TestMethod] + public void Test_104_08() + { + } + + [TestMethod] + public void Test_104_09() + { + } + + [TestMethod] + public void Test_104_10() + { + } + + [TestMethod] + public void Test_104_11() + { + } + + [TestMethod] + public void Test_104_12() + { + } + + [TestMethod] + public void Test_104_13() + { + } + + [TestMethod] + public void Test_104_14() + { + } + + [TestMethod] + public void Test_104_15() + { + } + + [TestMethod] + public void Test_104_16() + { + } + + [TestMethod] + public void Test_104_17() + { + } + + [TestMethod] + public void Test_104_18() + { + } + + [TestMethod] + public void Test_104_19() + { + } + + [TestMethod] + public void Test_104_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_105 + { + #region PassingTests + [TestMethod] + public void Test_105_01() + { + } + + [TestMethod] + public void Test_105_02() + { + } + + [TestMethod] + public void Test_105_03() + { + } + + [TestMethod] + public void Test_105_04() + { + } + + [TestMethod] + public void Test_105_05() + { + } + + [TestMethod] + public void Test_105_06() + { + } + + [TestMethod] + public void Test_105_07() + { + } + + [TestMethod] + public void Test_105_08() + { + } + + [TestMethod] + public void Test_105_09() + { + } + + [TestMethod] + public void Test_105_10() + { + } + + [TestMethod] + public void Test_105_11() + { + } + + [TestMethod] + public void Test_105_12() + { + } + + [TestMethod] + public void Test_105_13() + { + } + + [TestMethod] + public void Test_105_14() + { + } + + [TestMethod] + public void Test_105_15() + { + } + + [TestMethod] + public void Test_105_16() + { + } + + [TestMethod] + public void Test_105_17() + { + } + + [TestMethod] + public void Test_105_18() + { + } + + [TestMethod] + public void Test_105_19() + { + } + + [TestMethod] + public void Test_105_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_106 + { + #region PassingTests + [TestMethod] + public void Test_106_01() + { + } + + [TestMethod] + public void Test_106_02() + { + } + + [TestMethod] + public void Test_106_03() + { + } + + [TestMethod] + public void Test_106_04() + { + } + + [TestMethod] + public void Test_106_05() + { + } + + [TestMethod] + public void Test_106_06() + { + } + + [TestMethod] + public void Test_106_07() + { + } + + [TestMethod] + public void Test_106_08() + { + } + + [TestMethod] + public void Test_106_09() + { + } + + [TestMethod] + public void Test_106_10() + { + } + + [TestMethod] + public void Test_106_11() + { + } + + [TestMethod] + public void Test_106_12() + { + } + + [TestMethod] + public void Test_106_13() + { + } + + [TestMethod] + public void Test_106_14() + { + } + + [TestMethod] + public void Test_106_15() + { + } + + [TestMethod] + public void Test_106_16() + { + } + + [TestMethod] + public void Test_106_17() + { + } + + [TestMethod] + public void Test_106_18() + { + } + + [TestMethod] + public void Test_106_19() + { + } + + [TestMethod] + public void Test_106_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_107 + { + #region PassingTests + [TestMethod] + public void Test_107_01() + { + } + + [TestMethod] + public void Test_107_02() + { + } + + [TestMethod] + public void Test_107_03() + { + } + + [TestMethod] + public void Test_107_04() + { + } + + [TestMethod] + public void Test_107_05() + { + } + + [TestMethod] + public void Test_107_06() + { + } + + [TestMethod] + public void Test_107_07() + { + } + + [TestMethod] + public void Test_107_08() + { + } + + [TestMethod] + public void Test_107_09() + { + } + + [TestMethod] + public void Test_107_10() + { + } + + [TestMethod] + public void Test_107_11() + { + } + + [TestMethod] + public void Test_107_12() + { + } + + [TestMethod] + public void Test_107_13() + { + } + + [TestMethod] + public void Test_107_14() + { + } + + [TestMethod] + public void Test_107_15() + { + } + + [TestMethod] + public void Test_107_16() + { + } + + [TestMethod] + public void Test_107_17() + { + } + + [TestMethod] + public void Test_107_18() + { + } + + [TestMethod] + public void Test_107_19() + { + } + + [TestMethod] + public void Test_107_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_108 + { + #region PassingTests + [TestMethod] + public void Test_108_01() + { + } + + [TestMethod] + public void Test_108_02() + { + } + + [TestMethod] + public void Test_108_03() + { + } + + [TestMethod] + public void Test_108_04() + { + } + + [TestMethod] + public void Test_108_05() + { + } + + [TestMethod] + public void Test_108_06() + { + } + + [TestMethod] + public void Test_108_07() + { + } + + [TestMethod] + public void Test_108_08() + { + } + + [TestMethod] + public void Test_108_09() + { + } + + [TestMethod] + public void Test_108_10() + { + } + + [TestMethod] + public void Test_108_11() + { + } + + [TestMethod] + public void Test_108_12() + { + } + + [TestMethod] + public void Test_108_13() + { + } + + [TestMethod] + public void Test_108_14() + { + } + + [TestMethod] + public void Test_108_15() + { + } + + [TestMethod] + public void Test_108_16() + { + } + + [TestMethod] + public void Test_108_17() + { + } + + [TestMethod] + public void Test_108_18() + { + } + + [TestMethod] + public void Test_108_19() + { + } + + [TestMethod] + public void Test_108_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_109 + { + #region PassingTests + [TestMethod] + public void Test_109_01() + { + } + + [TestMethod] + public void Test_109_02() + { + } + + [TestMethod] + public void Test_109_03() + { + } + + [TestMethod] + public void Test_109_04() + { + } + + [TestMethod] + public void Test_109_05() + { + } + + [TestMethod] + public void Test_109_06() + { + } + + [TestMethod] + public void Test_109_07() + { + } + + [TestMethod] + public void Test_109_08() + { + } + + [TestMethod] + public void Test_109_09() + { + } + + [TestMethod] + public void Test_109_10() + { + } + + [TestMethod] + public void Test_109_11() + { + } + + [TestMethod] + public void Test_109_12() + { + } + + [TestMethod] + public void Test_109_13() + { + } + + [TestMethod] + public void Test_109_14() + { + } + + [TestMethod] + public void Test_109_15() + { + } + + [TestMethod] + public void Test_109_16() + { + } + + [TestMethod] + public void Test_109_17() + { + } + + [TestMethod] + public void Test_109_18() + { + } + + [TestMethod] + public void Test_109_19() + { + } + + [TestMethod] + public void Test_109_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_110 + { + #region PassingTests + [TestMethod] + public void Test_110_01() + { + } + + [TestMethod] + public void Test_110_02() + { + } + + [TestMethod] + public void Test_110_03() + { + } + + [TestMethod] + public void Test_110_04() + { + } + + [TestMethod] + public void Test_110_05() + { + } + + [TestMethod] + public void Test_110_06() + { + } + + [TestMethod] + public void Test_110_07() + { + } + + [TestMethod] + public void Test_110_08() + { + } + + [TestMethod] + public void Test_110_09() + { + } + + [TestMethod] + public void Test_110_10() + { + } + + [TestMethod] + public void Test_110_11() + { + } + + [TestMethod] + public void Test_110_12() + { + } + + [TestMethod] + public void Test_110_13() + { + } + + [TestMethod] + public void Test_110_14() + { + } + + [TestMethod] + public void Test_110_15() + { + } + + [TestMethod] + public void Test_110_16() + { + } + + [TestMethod] + public void Test_110_17() + { + } + + [TestMethod] + public void Test_110_18() + { + } + + [TestMethod] + public void Test_110_19() + { + } + + [TestMethod] + public void Test_110_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_111 + { + #region PassingTests + [TestMethod] + public void Test_111_01() + { + } + + [TestMethod] + public void Test_111_02() + { + } + + [TestMethod] + public void Test_111_03() + { + } + + [TestMethod] + public void Test_111_04() + { + } + + [TestMethod] + public void Test_111_05() + { + } + + [TestMethod] + public void Test_111_06() + { + } + + [TestMethod] + public void Test_111_07() + { + } + + [TestMethod] + public void Test_111_08() + { + } + + [TestMethod] + public void Test_111_09() + { + } + + [TestMethod] + public void Test_111_10() + { + } + + [TestMethod] + public void Test_111_11() + { + } + + [TestMethod] + public void Test_111_12() + { + } + + [TestMethod] + public void Test_111_13() + { + } + + [TestMethod] + public void Test_111_14() + { + } + + [TestMethod] + public void Test_111_15() + { + } + + [TestMethod] + public void Test_111_16() + { + } + + [TestMethod] + public void Test_111_17() + { + } + + [TestMethod] + public void Test_111_18() + { + } + + [TestMethod] + public void Test_111_19() + { + } + + [TestMethod] + public void Test_111_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_112 + { + #region PassingTests + [TestMethod] + public void Test_112_01() + { + } + + [TestMethod] + public void Test_112_02() + { + } + + [TestMethod] + public void Test_112_03() + { + } + + [TestMethod] + public void Test_112_04() + { + } + + [TestMethod] + public void Test_112_05() + { + } + + [TestMethod] + public void Test_112_06() + { + } + + [TestMethod] + public void Test_112_07() + { + } + + [TestMethod] + public void Test_112_08() + { + } + + [TestMethod] + public void Test_112_09() + { + } + + [TestMethod] + public void Test_112_10() + { + } + + [TestMethod] + public void Test_112_11() + { + } + + [TestMethod] + public void Test_112_12() + { + } + + [TestMethod] + public void Test_112_13() + { + } + + [TestMethod] + public void Test_112_14() + { + } + + [TestMethod] + public void Test_112_15() + { + } + + [TestMethod] + public void Test_112_16() + { + } + + [TestMethod] + public void Test_112_17() + { + } + + [TestMethod] + public void Test_112_18() + { + } + + [TestMethod] + public void Test_112_19() + { + } + + [TestMethod] + public void Test_112_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_113 + { + #region PassingTests + [TestMethod] + public void Test_113_01() + { + } + + [TestMethod] + public void Test_113_02() + { + } + + [TestMethod] + public void Test_113_03() + { + } + + [TestMethod] + public void Test_113_04() + { + } + + [TestMethod] + public void Test_113_05() + { + } + + [TestMethod] + public void Test_113_06() + { + } + + [TestMethod] + public void Test_113_07() + { + } + + [TestMethod] + public void Test_113_08() + { + } + + [TestMethod] + public void Test_113_09() + { + } + + [TestMethod] + public void Test_113_10() + { + } + + [TestMethod] + public void Test_113_11() + { + } + + [TestMethod] + public void Test_113_12() + { + } + + [TestMethod] + public void Test_113_13() + { + } + + [TestMethod] + public void Test_113_14() + { + } + + [TestMethod] + public void Test_113_15() + { + } + + [TestMethod] + public void Test_113_16() + { + } + + [TestMethod] + public void Test_113_17() + { + } + + [TestMethod] + public void Test_113_18() + { + } + + [TestMethod] + public void Test_113_19() + { + } + + [TestMethod] + public void Test_113_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_114 + { + #region PassingTests + [TestMethod] + public void Test_114_01() + { + } + + [TestMethod] + public void Test_114_02() + { + } + + [TestMethod] + public void Test_114_03() + { + } + + [TestMethod] + public void Test_114_04() + { + } + + [TestMethod] + public void Test_114_05() + { + } + + [TestMethod] + public void Test_114_06() + { + } + + [TestMethod] + public void Test_114_07() + { + } + + [TestMethod] + public void Test_114_08() + { + } + + [TestMethod] + public void Test_114_09() + { + } + + [TestMethod] + public void Test_114_10() + { + } + + [TestMethod] + public void Test_114_11() + { + } + + [TestMethod] + public void Test_114_12() + { + } + + [TestMethod] + public void Test_114_13() + { + } + + [TestMethod] + public void Test_114_14() + { + } + + [TestMethod] + public void Test_114_15() + { + } + + [TestMethod] + public void Test_114_16() + { + } + + [TestMethod] + public void Test_114_17() + { + } + + [TestMethod] + public void Test_114_18() + { + } + + [TestMethod] + public void Test_114_19() + { + } + + [TestMethod] + public void Test_114_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_115 + { + #region PassingTests + [TestMethod] + public void Test_115_01() + { + } + + [TestMethod] + public void Test_115_02() + { + } + + [TestMethod] + public void Test_115_03() + { + } + + [TestMethod] + public void Test_115_04() + { + } + + [TestMethod] + public void Test_115_05() + { + } + + [TestMethod] + public void Test_115_06() + { + } + + [TestMethod] + public void Test_115_07() + { + } + + [TestMethod] + public void Test_115_08() + { + } + + [TestMethod] + public void Test_115_09() + { + } + + [TestMethod] + public void Test_115_10() + { + } + + [TestMethod] + public void Test_115_11() + { + } + + [TestMethod] + public void Test_115_12() + { + } + + [TestMethod] + public void Test_115_13() + { + } + + [TestMethod] + public void Test_115_14() + { + } + + [TestMethod] + public void Test_115_15() + { + } + + [TestMethod] + public void Test_115_16() + { + } + + [TestMethod] + public void Test_115_17() + { + } + + [TestMethod] + public void Test_115_18() + { + } + + [TestMethod] + public void Test_115_19() + { + } + + [TestMethod] + public void Test_115_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_116 + { + #region PassingTests + [TestMethod] + public void Test_116_01() + { + } + + [TestMethod] + public void Test_116_02() + { + } + + [TestMethod] + public void Test_116_03() + { + } + + [TestMethod] + public void Test_116_04() + { + } + + [TestMethod] + public void Test_116_05() + { + } + + [TestMethod] + public void Test_116_06() + { + } + + [TestMethod] + public void Test_116_07() + { + } + + [TestMethod] + public void Test_116_08() + { + } + + [TestMethod] + public void Test_116_09() + { + } + + [TestMethod] + public void Test_116_10() + { + } + + [TestMethod] + public void Test_116_11() + { + } + + [TestMethod] + public void Test_116_12() + { + } + + [TestMethod] + public void Test_116_13() + { + } + + [TestMethod] + public void Test_116_14() + { + } + + [TestMethod] + public void Test_116_15() + { + } + + [TestMethod] + public void Test_116_16() + { + } + + [TestMethod] + public void Test_116_17() + { + } + + [TestMethod] + public void Test_116_18() + { + } + + [TestMethod] + public void Test_116_19() + { + } + + [TestMethod] + public void Test_116_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_117 + { + #region PassingTests + [TestMethod] + public void Test_117_01() + { + } + + [TestMethod] + public void Test_117_02() + { + } + + [TestMethod] + public void Test_117_03() + { + } + + [TestMethod] + public void Test_117_04() + { + } + + [TestMethod] + public void Test_117_05() + { + } + + [TestMethod] + public void Test_117_06() + { + } + + [TestMethod] + public void Test_117_07() + { + } + + [TestMethod] + public void Test_117_08() + { + } + + [TestMethod] + public void Test_117_09() + { + } + + [TestMethod] + public void Test_117_10() + { + } + + [TestMethod] + public void Test_117_11() + { + } + + [TestMethod] + public void Test_117_12() + { + } + + [TestMethod] + public void Test_117_13() + { + } + + [TestMethod] + public void Test_117_14() + { + } + + [TestMethod] + public void Test_117_15() + { + } + + [TestMethod] + public void Test_117_16() + { + } + + [TestMethod] + public void Test_117_17() + { + } + + [TestMethod] + public void Test_117_18() + { + } + + [TestMethod] + public void Test_117_19() + { + } + + [TestMethod] + public void Test_117_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_118 + { + #region PassingTests + [TestMethod] + public void Test_118_01() + { + } + + [TestMethod] + public void Test_118_02() + { + } + + [TestMethod] + public void Test_118_03() + { + } + + [TestMethod] + public void Test_118_04() + { + } + + [TestMethod] + public void Test_118_05() + { + } + + [TestMethod] + public void Test_118_06() + { + } + + [TestMethod] + public void Test_118_07() + { + } + + [TestMethod] + public void Test_118_08() + { + } + + [TestMethod] + public void Test_118_09() + { + } + + [TestMethod] + public void Test_118_10() + { + } + + [TestMethod] + public void Test_118_11() + { + } + + [TestMethod] + public void Test_118_12() + { + } + + [TestMethod] + public void Test_118_13() + { + } + + [TestMethod] + public void Test_118_14() + { + } + + [TestMethod] + public void Test_118_15() + { + } + + [TestMethod] + public void Test_118_16() + { + } + + [TestMethod] + public void Test_118_17() + { + } + + [TestMethod] + public void Test_118_18() + { + } + + [TestMethod] + public void Test_118_19() + { + } + + [TestMethod] + public void Test_118_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_119 + { + #region PassingTests + [TestMethod] + public void Test_119_01() + { + } + + [TestMethod] + public void Test_119_02() + { + } + + [TestMethod] + public void Test_119_03() + { + } + + [TestMethod] + public void Test_119_04() + { + } + + [TestMethod] + public void Test_119_05() + { + } + + [TestMethod] + public void Test_119_06() + { + } + + [TestMethod] + public void Test_119_07() + { + } + + [TestMethod] + public void Test_119_08() + { + } + + [TestMethod] + public void Test_119_09() + { + } + + [TestMethod] + public void Test_119_10() + { + } + + [TestMethod] + public void Test_119_11() + { + } + + [TestMethod] + public void Test_119_12() + { + } + + [TestMethod] + public void Test_119_13() + { + } + + [TestMethod] + public void Test_119_14() + { + } + + [TestMethod] + public void Test_119_15() + { + } + + [TestMethod] + public void Test_119_16() + { + } + + [TestMethod] + public void Test_119_17() + { + } + + [TestMethod] + public void Test_119_18() + { + } + + [TestMethod] + public void Test_119_19() + { + } + + [TestMethod] + public void Test_119_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_120 + { + #region PassingTests + [TestMethod] + public void Test_120_01() + { + } + + [TestMethod] + public void Test_120_02() + { + } + + [TestMethod] + public void Test_120_03() + { + } + + [TestMethod] + public void Test_120_04() + { + } + + [TestMethod] + public void Test_120_05() + { + } + + [TestMethod] + public void Test_120_06() + { + } + + [TestMethod] + public void Test_120_07() + { + } + + [TestMethod] + public void Test_120_08() + { + } + + [TestMethod] + public void Test_120_09() + { + } + + [TestMethod] + public void Test_120_10() + { + } + + [TestMethod] + public void Test_120_11() + { + } + + [TestMethod] + public void Test_120_12() + { + } + + [TestMethod] + public void Test_120_13() + { + } + + [TestMethod] + public void Test_120_14() + { + } + + [TestMethod] + public void Test_120_15() + { + } + + [TestMethod] + public void Test_120_16() + { + } + + [TestMethod] + public void Test_120_17() + { + } + + [TestMethod] + public void Test_120_18() + { + } + + [TestMethod] + public void Test_120_19() + { + } + + [TestMethod] + public void Test_120_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_121 + { + #region PassingTests + [TestMethod] + public void Test_121_01() + { + } + + [TestMethod] + public void Test_121_02() + { + } + + [TestMethod] + public void Test_121_03() + { + } + + [TestMethod] + public void Test_121_04() + { + } + + [TestMethod] + public void Test_121_05() + { + } + + [TestMethod] + public void Test_121_06() + { + } + + [TestMethod] + public void Test_121_07() + { + } + + [TestMethod] + public void Test_121_08() + { + } + + [TestMethod] + public void Test_121_09() + { + } + + [TestMethod] + public void Test_121_10() + { + } + + [TestMethod] + public void Test_121_11() + { + } + + [TestMethod] + public void Test_121_12() + { + } + + [TestMethod] + public void Test_121_13() + { + } + + [TestMethod] + public void Test_121_14() + { + } + + [TestMethod] + public void Test_121_15() + { + } + + [TestMethod] + public void Test_121_16() + { + } + + [TestMethod] + public void Test_121_17() + { + } + + [TestMethod] + public void Test_121_18() + { + } + + [TestMethod] + public void Test_121_19() + { + } + + [TestMethod] + public void Test_121_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_122 + { + #region PassingTests + [TestMethod] + public void Test_122_01() + { + } + + [TestMethod] + public void Test_122_02() + { + } + + [TestMethod] + public void Test_122_03() + { + } + + [TestMethod] + public void Test_122_04() + { + } + + [TestMethod] + public void Test_122_05() + { + } + + [TestMethod] + public void Test_122_06() + { + } + + [TestMethod] + public void Test_122_07() + { + } + + [TestMethod] + public void Test_122_08() + { + } + + [TestMethod] + public void Test_122_09() + { + } + + [TestMethod] + public void Test_122_10() + { + } + + [TestMethod] + public void Test_122_11() + { + } + + [TestMethod] + public void Test_122_12() + { + } + + [TestMethod] + public void Test_122_13() + { + } + + [TestMethod] + public void Test_122_14() + { + } + + [TestMethod] + public void Test_122_15() + { + } + + [TestMethod] + public void Test_122_16() + { + } + + [TestMethod] + public void Test_122_17() + { + } + + [TestMethod] + public void Test_122_18() + { + } + + [TestMethod] + public void Test_122_19() + { + } + + [TestMethod] + public void Test_122_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_123 + { + #region PassingTests + [TestMethod] + public void Test_123_01() + { + } + + [TestMethod] + public void Test_123_02() + { + } + + [TestMethod] + public void Test_123_03() + { + } + + [TestMethod] + public void Test_123_04() + { + } + + [TestMethod] + public void Test_123_05() + { + } + + [TestMethod] + public void Test_123_06() + { + } + + [TestMethod] + public void Test_123_07() + { + } + + [TestMethod] + public void Test_123_08() + { + } + + [TestMethod] + public void Test_123_09() + { + } + + [TestMethod] + public void Test_123_10() + { + } + + [TestMethod] + public void Test_123_11() + { + } + + [TestMethod] + public void Test_123_12() + { + } + + [TestMethod] + public void Test_123_13() + { + } + + [TestMethod] + public void Test_123_14() + { + } + + [TestMethod] + public void Test_123_15() + { + } + + [TestMethod] + public void Test_123_16() + { + } + + [TestMethod] + public void Test_123_17() + { + } + + [TestMethod] + public void Test_123_18() + { + } + + [TestMethod] + public void Test_123_19() + { + } + + [TestMethod] + public void Test_123_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_124 + { + #region PassingTests + [TestMethod] + public void Test_124_01() + { + } + + [TestMethod] + public void Test_124_02() + { + } + + [TestMethod] + public void Test_124_03() + { + } + + [TestMethod] + public void Test_124_04() + { + } + + [TestMethod] + public void Test_124_05() + { + } + + [TestMethod] + public void Test_124_06() + { + } + + [TestMethod] + public void Test_124_07() + { + } + + [TestMethod] + public void Test_124_08() + { + } + + [TestMethod] + public void Test_124_09() + { + } + + [TestMethod] + public void Test_124_10() + { + } + + [TestMethod] + public void Test_124_11() + { + } + + [TestMethod] + public void Test_124_12() + { + } + + [TestMethod] + public void Test_124_13() + { + } + + [TestMethod] + public void Test_124_14() + { + } + + [TestMethod] + public void Test_124_15() + { + } + + [TestMethod] + public void Test_124_16() + { + } + + [TestMethod] + public void Test_124_17() + { + } + + [TestMethod] + public void Test_124_18() + { + } + + [TestMethod] + public void Test_124_19() + { + } + + [TestMethod] + public void Test_124_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_125 + { + #region PassingTests + [TestMethod] + public void Test_125_01() + { + } + + [TestMethod] + public void Test_125_02() + { + } + + [TestMethod] + public void Test_125_03() + { + } + + [TestMethod] + public void Test_125_04() + { + } + + [TestMethod] + public void Test_125_05() + { + } + + [TestMethod] + public void Test_125_06() + { + } + + [TestMethod] + public void Test_125_07() + { + } + + [TestMethod] + public void Test_125_08() + { + } + + [TestMethod] + public void Test_125_09() + { + } + + [TestMethod] + public void Test_125_10() + { + } + + [TestMethod] + public void Test_125_11() + { + } + + [TestMethod] + public void Test_125_12() + { + } + + [TestMethod] + public void Test_125_13() + { + } + + [TestMethod] + public void Test_125_14() + { + } + + [TestMethod] + public void Test_125_15() + { + } + + [TestMethod] + public void Test_125_16() + { + } + + [TestMethod] + public void Test_125_17() + { + } + + [TestMethod] + public void Test_125_18() + { + } + + [TestMethod] + public void Test_125_19() + { + } + + [TestMethod] + public void Test_125_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_126 + { + #region PassingTests + [TestMethod] + public void Test_126_01() + { + } + + [TestMethod] + public void Test_126_02() + { + } + + [TestMethod] + public void Test_126_03() + { + } + + [TestMethod] + public void Test_126_04() + { + } + + [TestMethod] + public void Test_126_05() + { + } + + [TestMethod] + public void Test_126_06() + { + } + + [TestMethod] + public void Test_126_07() + { + } + + [TestMethod] + public void Test_126_08() + { + } + + [TestMethod] + public void Test_126_09() + { + } + + [TestMethod] + public void Test_126_10() + { + } + + [TestMethod] + public void Test_126_11() + { + } + + [TestMethod] + public void Test_126_12() + { + } + + [TestMethod] + public void Test_126_13() + { + } + + [TestMethod] + public void Test_126_14() + { + } + + [TestMethod] + public void Test_126_15() + { + } + + [TestMethod] + public void Test_126_16() + { + } + + [TestMethod] + public void Test_126_17() + { + } + + [TestMethod] + public void Test_126_18() + { + } + + [TestMethod] + public void Test_126_19() + { + } + + [TestMethod] + public void Test_126_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_127 + { + #region PassingTests + [TestMethod] + public void Test_127_01() + { + } + + [TestMethod] + public void Test_127_02() + { + } + + [TestMethod] + public void Test_127_03() + { + } + + [TestMethod] + public void Test_127_04() + { + } + + [TestMethod] + public void Test_127_05() + { + } + + [TestMethod] + public void Test_127_06() + { + } + + [TestMethod] + public void Test_127_07() + { + } + + [TestMethod] + public void Test_127_08() + { + } + + [TestMethod] + public void Test_127_09() + { + } + + [TestMethod] + public void Test_127_10() + { + } + + [TestMethod] + public void Test_127_11() + { + } + + [TestMethod] + public void Test_127_12() + { + } + + [TestMethod] + public void Test_127_13() + { + } + + [TestMethod] + public void Test_127_14() + { + } + + [TestMethod] + public void Test_127_15() + { + } + + [TestMethod] + public void Test_127_16() + { + } + + [TestMethod] + public void Test_127_17() + { + } + + [TestMethod] + public void Test_127_18() + { + } + + [TestMethod] + public void Test_127_19() + { + } + + [TestMethod] + public void Test_127_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_128 + { + #region PassingTests + [TestMethod] + public void Test_128_01() + { + } + + [TestMethod] + public void Test_128_02() + { + } + + [TestMethod] + public void Test_128_03() + { + } + + [TestMethod] + public void Test_128_04() + { + } + + [TestMethod] + public void Test_128_05() + { + } + + [TestMethod] + public void Test_128_06() + { + } + + [TestMethod] + public void Test_128_07() + { + } + + [TestMethod] + public void Test_128_08() + { + } + + [TestMethod] + public void Test_128_09() + { + } + + [TestMethod] + public void Test_128_10() + { + } + + [TestMethod] + public void Test_128_11() + { + } + + [TestMethod] + public void Test_128_12() + { + } + + [TestMethod] + public void Test_128_13() + { + } + + [TestMethod] + public void Test_128_14() + { + } + + [TestMethod] + public void Test_128_15() + { + } + + [TestMethod] + public void Test_128_16() + { + } + + [TestMethod] + public void Test_128_17() + { + } + + [TestMethod] + public void Test_128_18() + { + } + + [TestMethod] + public void Test_128_19() + { + } + + [TestMethod] + public void Test_128_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_129 + { + #region PassingTests + [TestMethod] + public void Test_129_01() + { + } + + [TestMethod] + public void Test_129_02() + { + } + + [TestMethod] + public void Test_129_03() + { + } + + [TestMethod] + public void Test_129_04() + { + } + + [TestMethod] + public void Test_129_05() + { + } + + [TestMethod] + public void Test_129_06() + { + } + + [TestMethod] + public void Test_129_07() + { + } + + [TestMethod] + public void Test_129_08() + { + } + + [TestMethod] + public void Test_129_09() + { + } + + [TestMethod] + public void Test_129_10() + { + } + + [TestMethod] + public void Test_129_11() + { + } + + [TestMethod] + public void Test_129_12() + { + } + + [TestMethod] + public void Test_129_13() + { + } + + [TestMethod] + public void Test_129_14() + { + } + + [TestMethod] + public void Test_129_15() + { + } + + [TestMethod] + public void Test_129_16() + { + } + + [TestMethod] + public void Test_129_17() + { + } + + [TestMethod] + public void Test_129_18() + { + } + + [TestMethod] + public void Test_129_19() + { + } + + [TestMethod] + public void Test_129_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_130 + { + #region PassingTests + [TestMethod] + public void Test_130_01() + { + } + + [TestMethod] + public void Test_130_02() + { + } + + [TestMethod] + public void Test_130_03() + { + } + + [TestMethod] + public void Test_130_04() + { + } + + [TestMethod] + public void Test_130_05() + { + } + + [TestMethod] + public void Test_130_06() + { + } + + [TestMethod] + public void Test_130_07() + { + } + + [TestMethod] + public void Test_130_08() + { + } + + [TestMethod] + public void Test_130_09() + { + } + + [TestMethod] + public void Test_130_10() + { + } + + [TestMethod] + public void Test_130_11() + { + } + + [TestMethod] + public void Test_130_12() + { + } + + [TestMethod] + public void Test_130_13() + { + } + + [TestMethod] + public void Test_130_14() + { + } + + [TestMethod] + public void Test_130_15() + { + } + + [TestMethod] + public void Test_130_16() + { + } + + [TestMethod] + public void Test_130_17() + { + } + + [TestMethod] + public void Test_130_18() + { + } + + [TestMethod] + public void Test_130_19() + { + } + + [TestMethod] + public void Test_130_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_131 + { + #region PassingTests + [TestMethod] + public void Test_131_01() + { + } + + [TestMethod] + public void Test_131_02() + { + } + + [TestMethod] + public void Test_131_03() + { + } + + [TestMethod] + public void Test_131_04() + { + } + + [TestMethod] + public void Test_131_05() + { + } + + [TestMethod] + public void Test_131_06() + { + } + + [TestMethod] + public void Test_131_07() + { + } + + [TestMethod] + public void Test_131_08() + { + } + + [TestMethod] + public void Test_131_09() + { + } + + [TestMethod] + public void Test_131_10() + { + } + + [TestMethod] + public void Test_131_11() + { + } + + [TestMethod] + public void Test_131_12() + { + } + + [TestMethod] + public void Test_131_13() + { + } + + [TestMethod] + public void Test_131_14() + { + } + + [TestMethod] + public void Test_131_15() + { + } + + [TestMethod] + public void Test_131_16() + { + } + + [TestMethod] + public void Test_131_17() + { + } + + [TestMethod] + public void Test_131_18() + { + } + + [TestMethod] + public void Test_131_19() + { + } + + [TestMethod] + public void Test_131_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_132 + { + #region PassingTests + [TestMethod] + public void Test_132_01() + { + } + + [TestMethod] + public void Test_132_02() + { + } + + [TestMethod] + public void Test_132_03() + { + } + + [TestMethod] + public void Test_132_04() + { + } + + [TestMethod] + public void Test_132_05() + { + } + + [TestMethod] + public void Test_132_06() + { + } + + [TestMethod] + public void Test_132_07() + { + } + + [TestMethod] + public void Test_132_08() + { + } + + [TestMethod] + public void Test_132_09() + { + } + + [TestMethod] + public void Test_132_10() + { + } + + [TestMethod] + public void Test_132_11() + { + } + + [TestMethod] + public void Test_132_12() + { + } + + [TestMethod] + public void Test_132_13() + { + } + + [TestMethod] + public void Test_132_14() + { + } + + [TestMethod] + public void Test_132_15() + { + } + + [TestMethod] + public void Test_132_16() + { + } + + [TestMethod] + public void Test_132_17() + { + } + + [TestMethod] + public void Test_132_18() + { + } + + [TestMethod] + public void Test_132_19() + { + } + + [TestMethod] + public void Test_132_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_133 + { + #region PassingTests + [TestMethod] + public void Test_133_01() + { + } + + [TestMethod] + public void Test_133_02() + { + } + + [TestMethod] + public void Test_133_03() + { + } + + [TestMethod] + public void Test_133_04() + { + } + + [TestMethod] + public void Test_133_05() + { + } + + [TestMethod] + public void Test_133_06() + { + } + + [TestMethod] + public void Test_133_07() + { + } + + [TestMethod] + public void Test_133_08() + { + } + + [TestMethod] + public void Test_133_09() + { + } + + [TestMethod] + public void Test_133_10() + { + } + + [TestMethod] + public void Test_133_11() + { + } + + [TestMethod] + public void Test_133_12() + { + } + + [TestMethod] + public void Test_133_13() + { + } + + [TestMethod] + public void Test_133_14() + { + } + + [TestMethod] + public void Test_133_15() + { + } + + [TestMethod] + public void Test_133_16() + { + } + + [TestMethod] + public void Test_133_17() + { + } + + [TestMethod] + public void Test_133_18() + { + } + + [TestMethod] + public void Test_133_19() + { + } + + [TestMethod] + public void Test_133_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_134 + { + #region PassingTests + [TestMethod] + public void Test_134_01() + { + } + + [TestMethod] + public void Test_134_02() + { + } + + [TestMethod] + public void Test_134_03() + { + } + + [TestMethod] + public void Test_134_04() + { + } + + [TestMethod] + public void Test_134_05() + { + } + + [TestMethod] + public void Test_134_06() + { + } + + [TestMethod] + public void Test_134_07() + { + } + + [TestMethod] + public void Test_134_08() + { + } + + [TestMethod] + public void Test_134_09() + { + } + + [TestMethod] + public void Test_134_10() + { + } + + [TestMethod] + public void Test_134_11() + { + } + + [TestMethod] + public void Test_134_12() + { + } + + [TestMethod] + public void Test_134_13() + { + } + + [TestMethod] + public void Test_134_14() + { + } + + [TestMethod] + public void Test_134_15() + { + } + + [TestMethod] + public void Test_134_16() + { + } + + [TestMethod] + public void Test_134_17() + { + } + + [TestMethod] + public void Test_134_18() + { + } + + [TestMethod] + public void Test_134_19() + { + } + + [TestMethod] + public void Test_134_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_135 + { + #region PassingTests + [TestMethod] + public void Test_135_01() + { + } + + [TestMethod] + public void Test_135_02() + { + } + + [TestMethod] + public void Test_135_03() + { + } + + [TestMethod] + public void Test_135_04() + { + } + + [TestMethod] + public void Test_135_05() + { + } + + [TestMethod] + public void Test_135_06() + { + } + + [TestMethod] + public void Test_135_07() + { + } + + [TestMethod] + public void Test_135_08() + { + } + + [TestMethod] + public void Test_135_09() + { + } + + [TestMethod] + public void Test_135_10() + { + } + + [TestMethod] + public void Test_135_11() + { + } + + [TestMethod] + public void Test_135_12() + { + } + + [TestMethod] + public void Test_135_13() + { + } + + [TestMethod] + public void Test_135_14() + { + } + + [TestMethod] + public void Test_135_15() + { + } + + [TestMethod] + public void Test_135_16() + { + } + + [TestMethod] + public void Test_135_17() + { + } + + [TestMethod] + public void Test_135_18() + { + } + + [TestMethod] + public void Test_135_19() + { + } + + [TestMethod] + public void Test_135_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_136 + { + #region PassingTests + [TestMethod] + public void Test_136_01() + { + } + + [TestMethod] + public void Test_136_02() + { + } + + [TestMethod] + public void Test_136_03() + { + } + + [TestMethod] + public void Test_136_04() + { + } + + [TestMethod] + public void Test_136_05() + { + } + + [TestMethod] + public void Test_136_06() + { + } + + [TestMethod] + public void Test_136_07() + { + } + + [TestMethod] + public void Test_136_08() + { + } + + [TestMethod] + public void Test_136_09() + { + } + + [TestMethod] + public void Test_136_10() + { + } + + [TestMethod] + public void Test_136_11() + { + } + + [TestMethod] + public void Test_136_12() + { + } + + [TestMethod] + public void Test_136_13() + { + } + + [TestMethod] + public void Test_136_14() + { + } + + [TestMethod] + public void Test_136_15() + { + } + + [TestMethod] + public void Test_136_16() + { + } + + [TestMethod] + public void Test_136_17() + { + } + + [TestMethod] + public void Test_136_18() + { + } + + [TestMethod] + public void Test_136_19() + { + } + + [TestMethod] + public void Test_136_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_137 + { + #region PassingTests + [TestMethod] + public void Test_137_01() + { + } + + [TestMethod] + public void Test_137_02() + { + } + + [TestMethod] + public void Test_137_03() + { + } + + [TestMethod] + public void Test_137_04() + { + } + + [TestMethod] + public void Test_137_05() + { + } + + [TestMethod] + public void Test_137_06() + { + } + + [TestMethod] + public void Test_137_07() + { + } + + [TestMethod] + public void Test_137_08() + { + } + + [TestMethod] + public void Test_137_09() + { + } + + [TestMethod] + public void Test_137_10() + { + } + + [TestMethod] + public void Test_137_11() + { + } + + [TestMethod] + public void Test_137_12() + { + } + + [TestMethod] + public void Test_137_13() + { + } + + [TestMethod] + public void Test_137_14() + { + } + + [TestMethod] + public void Test_137_15() + { + } + + [TestMethod] + public void Test_137_16() + { + } + + [TestMethod] + public void Test_137_17() + { + } + + [TestMethod] + public void Test_137_18() + { + } + + [TestMethod] + public void Test_137_19() + { + } + + [TestMethod] + public void Test_137_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_138 + { + #region PassingTests + [TestMethod] + public void Test_138_01() + { + } + + [TestMethod] + public void Test_138_02() + { + } + + [TestMethod] + public void Test_138_03() + { + } + + [TestMethod] + public void Test_138_04() + { + } + + [TestMethod] + public void Test_138_05() + { + } + + [TestMethod] + public void Test_138_06() + { + } + + [TestMethod] + public void Test_138_07() + { + } + + [TestMethod] + public void Test_138_08() + { + } + + [TestMethod] + public void Test_138_09() + { + } + + [TestMethod] + public void Test_138_10() + { + } + + [TestMethod] + public void Test_138_11() + { + } + + [TestMethod] + public void Test_138_12() + { + } + + [TestMethod] + public void Test_138_13() + { + } + + [TestMethod] + public void Test_138_14() + { + } + + [TestMethod] + public void Test_138_15() + { + } + + [TestMethod] + public void Test_138_16() + { + } + + [TestMethod] + public void Test_138_17() + { + } + + [TestMethod] + public void Test_138_18() + { + } + + [TestMethod] + public void Test_138_19() + { + } + + [TestMethod] + public void Test_138_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_139 + { + #region PassingTests + [TestMethod] + public void Test_139_01() + { + } + + [TestMethod] + public void Test_139_02() + { + } + + [TestMethod] + public void Test_139_03() + { + } + + [TestMethod] + public void Test_139_04() + { + } + + [TestMethod] + public void Test_139_05() + { + } + + [TestMethod] + public void Test_139_06() + { + } + + [TestMethod] + public void Test_139_07() + { + } + + [TestMethod] + public void Test_139_08() + { + } + + [TestMethod] + public void Test_139_09() + { + } + + [TestMethod] + public void Test_139_10() + { + } + + [TestMethod] + public void Test_139_11() + { + } + + [TestMethod] + public void Test_139_12() + { + } + + [TestMethod] + public void Test_139_13() + { + } + + [TestMethod] + public void Test_139_14() + { + } + + [TestMethod] + public void Test_139_15() + { + } + + [TestMethod] + public void Test_139_16() + { + } + + [TestMethod] + public void Test_139_17() + { + } + + [TestMethod] + public void Test_139_18() + { + } + + [TestMethod] + public void Test_139_19() + { + } + + [TestMethod] + public void Test_139_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_140 + { + #region PassingTests + [TestMethod] + public void Test_140_01() + { + } + + [TestMethod] + public void Test_140_02() + { + } + + [TestMethod] + public void Test_140_03() + { + } + + [TestMethod] + public void Test_140_04() + { + } + + [TestMethod] + public void Test_140_05() + { + } + + [TestMethod] + public void Test_140_06() + { + } + + [TestMethod] + public void Test_140_07() + { + } + + [TestMethod] + public void Test_140_08() + { + } + + [TestMethod] + public void Test_140_09() + { + } + + [TestMethod] + public void Test_140_10() + { + } + + [TestMethod] + public void Test_140_11() + { + } + + [TestMethod] + public void Test_140_12() + { + } + + [TestMethod] + public void Test_140_13() + { + } + + [TestMethod] + public void Test_140_14() + { + } + + [TestMethod] + public void Test_140_15() + { + } + + [TestMethod] + public void Test_140_16() + { + } + + [TestMethod] + public void Test_140_17() + { + } + + [TestMethod] + public void Test_140_18() + { + } + + [TestMethod] + public void Test_140_19() + { + } + + [TestMethod] + public void Test_140_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_141 + { + #region PassingTests + [TestMethod] + public void Test_141_01() + { + } + + [TestMethod] + public void Test_141_02() + { + } + + [TestMethod] + public void Test_141_03() + { + } + + [TestMethod] + public void Test_141_04() + { + } + + [TestMethod] + public void Test_141_05() + { + } + + [TestMethod] + public void Test_141_06() + { + } + + [TestMethod] + public void Test_141_07() + { + } + + [TestMethod] + public void Test_141_08() + { + } + + [TestMethod] + public void Test_141_09() + { + } + + [TestMethod] + public void Test_141_10() + { + } + + [TestMethod] + public void Test_141_11() + { + } + + [TestMethod] + public void Test_141_12() + { + } + + [TestMethod] + public void Test_141_13() + { + } + + [TestMethod] + public void Test_141_14() + { + } + + [TestMethod] + public void Test_141_15() + { + } + + [TestMethod] + public void Test_141_16() + { + } + + [TestMethod] + public void Test_141_17() + { + } + + [TestMethod] + public void Test_141_18() + { + } + + [TestMethod] + public void Test_141_19() + { + } + + [TestMethod] + public void Test_141_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_142 + { + #region PassingTests + [TestMethod] + public void Test_142_01() + { + } + + [TestMethod] + public void Test_142_02() + { + } + + [TestMethod] + public void Test_142_03() + { + } + + [TestMethod] + public void Test_142_04() + { + } + + [TestMethod] + public void Test_142_05() + { + } + + [TestMethod] + public void Test_142_06() + { + } + + [TestMethod] + public void Test_142_07() + { + } + + [TestMethod] + public void Test_142_08() + { + } + + [TestMethod] + public void Test_142_09() + { + } + + [TestMethod] + public void Test_142_10() + { + } + + [TestMethod] + public void Test_142_11() + { + } + + [TestMethod] + public void Test_142_12() + { + } + + [TestMethod] + public void Test_142_13() + { + } + + [TestMethod] + public void Test_142_14() + { + } + + [TestMethod] + public void Test_142_15() + { + } + + [TestMethod] + public void Test_142_16() + { + } + + [TestMethod] + public void Test_142_17() + { + } + + [TestMethod] + public void Test_142_18() + { + } + + [TestMethod] + public void Test_142_19() + { + } + + [TestMethod] + public void Test_142_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_143 + { + #region PassingTests + [TestMethod] + public void Test_143_01() + { + } + + [TestMethod] + public void Test_143_02() + { + } + + [TestMethod] + public void Test_143_03() + { + } + + [TestMethod] + public void Test_143_04() + { + } + + [TestMethod] + public void Test_143_05() + { + } + + [TestMethod] + public void Test_143_06() + { + } + + [TestMethod] + public void Test_143_07() + { + } + + [TestMethod] + public void Test_143_08() + { + } + + [TestMethod] + public void Test_143_09() + { + } + + [TestMethod] + public void Test_143_10() + { + } + + [TestMethod] + public void Test_143_11() + { + } + + [TestMethod] + public void Test_143_12() + { + } + + [TestMethod] + public void Test_143_13() + { + } + + [TestMethod] + public void Test_143_14() + { + } + + [TestMethod] + public void Test_143_15() + { + } + + [TestMethod] + public void Test_143_16() + { + } + + [TestMethod] + public void Test_143_17() + { + } + + [TestMethod] + public void Test_143_18() + { + } + + [TestMethod] + public void Test_143_19() + { + } + + [TestMethod] + public void Test_143_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_144 + { + #region PassingTests + [TestMethod] + public void Test_144_01() + { + } + + [TestMethod] + public void Test_144_02() + { + } + + [TestMethod] + public void Test_144_03() + { + } + + [TestMethod] + public void Test_144_04() + { + } + + [TestMethod] + public void Test_144_05() + { + } + + [TestMethod] + public void Test_144_06() + { + } + + [TestMethod] + public void Test_144_07() + { + } + + [TestMethod] + public void Test_144_08() + { + } + + [TestMethod] + public void Test_144_09() + { + } + + [TestMethod] + public void Test_144_10() + { + } + + [TestMethod] + public void Test_144_11() + { + } + + [TestMethod] + public void Test_144_12() + { + } + + [TestMethod] + public void Test_144_13() + { + } + + [TestMethod] + public void Test_144_14() + { + } + + [TestMethod] + public void Test_144_15() + { + } + + [TestMethod] + public void Test_144_16() + { + } + + [TestMethod] + public void Test_144_17() + { + } + + [TestMethod] + public void Test_144_18() + { + } + + [TestMethod] + public void Test_144_19() + { + } + + [TestMethod] + public void Test_144_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_145 + { + #region PassingTests + [TestMethod] + public void Test_145_01() + { + } + + [TestMethod] + public void Test_145_02() + { + } + + [TestMethod] + public void Test_145_03() + { + } + + [TestMethod] + public void Test_145_04() + { + } + + [TestMethod] + public void Test_145_05() + { + } + + [TestMethod] + public void Test_145_06() + { + } + + [TestMethod] + public void Test_145_07() + { + } + + [TestMethod] + public void Test_145_08() + { + } + + [TestMethod] + public void Test_145_09() + { + } + + [TestMethod] + public void Test_145_10() + { + } + + [TestMethod] + public void Test_145_11() + { + } + + [TestMethod] + public void Test_145_12() + { + } + + [TestMethod] + public void Test_145_13() + { + } + + [TestMethod] + public void Test_145_14() + { + } + + [TestMethod] + public void Test_145_15() + { + } + + [TestMethod] + public void Test_145_16() + { + } + + [TestMethod] + public void Test_145_17() + { + } + + [TestMethod] + public void Test_145_18() + { + } + + [TestMethod] + public void Test_145_19() + { + } + + [TestMethod] + public void Test_145_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_146 + { + #region PassingTests + [TestMethod] + public void Test_146_01() + { + } + + [TestMethod] + public void Test_146_02() + { + } + + [TestMethod] + public void Test_146_03() + { + } + + [TestMethod] + public void Test_146_04() + { + } + + [TestMethod] + public void Test_146_05() + { + } + + [TestMethod] + public void Test_146_06() + { + } + + [TestMethod] + public void Test_146_07() + { + } + + [TestMethod] + public void Test_146_08() + { + } + + [TestMethod] + public void Test_146_09() + { + } + + [TestMethod] + public void Test_146_10() + { + } + + [TestMethod] + public void Test_146_11() + { + } + + [TestMethod] + public void Test_146_12() + { + } + + [TestMethod] + public void Test_146_13() + { + } + + [TestMethod] + public void Test_146_14() + { + } + + [TestMethod] + public void Test_146_15() + { + } + + [TestMethod] + public void Test_146_16() + { + } + + [TestMethod] + public void Test_146_17() + { + } + + [TestMethod] + public void Test_146_18() + { + } + + [TestMethod] + public void Test_146_19() + { + } + + [TestMethod] + public void Test_146_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_147 + { + #region PassingTests + [TestMethod] + public void Test_147_01() + { + } + + [TestMethod] + public void Test_147_02() + { + } + + [TestMethod] + public void Test_147_03() + { + } + + [TestMethod] + public void Test_147_04() + { + } + + [TestMethod] + public void Test_147_05() + { + } + + [TestMethod] + public void Test_147_06() + { + } + + [TestMethod] + public void Test_147_07() + { + } + + [TestMethod] + public void Test_147_08() + { + } + + [TestMethod] + public void Test_147_09() + { + } + + [TestMethod] + public void Test_147_10() + { + } + + [TestMethod] + public void Test_147_11() + { + } + + [TestMethod] + public void Test_147_12() + { + } + + [TestMethod] + public void Test_147_13() + { + } + + [TestMethod] + public void Test_147_14() + { + } + + [TestMethod] + public void Test_147_15() + { + } + + [TestMethod] + public void Test_147_16() + { + } + + [TestMethod] + public void Test_147_17() + { + } + + [TestMethod] + public void Test_147_18() + { + } + + [TestMethod] + public void Test_147_19() + { + } + + [TestMethod] + public void Test_147_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_148 + { + #region PassingTests + [TestMethod] + public void Test_148_01() + { + } + + [TestMethod] + public void Test_148_02() + { + } + + [TestMethod] + public void Test_148_03() + { + } + + [TestMethod] + public void Test_148_04() + { + } + + [TestMethod] + public void Test_148_05() + { + } + + [TestMethod] + public void Test_148_06() + { + } + + [TestMethod] + public void Test_148_07() + { + } + + [TestMethod] + public void Test_148_08() + { + } + + [TestMethod] + public void Test_148_09() + { + } + + [TestMethod] + public void Test_148_10() + { + } + + [TestMethod] + public void Test_148_11() + { + } + + [TestMethod] + public void Test_148_12() + { + } + + [TestMethod] + public void Test_148_13() + { + } + + [TestMethod] + public void Test_148_14() + { + } + + [TestMethod] + public void Test_148_15() + { + } + + [TestMethod] + public void Test_148_16() + { + } + + [TestMethod] + public void Test_148_17() + { + } + + [TestMethod] + public void Test_148_18() + { + } + + [TestMethod] + public void Test_148_19() + { + } + + [TestMethod] + public void Test_148_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_149 + { + #region PassingTests + [TestMethod] + public void Test_149_01() + { + } + + [TestMethod] + public void Test_149_02() + { + } + + [TestMethod] + public void Test_149_03() + { + } + + [TestMethod] + public void Test_149_04() + { + } + + [TestMethod] + public void Test_149_05() + { + } + + [TestMethod] + public void Test_149_06() + { + } + + [TestMethod] + public void Test_149_07() + { + } + + [TestMethod] + public void Test_149_08() + { + } + + [TestMethod] + public void Test_149_09() + { + } + + [TestMethod] + public void Test_149_10() + { + } + + [TestMethod] + public void Test_149_11() + { + } + + [TestMethod] + public void Test_149_12() + { + } + + [TestMethod] + public void Test_149_13() + { + } + + [TestMethod] + public void Test_149_14() + { + } + + [TestMethod] + public void Test_149_15() + { + } + + [TestMethod] + public void Test_149_16() + { + } + + [TestMethod] + public void Test_149_17() + { + } + + [TestMethod] + public void Test_149_18() + { + } + + [TestMethod] + public void Test_149_19() + { + } + + [TestMethod] + public void Test_149_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_150 + { + #region PassingTests + [TestMethod] + public void Test_150_01() + { + } + + [TestMethod] + public void Test_150_02() + { + } + + [TestMethod] + public void Test_150_03() + { + } + + [TestMethod] + public void Test_150_04() + { + } + + [TestMethod] + public void Test_150_05() + { + } + + [TestMethod] + public void Test_150_06() + { + } + + [TestMethod] + public void Test_150_07() + { + } + + [TestMethod] + public void Test_150_08() + { + } + + [TestMethod] + public void Test_150_09() + { + } + + [TestMethod] + public void Test_150_10() + { + } + + [TestMethod] + public void Test_150_11() + { + } + + [TestMethod] + public void Test_150_12() + { + } + + [TestMethod] + public void Test_150_13() + { + } + + [TestMethod] + public void Test_150_14() + { + } + + [TestMethod] + public void Test_150_15() + { + } + + [TestMethod] + public void Test_150_16() + { + } + + [TestMethod] + public void Test_150_17() + { + } + + [TestMethod] + public void Test_150_18() + { + } + + [TestMethod] + public void Test_150_19() + { + } + + [TestMethod] + public void Test_150_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_151 + { + #region PassingTests + [TestMethod] + public void Test_151_01() + { + } + + [TestMethod] + public void Test_151_02() + { + } + + [TestMethod] + public void Test_151_03() + { + } + + [TestMethod] + public void Test_151_04() + { + } + + [TestMethod] + public void Test_151_05() + { + } + + [TestMethod] + public void Test_151_06() + { + } + + [TestMethod] + public void Test_151_07() + { + } + + [TestMethod] + public void Test_151_08() + { + } + + [TestMethod] + public void Test_151_09() + { + } + + [TestMethod] + public void Test_151_10() + { + } + + [TestMethod] + public void Test_151_11() + { + } + + [TestMethod] + public void Test_151_12() + { + } + + [TestMethod] + public void Test_151_13() + { + } + + [TestMethod] + public void Test_151_14() + { + } + + [TestMethod] + public void Test_151_15() + { + } + + [TestMethod] + public void Test_151_16() + { + } + + [TestMethod] + public void Test_151_17() + { + } + + [TestMethod] + public void Test_151_18() + { + } + + [TestMethod] + public void Test_151_19() + { + } + + [TestMethod] + public void Test_151_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_152 + { + #region PassingTests + [TestMethod] + public void Test_152_01() + { + } + + [TestMethod] + public void Test_152_02() + { + } + + [TestMethod] + public void Test_152_03() + { + } + + [TestMethod] + public void Test_152_04() + { + } + + [TestMethod] + public void Test_152_05() + { + } + + [TestMethod] + public void Test_152_06() + { + } + + [TestMethod] + public void Test_152_07() + { + } + + [TestMethod] + public void Test_152_08() + { + } + + [TestMethod] + public void Test_152_09() + { + } + + [TestMethod] + public void Test_152_10() + { + } + + [TestMethod] + public void Test_152_11() + { + } + + [TestMethod] + public void Test_152_12() + { + } + + [TestMethod] + public void Test_152_13() + { + } + + [TestMethod] + public void Test_152_14() + { + } + + [TestMethod] + public void Test_152_15() + { + } + + [TestMethod] + public void Test_152_16() + { + } + + [TestMethod] + public void Test_152_17() + { + } + + [TestMethod] + public void Test_152_18() + { + } + + [TestMethod] + public void Test_152_19() + { + } + + [TestMethod] + public void Test_152_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_153 + { + #region PassingTests + [TestMethod] + public void Test_153_01() + { + } + + [TestMethod] + public void Test_153_02() + { + } + + [TestMethod] + public void Test_153_03() + { + } + + [TestMethod] + public void Test_153_04() + { + } + + [TestMethod] + public void Test_153_05() + { + } + + [TestMethod] + public void Test_153_06() + { + } + + [TestMethod] + public void Test_153_07() + { + } + + [TestMethod] + public void Test_153_08() + { + } + + [TestMethod] + public void Test_153_09() + { + } + + [TestMethod] + public void Test_153_10() + { + } + + [TestMethod] + public void Test_153_11() + { + } + + [TestMethod] + public void Test_153_12() + { + } + + [TestMethod] + public void Test_153_13() + { + } + + [TestMethod] + public void Test_153_14() + { + } + + [TestMethod] + public void Test_153_15() + { + } + + [TestMethod] + public void Test_153_16() + { + } + + [TestMethod] + public void Test_153_17() + { + } + + [TestMethod] + public void Test_153_18() + { + } + + [TestMethod] + public void Test_153_19() + { + } + + [TestMethod] + public void Test_153_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_154 + { + #region PassingTests + [TestMethod] + public void Test_154_01() + { + } + + [TestMethod] + public void Test_154_02() + { + } + + [TestMethod] + public void Test_154_03() + { + } + + [TestMethod] + public void Test_154_04() + { + } + + [TestMethod] + public void Test_154_05() + { + } + + [TestMethod] + public void Test_154_06() + { + } + + [TestMethod] + public void Test_154_07() + { + } + + [TestMethod] + public void Test_154_08() + { + } + + [TestMethod] + public void Test_154_09() + { + } + + [TestMethod] + public void Test_154_10() + { + } + + [TestMethod] + public void Test_154_11() + { + } + + [TestMethod] + public void Test_154_12() + { + } + + [TestMethod] + public void Test_154_13() + { + } + + [TestMethod] + public void Test_154_14() + { + } + + [TestMethod] + public void Test_154_15() + { + } + + [TestMethod] + public void Test_154_16() + { + } + + [TestMethod] + public void Test_154_17() + { + } + + [TestMethod] + public void Test_154_18() + { + } + + [TestMethod] + public void Test_154_19() + { + } + + [TestMethod] + public void Test_154_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_155 + { + #region PassingTests + [TestMethod] + public void Test_155_01() + { + } + + [TestMethod] + public void Test_155_02() + { + } + + [TestMethod] + public void Test_155_03() + { + } + + [TestMethod] + public void Test_155_04() + { + } + + [TestMethod] + public void Test_155_05() + { + } + + [TestMethod] + public void Test_155_06() + { + } + + [TestMethod] + public void Test_155_07() + { + } + + [TestMethod] + public void Test_155_08() + { + } + + [TestMethod] + public void Test_155_09() + { + } + + [TestMethod] + public void Test_155_10() + { + } + + [TestMethod] + public void Test_155_11() + { + } + + [TestMethod] + public void Test_155_12() + { + } + + [TestMethod] + public void Test_155_13() + { + } + + [TestMethod] + public void Test_155_14() + { + } + + [TestMethod] + public void Test_155_15() + { + } + + [TestMethod] + public void Test_155_16() + { + } + + [TestMethod] + public void Test_155_17() + { + } + + [TestMethod] + public void Test_155_18() + { + } + + [TestMethod] + public void Test_155_19() + { + } + + [TestMethod] + public void Test_155_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_156 + { + #region PassingTests + [TestMethod] + public void Test_156_01() + { + } + + [TestMethod] + public void Test_156_02() + { + } + + [TestMethod] + public void Test_156_03() + { + } + + [TestMethod] + public void Test_156_04() + { + } + + [TestMethod] + public void Test_156_05() + { + } + + [TestMethod] + public void Test_156_06() + { + } + + [TestMethod] + public void Test_156_07() + { + } + + [TestMethod] + public void Test_156_08() + { + } + + [TestMethod] + public void Test_156_09() + { + } + + [TestMethod] + public void Test_156_10() + { + } + + [TestMethod] + public void Test_156_11() + { + } + + [TestMethod] + public void Test_156_12() + { + } + + [TestMethod] + public void Test_156_13() + { + } + + [TestMethod] + public void Test_156_14() + { + } + + [TestMethod] + public void Test_156_15() + { + } + + [TestMethod] + public void Test_156_16() + { + } + + [TestMethod] + public void Test_156_17() + { + } + + [TestMethod] + public void Test_156_18() + { + } + + [TestMethod] + public void Test_156_19() + { + } + + [TestMethod] + public void Test_156_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_157 + { + #region PassingTests + [TestMethod] + public void Test_157_01() + { + } + + [TestMethod] + public void Test_157_02() + { + } + + [TestMethod] + public void Test_157_03() + { + } + + [TestMethod] + public void Test_157_04() + { + } + + [TestMethod] + public void Test_157_05() + { + } + + [TestMethod] + public void Test_157_06() + { + } + + [TestMethod] + public void Test_157_07() + { + } + + [TestMethod] + public void Test_157_08() + { + } + + [TestMethod] + public void Test_157_09() + { + } + + [TestMethod] + public void Test_157_10() + { + } + + [TestMethod] + public void Test_157_11() + { + } + + [TestMethod] + public void Test_157_12() + { + } + + [TestMethod] + public void Test_157_13() + { + } + + [TestMethod] + public void Test_157_14() + { + } + + [TestMethod] + public void Test_157_15() + { + } + + [TestMethod] + public void Test_157_16() + { + } + + [TestMethod] + public void Test_157_17() + { + } + + [TestMethod] + public void Test_157_18() + { + } + + [TestMethod] + public void Test_157_19() + { + } + + [TestMethod] + public void Test_157_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_158 + { + #region PassingTests + [TestMethod] + public void Test_158_01() + { + } + + [TestMethod] + public void Test_158_02() + { + } + + [TestMethod] + public void Test_158_03() + { + } + + [TestMethod] + public void Test_158_04() + { + } + + [TestMethod] + public void Test_158_05() + { + } + + [TestMethod] + public void Test_158_06() + { + } + + [TestMethod] + public void Test_158_07() + { + } + + [TestMethod] + public void Test_158_08() + { + } + + [TestMethod] + public void Test_158_09() + { + } + + [TestMethod] + public void Test_158_10() + { + } + + [TestMethod] + public void Test_158_11() + { + } + + [TestMethod] + public void Test_158_12() + { + } + + [TestMethod] + public void Test_158_13() + { + } + + [TestMethod] + public void Test_158_14() + { + } + + [TestMethod] + public void Test_158_15() + { + } + + [TestMethod] + public void Test_158_16() + { + } + + [TestMethod] + public void Test_158_17() + { + } + + [TestMethod] + public void Test_158_18() + { + } + + [TestMethod] + public void Test_158_19() + { + } + + [TestMethod] + public void Test_158_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_159 + { + #region PassingTests + [TestMethod] + public void Test_159_01() + { + } + + [TestMethod] + public void Test_159_02() + { + } + + [TestMethod] + public void Test_159_03() + { + } + + [TestMethod] + public void Test_159_04() + { + } + + [TestMethod] + public void Test_159_05() + { + } + + [TestMethod] + public void Test_159_06() + { + } + + [TestMethod] + public void Test_159_07() + { + } + + [TestMethod] + public void Test_159_08() + { + } + + [TestMethod] + public void Test_159_09() + { + } + + [TestMethod] + public void Test_159_10() + { + } + + [TestMethod] + public void Test_159_11() + { + } + + [TestMethod] + public void Test_159_12() + { + } + + [TestMethod] + public void Test_159_13() + { + } + + [TestMethod] + public void Test_159_14() + { + } + + [TestMethod] + public void Test_159_15() + { + } + + [TestMethod] + public void Test_159_16() + { + } + + [TestMethod] + public void Test_159_17() + { + } + + [TestMethod] + public void Test_159_18() + { + } + + [TestMethod] + public void Test_159_19() + { + } + + [TestMethod] + public void Test_159_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_160 + { + #region PassingTests + [TestMethod] + public void Test_160_01() + { + } + + [TestMethod] + public void Test_160_02() + { + } + + [TestMethod] + public void Test_160_03() + { + } + + [TestMethod] + public void Test_160_04() + { + } + + [TestMethod] + public void Test_160_05() + { + } + + [TestMethod] + public void Test_160_06() + { + } + + [TestMethod] + public void Test_160_07() + { + } + + [TestMethod] + public void Test_160_08() + { + } + + [TestMethod] + public void Test_160_09() + { + } + + [TestMethod] + public void Test_160_10() + { + } + + [TestMethod] + public void Test_160_11() + { + } + + [TestMethod] + public void Test_160_12() + { + } + + [TestMethod] + public void Test_160_13() + { + } + + [TestMethod] + public void Test_160_14() + { + } + + [TestMethod] + public void Test_160_15() + { + } + + [TestMethod] + public void Test_160_16() + { + } + + [TestMethod] + public void Test_160_17() + { + } + + [TestMethod] + public void Test_160_18() + { + } + + [TestMethod] + public void Test_160_19() + { + } + + [TestMethod] + public void Test_160_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_161 + { + #region PassingTests + [TestMethod] + public void Test_161_01() + { + } + + [TestMethod] + public void Test_161_02() + { + } + + [TestMethod] + public void Test_161_03() + { + } + + [TestMethod] + public void Test_161_04() + { + } + + [TestMethod] + public void Test_161_05() + { + } + + [TestMethod] + public void Test_161_06() + { + } + + [TestMethod] + public void Test_161_07() + { + } + + [TestMethod] + public void Test_161_08() + { + } + + [TestMethod] + public void Test_161_09() + { + } + + [TestMethod] + public void Test_161_10() + { + } + + [TestMethod] + public void Test_161_11() + { + } + + [TestMethod] + public void Test_161_12() + { + } + + [TestMethod] + public void Test_161_13() + { + } + + [TestMethod] + public void Test_161_14() + { + } + + [TestMethod] + public void Test_161_15() + { + } + + [TestMethod] + public void Test_161_16() + { + } + + [TestMethod] + public void Test_161_17() + { + } + + [TestMethod] + public void Test_161_18() + { + } + + [TestMethod] + public void Test_161_19() + { + } + + [TestMethod] + public void Test_161_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_162 + { + #region PassingTests + [TestMethod] + public void Test_162_01() + { + } + + [TestMethod] + public void Test_162_02() + { + } + + [TestMethod] + public void Test_162_03() + { + } + + [TestMethod] + public void Test_162_04() + { + } + + [TestMethod] + public void Test_162_05() + { + } + + [TestMethod] + public void Test_162_06() + { + } + + [TestMethod] + public void Test_162_07() + { + } + + [TestMethod] + public void Test_162_08() + { + } + + [TestMethod] + public void Test_162_09() + { + } + + [TestMethod] + public void Test_162_10() + { + } + + [TestMethod] + public void Test_162_11() + { + } + + [TestMethod] + public void Test_162_12() + { + } + + [TestMethod] + public void Test_162_13() + { + } + + [TestMethod] + public void Test_162_14() + { + } + + [TestMethod] + public void Test_162_15() + { + } + + [TestMethod] + public void Test_162_16() + { + } + + [TestMethod] + public void Test_162_17() + { + } + + [TestMethod] + public void Test_162_18() + { + } + + [TestMethod] + public void Test_162_19() + { + } + + [TestMethod] + public void Test_162_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_163 + { + #region PassingTests + [TestMethod] + public void Test_163_01() + { + } + + [TestMethod] + public void Test_163_02() + { + } + + [TestMethod] + public void Test_163_03() + { + } + + [TestMethod] + public void Test_163_04() + { + } + + [TestMethod] + public void Test_163_05() + { + } + + [TestMethod] + public void Test_163_06() + { + } + + [TestMethod] + public void Test_163_07() + { + } + + [TestMethod] + public void Test_163_08() + { + } + + [TestMethod] + public void Test_163_09() + { + } + + [TestMethod] + public void Test_163_10() + { + } + + [TestMethod] + public void Test_163_11() + { + } + + [TestMethod] + public void Test_163_12() + { + } + + [TestMethod] + public void Test_163_13() + { + } + + [TestMethod] + public void Test_163_14() + { + } + + [TestMethod] + public void Test_163_15() + { + } + + [TestMethod] + public void Test_163_16() + { + } + + [TestMethod] + public void Test_163_17() + { + } + + [TestMethod] + public void Test_163_18() + { + } + + [TestMethod] + public void Test_163_19() + { + } + + [TestMethod] + public void Test_163_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_164 + { + #region PassingTests + [TestMethod] + public void Test_164_01() + { + } + + [TestMethod] + public void Test_164_02() + { + } + + [TestMethod] + public void Test_164_03() + { + } + + [TestMethod] + public void Test_164_04() + { + } + + [TestMethod] + public void Test_164_05() + { + } + + [TestMethod] + public void Test_164_06() + { + } + + [TestMethod] + public void Test_164_07() + { + } + + [TestMethod] + public void Test_164_08() + { + } + + [TestMethod] + public void Test_164_09() + { + } + + [TestMethod] + public void Test_164_10() + { + } + + [TestMethod] + public void Test_164_11() + { + } + + [TestMethod] + public void Test_164_12() + { + } + + [TestMethod] + public void Test_164_13() + { + } + + [TestMethod] + public void Test_164_14() + { + } + + [TestMethod] + public void Test_164_15() + { + } + + [TestMethod] + public void Test_164_16() + { + } + + [TestMethod] + public void Test_164_17() + { + } + + [TestMethod] + public void Test_164_18() + { + } + + [TestMethod] + public void Test_164_19() + { + } + + [TestMethod] + public void Test_164_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_165 + { + #region PassingTests + [TestMethod] + public void Test_165_01() + { + } + + [TestMethod] + public void Test_165_02() + { + } + + [TestMethod] + public void Test_165_03() + { + } + + [TestMethod] + public void Test_165_04() + { + } + + [TestMethod] + public void Test_165_05() + { + } + + [TestMethod] + public void Test_165_06() + { + } + + [TestMethod] + public void Test_165_07() + { + } + + [TestMethod] + public void Test_165_08() + { + } + + [TestMethod] + public void Test_165_09() + { + } + + [TestMethod] + public void Test_165_10() + { + } + + [TestMethod] + public void Test_165_11() + { + } + + [TestMethod] + public void Test_165_12() + { + } + + [TestMethod] + public void Test_165_13() + { + } + + [TestMethod] + public void Test_165_14() + { + } + + [TestMethod] + public void Test_165_15() + { + } + + [TestMethod] + public void Test_165_16() + { + } + + [TestMethod] + public void Test_165_17() + { + } + + [TestMethod] + public void Test_165_18() + { + } + + [TestMethod] + public void Test_165_19() + { + } + + [TestMethod] + public void Test_165_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_166 + { + #region PassingTests + [TestMethod] + public void Test_166_01() + { + } + + [TestMethod] + public void Test_166_02() + { + } + + [TestMethod] + public void Test_166_03() + { + } + + [TestMethod] + public void Test_166_04() + { + } + + [TestMethod] + public void Test_166_05() + { + } + + [TestMethod] + public void Test_166_06() + { + } + + [TestMethod] + public void Test_166_07() + { + } + + [TestMethod] + public void Test_166_08() + { + } + + [TestMethod] + public void Test_166_09() + { + } + + [TestMethod] + public void Test_166_10() + { + } + + [TestMethod] + public void Test_166_11() + { + } + + [TestMethod] + public void Test_166_12() + { + } + + [TestMethod] + public void Test_166_13() + { + } + + [TestMethod] + public void Test_166_14() + { + } + + [TestMethod] + public void Test_166_15() + { + } + + [TestMethod] + public void Test_166_16() + { + } + + [TestMethod] + public void Test_166_17() + { + } + + [TestMethod] + public void Test_166_18() + { + } + + [TestMethod] + public void Test_166_19() + { + } + + [TestMethod] + public void Test_166_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_167 + { + #region PassingTests + [TestMethod] + public void Test_167_01() + { + } + + [TestMethod] + public void Test_167_02() + { + } + + [TestMethod] + public void Test_167_03() + { + } + + [TestMethod] + public void Test_167_04() + { + } + + [TestMethod] + public void Test_167_05() + { + } + + [TestMethod] + public void Test_167_06() + { + } + + [TestMethod] + public void Test_167_07() + { + } + + [TestMethod] + public void Test_167_08() + { + } + + [TestMethod] + public void Test_167_09() + { + } + + [TestMethod] + public void Test_167_10() + { + } + + [TestMethod] + public void Test_167_11() + { + } + + [TestMethod] + public void Test_167_12() + { + } + + [TestMethod] + public void Test_167_13() + { + } + + [TestMethod] + public void Test_167_14() + { + } + + [TestMethod] + public void Test_167_15() + { + } + + [TestMethod] + public void Test_167_16() + { + } + + [TestMethod] + public void Test_167_17() + { + } + + [TestMethod] + public void Test_167_18() + { + } + + [TestMethod] + public void Test_167_19() + { + } + + [TestMethod] + public void Test_167_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_168 + { + #region PassingTests + [TestMethod] + public void Test_168_01() + { + } + + [TestMethod] + public void Test_168_02() + { + } + + [TestMethod] + public void Test_168_03() + { + } + + [TestMethod] + public void Test_168_04() + { + } + + [TestMethod] + public void Test_168_05() + { + } + + [TestMethod] + public void Test_168_06() + { + } + + [TestMethod] + public void Test_168_07() + { + } + + [TestMethod] + public void Test_168_08() + { + } + + [TestMethod] + public void Test_168_09() + { + } + + [TestMethod] + public void Test_168_10() + { + } + + [TestMethod] + public void Test_168_11() + { + } + + [TestMethod] + public void Test_168_12() + { + } + + [TestMethod] + public void Test_168_13() + { + } + + [TestMethod] + public void Test_168_14() + { + } + + [TestMethod] + public void Test_168_15() + { + } + + [TestMethod] + public void Test_168_16() + { + } + + [TestMethod] + public void Test_168_17() + { + } + + [TestMethod] + public void Test_168_18() + { + } + + [TestMethod] + public void Test_168_19() + { + } + + [TestMethod] + public void Test_168_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_169 + { + #region PassingTests + [TestMethod] + public void Test_169_01() + { + } + + [TestMethod] + public void Test_169_02() + { + } + + [TestMethod] + public void Test_169_03() + { + } + + [TestMethod] + public void Test_169_04() + { + } + + [TestMethod] + public void Test_169_05() + { + } + + [TestMethod] + public void Test_169_06() + { + } + + [TestMethod] + public void Test_169_07() + { + } + + [TestMethod] + public void Test_169_08() + { + } + + [TestMethod] + public void Test_169_09() + { + } + + [TestMethod] + public void Test_169_10() + { + } + + [TestMethod] + public void Test_169_11() + { + } + + [TestMethod] + public void Test_169_12() + { + } + + [TestMethod] + public void Test_169_13() + { + } + + [TestMethod] + public void Test_169_14() + { + } + + [TestMethod] + public void Test_169_15() + { + } + + [TestMethod] + public void Test_169_16() + { + } + + [TestMethod] + public void Test_169_17() + { + } + + [TestMethod] + public void Test_169_18() + { + } + + [TestMethod] + public void Test_169_19() + { + } + + [TestMethod] + public void Test_169_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_170 + { + #region PassingTests + [TestMethod] + public void Test_170_01() + { + } + + [TestMethod] + public void Test_170_02() + { + } + + [TestMethod] + public void Test_170_03() + { + } + + [TestMethod] + public void Test_170_04() + { + } + + [TestMethod] + public void Test_170_05() + { + } + + [TestMethod] + public void Test_170_06() + { + } + + [TestMethod] + public void Test_170_07() + { + } + + [TestMethod] + public void Test_170_08() + { + } + + [TestMethod] + public void Test_170_09() + { + } + + [TestMethod] + public void Test_170_10() + { + } + + [TestMethod] + public void Test_170_11() + { + } + + [TestMethod] + public void Test_170_12() + { + } + + [TestMethod] + public void Test_170_13() + { + } + + [TestMethod] + public void Test_170_14() + { + } + + [TestMethod] + public void Test_170_15() + { + } + + [TestMethod] + public void Test_170_16() + { + } + + [TestMethod] + public void Test_170_17() + { + } + + [TestMethod] + public void Test_170_18() + { + } + + [TestMethod] + public void Test_170_19() + { + } + + [TestMethod] + public void Test_170_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_171 + { + #region PassingTests + [TestMethod] + public void Test_171_01() + { + } + + [TestMethod] + public void Test_171_02() + { + } + + [TestMethod] + public void Test_171_03() + { + } + + [TestMethod] + public void Test_171_04() + { + } + + [TestMethod] + public void Test_171_05() + { + } + + [TestMethod] + public void Test_171_06() + { + } + + [TestMethod] + public void Test_171_07() + { + } + + [TestMethod] + public void Test_171_08() + { + } + + [TestMethod] + public void Test_171_09() + { + } + + [TestMethod] + public void Test_171_10() + { + } + + [TestMethod] + public void Test_171_11() + { + } + + [TestMethod] + public void Test_171_12() + { + } + + [TestMethod] + public void Test_171_13() + { + } + + [TestMethod] + public void Test_171_14() + { + } + + [TestMethod] + public void Test_171_15() + { + } + + [TestMethod] + public void Test_171_16() + { + } + + [TestMethod] + public void Test_171_17() + { + } + + [TestMethod] + public void Test_171_18() + { + } + + [TestMethod] + public void Test_171_19() + { + } + + [TestMethod] + public void Test_171_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_172 + { + #region PassingTests + [TestMethod] + public void Test_172_01() + { + } + + [TestMethod] + public void Test_172_02() + { + } + + [TestMethod] + public void Test_172_03() + { + } + + [TestMethod] + public void Test_172_04() + { + } + + [TestMethod] + public void Test_172_05() + { + } + + [TestMethod] + public void Test_172_06() + { + } + + [TestMethod] + public void Test_172_07() + { + } + + [TestMethod] + public void Test_172_08() + { + } + + [TestMethod] + public void Test_172_09() + { + } + + [TestMethod] + public void Test_172_10() + { + } + + [TestMethod] + public void Test_172_11() + { + } + + [TestMethod] + public void Test_172_12() + { + } + + [TestMethod] + public void Test_172_13() + { + } + + [TestMethod] + public void Test_172_14() + { + } + + [TestMethod] + public void Test_172_15() + { + } + + [TestMethod] + public void Test_172_16() + { + } + + [TestMethod] + public void Test_172_17() + { + } + + [TestMethod] + public void Test_172_18() + { + } + + [TestMethod] + public void Test_172_19() + { + } + + [TestMethod] + public void Test_172_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_173 + { + #region PassingTests + [TestMethod] + public void Test_173_01() + { + } + + [TestMethod] + public void Test_173_02() + { + } + + [TestMethod] + public void Test_173_03() + { + } + + [TestMethod] + public void Test_173_04() + { + } + + [TestMethod] + public void Test_173_05() + { + } + + [TestMethod] + public void Test_173_06() + { + } + + [TestMethod] + public void Test_173_07() + { + } + + [TestMethod] + public void Test_173_08() + { + } + + [TestMethod] + public void Test_173_09() + { + } + + [TestMethod] + public void Test_173_10() + { + } + + [TestMethod] + public void Test_173_11() + { + } + + [TestMethod] + public void Test_173_12() + { + } + + [TestMethod] + public void Test_173_13() + { + } + + [TestMethod] + public void Test_173_14() + { + } + + [TestMethod] + public void Test_173_15() + { + } + + [TestMethod] + public void Test_173_16() + { + } + + [TestMethod] + public void Test_173_17() + { + } + + [TestMethod] + public void Test_173_18() + { + } + + [TestMethod] + public void Test_173_19() + { + } + + [TestMethod] + public void Test_173_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_174 + { + #region PassingTests + [TestMethod] + public void Test_174_01() + { + } + + [TestMethod] + public void Test_174_02() + { + } + + [TestMethod] + public void Test_174_03() + { + } + + [TestMethod] + public void Test_174_04() + { + } + + [TestMethod] + public void Test_174_05() + { + } + + [TestMethod] + public void Test_174_06() + { + } + + [TestMethod] + public void Test_174_07() + { + } + + [TestMethod] + public void Test_174_08() + { + } + + [TestMethod] + public void Test_174_09() + { + } + + [TestMethod] + public void Test_174_10() + { + } + + [TestMethod] + public void Test_174_11() + { + } + + [TestMethod] + public void Test_174_12() + { + } + + [TestMethod] + public void Test_174_13() + { + } + + [TestMethod] + public void Test_174_14() + { + } + + [TestMethod] + public void Test_174_15() + { + } + + [TestMethod] + public void Test_174_16() + { + } + + [TestMethod] + public void Test_174_17() + { + } + + [TestMethod] + public void Test_174_18() + { + } + + [TestMethod] + public void Test_174_19() + { + } + + [TestMethod] + public void Test_174_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_175 + { + #region PassingTests + [TestMethod] + public void Test_175_01() + { + } + + [TestMethod] + public void Test_175_02() + { + } + + [TestMethod] + public void Test_175_03() + { + } + + [TestMethod] + public void Test_175_04() + { + } + + [TestMethod] + public void Test_175_05() + { + } + + [TestMethod] + public void Test_175_06() + { + } + + [TestMethod] + public void Test_175_07() + { + } + + [TestMethod] + public void Test_175_08() + { + } + + [TestMethod] + public void Test_175_09() + { + } + + [TestMethod] + public void Test_175_10() + { + } + + [TestMethod] + public void Test_175_11() + { + } + + [TestMethod] + public void Test_175_12() + { + } + + [TestMethod] + public void Test_175_13() + { + } + + [TestMethod] + public void Test_175_14() + { + } + + [TestMethod] + public void Test_175_15() + { + } + + [TestMethod] + public void Test_175_16() + { + } + + [TestMethod] + public void Test_175_17() + { + } + + [TestMethod] + public void Test_175_18() + { + } + + [TestMethod] + public void Test_175_19() + { + } + + [TestMethod] + public void Test_175_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_176 + { + #region PassingTests + [TestMethod] + public void Test_176_01() + { + } + + [TestMethod] + public void Test_176_02() + { + } + + [TestMethod] + public void Test_176_03() + { + } + + [TestMethod] + public void Test_176_04() + { + } + + [TestMethod] + public void Test_176_05() + { + } + + [TestMethod] + public void Test_176_06() + { + } + + [TestMethod] + public void Test_176_07() + { + } + + [TestMethod] + public void Test_176_08() + { + } + + [TestMethod] + public void Test_176_09() + { + } + + [TestMethod] + public void Test_176_10() + { + } + + [TestMethod] + public void Test_176_11() + { + } + + [TestMethod] + public void Test_176_12() + { + } + + [TestMethod] + public void Test_176_13() + { + } + + [TestMethod] + public void Test_176_14() + { + } + + [TestMethod] + public void Test_176_15() + { + } + + [TestMethod] + public void Test_176_16() + { + } + + [TestMethod] + public void Test_176_17() + { + } + + [TestMethod] + public void Test_176_18() + { + } + + [TestMethod] + public void Test_176_19() + { + } + + [TestMethod] + public void Test_176_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_177 + { + #region PassingTests + [TestMethod] + public void Test_177_01() + { + } + + [TestMethod] + public void Test_177_02() + { + } + + [TestMethod] + public void Test_177_03() + { + } + + [TestMethod] + public void Test_177_04() + { + } + + [TestMethod] + public void Test_177_05() + { + } + + [TestMethod] + public void Test_177_06() + { + } + + [TestMethod] + public void Test_177_07() + { + } + + [TestMethod] + public void Test_177_08() + { + } + + [TestMethod] + public void Test_177_09() + { + } + + [TestMethod] + public void Test_177_10() + { + } + + [TestMethod] + public void Test_177_11() + { + } + + [TestMethod] + public void Test_177_12() + { + } + + [TestMethod] + public void Test_177_13() + { + } + + [TestMethod] + public void Test_177_14() + { + } + + [TestMethod] + public void Test_177_15() + { + } + + [TestMethod] + public void Test_177_16() + { + } + + [TestMethod] + public void Test_177_17() + { + } + + [TestMethod] + public void Test_177_18() + { + } + + [TestMethod] + public void Test_177_19() + { + } + + [TestMethod] + public void Test_177_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_178 + { + #region PassingTests + [TestMethod] + public void Test_178_01() + { + } + + [TestMethod] + public void Test_178_02() + { + } + + [TestMethod] + public void Test_178_03() + { + } + + [TestMethod] + public void Test_178_04() + { + } + + [TestMethod] + public void Test_178_05() + { + } + + [TestMethod] + public void Test_178_06() + { + } + + [TestMethod] + public void Test_178_07() + { + } + + [TestMethod] + public void Test_178_08() + { + } + + [TestMethod] + public void Test_178_09() + { + } + + [TestMethod] + public void Test_178_10() + { + } + + [TestMethod] + public void Test_178_11() + { + } + + [TestMethod] + public void Test_178_12() + { + } + + [TestMethod] + public void Test_178_13() + { + } + + [TestMethod] + public void Test_178_14() + { + } + + [TestMethod] + public void Test_178_15() + { + } + + [TestMethod] + public void Test_178_16() + { + } + + [TestMethod] + public void Test_178_17() + { + } + + [TestMethod] + public void Test_178_18() + { + } + + [TestMethod] + public void Test_178_19() + { + } + + [TestMethod] + public void Test_178_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_179 + { + #region PassingTests + [TestMethod] + public void Test_179_01() + { + } + + [TestMethod] + public void Test_179_02() + { + } + + [TestMethod] + public void Test_179_03() + { + } + + [TestMethod] + public void Test_179_04() + { + } + + [TestMethod] + public void Test_179_05() + { + } + + [TestMethod] + public void Test_179_06() + { + } + + [TestMethod] + public void Test_179_07() + { + } + + [TestMethod] + public void Test_179_08() + { + } + + [TestMethod] + public void Test_179_09() + { + } + + [TestMethod] + public void Test_179_10() + { + } + + [TestMethod] + public void Test_179_11() + { + } + + [TestMethod] + public void Test_179_12() + { + } + + [TestMethod] + public void Test_179_13() + { + } + + [TestMethod] + public void Test_179_14() + { + } + + [TestMethod] + public void Test_179_15() + { + } + + [TestMethod] + public void Test_179_16() + { + } + + [TestMethod] + public void Test_179_17() + { + } + + [TestMethod] + public void Test_179_18() + { + } + + [TestMethod] + public void Test_179_19() + { + } + + [TestMethod] + public void Test_179_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_180 + { + #region PassingTests + [TestMethod] + public void Test_180_01() + { + } + + [TestMethod] + public void Test_180_02() + { + } + + [TestMethod] + public void Test_180_03() + { + } + + [TestMethod] + public void Test_180_04() + { + } + + [TestMethod] + public void Test_180_05() + { + } + + [TestMethod] + public void Test_180_06() + { + } + + [TestMethod] + public void Test_180_07() + { + } + + [TestMethod] + public void Test_180_08() + { + } + + [TestMethod] + public void Test_180_09() + { + } + + [TestMethod] + public void Test_180_10() + { + } + + [TestMethod] + public void Test_180_11() + { + } + + [TestMethod] + public void Test_180_12() + { + } + + [TestMethod] + public void Test_180_13() + { + } + + [TestMethod] + public void Test_180_14() + { + } + + [TestMethod] + public void Test_180_15() + { + } + + [TestMethod] + public void Test_180_16() + { + } + + [TestMethod] + public void Test_180_17() + { + } + + [TestMethod] + public void Test_180_18() + { + } + + [TestMethod] + public void Test_180_19() + { + } + + [TestMethod] + public void Test_180_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_181 + { + #region PassingTests + [TestMethod] + public void Test_181_01() + { + } + + [TestMethod] + public void Test_181_02() + { + } + + [TestMethod] + public void Test_181_03() + { + } + + [TestMethod] + public void Test_181_04() + { + } + + [TestMethod] + public void Test_181_05() + { + } + + [TestMethod] + public void Test_181_06() + { + } + + [TestMethod] + public void Test_181_07() + { + } + + [TestMethod] + public void Test_181_08() + { + } + + [TestMethod] + public void Test_181_09() + { + } + + [TestMethod] + public void Test_181_10() + { + } + + [TestMethod] + public void Test_181_11() + { + } + + [TestMethod] + public void Test_181_12() + { + } + + [TestMethod] + public void Test_181_13() + { + } + + [TestMethod] + public void Test_181_14() + { + } + + [TestMethod] + public void Test_181_15() + { + } + + [TestMethod] + public void Test_181_16() + { + } + + [TestMethod] + public void Test_181_17() + { + } + + [TestMethod] + public void Test_181_18() + { + } + + [TestMethod] + public void Test_181_19() + { + } + + [TestMethod] + public void Test_181_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_182 + { + #region PassingTests + [TestMethod] + public void Test_182_01() + { + } + + [TestMethod] + public void Test_182_02() + { + } + + [TestMethod] + public void Test_182_03() + { + } + + [TestMethod] + public void Test_182_04() + { + } + + [TestMethod] + public void Test_182_05() + { + } + + [TestMethod] + public void Test_182_06() + { + } + + [TestMethod] + public void Test_182_07() + { + } + + [TestMethod] + public void Test_182_08() + { + } + + [TestMethod] + public void Test_182_09() + { + } + + [TestMethod] + public void Test_182_10() + { + } + + [TestMethod] + public void Test_182_11() + { + } + + [TestMethod] + public void Test_182_12() + { + } + + [TestMethod] + public void Test_182_13() + { + } + + [TestMethod] + public void Test_182_14() + { + } + + [TestMethod] + public void Test_182_15() + { + } + + [TestMethod] + public void Test_182_16() + { + } + + [TestMethod] + public void Test_182_17() + { + } + + [TestMethod] + public void Test_182_18() + { + } + + [TestMethod] + public void Test_182_19() + { + } + + [TestMethod] + public void Test_182_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_183 + { + #region PassingTests + [TestMethod] + public void Test_183_01() + { + } + + [TestMethod] + public void Test_183_02() + { + } + + [TestMethod] + public void Test_183_03() + { + } + + [TestMethod] + public void Test_183_04() + { + } + + [TestMethod] + public void Test_183_05() + { + } + + [TestMethod] + public void Test_183_06() + { + } + + [TestMethod] + public void Test_183_07() + { + } + + [TestMethod] + public void Test_183_08() + { + } + + [TestMethod] + public void Test_183_09() + { + } + + [TestMethod] + public void Test_183_10() + { + } + + [TestMethod] + public void Test_183_11() + { + } + + [TestMethod] + public void Test_183_12() + { + } + + [TestMethod] + public void Test_183_13() + { + } + + [TestMethod] + public void Test_183_14() + { + } + + [TestMethod] + public void Test_183_15() + { + } + + [TestMethod] + public void Test_183_16() + { + } + + [TestMethod] + public void Test_183_17() + { + } + + [TestMethod] + public void Test_183_18() + { + } + + [TestMethod] + public void Test_183_19() + { + } + + [TestMethod] + public void Test_183_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_184 + { + #region PassingTests + [TestMethod] + public void Test_184_01() + { + } + + [TestMethod] + public void Test_184_02() + { + } + + [TestMethod] + public void Test_184_03() + { + } + + [TestMethod] + public void Test_184_04() + { + } + + [TestMethod] + public void Test_184_05() + { + } + + [TestMethod] + public void Test_184_06() + { + } + + [TestMethod] + public void Test_184_07() + { + } + + [TestMethod] + public void Test_184_08() + { + } + + [TestMethod] + public void Test_184_09() + { + } + + [TestMethod] + public void Test_184_10() + { + } + + [TestMethod] + public void Test_184_11() + { + } + + [TestMethod] + public void Test_184_12() + { + } + + [TestMethod] + public void Test_184_13() + { + } + + [TestMethod] + public void Test_184_14() + { + } + + [TestMethod] + public void Test_184_15() + { + } + + [TestMethod] + public void Test_184_16() + { + } + + [TestMethod] + public void Test_184_17() + { + } + + [TestMethod] + public void Test_184_18() + { + } + + [TestMethod] + public void Test_184_19() + { + } + + [TestMethod] + public void Test_184_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_185 + { + #region PassingTests + [TestMethod] + public void Test_185_01() + { + } + + [TestMethod] + public void Test_185_02() + { + } + + [TestMethod] + public void Test_185_03() + { + } + + [TestMethod] + public void Test_185_04() + { + } + + [TestMethod] + public void Test_185_05() + { + } + + [TestMethod] + public void Test_185_06() + { + } + + [TestMethod] + public void Test_185_07() + { + } + + [TestMethod] + public void Test_185_08() + { + } + + [TestMethod] + public void Test_185_09() + { + } + + [TestMethod] + public void Test_185_10() + { + } + + [TestMethod] + public void Test_185_11() + { + } + + [TestMethod] + public void Test_185_12() + { + } + + [TestMethod] + public void Test_185_13() + { + } + + [TestMethod] + public void Test_185_14() + { + } + + [TestMethod] + public void Test_185_15() + { + } + + [TestMethod] + public void Test_185_16() + { + } + + [TestMethod] + public void Test_185_17() + { + } + + [TestMethod] + public void Test_185_18() + { + } + + [TestMethod] + public void Test_185_19() + { + } + + [TestMethod] + public void Test_185_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_186 + { + #region PassingTests + [TestMethod] + public void Test_186_01() + { + } + + [TestMethod] + public void Test_186_02() + { + } + + [TestMethod] + public void Test_186_03() + { + } + + [TestMethod] + public void Test_186_04() + { + } + + [TestMethod] + public void Test_186_05() + { + } + + [TestMethod] + public void Test_186_06() + { + } + + [TestMethod] + public void Test_186_07() + { + } + + [TestMethod] + public void Test_186_08() + { + } + + [TestMethod] + public void Test_186_09() + { + } + + [TestMethod] + public void Test_186_10() + { + } + + [TestMethod] + public void Test_186_11() + { + } + + [TestMethod] + public void Test_186_12() + { + } + + [TestMethod] + public void Test_186_13() + { + } + + [TestMethod] + public void Test_186_14() + { + } + + [TestMethod] + public void Test_186_15() + { + } + + [TestMethod] + public void Test_186_16() + { + } + + [TestMethod] + public void Test_186_17() + { + } + + [TestMethod] + public void Test_186_18() + { + } + + [TestMethod] + public void Test_186_19() + { + } + + [TestMethod] + public void Test_186_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_187 + { + #region PassingTests + [TestMethod] + public void Test_187_01() + { + } + + [TestMethod] + public void Test_187_02() + { + } + + [TestMethod] + public void Test_187_03() + { + } + + [TestMethod] + public void Test_187_04() + { + } + + [TestMethod] + public void Test_187_05() + { + } + + [TestMethod] + public void Test_187_06() + { + } + + [TestMethod] + public void Test_187_07() + { + } + + [TestMethod] + public void Test_187_08() + { + } + + [TestMethod] + public void Test_187_09() + { + } + + [TestMethod] + public void Test_187_10() + { + } + + [TestMethod] + public void Test_187_11() + { + } + + [TestMethod] + public void Test_187_12() + { + } + + [TestMethod] + public void Test_187_13() + { + } + + [TestMethod] + public void Test_187_14() + { + } + + [TestMethod] + public void Test_187_15() + { + } + + [TestMethod] + public void Test_187_16() + { + } + + [TestMethod] + public void Test_187_17() + { + } + + [TestMethod] + public void Test_187_18() + { + } + + [TestMethod] + public void Test_187_19() + { + } + + [TestMethod] + public void Test_187_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_188 + { + #region PassingTests + [TestMethod] + public void Test_188_01() + { + } + + [TestMethod] + public void Test_188_02() + { + } + + [TestMethod] + public void Test_188_03() + { + } + + [TestMethod] + public void Test_188_04() + { + } + + [TestMethod] + public void Test_188_05() + { + } + + [TestMethod] + public void Test_188_06() + { + } + + [TestMethod] + public void Test_188_07() + { + } + + [TestMethod] + public void Test_188_08() + { + } + + [TestMethod] + public void Test_188_09() + { + } + + [TestMethod] + public void Test_188_10() + { + } + + [TestMethod] + public void Test_188_11() + { + } + + [TestMethod] + public void Test_188_12() + { + } + + [TestMethod] + public void Test_188_13() + { + } + + [TestMethod] + public void Test_188_14() + { + } + + [TestMethod] + public void Test_188_15() + { + } + + [TestMethod] + public void Test_188_16() + { + } + + [TestMethod] + public void Test_188_17() + { + } + + [TestMethod] + public void Test_188_18() + { + } + + [TestMethod] + public void Test_188_19() + { + } + + [TestMethod] + public void Test_188_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_189 + { + #region PassingTests + [TestMethod] + public void Test_189_01() + { + } + + [TestMethod] + public void Test_189_02() + { + } + + [TestMethod] + public void Test_189_03() + { + } + + [TestMethod] + public void Test_189_04() + { + } + + [TestMethod] + public void Test_189_05() + { + } + + [TestMethod] + public void Test_189_06() + { + } + + [TestMethod] + public void Test_189_07() + { + } + + [TestMethod] + public void Test_189_08() + { + } + + [TestMethod] + public void Test_189_09() + { + } + + [TestMethod] + public void Test_189_10() + { + } + + [TestMethod] + public void Test_189_11() + { + } + + [TestMethod] + public void Test_189_12() + { + } + + [TestMethod] + public void Test_189_13() + { + } + + [TestMethod] + public void Test_189_14() + { + } + + [TestMethod] + public void Test_189_15() + { + } + + [TestMethod] + public void Test_189_16() + { + } + + [TestMethod] + public void Test_189_17() + { + } + + [TestMethod] + public void Test_189_18() + { + } + + [TestMethod] + public void Test_189_19() + { + } + + [TestMethod] + public void Test_189_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_190 + { + #region PassingTests + [TestMethod] + public void Test_190_01() + { + } + + [TestMethod] + public void Test_190_02() + { + } + + [TestMethod] + public void Test_190_03() + { + } + + [TestMethod] + public void Test_190_04() + { + } + + [TestMethod] + public void Test_190_05() + { + } + + [TestMethod] + public void Test_190_06() + { + } + + [TestMethod] + public void Test_190_07() + { + } + + [TestMethod] + public void Test_190_08() + { + } + + [TestMethod] + public void Test_190_09() + { + } + + [TestMethod] + public void Test_190_10() + { + } + + [TestMethod] + public void Test_190_11() + { + } + + [TestMethod] + public void Test_190_12() + { + } + + [TestMethod] + public void Test_190_13() + { + } + + [TestMethod] + public void Test_190_14() + { + } + + [TestMethod] + public void Test_190_15() + { + } + + [TestMethod] + public void Test_190_16() + { + } + + [TestMethod] + public void Test_190_17() + { + } + + [TestMethod] + public void Test_190_18() + { + } + + [TestMethod] + public void Test_190_19() + { + } + + [TestMethod] + public void Test_190_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_191 + { + #region PassingTests + [TestMethod] + public void Test_191_01() + { + } + + [TestMethod] + public void Test_191_02() + { + } + + [TestMethod] + public void Test_191_03() + { + } + + [TestMethod] + public void Test_191_04() + { + } + + [TestMethod] + public void Test_191_05() + { + } + + [TestMethod] + public void Test_191_06() + { + } + + [TestMethod] + public void Test_191_07() + { + } + + [TestMethod] + public void Test_191_08() + { + } + + [TestMethod] + public void Test_191_09() + { + } + + [TestMethod] + public void Test_191_10() + { + } + + [TestMethod] + public void Test_191_11() + { + } + + [TestMethod] + public void Test_191_12() + { + } + + [TestMethod] + public void Test_191_13() + { + } + + [TestMethod] + public void Test_191_14() + { + } + + [TestMethod] + public void Test_191_15() + { + } + + [TestMethod] + public void Test_191_16() + { + } + + [TestMethod] + public void Test_191_17() + { + } + + [TestMethod] + public void Test_191_18() + { + } + + [TestMethod] + public void Test_191_19() + { + } + + [TestMethod] + public void Test_191_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_192 + { + #region PassingTests + [TestMethod] + public void Test_192_01() + { + } + + [TestMethod] + public void Test_192_02() + { + } + + [TestMethod] + public void Test_192_03() + { + } + + [TestMethod] + public void Test_192_04() + { + } + + [TestMethod] + public void Test_192_05() + { + } + + [TestMethod] + public void Test_192_06() + { + } + + [TestMethod] + public void Test_192_07() + { + } + + [TestMethod] + public void Test_192_08() + { + } + + [TestMethod] + public void Test_192_09() + { + } + + [TestMethod] + public void Test_192_10() + { + } + + [TestMethod] + public void Test_192_11() + { + } + + [TestMethod] + public void Test_192_12() + { + } + + [TestMethod] + public void Test_192_13() + { + } + + [TestMethod] + public void Test_192_14() + { + } + + [TestMethod] + public void Test_192_15() + { + } + + [TestMethod] + public void Test_192_16() + { + } + + [TestMethod] + public void Test_192_17() + { + } + + [TestMethod] + public void Test_192_18() + { + } + + [TestMethod] + public void Test_192_19() + { + } + + [TestMethod] + public void Test_192_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_193 + { + #region PassingTests + [TestMethod] + public void Test_193_01() + { + } + + [TestMethod] + public void Test_193_02() + { + } + + [TestMethod] + public void Test_193_03() + { + } + + [TestMethod] + public void Test_193_04() + { + } + + [TestMethod] + public void Test_193_05() + { + } + + [TestMethod] + public void Test_193_06() + { + } + + [TestMethod] + public void Test_193_07() + { + } + + [TestMethod] + public void Test_193_08() + { + } + + [TestMethod] + public void Test_193_09() + { + } + + [TestMethod] + public void Test_193_10() + { + } + + [TestMethod] + public void Test_193_11() + { + } + + [TestMethod] + public void Test_193_12() + { + } + + [TestMethod] + public void Test_193_13() + { + } + + [TestMethod] + public void Test_193_14() + { + } + + [TestMethod] + public void Test_193_15() + { + } + + [TestMethod] + public void Test_193_16() + { + } + + [TestMethod] + public void Test_193_17() + { + } + + [TestMethod] + public void Test_193_18() + { + } + + [TestMethod] + public void Test_193_19() + { + } + + [TestMethod] + public void Test_193_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_194 + { + #region PassingTests + [TestMethod] + public void Test_194_01() + { + } + + [TestMethod] + public void Test_194_02() + { + } + + [TestMethod] + public void Test_194_03() + { + } + + [TestMethod] + public void Test_194_04() + { + } + + [TestMethod] + public void Test_194_05() + { + } + + [TestMethod] + public void Test_194_06() + { + } + + [TestMethod] + public void Test_194_07() + { + } + + [TestMethod] + public void Test_194_08() + { + } + + [TestMethod] + public void Test_194_09() + { + } + + [TestMethod] + public void Test_194_10() + { + } + + [TestMethod] + public void Test_194_11() + { + } + + [TestMethod] + public void Test_194_12() + { + } + + [TestMethod] + public void Test_194_13() + { + } + + [TestMethod] + public void Test_194_14() + { + } + + [TestMethod] + public void Test_194_15() + { + } + + [TestMethod] + public void Test_194_16() + { + } + + [TestMethod] + public void Test_194_17() + { + } + + [TestMethod] + public void Test_194_18() + { + } + + [TestMethod] + public void Test_194_19() + { + } + + [TestMethod] + public void Test_194_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_195 + { + #region PassingTests + [TestMethod] + public void Test_195_01() + { + } + + [TestMethod] + public void Test_195_02() + { + } + + [TestMethod] + public void Test_195_03() + { + } + + [TestMethod] + public void Test_195_04() + { + } + + [TestMethod] + public void Test_195_05() + { + } + + [TestMethod] + public void Test_195_06() + { + } + + [TestMethod] + public void Test_195_07() + { + } + + [TestMethod] + public void Test_195_08() + { + } + + [TestMethod] + public void Test_195_09() + { + } + + [TestMethod] + public void Test_195_10() + { + } + + [TestMethod] + public void Test_195_11() + { + } + + [TestMethod] + public void Test_195_12() + { + } + + [TestMethod] + public void Test_195_13() + { + } + + [TestMethod] + public void Test_195_14() + { + } + + [TestMethod] + public void Test_195_15() + { + } + + [TestMethod] + public void Test_195_16() + { + } + + [TestMethod] + public void Test_195_17() + { + } + + [TestMethod] + public void Test_195_18() + { + } + + [TestMethod] + public void Test_195_19() + { + } + + [TestMethod] + public void Test_195_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_196 + { + #region PassingTests + [TestMethod] + public void Test_196_01() + { + } + + [TestMethod] + public void Test_196_02() + { + } + + [TestMethod] + public void Test_196_03() + { + } + + [TestMethod] + public void Test_196_04() + { + } + + [TestMethod] + public void Test_196_05() + { + } + + [TestMethod] + public void Test_196_06() + { + } + + [TestMethod] + public void Test_196_07() + { + } + + [TestMethod] + public void Test_196_08() + { + } + + [TestMethod] + public void Test_196_09() + { + } + + [TestMethod] + public void Test_196_10() + { + } + + [TestMethod] + public void Test_196_11() + { + } + + [TestMethod] + public void Test_196_12() + { + } + + [TestMethod] + public void Test_196_13() + { + } + + [TestMethod] + public void Test_196_14() + { + } + + [TestMethod] + public void Test_196_15() + { + } + + [TestMethod] + public void Test_196_16() + { + } + + [TestMethod] + public void Test_196_17() + { + } + + [TestMethod] + public void Test_196_18() + { + } + + [TestMethod] + public void Test_196_19() + { + } + + [TestMethod] + public void Test_196_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_197 + { + #region PassingTests + [TestMethod] + public void Test_197_01() + { + } + + [TestMethod] + public void Test_197_02() + { + } + + [TestMethod] + public void Test_197_03() + { + } + + [TestMethod] + public void Test_197_04() + { + } + + [TestMethod] + public void Test_197_05() + { + } + + [TestMethod] + public void Test_197_06() + { + } + + [TestMethod] + public void Test_197_07() + { + } + + [TestMethod] + public void Test_197_08() + { + } + + [TestMethod] + public void Test_197_09() + { + } + + [TestMethod] + public void Test_197_10() + { + } + + [TestMethod] + public void Test_197_11() + { + } + + [TestMethod] + public void Test_197_12() + { + } + + [TestMethod] + public void Test_197_13() + { + } + + [TestMethod] + public void Test_197_14() + { + } + + [TestMethod] + public void Test_197_15() + { + } + + [TestMethod] + public void Test_197_16() + { + } + + [TestMethod] + public void Test_197_17() + { + } + + [TestMethod] + public void Test_197_18() + { + } + + [TestMethod] + public void Test_197_19() + { + } + + [TestMethod] + public void Test_197_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_198 + { + #region PassingTests + [TestMethod] + public void Test_198_01() + { + } + + [TestMethod] + public void Test_198_02() + { + } + + [TestMethod] + public void Test_198_03() + { + } + + [TestMethod] + public void Test_198_04() + { + } + + [TestMethod] + public void Test_198_05() + { + } + + [TestMethod] + public void Test_198_06() + { + } + + [TestMethod] + public void Test_198_07() + { + } + + [TestMethod] + public void Test_198_08() + { + } + + [TestMethod] + public void Test_198_09() + { + } + + [TestMethod] + public void Test_198_10() + { + } + + [TestMethod] + public void Test_198_11() + { + } + + [TestMethod] + public void Test_198_12() + { + } + + [TestMethod] + public void Test_198_13() + { + } + + [TestMethod] + public void Test_198_14() + { + } + + [TestMethod] + public void Test_198_15() + { + } + + [TestMethod] + public void Test_198_16() + { + } + + [TestMethod] + public void Test_198_17() + { + } + + [TestMethod] + public void Test_198_18() + { + } + + [TestMethod] + public void Test_198_19() + { + } + + [TestMethod] + public void Test_198_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_199 + { + #region PassingTests + [TestMethod] + public void Test_199_01() + { + } + + [TestMethod] + public void Test_199_02() + { + } + + [TestMethod] + public void Test_199_03() + { + } + + [TestMethod] + public void Test_199_04() + { + } + + [TestMethod] + public void Test_199_05() + { + } + + [TestMethod] + public void Test_199_06() + { + } + + [TestMethod] + public void Test_199_07() + { + } + + [TestMethod] + public void Test_199_08() + { + } + + [TestMethod] + public void Test_199_09() + { + } + + [TestMethod] + public void Test_199_10() + { + } + + [TestMethod] + public void Test_199_11() + { + } + + [TestMethod] + public void Test_199_12() + { + } + + [TestMethod] + public void Test_199_13() + { + } + + [TestMethod] + public void Test_199_14() + { + } + + [TestMethod] + public void Test_199_15() + { + } + + [TestMethod] + public void Test_199_16() + { + } + + [TestMethod] + public void Test_199_17() + { + } + + [TestMethod] + public void Test_199_18() + { + } + + [TestMethod] + public void Test_199_19() + { + } + + [TestMethod] + public void Test_199_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_200 + { + #region PassingTests + [TestMethod] + public void Test_200_01() + { + } + + [TestMethod] + public void Test_200_02() + { + } + + [TestMethod] + public void Test_200_03() + { + } + + [TestMethod] + public void Test_200_04() + { + } + + [TestMethod] + public void Test_200_05() + { + } + + [TestMethod] + public void Test_200_06() + { + } + + [TestMethod] + public void Test_200_07() + { + } + + [TestMethod] + public void Test_200_08() + { + } + + [TestMethod] + public void Test_200_09() + { + } + + [TestMethod] + public void Test_200_10() + { + } + + [TestMethod] + public void Test_200_11() + { + } + + [TestMethod] + public void Test_200_12() + { + } + + [TestMethod] + public void Test_200_13() + { + } + + [TestMethod] + public void Test_200_14() + { + } + + [TestMethod] + public void Test_200_15() + { + } + + [TestMethod] + public void Test_200_16() + { + } + + [TestMethod] + public void Test_200_17() + { + } + + [TestMethod] + public void Test_200_18() + { + } + + [TestMethod] + public void Test_200_19() + { + } + + [TestMethod] + public void Test_200_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_201 + { + #region PassingTests + [TestMethod] + public void Test_201_01() + { + } + + [TestMethod] + public void Test_201_02() + { + } + + [TestMethod] + public void Test_201_03() + { + } + + [TestMethod] + public void Test_201_04() + { + } + + [TestMethod] + public void Test_201_05() + { + } + + [TestMethod] + public void Test_201_06() + { + } + + [TestMethod] + public void Test_201_07() + { + } + + [TestMethod] + public void Test_201_08() + { + } + + [TestMethod] + public void Test_201_09() + { + } + + [TestMethod] + public void Test_201_10() + { + } + + [TestMethod] + public void Test_201_11() + { + } + + [TestMethod] + public void Test_201_12() + { + } + + [TestMethod] + public void Test_201_13() + { + } + + [TestMethod] + public void Test_201_14() + { + } + + [TestMethod] + public void Test_201_15() + { + } + + [TestMethod] + public void Test_201_16() + { + } + + [TestMethod] + public void Test_201_17() + { + } + + [TestMethod] + public void Test_201_18() + { + } + + [TestMethod] + public void Test_201_19() + { + } + + [TestMethod] + public void Test_201_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_202 + { + #region PassingTests + [TestMethod] + public void Test_202_01() + { + } + + [TestMethod] + public void Test_202_02() + { + } + + [TestMethod] + public void Test_202_03() + { + } + + [TestMethod] + public void Test_202_04() + { + } + + [TestMethod] + public void Test_202_05() + { + } + + [TestMethod] + public void Test_202_06() + { + } + + [TestMethod] + public void Test_202_07() + { + } + + [TestMethod] + public void Test_202_08() + { + } + + [TestMethod] + public void Test_202_09() + { + } + + [TestMethod] + public void Test_202_10() + { + } + + [TestMethod] + public void Test_202_11() + { + } + + [TestMethod] + public void Test_202_12() + { + } + + [TestMethod] + public void Test_202_13() + { + } + + [TestMethod] + public void Test_202_14() + { + } + + [TestMethod] + public void Test_202_15() + { + } + + [TestMethod] + public void Test_202_16() + { + } + + [TestMethod] + public void Test_202_17() + { + } + + [TestMethod] + public void Test_202_18() + { + } + + [TestMethod] + public void Test_202_19() + { + } + + [TestMethod] + public void Test_202_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_203 + { + #region PassingTests + [TestMethod] + public void Test_203_01() + { + } + + [TestMethod] + public void Test_203_02() + { + } + + [TestMethod] + public void Test_203_03() + { + } + + [TestMethod] + public void Test_203_04() + { + } + + [TestMethod] + public void Test_203_05() + { + } + + [TestMethod] + public void Test_203_06() + { + } + + [TestMethod] + public void Test_203_07() + { + } + + [TestMethod] + public void Test_203_08() + { + } + + [TestMethod] + public void Test_203_09() + { + } + + [TestMethod] + public void Test_203_10() + { + } + + [TestMethod] + public void Test_203_11() + { + } + + [TestMethod] + public void Test_203_12() + { + } + + [TestMethod] + public void Test_203_13() + { + } + + [TestMethod] + public void Test_203_14() + { + } + + [TestMethod] + public void Test_203_15() + { + } + + [TestMethod] + public void Test_203_16() + { + } + + [TestMethod] + public void Test_203_17() + { + } + + [TestMethod] + public void Test_203_18() + { + } + + [TestMethod] + public void Test_203_19() + { + } + + [TestMethod] + public void Test_203_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_204 + { + #region PassingTests + [TestMethod] + public void Test_204_01() + { + } + + [TestMethod] + public void Test_204_02() + { + } + + [TestMethod] + public void Test_204_03() + { + } + + [TestMethod] + public void Test_204_04() + { + } + + [TestMethod] + public void Test_204_05() + { + } + + [TestMethod] + public void Test_204_06() + { + } + + [TestMethod] + public void Test_204_07() + { + } + + [TestMethod] + public void Test_204_08() + { + } + + [TestMethod] + public void Test_204_09() + { + } + + [TestMethod] + public void Test_204_10() + { + } + + [TestMethod] + public void Test_204_11() + { + } + + [TestMethod] + public void Test_204_12() + { + } + + [TestMethod] + public void Test_204_13() + { + } + + [TestMethod] + public void Test_204_14() + { + } + + [TestMethod] + public void Test_204_15() + { + } + + [TestMethod] + public void Test_204_16() + { + } + + [TestMethod] + public void Test_204_17() + { + } + + [TestMethod] + public void Test_204_18() + { + } + + [TestMethod] + public void Test_204_19() + { + } + + [TestMethod] + public void Test_204_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_205 + { + #region PassingTests + [TestMethod] + public void Test_205_01() + { + } + + [TestMethod] + public void Test_205_02() + { + } + + [TestMethod] + public void Test_205_03() + { + } + + [TestMethod] + public void Test_205_04() + { + } + + [TestMethod] + public void Test_205_05() + { + } + + [TestMethod] + public void Test_205_06() + { + } + + [TestMethod] + public void Test_205_07() + { + } + + [TestMethod] + public void Test_205_08() + { + } + + [TestMethod] + public void Test_205_09() + { + } + + [TestMethod] + public void Test_205_10() + { + } + + [TestMethod] + public void Test_205_11() + { + } + + [TestMethod] + public void Test_205_12() + { + } + + [TestMethod] + public void Test_205_13() + { + } + + [TestMethod] + public void Test_205_14() + { + } + + [TestMethod] + public void Test_205_15() + { + } + + [TestMethod] + public void Test_205_16() + { + } + + [TestMethod] + public void Test_205_17() + { + } + + [TestMethod] + public void Test_205_18() + { + } + + [TestMethod] + public void Test_205_19() + { + } + + [TestMethod] + public void Test_205_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_206 + { + #region PassingTests + [TestMethod] + public void Test_206_01() + { + } + + [TestMethod] + public void Test_206_02() + { + } + + [TestMethod] + public void Test_206_03() + { + } + + [TestMethod] + public void Test_206_04() + { + } + + [TestMethod] + public void Test_206_05() + { + } + + [TestMethod] + public void Test_206_06() + { + } + + [TestMethod] + public void Test_206_07() + { + } + + [TestMethod] + public void Test_206_08() + { + } + + [TestMethod] + public void Test_206_09() + { + } + + [TestMethod] + public void Test_206_10() + { + } + + [TestMethod] + public void Test_206_11() + { + } + + [TestMethod] + public void Test_206_12() + { + } + + [TestMethod] + public void Test_206_13() + { + } + + [TestMethod] + public void Test_206_14() + { + } + + [TestMethod] + public void Test_206_15() + { + } + + [TestMethod] + public void Test_206_16() + { + } + + [TestMethod] + public void Test_206_17() + { + } + + [TestMethod] + public void Test_206_18() + { + } + + [TestMethod] + public void Test_206_19() + { + } + + [TestMethod] + public void Test_206_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_207 + { + #region PassingTests + [TestMethod] + public void Test_207_01() + { + } + + [TestMethod] + public void Test_207_02() + { + } + + [TestMethod] + public void Test_207_03() + { + } + + [TestMethod] + public void Test_207_04() + { + } + + [TestMethod] + public void Test_207_05() + { + } + + [TestMethod] + public void Test_207_06() + { + } + + [TestMethod] + public void Test_207_07() + { + } + + [TestMethod] + public void Test_207_08() + { + } + + [TestMethod] + public void Test_207_09() + { + } + + [TestMethod] + public void Test_207_10() + { + } + + [TestMethod] + public void Test_207_11() + { + } + + [TestMethod] + public void Test_207_12() + { + } + + [TestMethod] + public void Test_207_13() + { + } + + [TestMethod] + public void Test_207_14() + { + } + + [TestMethod] + public void Test_207_15() + { + } + + [TestMethod] + public void Test_207_16() + { + } + + [TestMethod] + public void Test_207_17() + { + } + + [TestMethod] + public void Test_207_18() + { + } + + [TestMethod] + public void Test_207_19() + { + } + + [TestMethod] + public void Test_207_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_208 + { + #region PassingTests + [TestMethod] + public void Test_208_01() + { + } + + [TestMethod] + public void Test_208_02() + { + } + + [TestMethod] + public void Test_208_03() + { + } + + [TestMethod] + public void Test_208_04() + { + } + + [TestMethod] + public void Test_208_05() + { + } + + [TestMethod] + public void Test_208_06() + { + } + + [TestMethod] + public void Test_208_07() + { + } + + [TestMethod] + public void Test_208_08() + { + } + + [TestMethod] + public void Test_208_09() + { + } + + [TestMethod] + public void Test_208_10() + { + } + + [TestMethod] + public void Test_208_11() + { + } + + [TestMethod] + public void Test_208_12() + { + } + + [TestMethod] + public void Test_208_13() + { + } + + [TestMethod] + public void Test_208_14() + { + } + + [TestMethod] + public void Test_208_15() + { + } + + [TestMethod] + public void Test_208_16() + { + } + + [TestMethod] + public void Test_208_17() + { + } + + [TestMethod] + public void Test_208_18() + { + } + + [TestMethod] + public void Test_208_19() + { + } + + [TestMethod] + public void Test_208_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_209 + { + #region PassingTests + [TestMethod] + public void Test_209_01() + { + } + + [TestMethod] + public void Test_209_02() + { + } + + [TestMethod] + public void Test_209_03() + { + } + + [TestMethod] + public void Test_209_04() + { + } + + [TestMethod] + public void Test_209_05() + { + } + + [TestMethod] + public void Test_209_06() + { + } + + [TestMethod] + public void Test_209_07() + { + } + + [TestMethod] + public void Test_209_08() + { + } + + [TestMethod] + public void Test_209_09() + { + } + + [TestMethod] + public void Test_209_10() + { + } + + [TestMethod] + public void Test_209_11() + { + } + + [TestMethod] + public void Test_209_12() + { + } + + [TestMethod] + public void Test_209_13() + { + } + + [TestMethod] + public void Test_209_14() + { + } + + [TestMethod] + public void Test_209_15() + { + } + + [TestMethod] + public void Test_209_16() + { + } + + [TestMethod] + public void Test_209_17() + { + } + + [TestMethod] + public void Test_209_18() + { + } + + [TestMethod] + public void Test_209_19() + { + } + + [TestMethod] + public void Test_209_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_210 + { + #region PassingTests + [TestMethod] + public void Test_210_01() + { + } + + [TestMethod] + public void Test_210_02() + { + } + + [TestMethod] + public void Test_210_03() + { + } + + [TestMethod] + public void Test_210_04() + { + } + + [TestMethod] + public void Test_210_05() + { + } + + [TestMethod] + public void Test_210_06() + { + } + + [TestMethod] + public void Test_210_07() + { + } + + [TestMethod] + public void Test_210_08() + { + } + + [TestMethod] + public void Test_210_09() + { + } + + [TestMethod] + public void Test_210_10() + { + } + + [TestMethod] + public void Test_210_11() + { + } + + [TestMethod] + public void Test_210_12() + { + } + + [TestMethod] + public void Test_210_13() + { + } + + [TestMethod] + public void Test_210_14() + { + } + + [TestMethod] + public void Test_210_15() + { + } + + [TestMethod] + public void Test_210_16() + { + } + + [TestMethod] + public void Test_210_17() + { + } + + [TestMethod] + public void Test_210_18() + { + } + + [TestMethod] + public void Test_210_19() + { + } + + [TestMethod] + public void Test_210_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_211 + { + #region PassingTests + [TestMethod] + public void Test_211_01() + { + } + + [TestMethod] + public void Test_211_02() + { + } + + [TestMethod] + public void Test_211_03() + { + } + + [TestMethod] + public void Test_211_04() + { + } + + [TestMethod] + public void Test_211_05() + { + } + + [TestMethod] + public void Test_211_06() + { + } + + [TestMethod] + public void Test_211_07() + { + } + + [TestMethod] + public void Test_211_08() + { + } + + [TestMethod] + public void Test_211_09() + { + } + + [TestMethod] + public void Test_211_10() + { + } + + [TestMethod] + public void Test_211_11() + { + } + + [TestMethod] + public void Test_211_12() + { + } + + [TestMethod] + public void Test_211_13() + { + } + + [TestMethod] + public void Test_211_14() + { + } + + [TestMethod] + public void Test_211_15() + { + } + + [TestMethod] + public void Test_211_16() + { + } + + [TestMethod] + public void Test_211_17() + { + } + + [TestMethod] + public void Test_211_18() + { + } + + [TestMethod] + public void Test_211_19() + { + } + + [TestMethod] + public void Test_211_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_212 + { + #region PassingTests + [TestMethod] + public void Test_212_01() + { + } + + [TestMethod] + public void Test_212_02() + { + } + + [TestMethod] + public void Test_212_03() + { + } + + [TestMethod] + public void Test_212_04() + { + } + + [TestMethod] + public void Test_212_05() + { + } + + [TestMethod] + public void Test_212_06() + { + } + + [TestMethod] + public void Test_212_07() + { + } + + [TestMethod] + public void Test_212_08() + { + } + + [TestMethod] + public void Test_212_09() + { + } + + [TestMethod] + public void Test_212_10() + { + } + + [TestMethod] + public void Test_212_11() + { + } + + [TestMethod] + public void Test_212_12() + { + } + + [TestMethod] + public void Test_212_13() + { + } + + [TestMethod] + public void Test_212_14() + { + } + + [TestMethod] + public void Test_212_15() + { + } + + [TestMethod] + public void Test_212_16() + { + } + + [TestMethod] + public void Test_212_17() + { + } + + [TestMethod] + public void Test_212_18() + { + } + + [TestMethod] + public void Test_212_19() + { + } + + [TestMethod] + public void Test_212_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_213 + { + #region PassingTests + [TestMethod] + public void Test_213_01() + { + } + + [TestMethod] + public void Test_213_02() + { + } + + [TestMethod] + public void Test_213_03() + { + } + + [TestMethod] + public void Test_213_04() + { + } + + [TestMethod] + public void Test_213_05() + { + } + + [TestMethod] + public void Test_213_06() + { + } + + [TestMethod] + public void Test_213_07() + { + } + + [TestMethod] + public void Test_213_08() + { + } + + [TestMethod] + public void Test_213_09() + { + } + + [TestMethod] + public void Test_213_10() + { + } + + [TestMethod] + public void Test_213_11() + { + } + + [TestMethod] + public void Test_213_12() + { + } + + [TestMethod] + public void Test_213_13() + { + } + + [TestMethod] + public void Test_213_14() + { + } + + [TestMethod] + public void Test_213_15() + { + } + + [TestMethod] + public void Test_213_16() + { + } + + [TestMethod] + public void Test_213_17() + { + } + + [TestMethod] + public void Test_213_18() + { + } + + [TestMethod] + public void Test_213_19() + { + } + + [TestMethod] + public void Test_213_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_214 + { + #region PassingTests + [TestMethod] + public void Test_214_01() + { + } + + [TestMethod] + public void Test_214_02() + { + } + + [TestMethod] + public void Test_214_03() + { + } + + [TestMethod] + public void Test_214_04() + { + } + + [TestMethod] + public void Test_214_05() + { + } + + [TestMethod] + public void Test_214_06() + { + } + + [TestMethod] + public void Test_214_07() + { + } + + [TestMethod] + public void Test_214_08() + { + } + + [TestMethod] + public void Test_214_09() + { + } + + [TestMethod] + public void Test_214_10() + { + } + + [TestMethod] + public void Test_214_11() + { + } + + [TestMethod] + public void Test_214_12() + { + } + + [TestMethod] + public void Test_214_13() + { + } + + [TestMethod] + public void Test_214_14() + { + } + + [TestMethod] + public void Test_214_15() + { + } + + [TestMethod] + public void Test_214_16() + { + } + + [TestMethod] + public void Test_214_17() + { + } + + [TestMethod] + public void Test_214_18() + { + } + + [TestMethod] + public void Test_214_19() + { + } + + [TestMethod] + public void Test_214_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_215 + { + #region PassingTests + [TestMethod] + public void Test_215_01() + { + } + + [TestMethod] + public void Test_215_02() + { + } + + [TestMethod] + public void Test_215_03() + { + } + + [TestMethod] + public void Test_215_04() + { + } + + [TestMethod] + public void Test_215_05() + { + } + + [TestMethod] + public void Test_215_06() + { + } + + [TestMethod] + public void Test_215_07() + { + } + + [TestMethod] + public void Test_215_08() + { + } + + [TestMethod] + public void Test_215_09() + { + } + + [TestMethod] + public void Test_215_10() + { + } + + [TestMethod] + public void Test_215_11() + { + } + + [TestMethod] + public void Test_215_12() + { + } + + [TestMethod] + public void Test_215_13() + { + } + + [TestMethod] + public void Test_215_14() + { + } + + [TestMethod] + public void Test_215_15() + { + } + + [TestMethod] + public void Test_215_16() + { + } + + [TestMethod] + public void Test_215_17() + { + } + + [TestMethod] + public void Test_215_18() + { + } + + [TestMethod] + public void Test_215_19() + { + } + + [TestMethod] + public void Test_215_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_216 + { + #region PassingTests + [TestMethod] + public void Test_216_01() + { + } + + [TestMethod] + public void Test_216_02() + { + } + + [TestMethod] + public void Test_216_03() + { + } + + [TestMethod] + public void Test_216_04() + { + } + + [TestMethod] + public void Test_216_05() + { + } + + [TestMethod] + public void Test_216_06() + { + } + + [TestMethod] + public void Test_216_07() + { + } + + [TestMethod] + public void Test_216_08() + { + } + + [TestMethod] + public void Test_216_09() + { + } + + [TestMethod] + public void Test_216_10() + { + } + + [TestMethod] + public void Test_216_11() + { + } + + [TestMethod] + public void Test_216_12() + { + } + + [TestMethod] + public void Test_216_13() + { + } + + [TestMethod] + public void Test_216_14() + { + } + + [TestMethod] + public void Test_216_15() + { + } + + [TestMethod] + public void Test_216_16() + { + } + + [TestMethod] + public void Test_216_17() + { + } + + [TestMethod] + public void Test_216_18() + { + } + + [TestMethod] + public void Test_216_19() + { + } + + [TestMethod] + public void Test_216_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_217 + { + #region PassingTests + [TestMethod] + public void Test_217_01() + { + } + + [TestMethod] + public void Test_217_02() + { + } + + [TestMethod] + public void Test_217_03() + { + } + + [TestMethod] + public void Test_217_04() + { + } + + [TestMethod] + public void Test_217_05() + { + } + + [TestMethod] + public void Test_217_06() + { + } + + [TestMethod] + public void Test_217_07() + { + } + + [TestMethod] + public void Test_217_08() + { + } + + [TestMethod] + public void Test_217_09() + { + } + + [TestMethod] + public void Test_217_10() + { + } + + [TestMethod] + public void Test_217_11() + { + } + + [TestMethod] + public void Test_217_12() + { + } + + [TestMethod] + public void Test_217_13() + { + } + + [TestMethod] + public void Test_217_14() + { + } + + [TestMethod] + public void Test_217_15() + { + } + + [TestMethod] + public void Test_217_16() + { + } + + [TestMethod] + public void Test_217_17() + { + } + + [TestMethod] + public void Test_217_18() + { + } + + [TestMethod] + public void Test_217_19() + { + } + + [TestMethod] + public void Test_217_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_218 + { + #region PassingTests + [TestMethod] + public void Test_218_01() + { + } + + [TestMethod] + public void Test_218_02() + { + } + + [TestMethod] + public void Test_218_03() + { + } + + [TestMethod] + public void Test_218_04() + { + } + + [TestMethod] + public void Test_218_05() + { + } + + [TestMethod] + public void Test_218_06() + { + } + + [TestMethod] + public void Test_218_07() + { + } + + [TestMethod] + public void Test_218_08() + { + } + + [TestMethod] + public void Test_218_09() + { + } + + [TestMethod] + public void Test_218_10() + { + } + + [TestMethod] + public void Test_218_11() + { + } + + [TestMethod] + public void Test_218_12() + { + } + + [TestMethod] + public void Test_218_13() + { + } + + [TestMethod] + public void Test_218_14() + { + } + + [TestMethod] + public void Test_218_15() + { + } + + [TestMethod] + public void Test_218_16() + { + } + + [TestMethod] + public void Test_218_17() + { + } + + [TestMethod] + public void Test_218_18() + { + } + + [TestMethod] + public void Test_218_19() + { + } + + [TestMethod] + public void Test_218_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_219 + { + #region PassingTests + [TestMethod] + public void Test_219_01() + { + } + + [TestMethod] + public void Test_219_02() + { + } + + [TestMethod] + public void Test_219_03() + { + } + + [TestMethod] + public void Test_219_04() + { + } + + [TestMethod] + public void Test_219_05() + { + } + + [TestMethod] + public void Test_219_06() + { + } + + [TestMethod] + public void Test_219_07() + { + } + + [TestMethod] + public void Test_219_08() + { + } + + [TestMethod] + public void Test_219_09() + { + } + + [TestMethod] + public void Test_219_10() + { + } + + [TestMethod] + public void Test_219_11() + { + } + + [TestMethod] + public void Test_219_12() + { + } + + [TestMethod] + public void Test_219_13() + { + } + + [TestMethod] + public void Test_219_14() + { + } + + [TestMethod] + public void Test_219_15() + { + } + + [TestMethod] + public void Test_219_16() + { + } + + [TestMethod] + public void Test_219_17() + { + } + + [TestMethod] + public void Test_219_18() + { + } + + [TestMethod] + public void Test_219_19() + { + } + + [TestMethod] + public void Test_219_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_220 + { + #region PassingTests + [TestMethod] + public void Test_220_01() + { + } + + [TestMethod] + public void Test_220_02() + { + } + + [TestMethod] + public void Test_220_03() + { + } + + [TestMethod] + public void Test_220_04() + { + } + + [TestMethod] + public void Test_220_05() + { + } + + [TestMethod] + public void Test_220_06() + { + } + + [TestMethod] + public void Test_220_07() + { + } + + [TestMethod] + public void Test_220_08() + { + } + + [TestMethod] + public void Test_220_09() + { + } + + [TestMethod] + public void Test_220_10() + { + } + + [TestMethod] + public void Test_220_11() + { + } + + [TestMethod] + public void Test_220_12() + { + } + + [TestMethod] + public void Test_220_13() + { + } + + [TestMethod] + public void Test_220_14() + { + } + + [TestMethod] + public void Test_220_15() + { + } + + [TestMethod] + public void Test_220_16() + { + } + + [TestMethod] + public void Test_220_17() + { + } + + [TestMethod] + public void Test_220_18() + { + } + + [TestMethod] + public void Test_220_19() + { + } + + [TestMethod] + public void Test_220_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_221 + { + #region PassingTests + [TestMethod] + public void Test_221_01() + { + } + + [TestMethod] + public void Test_221_02() + { + } + + [TestMethod] + public void Test_221_03() + { + } + + [TestMethod] + public void Test_221_04() + { + } + + [TestMethod] + public void Test_221_05() + { + } + + [TestMethod] + public void Test_221_06() + { + } + + [TestMethod] + public void Test_221_07() + { + } + + [TestMethod] + public void Test_221_08() + { + } + + [TestMethod] + public void Test_221_09() + { + } + + [TestMethod] + public void Test_221_10() + { + } + + [TestMethod] + public void Test_221_11() + { + } + + [TestMethod] + public void Test_221_12() + { + } + + [TestMethod] + public void Test_221_13() + { + } + + [TestMethod] + public void Test_221_14() + { + } + + [TestMethod] + public void Test_221_15() + { + } + + [TestMethod] + public void Test_221_16() + { + } + + [TestMethod] + public void Test_221_17() + { + } + + [TestMethod] + public void Test_221_18() + { + } + + [TestMethod] + public void Test_221_19() + { + } + + [TestMethod] + public void Test_221_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_222 + { + #region PassingTests + [TestMethod] + public void Test_222_01() + { + } + + [TestMethod] + public void Test_222_02() + { + } + + [TestMethod] + public void Test_222_03() + { + } + + [TestMethod] + public void Test_222_04() + { + } + + [TestMethod] + public void Test_222_05() + { + } + + [TestMethod] + public void Test_222_06() + { + } + + [TestMethod] + public void Test_222_07() + { + } + + [TestMethod] + public void Test_222_08() + { + } + + [TestMethod] + public void Test_222_09() + { + } + + [TestMethod] + public void Test_222_10() + { + } + + [TestMethod] + public void Test_222_11() + { + } + + [TestMethod] + public void Test_222_12() + { + } + + [TestMethod] + public void Test_222_13() + { + } + + [TestMethod] + public void Test_222_14() + { + } + + [TestMethod] + public void Test_222_15() + { + } + + [TestMethod] + public void Test_222_16() + { + } + + [TestMethod] + public void Test_222_17() + { + } + + [TestMethod] + public void Test_222_18() + { + } + + [TestMethod] + public void Test_222_19() + { + } + + [TestMethod] + public void Test_222_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_223 + { + #region PassingTests + [TestMethod] + public void Test_223_01() + { + } + + [TestMethod] + public void Test_223_02() + { + } + + [TestMethod] + public void Test_223_03() + { + } + + [TestMethod] + public void Test_223_04() + { + } + + [TestMethod] + public void Test_223_05() + { + } + + [TestMethod] + public void Test_223_06() + { + } + + [TestMethod] + public void Test_223_07() + { + } + + [TestMethod] + public void Test_223_08() + { + } + + [TestMethod] + public void Test_223_09() + { + } + + [TestMethod] + public void Test_223_10() + { + } + + [TestMethod] + public void Test_223_11() + { + } + + [TestMethod] + public void Test_223_12() + { + } + + [TestMethod] + public void Test_223_13() + { + } + + [TestMethod] + public void Test_223_14() + { + } + + [TestMethod] + public void Test_223_15() + { + } + + [TestMethod] + public void Test_223_16() + { + } + + [TestMethod] + public void Test_223_17() + { + } + + [TestMethod] + public void Test_223_18() + { + } + + [TestMethod] + public void Test_223_19() + { + } + + [TestMethod] + public void Test_223_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_224 + { + #region PassingTests + [TestMethod] + public void Test_224_01() + { + } + + [TestMethod] + public void Test_224_02() + { + } + + [TestMethod] + public void Test_224_03() + { + } + + [TestMethod] + public void Test_224_04() + { + } + + [TestMethod] + public void Test_224_05() + { + } + + [TestMethod] + public void Test_224_06() + { + } + + [TestMethod] + public void Test_224_07() + { + } + + [TestMethod] + public void Test_224_08() + { + } + + [TestMethod] + public void Test_224_09() + { + } + + [TestMethod] + public void Test_224_10() + { + } + + [TestMethod] + public void Test_224_11() + { + } + + [TestMethod] + public void Test_224_12() + { + } + + [TestMethod] + public void Test_224_13() + { + } + + [TestMethod] + public void Test_224_14() + { + } + + [TestMethod] + public void Test_224_15() + { + } + + [TestMethod] + public void Test_224_16() + { + } + + [TestMethod] + public void Test_224_17() + { + } + + [TestMethod] + public void Test_224_18() + { + } + + [TestMethod] + public void Test_224_19() + { + } + + [TestMethod] + public void Test_224_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_225 + { + #region PassingTests + [TestMethod] + public void Test_225_01() + { + } + + [TestMethod] + public void Test_225_02() + { + } + + [TestMethod] + public void Test_225_03() + { + } + + [TestMethod] + public void Test_225_04() + { + } + + [TestMethod] + public void Test_225_05() + { + } + + [TestMethod] + public void Test_225_06() + { + } + + [TestMethod] + public void Test_225_07() + { + } + + [TestMethod] + public void Test_225_08() + { + } + + [TestMethod] + public void Test_225_09() + { + } + + [TestMethod] + public void Test_225_10() + { + } + + [TestMethod] + public void Test_225_11() + { + } + + [TestMethod] + public void Test_225_12() + { + } + + [TestMethod] + public void Test_225_13() + { + } + + [TestMethod] + public void Test_225_14() + { + } + + [TestMethod] + public void Test_225_15() + { + } + + [TestMethod] + public void Test_225_16() + { + } + + [TestMethod] + public void Test_225_17() + { + } + + [TestMethod] + public void Test_225_18() + { + } + + [TestMethod] + public void Test_225_19() + { + } + + [TestMethod] + public void Test_225_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_226 + { + #region PassingTests + [TestMethod] + public void Test_226_01() + { + } + + [TestMethod] + public void Test_226_02() + { + } + + [TestMethod] + public void Test_226_03() + { + } + + [TestMethod] + public void Test_226_04() + { + } + + [TestMethod] + public void Test_226_05() + { + } + + [TestMethod] + public void Test_226_06() + { + } + + [TestMethod] + public void Test_226_07() + { + } + + [TestMethod] + public void Test_226_08() + { + } + + [TestMethod] + public void Test_226_09() + { + } + + [TestMethod] + public void Test_226_10() + { + } + + [TestMethod] + public void Test_226_11() + { + } + + [TestMethod] + public void Test_226_12() + { + } + + [TestMethod] + public void Test_226_13() + { + } + + [TestMethod] + public void Test_226_14() + { + } + + [TestMethod] + public void Test_226_15() + { + } + + [TestMethod] + public void Test_226_16() + { + } + + [TestMethod] + public void Test_226_17() + { + } + + [TestMethod] + public void Test_226_18() + { + } + + [TestMethod] + public void Test_226_19() + { + } + + [TestMethod] + public void Test_226_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_227 + { + #region PassingTests + [TestMethod] + public void Test_227_01() + { + } + + [TestMethod] + public void Test_227_02() + { + } + + [TestMethod] + public void Test_227_03() + { + } + + [TestMethod] + public void Test_227_04() + { + } + + [TestMethod] + public void Test_227_05() + { + } + + [TestMethod] + public void Test_227_06() + { + } + + [TestMethod] + public void Test_227_07() + { + } + + [TestMethod] + public void Test_227_08() + { + } + + [TestMethod] + public void Test_227_09() + { + } + + [TestMethod] + public void Test_227_10() + { + } + + [TestMethod] + public void Test_227_11() + { + } + + [TestMethod] + public void Test_227_12() + { + } + + [TestMethod] + public void Test_227_13() + { + } + + [TestMethod] + public void Test_227_14() + { + } + + [TestMethod] + public void Test_227_15() + { + } + + [TestMethod] + public void Test_227_16() + { + } + + [TestMethod] + public void Test_227_17() + { + } + + [TestMethod] + public void Test_227_18() + { + } + + [TestMethod] + public void Test_227_19() + { + } + + [TestMethod] + public void Test_227_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_228 + { + #region PassingTests + [TestMethod] + public void Test_228_01() + { + } + + [TestMethod] + public void Test_228_02() + { + } + + [TestMethod] + public void Test_228_03() + { + } + + [TestMethod] + public void Test_228_04() + { + } + + [TestMethod] + public void Test_228_05() + { + } + + [TestMethod] + public void Test_228_06() + { + } + + [TestMethod] + public void Test_228_07() + { + } + + [TestMethod] + public void Test_228_08() + { + } + + [TestMethod] + public void Test_228_09() + { + } + + [TestMethod] + public void Test_228_10() + { + } + + [TestMethod] + public void Test_228_11() + { + } + + [TestMethod] + public void Test_228_12() + { + } + + [TestMethod] + public void Test_228_13() + { + } + + [TestMethod] + public void Test_228_14() + { + } + + [TestMethod] + public void Test_228_15() + { + } + + [TestMethod] + public void Test_228_16() + { + } + + [TestMethod] + public void Test_228_17() + { + } + + [TestMethod] + public void Test_228_18() + { + } + + [TestMethod] + public void Test_228_19() + { + } + + [TestMethod] + public void Test_228_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_229 + { + #region PassingTests + [TestMethod] + public void Test_229_01() + { + } + + [TestMethod] + public void Test_229_02() + { + } + + [TestMethod] + public void Test_229_03() + { + } + + [TestMethod] + public void Test_229_04() + { + } + + [TestMethod] + public void Test_229_05() + { + } + + [TestMethod] + public void Test_229_06() + { + } + + [TestMethod] + public void Test_229_07() + { + } + + [TestMethod] + public void Test_229_08() + { + } + + [TestMethod] + public void Test_229_09() + { + } + + [TestMethod] + public void Test_229_10() + { + } + + [TestMethod] + public void Test_229_11() + { + } + + [TestMethod] + public void Test_229_12() + { + } + + [TestMethod] + public void Test_229_13() + { + } + + [TestMethod] + public void Test_229_14() + { + } + + [TestMethod] + public void Test_229_15() + { + } + + [TestMethod] + public void Test_229_16() + { + } + + [TestMethod] + public void Test_229_17() + { + } + + [TestMethod] + public void Test_229_18() + { + } + + [TestMethod] + public void Test_229_19() + { + } + + [TestMethod] + public void Test_229_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_230 + { + #region PassingTests + [TestMethod] + public void Test_230_01() + { + } + + [TestMethod] + public void Test_230_02() + { + } + + [TestMethod] + public void Test_230_03() + { + } + + [TestMethod] + public void Test_230_04() + { + } + + [TestMethod] + public void Test_230_05() + { + } + + [TestMethod] + public void Test_230_06() + { + } + + [TestMethod] + public void Test_230_07() + { + } + + [TestMethod] + public void Test_230_08() + { + } + + [TestMethod] + public void Test_230_09() + { + } + + [TestMethod] + public void Test_230_10() + { + } + + [TestMethod] + public void Test_230_11() + { + } + + [TestMethod] + public void Test_230_12() + { + } + + [TestMethod] + public void Test_230_13() + { + } + + [TestMethod] + public void Test_230_14() + { + } + + [TestMethod] + public void Test_230_15() + { + } + + [TestMethod] + public void Test_230_16() + { + } + + [TestMethod] + public void Test_230_17() + { + } + + [TestMethod] + public void Test_230_18() + { + } + + [TestMethod] + public void Test_230_19() + { + } + + [TestMethod] + public void Test_230_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_231 + { + #region PassingTests + [TestMethod] + public void Test_231_01() + { + } + + [TestMethod] + public void Test_231_02() + { + } + + [TestMethod] + public void Test_231_03() + { + } + + [TestMethod] + public void Test_231_04() + { + } + + [TestMethod] + public void Test_231_05() + { + } + + [TestMethod] + public void Test_231_06() + { + } + + [TestMethod] + public void Test_231_07() + { + } + + [TestMethod] + public void Test_231_08() + { + } + + [TestMethod] + public void Test_231_09() + { + } + + [TestMethod] + public void Test_231_10() + { + } + + [TestMethod] + public void Test_231_11() + { + } + + [TestMethod] + public void Test_231_12() + { + } + + [TestMethod] + public void Test_231_13() + { + } + + [TestMethod] + public void Test_231_14() + { + } + + [TestMethod] + public void Test_231_15() + { + } + + [TestMethod] + public void Test_231_16() + { + } + + [TestMethod] + public void Test_231_17() + { + } + + [TestMethod] + public void Test_231_18() + { + } + + [TestMethod] + public void Test_231_19() + { + } + + [TestMethod] + public void Test_231_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_232 + { + #region PassingTests + [TestMethod] + public void Test_232_01() + { + } + + [TestMethod] + public void Test_232_02() + { + } + + [TestMethod] + public void Test_232_03() + { + } + + [TestMethod] + public void Test_232_04() + { + } + + [TestMethod] + public void Test_232_05() + { + } + + [TestMethod] + public void Test_232_06() + { + } + + [TestMethod] + public void Test_232_07() + { + } + + [TestMethod] + public void Test_232_08() + { + } + + [TestMethod] + public void Test_232_09() + { + } + + [TestMethod] + public void Test_232_10() + { + } + + [TestMethod] + public void Test_232_11() + { + } + + [TestMethod] + public void Test_232_12() + { + } + + [TestMethod] + public void Test_232_13() + { + } + + [TestMethod] + public void Test_232_14() + { + } + + [TestMethod] + public void Test_232_15() + { + } + + [TestMethod] + public void Test_232_16() + { + } + + [TestMethod] + public void Test_232_17() + { + } + + [TestMethod] + public void Test_232_18() + { + } + + [TestMethod] + public void Test_232_19() + { + } + + [TestMethod] + public void Test_232_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_233 + { + #region PassingTests + [TestMethod] + public void Test_233_01() + { + } + + [TestMethod] + public void Test_233_02() + { + } + + [TestMethod] + public void Test_233_03() + { + } + + [TestMethod] + public void Test_233_04() + { + } + + [TestMethod] + public void Test_233_05() + { + } + + [TestMethod] + public void Test_233_06() + { + } + + [TestMethod] + public void Test_233_07() + { + } + + [TestMethod] + public void Test_233_08() + { + } + + [TestMethod] + public void Test_233_09() + { + } + + [TestMethod] + public void Test_233_10() + { + } + + [TestMethod] + public void Test_233_11() + { + } + + [TestMethod] + public void Test_233_12() + { + } + + [TestMethod] + public void Test_233_13() + { + } + + [TestMethod] + public void Test_233_14() + { + } + + [TestMethod] + public void Test_233_15() + { + } + + [TestMethod] + public void Test_233_16() + { + } + + [TestMethod] + public void Test_233_17() + { + } + + [TestMethod] + public void Test_233_18() + { + } + + [TestMethod] + public void Test_233_19() + { + } + + [TestMethod] + public void Test_233_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_234 + { + #region PassingTests + [TestMethod] + public void Test_234_01() + { + } + + [TestMethod] + public void Test_234_02() + { + } + + [TestMethod] + public void Test_234_03() + { + } + + [TestMethod] + public void Test_234_04() + { + } + + [TestMethod] + public void Test_234_05() + { + } + + [TestMethod] + public void Test_234_06() + { + } + + [TestMethod] + public void Test_234_07() + { + } + + [TestMethod] + public void Test_234_08() + { + } + + [TestMethod] + public void Test_234_09() + { + } + + [TestMethod] + public void Test_234_10() + { + } + + [TestMethod] + public void Test_234_11() + { + } + + [TestMethod] + public void Test_234_12() + { + } + + [TestMethod] + public void Test_234_13() + { + } + + [TestMethod] + public void Test_234_14() + { + } + + [TestMethod] + public void Test_234_15() + { + } + + [TestMethod] + public void Test_234_16() + { + } + + [TestMethod] + public void Test_234_17() + { + } + + [TestMethod] + public void Test_234_18() + { + } + + [TestMethod] + public void Test_234_19() + { + } + + [TestMethod] + public void Test_234_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_235 + { + #region PassingTests + [TestMethod] + public void Test_235_01() + { + } + + [TestMethod] + public void Test_235_02() + { + } + + [TestMethod] + public void Test_235_03() + { + } + + [TestMethod] + public void Test_235_04() + { + } + + [TestMethod] + public void Test_235_05() + { + } + + [TestMethod] + public void Test_235_06() + { + } + + [TestMethod] + public void Test_235_07() + { + } + + [TestMethod] + public void Test_235_08() + { + } + + [TestMethod] + public void Test_235_09() + { + } + + [TestMethod] + public void Test_235_10() + { + } + + [TestMethod] + public void Test_235_11() + { + } + + [TestMethod] + public void Test_235_12() + { + } + + [TestMethod] + public void Test_235_13() + { + } + + [TestMethod] + public void Test_235_14() + { + } + + [TestMethod] + public void Test_235_15() + { + } + + [TestMethod] + public void Test_235_16() + { + } + + [TestMethod] + public void Test_235_17() + { + } + + [TestMethod] + public void Test_235_18() + { + } + + [TestMethod] + public void Test_235_19() + { + } + + [TestMethod] + public void Test_235_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_236 + { + #region PassingTests + [TestMethod] + public void Test_236_01() + { + } + + [TestMethod] + public void Test_236_02() + { + } + + [TestMethod] + public void Test_236_03() + { + } + + [TestMethod] + public void Test_236_04() + { + } + + [TestMethod] + public void Test_236_05() + { + } + + [TestMethod] + public void Test_236_06() + { + } + + [TestMethod] + public void Test_236_07() + { + } + + [TestMethod] + public void Test_236_08() + { + } + + [TestMethod] + public void Test_236_09() + { + } + + [TestMethod] + public void Test_236_10() + { + } + + [TestMethod] + public void Test_236_11() + { + } + + [TestMethod] + public void Test_236_12() + { + } + + [TestMethod] + public void Test_236_13() + { + } + + [TestMethod] + public void Test_236_14() + { + } + + [TestMethod] + public void Test_236_15() + { + } + + [TestMethod] + public void Test_236_16() + { + } + + [TestMethod] + public void Test_236_17() + { + } + + [TestMethod] + public void Test_236_18() + { + } + + [TestMethod] + public void Test_236_19() + { + } + + [TestMethod] + public void Test_236_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_237 + { + #region PassingTests + [TestMethod] + public void Test_237_01() + { + } + + [TestMethod] + public void Test_237_02() + { + } + + [TestMethod] + public void Test_237_03() + { + } + + [TestMethod] + public void Test_237_04() + { + } + + [TestMethod] + public void Test_237_05() + { + } + + [TestMethod] + public void Test_237_06() + { + } + + [TestMethod] + public void Test_237_07() + { + } + + [TestMethod] + public void Test_237_08() + { + } + + [TestMethod] + public void Test_237_09() + { + } + + [TestMethod] + public void Test_237_10() + { + } + + [TestMethod] + public void Test_237_11() + { + } + + [TestMethod] + public void Test_237_12() + { + } + + [TestMethod] + public void Test_237_13() + { + } + + [TestMethod] + public void Test_237_14() + { + } + + [TestMethod] + public void Test_237_15() + { + } + + [TestMethod] + public void Test_237_16() + { + } + + [TestMethod] + public void Test_237_17() + { + } + + [TestMethod] + public void Test_237_18() + { + } + + [TestMethod] + public void Test_237_19() + { + } + + [TestMethod] + public void Test_237_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_238 + { + #region PassingTests + [TestMethod] + public void Test_238_01() + { + } + + [TestMethod] + public void Test_238_02() + { + } + + [TestMethod] + public void Test_238_03() + { + } + + [TestMethod] + public void Test_238_04() + { + } + + [TestMethod] + public void Test_238_05() + { + } + + [TestMethod] + public void Test_238_06() + { + } + + [TestMethod] + public void Test_238_07() + { + } + + [TestMethod] + public void Test_238_08() + { + } + + [TestMethod] + public void Test_238_09() + { + } + + [TestMethod] + public void Test_238_10() + { + } + + [TestMethod] + public void Test_238_11() + { + } + + [TestMethod] + public void Test_238_12() + { + } + + [TestMethod] + public void Test_238_13() + { + } + + [TestMethod] + public void Test_238_14() + { + } + + [TestMethod] + public void Test_238_15() + { + } + + [TestMethod] + public void Test_238_16() + { + } + + [TestMethod] + public void Test_238_17() + { + } + + [TestMethod] + public void Test_238_18() + { + } + + [TestMethod] + public void Test_238_19() + { + } + + [TestMethod] + public void Test_238_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_239 + { + #region PassingTests + [TestMethod] + public void Test_239_01() + { + } + + [TestMethod] + public void Test_239_02() + { + } + + [TestMethod] + public void Test_239_03() + { + } + + [TestMethod] + public void Test_239_04() + { + } + + [TestMethod] + public void Test_239_05() + { + } + + [TestMethod] + public void Test_239_06() + { + } + + [TestMethod] + public void Test_239_07() + { + } + + [TestMethod] + public void Test_239_08() + { + } + + [TestMethod] + public void Test_239_09() + { + } + + [TestMethod] + public void Test_239_10() + { + } + + [TestMethod] + public void Test_239_11() + { + } + + [TestMethod] + public void Test_239_12() + { + } + + [TestMethod] + public void Test_239_13() + { + } + + [TestMethod] + public void Test_239_14() + { + } + + [TestMethod] + public void Test_239_15() + { + } + + [TestMethod] + public void Test_239_16() + { + } + + [TestMethod] + public void Test_239_17() + { + } + + [TestMethod] + public void Test_239_18() + { + } + + [TestMethod] + public void Test_239_19() + { + } + + [TestMethod] + public void Test_239_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_240 + { + #region PassingTests + [TestMethod] + public void Test_240_01() + { + } + + [TestMethod] + public void Test_240_02() + { + } + + [TestMethod] + public void Test_240_03() + { + } + + [TestMethod] + public void Test_240_04() + { + } + + [TestMethod] + public void Test_240_05() + { + } + + [TestMethod] + public void Test_240_06() + { + } + + [TestMethod] + public void Test_240_07() + { + } + + [TestMethod] + public void Test_240_08() + { + } + + [TestMethod] + public void Test_240_09() + { + } + + [TestMethod] + public void Test_240_10() + { + } + + [TestMethod] + public void Test_240_11() + { + } + + [TestMethod] + public void Test_240_12() + { + } + + [TestMethod] + public void Test_240_13() + { + } + + [TestMethod] + public void Test_240_14() + { + } + + [TestMethod] + public void Test_240_15() + { + } + + [TestMethod] + public void Test_240_16() + { + } + + [TestMethod] + public void Test_240_17() + { + } + + [TestMethod] + public void Test_240_18() + { + } + + [TestMethod] + public void Test_240_19() + { + } + + [TestMethod] + public void Test_240_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_241 + { + #region PassingTests + [TestMethod] + public void Test_241_01() + { + } + + [TestMethod] + public void Test_241_02() + { + } + + [TestMethod] + public void Test_241_03() + { + } + + [TestMethod] + public void Test_241_04() + { + } + + [TestMethod] + public void Test_241_05() + { + } + + [TestMethod] + public void Test_241_06() + { + } + + [TestMethod] + public void Test_241_07() + { + } + + [TestMethod] + public void Test_241_08() + { + } + + [TestMethod] + public void Test_241_09() + { + } + + [TestMethod] + public void Test_241_10() + { + } + + [TestMethod] + public void Test_241_11() + { + } + + [TestMethod] + public void Test_241_12() + { + } + + [TestMethod] + public void Test_241_13() + { + } + + [TestMethod] + public void Test_241_14() + { + } + + [TestMethod] + public void Test_241_15() + { + } + + [TestMethod] + public void Test_241_16() + { + } + + [TestMethod] + public void Test_241_17() + { + } + + [TestMethod] + public void Test_241_18() + { + } + + [TestMethod] + public void Test_241_19() + { + } + + [TestMethod] + public void Test_241_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_242 + { + #region PassingTests + [TestMethod] + public void Test_242_01() + { + } + + [TestMethod] + public void Test_242_02() + { + } + + [TestMethod] + public void Test_242_03() + { + } + + [TestMethod] + public void Test_242_04() + { + } + + [TestMethod] + public void Test_242_05() + { + } + + [TestMethod] + public void Test_242_06() + { + } + + [TestMethod] + public void Test_242_07() + { + } + + [TestMethod] + public void Test_242_08() + { + } + + [TestMethod] + public void Test_242_09() + { + } + + [TestMethod] + public void Test_242_10() + { + } + + [TestMethod] + public void Test_242_11() + { + } + + [TestMethod] + public void Test_242_12() + { + } + + [TestMethod] + public void Test_242_13() + { + } + + [TestMethod] + public void Test_242_14() + { + } + + [TestMethod] + public void Test_242_15() + { + } + + [TestMethod] + public void Test_242_16() + { + } + + [TestMethod] + public void Test_242_17() + { + } + + [TestMethod] + public void Test_242_18() + { + } + + [TestMethod] + public void Test_242_19() + { + } + + [TestMethod] + public void Test_242_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_243 + { + #region PassingTests + [TestMethod] + public void Test_243_01() + { + } + + [TestMethod] + public void Test_243_02() + { + } + + [TestMethod] + public void Test_243_03() + { + } + + [TestMethod] + public void Test_243_04() + { + } + + [TestMethod] + public void Test_243_05() + { + } + + [TestMethod] + public void Test_243_06() + { + } + + [TestMethod] + public void Test_243_07() + { + } + + [TestMethod] + public void Test_243_08() + { + } + + [TestMethod] + public void Test_243_09() + { + } + + [TestMethod] + public void Test_243_10() + { + } + + [TestMethod] + public void Test_243_11() + { + } + + [TestMethod] + public void Test_243_12() + { + } + + [TestMethod] + public void Test_243_13() + { + } + + [TestMethod] + public void Test_243_14() + { + } + + [TestMethod] + public void Test_243_15() + { + } + + [TestMethod] + public void Test_243_16() + { + } + + [TestMethod] + public void Test_243_17() + { + } + + [TestMethod] + public void Test_243_18() + { + } + + [TestMethod] + public void Test_243_19() + { + } + + [TestMethod] + public void Test_243_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_244 + { + #region PassingTests + [TestMethod] + public void Test_244_01() + { + } + + [TestMethod] + public void Test_244_02() + { + } + + [TestMethod] + public void Test_244_03() + { + } + + [TestMethod] + public void Test_244_04() + { + } + + [TestMethod] + public void Test_244_05() + { + } + + [TestMethod] + public void Test_244_06() + { + } + + [TestMethod] + public void Test_244_07() + { + } + + [TestMethod] + public void Test_244_08() + { + } + + [TestMethod] + public void Test_244_09() + { + } + + [TestMethod] + public void Test_244_10() + { + } + + [TestMethod] + public void Test_244_11() + { + } + + [TestMethod] + public void Test_244_12() + { + } + + [TestMethod] + public void Test_244_13() + { + } + + [TestMethod] + public void Test_244_14() + { + } + + [TestMethod] + public void Test_244_15() + { + } + + [TestMethod] + public void Test_244_16() + { + } + + [TestMethod] + public void Test_244_17() + { + } + + [TestMethod] + public void Test_244_18() + { + } + + [TestMethod] + public void Test_244_19() + { + } + + [TestMethod] + public void Test_244_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_245 + { + #region PassingTests + [TestMethod] + public void Test_245_01() + { + } + + [TestMethod] + public void Test_245_02() + { + } + + [TestMethod] + public void Test_245_03() + { + } + + [TestMethod] + public void Test_245_04() + { + } + + [TestMethod] + public void Test_245_05() + { + } + + [TestMethod] + public void Test_245_06() + { + } + + [TestMethod] + public void Test_245_07() + { + } + + [TestMethod] + public void Test_245_08() + { + } + + [TestMethod] + public void Test_245_09() + { + } + + [TestMethod] + public void Test_245_10() + { + } + + [TestMethod] + public void Test_245_11() + { + } + + [TestMethod] + public void Test_245_12() + { + } + + [TestMethod] + public void Test_245_13() + { + } + + [TestMethod] + public void Test_245_14() + { + } + + [TestMethod] + public void Test_245_15() + { + } + + [TestMethod] + public void Test_245_16() + { + } + + [TestMethod] + public void Test_245_17() + { + } + + [TestMethod] + public void Test_245_18() + { + } + + [TestMethod] + public void Test_245_19() + { + } + + [TestMethod] + public void Test_245_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_246 + { + #region PassingTests + [TestMethod] + public void Test_246_01() + { + } + + [TestMethod] + public void Test_246_02() + { + } + + [TestMethod] + public void Test_246_03() + { + } + + [TestMethod] + public void Test_246_04() + { + } + + [TestMethod] + public void Test_246_05() + { + } + + [TestMethod] + public void Test_246_06() + { + } + + [TestMethod] + public void Test_246_07() + { + } + + [TestMethod] + public void Test_246_08() + { + } + + [TestMethod] + public void Test_246_09() + { + } + + [TestMethod] + public void Test_246_10() + { + } + + [TestMethod] + public void Test_246_11() + { + } + + [TestMethod] + public void Test_246_12() + { + } + + [TestMethod] + public void Test_246_13() + { + } + + [TestMethod] + public void Test_246_14() + { + } + + [TestMethod] + public void Test_246_15() + { + } + + [TestMethod] + public void Test_246_16() + { + } + + [TestMethod] + public void Test_246_17() + { + } + + [TestMethod] + public void Test_246_18() + { + } + + [TestMethod] + public void Test_246_19() + { + } + + [TestMethod] + public void Test_246_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_247 + { + #region PassingTests + [TestMethod] + public void Test_247_01() + { + } + + [TestMethod] + public void Test_247_02() + { + } + + [TestMethod] + public void Test_247_03() + { + } + + [TestMethod] + public void Test_247_04() + { + } + + [TestMethod] + public void Test_247_05() + { + } + + [TestMethod] + public void Test_247_06() + { + } + + [TestMethod] + public void Test_247_07() + { + } + + [TestMethod] + public void Test_247_08() + { + } + + [TestMethod] + public void Test_247_09() + { + } + + [TestMethod] + public void Test_247_10() + { + } + + [TestMethod] + public void Test_247_11() + { + } + + [TestMethod] + public void Test_247_12() + { + } + + [TestMethod] + public void Test_247_13() + { + } + + [TestMethod] + public void Test_247_14() + { + } + + [TestMethod] + public void Test_247_15() + { + } + + [TestMethod] + public void Test_247_16() + { + } + + [TestMethod] + public void Test_247_17() + { + } + + [TestMethod] + public void Test_247_18() + { + } + + [TestMethod] + public void Test_247_19() + { + } + + [TestMethod] + public void Test_247_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_248 + { + #region PassingTests + [TestMethod] + public void Test_248_01() + { + } + + [TestMethod] + public void Test_248_02() + { + } + + [TestMethod] + public void Test_248_03() + { + } + + [TestMethod] + public void Test_248_04() + { + } + + [TestMethod] + public void Test_248_05() + { + } + + [TestMethod] + public void Test_248_06() + { + } + + [TestMethod] + public void Test_248_07() + { + } + + [TestMethod] + public void Test_248_08() + { + } + + [TestMethod] + public void Test_248_09() + { + } + + [TestMethod] + public void Test_248_10() + { + } + + [TestMethod] + public void Test_248_11() + { + } + + [TestMethod] + public void Test_248_12() + { + } + + [TestMethod] + public void Test_248_13() + { + } + + [TestMethod] + public void Test_248_14() + { + } + + [TestMethod] + public void Test_248_15() + { + } + + [TestMethod] + public void Test_248_16() + { + } + + [TestMethod] + public void Test_248_17() + { + } + + [TestMethod] + public void Test_248_18() + { + } + + [TestMethod] + public void Test_248_19() + { + } + + [TestMethod] + public void Test_248_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_249 + { + #region PassingTests + [TestMethod] + public void Test_249_01() + { + } + + [TestMethod] + public void Test_249_02() + { + } + + [TestMethod] + public void Test_249_03() + { + } + + [TestMethod] + public void Test_249_04() + { + } + + [TestMethod] + public void Test_249_05() + { + } + + [TestMethod] + public void Test_249_06() + { + } + + [TestMethod] + public void Test_249_07() + { + } + + [TestMethod] + public void Test_249_08() + { + } + + [TestMethod] + public void Test_249_09() + { + } + + [TestMethod] + public void Test_249_10() + { + } + + [TestMethod] + public void Test_249_11() + { + } + + [TestMethod] + public void Test_249_12() + { + } + + [TestMethod] + public void Test_249_13() + { + } + + [TestMethod] + public void Test_249_14() + { + } + + [TestMethod] + public void Test_249_15() + { + } + + [TestMethod] + public void Test_249_16() + { + } + + [TestMethod] + public void Test_249_17() + { + } + + [TestMethod] + public void Test_249_18() + { + } + + [TestMethod] + public void Test_249_19() + { + } + + [TestMethod] + public void Test_249_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_250 + { + #region PassingTests + [TestMethod] + public void Test_250_01() + { + } + + [TestMethod] + public void Test_250_02() + { + } + + [TestMethod] + public void Test_250_03() + { + } + + [TestMethod] + public void Test_250_04() + { + } + + [TestMethod] + public void Test_250_05() + { + } + + [TestMethod] + public void Test_250_06() + { + } + + [TestMethod] + public void Test_250_07() + { + } + + [TestMethod] + public void Test_250_08() + { + } + + [TestMethod] + public void Test_250_09() + { + } + + [TestMethod] + public void Test_250_10() + { + } + + [TestMethod] + public void Test_250_11() + { + } + + [TestMethod] + public void Test_250_12() + { + } + + [TestMethod] + public void Test_250_13() + { + } + + [TestMethod] + public void Test_250_14() + { + } + + [TestMethod] + public void Test_250_15() + { + } + + [TestMethod] + public void Test_250_16() + { + } + + [TestMethod] + public void Test_250_17() + { + } + + [TestMethod] + public void Test_250_18() + { + } + + [TestMethod] + public void Test_250_19() + { + } + + [TestMethod] + public void Test_250_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_251 + { + #region PassingTests + [TestMethod] + public void Test_251_01() + { + } + + [TestMethod] + public void Test_251_02() + { + } + + [TestMethod] + public void Test_251_03() + { + } + + [TestMethod] + public void Test_251_04() + { + } + + [TestMethod] + public void Test_251_05() + { + } + + [TestMethod] + public void Test_251_06() + { + } + + [TestMethod] + public void Test_251_07() + { + } + + [TestMethod] + public void Test_251_08() + { + } + + [TestMethod] + public void Test_251_09() + { + } + + [TestMethod] + public void Test_251_10() + { + } + + [TestMethod] + public void Test_251_11() + { + } + + [TestMethod] + public void Test_251_12() + { + } + + [TestMethod] + public void Test_251_13() + { + } + + [TestMethod] + public void Test_251_14() + { + } + + [TestMethod] + public void Test_251_15() + { + } + + [TestMethod] + public void Test_251_16() + { + } + + [TestMethod] + public void Test_251_17() + { + } + + [TestMethod] + public void Test_251_18() + { + } + + [TestMethod] + public void Test_251_19() + { + } + + [TestMethod] + public void Test_251_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_252 + { + #region PassingTests + [TestMethod] + public void Test_252_01() + { + } + + [TestMethod] + public void Test_252_02() + { + } + + [TestMethod] + public void Test_252_03() + { + } + + [TestMethod] + public void Test_252_04() + { + } + + [TestMethod] + public void Test_252_05() + { + } + + [TestMethod] + public void Test_252_06() + { + } + + [TestMethod] + public void Test_252_07() + { + } + + [TestMethod] + public void Test_252_08() + { + } + + [TestMethod] + public void Test_252_09() + { + } + + [TestMethod] + public void Test_252_10() + { + } + + [TestMethod] + public void Test_252_11() + { + } + + [TestMethod] + public void Test_252_12() + { + } + + [TestMethod] + public void Test_252_13() + { + } + + [TestMethod] + public void Test_252_14() + { + } + + [TestMethod] + public void Test_252_15() + { + } + + [TestMethod] + public void Test_252_16() + { + } + + [TestMethod] + public void Test_252_17() + { + } + + [TestMethod] + public void Test_252_18() + { + } + + [TestMethod] + public void Test_252_19() + { + } + + [TestMethod] + public void Test_252_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_253 + { + #region PassingTests + [TestMethod] + public void Test_253_01() + { + } + + [TestMethod] + public void Test_253_02() + { + } + + [TestMethod] + public void Test_253_03() + { + } + + [TestMethod] + public void Test_253_04() + { + } + + [TestMethod] + public void Test_253_05() + { + } + + [TestMethod] + public void Test_253_06() + { + } + + [TestMethod] + public void Test_253_07() + { + } + + [TestMethod] + public void Test_253_08() + { + } + + [TestMethod] + public void Test_253_09() + { + } + + [TestMethod] + public void Test_253_10() + { + } + + [TestMethod] + public void Test_253_11() + { + } + + [TestMethod] + public void Test_253_12() + { + } + + [TestMethod] + public void Test_253_13() + { + } + + [TestMethod] + public void Test_253_14() + { + } + + [TestMethod] + public void Test_253_15() + { + } + + [TestMethod] + public void Test_253_16() + { + } + + [TestMethod] + public void Test_253_17() + { + } + + [TestMethod] + public void Test_253_18() + { + } + + [TestMethod] + public void Test_253_19() + { + } + + [TestMethod] + public void Test_253_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_254 + { + #region PassingTests + [TestMethod] + public void Test_254_01() + { + } + + [TestMethod] + public void Test_254_02() + { + } + + [TestMethod] + public void Test_254_03() + { + } + + [TestMethod] + public void Test_254_04() + { + } + + [TestMethod] + public void Test_254_05() + { + } + + [TestMethod] + public void Test_254_06() + { + } + + [TestMethod] + public void Test_254_07() + { + } + + [TestMethod] + public void Test_254_08() + { + } + + [TestMethod] + public void Test_254_09() + { + } + + [TestMethod] + public void Test_254_10() + { + } + + [TestMethod] + public void Test_254_11() + { + } + + [TestMethod] + public void Test_254_12() + { + } + + [TestMethod] + public void Test_254_13() + { + } + + [TestMethod] + public void Test_254_14() + { + } + + [TestMethod] + public void Test_254_15() + { + } + + [TestMethod] + public void Test_254_16() + { + } + + [TestMethod] + public void Test_254_17() + { + } + + [TestMethod] + public void Test_254_18() + { + } + + [TestMethod] + public void Test_254_19() + { + } + + [TestMethod] + public void Test_254_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_255 + { + #region PassingTests + [TestMethod] + public void Test_255_01() + { + } + + [TestMethod] + public void Test_255_02() + { + } + + [TestMethod] + public void Test_255_03() + { + } + + [TestMethod] + public void Test_255_04() + { + } + + [TestMethod] + public void Test_255_05() + { + } + + [TestMethod] + public void Test_255_06() + { + } + + [TestMethod] + public void Test_255_07() + { + } + + [TestMethod] + public void Test_255_08() + { + } + + [TestMethod] + public void Test_255_09() + { + } + + [TestMethod] + public void Test_255_10() + { + } + + [TestMethod] + public void Test_255_11() + { + } + + [TestMethod] + public void Test_255_12() + { + } + + [TestMethod] + public void Test_255_13() + { + } + + [TestMethod] + public void Test_255_14() + { + } + + [TestMethod] + public void Test_255_15() + { + } + + [TestMethod] + public void Test_255_16() + { + } + + [TestMethod] + public void Test_255_17() + { + } + + [TestMethod] + public void Test_255_18() + { + } + + [TestMethod] + public void Test_255_19() + { + } + + [TestMethod] + public void Test_255_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_256 + { + #region PassingTests + [TestMethod] + public void Test_256_01() + { + } + + [TestMethod] + public void Test_256_02() + { + } + + [TestMethod] + public void Test_256_03() + { + } + + [TestMethod] + public void Test_256_04() + { + } + + [TestMethod] + public void Test_256_05() + { + } + + [TestMethod] + public void Test_256_06() + { + } + + [TestMethod] + public void Test_256_07() + { + } + + [TestMethod] + public void Test_256_08() + { + } + + [TestMethod] + public void Test_256_09() + { + } + + [TestMethod] + public void Test_256_10() + { + } + + [TestMethod] + public void Test_256_11() + { + } + + [TestMethod] + public void Test_256_12() + { + } + + [TestMethod] + public void Test_256_13() + { + } + + [TestMethod] + public void Test_256_14() + { + } + + [TestMethod] + public void Test_256_15() + { + } + + [TestMethod] + public void Test_256_16() + { + } + + [TestMethod] + public void Test_256_17() + { + } + + [TestMethod] + public void Test_256_18() + { + } + + [TestMethod] + public void Test_256_19() + { + } + + [TestMethod] + public void Test_256_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_257 + { + #region PassingTests + [TestMethod] + public void Test_257_01() + { + } + + [TestMethod] + public void Test_257_02() + { + } + + [TestMethod] + public void Test_257_03() + { + } + + [TestMethod] + public void Test_257_04() + { + } + + [TestMethod] + public void Test_257_05() + { + } + + [TestMethod] + public void Test_257_06() + { + } + + [TestMethod] + public void Test_257_07() + { + } + + [TestMethod] + public void Test_257_08() + { + } + + [TestMethod] + public void Test_257_09() + { + } + + [TestMethod] + public void Test_257_10() + { + } + + [TestMethod] + public void Test_257_11() + { + } + + [TestMethod] + public void Test_257_12() + { + } + + [TestMethod] + public void Test_257_13() + { + } + + [TestMethod] + public void Test_257_14() + { + } + + [TestMethod] + public void Test_257_15() + { + } + + [TestMethod] + public void Test_257_16() + { + } + + [TestMethod] + public void Test_257_17() + { + } + + [TestMethod] + public void Test_257_18() + { + } + + [TestMethod] + public void Test_257_19() + { + } + + [TestMethod] + public void Test_257_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_258 + { + #region PassingTests + [TestMethod] + public void Test_258_01() + { + } + + [TestMethod] + public void Test_258_02() + { + } + + [TestMethod] + public void Test_258_03() + { + } + + [TestMethod] + public void Test_258_04() + { + } + + [TestMethod] + public void Test_258_05() + { + } + + [TestMethod] + public void Test_258_06() + { + } + + [TestMethod] + public void Test_258_07() + { + } + + [TestMethod] + public void Test_258_08() + { + } + + [TestMethod] + public void Test_258_09() + { + } + + [TestMethod] + public void Test_258_10() + { + } + + [TestMethod] + public void Test_258_11() + { + } + + [TestMethod] + public void Test_258_12() + { + } + + [TestMethod] + public void Test_258_13() + { + } + + [TestMethod] + public void Test_258_14() + { + } + + [TestMethod] + public void Test_258_15() + { + } + + [TestMethod] + public void Test_258_16() + { + } + + [TestMethod] + public void Test_258_17() + { + } + + [TestMethod] + public void Test_258_18() + { + } + + [TestMethod] + public void Test_258_19() + { + } + + [TestMethod] + public void Test_258_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_259 + { + #region PassingTests + [TestMethod] + public void Test_259_01() + { + } + + [TestMethod] + public void Test_259_02() + { + } + + [TestMethod] + public void Test_259_03() + { + } + + [TestMethod] + public void Test_259_04() + { + } + + [TestMethod] + public void Test_259_05() + { + } + + [TestMethod] + public void Test_259_06() + { + } + + [TestMethod] + public void Test_259_07() + { + } + + [TestMethod] + public void Test_259_08() + { + } + + [TestMethod] + public void Test_259_09() + { + } + + [TestMethod] + public void Test_259_10() + { + } + + [TestMethod] + public void Test_259_11() + { + } + + [TestMethod] + public void Test_259_12() + { + } + + [TestMethod] + public void Test_259_13() + { + } + + [TestMethod] + public void Test_259_14() + { + } + + [TestMethod] + public void Test_259_15() + { + } + + [TestMethod] + public void Test_259_16() + { + } + + [TestMethod] + public void Test_259_17() + { + } + + [TestMethod] + public void Test_259_18() + { + } + + [TestMethod] + public void Test_259_19() + { + } + + [TestMethod] + public void Test_259_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_260 + { + #region PassingTests + [TestMethod] + public void Test_260_01() + { + } + + [TestMethod] + public void Test_260_02() + { + } + + [TestMethod] + public void Test_260_03() + { + } + + [TestMethod] + public void Test_260_04() + { + } + + [TestMethod] + public void Test_260_05() + { + } + + [TestMethod] + public void Test_260_06() + { + } + + [TestMethod] + public void Test_260_07() + { + } + + [TestMethod] + public void Test_260_08() + { + } + + [TestMethod] + public void Test_260_09() + { + } + + [TestMethod] + public void Test_260_10() + { + } + + [TestMethod] + public void Test_260_11() + { + } + + [TestMethod] + public void Test_260_12() + { + } + + [TestMethod] + public void Test_260_13() + { + } + + [TestMethod] + public void Test_260_14() + { + } + + [TestMethod] + public void Test_260_15() + { + } + + [TestMethod] + public void Test_260_16() + { + } + + [TestMethod] + public void Test_260_17() + { + } + + [TestMethod] + public void Test_260_18() + { + } + + [TestMethod] + public void Test_260_19() + { + } + + [TestMethod] + public void Test_260_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_261 + { + #region PassingTests + [TestMethod] + public void Test_261_01() + { + } + + [TestMethod] + public void Test_261_02() + { + } + + [TestMethod] + public void Test_261_03() + { + } + + [TestMethod] + public void Test_261_04() + { + } + + [TestMethod] + public void Test_261_05() + { + } + + [TestMethod] + public void Test_261_06() + { + } + + [TestMethod] + public void Test_261_07() + { + } + + [TestMethod] + public void Test_261_08() + { + } + + [TestMethod] + public void Test_261_09() + { + } + + [TestMethod] + public void Test_261_10() + { + } + + [TestMethod] + public void Test_261_11() + { + } + + [TestMethod] + public void Test_261_12() + { + } + + [TestMethod] + public void Test_261_13() + { + } + + [TestMethod] + public void Test_261_14() + { + } + + [TestMethod] + public void Test_261_15() + { + } + + [TestMethod] + public void Test_261_16() + { + } + + [TestMethod] + public void Test_261_17() + { + } + + [TestMethod] + public void Test_261_18() + { + } + + [TestMethod] + public void Test_261_19() + { + } + + [TestMethod] + public void Test_261_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_262 + { + #region PassingTests + [TestMethod] + public void Test_262_01() + { + } + + [TestMethod] + public void Test_262_02() + { + } + + [TestMethod] + public void Test_262_03() + { + } + + [TestMethod] + public void Test_262_04() + { + } + + [TestMethod] + public void Test_262_05() + { + } + + [TestMethod] + public void Test_262_06() + { + } + + [TestMethod] + public void Test_262_07() + { + } + + [TestMethod] + public void Test_262_08() + { + } + + [TestMethod] + public void Test_262_09() + { + } + + [TestMethod] + public void Test_262_10() + { + } + + [TestMethod] + public void Test_262_11() + { + } + + [TestMethod] + public void Test_262_12() + { + } + + [TestMethod] + public void Test_262_13() + { + } + + [TestMethod] + public void Test_262_14() + { + } + + [TestMethod] + public void Test_262_15() + { + } + + [TestMethod] + public void Test_262_16() + { + } + + [TestMethod] + public void Test_262_17() + { + } + + [TestMethod] + public void Test_262_18() + { + } + + [TestMethod] + public void Test_262_19() + { + } + + [TestMethod] + public void Test_262_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_263 + { + #region PassingTests + [TestMethod] + public void Test_263_01() + { + } + + [TestMethod] + public void Test_263_02() + { + } + + [TestMethod] + public void Test_263_03() + { + } + + [TestMethod] + public void Test_263_04() + { + } + + [TestMethod] + public void Test_263_05() + { + } + + [TestMethod] + public void Test_263_06() + { + } + + [TestMethod] + public void Test_263_07() + { + } + + [TestMethod] + public void Test_263_08() + { + } + + [TestMethod] + public void Test_263_09() + { + } + + [TestMethod] + public void Test_263_10() + { + } + + [TestMethod] + public void Test_263_11() + { + } + + [TestMethod] + public void Test_263_12() + { + } + + [TestMethod] + public void Test_263_13() + { + } + + [TestMethod] + public void Test_263_14() + { + } + + [TestMethod] + public void Test_263_15() + { + } + + [TestMethod] + public void Test_263_16() + { + } + + [TestMethod] + public void Test_263_17() + { + } + + [TestMethod] + public void Test_263_18() + { + } + + [TestMethod] + public void Test_263_19() + { + } + + [TestMethod] + public void Test_263_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_264 + { + #region PassingTests + [TestMethod] + public void Test_264_01() + { + } + + [TestMethod] + public void Test_264_02() + { + } + + [TestMethod] + public void Test_264_03() + { + } + + [TestMethod] + public void Test_264_04() + { + } + + [TestMethod] + public void Test_264_05() + { + } + + [TestMethod] + public void Test_264_06() + { + } + + [TestMethod] + public void Test_264_07() + { + } + + [TestMethod] + public void Test_264_08() + { + } + + [TestMethod] + public void Test_264_09() + { + } + + [TestMethod] + public void Test_264_10() + { + } + + [TestMethod] + public void Test_264_11() + { + } + + [TestMethod] + public void Test_264_12() + { + } + + [TestMethod] + public void Test_264_13() + { + } + + [TestMethod] + public void Test_264_14() + { + } + + [TestMethod] + public void Test_264_15() + { + } + + [TestMethod] + public void Test_264_16() + { + } + + [TestMethod] + public void Test_264_17() + { + } + + [TestMethod] + public void Test_264_18() + { + } + + [TestMethod] + public void Test_264_19() + { + } + + [TestMethod] + public void Test_264_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_265 + { + #region PassingTests + [TestMethod] + public void Test_265_01() + { + } + + [TestMethod] + public void Test_265_02() + { + } + + [TestMethod] + public void Test_265_03() + { + } + + [TestMethod] + public void Test_265_04() + { + } + + [TestMethod] + public void Test_265_05() + { + } + + [TestMethod] + public void Test_265_06() + { + } + + [TestMethod] + public void Test_265_07() + { + } + + [TestMethod] + public void Test_265_08() + { + } + + [TestMethod] + public void Test_265_09() + { + } + + [TestMethod] + public void Test_265_10() + { + } + + [TestMethod] + public void Test_265_11() + { + } + + [TestMethod] + public void Test_265_12() + { + } + + [TestMethod] + public void Test_265_13() + { + } + + [TestMethod] + public void Test_265_14() + { + } + + [TestMethod] + public void Test_265_15() + { + } + + [TestMethod] + public void Test_265_16() + { + } + + [TestMethod] + public void Test_265_17() + { + } + + [TestMethod] + public void Test_265_18() + { + } + + [TestMethod] + public void Test_265_19() + { + } + + [TestMethod] + public void Test_265_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_266 + { + #region PassingTests + [TestMethod] + public void Test_266_01() + { + } + + [TestMethod] + public void Test_266_02() + { + } + + [TestMethod] + public void Test_266_03() + { + } + + [TestMethod] + public void Test_266_04() + { + } + + [TestMethod] + public void Test_266_05() + { + } + + [TestMethod] + public void Test_266_06() + { + } + + [TestMethod] + public void Test_266_07() + { + } + + [TestMethod] + public void Test_266_08() + { + } + + [TestMethod] + public void Test_266_09() + { + } + + [TestMethod] + public void Test_266_10() + { + } + + [TestMethod] + public void Test_266_11() + { + } + + [TestMethod] + public void Test_266_12() + { + } + + [TestMethod] + public void Test_266_13() + { + } + + [TestMethod] + public void Test_266_14() + { + } + + [TestMethod] + public void Test_266_15() + { + } + + [TestMethod] + public void Test_266_16() + { + } + + [TestMethod] + public void Test_266_17() + { + } + + [TestMethod] + public void Test_266_18() + { + } + + [TestMethod] + public void Test_266_19() + { + } + + [TestMethod] + public void Test_266_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_267 + { + #region PassingTests + [TestMethod] + public void Test_267_01() + { + } + + [TestMethod] + public void Test_267_02() + { + } + + [TestMethod] + public void Test_267_03() + { + } + + [TestMethod] + public void Test_267_04() + { + } + + [TestMethod] + public void Test_267_05() + { + } + + [TestMethod] + public void Test_267_06() + { + } + + [TestMethod] + public void Test_267_07() + { + } + + [TestMethod] + public void Test_267_08() + { + } + + [TestMethod] + public void Test_267_09() + { + } + + [TestMethod] + public void Test_267_10() + { + } + + [TestMethod] + public void Test_267_11() + { + } + + [TestMethod] + public void Test_267_12() + { + } + + [TestMethod] + public void Test_267_13() + { + } + + [TestMethod] + public void Test_267_14() + { + } + + [TestMethod] + public void Test_267_15() + { + } + + [TestMethod] + public void Test_267_16() + { + } + + [TestMethod] + public void Test_267_17() + { + } + + [TestMethod] + public void Test_267_18() + { + } + + [TestMethod] + public void Test_267_19() + { + } + + [TestMethod] + public void Test_267_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_268 + { + #region PassingTests + [TestMethod] + public void Test_268_01() + { + } + + [TestMethod] + public void Test_268_02() + { + } + + [TestMethod] + public void Test_268_03() + { + } + + [TestMethod] + public void Test_268_04() + { + } + + [TestMethod] + public void Test_268_05() + { + } + + [TestMethod] + public void Test_268_06() + { + } + + [TestMethod] + public void Test_268_07() + { + } + + [TestMethod] + public void Test_268_08() + { + } + + [TestMethod] + public void Test_268_09() + { + } + + [TestMethod] + public void Test_268_10() + { + } + + [TestMethod] + public void Test_268_11() + { + } + + [TestMethod] + public void Test_268_12() + { + } + + [TestMethod] + public void Test_268_13() + { + } + + [TestMethod] + public void Test_268_14() + { + } + + [TestMethod] + public void Test_268_15() + { + } + + [TestMethod] + public void Test_268_16() + { + } + + [TestMethod] + public void Test_268_17() + { + } + + [TestMethod] + public void Test_268_18() + { + } + + [TestMethod] + public void Test_268_19() + { + } + + [TestMethod] + public void Test_268_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_269 + { + #region PassingTests + [TestMethod] + public void Test_269_01() + { + } + + [TestMethod] + public void Test_269_02() + { + } + + [TestMethod] + public void Test_269_03() + { + } + + [TestMethod] + public void Test_269_04() + { + } + + [TestMethod] + public void Test_269_05() + { + } + + [TestMethod] + public void Test_269_06() + { + } + + [TestMethod] + public void Test_269_07() + { + } + + [TestMethod] + public void Test_269_08() + { + } + + [TestMethod] + public void Test_269_09() + { + } + + [TestMethod] + public void Test_269_10() + { + } + + [TestMethod] + public void Test_269_11() + { + } + + [TestMethod] + public void Test_269_12() + { + } + + [TestMethod] + public void Test_269_13() + { + } + + [TestMethod] + public void Test_269_14() + { + } + + [TestMethod] + public void Test_269_15() + { + } + + [TestMethod] + public void Test_269_16() + { + } + + [TestMethod] + public void Test_269_17() + { + } + + [TestMethod] + public void Test_269_18() + { + } + + [TestMethod] + public void Test_269_19() + { + } + + [TestMethod] + public void Test_269_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_270 + { + #region PassingTests + [TestMethod] + public void Test_270_01() + { + } + + [TestMethod] + public void Test_270_02() + { + } + + [TestMethod] + public void Test_270_03() + { + } + + [TestMethod] + public void Test_270_04() + { + } + + [TestMethod] + public void Test_270_05() + { + } + + [TestMethod] + public void Test_270_06() + { + } + + [TestMethod] + public void Test_270_07() + { + } + + [TestMethod] + public void Test_270_08() + { + } + + [TestMethod] + public void Test_270_09() + { + } + + [TestMethod] + public void Test_270_10() + { + } + + [TestMethod] + public void Test_270_11() + { + } + + [TestMethod] + public void Test_270_12() + { + } + + [TestMethod] + public void Test_270_13() + { + } + + [TestMethod] + public void Test_270_14() + { + } + + [TestMethod] + public void Test_270_15() + { + } + + [TestMethod] + public void Test_270_16() + { + } + + [TestMethod] + public void Test_270_17() + { + } + + [TestMethod] + public void Test_270_18() + { + } + + [TestMethod] + public void Test_270_19() + { + } + + [TestMethod] + public void Test_270_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_271 + { + #region PassingTests + [TestMethod] + public void Test_271_01() + { + } + + [TestMethod] + public void Test_271_02() + { + } + + [TestMethod] + public void Test_271_03() + { + } + + [TestMethod] + public void Test_271_04() + { + } + + [TestMethod] + public void Test_271_05() + { + } + + [TestMethod] + public void Test_271_06() + { + } + + [TestMethod] + public void Test_271_07() + { + } + + [TestMethod] + public void Test_271_08() + { + } + + [TestMethod] + public void Test_271_09() + { + } + + [TestMethod] + public void Test_271_10() + { + } + + [TestMethod] + public void Test_271_11() + { + } + + [TestMethod] + public void Test_271_12() + { + } + + [TestMethod] + public void Test_271_13() + { + } + + [TestMethod] + public void Test_271_14() + { + } + + [TestMethod] + public void Test_271_15() + { + } + + [TestMethod] + public void Test_271_16() + { + } + + [TestMethod] + public void Test_271_17() + { + } + + [TestMethod] + public void Test_271_18() + { + } + + [TestMethod] + public void Test_271_19() + { + } + + [TestMethod] + public void Test_271_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_272 + { + #region PassingTests + [TestMethod] + public void Test_272_01() + { + } + + [TestMethod] + public void Test_272_02() + { + } + + [TestMethod] + public void Test_272_03() + { + } + + [TestMethod] + public void Test_272_04() + { + } + + [TestMethod] + public void Test_272_05() + { + } + + [TestMethod] + public void Test_272_06() + { + } + + [TestMethod] + public void Test_272_07() + { + } + + [TestMethod] + public void Test_272_08() + { + } + + [TestMethod] + public void Test_272_09() + { + } + + [TestMethod] + public void Test_272_10() + { + } + + [TestMethod] + public void Test_272_11() + { + } + + [TestMethod] + public void Test_272_12() + { + } + + [TestMethod] + public void Test_272_13() + { + } + + [TestMethod] + public void Test_272_14() + { + } + + [TestMethod] + public void Test_272_15() + { + } + + [TestMethod] + public void Test_272_16() + { + } + + [TestMethod] + public void Test_272_17() + { + } + + [TestMethod] + public void Test_272_18() + { + } + + [TestMethod] + public void Test_272_19() + { + } + + [TestMethod] + public void Test_272_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_273 + { + #region PassingTests + [TestMethod] + public void Test_273_01() + { + } + + [TestMethod] + public void Test_273_02() + { + } + + [TestMethod] + public void Test_273_03() + { + } + + [TestMethod] + public void Test_273_04() + { + } + + [TestMethod] + public void Test_273_05() + { + } + + [TestMethod] + public void Test_273_06() + { + } + + [TestMethod] + public void Test_273_07() + { + } + + [TestMethod] + public void Test_273_08() + { + } + + [TestMethod] + public void Test_273_09() + { + } + + [TestMethod] + public void Test_273_10() + { + } + + [TestMethod] + public void Test_273_11() + { + } + + [TestMethod] + public void Test_273_12() + { + } + + [TestMethod] + public void Test_273_13() + { + } + + [TestMethod] + public void Test_273_14() + { + } + + [TestMethod] + public void Test_273_15() + { + } + + [TestMethod] + public void Test_273_16() + { + } + + [TestMethod] + public void Test_273_17() + { + } + + [TestMethod] + public void Test_273_18() + { + } + + [TestMethod] + public void Test_273_19() + { + } + + [TestMethod] + public void Test_273_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_274 + { + #region PassingTests + [TestMethod] + public void Test_274_01() + { + } + + [TestMethod] + public void Test_274_02() + { + } + + [TestMethod] + public void Test_274_03() + { + } + + [TestMethod] + public void Test_274_04() + { + } + + [TestMethod] + public void Test_274_05() + { + } + + [TestMethod] + public void Test_274_06() + { + } + + [TestMethod] + public void Test_274_07() + { + } + + [TestMethod] + public void Test_274_08() + { + } + + [TestMethod] + public void Test_274_09() + { + } + + [TestMethod] + public void Test_274_10() + { + } + + [TestMethod] + public void Test_274_11() + { + } + + [TestMethod] + public void Test_274_12() + { + } + + [TestMethod] + public void Test_274_13() + { + } + + [TestMethod] + public void Test_274_14() + { + } + + [TestMethod] + public void Test_274_15() + { + } + + [TestMethod] + public void Test_274_16() + { + } + + [TestMethod] + public void Test_274_17() + { + } + + [TestMethod] + public void Test_274_18() + { + } + + [TestMethod] + public void Test_274_19() + { + } + + [TestMethod] + public void Test_274_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_275 + { + #region PassingTests + [TestMethod] + public void Test_275_01() + { + } + + [TestMethod] + public void Test_275_02() + { + } + + [TestMethod] + public void Test_275_03() + { + } + + [TestMethod] + public void Test_275_04() + { + } + + [TestMethod] + public void Test_275_05() + { + } + + [TestMethod] + public void Test_275_06() + { + } + + [TestMethod] + public void Test_275_07() + { + } + + [TestMethod] + public void Test_275_08() + { + } + + [TestMethod] + public void Test_275_09() + { + } + + [TestMethod] + public void Test_275_10() + { + } + + [TestMethod] + public void Test_275_11() + { + } + + [TestMethod] + public void Test_275_12() + { + } + + [TestMethod] + public void Test_275_13() + { + } + + [TestMethod] + public void Test_275_14() + { + } + + [TestMethod] + public void Test_275_15() + { + } + + [TestMethod] + public void Test_275_16() + { + } + + [TestMethod] + public void Test_275_17() + { + } + + [TestMethod] + public void Test_275_18() + { + } + + [TestMethod] + public void Test_275_19() + { + } + + [TestMethod] + public void Test_275_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_276 + { + #region PassingTests + [TestMethod] + public void Test_276_01() + { + } + + [TestMethod] + public void Test_276_02() + { + } + + [TestMethod] + public void Test_276_03() + { + } + + [TestMethod] + public void Test_276_04() + { + } + + [TestMethod] + public void Test_276_05() + { + } + + [TestMethod] + public void Test_276_06() + { + } + + [TestMethod] + public void Test_276_07() + { + } + + [TestMethod] + public void Test_276_08() + { + } + + [TestMethod] + public void Test_276_09() + { + } + + [TestMethod] + public void Test_276_10() + { + } + + [TestMethod] + public void Test_276_11() + { + } + + [TestMethod] + public void Test_276_12() + { + } + + [TestMethod] + public void Test_276_13() + { + } + + [TestMethod] + public void Test_276_14() + { + } + + [TestMethod] + public void Test_276_15() + { + } + + [TestMethod] + public void Test_276_16() + { + } + + [TestMethod] + public void Test_276_17() + { + } + + [TestMethod] + public void Test_276_18() + { + } + + [TestMethod] + public void Test_276_19() + { + } + + [TestMethod] + public void Test_276_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_277 + { + #region PassingTests + [TestMethod] + public void Test_277_01() + { + } + + [TestMethod] + public void Test_277_02() + { + } + + [TestMethod] + public void Test_277_03() + { + } + + [TestMethod] + public void Test_277_04() + { + } + + [TestMethod] + public void Test_277_05() + { + } + + [TestMethod] + public void Test_277_06() + { + } + + [TestMethod] + public void Test_277_07() + { + } + + [TestMethod] + public void Test_277_08() + { + } + + [TestMethod] + public void Test_277_09() + { + } + + [TestMethod] + public void Test_277_10() + { + } + + [TestMethod] + public void Test_277_11() + { + } + + [TestMethod] + public void Test_277_12() + { + } + + [TestMethod] + public void Test_277_13() + { + } + + [TestMethod] + public void Test_277_14() + { + } + + [TestMethod] + public void Test_277_15() + { + } + + [TestMethod] + public void Test_277_16() + { + } + + [TestMethod] + public void Test_277_17() + { + } + + [TestMethod] + public void Test_277_18() + { + } + + [TestMethod] + public void Test_277_19() + { + } + + [TestMethod] + public void Test_277_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_278 + { + #region PassingTests + [TestMethod] + public void Test_278_01() + { + } + + [TestMethod] + public void Test_278_02() + { + } + + [TestMethod] + public void Test_278_03() + { + } + + [TestMethod] + public void Test_278_04() + { + } + + [TestMethod] + public void Test_278_05() + { + } + + [TestMethod] + public void Test_278_06() + { + } + + [TestMethod] + public void Test_278_07() + { + } + + [TestMethod] + public void Test_278_08() + { + } + + [TestMethod] + public void Test_278_09() + { + } + + [TestMethod] + public void Test_278_10() + { + } + + [TestMethod] + public void Test_278_11() + { + } + + [TestMethod] + public void Test_278_12() + { + } + + [TestMethod] + public void Test_278_13() + { + } + + [TestMethod] + public void Test_278_14() + { + } + + [TestMethod] + public void Test_278_15() + { + } + + [TestMethod] + public void Test_278_16() + { + } + + [TestMethod] + public void Test_278_17() + { + } + + [TestMethod] + public void Test_278_18() + { + } + + [TestMethod] + public void Test_278_19() + { + } + + [TestMethod] + public void Test_278_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_279 + { + #region PassingTests + [TestMethod] + public void Test_279_01() + { + } + + [TestMethod] + public void Test_279_02() + { + } + + [TestMethod] + public void Test_279_03() + { + } + + [TestMethod] + public void Test_279_04() + { + } + + [TestMethod] + public void Test_279_05() + { + } + + [TestMethod] + public void Test_279_06() + { + } + + [TestMethod] + public void Test_279_07() + { + } + + [TestMethod] + public void Test_279_08() + { + } + + [TestMethod] + public void Test_279_09() + { + } + + [TestMethod] + public void Test_279_10() + { + } + + [TestMethod] + public void Test_279_11() + { + } + + [TestMethod] + public void Test_279_12() + { + } + + [TestMethod] + public void Test_279_13() + { + } + + [TestMethod] + public void Test_279_14() + { + } + + [TestMethod] + public void Test_279_15() + { + } + + [TestMethod] + public void Test_279_16() + { + } + + [TestMethod] + public void Test_279_17() + { + } + + [TestMethod] + public void Test_279_18() + { + } + + [TestMethod] + public void Test_279_19() + { + } + + [TestMethod] + public void Test_279_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_280 + { + #region PassingTests + [TestMethod] + public void Test_280_01() + { + } + + [TestMethod] + public void Test_280_02() + { + } + + [TestMethod] + public void Test_280_03() + { + } + + [TestMethod] + public void Test_280_04() + { + } + + [TestMethod] + public void Test_280_05() + { + } + + [TestMethod] + public void Test_280_06() + { + } + + [TestMethod] + public void Test_280_07() + { + } + + [TestMethod] + public void Test_280_08() + { + } + + [TestMethod] + public void Test_280_09() + { + } + + [TestMethod] + public void Test_280_10() + { + } + + [TestMethod] + public void Test_280_11() + { + } + + [TestMethod] + public void Test_280_12() + { + } + + [TestMethod] + public void Test_280_13() + { + } + + [TestMethod] + public void Test_280_14() + { + } + + [TestMethod] + public void Test_280_15() + { + } + + [TestMethod] + public void Test_280_16() + { + } + + [TestMethod] + public void Test_280_17() + { + } + + [TestMethod] + public void Test_280_18() + { + } + + [TestMethod] + public void Test_280_19() + { + } + + [TestMethod] + public void Test_280_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_281 + { + #region PassingTests + [TestMethod] + public void Test_281_01() + { + } + + [TestMethod] + public void Test_281_02() + { + } + + [TestMethod] + public void Test_281_03() + { + } + + [TestMethod] + public void Test_281_04() + { + } + + [TestMethod] + public void Test_281_05() + { + } + + [TestMethod] + public void Test_281_06() + { + } + + [TestMethod] + public void Test_281_07() + { + } + + [TestMethod] + public void Test_281_08() + { + } + + [TestMethod] + public void Test_281_09() + { + } + + [TestMethod] + public void Test_281_10() + { + } + + [TestMethod] + public void Test_281_11() + { + } + + [TestMethod] + public void Test_281_12() + { + } + + [TestMethod] + public void Test_281_13() + { + } + + [TestMethod] + public void Test_281_14() + { + } + + [TestMethod] + public void Test_281_15() + { + } + + [TestMethod] + public void Test_281_16() + { + } + + [TestMethod] + public void Test_281_17() + { + } + + [TestMethod] + public void Test_281_18() + { + } + + [TestMethod] + public void Test_281_19() + { + } + + [TestMethod] + public void Test_281_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_282 + { + #region PassingTests + [TestMethod] + public void Test_282_01() + { + } + + [TestMethod] + public void Test_282_02() + { + } + + [TestMethod] + public void Test_282_03() + { + } + + [TestMethod] + public void Test_282_04() + { + } + + [TestMethod] + public void Test_282_05() + { + } + + [TestMethod] + public void Test_282_06() + { + } + + [TestMethod] + public void Test_282_07() + { + } + + [TestMethod] + public void Test_282_08() + { + } + + [TestMethod] + public void Test_282_09() + { + } + + [TestMethod] + public void Test_282_10() + { + } + + [TestMethod] + public void Test_282_11() + { + } + + [TestMethod] + public void Test_282_12() + { + } + + [TestMethod] + public void Test_282_13() + { + } + + [TestMethod] + public void Test_282_14() + { + } + + [TestMethod] + public void Test_282_15() + { + } + + [TestMethod] + public void Test_282_16() + { + } + + [TestMethod] + public void Test_282_17() + { + } + + [TestMethod] + public void Test_282_18() + { + } + + [TestMethod] + public void Test_282_19() + { + } + + [TestMethod] + public void Test_282_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_283 + { + #region PassingTests + [TestMethod] + public void Test_283_01() + { + } + + [TestMethod] + public void Test_283_02() + { + } + + [TestMethod] + public void Test_283_03() + { + } + + [TestMethod] + public void Test_283_04() + { + } + + [TestMethod] + public void Test_283_05() + { + } + + [TestMethod] + public void Test_283_06() + { + } + + [TestMethod] + public void Test_283_07() + { + } + + [TestMethod] + public void Test_283_08() + { + } + + [TestMethod] + public void Test_283_09() + { + } + + [TestMethod] + public void Test_283_10() + { + } + + [TestMethod] + public void Test_283_11() + { + } + + [TestMethod] + public void Test_283_12() + { + } + + [TestMethod] + public void Test_283_13() + { + } + + [TestMethod] + public void Test_283_14() + { + } + + [TestMethod] + public void Test_283_15() + { + } + + [TestMethod] + public void Test_283_16() + { + } + + [TestMethod] + public void Test_283_17() + { + } + + [TestMethod] + public void Test_283_18() + { + } + + [TestMethod] + public void Test_283_19() + { + } + + [TestMethod] + public void Test_283_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_284 + { + #region PassingTests + [TestMethod] + public void Test_284_01() + { + } + + [TestMethod] + public void Test_284_02() + { + } + + [TestMethod] + public void Test_284_03() + { + } + + [TestMethod] + public void Test_284_04() + { + } + + [TestMethod] + public void Test_284_05() + { + } + + [TestMethod] + public void Test_284_06() + { + } + + [TestMethod] + public void Test_284_07() + { + } + + [TestMethod] + public void Test_284_08() + { + } + + [TestMethod] + public void Test_284_09() + { + } + + [TestMethod] + public void Test_284_10() + { + } + + [TestMethod] + public void Test_284_11() + { + } + + [TestMethod] + public void Test_284_12() + { + } + + [TestMethod] + public void Test_284_13() + { + } + + [TestMethod] + public void Test_284_14() + { + } + + [TestMethod] + public void Test_284_15() + { + } + + [TestMethod] + public void Test_284_16() + { + } + + [TestMethod] + public void Test_284_17() + { + } + + [TestMethod] + public void Test_284_18() + { + } + + [TestMethod] + public void Test_284_19() + { + } + + [TestMethod] + public void Test_284_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_285 + { + #region PassingTests + [TestMethod] + public void Test_285_01() + { + } + + [TestMethod] + public void Test_285_02() + { + } + + [TestMethod] + public void Test_285_03() + { + } + + [TestMethod] + public void Test_285_04() + { + } + + [TestMethod] + public void Test_285_05() + { + } + + [TestMethod] + public void Test_285_06() + { + } + + [TestMethod] + public void Test_285_07() + { + } + + [TestMethod] + public void Test_285_08() + { + } + + [TestMethod] + public void Test_285_09() + { + } + + [TestMethod] + public void Test_285_10() + { + } + + [TestMethod] + public void Test_285_11() + { + } + + [TestMethod] + public void Test_285_12() + { + } + + [TestMethod] + public void Test_285_13() + { + } + + [TestMethod] + public void Test_285_14() + { + } + + [TestMethod] + public void Test_285_15() + { + } + + [TestMethod] + public void Test_285_16() + { + } + + [TestMethod] + public void Test_285_17() + { + } + + [TestMethod] + public void Test_285_18() + { + } + + [TestMethod] + public void Test_285_19() + { + } + + [TestMethod] + public void Test_285_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_286 + { + #region PassingTests + [TestMethod] + public void Test_286_01() + { + } + + [TestMethod] + public void Test_286_02() + { + } + + [TestMethod] + public void Test_286_03() + { + } + + [TestMethod] + public void Test_286_04() + { + } + + [TestMethod] + public void Test_286_05() + { + } + + [TestMethod] + public void Test_286_06() + { + } + + [TestMethod] + public void Test_286_07() + { + } + + [TestMethod] + public void Test_286_08() + { + } + + [TestMethod] + public void Test_286_09() + { + } + + [TestMethod] + public void Test_286_10() + { + } + + [TestMethod] + public void Test_286_11() + { + } + + [TestMethod] + public void Test_286_12() + { + } + + [TestMethod] + public void Test_286_13() + { + } + + [TestMethod] + public void Test_286_14() + { + } + + [TestMethod] + public void Test_286_15() + { + } + + [TestMethod] + public void Test_286_16() + { + } + + [TestMethod] + public void Test_286_17() + { + } + + [TestMethod] + public void Test_286_18() + { + } + + [TestMethod] + public void Test_286_19() + { + } + + [TestMethod] + public void Test_286_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_287 + { + #region PassingTests + [TestMethod] + public void Test_287_01() + { + } + + [TestMethod] + public void Test_287_02() + { + } + + [TestMethod] + public void Test_287_03() + { + } + + [TestMethod] + public void Test_287_04() + { + } + + [TestMethod] + public void Test_287_05() + { + } + + [TestMethod] + public void Test_287_06() + { + } + + [TestMethod] + public void Test_287_07() + { + } + + [TestMethod] + public void Test_287_08() + { + } + + [TestMethod] + public void Test_287_09() + { + } + + [TestMethod] + public void Test_287_10() + { + } + + [TestMethod] + public void Test_287_11() + { + } + + [TestMethod] + public void Test_287_12() + { + } + + [TestMethod] + public void Test_287_13() + { + } + + [TestMethod] + public void Test_287_14() + { + } + + [TestMethod] + public void Test_287_15() + { + } + + [TestMethod] + public void Test_287_16() + { + } + + [TestMethod] + public void Test_287_17() + { + } + + [TestMethod] + public void Test_287_18() + { + } + + [TestMethod] + public void Test_287_19() + { + } + + [TestMethod] + public void Test_287_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_288 + { + #region PassingTests + [TestMethod] + public void Test_288_01() + { + } + + [TestMethod] + public void Test_288_02() + { + } + + [TestMethod] + public void Test_288_03() + { + } + + [TestMethod] + public void Test_288_04() + { + } + + [TestMethod] + public void Test_288_05() + { + } + + [TestMethod] + public void Test_288_06() + { + } + + [TestMethod] + public void Test_288_07() + { + } + + [TestMethod] + public void Test_288_08() + { + } + + [TestMethod] + public void Test_288_09() + { + } + + [TestMethod] + public void Test_288_10() + { + } + + [TestMethod] + public void Test_288_11() + { + } + + [TestMethod] + public void Test_288_12() + { + } + + [TestMethod] + public void Test_288_13() + { + } + + [TestMethod] + public void Test_288_14() + { + } + + [TestMethod] + public void Test_288_15() + { + } + + [TestMethod] + public void Test_288_16() + { + } + + [TestMethod] + public void Test_288_17() + { + } + + [TestMethod] + public void Test_288_18() + { + } + + [TestMethod] + public void Test_288_19() + { + } + + [TestMethod] + public void Test_288_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_289 + { + #region PassingTests + [TestMethod] + public void Test_289_01() + { + } + + [TestMethod] + public void Test_289_02() + { + } + + [TestMethod] + public void Test_289_03() + { + } + + [TestMethod] + public void Test_289_04() + { + } + + [TestMethod] + public void Test_289_05() + { + } + + [TestMethod] + public void Test_289_06() + { + } + + [TestMethod] + public void Test_289_07() + { + } + + [TestMethod] + public void Test_289_08() + { + } + + [TestMethod] + public void Test_289_09() + { + } + + [TestMethod] + public void Test_289_10() + { + } + + [TestMethod] + public void Test_289_11() + { + } + + [TestMethod] + public void Test_289_12() + { + } + + [TestMethod] + public void Test_289_13() + { + } + + [TestMethod] + public void Test_289_14() + { + } + + [TestMethod] + public void Test_289_15() + { + } + + [TestMethod] + public void Test_289_16() + { + } + + [TestMethod] + public void Test_289_17() + { + } + + [TestMethod] + public void Test_289_18() + { + } + + [TestMethod] + public void Test_289_19() + { + } + + [TestMethod] + public void Test_289_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_290 + { + #region PassingTests + [TestMethod] + public void Test_290_01() + { + } + + [TestMethod] + public void Test_290_02() + { + } + + [TestMethod] + public void Test_290_03() + { + } + + [TestMethod] + public void Test_290_04() + { + } + + [TestMethod] + public void Test_290_05() + { + } + + [TestMethod] + public void Test_290_06() + { + } + + [TestMethod] + public void Test_290_07() + { + } + + [TestMethod] + public void Test_290_08() + { + } + + [TestMethod] + public void Test_290_09() + { + } + + [TestMethod] + public void Test_290_10() + { + } + + [TestMethod] + public void Test_290_11() + { + } + + [TestMethod] + public void Test_290_12() + { + } + + [TestMethod] + public void Test_290_13() + { + } + + [TestMethod] + public void Test_290_14() + { + } + + [TestMethod] + public void Test_290_15() + { + } + + [TestMethod] + public void Test_290_16() + { + } + + [TestMethod] + public void Test_290_17() + { + } + + [TestMethod] + public void Test_290_18() + { + } + + [TestMethod] + public void Test_290_19() + { + } + + [TestMethod] + public void Test_290_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_291 + { + #region PassingTests + [TestMethod] + public void Test_291_01() + { + } + + [TestMethod] + public void Test_291_02() + { + } + + [TestMethod] + public void Test_291_03() + { + } + + [TestMethod] + public void Test_291_04() + { + } + + [TestMethod] + public void Test_291_05() + { + } + + [TestMethod] + public void Test_291_06() + { + } + + [TestMethod] + public void Test_291_07() + { + } + + [TestMethod] + public void Test_291_08() + { + } + + [TestMethod] + public void Test_291_09() + { + } + + [TestMethod] + public void Test_291_10() + { + } + + [TestMethod] + public void Test_291_11() + { + } + + [TestMethod] + public void Test_291_12() + { + } + + [TestMethod] + public void Test_291_13() + { + } + + [TestMethod] + public void Test_291_14() + { + } + + [TestMethod] + public void Test_291_15() + { + } + + [TestMethod] + public void Test_291_16() + { + } + + [TestMethod] + public void Test_291_17() + { + } + + [TestMethod] + public void Test_291_18() + { + } + + [TestMethod] + public void Test_291_19() + { + } + + [TestMethod] + public void Test_291_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_292 + { + #region PassingTests + [TestMethod] + public void Test_292_01() + { + } + + [TestMethod] + public void Test_292_02() + { + } + + [TestMethod] + public void Test_292_03() + { + } + + [TestMethod] + public void Test_292_04() + { + } + + [TestMethod] + public void Test_292_05() + { + } + + [TestMethod] + public void Test_292_06() + { + } + + [TestMethod] + public void Test_292_07() + { + } + + [TestMethod] + public void Test_292_08() + { + } + + [TestMethod] + public void Test_292_09() + { + } + + [TestMethod] + public void Test_292_10() + { + } + + [TestMethod] + public void Test_292_11() + { + } + + [TestMethod] + public void Test_292_12() + { + } + + [TestMethod] + public void Test_292_13() + { + } + + [TestMethod] + public void Test_292_14() + { + } + + [TestMethod] + public void Test_292_15() + { + } + + [TestMethod] + public void Test_292_16() + { + } + + [TestMethod] + public void Test_292_17() + { + } + + [TestMethod] + public void Test_292_18() + { + } + + [TestMethod] + public void Test_292_19() + { + } + + [TestMethod] + public void Test_292_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_293 + { + #region PassingTests + [TestMethod] + public void Test_293_01() + { + } + + [TestMethod] + public void Test_293_02() + { + } + + [TestMethod] + public void Test_293_03() + { + } + + [TestMethod] + public void Test_293_04() + { + } + + [TestMethod] + public void Test_293_05() + { + } + + [TestMethod] + public void Test_293_06() + { + } + + [TestMethod] + public void Test_293_07() + { + } + + [TestMethod] + public void Test_293_08() + { + } + + [TestMethod] + public void Test_293_09() + { + } + + [TestMethod] + public void Test_293_10() + { + } + + [TestMethod] + public void Test_293_11() + { + } + + [TestMethod] + public void Test_293_12() + { + } + + [TestMethod] + public void Test_293_13() + { + } + + [TestMethod] + public void Test_293_14() + { + } + + [TestMethod] + public void Test_293_15() + { + } + + [TestMethod] + public void Test_293_16() + { + } + + [TestMethod] + public void Test_293_17() + { + } + + [TestMethod] + public void Test_293_18() + { + } + + [TestMethod] + public void Test_293_19() + { + } + + [TestMethod] + public void Test_293_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_294 + { + #region PassingTests + [TestMethod] + public void Test_294_01() + { + } + + [TestMethod] + public void Test_294_02() + { + } + + [TestMethod] + public void Test_294_03() + { + } + + [TestMethod] + public void Test_294_04() + { + } + + [TestMethod] + public void Test_294_05() + { + } + + [TestMethod] + public void Test_294_06() + { + } + + [TestMethod] + public void Test_294_07() + { + } + + [TestMethod] + public void Test_294_08() + { + } + + [TestMethod] + public void Test_294_09() + { + } + + [TestMethod] + public void Test_294_10() + { + } + + [TestMethod] + public void Test_294_11() + { + } + + [TestMethod] + public void Test_294_12() + { + } + + [TestMethod] + public void Test_294_13() + { + } + + [TestMethod] + public void Test_294_14() + { + } + + [TestMethod] + public void Test_294_15() + { + } + + [TestMethod] + public void Test_294_16() + { + } + + [TestMethod] + public void Test_294_17() + { + } + + [TestMethod] + public void Test_294_18() + { + } + + [TestMethod] + public void Test_294_19() + { + } + + [TestMethod] + public void Test_294_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_295 + { + #region PassingTests + [TestMethod] + public void Test_295_01() + { + } + + [TestMethod] + public void Test_295_02() + { + } + + [TestMethod] + public void Test_295_03() + { + } + + [TestMethod] + public void Test_295_04() + { + } + + [TestMethod] + public void Test_295_05() + { + } + + [TestMethod] + public void Test_295_06() + { + } + + [TestMethod] + public void Test_295_07() + { + } + + [TestMethod] + public void Test_295_08() + { + } + + [TestMethod] + public void Test_295_09() + { + } + + [TestMethod] + public void Test_295_10() + { + } + + [TestMethod] + public void Test_295_11() + { + } + + [TestMethod] + public void Test_295_12() + { + } + + [TestMethod] + public void Test_295_13() + { + } + + [TestMethod] + public void Test_295_14() + { + } + + [TestMethod] + public void Test_295_15() + { + } + + [TestMethod] + public void Test_295_16() + { + } + + [TestMethod] + public void Test_295_17() + { + } + + [TestMethod] + public void Test_295_18() + { + } + + [TestMethod] + public void Test_295_19() + { + } + + [TestMethod] + public void Test_295_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_296 + { + #region PassingTests + [TestMethod] + public void Test_296_01() + { + } + + [TestMethod] + public void Test_296_02() + { + } + + [TestMethod] + public void Test_296_03() + { + } + + [TestMethod] + public void Test_296_04() + { + } + + [TestMethod] + public void Test_296_05() + { + } + + [TestMethod] + public void Test_296_06() + { + } + + [TestMethod] + public void Test_296_07() + { + } + + [TestMethod] + public void Test_296_08() + { + } + + [TestMethod] + public void Test_296_09() + { + } + + [TestMethod] + public void Test_296_10() + { + } + + [TestMethod] + public void Test_296_11() + { + } + + [TestMethod] + public void Test_296_12() + { + } + + [TestMethod] + public void Test_296_13() + { + } + + [TestMethod] + public void Test_296_14() + { + } + + [TestMethod] + public void Test_296_15() + { + } + + [TestMethod] + public void Test_296_16() + { + } + + [TestMethod] + public void Test_296_17() + { + } + + [TestMethod] + public void Test_296_18() + { + } + + [TestMethod] + public void Test_296_19() + { + } + + [TestMethod] + public void Test_296_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_297 + { + #region PassingTests + [TestMethod] + public void Test_297_01() + { + } + + [TestMethod] + public void Test_297_02() + { + } + + [TestMethod] + public void Test_297_03() + { + } + + [TestMethod] + public void Test_297_04() + { + } + + [TestMethod] + public void Test_297_05() + { + } + + [TestMethod] + public void Test_297_06() + { + } + + [TestMethod] + public void Test_297_07() + { + } + + [TestMethod] + public void Test_297_08() + { + } + + [TestMethod] + public void Test_297_09() + { + } + + [TestMethod] + public void Test_297_10() + { + } + + [TestMethod] + public void Test_297_11() + { + } + + [TestMethod] + public void Test_297_12() + { + } + + [TestMethod] + public void Test_297_13() + { + } + + [TestMethod] + public void Test_297_14() + { + } + + [TestMethod] + public void Test_297_15() + { + } + + [TestMethod] + public void Test_297_16() + { + } + + [TestMethod] + public void Test_297_17() + { + } + + [TestMethod] + public void Test_297_18() + { + } + + [TestMethod] + public void Test_297_19() + { + } + + [TestMethod] + public void Test_297_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_298 + { + #region PassingTests + [TestMethod] + public void Test_298_01() + { + } + + [TestMethod] + public void Test_298_02() + { + } + + [TestMethod] + public void Test_298_03() + { + } + + [TestMethod] + public void Test_298_04() + { + } + + [TestMethod] + public void Test_298_05() + { + } + + [TestMethod] + public void Test_298_06() + { + } + + [TestMethod] + public void Test_298_07() + { + } + + [TestMethod] + public void Test_298_08() + { + } + + [TestMethod] + public void Test_298_09() + { + } + + [TestMethod] + public void Test_298_10() + { + } + + [TestMethod] + public void Test_298_11() + { + } + + [TestMethod] + public void Test_298_12() + { + } + + [TestMethod] + public void Test_298_13() + { + } + + [TestMethod] + public void Test_298_14() + { + } + + [TestMethod] + public void Test_298_15() + { + } + + [TestMethod] + public void Test_298_16() + { + } + + [TestMethod] + public void Test_298_17() + { + } + + [TestMethod] + public void Test_298_18() + { + } + + [TestMethod] + public void Test_298_19() + { + } + + [TestMethod] + public void Test_298_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_299 + { + #region PassingTests + [TestMethod] + public void Test_299_01() + { + } + + [TestMethod] + public void Test_299_02() + { + } + + [TestMethod] + public void Test_299_03() + { + } + + [TestMethod] + public void Test_299_04() + { + } + + [TestMethod] + public void Test_299_05() + { + } + + [TestMethod] + public void Test_299_06() + { + } + + [TestMethod] + public void Test_299_07() + { + } + + [TestMethod] + public void Test_299_08() + { + } + + [TestMethod] + public void Test_299_09() + { + } + + [TestMethod] + public void Test_299_10() + { + } + + [TestMethod] + public void Test_299_11() + { + } + + [TestMethod] + public void Test_299_12() + { + } + + [TestMethod] + public void Test_299_13() + { + } + + [TestMethod] + public void Test_299_14() + { + } + + [TestMethod] + public void Test_299_15() + { + } + + [TestMethod] + public void Test_299_16() + { + } + + [TestMethod] + public void Test_299_17() + { + } + + [TestMethod] + public void Test_299_18() + { + } + + [TestMethod] + public void Test_299_19() + { + } + + [TestMethod] + public void Test_299_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_300 + { + #region PassingTests + [TestMethod] + public void Test_300_01() + { + } + + [TestMethod] + public void Test_300_02() + { + } + + [TestMethod] + public void Test_300_03() + { + } + + [TestMethod] + public void Test_300_04() + { + } + + [TestMethod] + public void Test_300_05() + { + } + + [TestMethod] + public void Test_300_06() + { + } + + [TestMethod] + public void Test_300_07() + { + } + + [TestMethod] + public void Test_300_08() + { + } + + [TestMethod] + public void Test_300_09() + { + } + + [TestMethod] + public void Test_300_10() + { + } + + [TestMethod] + public void Test_300_11() + { + } + + [TestMethod] + public void Test_300_12() + { + } + + [TestMethod] + public void Test_300_13() + { + } + + [TestMethod] + public void Test_300_14() + { + } + + [TestMethod] + public void Test_300_15() + { + } + + [TestMethod] + public void Test_300_16() + { + } + + [TestMethod] + public void Test_300_17() + { + } + + [TestMethod] + public void Test_300_18() + { + } + + [TestMethod] + public void Test_300_19() + { + } + + [TestMethod] + public void Test_300_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_301 + { + #region PassingTests + [TestMethod] + public void Test_301_01() + { + } + + [TestMethod] + public void Test_301_02() + { + } + + [TestMethod] + public void Test_301_03() + { + } + + [TestMethod] + public void Test_301_04() + { + } + + [TestMethod] + public void Test_301_05() + { + } + + [TestMethod] + public void Test_301_06() + { + } + + [TestMethod] + public void Test_301_07() + { + } + + [TestMethod] + public void Test_301_08() + { + } + + [TestMethod] + public void Test_301_09() + { + } + + [TestMethod] + public void Test_301_10() + { + } + + [TestMethod] + public void Test_301_11() + { + } + + [TestMethod] + public void Test_301_12() + { + } + + [TestMethod] + public void Test_301_13() + { + } + + [TestMethod] + public void Test_301_14() + { + } + + [TestMethod] + public void Test_301_15() + { + } + + [TestMethod] + public void Test_301_16() + { + } + + [TestMethod] + public void Test_301_17() + { + } + + [TestMethod] + public void Test_301_18() + { + } + + [TestMethod] + public void Test_301_19() + { + } + + [TestMethod] + public void Test_301_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_302 + { + #region PassingTests + [TestMethod] + public void Test_302_01() + { + } + + [TestMethod] + public void Test_302_02() + { + } + + [TestMethod] + public void Test_302_03() + { + } + + [TestMethod] + public void Test_302_04() + { + } + + [TestMethod] + public void Test_302_05() + { + } + + [TestMethod] + public void Test_302_06() + { + } + + [TestMethod] + public void Test_302_07() + { + } + + [TestMethod] + public void Test_302_08() + { + } + + [TestMethod] + public void Test_302_09() + { + } + + [TestMethod] + public void Test_302_10() + { + } + + [TestMethod] + public void Test_302_11() + { + } + + [TestMethod] + public void Test_302_12() + { + } + + [TestMethod] + public void Test_302_13() + { + } + + [TestMethod] + public void Test_302_14() + { + } + + [TestMethod] + public void Test_302_15() + { + } + + [TestMethod] + public void Test_302_16() + { + } + + [TestMethod] + public void Test_302_17() + { + } + + [TestMethod] + public void Test_302_18() + { + } + + [TestMethod] + public void Test_302_19() + { + } + + [TestMethod] + public void Test_302_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_303 + { + #region PassingTests + [TestMethod] + public void Test_303_01() + { + } + + [TestMethod] + public void Test_303_02() + { + } + + [TestMethod] + public void Test_303_03() + { + } + + [TestMethod] + public void Test_303_04() + { + } + + [TestMethod] + public void Test_303_05() + { + } + + [TestMethod] + public void Test_303_06() + { + } + + [TestMethod] + public void Test_303_07() + { + } + + [TestMethod] + public void Test_303_08() + { + } + + [TestMethod] + public void Test_303_09() + { + } + + [TestMethod] + public void Test_303_10() + { + } + + [TestMethod] + public void Test_303_11() + { + } + + [TestMethod] + public void Test_303_12() + { + } + + [TestMethod] + public void Test_303_13() + { + } + + [TestMethod] + public void Test_303_14() + { + } + + [TestMethod] + public void Test_303_15() + { + } + + [TestMethod] + public void Test_303_16() + { + } + + [TestMethod] + public void Test_303_17() + { + } + + [TestMethod] + public void Test_303_18() + { + } + + [TestMethod] + public void Test_303_19() + { + } + + [TestMethod] + public void Test_303_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_304 + { + #region PassingTests + [TestMethod] + public void Test_304_01() + { + } + + [TestMethod] + public void Test_304_02() + { + } + + [TestMethod] + public void Test_304_03() + { + } + + [TestMethod] + public void Test_304_04() + { + } + + [TestMethod] + public void Test_304_05() + { + } + + [TestMethod] + public void Test_304_06() + { + } + + [TestMethod] + public void Test_304_07() + { + } + + [TestMethod] + public void Test_304_08() + { + } + + [TestMethod] + public void Test_304_09() + { + } + + [TestMethod] + public void Test_304_10() + { + } + + [TestMethod] + public void Test_304_11() + { + } + + [TestMethod] + public void Test_304_12() + { + } + + [TestMethod] + public void Test_304_13() + { + } + + [TestMethod] + public void Test_304_14() + { + } + + [TestMethod] + public void Test_304_15() + { + } + + [TestMethod] + public void Test_304_16() + { + } + + [TestMethod] + public void Test_304_17() + { + } + + [TestMethod] + public void Test_304_18() + { + } + + [TestMethod] + public void Test_304_19() + { + } + + [TestMethod] + public void Test_304_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_305 + { + #region PassingTests + [TestMethod] + public void Test_305_01() + { + } + + [TestMethod] + public void Test_305_02() + { + } + + [TestMethod] + public void Test_305_03() + { + } + + [TestMethod] + public void Test_305_04() + { + } + + [TestMethod] + public void Test_305_05() + { + } + + [TestMethod] + public void Test_305_06() + { + } + + [TestMethod] + public void Test_305_07() + { + } + + [TestMethod] + public void Test_305_08() + { + } + + [TestMethod] + public void Test_305_09() + { + } + + [TestMethod] + public void Test_305_10() + { + } + + [TestMethod] + public void Test_305_11() + { + } + + [TestMethod] + public void Test_305_12() + { + } + + [TestMethod] + public void Test_305_13() + { + } + + [TestMethod] + public void Test_305_14() + { + } + + [TestMethod] + public void Test_305_15() + { + } + + [TestMethod] + public void Test_305_16() + { + } + + [TestMethod] + public void Test_305_17() + { + } + + [TestMethod] + public void Test_305_18() + { + } + + [TestMethod] + public void Test_305_19() + { + } + + [TestMethod] + public void Test_305_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_306 + { + #region PassingTests + [TestMethod] + public void Test_306_01() + { + } + + [TestMethod] + public void Test_306_02() + { + } + + [TestMethod] + public void Test_306_03() + { + } + + [TestMethod] + public void Test_306_04() + { + } + + [TestMethod] + public void Test_306_05() + { + } + + [TestMethod] + public void Test_306_06() + { + } + + [TestMethod] + public void Test_306_07() + { + } + + [TestMethod] + public void Test_306_08() + { + } + + [TestMethod] + public void Test_306_09() + { + } + + [TestMethod] + public void Test_306_10() + { + } + + [TestMethod] + public void Test_306_11() + { + } + + [TestMethod] + public void Test_306_12() + { + } + + [TestMethod] + public void Test_306_13() + { + } + + [TestMethod] + public void Test_306_14() + { + } + + [TestMethod] + public void Test_306_15() + { + } + + [TestMethod] + public void Test_306_16() + { + } + + [TestMethod] + public void Test_306_17() + { + } + + [TestMethod] + public void Test_306_18() + { + } + + [TestMethod] + public void Test_306_19() + { + } + + [TestMethod] + public void Test_306_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_307 + { + #region PassingTests + [TestMethod] + public void Test_307_01() + { + } + + [TestMethod] + public void Test_307_02() + { + } + + [TestMethod] + public void Test_307_03() + { + } + + [TestMethod] + public void Test_307_04() + { + } + + [TestMethod] + public void Test_307_05() + { + } + + [TestMethod] + public void Test_307_06() + { + } + + [TestMethod] + public void Test_307_07() + { + } + + [TestMethod] + public void Test_307_08() + { + } + + [TestMethod] + public void Test_307_09() + { + } + + [TestMethod] + public void Test_307_10() + { + } + + [TestMethod] + public void Test_307_11() + { + } + + [TestMethod] + public void Test_307_12() + { + } + + [TestMethod] + public void Test_307_13() + { + } + + [TestMethod] + public void Test_307_14() + { + } + + [TestMethod] + public void Test_307_15() + { + } + + [TestMethod] + public void Test_307_16() + { + } + + [TestMethod] + public void Test_307_17() + { + } + + [TestMethod] + public void Test_307_18() + { + } + + [TestMethod] + public void Test_307_19() + { + } + + [TestMethod] + public void Test_307_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_308 + { + #region PassingTests + [TestMethod] + public void Test_308_01() + { + } + + [TestMethod] + public void Test_308_02() + { + } + + [TestMethod] + public void Test_308_03() + { + } + + [TestMethod] + public void Test_308_04() + { + } + + [TestMethod] + public void Test_308_05() + { + } + + [TestMethod] + public void Test_308_06() + { + } + + [TestMethod] + public void Test_308_07() + { + } + + [TestMethod] + public void Test_308_08() + { + } + + [TestMethod] + public void Test_308_09() + { + } + + [TestMethod] + public void Test_308_10() + { + } + + [TestMethod] + public void Test_308_11() + { + } + + [TestMethod] + public void Test_308_12() + { + } + + [TestMethod] + public void Test_308_13() + { + } + + [TestMethod] + public void Test_308_14() + { + } + + [TestMethod] + public void Test_308_15() + { + } + + [TestMethod] + public void Test_308_16() + { + } + + [TestMethod] + public void Test_308_17() + { + } + + [TestMethod] + public void Test_308_18() + { + } + + [TestMethod] + public void Test_308_19() + { + } + + [TestMethod] + public void Test_308_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_309 + { + #region PassingTests + [TestMethod] + public void Test_309_01() + { + } + + [TestMethod] + public void Test_309_02() + { + } + + [TestMethod] + public void Test_309_03() + { + } + + [TestMethod] + public void Test_309_04() + { + } + + [TestMethod] + public void Test_309_05() + { + } + + [TestMethod] + public void Test_309_06() + { + } + + [TestMethod] + public void Test_309_07() + { + } + + [TestMethod] + public void Test_309_08() + { + } + + [TestMethod] + public void Test_309_09() + { + } + + [TestMethod] + public void Test_309_10() + { + } + + [TestMethod] + public void Test_309_11() + { + } + + [TestMethod] + public void Test_309_12() + { + } + + [TestMethod] + public void Test_309_13() + { + } + + [TestMethod] + public void Test_309_14() + { + } + + [TestMethod] + public void Test_309_15() + { + } + + [TestMethod] + public void Test_309_16() + { + } + + [TestMethod] + public void Test_309_17() + { + } + + [TestMethod] + public void Test_309_18() + { + } + + [TestMethod] + public void Test_309_19() + { + } + + [TestMethod] + public void Test_309_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_310 + { + #region PassingTests + [TestMethod] + public void Test_310_01() + { + } + + [TestMethod] + public void Test_310_02() + { + } + + [TestMethod] + public void Test_310_03() + { + } + + [TestMethod] + public void Test_310_04() + { + } + + [TestMethod] + public void Test_310_05() + { + } + + [TestMethod] + public void Test_310_06() + { + } + + [TestMethod] + public void Test_310_07() + { + } + + [TestMethod] + public void Test_310_08() + { + } + + [TestMethod] + public void Test_310_09() + { + } + + [TestMethod] + public void Test_310_10() + { + } + + [TestMethod] + public void Test_310_11() + { + } + + [TestMethod] + public void Test_310_12() + { + } + + [TestMethod] + public void Test_310_13() + { + } + + [TestMethod] + public void Test_310_14() + { + } + + [TestMethod] + public void Test_310_15() + { + } + + [TestMethod] + public void Test_310_16() + { + } + + [TestMethod] + public void Test_310_17() + { + } + + [TestMethod] + public void Test_310_18() + { + } + + [TestMethod] + public void Test_310_19() + { + } + + [TestMethod] + public void Test_310_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_311 + { + #region PassingTests + [TestMethod] + public void Test_311_01() + { + } + + [TestMethod] + public void Test_311_02() + { + } + + [TestMethod] + public void Test_311_03() + { + } + + [TestMethod] + public void Test_311_04() + { + } + + [TestMethod] + public void Test_311_05() + { + } + + [TestMethod] + public void Test_311_06() + { + } + + [TestMethod] + public void Test_311_07() + { + } + + [TestMethod] + public void Test_311_08() + { + } + + [TestMethod] + public void Test_311_09() + { + } + + [TestMethod] + public void Test_311_10() + { + } + + [TestMethod] + public void Test_311_11() + { + } + + [TestMethod] + public void Test_311_12() + { + } + + [TestMethod] + public void Test_311_13() + { + } + + [TestMethod] + public void Test_311_14() + { + } + + [TestMethod] + public void Test_311_15() + { + } + + [TestMethod] + public void Test_311_16() + { + } + + [TestMethod] + public void Test_311_17() + { + } + + [TestMethod] + public void Test_311_18() + { + } + + [TestMethod] + public void Test_311_19() + { + } + + [TestMethod] + public void Test_311_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_312 + { + #region PassingTests + [TestMethod] + public void Test_312_01() + { + } + + [TestMethod] + public void Test_312_02() + { + } + + [TestMethod] + public void Test_312_03() + { + } + + [TestMethod] + public void Test_312_04() + { + } + + [TestMethod] + public void Test_312_05() + { + } + + [TestMethod] + public void Test_312_06() + { + } + + [TestMethod] + public void Test_312_07() + { + } + + [TestMethod] + public void Test_312_08() + { + } + + [TestMethod] + public void Test_312_09() + { + } + + [TestMethod] + public void Test_312_10() + { + } + + [TestMethod] + public void Test_312_11() + { + } + + [TestMethod] + public void Test_312_12() + { + } + + [TestMethod] + public void Test_312_13() + { + } + + [TestMethod] + public void Test_312_14() + { + } + + [TestMethod] + public void Test_312_15() + { + } + + [TestMethod] + public void Test_312_16() + { + } + + [TestMethod] + public void Test_312_17() + { + } + + [TestMethod] + public void Test_312_18() + { + } + + [TestMethod] + public void Test_312_19() + { + } + + [TestMethod] + public void Test_312_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_313 + { + #region PassingTests + [TestMethod] + public void Test_313_01() + { + } + + [TestMethod] + public void Test_313_02() + { + } + + [TestMethod] + public void Test_313_03() + { + } + + [TestMethod] + public void Test_313_04() + { + } + + [TestMethod] + public void Test_313_05() + { + } + + [TestMethod] + public void Test_313_06() + { + } + + [TestMethod] + public void Test_313_07() + { + } + + [TestMethod] + public void Test_313_08() + { + } + + [TestMethod] + public void Test_313_09() + { + } + + [TestMethod] + public void Test_313_10() + { + } + + [TestMethod] + public void Test_313_11() + { + } + + [TestMethod] + public void Test_313_12() + { + } + + [TestMethod] + public void Test_313_13() + { + } + + [TestMethod] + public void Test_313_14() + { + } + + [TestMethod] + public void Test_313_15() + { + } + + [TestMethod] + public void Test_313_16() + { + } + + [TestMethod] + public void Test_313_17() + { + } + + [TestMethod] + public void Test_313_18() + { + } + + [TestMethod] + public void Test_313_19() + { + } + + [TestMethod] + public void Test_313_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_314 + { + #region PassingTests + [TestMethod] + public void Test_314_01() + { + } + + [TestMethod] + public void Test_314_02() + { + } + + [TestMethod] + public void Test_314_03() + { + } + + [TestMethod] + public void Test_314_04() + { + } + + [TestMethod] + public void Test_314_05() + { + } + + [TestMethod] + public void Test_314_06() + { + } + + [TestMethod] + public void Test_314_07() + { + } + + [TestMethod] + public void Test_314_08() + { + } + + [TestMethod] + public void Test_314_09() + { + } + + [TestMethod] + public void Test_314_10() + { + } + + [TestMethod] + public void Test_314_11() + { + } + + [TestMethod] + public void Test_314_12() + { + } + + [TestMethod] + public void Test_314_13() + { + } + + [TestMethod] + public void Test_314_14() + { + } + + [TestMethod] + public void Test_314_15() + { + } + + [TestMethod] + public void Test_314_16() + { + } + + [TestMethod] + public void Test_314_17() + { + } + + [TestMethod] + public void Test_314_18() + { + } + + [TestMethod] + public void Test_314_19() + { + } + + [TestMethod] + public void Test_314_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_315 + { + #region PassingTests + [TestMethod] + public void Test_315_01() + { + } + + [TestMethod] + public void Test_315_02() + { + } + + [TestMethod] + public void Test_315_03() + { + } + + [TestMethod] + public void Test_315_04() + { + } + + [TestMethod] + public void Test_315_05() + { + } + + [TestMethod] + public void Test_315_06() + { + } + + [TestMethod] + public void Test_315_07() + { + } + + [TestMethod] + public void Test_315_08() + { + } + + [TestMethod] + public void Test_315_09() + { + } + + [TestMethod] + public void Test_315_10() + { + } + + [TestMethod] + public void Test_315_11() + { + } + + [TestMethod] + public void Test_315_12() + { + } + + [TestMethod] + public void Test_315_13() + { + } + + [TestMethod] + public void Test_315_14() + { + } + + [TestMethod] + public void Test_315_15() + { + } + + [TestMethod] + public void Test_315_16() + { + } + + [TestMethod] + public void Test_315_17() + { + } + + [TestMethod] + public void Test_315_18() + { + } + + [TestMethod] + public void Test_315_19() + { + } + + [TestMethod] + public void Test_315_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_316 + { + #region PassingTests + [TestMethod] + public void Test_316_01() + { + } + + [TestMethod] + public void Test_316_02() + { + } + + [TestMethod] + public void Test_316_03() + { + } + + [TestMethod] + public void Test_316_04() + { + } + + [TestMethod] + public void Test_316_05() + { + } + + [TestMethod] + public void Test_316_06() + { + } + + [TestMethod] + public void Test_316_07() + { + } + + [TestMethod] + public void Test_316_08() + { + } + + [TestMethod] + public void Test_316_09() + { + } + + [TestMethod] + public void Test_316_10() + { + } + + [TestMethod] + public void Test_316_11() + { + } + + [TestMethod] + public void Test_316_12() + { + } + + [TestMethod] + public void Test_316_13() + { + } + + [TestMethod] + public void Test_316_14() + { + } + + [TestMethod] + public void Test_316_15() + { + } + + [TestMethod] + public void Test_316_16() + { + } + + [TestMethod] + public void Test_316_17() + { + } + + [TestMethod] + public void Test_316_18() + { + } + + [TestMethod] + public void Test_316_19() + { + } + + [TestMethod] + public void Test_316_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_317 + { + #region PassingTests + [TestMethod] + public void Test_317_01() + { + } + + [TestMethod] + public void Test_317_02() + { + } + + [TestMethod] + public void Test_317_03() + { + } + + [TestMethod] + public void Test_317_04() + { + } + + [TestMethod] + public void Test_317_05() + { + } + + [TestMethod] + public void Test_317_06() + { + } + + [TestMethod] + public void Test_317_07() + { + } + + [TestMethod] + public void Test_317_08() + { + } + + [TestMethod] + public void Test_317_09() + { + } + + [TestMethod] + public void Test_317_10() + { + } + + [TestMethod] + public void Test_317_11() + { + } + + [TestMethod] + public void Test_317_12() + { + } + + [TestMethod] + public void Test_317_13() + { + } + + [TestMethod] + public void Test_317_14() + { + } + + [TestMethod] + public void Test_317_15() + { + } + + [TestMethod] + public void Test_317_16() + { + } + + [TestMethod] + public void Test_317_17() + { + } + + [TestMethod] + public void Test_317_18() + { + } + + [TestMethod] + public void Test_317_19() + { + } + + [TestMethod] + public void Test_317_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_318 + { + #region PassingTests + [TestMethod] + public void Test_318_01() + { + } + + [TestMethod] + public void Test_318_02() + { + } + + [TestMethod] + public void Test_318_03() + { + } + + [TestMethod] + public void Test_318_04() + { + } + + [TestMethod] + public void Test_318_05() + { + } + + [TestMethod] + public void Test_318_06() + { + } + + [TestMethod] + public void Test_318_07() + { + } + + [TestMethod] + public void Test_318_08() + { + } + + [TestMethod] + public void Test_318_09() + { + } + + [TestMethod] + public void Test_318_10() + { + } + + [TestMethod] + public void Test_318_11() + { + } + + [TestMethod] + public void Test_318_12() + { + } + + [TestMethod] + public void Test_318_13() + { + } + + [TestMethod] + public void Test_318_14() + { + } + + [TestMethod] + public void Test_318_15() + { + } + + [TestMethod] + public void Test_318_16() + { + } + + [TestMethod] + public void Test_318_17() + { + } + + [TestMethod] + public void Test_318_18() + { + } + + [TestMethod] + public void Test_318_19() + { + } + + [TestMethod] + public void Test_318_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_319 + { + #region PassingTests + [TestMethod] + public void Test_319_01() + { + } + + [TestMethod] + public void Test_319_02() + { + } + + [TestMethod] + public void Test_319_03() + { + } + + [TestMethod] + public void Test_319_04() + { + } + + [TestMethod] + public void Test_319_05() + { + } + + [TestMethod] + public void Test_319_06() + { + } + + [TestMethod] + public void Test_319_07() + { + } + + [TestMethod] + public void Test_319_08() + { + } + + [TestMethod] + public void Test_319_09() + { + } + + [TestMethod] + public void Test_319_10() + { + } + + [TestMethod] + public void Test_319_11() + { + } + + [TestMethod] + public void Test_319_12() + { + } + + [TestMethod] + public void Test_319_13() + { + } + + [TestMethod] + public void Test_319_14() + { + } + + [TestMethod] + public void Test_319_15() + { + } + + [TestMethod] + public void Test_319_16() + { + } + + [TestMethod] + public void Test_319_17() + { + } + + [TestMethod] + public void Test_319_18() + { + } + + [TestMethod] + public void Test_319_19() + { + } + + [TestMethod] + public void Test_319_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_320 + { + #region PassingTests + [TestMethod] + public void Test_320_01() + { + } + + [TestMethod] + public void Test_320_02() + { + } + + [TestMethod] + public void Test_320_03() + { + } + + [TestMethod] + public void Test_320_04() + { + } + + [TestMethod] + public void Test_320_05() + { + } + + [TestMethod] + public void Test_320_06() + { + } + + [TestMethod] + public void Test_320_07() + { + } + + [TestMethod] + public void Test_320_08() + { + } + + [TestMethod] + public void Test_320_09() + { + } + + [TestMethod] + public void Test_320_10() + { + } + + [TestMethod] + public void Test_320_11() + { + } + + [TestMethod] + public void Test_320_12() + { + } + + [TestMethod] + public void Test_320_13() + { + } + + [TestMethod] + public void Test_320_14() + { + } + + [TestMethod] + public void Test_320_15() + { + } + + [TestMethod] + public void Test_320_16() + { + } + + [TestMethod] + public void Test_320_17() + { + } + + [TestMethod] + public void Test_320_18() + { + } + + [TestMethod] + public void Test_320_19() + { + } + + [TestMethod] + public void Test_320_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_321 + { + #region PassingTests + [TestMethod] + public void Test_321_01() + { + } + + [TestMethod] + public void Test_321_02() + { + } + + [TestMethod] + public void Test_321_03() + { + } + + [TestMethod] + public void Test_321_04() + { + } + + [TestMethod] + public void Test_321_05() + { + } + + [TestMethod] + public void Test_321_06() + { + } + + [TestMethod] + public void Test_321_07() + { + } + + [TestMethod] + public void Test_321_08() + { + } + + [TestMethod] + public void Test_321_09() + { + } + + [TestMethod] + public void Test_321_10() + { + } + + [TestMethod] + public void Test_321_11() + { + } + + [TestMethod] + public void Test_321_12() + { + } + + [TestMethod] + public void Test_321_13() + { + } + + [TestMethod] + public void Test_321_14() + { + } + + [TestMethod] + public void Test_321_15() + { + } + + [TestMethod] + public void Test_321_16() + { + } + + [TestMethod] + public void Test_321_17() + { + } + + [TestMethod] + public void Test_321_18() + { + } + + [TestMethod] + public void Test_321_19() + { + } + + [TestMethod] + public void Test_321_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_322 + { + #region PassingTests + [TestMethod] + public void Test_322_01() + { + } + + [TestMethod] + public void Test_322_02() + { + } + + [TestMethod] + public void Test_322_03() + { + } + + [TestMethod] + public void Test_322_04() + { + } + + [TestMethod] + public void Test_322_05() + { + } + + [TestMethod] + public void Test_322_06() + { + } + + [TestMethod] + public void Test_322_07() + { + } + + [TestMethod] + public void Test_322_08() + { + } + + [TestMethod] + public void Test_322_09() + { + } + + [TestMethod] + public void Test_322_10() + { + } + + [TestMethod] + public void Test_322_11() + { + } + + [TestMethod] + public void Test_322_12() + { + } + + [TestMethod] + public void Test_322_13() + { + } + + [TestMethod] + public void Test_322_14() + { + } + + [TestMethod] + public void Test_322_15() + { + } + + [TestMethod] + public void Test_322_16() + { + } + + [TestMethod] + public void Test_322_17() + { + } + + [TestMethod] + public void Test_322_18() + { + } + + [TestMethod] + public void Test_322_19() + { + } + + [TestMethod] + public void Test_322_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_323 + { + #region PassingTests + [TestMethod] + public void Test_323_01() + { + } + + [TestMethod] + public void Test_323_02() + { + } + + [TestMethod] + public void Test_323_03() + { + } + + [TestMethod] + public void Test_323_04() + { + } + + [TestMethod] + public void Test_323_05() + { + } + + [TestMethod] + public void Test_323_06() + { + } + + [TestMethod] + public void Test_323_07() + { + } + + [TestMethod] + public void Test_323_08() + { + } + + [TestMethod] + public void Test_323_09() + { + } + + [TestMethod] + public void Test_323_10() + { + } + + [TestMethod] + public void Test_323_11() + { + } + + [TestMethod] + public void Test_323_12() + { + } + + [TestMethod] + public void Test_323_13() + { + } + + [TestMethod] + public void Test_323_14() + { + } + + [TestMethod] + public void Test_323_15() + { + } + + [TestMethod] + public void Test_323_16() + { + } + + [TestMethod] + public void Test_323_17() + { + } + + [TestMethod] + public void Test_323_18() + { + } + + [TestMethod] + public void Test_323_19() + { + } + + [TestMethod] + public void Test_323_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_324 + { + #region PassingTests + [TestMethod] + public void Test_324_01() + { + } + + [TestMethod] + public void Test_324_02() + { + } + + [TestMethod] + public void Test_324_03() + { + } + + [TestMethod] + public void Test_324_04() + { + } + + [TestMethod] + public void Test_324_05() + { + } + + [TestMethod] + public void Test_324_06() + { + } + + [TestMethod] + public void Test_324_07() + { + } + + [TestMethod] + public void Test_324_08() + { + } + + [TestMethod] + public void Test_324_09() + { + } + + [TestMethod] + public void Test_324_10() + { + } + + [TestMethod] + public void Test_324_11() + { + } + + [TestMethod] + public void Test_324_12() + { + } + + [TestMethod] + public void Test_324_13() + { + } + + [TestMethod] + public void Test_324_14() + { + } + + [TestMethod] + public void Test_324_15() + { + } + + [TestMethod] + public void Test_324_16() + { + } + + [TestMethod] + public void Test_324_17() + { + } + + [TestMethod] + public void Test_324_18() + { + } + + [TestMethod] + public void Test_324_19() + { + } + + [TestMethod] + public void Test_324_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_325 + { + #region PassingTests + [TestMethod] + public void Test_325_01() + { + } + + [TestMethod] + public void Test_325_02() + { + } + + [TestMethod] + public void Test_325_03() + { + } + + [TestMethod] + public void Test_325_04() + { + } + + [TestMethod] + public void Test_325_05() + { + } + + [TestMethod] + public void Test_325_06() + { + } + + [TestMethod] + public void Test_325_07() + { + } + + [TestMethod] + public void Test_325_08() + { + } + + [TestMethod] + public void Test_325_09() + { + } + + [TestMethod] + public void Test_325_10() + { + } + + [TestMethod] + public void Test_325_11() + { + } + + [TestMethod] + public void Test_325_12() + { + } + + [TestMethod] + public void Test_325_13() + { + } + + [TestMethod] + public void Test_325_14() + { + } + + [TestMethod] + public void Test_325_15() + { + } + + [TestMethod] + public void Test_325_16() + { + } + + [TestMethod] + public void Test_325_17() + { + } + + [TestMethod] + public void Test_325_18() + { + } + + [TestMethod] + public void Test_325_19() + { + } + + [TestMethod] + public void Test_325_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_326 + { + #region PassingTests + [TestMethod] + public void Test_326_01() + { + } + + [TestMethod] + public void Test_326_02() + { + } + + [TestMethod] + public void Test_326_03() + { + } + + [TestMethod] + public void Test_326_04() + { + } + + [TestMethod] + public void Test_326_05() + { + } + + [TestMethod] + public void Test_326_06() + { + } + + [TestMethod] + public void Test_326_07() + { + } + + [TestMethod] + public void Test_326_08() + { + } + + [TestMethod] + public void Test_326_09() + { + } + + [TestMethod] + public void Test_326_10() + { + } + + [TestMethod] + public void Test_326_11() + { + } + + [TestMethod] + public void Test_326_12() + { + } + + [TestMethod] + public void Test_326_13() + { + } + + [TestMethod] + public void Test_326_14() + { + } + + [TestMethod] + public void Test_326_15() + { + } + + [TestMethod] + public void Test_326_16() + { + } + + [TestMethod] + public void Test_326_17() + { + } + + [TestMethod] + public void Test_326_18() + { + } + + [TestMethod] + public void Test_326_19() + { + } + + [TestMethod] + public void Test_326_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_327 + { + #region PassingTests + [TestMethod] + public void Test_327_01() + { + } + + [TestMethod] + public void Test_327_02() + { + } + + [TestMethod] + public void Test_327_03() + { + } + + [TestMethod] + public void Test_327_04() + { + } + + [TestMethod] + public void Test_327_05() + { + } + + [TestMethod] + public void Test_327_06() + { + } + + [TestMethod] + public void Test_327_07() + { + } + + [TestMethod] + public void Test_327_08() + { + } + + [TestMethod] + public void Test_327_09() + { + } + + [TestMethod] + public void Test_327_10() + { + } + + [TestMethod] + public void Test_327_11() + { + } + + [TestMethod] + public void Test_327_12() + { + } + + [TestMethod] + public void Test_327_13() + { + } + + [TestMethod] + public void Test_327_14() + { + } + + [TestMethod] + public void Test_327_15() + { + } + + [TestMethod] + public void Test_327_16() + { + } + + [TestMethod] + public void Test_327_17() + { + } + + [TestMethod] + public void Test_327_18() + { + } + + [TestMethod] + public void Test_327_19() + { + } + + [TestMethod] + public void Test_327_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_328 + { + #region PassingTests + [TestMethod] + public void Test_328_01() + { + } + + [TestMethod] + public void Test_328_02() + { + } + + [TestMethod] + public void Test_328_03() + { + } + + [TestMethod] + public void Test_328_04() + { + } + + [TestMethod] + public void Test_328_05() + { + } + + [TestMethod] + public void Test_328_06() + { + } + + [TestMethod] + public void Test_328_07() + { + } + + [TestMethod] + public void Test_328_08() + { + } + + [TestMethod] + public void Test_328_09() + { + } + + [TestMethod] + public void Test_328_10() + { + } + + [TestMethod] + public void Test_328_11() + { + } + + [TestMethod] + public void Test_328_12() + { + } + + [TestMethod] + public void Test_328_13() + { + } + + [TestMethod] + public void Test_328_14() + { + } + + [TestMethod] + public void Test_328_15() + { + } + + [TestMethod] + public void Test_328_16() + { + } + + [TestMethod] + public void Test_328_17() + { + } + + [TestMethod] + public void Test_328_18() + { + } + + [TestMethod] + public void Test_328_19() + { + } + + [TestMethod] + public void Test_328_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_329 + { + #region PassingTests + [TestMethod] + public void Test_329_01() + { + } + + [TestMethod] + public void Test_329_02() + { + } + + [TestMethod] + public void Test_329_03() + { + } + + [TestMethod] + public void Test_329_04() + { + } + + [TestMethod] + public void Test_329_05() + { + } + + [TestMethod] + public void Test_329_06() + { + } + + [TestMethod] + public void Test_329_07() + { + } + + [TestMethod] + public void Test_329_08() + { + } + + [TestMethod] + public void Test_329_09() + { + } + + [TestMethod] + public void Test_329_10() + { + } + + [TestMethod] + public void Test_329_11() + { + } + + [TestMethod] + public void Test_329_12() + { + } + + [TestMethod] + public void Test_329_13() + { + } + + [TestMethod] + public void Test_329_14() + { + } + + [TestMethod] + public void Test_329_15() + { + } + + [TestMethod] + public void Test_329_16() + { + } + + [TestMethod] + public void Test_329_17() + { + } + + [TestMethod] + public void Test_329_18() + { + } + + [TestMethod] + public void Test_329_19() + { + } + + [TestMethod] + public void Test_329_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_330 + { + #region PassingTests + [TestMethod] + public void Test_330_01() + { + } + + [TestMethod] + public void Test_330_02() + { + } + + [TestMethod] + public void Test_330_03() + { + } + + [TestMethod] + public void Test_330_04() + { + } + + [TestMethod] + public void Test_330_05() + { + } + + [TestMethod] + public void Test_330_06() + { + } + + [TestMethod] + public void Test_330_07() + { + } + + [TestMethod] + public void Test_330_08() + { + } + + [TestMethod] + public void Test_330_09() + { + } + + [TestMethod] + public void Test_330_10() + { + } + + [TestMethod] + public void Test_330_11() + { + } + + [TestMethod] + public void Test_330_12() + { + } + + [TestMethod] + public void Test_330_13() + { + } + + [TestMethod] + public void Test_330_14() + { + } + + [TestMethod] + public void Test_330_15() + { + } + + [TestMethod] + public void Test_330_16() + { + } + + [TestMethod] + public void Test_330_17() + { + } + + [TestMethod] + public void Test_330_18() + { + } + + [TestMethod] + public void Test_330_19() + { + } + + [TestMethod] + public void Test_330_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_331 + { + #region PassingTests + [TestMethod] + public void Test_331_01() + { + } + + [TestMethod] + public void Test_331_02() + { + } + + [TestMethod] + public void Test_331_03() + { + } + + [TestMethod] + public void Test_331_04() + { + } + + [TestMethod] + public void Test_331_05() + { + } + + [TestMethod] + public void Test_331_06() + { + } + + [TestMethod] + public void Test_331_07() + { + } + + [TestMethod] + public void Test_331_08() + { + } + + [TestMethod] + public void Test_331_09() + { + } + + [TestMethod] + public void Test_331_10() + { + } + + [TestMethod] + public void Test_331_11() + { + } + + [TestMethod] + public void Test_331_12() + { + } + + [TestMethod] + public void Test_331_13() + { + } + + [TestMethod] + public void Test_331_14() + { + } + + [TestMethod] + public void Test_331_15() + { + } + + [TestMethod] + public void Test_331_16() + { + } + + [TestMethod] + public void Test_331_17() + { + } + + [TestMethod] + public void Test_331_18() + { + } + + [TestMethod] + public void Test_331_19() + { + } + + [TestMethod] + public void Test_331_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_332 + { + #region PassingTests + [TestMethod] + public void Test_332_01() + { + } + + [TestMethod] + public void Test_332_02() + { + } + + [TestMethod] + public void Test_332_03() + { + } + + [TestMethod] + public void Test_332_04() + { + } + + [TestMethod] + public void Test_332_05() + { + } + + [TestMethod] + public void Test_332_06() + { + } + + [TestMethod] + public void Test_332_07() + { + } + + [TestMethod] + public void Test_332_08() + { + } + + [TestMethod] + public void Test_332_09() + { + } + + [TestMethod] + public void Test_332_10() + { + } + + [TestMethod] + public void Test_332_11() + { + } + + [TestMethod] + public void Test_332_12() + { + } + + [TestMethod] + public void Test_332_13() + { + } + + [TestMethod] + public void Test_332_14() + { + } + + [TestMethod] + public void Test_332_15() + { + } + + [TestMethod] + public void Test_332_16() + { + } + + [TestMethod] + public void Test_332_17() + { + } + + [TestMethod] + public void Test_332_18() + { + } + + [TestMethod] + public void Test_332_19() + { + } + + [TestMethod] + public void Test_332_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_333 + { + #region PassingTests + [TestMethod] + public void Test_333_01() + { + } + + [TestMethod] + public void Test_333_02() + { + } + + [TestMethod] + public void Test_333_03() + { + } + + [TestMethod] + public void Test_333_04() + { + } + + [TestMethod] + public void Test_333_05() + { + } + + [TestMethod] + public void Test_333_06() + { + } + + [TestMethod] + public void Test_333_07() + { + } + + [TestMethod] + public void Test_333_08() + { + } + + [TestMethod] + public void Test_333_09() + { + } + + [TestMethod] + public void Test_333_10() + { + } + + [TestMethod] + public void Test_333_11() + { + } + + [TestMethod] + public void Test_333_12() + { + } + + [TestMethod] + public void Test_333_13() + { + } + + [TestMethod] + public void Test_333_14() + { + } + + [TestMethod] + public void Test_333_15() + { + } + + [TestMethod] + public void Test_333_16() + { + } + + [TestMethod] + public void Test_333_17() + { + } + + [TestMethod] + public void Test_333_18() + { + } + + [TestMethod] + public void Test_333_19() + { + } + + [TestMethod] + public void Test_333_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_334 + { + #region PassingTests + [TestMethod] + public void Test_334_01() + { + } + + [TestMethod] + public void Test_334_02() + { + } + + [TestMethod] + public void Test_334_03() + { + } + + [TestMethod] + public void Test_334_04() + { + } + + [TestMethod] + public void Test_334_05() + { + } + + [TestMethod] + public void Test_334_06() + { + } + + [TestMethod] + public void Test_334_07() + { + } + + [TestMethod] + public void Test_334_08() + { + } + + [TestMethod] + public void Test_334_09() + { + } + + [TestMethod] + public void Test_334_10() + { + } + + [TestMethod] + public void Test_334_11() + { + } + + [TestMethod] + public void Test_334_12() + { + } + + [TestMethod] + public void Test_334_13() + { + } + + [TestMethod] + public void Test_334_14() + { + } + + [TestMethod] + public void Test_334_15() + { + } + + [TestMethod] + public void Test_334_16() + { + } + + [TestMethod] + public void Test_334_17() + { + } + + [TestMethod] + public void Test_334_18() + { + } + + [TestMethod] + public void Test_334_19() + { + } + + [TestMethod] + public void Test_334_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_335 + { + #region PassingTests + [TestMethod] + public void Test_335_01() + { + } + + [TestMethod] + public void Test_335_02() + { + } + + [TestMethod] + public void Test_335_03() + { + } + + [TestMethod] + public void Test_335_04() + { + } + + [TestMethod] + public void Test_335_05() + { + } + + [TestMethod] + public void Test_335_06() + { + } + + [TestMethod] + public void Test_335_07() + { + } + + [TestMethod] + public void Test_335_08() + { + } + + [TestMethod] + public void Test_335_09() + { + } + + [TestMethod] + public void Test_335_10() + { + } + + [TestMethod] + public void Test_335_11() + { + } + + [TestMethod] + public void Test_335_12() + { + } + + [TestMethod] + public void Test_335_13() + { + } + + [TestMethod] + public void Test_335_14() + { + } + + [TestMethod] + public void Test_335_15() + { + } + + [TestMethod] + public void Test_335_16() + { + } + + [TestMethod] + public void Test_335_17() + { + } + + [TestMethod] + public void Test_335_18() + { + } + + [TestMethod] + public void Test_335_19() + { + } + + [TestMethod] + public void Test_335_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_336 + { + #region PassingTests + [TestMethod] + public void Test_336_01() + { + } + + [TestMethod] + public void Test_336_02() + { + } + + [TestMethod] + public void Test_336_03() + { + } + + [TestMethod] + public void Test_336_04() + { + } + + [TestMethod] + public void Test_336_05() + { + } + + [TestMethod] + public void Test_336_06() + { + } + + [TestMethod] + public void Test_336_07() + { + } + + [TestMethod] + public void Test_336_08() + { + } + + [TestMethod] + public void Test_336_09() + { + } + + [TestMethod] + public void Test_336_10() + { + } + + [TestMethod] + public void Test_336_11() + { + } + + [TestMethod] + public void Test_336_12() + { + } + + [TestMethod] + public void Test_336_13() + { + } + + [TestMethod] + public void Test_336_14() + { + } + + [TestMethod] + public void Test_336_15() + { + } + + [TestMethod] + public void Test_336_16() + { + } + + [TestMethod] + public void Test_336_17() + { + } + + [TestMethod] + public void Test_336_18() + { + } + + [TestMethod] + public void Test_336_19() + { + } + + [TestMethod] + public void Test_336_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_337 + { + #region PassingTests + [TestMethod] + public void Test_337_01() + { + } + + [TestMethod] + public void Test_337_02() + { + } + + [TestMethod] + public void Test_337_03() + { + } + + [TestMethod] + public void Test_337_04() + { + } + + [TestMethod] + public void Test_337_05() + { + } + + [TestMethod] + public void Test_337_06() + { + } + + [TestMethod] + public void Test_337_07() + { + } + + [TestMethod] + public void Test_337_08() + { + } + + [TestMethod] + public void Test_337_09() + { + } + + [TestMethod] + public void Test_337_10() + { + } + + [TestMethod] + public void Test_337_11() + { + } + + [TestMethod] + public void Test_337_12() + { + } + + [TestMethod] + public void Test_337_13() + { + } + + [TestMethod] + public void Test_337_14() + { + } + + [TestMethod] + public void Test_337_15() + { + } + + [TestMethod] + public void Test_337_16() + { + } + + [TestMethod] + public void Test_337_17() + { + } + + [TestMethod] + public void Test_337_18() + { + } + + [TestMethod] + public void Test_337_19() + { + } + + [TestMethod] + public void Test_337_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_338 + { + #region PassingTests + [TestMethod] + public void Test_338_01() + { + } + + [TestMethod] + public void Test_338_02() + { + } + + [TestMethod] + public void Test_338_03() + { + } + + [TestMethod] + public void Test_338_04() + { + } + + [TestMethod] + public void Test_338_05() + { + } + + [TestMethod] + public void Test_338_06() + { + } + + [TestMethod] + public void Test_338_07() + { + } + + [TestMethod] + public void Test_338_08() + { + } + + [TestMethod] + public void Test_338_09() + { + } + + [TestMethod] + public void Test_338_10() + { + } + + [TestMethod] + public void Test_338_11() + { + } + + [TestMethod] + public void Test_338_12() + { + } + + [TestMethod] + public void Test_338_13() + { + } + + [TestMethod] + public void Test_338_14() + { + } + + [TestMethod] + public void Test_338_15() + { + } + + [TestMethod] + public void Test_338_16() + { + } + + [TestMethod] + public void Test_338_17() + { + } + + [TestMethod] + public void Test_338_18() + { + } + + [TestMethod] + public void Test_338_19() + { + } + + [TestMethod] + public void Test_338_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_339 + { + #region PassingTests + [TestMethod] + public void Test_339_01() + { + } + + [TestMethod] + public void Test_339_02() + { + } + + [TestMethod] + public void Test_339_03() + { + } + + [TestMethod] + public void Test_339_04() + { + } + + [TestMethod] + public void Test_339_05() + { + } + + [TestMethod] + public void Test_339_06() + { + } + + [TestMethod] + public void Test_339_07() + { + } + + [TestMethod] + public void Test_339_08() + { + } + + [TestMethod] + public void Test_339_09() + { + } + + [TestMethod] + public void Test_339_10() + { + } + + [TestMethod] + public void Test_339_11() + { + } + + [TestMethod] + public void Test_339_12() + { + } + + [TestMethod] + public void Test_339_13() + { + } + + [TestMethod] + public void Test_339_14() + { + } + + [TestMethod] + public void Test_339_15() + { + } + + [TestMethod] + public void Test_339_16() + { + } + + [TestMethod] + public void Test_339_17() + { + } + + [TestMethod] + public void Test_339_18() + { + } + + [TestMethod] + public void Test_339_19() + { + } + + [TestMethod] + public void Test_339_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_340 + { + #region PassingTests + [TestMethod] + public void Test_340_01() + { + } + + [TestMethod] + public void Test_340_02() + { + } + + [TestMethod] + public void Test_340_03() + { + } + + [TestMethod] + public void Test_340_04() + { + } + + [TestMethod] + public void Test_340_05() + { + } + + [TestMethod] + public void Test_340_06() + { + } + + [TestMethod] + public void Test_340_07() + { + } + + [TestMethod] + public void Test_340_08() + { + } + + [TestMethod] + public void Test_340_09() + { + } + + [TestMethod] + public void Test_340_10() + { + } + + [TestMethod] + public void Test_340_11() + { + } + + [TestMethod] + public void Test_340_12() + { + } + + [TestMethod] + public void Test_340_13() + { + } + + [TestMethod] + public void Test_340_14() + { + } + + [TestMethod] + public void Test_340_15() + { + } + + [TestMethod] + public void Test_340_16() + { + } + + [TestMethod] + public void Test_340_17() + { + } + + [TestMethod] + public void Test_340_18() + { + } + + [TestMethod] + public void Test_340_19() + { + } + + [TestMethod] + public void Test_340_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_341 + { + #region PassingTests + [TestMethod] + public void Test_341_01() + { + } + + [TestMethod] + public void Test_341_02() + { + } + + [TestMethod] + public void Test_341_03() + { + } + + [TestMethod] + public void Test_341_04() + { + } + + [TestMethod] + public void Test_341_05() + { + } + + [TestMethod] + public void Test_341_06() + { + } + + [TestMethod] + public void Test_341_07() + { + } + + [TestMethod] + public void Test_341_08() + { + } + + [TestMethod] + public void Test_341_09() + { + } + + [TestMethod] + public void Test_341_10() + { + } + + [TestMethod] + public void Test_341_11() + { + } + + [TestMethod] + public void Test_341_12() + { + } + + [TestMethod] + public void Test_341_13() + { + } + + [TestMethod] + public void Test_341_14() + { + } + + [TestMethod] + public void Test_341_15() + { + } + + [TestMethod] + public void Test_341_16() + { + } + + [TestMethod] + public void Test_341_17() + { + } + + [TestMethod] + public void Test_341_18() + { + } + + [TestMethod] + public void Test_341_19() + { + } + + [TestMethod] + public void Test_341_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_342 + { + #region PassingTests + [TestMethod] + public void Test_342_01() + { + } + + [TestMethod] + public void Test_342_02() + { + } + + [TestMethod] + public void Test_342_03() + { + } + + [TestMethod] + public void Test_342_04() + { + } + + [TestMethod] + public void Test_342_05() + { + } + + [TestMethod] + public void Test_342_06() + { + } + + [TestMethod] + public void Test_342_07() + { + } + + [TestMethod] + public void Test_342_08() + { + } + + [TestMethod] + public void Test_342_09() + { + } + + [TestMethod] + public void Test_342_10() + { + } + + [TestMethod] + public void Test_342_11() + { + } + + [TestMethod] + public void Test_342_12() + { + } + + [TestMethod] + public void Test_342_13() + { + } + + [TestMethod] + public void Test_342_14() + { + } + + [TestMethod] + public void Test_342_15() + { + } + + [TestMethod] + public void Test_342_16() + { + } + + [TestMethod] + public void Test_342_17() + { + } + + [TestMethod] + public void Test_342_18() + { + } + + [TestMethod] + public void Test_342_19() + { + } + + [TestMethod] + public void Test_342_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_343 + { + #region PassingTests + [TestMethod] + public void Test_343_01() + { + } + + [TestMethod] + public void Test_343_02() + { + } + + [TestMethod] + public void Test_343_03() + { + } + + [TestMethod] + public void Test_343_04() + { + } + + [TestMethod] + public void Test_343_05() + { + } + + [TestMethod] + public void Test_343_06() + { + } + + [TestMethod] + public void Test_343_07() + { + } + + [TestMethod] + public void Test_343_08() + { + } + + [TestMethod] + public void Test_343_09() + { + } + + [TestMethod] + public void Test_343_10() + { + } + + [TestMethod] + public void Test_343_11() + { + } + + [TestMethod] + public void Test_343_12() + { + } + + [TestMethod] + public void Test_343_13() + { + } + + [TestMethod] + public void Test_343_14() + { + } + + [TestMethod] + public void Test_343_15() + { + } + + [TestMethod] + public void Test_343_16() + { + } + + [TestMethod] + public void Test_343_17() + { + } + + [TestMethod] + public void Test_343_18() + { + } + + [TestMethod] + public void Test_343_19() + { + } + + [TestMethod] + public void Test_343_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_344 + { + #region PassingTests + [TestMethod] + public void Test_344_01() + { + } + + [TestMethod] + public void Test_344_02() + { + } + + [TestMethod] + public void Test_344_03() + { + } + + [TestMethod] + public void Test_344_04() + { + } + + [TestMethod] + public void Test_344_05() + { + } + + [TestMethod] + public void Test_344_06() + { + } + + [TestMethod] + public void Test_344_07() + { + } + + [TestMethod] + public void Test_344_08() + { + } + + [TestMethod] + public void Test_344_09() + { + } + + [TestMethod] + public void Test_344_10() + { + } + + [TestMethod] + public void Test_344_11() + { + } + + [TestMethod] + public void Test_344_12() + { + } + + [TestMethod] + public void Test_344_13() + { + } + + [TestMethod] + public void Test_344_14() + { + } + + [TestMethod] + public void Test_344_15() + { + } + + [TestMethod] + public void Test_344_16() + { + } + + [TestMethod] + public void Test_344_17() + { + } + + [TestMethod] + public void Test_344_18() + { + } + + [TestMethod] + public void Test_344_19() + { + } + + [TestMethod] + public void Test_344_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_345 + { + #region PassingTests + [TestMethod] + public void Test_345_01() + { + } + + [TestMethod] + public void Test_345_02() + { + } + + [TestMethod] + public void Test_345_03() + { + } + + [TestMethod] + public void Test_345_04() + { + } + + [TestMethod] + public void Test_345_05() + { + } + + [TestMethod] + public void Test_345_06() + { + } + + [TestMethod] + public void Test_345_07() + { + } + + [TestMethod] + public void Test_345_08() + { + } + + [TestMethod] + public void Test_345_09() + { + } + + [TestMethod] + public void Test_345_10() + { + } + + [TestMethod] + public void Test_345_11() + { + } + + [TestMethod] + public void Test_345_12() + { + } + + [TestMethod] + public void Test_345_13() + { + } + + [TestMethod] + public void Test_345_14() + { + } + + [TestMethod] + public void Test_345_15() + { + } + + [TestMethod] + public void Test_345_16() + { + } + + [TestMethod] + public void Test_345_17() + { + } + + [TestMethod] + public void Test_345_18() + { + } + + [TestMethod] + public void Test_345_19() + { + } + + [TestMethod] + public void Test_345_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_346 + { + #region PassingTests + [TestMethod] + public void Test_346_01() + { + } + + [TestMethod] + public void Test_346_02() + { + } + + [TestMethod] + public void Test_346_03() + { + } + + [TestMethod] + public void Test_346_04() + { + } + + [TestMethod] + public void Test_346_05() + { + } + + [TestMethod] + public void Test_346_06() + { + } + + [TestMethod] + public void Test_346_07() + { + } + + [TestMethod] + public void Test_346_08() + { + } + + [TestMethod] + public void Test_346_09() + { + } + + [TestMethod] + public void Test_346_10() + { + } + + [TestMethod] + public void Test_346_11() + { + } + + [TestMethod] + public void Test_346_12() + { + } + + [TestMethod] + public void Test_346_13() + { + } + + [TestMethod] + public void Test_346_14() + { + } + + [TestMethod] + public void Test_346_15() + { + } + + [TestMethod] + public void Test_346_16() + { + } + + [TestMethod] + public void Test_346_17() + { + } + + [TestMethod] + public void Test_346_18() + { + } + + [TestMethod] + public void Test_346_19() + { + } + + [TestMethod] + public void Test_346_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_347 + { + #region PassingTests + [TestMethod] + public void Test_347_01() + { + } + + [TestMethod] + public void Test_347_02() + { + } + + [TestMethod] + public void Test_347_03() + { + } + + [TestMethod] + public void Test_347_04() + { + } + + [TestMethod] + public void Test_347_05() + { + } + + [TestMethod] + public void Test_347_06() + { + } + + [TestMethod] + public void Test_347_07() + { + } + + [TestMethod] + public void Test_347_08() + { + } + + [TestMethod] + public void Test_347_09() + { + } + + [TestMethod] + public void Test_347_10() + { + } + + [TestMethod] + public void Test_347_11() + { + } + + [TestMethod] + public void Test_347_12() + { + } + + [TestMethod] + public void Test_347_13() + { + } + + [TestMethod] + public void Test_347_14() + { + } + + [TestMethod] + public void Test_347_15() + { + } + + [TestMethod] + public void Test_347_16() + { + } + + [TestMethod] + public void Test_347_17() + { + } + + [TestMethod] + public void Test_347_18() + { + } + + [TestMethod] + public void Test_347_19() + { + } + + [TestMethod] + public void Test_347_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_348 + { + #region PassingTests + [TestMethod] + public void Test_348_01() + { + } + + [TestMethod] + public void Test_348_02() + { + } + + [TestMethod] + public void Test_348_03() + { + } + + [TestMethod] + public void Test_348_04() + { + } + + [TestMethod] + public void Test_348_05() + { + } + + [TestMethod] + public void Test_348_06() + { + } + + [TestMethod] + public void Test_348_07() + { + } + + [TestMethod] + public void Test_348_08() + { + } + + [TestMethod] + public void Test_348_09() + { + } + + [TestMethod] + public void Test_348_10() + { + } + + [TestMethod] + public void Test_348_11() + { + } + + [TestMethod] + public void Test_348_12() + { + } + + [TestMethod] + public void Test_348_13() + { + } + + [TestMethod] + public void Test_348_14() + { + } + + [TestMethod] + public void Test_348_15() + { + } + + [TestMethod] + public void Test_348_16() + { + } + + [TestMethod] + public void Test_348_17() + { + } + + [TestMethod] + public void Test_348_18() + { + } + + [TestMethod] + public void Test_348_19() + { + } + + [TestMethod] + public void Test_348_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_349 + { + #region PassingTests + [TestMethod] + public void Test_349_01() + { + } + + [TestMethod] + public void Test_349_02() + { + } + + [TestMethod] + public void Test_349_03() + { + } + + [TestMethod] + public void Test_349_04() + { + } + + [TestMethod] + public void Test_349_05() + { + } + + [TestMethod] + public void Test_349_06() + { + } + + [TestMethod] + public void Test_349_07() + { + } + + [TestMethod] + public void Test_349_08() + { + } + + [TestMethod] + public void Test_349_09() + { + } + + [TestMethod] + public void Test_349_10() + { + } + + [TestMethod] + public void Test_349_11() + { + } + + [TestMethod] + public void Test_349_12() + { + } + + [TestMethod] + public void Test_349_13() + { + } + + [TestMethod] + public void Test_349_14() + { + } + + [TestMethod] + public void Test_349_15() + { + } + + [TestMethod] + public void Test_349_16() + { + } + + [TestMethod] + public void Test_349_17() + { + } + + [TestMethod] + public void Test_349_18() + { + } + + [TestMethod] + public void Test_349_19() + { + } + + [TestMethod] + public void Test_349_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_350 + { + #region PassingTests + [TestMethod] + public void Test_350_01() + { + } + + [TestMethod] + public void Test_350_02() + { + } + + [TestMethod] + public void Test_350_03() + { + } + + [TestMethod] + public void Test_350_04() + { + } + + [TestMethod] + public void Test_350_05() + { + } + + [TestMethod] + public void Test_350_06() + { + } + + [TestMethod] + public void Test_350_07() + { + } + + [TestMethod] + public void Test_350_08() + { + } + + [TestMethod] + public void Test_350_09() + { + } + + [TestMethod] + public void Test_350_10() + { + } + + [TestMethod] + public void Test_350_11() + { + } + + [TestMethod] + public void Test_350_12() + { + } + + [TestMethod] + public void Test_350_13() + { + } + + [TestMethod] + public void Test_350_14() + { + } + + [TestMethod] + public void Test_350_15() + { + } + + [TestMethod] + public void Test_350_16() + { + } + + [TestMethod] + public void Test_350_17() + { + } + + [TestMethod] + public void Test_350_18() + { + } + + [TestMethod] + public void Test_350_19() + { + } + + [TestMethod] + public void Test_350_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_351 + { + #region PassingTests + [TestMethod] + public void Test_351_01() + { + } + + [TestMethod] + public void Test_351_02() + { + } + + [TestMethod] + public void Test_351_03() + { + } + + [TestMethod] + public void Test_351_04() + { + } + + [TestMethod] + public void Test_351_05() + { + } + + [TestMethod] + public void Test_351_06() + { + } + + [TestMethod] + public void Test_351_07() + { + } + + [TestMethod] + public void Test_351_08() + { + } + + [TestMethod] + public void Test_351_09() + { + } + + [TestMethod] + public void Test_351_10() + { + } + + [TestMethod] + public void Test_351_11() + { + } + + [TestMethod] + public void Test_351_12() + { + } + + [TestMethod] + public void Test_351_13() + { + } + + [TestMethod] + public void Test_351_14() + { + } + + [TestMethod] + public void Test_351_15() + { + } + + [TestMethod] + public void Test_351_16() + { + } + + [TestMethod] + public void Test_351_17() + { + } + + [TestMethod] + public void Test_351_18() + { + } + + [TestMethod] + public void Test_351_19() + { + } + + [TestMethod] + public void Test_351_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_352 + { + #region PassingTests + [TestMethod] + public void Test_352_01() + { + } + + [TestMethod] + public void Test_352_02() + { + } + + [TestMethod] + public void Test_352_03() + { + } + + [TestMethod] + public void Test_352_04() + { + } + + [TestMethod] + public void Test_352_05() + { + } + + [TestMethod] + public void Test_352_06() + { + } + + [TestMethod] + public void Test_352_07() + { + } + + [TestMethod] + public void Test_352_08() + { + } + + [TestMethod] + public void Test_352_09() + { + } + + [TestMethod] + public void Test_352_10() + { + } + + [TestMethod] + public void Test_352_11() + { + } + + [TestMethod] + public void Test_352_12() + { + } + + [TestMethod] + public void Test_352_13() + { + } + + [TestMethod] + public void Test_352_14() + { + } + + [TestMethod] + public void Test_352_15() + { + } + + [TestMethod] + public void Test_352_16() + { + } + + [TestMethod] + public void Test_352_17() + { + } + + [TestMethod] + public void Test_352_18() + { + } + + [TestMethod] + public void Test_352_19() + { + } + + [TestMethod] + public void Test_352_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_353 + { + #region PassingTests + [TestMethod] + public void Test_353_01() + { + } + + [TestMethod] + public void Test_353_02() + { + } + + [TestMethod] + public void Test_353_03() + { + } + + [TestMethod] + public void Test_353_04() + { + } + + [TestMethod] + public void Test_353_05() + { + } + + [TestMethod] + public void Test_353_06() + { + } + + [TestMethod] + public void Test_353_07() + { + } + + [TestMethod] + public void Test_353_08() + { + } + + [TestMethod] + public void Test_353_09() + { + } + + [TestMethod] + public void Test_353_10() + { + } + + [TestMethod] + public void Test_353_11() + { + } + + [TestMethod] + public void Test_353_12() + { + } + + [TestMethod] + public void Test_353_13() + { + } + + [TestMethod] + public void Test_353_14() + { + } + + [TestMethod] + public void Test_353_15() + { + } + + [TestMethod] + public void Test_353_16() + { + } + + [TestMethod] + public void Test_353_17() + { + } + + [TestMethod] + public void Test_353_18() + { + } + + [TestMethod] + public void Test_353_19() + { + } + + [TestMethod] + public void Test_353_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_354 + { + #region PassingTests + [TestMethod] + public void Test_354_01() + { + } + + [TestMethod] + public void Test_354_02() + { + } + + [TestMethod] + public void Test_354_03() + { + } + + [TestMethod] + public void Test_354_04() + { + } + + [TestMethod] + public void Test_354_05() + { + } + + [TestMethod] + public void Test_354_06() + { + } + + [TestMethod] + public void Test_354_07() + { + } + + [TestMethod] + public void Test_354_08() + { + } + + [TestMethod] + public void Test_354_09() + { + } + + [TestMethod] + public void Test_354_10() + { + } + + [TestMethod] + public void Test_354_11() + { + } + + [TestMethod] + public void Test_354_12() + { + } + + [TestMethod] + public void Test_354_13() + { + } + + [TestMethod] + public void Test_354_14() + { + } + + [TestMethod] + public void Test_354_15() + { + } + + [TestMethod] + public void Test_354_16() + { + } + + [TestMethod] + public void Test_354_17() + { + } + + [TestMethod] + public void Test_354_18() + { + } + + [TestMethod] + public void Test_354_19() + { + } + + [TestMethod] + public void Test_354_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_355 + { + #region PassingTests + [TestMethod] + public void Test_355_01() + { + } + + [TestMethod] + public void Test_355_02() + { + } + + [TestMethod] + public void Test_355_03() + { + } + + [TestMethod] + public void Test_355_04() + { + } + + [TestMethod] + public void Test_355_05() + { + } + + [TestMethod] + public void Test_355_06() + { + } + + [TestMethod] + public void Test_355_07() + { + } + + [TestMethod] + public void Test_355_08() + { + } + + [TestMethod] + public void Test_355_09() + { + } + + [TestMethod] + public void Test_355_10() + { + } + + [TestMethod] + public void Test_355_11() + { + } + + [TestMethod] + public void Test_355_12() + { + } + + [TestMethod] + public void Test_355_13() + { + } + + [TestMethod] + public void Test_355_14() + { + } + + [TestMethod] + public void Test_355_15() + { + } + + [TestMethod] + public void Test_355_16() + { + } + + [TestMethod] + public void Test_355_17() + { + } + + [TestMethod] + public void Test_355_18() + { + } + + [TestMethod] + public void Test_355_19() + { + } + + [TestMethod] + public void Test_355_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_356 + { + #region PassingTests + [TestMethod] + public void Test_356_01() + { + } + + [TestMethod] + public void Test_356_02() + { + } + + [TestMethod] + public void Test_356_03() + { + } + + [TestMethod] + public void Test_356_04() + { + } + + [TestMethod] + public void Test_356_05() + { + } + + [TestMethod] + public void Test_356_06() + { + } + + [TestMethod] + public void Test_356_07() + { + } + + [TestMethod] + public void Test_356_08() + { + } + + [TestMethod] + public void Test_356_09() + { + } + + [TestMethod] + public void Test_356_10() + { + } + + [TestMethod] + public void Test_356_11() + { + } + + [TestMethod] + public void Test_356_12() + { + } + + [TestMethod] + public void Test_356_13() + { + } + + [TestMethod] + public void Test_356_14() + { + } + + [TestMethod] + public void Test_356_15() + { + } + + [TestMethod] + public void Test_356_16() + { + } + + [TestMethod] + public void Test_356_17() + { + } + + [TestMethod] + public void Test_356_18() + { + } + + [TestMethod] + public void Test_356_19() + { + } + + [TestMethod] + public void Test_356_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_357 + { + #region PassingTests + [TestMethod] + public void Test_357_01() + { + } + + [TestMethod] + public void Test_357_02() + { + } + + [TestMethod] + public void Test_357_03() + { + } + + [TestMethod] + public void Test_357_04() + { + } + + [TestMethod] + public void Test_357_05() + { + } + + [TestMethod] + public void Test_357_06() + { + } + + [TestMethod] + public void Test_357_07() + { + } + + [TestMethod] + public void Test_357_08() + { + } + + [TestMethod] + public void Test_357_09() + { + } + + [TestMethod] + public void Test_357_10() + { + } + + [TestMethod] + public void Test_357_11() + { + } + + [TestMethod] + public void Test_357_12() + { + } + + [TestMethod] + public void Test_357_13() + { + } + + [TestMethod] + public void Test_357_14() + { + } + + [TestMethod] + public void Test_357_15() + { + } + + [TestMethod] + public void Test_357_16() + { + } + + [TestMethod] + public void Test_357_17() + { + } + + [TestMethod] + public void Test_357_18() + { + } + + [TestMethod] + public void Test_357_19() + { + } + + [TestMethod] + public void Test_357_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_358 + { + #region PassingTests + [TestMethod] + public void Test_358_01() + { + } + + [TestMethod] + public void Test_358_02() + { + } + + [TestMethod] + public void Test_358_03() + { + } + + [TestMethod] + public void Test_358_04() + { + } + + [TestMethod] + public void Test_358_05() + { + } + + [TestMethod] + public void Test_358_06() + { + } + + [TestMethod] + public void Test_358_07() + { + } + + [TestMethod] + public void Test_358_08() + { + } + + [TestMethod] + public void Test_358_09() + { + } + + [TestMethod] + public void Test_358_10() + { + } + + [TestMethod] + public void Test_358_11() + { + } + + [TestMethod] + public void Test_358_12() + { + } + + [TestMethod] + public void Test_358_13() + { + } + + [TestMethod] + public void Test_358_14() + { + } + + [TestMethod] + public void Test_358_15() + { + } + + [TestMethod] + public void Test_358_16() + { + } + + [TestMethod] + public void Test_358_17() + { + } + + [TestMethod] + public void Test_358_18() + { + } + + [TestMethod] + public void Test_358_19() + { + } + + [TestMethod] + public void Test_358_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_359 + { + #region PassingTests + [TestMethod] + public void Test_359_01() + { + } + + [TestMethod] + public void Test_359_02() + { + } + + [TestMethod] + public void Test_359_03() + { + } + + [TestMethod] + public void Test_359_04() + { + } + + [TestMethod] + public void Test_359_05() + { + } + + [TestMethod] + public void Test_359_06() + { + } + + [TestMethod] + public void Test_359_07() + { + } + + [TestMethod] + public void Test_359_08() + { + } + + [TestMethod] + public void Test_359_09() + { + } + + [TestMethod] + public void Test_359_10() + { + } + + [TestMethod] + public void Test_359_11() + { + } + + [TestMethod] + public void Test_359_12() + { + } + + [TestMethod] + public void Test_359_13() + { + } + + [TestMethod] + public void Test_359_14() + { + } + + [TestMethod] + public void Test_359_15() + { + } + + [TestMethod] + public void Test_359_16() + { + } + + [TestMethod] + public void Test_359_17() + { + } + + [TestMethod] + public void Test_359_18() + { + } + + [TestMethod] + public void Test_359_19() + { + } + + [TestMethod] + public void Test_359_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_360 + { + #region PassingTests + [TestMethod] + public void Test_360_01() + { + } + + [TestMethod] + public void Test_360_02() + { + } + + [TestMethod] + public void Test_360_03() + { + } + + [TestMethod] + public void Test_360_04() + { + } + + [TestMethod] + public void Test_360_05() + { + } + + [TestMethod] + public void Test_360_06() + { + } + + [TestMethod] + public void Test_360_07() + { + } + + [TestMethod] + public void Test_360_08() + { + } + + [TestMethod] + public void Test_360_09() + { + } + + [TestMethod] + public void Test_360_10() + { + } + + [TestMethod] + public void Test_360_11() + { + } + + [TestMethod] + public void Test_360_12() + { + } + + [TestMethod] + public void Test_360_13() + { + } + + [TestMethod] + public void Test_360_14() + { + } + + [TestMethod] + public void Test_360_15() + { + } + + [TestMethod] + public void Test_360_16() + { + } + + [TestMethod] + public void Test_360_17() + { + } + + [TestMethod] + public void Test_360_18() + { + } + + [TestMethod] + public void Test_360_19() + { + } + + [TestMethod] + public void Test_360_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_361 + { + #region PassingTests + [TestMethod] + public void Test_361_01() + { + } + + [TestMethod] + public void Test_361_02() + { + } + + [TestMethod] + public void Test_361_03() + { + } + + [TestMethod] + public void Test_361_04() + { + } + + [TestMethod] + public void Test_361_05() + { + } + + [TestMethod] + public void Test_361_06() + { + } + + [TestMethod] + public void Test_361_07() + { + } + + [TestMethod] + public void Test_361_08() + { + } + + [TestMethod] + public void Test_361_09() + { + } + + [TestMethod] + public void Test_361_10() + { + } + + [TestMethod] + public void Test_361_11() + { + } + + [TestMethod] + public void Test_361_12() + { + } + + [TestMethod] + public void Test_361_13() + { + } + + [TestMethod] + public void Test_361_14() + { + } + + [TestMethod] + public void Test_361_15() + { + } + + [TestMethod] + public void Test_361_16() + { + } + + [TestMethod] + public void Test_361_17() + { + } + + [TestMethod] + public void Test_361_18() + { + } + + [TestMethod] + public void Test_361_19() + { + } + + [TestMethod] + public void Test_361_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_362 + { + #region PassingTests + [TestMethod] + public void Test_362_01() + { + } + + [TestMethod] + public void Test_362_02() + { + } + + [TestMethod] + public void Test_362_03() + { + } + + [TestMethod] + public void Test_362_04() + { + } + + [TestMethod] + public void Test_362_05() + { + } + + [TestMethod] + public void Test_362_06() + { + } + + [TestMethod] + public void Test_362_07() + { + } + + [TestMethod] + public void Test_362_08() + { + } + + [TestMethod] + public void Test_362_09() + { + } + + [TestMethod] + public void Test_362_10() + { + } + + [TestMethod] + public void Test_362_11() + { + } + + [TestMethod] + public void Test_362_12() + { + } + + [TestMethod] + public void Test_362_13() + { + } + + [TestMethod] + public void Test_362_14() + { + } + + [TestMethod] + public void Test_362_15() + { + } + + [TestMethod] + public void Test_362_16() + { + } + + [TestMethod] + public void Test_362_17() + { + } + + [TestMethod] + public void Test_362_18() + { + } + + [TestMethod] + public void Test_362_19() + { + } + + [TestMethod] + public void Test_362_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_363 + { + #region PassingTests + [TestMethod] + public void Test_363_01() + { + } + + [TestMethod] + public void Test_363_02() + { + } + + [TestMethod] + public void Test_363_03() + { + } + + [TestMethod] + public void Test_363_04() + { + } + + [TestMethod] + public void Test_363_05() + { + } + + [TestMethod] + public void Test_363_06() + { + } + + [TestMethod] + public void Test_363_07() + { + } + + [TestMethod] + public void Test_363_08() + { + } + + [TestMethod] + public void Test_363_09() + { + } + + [TestMethod] + public void Test_363_10() + { + } + + [TestMethod] + public void Test_363_11() + { + } + + [TestMethod] + public void Test_363_12() + { + } + + [TestMethod] + public void Test_363_13() + { + } + + [TestMethod] + public void Test_363_14() + { + } + + [TestMethod] + public void Test_363_15() + { + } + + [TestMethod] + public void Test_363_16() + { + } + + [TestMethod] + public void Test_363_17() + { + } + + [TestMethod] + public void Test_363_18() + { + } + + [TestMethod] + public void Test_363_19() + { + } + + [TestMethod] + public void Test_363_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_364 + { + #region PassingTests + [TestMethod] + public void Test_364_01() + { + } + + [TestMethod] + public void Test_364_02() + { + } + + [TestMethod] + public void Test_364_03() + { + } + + [TestMethod] + public void Test_364_04() + { + } + + [TestMethod] + public void Test_364_05() + { + } + + [TestMethod] + public void Test_364_06() + { + } + + [TestMethod] + public void Test_364_07() + { + } + + [TestMethod] + public void Test_364_08() + { + } + + [TestMethod] + public void Test_364_09() + { + } + + [TestMethod] + public void Test_364_10() + { + } + + [TestMethod] + public void Test_364_11() + { + } + + [TestMethod] + public void Test_364_12() + { + } + + [TestMethod] + public void Test_364_13() + { + } + + [TestMethod] + public void Test_364_14() + { + } + + [TestMethod] + public void Test_364_15() + { + } + + [TestMethod] + public void Test_364_16() + { + } + + [TestMethod] + public void Test_364_17() + { + } + + [TestMethod] + public void Test_364_18() + { + } + + [TestMethod] + public void Test_364_19() + { + } + + [TestMethod] + public void Test_364_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_365 + { + #region PassingTests + [TestMethod] + public void Test_365_01() + { + } + + [TestMethod] + public void Test_365_02() + { + } + + [TestMethod] + public void Test_365_03() + { + } + + [TestMethod] + public void Test_365_04() + { + } + + [TestMethod] + public void Test_365_05() + { + } + + [TestMethod] + public void Test_365_06() + { + } + + [TestMethod] + public void Test_365_07() + { + } + + [TestMethod] + public void Test_365_08() + { + } + + [TestMethod] + public void Test_365_09() + { + } + + [TestMethod] + public void Test_365_10() + { + } + + [TestMethod] + public void Test_365_11() + { + } + + [TestMethod] + public void Test_365_12() + { + } + + [TestMethod] + public void Test_365_13() + { + } + + [TestMethod] + public void Test_365_14() + { + } + + [TestMethod] + public void Test_365_15() + { + } + + [TestMethod] + public void Test_365_16() + { + } + + [TestMethod] + public void Test_365_17() + { + } + + [TestMethod] + public void Test_365_18() + { + } + + [TestMethod] + public void Test_365_19() + { + } + + [TestMethod] + public void Test_365_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_366 + { + #region PassingTests + [TestMethod] + public void Test_366_01() + { + } + + [TestMethod] + public void Test_366_02() + { + } + + [TestMethod] + public void Test_366_03() + { + } + + [TestMethod] + public void Test_366_04() + { + } + + [TestMethod] + public void Test_366_05() + { + } + + [TestMethod] + public void Test_366_06() + { + } + + [TestMethod] + public void Test_366_07() + { + } + + [TestMethod] + public void Test_366_08() + { + } + + [TestMethod] + public void Test_366_09() + { + } + + [TestMethod] + public void Test_366_10() + { + } + + [TestMethod] + public void Test_366_11() + { + } + + [TestMethod] + public void Test_366_12() + { + } + + [TestMethod] + public void Test_366_13() + { + } + + [TestMethod] + public void Test_366_14() + { + } + + [TestMethod] + public void Test_366_15() + { + } + + [TestMethod] + public void Test_366_16() + { + } + + [TestMethod] + public void Test_366_17() + { + } + + [TestMethod] + public void Test_366_18() + { + } + + [TestMethod] + public void Test_366_19() + { + } + + [TestMethod] + public void Test_366_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_367 + { + #region PassingTests + [TestMethod] + public void Test_367_01() + { + } + + [TestMethod] + public void Test_367_02() + { + } + + [TestMethod] + public void Test_367_03() + { + } + + [TestMethod] + public void Test_367_04() + { + } + + [TestMethod] + public void Test_367_05() + { + } + + [TestMethod] + public void Test_367_06() + { + } + + [TestMethod] + public void Test_367_07() + { + } + + [TestMethod] + public void Test_367_08() + { + } + + [TestMethod] + public void Test_367_09() + { + } + + [TestMethod] + public void Test_367_10() + { + } + + [TestMethod] + public void Test_367_11() + { + } + + [TestMethod] + public void Test_367_12() + { + } + + [TestMethod] + public void Test_367_13() + { + } + + [TestMethod] + public void Test_367_14() + { + } + + [TestMethod] + public void Test_367_15() + { + } + + [TestMethod] + public void Test_367_16() + { + } + + [TestMethod] + public void Test_367_17() + { + } + + [TestMethod] + public void Test_367_18() + { + } + + [TestMethod] + public void Test_367_19() + { + } + + [TestMethod] + public void Test_367_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_368 + { + #region PassingTests + [TestMethod] + public void Test_368_01() + { + } + + [TestMethod] + public void Test_368_02() + { + } + + [TestMethod] + public void Test_368_03() + { + } + + [TestMethod] + public void Test_368_04() + { + } + + [TestMethod] + public void Test_368_05() + { + } + + [TestMethod] + public void Test_368_06() + { + } + + [TestMethod] + public void Test_368_07() + { + } + + [TestMethod] + public void Test_368_08() + { + } + + [TestMethod] + public void Test_368_09() + { + } + + [TestMethod] + public void Test_368_10() + { + } + + [TestMethod] + public void Test_368_11() + { + } + + [TestMethod] + public void Test_368_12() + { + } + + [TestMethod] + public void Test_368_13() + { + } + + [TestMethod] + public void Test_368_14() + { + } + + [TestMethod] + public void Test_368_15() + { + } + + [TestMethod] + public void Test_368_16() + { + } + + [TestMethod] + public void Test_368_17() + { + } + + [TestMethod] + public void Test_368_18() + { + } + + [TestMethod] + public void Test_368_19() + { + } + + [TestMethod] + public void Test_368_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_369 + { + #region PassingTests + [TestMethod] + public void Test_369_01() + { + } + + [TestMethod] + public void Test_369_02() + { + } + + [TestMethod] + public void Test_369_03() + { + } + + [TestMethod] + public void Test_369_04() + { + } + + [TestMethod] + public void Test_369_05() + { + } + + [TestMethod] + public void Test_369_06() + { + } + + [TestMethod] + public void Test_369_07() + { + } + + [TestMethod] + public void Test_369_08() + { + } + + [TestMethod] + public void Test_369_09() + { + } + + [TestMethod] + public void Test_369_10() + { + } + + [TestMethod] + public void Test_369_11() + { + } + + [TestMethod] + public void Test_369_12() + { + } + + [TestMethod] + public void Test_369_13() + { + } + + [TestMethod] + public void Test_369_14() + { + } + + [TestMethod] + public void Test_369_15() + { + } + + [TestMethod] + public void Test_369_16() + { + } + + [TestMethod] + public void Test_369_17() + { + } + + [TestMethod] + public void Test_369_18() + { + } + + [TestMethod] + public void Test_369_19() + { + } + + [TestMethod] + public void Test_369_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_370 + { + #region PassingTests + [TestMethod] + public void Test_370_01() + { + } + + [TestMethod] + public void Test_370_02() + { + } + + [TestMethod] + public void Test_370_03() + { + } + + [TestMethod] + public void Test_370_04() + { + } + + [TestMethod] + public void Test_370_05() + { + } + + [TestMethod] + public void Test_370_06() + { + } + + [TestMethod] + public void Test_370_07() + { + } + + [TestMethod] + public void Test_370_08() + { + } + + [TestMethod] + public void Test_370_09() + { + } + + [TestMethod] + public void Test_370_10() + { + } + + [TestMethod] + public void Test_370_11() + { + } + + [TestMethod] + public void Test_370_12() + { + } + + [TestMethod] + public void Test_370_13() + { + } + + [TestMethod] + public void Test_370_14() + { + } + + [TestMethod] + public void Test_370_15() + { + } + + [TestMethod] + public void Test_370_16() + { + } + + [TestMethod] + public void Test_370_17() + { + } + + [TestMethod] + public void Test_370_18() + { + } + + [TestMethod] + public void Test_370_19() + { + } + + [TestMethod] + public void Test_370_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_371 + { + #region PassingTests + [TestMethod] + public void Test_371_01() + { + } + + [TestMethod] + public void Test_371_02() + { + } + + [TestMethod] + public void Test_371_03() + { + } + + [TestMethod] + public void Test_371_04() + { + } + + [TestMethod] + public void Test_371_05() + { + } + + [TestMethod] + public void Test_371_06() + { + } + + [TestMethod] + public void Test_371_07() + { + } + + [TestMethod] + public void Test_371_08() + { + } + + [TestMethod] + public void Test_371_09() + { + } + + [TestMethod] + public void Test_371_10() + { + } + + [TestMethod] + public void Test_371_11() + { + } + + [TestMethod] + public void Test_371_12() + { + } + + [TestMethod] + public void Test_371_13() + { + } + + [TestMethod] + public void Test_371_14() + { + } + + [TestMethod] + public void Test_371_15() + { + } + + [TestMethod] + public void Test_371_16() + { + } + + [TestMethod] + public void Test_371_17() + { + } + + [TestMethod] + public void Test_371_18() + { + } + + [TestMethod] + public void Test_371_19() + { + } + + [TestMethod] + public void Test_371_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_372 + { + #region PassingTests + [TestMethod] + public void Test_372_01() + { + } + + [TestMethod] + public void Test_372_02() + { + } + + [TestMethod] + public void Test_372_03() + { + } + + [TestMethod] + public void Test_372_04() + { + } + + [TestMethod] + public void Test_372_05() + { + } + + [TestMethod] + public void Test_372_06() + { + } + + [TestMethod] + public void Test_372_07() + { + } + + [TestMethod] + public void Test_372_08() + { + } + + [TestMethod] + public void Test_372_09() + { + } + + [TestMethod] + public void Test_372_10() + { + } + + [TestMethod] + public void Test_372_11() + { + } + + [TestMethod] + public void Test_372_12() + { + } + + [TestMethod] + public void Test_372_13() + { + } + + [TestMethod] + public void Test_372_14() + { + } + + [TestMethod] + public void Test_372_15() + { + } + + [TestMethod] + public void Test_372_16() + { + } + + [TestMethod] + public void Test_372_17() + { + } + + [TestMethod] + public void Test_372_18() + { + } + + [TestMethod] + public void Test_372_19() + { + } + + [TestMethod] + public void Test_372_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_373 + { + #region PassingTests + [TestMethod] + public void Test_373_01() + { + } + + [TestMethod] + public void Test_373_02() + { + } + + [TestMethod] + public void Test_373_03() + { + } + + [TestMethod] + public void Test_373_04() + { + } + + [TestMethod] + public void Test_373_05() + { + } + + [TestMethod] + public void Test_373_06() + { + } + + [TestMethod] + public void Test_373_07() + { + } + + [TestMethod] + public void Test_373_08() + { + } + + [TestMethod] + public void Test_373_09() + { + } + + [TestMethod] + public void Test_373_10() + { + } + + [TestMethod] + public void Test_373_11() + { + } + + [TestMethod] + public void Test_373_12() + { + } + + [TestMethod] + public void Test_373_13() + { + } + + [TestMethod] + public void Test_373_14() + { + } + + [TestMethod] + public void Test_373_15() + { + } + + [TestMethod] + public void Test_373_16() + { + } + + [TestMethod] + public void Test_373_17() + { + } + + [TestMethod] + public void Test_373_18() + { + } + + [TestMethod] + public void Test_373_19() + { + } + + [TestMethod] + public void Test_373_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_374 + { + #region PassingTests + [TestMethod] + public void Test_374_01() + { + } + + [TestMethod] + public void Test_374_02() + { + } + + [TestMethod] + public void Test_374_03() + { + } + + [TestMethod] + public void Test_374_04() + { + } + + [TestMethod] + public void Test_374_05() + { + } + + [TestMethod] + public void Test_374_06() + { + } + + [TestMethod] + public void Test_374_07() + { + } + + [TestMethod] + public void Test_374_08() + { + } + + [TestMethod] + public void Test_374_09() + { + } + + [TestMethod] + public void Test_374_10() + { + } + + [TestMethod] + public void Test_374_11() + { + } + + [TestMethod] + public void Test_374_12() + { + } + + [TestMethod] + public void Test_374_13() + { + } + + [TestMethod] + public void Test_374_14() + { + } + + [TestMethod] + public void Test_374_15() + { + } + + [TestMethod] + public void Test_374_16() + { + } + + [TestMethod] + public void Test_374_17() + { + } + + [TestMethod] + public void Test_374_18() + { + } + + [TestMethod] + public void Test_374_19() + { + } + + [TestMethod] + public void Test_374_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_375 + { + #region PassingTests + [TestMethod] + public void Test_375_01() + { + } + + [TestMethod] + public void Test_375_02() + { + } + + [TestMethod] + public void Test_375_03() + { + } + + [TestMethod] + public void Test_375_04() + { + } + + [TestMethod] + public void Test_375_05() + { + } + + [TestMethod] + public void Test_375_06() + { + } + + [TestMethod] + public void Test_375_07() + { + } + + [TestMethod] + public void Test_375_08() + { + } + + [TestMethod] + public void Test_375_09() + { + } + + [TestMethod] + public void Test_375_10() + { + } + + [TestMethod] + public void Test_375_11() + { + } + + [TestMethod] + public void Test_375_12() + { + } + + [TestMethod] + public void Test_375_13() + { + } + + [TestMethod] + public void Test_375_14() + { + } + + [TestMethod] + public void Test_375_15() + { + } + + [TestMethod] + public void Test_375_16() + { + } + + [TestMethod] + public void Test_375_17() + { + } + + [TestMethod] + public void Test_375_18() + { + } + + [TestMethod] + public void Test_375_19() + { + } + + [TestMethod] + public void Test_375_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_376 + { + #region PassingTests + [TestMethod] + public void Test_376_01() + { + } + + [TestMethod] + public void Test_376_02() + { + } + + [TestMethod] + public void Test_376_03() + { + } + + [TestMethod] + public void Test_376_04() + { + } + + [TestMethod] + public void Test_376_05() + { + } + + [TestMethod] + public void Test_376_06() + { + } + + [TestMethod] + public void Test_376_07() + { + } + + [TestMethod] + public void Test_376_08() + { + } + + [TestMethod] + public void Test_376_09() + { + } + + [TestMethod] + public void Test_376_10() + { + } + + [TestMethod] + public void Test_376_11() + { + } + + [TestMethod] + public void Test_376_12() + { + } + + [TestMethod] + public void Test_376_13() + { + } + + [TestMethod] + public void Test_376_14() + { + } + + [TestMethod] + public void Test_376_15() + { + } + + [TestMethod] + public void Test_376_16() + { + } + + [TestMethod] + public void Test_376_17() + { + } + + [TestMethod] + public void Test_376_18() + { + } + + [TestMethod] + public void Test_376_19() + { + } + + [TestMethod] + public void Test_376_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_377 + { + #region PassingTests + [TestMethod] + public void Test_377_01() + { + } + + [TestMethod] + public void Test_377_02() + { + } + + [TestMethod] + public void Test_377_03() + { + } + + [TestMethod] + public void Test_377_04() + { + } + + [TestMethod] + public void Test_377_05() + { + } + + [TestMethod] + public void Test_377_06() + { + } + + [TestMethod] + public void Test_377_07() + { + } + + [TestMethod] + public void Test_377_08() + { + } + + [TestMethod] + public void Test_377_09() + { + } + + [TestMethod] + public void Test_377_10() + { + } + + [TestMethod] + public void Test_377_11() + { + } + + [TestMethod] + public void Test_377_12() + { + } + + [TestMethod] + public void Test_377_13() + { + } + + [TestMethod] + public void Test_377_14() + { + } + + [TestMethod] + public void Test_377_15() + { + } + + [TestMethod] + public void Test_377_16() + { + } + + [TestMethod] + public void Test_377_17() + { + } + + [TestMethod] + public void Test_377_18() + { + } + + [TestMethod] + public void Test_377_19() + { + } + + [TestMethod] + public void Test_377_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_378 + { + #region PassingTests + [TestMethod] + public void Test_378_01() + { + } + + [TestMethod] + public void Test_378_02() + { + } + + [TestMethod] + public void Test_378_03() + { + } + + [TestMethod] + public void Test_378_04() + { + } + + [TestMethod] + public void Test_378_05() + { + } + + [TestMethod] + public void Test_378_06() + { + } + + [TestMethod] + public void Test_378_07() + { + } + + [TestMethod] + public void Test_378_08() + { + } + + [TestMethod] + public void Test_378_09() + { + } + + [TestMethod] + public void Test_378_10() + { + } + + [TestMethod] + public void Test_378_11() + { + } + + [TestMethod] + public void Test_378_12() + { + } + + [TestMethod] + public void Test_378_13() + { + } + + [TestMethod] + public void Test_378_14() + { + } + + [TestMethod] + public void Test_378_15() + { + } + + [TestMethod] + public void Test_378_16() + { + } + + [TestMethod] + public void Test_378_17() + { + } + + [TestMethod] + public void Test_378_18() + { + } + + [TestMethod] + public void Test_378_19() + { + } + + [TestMethod] + public void Test_378_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_379 + { + #region PassingTests + [TestMethod] + public void Test_379_01() + { + } + + [TestMethod] + public void Test_379_02() + { + } + + [TestMethod] + public void Test_379_03() + { + } + + [TestMethod] + public void Test_379_04() + { + } + + [TestMethod] + public void Test_379_05() + { + } + + [TestMethod] + public void Test_379_06() + { + } + + [TestMethod] + public void Test_379_07() + { + } + + [TestMethod] + public void Test_379_08() + { + } + + [TestMethod] + public void Test_379_09() + { + } + + [TestMethod] + public void Test_379_10() + { + } + + [TestMethod] + public void Test_379_11() + { + } + + [TestMethod] + public void Test_379_12() + { + } + + [TestMethod] + public void Test_379_13() + { + } + + [TestMethod] + public void Test_379_14() + { + } + + [TestMethod] + public void Test_379_15() + { + } + + [TestMethod] + public void Test_379_16() + { + } + + [TestMethod] + public void Test_379_17() + { + } + + [TestMethod] + public void Test_379_18() + { + } + + [TestMethod] + public void Test_379_19() + { + } + + [TestMethod] + public void Test_379_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_380 + { + #region PassingTests + [TestMethod] + public void Test_380_01() + { + } + + [TestMethod] + public void Test_380_02() + { + } + + [TestMethod] + public void Test_380_03() + { + } + + [TestMethod] + public void Test_380_04() + { + } + + [TestMethod] + public void Test_380_05() + { + } + + [TestMethod] + public void Test_380_06() + { + } + + [TestMethod] + public void Test_380_07() + { + } + + [TestMethod] + public void Test_380_08() + { + } + + [TestMethod] + public void Test_380_09() + { + } + + [TestMethod] + public void Test_380_10() + { + } + + [TestMethod] + public void Test_380_11() + { + } + + [TestMethod] + public void Test_380_12() + { + } + + [TestMethod] + public void Test_380_13() + { + } + + [TestMethod] + public void Test_380_14() + { + } + + [TestMethod] + public void Test_380_15() + { + } + + [TestMethod] + public void Test_380_16() + { + } + + [TestMethod] + public void Test_380_17() + { + } + + [TestMethod] + public void Test_380_18() + { + } + + [TestMethod] + public void Test_380_19() + { + } + + [TestMethod] + public void Test_380_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_381 + { + #region PassingTests + [TestMethod] + public void Test_381_01() + { + } + + [TestMethod] + public void Test_381_02() + { + } + + [TestMethod] + public void Test_381_03() + { + } + + [TestMethod] + public void Test_381_04() + { + } + + [TestMethod] + public void Test_381_05() + { + } + + [TestMethod] + public void Test_381_06() + { + } + + [TestMethod] + public void Test_381_07() + { + } + + [TestMethod] + public void Test_381_08() + { + } + + [TestMethod] + public void Test_381_09() + { + } + + [TestMethod] + public void Test_381_10() + { + } + + [TestMethod] + public void Test_381_11() + { + } + + [TestMethod] + public void Test_381_12() + { + } + + [TestMethod] + public void Test_381_13() + { + } + + [TestMethod] + public void Test_381_14() + { + } + + [TestMethod] + public void Test_381_15() + { + } + + [TestMethod] + public void Test_381_16() + { + } + + [TestMethod] + public void Test_381_17() + { + } + + [TestMethod] + public void Test_381_18() + { + } + + [TestMethod] + public void Test_381_19() + { + } + + [TestMethod] + public void Test_381_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_382 + { + #region PassingTests + [TestMethod] + public void Test_382_01() + { + } + + [TestMethod] + public void Test_382_02() + { + } + + [TestMethod] + public void Test_382_03() + { + } + + [TestMethod] + public void Test_382_04() + { + } + + [TestMethod] + public void Test_382_05() + { + } + + [TestMethod] + public void Test_382_06() + { + } + + [TestMethod] + public void Test_382_07() + { + } + + [TestMethod] + public void Test_382_08() + { + } + + [TestMethod] + public void Test_382_09() + { + } + + [TestMethod] + public void Test_382_10() + { + } + + [TestMethod] + public void Test_382_11() + { + } + + [TestMethod] + public void Test_382_12() + { + } + + [TestMethod] + public void Test_382_13() + { + } + + [TestMethod] + public void Test_382_14() + { + } + + [TestMethod] + public void Test_382_15() + { + } + + [TestMethod] + public void Test_382_16() + { + } + + [TestMethod] + public void Test_382_17() + { + } + + [TestMethod] + public void Test_382_18() + { + } + + [TestMethod] + public void Test_382_19() + { + } + + [TestMethod] + public void Test_382_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_383 + { + #region PassingTests + [TestMethod] + public void Test_383_01() + { + } + + [TestMethod] + public void Test_383_02() + { + } + + [TestMethod] + public void Test_383_03() + { + } + + [TestMethod] + public void Test_383_04() + { + } + + [TestMethod] + public void Test_383_05() + { + } + + [TestMethod] + public void Test_383_06() + { + } + + [TestMethod] + public void Test_383_07() + { + } + + [TestMethod] + public void Test_383_08() + { + } + + [TestMethod] + public void Test_383_09() + { + } + + [TestMethod] + public void Test_383_10() + { + } + + [TestMethod] + public void Test_383_11() + { + } + + [TestMethod] + public void Test_383_12() + { + } + + [TestMethod] + public void Test_383_13() + { + } + + [TestMethod] + public void Test_383_14() + { + } + + [TestMethod] + public void Test_383_15() + { + } + + [TestMethod] + public void Test_383_16() + { + } + + [TestMethod] + public void Test_383_17() + { + } + + [TestMethod] + public void Test_383_18() + { + } + + [TestMethod] + public void Test_383_19() + { + } + + [TestMethod] + public void Test_383_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_384 + { + #region PassingTests + [TestMethod] + public void Test_384_01() + { + } + + [TestMethod] + public void Test_384_02() + { + } + + [TestMethod] + public void Test_384_03() + { + } + + [TestMethod] + public void Test_384_04() + { + } + + [TestMethod] + public void Test_384_05() + { + } + + [TestMethod] + public void Test_384_06() + { + } + + [TestMethod] + public void Test_384_07() + { + } + + [TestMethod] + public void Test_384_08() + { + } + + [TestMethod] + public void Test_384_09() + { + } + + [TestMethod] + public void Test_384_10() + { + } + + [TestMethod] + public void Test_384_11() + { + } + + [TestMethod] + public void Test_384_12() + { + } + + [TestMethod] + public void Test_384_13() + { + } + + [TestMethod] + public void Test_384_14() + { + } + + [TestMethod] + public void Test_384_15() + { + } + + [TestMethod] + public void Test_384_16() + { + } + + [TestMethod] + public void Test_384_17() + { + } + + [TestMethod] + public void Test_384_18() + { + } + + [TestMethod] + public void Test_384_19() + { + } + + [TestMethod] + public void Test_384_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_385 + { + #region PassingTests + [TestMethod] + public void Test_385_01() + { + } + + [TestMethod] + public void Test_385_02() + { + } + + [TestMethod] + public void Test_385_03() + { + } + + [TestMethod] + public void Test_385_04() + { + } + + [TestMethod] + public void Test_385_05() + { + } + + [TestMethod] + public void Test_385_06() + { + } + + [TestMethod] + public void Test_385_07() + { + } + + [TestMethod] + public void Test_385_08() + { + } + + [TestMethod] + public void Test_385_09() + { + } + + [TestMethod] + public void Test_385_10() + { + } + + [TestMethod] + public void Test_385_11() + { + } + + [TestMethod] + public void Test_385_12() + { + } + + [TestMethod] + public void Test_385_13() + { + } + + [TestMethod] + public void Test_385_14() + { + } + + [TestMethod] + public void Test_385_15() + { + } + + [TestMethod] + public void Test_385_16() + { + } + + [TestMethod] + public void Test_385_17() + { + } + + [TestMethod] + public void Test_385_18() + { + } + + [TestMethod] + public void Test_385_19() + { + } + + [TestMethod] + public void Test_385_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_386 + { + #region PassingTests + [TestMethod] + public void Test_386_01() + { + } + + [TestMethod] + public void Test_386_02() + { + } + + [TestMethod] + public void Test_386_03() + { + } + + [TestMethod] + public void Test_386_04() + { + } + + [TestMethod] + public void Test_386_05() + { + } + + [TestMethod] + public void Test_386_06() + { + } + + [TestMethod] + public void Test_386_07() + { + } + + [TestMethod] + public void Test_386_08() + { + } + + [TestMethod] + public void Test_386_09() + { + } + + [TestMethod] + public void Test_386_10() + { + } + + [TestMethod] + public void Test_386_11() + { + } + + [TestMethod] + public void Test_386_12() + { + } + + [TestMethod] + public void Test_386_13() + { + } + + [TestMethod] + public void Test_386_14() + { + } + + [TestMethod] + public void Test_386_15() + { + } + + [TestMethod] + public void Test_386_16() + { + } + + [TestMethod] + public void Test_386_17() + { + } + + [TestMethod] + public void Test_386_18() + { + } + + [TestMethod] + public void Test_386_19() + { + } + + [TestMethod] + public void Test_386_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_387 + { + #region PassingTests + [TestMethod] + public void Test_387_01() + { + } + + [TestMethod] + public void Test_387_02() + { + } + + [TestMethod] + public void Test_387_03() + { + } + + [TestMethod] + public void Test_387_04() + { + } + + [TestMethod] + public void Test_387_05() + { + } + + [TestMethod] + public void Test_387_06() + { + } + + [TestMethod] + public void Test_387_07() + { + } + + [TestMethod] + public void Test_387_08() + { + } + + [TestMethod] + public void Test_387_09() + { + } + + [TestMethod] + public void Test_387_10() + { + } + + [TestMethod] + public void Test_387_11() + { + } + + [TestMethod] + public void Test_387_12() + { + } + + [TestMethod] + public void Test_387_13() + { + } + + [TestMethod] + public void Test_387_14() + { + } + + [TestMethod] + public void Test_387_15() + { + } + + [TestMethod] + public void Test_387_16() + { + } + + [TestMethod] + public void Test_387_17() + { + } + + [TestMethod] + public void Test_387_18() + { + } + + [TestMethod] + public void Test_387_19() + { + } + + [TestMethod] + public void Test_387_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_388 + { + #region PassingTests + [TestMethod] + public void Test_388_01() + { + } + + [TestMethod] + public void Test_388_02() + { + } + + [TestMethod] + public void Test_388_03() + { + } + + [TestMethod] + public void Test_388_04() + { + } + + [TestMethod] + public void Test_388_05() + { + } + + [TestMethod] + public void Test_388_06() + { + } + + [TestMethod] + public void Test_388_07() + { + } + + [TestMethod] + public void Test_388_08() + { + } + + [TestMethod] + public void Test_388_09() + { + } + + [TestMethod] + public void Test_388_10() + { + } + + [TestMethod] + public void Test_388_11() + { + } + + [TestMethod] + public void Test_388_12() + { + } + + [TestMethod] + public void Test_388_13() + { + } + + [TestMethod] + public void Test_388_14() + { + } + + [TestMethod] + public void Test_388_15() + { + } + + [TestMethod] + public void Test_388_16() + { + } + + [TestMethod] + public void Test_388_17() + { + } + + [TestMethod] + public void Test_388_18() + { + } + + [TestMethod] + public void Test_388_19() + { + } + + [TestMethod] + public void Test_388_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_389 + { + #region PassingTests + [TestMethod] + public void Test_389_01() + { + } + + [TestMethod] + public void Test_389_02() + { + } + + [TestMethod] + public void Test_389_03() + { + } + + [TestMethod] + public void Test_389_04() + { + } + + [TestMethod] + public void Test_389_05() + { + } + + [TestMethod] + public void Test_389_06() + { + } + + [TestMethod] + public void Test_389_07() + { + } + + [TestMethod] + public void Test_389_08() + { + } + + [TestMethod] + public void Test_389_09() + { + } + + [TestMethod] + public void Test_389_10() + { + } + + [TestMethod] + public void Test_389_11() + { + } + + [TestMethod] + public void Test_389_12() + { + } + + [TestMethod] + public void Test_389_13() + { + } + + [TestMethod] + public void Test_389_14() + { + } + + [TestMethod] + public void Test_389_15() + { + } + + [TestMethod] + public void Test_389_16() + { + } + + [TestMethod] + public void Test_389_17() + { + } + + [TestMethod] + public void Test_389_18() + { + } + + [TestMethod] + public void Test_389_19() + { + } + + [TestMethod] + public void Test_389_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_390 + { + #region PassingTests + [TestMethod] + public void Test_390_01() + { + } + + [TestMethod] + public void Test_390_02() + { + } + + [TestMethod] + public void Test_390_03() + { + } + + [TestMethod] + public void Test_390_04() + { + } + + [TestMethod] + public void Test_390_05() + { + } + + [TestMethod] + public void Test_390_06() + { + } + + [TestMethod] + public void Test_390_07() + { + } + + [TestMethod] + public void Test_390_08() + { + } + + [TestMethod] + public void Test_390_09() + { + } + + [TestMethod] + public void Test_390_10() + { + } + + [TestMethod] + public void Test_390_11() + { + } + + [TestMethod] + public void Test_390_12() + { + } + + [TestMethod] + public void Test_390_13() + { + } + + [TestMethod] + public void Test_390_14() + { + } + + [TestMethod] + public void Test_390_15() + { + } + + [TestMethod] + public void Test_390_16() + { + } + + [TestMethod] + public void Test_390_17() + { + } + + [TestMethod] + public void Test_390_18() + { + } + + [TestMethod] + public void Test_390_19() + { + } + + [TestMethod] + public void Test_390_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_391 + { + #region PassingTests + [TestMethod] + public void Test_391_01() + { + } + + [TestMethod] + public void Test_391_02() + { + } + + [TestMethod] + public void Test_391_03() + { + } + + [TestMethod] + public void Test_391_04() + { + } + + [TestMethod] + public void Test_391_05() + { + } + + [TestMethod] + public void Test_391_06() + { + } + + [TestMethod] + public void Test_391_07() + { + } + + [TestMethod] + public void Test_391_08() + { + } + + [TestMethod] + public void Test_391_09() + { + } + + [TestMethod] + public void Test_391_10() + { + } + + [TestMethod] + public void Test_391_11() + { + } + + [TestMethod] + public void Test_391_12() + { + } + + [TestMethod] + public void Test_391_13() + { + } + + [TestMethod] + public void Test_391_14() + { + } + + [TestMethod] + public void Test_391_15() + { + } + + [TestMethod] + public void Test_391_16() + { + } + + [TestMethod] + public void Test_391_17() + { + } + + [TestMethod] + public void Test_391_18() + { + } + + [TestMethod] + public void Test_391_19() + { + } + + [TestMethod] + public void Test_391_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_392 + { + #region PassingTests + [TestMethod] + public void Test_392_01() + { + } + + [TestMethod] + public void Test_392_02() + { + } + + [TestMethod] + public void Test_392_03() + { + } + + [TestMethod] + public void Test_392_04() + { + } + + [TestMethod] + public void Test_392_05() + { + } + + [TestMethod] + public void Test_392_06() + { + } + + [TestMethod] + public void Test_392_07() + { + } + + [TestMethod] + public void Test_392_08() + { + } + + [TestMethod] + public void Test_392_09() + { + } + + [TestMethod] + public void Test_392_10() + { + } + + [TestMethod] + public void Test_392_11() + { + } + + [TestMethod] + public void Test_392_12() + { + } + + [TestMethod] + public void Test_392_13() + { + } + + [TestMethod] + public void Test_392_14() + { + } + + [TestMethod] + public void Test_392_15() + { + } + + [TestMethod] + public void Test_392_16() + { + } + + [TestMethod] + public void Test_392_17() + { + } + + [TestMethod] + public void Test_392_18() + { + } + + [TestMethod] + public void Test_392_19() + { + } + + [TestMethod] + public void Test_392_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_393 + { + #region PassingTests + [TestMethod] + public void Test_393_01() + { + } + + [TestMethod] + public void Test_393_02() + { + } + + [TestMethod] + public void Test_393_03() + { + } + + [TestMethod] + public void Test_393_04() + { + } + + [TestMethod] + public void Test_393_05() + { + } + + [TestMethod] + public void Test_393_06() + { + } + + [TestMethod] + public void Test_393_07() + { + } + + [TestMethod] + public void Test_393_08() + { + } + + [TestMethod] + public void Test_393_09() + { + } + + [TestMethod] + public void Test_393_10() + { + } + + [TestMethod] + public void Test_393_11() + { + } + + [TestMethod] + public void Test_393_12() + { + } + + [TestMethod] + public void Test_393_13() + { + } + + [TestMethod] + public void Test_393_14() + { + } + + [TestMethod] + public void Test_393_15() + { + } + + [TestMethod] + public void Test_393_16() + { + } + + [TestMethod] + public void Test_393_17() + { + } + + [TestMethod] + public void Test_393_18() + { + } + + [TestMethod] + public void Test_393_19() + { + } + + [TestMethod] + public void Test_393_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_394 + { + #region PassingTests + [TestMethod] + public void Test_394_01() + { + } + + [TestMethod] + public void Test_394_02() + { + } + + [TestMethod] + public void Test_394_03() + { + } + + [TestMethod] + public void Test_394_04() + { + } + + [TestMethod] + public void Test_394_05() + { + } + + [TestMethod] + public void Test_394_06() + { + } + + [TestMethod] + public void Test_394_07() + { + } + + [TestMethod] + public void Test_394_08() + { + } + + [TestMethod] + public void Test_394_09() + { + } + + [TestMethod] + public void Test_394_10() + { + } + + [TestMethod] + public void Test_394_11() + { + } + + [TestMethod] + public void Test_394_12() + { + } + + [TestMethod] + public void Test_394_13() + { + } + + [TestMethod] + public void Test_394_14() + { + } + + [TestMethod] + public void Test_394_15() + { + } + + [TestMethod] + public void Test_394_16() + { + } + + [TestMethod] + public void Test_394_17() + { + } + + [TestMethod] + public void Test_394_18() + { + } + + [TestMethod] + public void Test_394_19() + { + } + + [TestMethod] + public void Test_394_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_395 + { + #region PassingTests + [TestMethod] + public void Test_395_01() + { + } + + [TestMethod] + public void Test_395_02() + { + } + + [TestMethod] + public void Test_395_03() + { + } + + [TestMethod] + public void Test_395_04() + { + } + + [TestMethod] + public void Test_395_05() + { + } + + [TestMethod] + public void Test_395_06() + { + } + + [TestMethod] + public void Test_395_07() + { + } + + [TestMethod] + public void Test_395_08() + { + } + + [TestMethod] + public void Test_395_09() + { + } + + [TestMethod] + public void Test_395_10() + { + } + + [TestMethod] + public void Test_395_11() + { + } + + [TestMethod] + public void Test_395_12() + { + } + + [TestMethod] + public void Test_395_13() + { + } + + [TestMethod] + public void Test_395_14() + { + } + + [TestMethod] + public void Test_395_15() + { + } + + [TestMethod] + public void Test_395_16() + { + } + + [TestMethod] + public void Test_395_17() + { + } + + [TestMethod] + public void Test_395_18() + { + } + + [TestMethod] + public void Test_395_19() + { + } + + [TestMethod] + public void Test_395_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_396 + { + #region PassingTests + [TestMethod] + public void Test_396_01() + { + } + + [TestMethod] + public void Test_396_02() + { + } + + [TestMethod] + public void Test_396_03() + { + } + + [TestMethod] + public void Test_396_04() + { + } + + [TestMethod] + public void Test_396_05() + { + } + + [TestMethod] + public void Test_396_06() + { + } + + [TestMethod] + public void Test_396_07() + { + } + + [TestMethod] + public void Test_396_08() + { + } + + [TestMethod] + public void Test_396_09() + { + } + + [TestMethod] + public void Test_396_10() + { + } + + [TestMethod] + public void Test_396_11() + { + } + + [TestMethod] + public void Test_396_12() + { + } + + [TestMethod] + public void Test_396_13() + { + } + + [TestMethod] + public void Test_396_14() + { + } + + [TestMethod] + public void Test_396_15() + { + } + + [TestMethod] + public void Test_396_16() + { + } + + [TestMethod] + public void Test_396_17() + { + } + + [TestMethod] + public void Test_396_18() + { + } + + [TestMethod] + public void Test_396_19() + { + } + + [TestMethod] + public void Test_396_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_397 + { + #region PassingTests + [TestMethod] + public void Test_397_01() + { + } + + [TestMethod] + public void Test_397_02() + { + } + + [TestMethod] + public void Test_397_03() + { + } + + [TestMethod] + public void Test_397_04() + { + } + + [TestMethod] + public void Test_397_05() + { + } + + [TestMethod] + public void Test_397_06() + { + } + + [TestMethod] + public void Test_397_07() + { + } + + [TestMethod] + public void Test_397_08() + { + } + + [TestMethod] + public void Test_397_09() + { + } + + [TestMethod] + public void Test_397_10() + { + } + + [TestMethod] + public void Test_397_11() + { + } + + [TestMethod] + public void Test_397_12() + { + } + + [TestMethod] + public void Test_397_13() + { + } + + [TestMethod] + public void Test_397_14() + { + } + + [TestMethod] + public void Test_397_15() + { + } + + [TestMethod] + public void Test_397_16() + { + } + + [TestMethod] + public void Test_397_17() + { + } + + [TestMethod] + public void Test_397_18() + { + } + + [TestMethod] + public void Test_397_19() + { + } + + [TestMethod] + public void Test_397_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_398 + { + #region PassingTests + [TestMethod] + public void Test_398_01() + { + } + + [TestMethod] + public void Test_398_02() + { + } + + [TestMethod] + public void Test_398_03() + { + } + + [TestMethod] + public void Test_398_04() + { + } + + [TestMethod] + public void Test_398_05() + { + } + + [TestMethod] + public void Test_398_06() + { + } + + [TestMethod] + public void Test_398_07() + { + } + + [TestMethod] + public void Test_398_08() + { + } + + [TestMethod] + public void Test_398_09() + { + } + + [TestMethod] + public void Test_398_10() + { + } + + [TestMethod] + public void Test_398_11() + { + } + + [TestMethod] + public void Test_398_12() + { + } + + [TestMethod] + public void Test_398_13() + { + } + + [TestMethod] + public void Test_398_14() + { + } + + [TestMethod] + public void Test_398_15() + { + } + + [TestMethod] + public void Test_398_16() + { + } + + [TestMethod] + public void Test_398_17() + { + } + + [TestMethod] + public void Test_398_18() + { + } + + [TestMethod] + public void Test_398_19() + { + } + + [TestMethod] + public void Test_398_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_399 + { + #region PassingTests + [TestMethod] + public void Test_399_01() + { + } + + [TestMethod] + public void Test_399_02() + { + } + + [TestMethod] + public void Test_399_03() + { + } + + [TestMethod] + public void Test_399_04() + { + } + + [TestMethod] + public void Test_399_05() + { + } + + [TestMethod] + public void Test_399_06() + { + } + + [TestMethod] + public void Test_399_07() + { + } + + [TestMethod] + public void Test_399_08() + { + } + + [TestMethod] + public void Test_399_09() + { + } + + [TestMethod] + public void Test_399_10() + { + } + + [TestMethod] + public void Test_399_11() + { + } + + [TestMethod] + public void Test_399_12() + { + } + + [TestMethod] + public void Test_399_13() + { + } + + [TestMethod] + public void Test_399_14() + { + } + + [TestMethod] + public void Test_399_15() + { + } + + [TestMethod] + public void Test_399_16() + { + } + + [TestMethod] + public void Test_399_17() + { + } + + [TestMethod] + public void Test_399_18() + { + } + + [TestMethod] + public void Test_399_19() + { + } + + [TestMethod] + public void Test_399_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_400 + { + #region PassingTests + [TestMethod] + public void Test_400_01() + { + } + + [TestMethod] + public void Test_400_02() + { + } + + [TestMethod] + public void Test_400_03() + { + } + + [TestMethod] + public void Test_400_04() + { + } + + [TestMethod] + public void Test_400_05() + { + } + + [TestMethod] + public void Test_400_06() + { + } + + [TestMethod] + public void Test_400_07() + { + } + + [TestMethod] + public void Test_400_08() + { + } + + [TestMethod] + public void Test_400_09() + { + } + + [TestMethod] + public void Test_400_10() + { + } + + [TestMethod] + public void Test_400_11() + { + } + + [TestMethod] + public void Test_400_12() + { + } + + [TestMethod] + public void Test_400_13() + { + } + + [TestMethod] + public void Test_400_14() + { + } + + [TestMethod] + public void Test_400_15() + { + } + + [TestMethod] + public void Test_400_16() + { + } + + [TestMethod] + public void Test_400_17() + { + } + + [TestMethod] + public void Test_400_18() + { + } + + [TestMethod] + public void Test_400_19() + { + } + + [TestMethod] + public void Test_400_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_401 + { + #region PassingTests + [TestMethod] + public void Test_401_01() + { + } + + [TestMethod] + public void Test_401_02() + { + } + + [TestMethod] + public void Test_401_03() + { + } + + [TestMethod] + public void Test_401_04() + { + } + + [TestMethod] + public void Test_401_05() + { + } + + [TestMethod] + public void Test_401_06() + { + } + + [TestMethod] + public void Test_401_07() + { + } + + [TestMethod] + public void Test_401_08() + { + } + + [TestMethod] + public void Test_401_09() + { + } + + [TestMethod] + public void Test_401_10() + { + } + + [TestMethod] + public void Test_401_11() + { + } + + [TestMethod] + public void Test_401_12() + { + } + + [TestMethod] + public void Test_401_13() + { + } + + [TestMethod] + public void Test_401_14() + { + } + + [TestMethod] + public void Test_401_15() + { + } + + [TestMethod] + public void Test_401_16() + { + } + + [TestMethod] + public void Test_401_17() + { + } + + [TestMethod] + public void Test_401_18() + { + } + + [TestMethod] + public void Test_401_19() + { + } + + [TestMethod] + public void Test_401_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_402 + { + #region PassingTests + [TestMethod] + public void Test_402_01() + { + } + + [TestMethod] + public void Test_402_02() + { + } + + [TestMethod] + public void Test_402_03() + { + } + + [TestMethod] + public void Test_402_04() + { + } + + [TestMethod] + public void Test_402_05() + { + } + + [TestMethod] + public void Test_402_06() + { + } + + [TestMethod] + public void Test_402_07() + { + } + + [TestMethod] + public void Test_402_08() + { + } + + [TestMethod] + public void Test_402_09() + { + } + + [TestMethod] + public void Test_402_10() + { + } + + [TestMethod] + public void Test_402_11() + { + } + + [TestMethod] + public void Test_402_12() + { + } + + [TestMethod] + public void Test_402_13() + { + } + + [TestMethod] + public void Test_402_14() + { + } + + [TestMethod] + public void Test_402_15() + { + } + + [TestMethod] + public void Test_402_16() + { + } + + [TestMethod] + public void Test_402_17() + { + } + + [TestMethod] + public void Test_402_18() + { + } + + [TestMethod] + public void Test_402_19() + { + } + + [TestMethod] + public void Test_402_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_403 + { + #region PassingTests + [TestMethod] + public void Test_403_01() + { + } + + [TestMethod] + public void Test_403_02() + { + } + + [TestMethod] + public void Test_403_03() + { + } + + [TestMethod] + public void Test_403_04() + { + } + + [TestMethod] + public void Test_403_05() + { + } + + [TestMethod] + public void Test_403_06() + { + } + + [TestMethod] + public void Test_403_07() + { + } + + [TestMethod] + public void Test_403_08() + { + } + + [TestMethod] + public void Test_403_09() + { + } + + [TestMethod] + public void Test_403_10() + { + } + + [TestMethod] + public void Test_403_11() + { + } + + [TestMethod] + public void Test_403_12() + { + } + + [TestMethod] + public void Test_403_13() + { + } + + [TestMethod] + public void Test_403_14() + { + } + + [TestMethod] + public void Test_403_15() + { + } + + [TestMethod] + public void Test_403_16() + { + } + + [TestMethod] + public void Test_403_17() + { + } + + [TestMethod] + public void Test_403_18() + { + } + + [TestMethod] + public void Test_403_19() + { + } + + [TestMethod] + public void Test_403_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_404 + { + #region PassingTests + [TestMethod] + public void Test_404_01() + { + } + + [TestMethod] + public void Test_404_02() + { + } + + [TestMethod] + public void Test_404_03() + { + } + + [TestMethod] + public void Test_404_04() + { + } + + [TestMethod] + public void Test_404_05() + { + } + + [TestMethod] + public void Test_404_06() + { + } + + [TestMethod] + public void Test_404_07() + { + } + + [TestMethod] + public void Test_404_08() + { + } + + [TestMethod] + public void Test_404_09() + { + } + + [TestMethod] + public void Test_404_10() + { + } + + [TestMethod] + public void Test_404_11() + { + } + + [TestMethod] + public void Test_404_12() + { + } + + [TestMethod] + public void Test_404_13() + { + } + + [TestMethod] + public void Test_404_14() + { + } + + [TestMethod] + public void Test_404_15() + { + } + + [TestMethod] + public void Test_404_16() + { + } + + [TestMethod] + public void Test_404_17() + { + } + + [TestMethod] + public void Test_404_18() + { + } + + [TestMethod] + public void Test_404_19() + { + } + + [TestMethod] + public void Test_404_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_405 + { + #region PassingTests + [TestMethod] + public void Test_405_01() + { + } + + [TestMethod] + public void Test_405_02() + { + } + + [TestMethod] + public void Test_405_03() + { + } + + [TestMethod] + public void Test_405_04() + { + } + + [TestMethod] + public void Test_405_05() + { + } + + [TestMethod] + public void Test_405_06() + { + } + + [TestMethod] + public void Test_405_07() + { + } + + [TestMethod] + public void Test_405_08() + { + } + + [TestMethod] + public void Test_405_09() + { + } + + [TestMethod] + public void Test_405_10() + { + } + + [TestMethod] + public void Test_405_11() + { + } + + [TestMethod] + public void Test_405_12() + { + } + + [TestMethod] + public void Test_405_13() + { + } + + [TestMethod] + public void Test_405_14() + { + } + + [TestMethod] + public void Test_405_15() + { + } + + [TestMethod] + public void Test_405_16() + { + } + + [TestMethod] + public void Test_405_17() + { + } + + [TestMethod] + public void Test_405_18() + { + } + + [TestMethod] + public void Test_405_19() + { + } + + [TestMethod] + public void Test_405_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_406 + { + #region PassingTests + [TestMethod] + public void Test_406_01() + { + } + + [TestMethod] + public void Test_406_02() + { + } + + [TestMethod] + public void Test_406_03() + { + } + + [TestMethod] + public void Test_406_04() + { + } + + [TestMethod] + public void Test_406_05() + { + } + + [TestMethod] + public void Test_406_06() + { + } + + [TestMethod] + public void Test_406_07() + { + } + + [TestMethod] + public void Test_406_08() + { + } + + [TestMethod] + public void Test_406_09() + { + } + + [TestMethod] + public void Test_406_10() + { + } + + [TestMethod] + public void Test_406_11() + { + } + + [TestMethod] + public void Test_406_12() + { + } + + [TestMethod] + public void Test_406_13() + { + } + + [TestMethod] + public void Test_406_14() + { + } + + [TestMethod] + public void Test_406_15() + { + } + + [TestMethod] + public void Test_406_16() + { + } + + [TestMethod] + public void Test_406_17() + { + } + + [TestMethod] + public void Test_406_18() + { + } + + [TestMethod] + public void Test_406_19() + { + } + + [TestMethod] + public void Test_406_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_407 + { + #region PassingTests + [TestMethod] + public void Test_407_01() + { + } + + [TestMethod] + public void Test_407_02() + { + } + + [TestMethod] + public void Test_407_03() + { + } + + [TestMethod] + public void Test_407_04() + { + } + + [TestMethod] + public void Test_407_05() + { + } + + [TestMethod] + public void Test_407_06() + { + } + + [TestMethod] + public void Test_407_07() + { + } + + [TestMethod] + public void Test_407_08() + { + } + + [TestMethod] + public void Test_407_09() + { + } + + [TestMethod] + public void Test_407_10() + { + } + + [TestMethod] + public void Test_407_11() + { + } + + [TestMethod] + public void Test_407_12() + { + } + + [TestMethod] + public void Test_407_13() + { + } + + [TestMethod] + public void Test_407_14() + { + } + + [TestMethod] + public void Test_407_15() + { + } + + [TestMethod] + public void Test_407_16() + { + } + + [TestMethod] + public void Test_407_17() + { + } + + [TestMethod] + public void Test_407_18() + { + } + + [TestMethod] + public void Test_407_19() + { + } + + [TestMethod] + public void Test_407_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_408 + { + #region PassingTests + [TestMethod] + public void Test_408_01() + { + } + + [TestMethod] + public void Test_408_02() + { + } + + [TestMethod] + public void Test_408_03() + { + } + + [TestMethod] + public void Test_408_04() + { + } + + [TestMethod] + public void Test_408_05() + { + } + + [TestMethod] + public void Test_408_06() + { + } + + [TestMethod] + public void Test_408_07() + { + } + + [TestMethod] + public void Test_408_08() + { + } + + [TestMethod] + public void Test_408_09() + { + } + + [TestMethod] + public void Test_408_10() + { + } + + [TestMethod] + public void Test_408_11() + { + } + + [TestMethod] + public void Test_408_12() + { + } + + [TestMethod] + public void Test_408_13() + { + } + + [TestMethod] + public void Test_408_14() + { + } + + [TestMethod] + public void Test_408_15() + { + } + + [TestMethod] + public void Test_408_16() + { + } + + [TestMethod] + public void Test_408_17() + { + } + + [TestMethod] + public void Test_408_18() + { + } + + [TestMethod] + public void Test_408_19() + { + } + + [TestMethod] + public void Test_408_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_409 + { + #region PassingTests + [TestMethod] + public void Test_409_01() + { + } + + [TestMethod] + public void Test_409_02() + { + } + + [TestMethod] + public void Test_409_03() + { + } + + [TestMethod] + public void Test_409_04() + { + } + + [TestMethod] + public void Test_409_05() + { + } + + [TestMethod] + public void Test_409_06() + { + } + + [TestMethod] + public void Test_409_07() + { + } + + [TestMethod] + public void Test_409_08() + { + } + + [TestMethod] + public void Test_409_09() + { + } + + [TestMethod] + public void Test_409_10() + { + } + + [TestMethod] + public void Test_409_11() + { + } + + [TestMethod] + public void Test_409_12() + { + } + + [TestMethod] + public void Test_409_13() + { + } + + [TestMethod] + public void Test_409_14() + { + } + + [TestMethod] + public void Test_409_15() + { + } + + [TestMethod] + public void Test_409_16() + { + } + + [TestMethod] + public void Test_409_17() + { + } + + [TestMethod] + public void Test_409_18() + { + } + + [TestMethod] + public void Test_409_19() + { + } + + [TestMethod] + public void Test_409_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_410 + { + #region PassingTests + [TestMethod] + public void Test_410_01() + { + } + + [TestMethod] + public void Test_410_02() + { + } + + [TestMethod] + public void Test_410_03() + { + } + + [TestMethod] + public void Test_410_04() + { + } + + [TestMethod] + public void Test_410_05() + { + } + + [TestMethod] + public void Test_410_06() + { + } + + [TestMethod] + public void Test_410_07() + { + } + + [TestMethod] + public void Test_410_08() + { + } + + [TestMethod] + public void Test_410_09() + { + } + + [TestMethod] + public void Test_410_10() + { + } + + [TestMethod] + public void Test_410_11() + { + } + + [TestMethod] + public void Test_410_12() + { + } + + [TestMethod] + public void Test_410_13() + { + } + + [TestMethod] + public void Test_410_14() + { + } + + [TestMethod] + public void Test_410_15() + { + } + + [TestMethod] + public void Test_410_16() + { + } + + [TestMethod] + public void Test_410_17() + { + } + + [TestMethod] + public void Test_410_18() + { + } + + [TestMethod] + public void Test_410_19() + { + } + + [TestMethod] + public void Test_410_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_411 + { + #region PassingTests + [TestMethod] + public void Test_411_01() + { + } + + [TestMethod] + public void Test_411_02() + { + } + + [TestMethod] + public void Test_411_03() + { + } + + [TestMethod] + public void Test_411_04() + { + } + + [TestMethod] + public void Test_411_05() + { + } + + [TestMethod] + public void Test_411_06() + { + } + + [TestMethod] + public void Test_411_07() + { + } + + [TestMethod] + public void Test_411_08() + { + } + + [TestMethod] + public void Test_411_09() + { + } + + [TestMethod] + public void Test_411_10() + { + } + + [TestMethod] + public void Test_411_11() + { + } + + [TestMethod] + public void Test_411_12() + { + } + + [TestMethod] + public void Test_411_13() + { + } + + [TestMethod] + public void Test_411_14() + { + } + + [TestMethod] + public void Test_411_15() + { + } + + [TestMethod] + public void Test_411_16() + { + } + + [TestMethod] + public void Test_411_17() + { + } + + [TestMethod] + public void Test_411_18() + { + } + + [TestMethod] + public void Test_411_19() + { + } + + [TestMethod] + public void Test_411_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_412 + { + #region PassingTests + [TestMethod] + public void Test_412_01() + { + } + + [TestMethod] + public void Test_412_02() + { + } + + [TestMethod] + public void Test_412_03() + { + } + + [TestMethod] + public void Test_412_04() + { + } + + [TestMethod] + public void Test_412_05() + { + } + + [TestMethod] + public void Test_412_06() + { + } + + [TestMethod] + public void Test_412_07() + { + } + + [TestMethod] + public void Test_412_08() + { + } + + [TestMethod] + public void Test_412_09() + { + } + + [TestMethod] + public void Test_412_10() + { + } + + [TestMethod] + public void Test_412_11() + { + } + + [TestMethod] + public void Test_412_12() + { + } + + [TestMethod] + public void Test_412_13() + { + } + + [TestMethod] + public void Test_412_14() + { + } + + [TestMethod] + public void Test_412_15() + { + } + + [TestMethod] + public void Test_412_16() + { + } + + [TestMethod] + public void Test_412_17() + { + } + + [TestMethod] + public void Test_412_18() + { + } + + [TestMethod] + public void Test_412_19() + { + } + + [TestMethod] + public void Test_412_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_413 + { + #region PassingTests + [TestMethod] + public void Test_413_01() + { + } + + [TestMethod] + public void Test_413_02() + { + } + + [TestMethod] + public void Test_413_03() + { + } + + [TestMethod] + public void Test_413_04() + { + } + + [TestMethod] + public void Test_413_05() + { + } + + [TestMethod] + public void Test_413_06() + { + } + + [TestMethod] + public void Test_413_07() + { + } + + [TestMethod] + public void Test_413_08() + { + } + + [TestMethod] + public void Test_413_09() + { + } + + [TestMethod] + public void Test_413_10() + { + } + + [TestMethod] + public void Test_413_11() + { + } + + [TestMethod] + public void Test_413_12() + { + } + + [TestMethod] + public void Test_413_13() + { + } + + [TestMethod] + public void Test_413_14() + { + } + + [TestMethod] + public void Test_413_15() + { + } + + [TestMethod] + public void Test_413_16() + { + } + + [TestMethod] + public void Test_413_17() + { + } + + [TestMethod] + public void Test_413_18() + { + } + + [TestMethod] + public void Test_413_19() + { + } + + [TestMethod] + public void Test_413_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_414 + { + #region PassingTests + [TestMethod] + public void Test_414_01() + { + } + + [TestMethod] + public void Test_414_02() + { + } + + [TestMethod] + public void Test_414_03() + { + } + + [TestMethod] + public void Test_414_04() + { + } + + [TestMethod] + public void Test_414_05() + { + } + + [TestMethod] + public void Test_414_06() + { + } + + [TestMethod] + public void Test_414_07() + { + } + + [TestMethod] + public void Test_414_08() + { + } + + [TestMethod] + public void Test_414_09() + { + } + + [TestMethod] + public void Test_414_10() + { + } + + [TestMethod] + public void Test_414_11() + { + } + + [TestMethod] + public void Test_414_12() + { + } + + [TestMethod] + public void Test_414_13() + { + } + + [TestMethod] + public void Test_414_14() + { + } + + [TestMethod] + public void Test_414_15() + { + } + + [TestMethod] + public void Test_414_16() + { + } + + [TestMethod] + public void Test_414_17() + { + } + + [TestMethod] + public void Test_414_18() + { + } + + [TestMethod] + public void Test_414_19() + { + } + + [TestMethod] + public void Test_414_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_415 + { + #region PassingTests + [TestMethod] + public void Test_415_01() + { + } + + [TestMethod] + public void Test_415_02() + { + } + + [TestMethod] + public void Test_415_03() + { + } + + [TestMethod] + public void Test_415_04() + { + } + + [TestMethod] + public void Test_415_05() + { + } + + [TestMethod] + public void Test_415_06() + { + } + + [TestMethod] + public void Test_415_07() + { + } + + [TestMethod] + public void Test_415_08() + { + } + + [TestMethod] + public void Test_415_09() + { + } + + [TestMethod] + public void Test_415_10() + { + } + + [TestMethod] + public void Test_415_11() + { + } + + [TestMethod] + public void Test_415_12() + { + } + + [TestMethod] + public void Test_415_13() + { + } + + [TestMethod] + public void Test_415_14() + { + } + + [TestMethod] + public void Test_415_15() + { + } + + [TestMethod] + public void Test_415_16() + { + } + + [TestMethod] + public void Test_415_17() + { + } + + [TestMethod] + public void Test_415_18() + { + } + + [TestMethod] + public void Test_415_19() + { + } + + [TestMethod] + public void Test_415_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_416 + { + #region PassingTests + [TestMethod] + public void Test_416_01() + { + } + + [TestMethod] + public void Test_416_02() + { + } + + [TestMethod] + public void Test_416_03() + { + } + + [TestMethod] + public void Test_416_04() + { + } + + [TestMethod] + public void Test_416_05() + { + } + + [TestMethod] + public void Test_416_06() + { + } + + [TestMethod] + public void Test_416_07() + { + } + + [TestMethod] + public void Test_416_08() + { + } + + [TestMethod] + public void Test_416_09() + { + } + + [TestMethod] + public void Test_416_10() + { + } + + [TestMethod] + public void Test_416_11() + { + } + + [TestMethod] + public void Test_416_12() + { + } + + [TestMethod] + public void Test_416_13() + { + } + + [TestMethod] + public void Test_416_14() + { + } + + [TestMethod] + public void Test_416_15() + { + } + + [TestMethod] + public void Test_416_16() + { + } + + [TestMethod] + public void Test_416_17() + { + } + + [TestMethod] + public void Test_416_18() + { + } + + [TestMethod] + public void Test_416_19() + { + } + + [TestMethod] + public void Test_416_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_417 + { + #region PassingTests + [TestMethod] + public void Test_417_01() + { + } + + [TestMethod] + public void Test_417_02() + { + } + + [TestMethod] + public void Test_417_03() + { + } + + [TestMethod] + public void Test_417_04() + { + } + + [TestMethod] + public void Test_417_05() + { + } + + [TestMethod] + public void Test_417_06() + { + } + + [TestMethod] + public void Test_417_07() + { + } + + [TestMethod] + public void Test_417_08() + { + } + + [TestMethod] + public void Test_417_09() + { + } + + [TestMethod] + public void Test_417_10() + { + } + + [TestMethod] + public void Test_417_11() + { + } + + [TestMethod] + public void Test_417_12() + { + } + + [TestMethod] + public void Test_417_13() + { + } + + [TestMethod] + public void Test_417_14() + { + } + + [TestMethod] + public void Test_417_15() + { + } + + [TestMethod] + public void Test_417_16() + { + } + + [TestMethod] + public void Test_417_17() + { + } + + [TestMethod] + public void Test_417_18() + { + } + + [TestMethod] + public void Test_417_19() + { + } + + [TestMethod] + public void Test_417_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_418 + { + #region PassingTests + [TestMethod] + public void Test_418_01() + { + } + + [TestMethod] + public void Test_418_02() + { + } + + [TestMethod] + public void Test_418_03() + { + } + + [TestMethod] + public void Test_418_04() + { + } + + [TestMethod] + public void Test_418_05() + { + } + + [TestMethod] + public void Test_418_06() + { + } + + [TestMethod] + public void Test_418_07() + { + } + + [TestMethod] + public void Test_418_08() + { + } + + [TestMethod] + public void Test_418_09() + { + } + + [TestMethod] + public void Test_418_10() + { + } + + [TestMethod] + public void Test_418_11() + { + } + + [TestMethod] + public void Test_418_12() + { + } + + [TestMethod] + public void Test_418_13() + { + } + + [TestMethod] + public void Test_418_14() + { + } + + [TestMethod] + public void Test_418_15() + { + } + + [TestMethod] + public void Test_418_16() + { + } + + [TestMethod] + public void Test_418_17() + { + } + + [TestMethod] + public void Test_418_18() + { + } + + [TestMethod] + public void Test_418_19() + { + } + + [TestMethod] + public void Test_418_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_419 + { + #region PassingTests + [TestMethod] + public void Test_419_01() + { + } + + [TestMethod] + public void Test_419_02() + { + } + + [TestMethod] + public void Test_419_03() + { + } + + [TestMethod] + public void Test_419_04() + { + } + + [TestMethod] + public void Test_419_05() + { + } + + [TestMethod] + public void Test_419_06() + { + } + + [TestMethod] + public void Test_419_07() + { + } + + [TestMethod] + public void Test_419_08() + { + } + + [TestMethod] + public void Test_419_09() + { + } + + [TestMethod] + public void Test_419_10() + { + } + + [TestMethod] + public void Test_419_11() + { + } + + [TestMethod] + public void Test_419_12() + { + } + + [TestMethod] + public void Test_419_13() + { + } + + [TestMethod] + public void Test_419_14() + { + } + + [TestMethod] + public void Test_419_15() + { + } + + [TestMethod] + public void Test_419_16() + { + } + + [TestMethod] + public void Test_419_17() + { + } + + [TestMethod] + public void Test_419_18() + { + } + + [TestMethod] + public void Test_419_19() + { + } + + [TestMethod] + public void Test_419_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_420 + { + #region PassingTests + [TestMethod] + public void Test_420_01() + { + } + + [TestMethod] + public void Test_420_02() + { + } + + [TestMethod] + public void Test_420_03() + { + } + + [TestMethod] + public void Test_420_04() + { + } + + [TestMethod] + public void Test_420_05() + { + } + + [TestMethod] + public void Test_420_06() + { + } + + [TestMethod] + public void Test_420_07() + { + } + + [TestMethod] + public void Test_420_08() + { + } + + [TestMethod] + public void Test_420_09() + { + } + + [TestMethod] + public void Test_420_10() + { + } + + [TestMethod] + public void Test_420_11() + { + } + + [TestMethod] + public void Test_420_12() + { + } + + [TestMethod] + public void Test_420_13() + { + } + + [TestMethod] + public void Test_420_14() + { + } + + [TestMethod] + public void Test_420_15() + { + } + + [TestMethod] + public void Test_420_16() + { + } + + [TestMethod] + public void Test_420_17() + { + } + + [TestMethod] + public void Test_420_18() + { + } + + [TestMethod] + public void Test_420_19() + { + } + + [TestMethod] + public void Test_420_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_421 + { + #region PassingTests + [TestMethod] + public void Test_421_01() + { + } + + [TestMethod] + public void Test_421_02() + { + } + + [TestMethod] + public void Test_421_03() + { + } + + [TestMethod] + public void Test_421_04() + { + } + + [TestMethod] + public void Test_421_05() + { + } + + [TestMethod] + public void Test_421_06() + { + } + + [TestMethod] + public void Test_421_07() + { + } + + [TestMethod] + public void Test_421_08() + { + } + + [TestMethod] + public void Test_421_09() + { + } + + [TestMethod] + public void Test_421_10() + { + } + + [TestMethod] + public void Test_421_11() + { + } + + [TestMethod] + public void Test_421_12() + { + } + + [TestMethod] + public void Test_421_13() + { + } + + [TestMethod] + public void Test_421_14() + { + } + + [TestMethod] + public void Test_421_15() + { + } + + [TestMethod] + public void Test_421_16() + { + } + + [TestMethod] + public void Test_421_17() + { + } + + [TestMethod] + public void Test_421_18() + { + } + + [TestMethod] + public void Test_421_19() + { + } + + [TestMethod] + public void Test_421_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_422 + { + #region PassingTests + [TestMethod] + public void Test_422_01() + { + } + + [TestMethod] + public void Test_422_02() + { + } + + [TestMethod] + public void Test_422_03() + { + } + + [TestMethod] + public void Test_422_04() + { + } + + [TestMethod] + public void Test_422_05() + { + } + + [TestMethod] + public void Test_422_06() + { + } + + [TestMethod] + public void Test_422_07() + { + } + + [TestMethod] + public void Test_422_08() + { + } + + [TestMethod] + public void Test_422_09() + { + } + + [TestMethod] + public void Test_422_10() + { + } + + [TestMethod] + public void Test_422_11() + { + } + + [TestMethod] + public void Test_422_12() + { + } + + [TestMethod] + public void Test_422_13() + { + } + + [TestMethod] + public void Test_422_14() + { + } + + [TestMethod] + public void Test_422_15() + { + } + + [TestMethod] + public void Test_422_16() + { + } + + [TestMethod] + public void Test_422_17() + { + } + + [TestMethod] + public void Test_422_18() + { + } + + [TestMethod] + public void Test_422_19() + { + } + + [TestMethod] + public void Test_422_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_423 + { + #region PassingTests + [TestMethod] + public void Test_423_01() + { + } + + [TestMethod] + public void Test_423_02() + { + } + + [TestMethod] + public void Test_423_03() + { + } + + [TestMethod] + public void Test_423_04() + { + } + + [TestMethod] + public void Test_423_05() + { + } + + [TestMethod] + public void Test_423_06() + { + } + + [TestMethod] + public void Test_423_07() + { + } + + [TestMethod] + public void Test_423_08() + { + } + + [TestMethod] + public void Test_423_09() + { + } + + [TestMethod] + public void Test_423_10() + { + } + + [TestMethod] + public void Test_423_11() + { + } + + [TestMethod] + public void Test_423_12() + { + } + + [TestMethod] + public void Test_423_13() + { + } + + [TestMethod] + public void Test_423_14() + { + } + + [TestMethod] + public void Test_423_15() + { + } + + [TestMethod] + public void Test_423_16() + { + } + + [TestMethod] + public void Test_423_17() + { + } + + [TestMethod] + public void Test_423_18() + { + } + + [TestMethod] + public void Test_423_19() + { + } + + [TestMethod] + public void Test_423_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_424 + { + #region PassingTests + [TestMethod] + public void Test_424_01() + { + } + + [TestMethod] + public void Test_424_02() + { + } + + [TestMethod] + public void Test_424_03() + { + } + + [TestMethod] + public void Test_424_04() + { + } + + [TestMethod] + public void Test_424_05() + { + } + + [TestMethod] + public void Test_424_06() + { + } + + [TestMethod] + public void Test_424_07() + { + } + + [TestMethod] + public void Test_424_08() + { + } + + [TestMethod] + public void Test_424_09() + { + } + + [TestMethod] + public void Test_424_10() + { + } + + [TestMethod] + public void Test_424_11() + { + } + + [TestMethod] + public void Test_424_12() + { + } + + [TestMethod] + public void Test_424_13() + { + } + + [TestMethod] + public void Test_424_14() + { + } + + [TestMethod] + public void Test_424_15() + { + } + + [TestMethod] + public void Test_424_16() + { + } + + [TestMethod] + public void Test_424_17() + { + } + + [TestMethod] + public void Test_424_18() + { + } + + [TestMethod] + public void Test_424_19() + { + } + + [TestMethod] + public void Test_424_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_425 + { + #region PassingTests + [TestMethod] + public void Test_425_01() + { + } + + [TestMethod] + public void Test_425_02() + { + } + + [TestMethod] + public void Test_425_03() + { + } + + [TestMethod] + public void Test_425_04() + { + } + + [TestMethod] + public void Test_425_05() + { + } + + [TestMethod] + public void Test_425_06() + { + } + + [TestMethod] + public void Test_425_07() + { + } + + [TestMethod] + public void Test_425_08() + { + } + + [TestMethod] + public void Test_425_09() + { + } + + [TestMethod] + public void Test_425_10() + { + } + + [TestMethod] + public void Test_425_11() + { + } + + [TestMethod] + public void Test_425_12() + { + } + + [TestMethod] + public void Test_425_13() + { + } + + [TestMethod] + public void Test_425_14() + { + } + + [TestMethod] + public void Test_425_15() + { + } + + [TestMethod] + public void Test_425_16() + { + } + + [TestMethod] + public void Test_425_17() + { + } + + [TestMethod] + public void Test_425_18() + { + } + + [TestMethod] + public void Test_425_19() + { + } + + [TestMethod] + public void Test_425_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_426 + { + #region PassingTests + [TestMethod] + public void Test_426_01() + { + } + + [TestMethod] + public void Test_426_02() + { + } + + [TestMethod] + public void Test_426_03() + { + } + + [TestMethod] + public void Test_426_04() + { + } + + [TestMethod] + public void Test_426_05() + { + } + + [TestMethod] + public void Test_426_06() + { + } + + [TestMethod] + public void Test_426_07() + { + } + + [TestMethod] + public void Test_426_08() + { + } + + [TestMethod] + public void Test_426_09() + { + } + + [TestMethod] + public void Test_426_10() + { + } + + [TestMethod] + public void Test_426_11() + { + } + + [TestMethod] + public void Test_426_12() + { + } + + [TestMethod] + public void Test_426_13() + { + } + + [TestMethod] + public void Test_426_14() + { + } + + [TestMethod] + public void Test_426_15() + { + } + + [TestMethod] + public void Test_426_16() + { + } + + [TestMethod] + public void Test_426_17() + { + } + + [TestMethod] + public void Test_426_18() + { + } + + [TestMethod] + public void Test_426_19() + { + } + + [TestMethod] + public void Test_426_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_427 + { + #region PassingTests + [TestMethod] + public void Test_427_01() + { + } + + [TestMethod] + public void Test_427_02() + { + } + + [TestMethod] + public void Test_427_03() + { + } + + [TestMethod] + public void Test_427_04() + { + } + + [TestMethod] + public void Test_427_05() + { + } + + [TestMethod] + public void Test_427_06() + { + } + + [TestMethod] + public void Test_427_07() + { + } + + [TestMethod] + public void Test_427_08() + { + } + + [TestMethod] + public void Test_427_09() + { + } + + [TestMethod] + public void Test_427_10() + { + } + + [TestMethod] + public void Test_427_11() + { + } + + [TestMethod] + public void Test_427_12() + { + } + + [TestMethod] + public void Test_427_13() + { + } + + [TestMethod] + public void Test_427_14() + { + } + + [TestMethod] + public void Test_427_15() + { + } + + [TestMethod] + public void Test_427_16() + { + } + + [TestMethod] + public void Test_427_17() + { + } + + [TestMethod] + public void Test_427_18() + { + } + + [TestMethod] + public void Test_427_19() + { + } + + [TestMethod] + public void Test_427_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_428 + { + #region PassingTests + [TestMethod] + public void Test_428_01() + { + } + + [TestMethod] + public void Test_428_02() + { + } + + [TestMethod] + public void Test_428_03() + { + } + + [TestMethod] + public void Test_428_04() + { + } + + [TestMethod] + public void Test_428_05() + { + } + + [TestMethod] + public void Test_428_06() + { + } + + [TestMethod] + public void Test_428_07() + { + } + + [TestMethod] + public void Test_428_08() + { + } + + [TestMethod] + public void Test_428_09() + { + } + + [TestMethod] + public void Test_428_10() + { + } + + [TestMethod] + public void Test_428_11() + { + } + + [TestMethod] + public void Test_428_12() + { + } + + [TestMethod] + public void Test_428_13() + { + } + + [TestMethod] + public void Test_428_14() + { + } + + [TestMethod] + public void Test_428_15() + { + } + + [TestMethod] + public void Test_428_16() + { + } + + [TestMethod] + public void Test_428_17() + { + } + + [TestMethod] + public void Test_428_18() + { + } + + [TestMethod] + public void Test_428_19() + { + } + + [TestMethod] + public void Test_428_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_429 + { + #region PassingTests + [TestMethod] + public void Test_429_01() + { + } + + [TestMethod] + public void Test_429_02() + { + } + + [TestMethod] + public void Test_429_03() + { + } + + [TestMethod] + public void Test_429_04() + { + } + + [TestMethod] + public void Test_429_05() + { + } + + [TestMethod] + public void Test_429_06() + { + } + + [TestMethod] + public void Test_429_07() + { + } + + [TestMethod] + public void Test_429_08() + { + } + + [TestMethod] + public void Test_429_09() + { + } + + [TestMethod] + public void Test_429_10() + { + } + + [TestMethod] + public void Test_429_11() + { + } + + [TestMethod] + public void Test_429_12() + { + } + + [TestMethod] + public void Test_429_13() + { + } + + [TestMethod] + public void Test_429_14() + { + } + + [TestMethod] + public void Test_429_15() + { + } + + [TestMethod] + public void Test_429_16() + { + } + + [TestMethod] + public void Test_429_17() + { + } + + [TestMethod] + public void Test_429_18() + { + } + + [TestMethod] + public void Test_429_19() + { + } + + [TestMethod] + public void Test_429_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_430 + { + #region PassingTests + [TestMethod] + public void Test_430_01() + { + } + + [TestMethod] + public void Test_430_02() + { + } + + [TestMethod] + public void Test_430_03() + { + } + + [TestMethod] + public void Test_430_04() + { + } + + [TestMethod] + public void Test_430_05() + { + } + + [TestMethod] + public void Test_430_06() + { + } + + [TestMethod] + public void Test_430_07() + { + } + + [TestMethod] + public void Test_430_08() + { + } + + [TestMethod] + public void Test_430_09() + { + } + + [TestMethod] + public void Test_430_10() + { + } + + [TestMethod] + public void Test_430_11() + { + } + + [TestMethod] + public void Test_430_12() + { + } + + [TestMethod] + public void Test_430_13() + { + } + + [TestMethod] + public void Test_430_14() + { + } + + [TestMethod] + public void Test_430_15() + { + } + + [TestMethod] + public void Test_430_16() + { + } + + [TestMethod] + public void Test_430_17() + { + } + + [TestMethod] + public void Test_430_18() + { + } + + [TestMethod] + public void Test_430_19() + { + } + + [TestMethod] + public void Test_430_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_431 + { + #region PassingTests + [TestMethod] + public void Test_431_01() + { + } + + [TestMethod] + public void Test_431_02() + { + } + + [TestMethod] + public void Test_431_03() + { + } + + [TestMethod] + public void Test_431_04() + { + } + + [TestMethod] + public void Test_431_05() + { + } + + [TestMethod] + public void Test_431_06() + { + } + + [TestMethod] + public void Test_431_07() + { + } + + [TestMethod] + public void Test_431_08() + { + } + + [TestMethod] + public void Test_431_09() + { + } + + [TestMethod] + public void Test_431_10() + { + } + + [TestMethod] + public void Test_431_11() + { + } + + [TestMethod] + public void Test_431_12() + { + } + + [TestMethod] + public void Test_431_13() + { + } + + [TestMethod] + public void Test_431_14() + { + } + + [TestMethod] + public void Test_431_15() + { + } + + [TestMethod] + public void Test_431_16() + { + } + + [TestMethod] + public void Test_431_17() + { + } + + [TestMethod] + public void Test_431_18() + { + } + + [TestMethod] + public void Test_431_19() + { + } + + [TestMethod] + public void Test_431_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_432 + { + #region PassingTests + [TestMethod] + public void Test_432_01() + { + } + + [TestMethod] + public void Test_432_02() + { + } + + [TestMethod] + public void Test_432_03() + { + } + + [TestMethod] + public void Test_432_04() + { + } + + [TestMethod] + public void Test_432_05() + { + } + + [TestMethod] + public void Test_432_06() + { + } + + [TestMethod] + public void Test_432_07() + { + } + + [TestMethod] + public void Test_432_08() + { + } + + [TestMethod] + public void Test_432_09() + { + } + + [TestMethod] + public void Test_432_10() + { + } + + [TestMethod] + public void Test_432_11() + { + } + + [TestMethod] + public void Test_432_12() + { + } + + [TestMethod] + public void Test_432_13() + { + } + + [TestMethod] + public void Test_432_14() + { + } + + [TestMethod] + public void Test_432_15() + { + } + + [TestMethod] + public void Test_432_16() + { + } + + [TestMethod] + public void Test_432_17() + { + } + + [TestMethod] + public void Test_432_18() + { + } + + [TestMethod] + public void Test_432_19() + { + } + + [TestMethod] + public void Test_432_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_433 + { + #region PassingTests + [TestMethod] + public void Test_433_01() + { + } + + [TestMethod] + public void Test_433_02() + { + } + + [TestMethod] + public void Test_433_03() + { + } + + [TestMethod] + public void Test_433_04() + { + } + + [TestMethod] + public void Test_433_05() + { + } + + [TestMethod] + public void Test_433_06() + { + } + + [TestMethod] + public void Test_433_07() + { + } + + [TestMethod] + public void Test_433_08() + { + } + + [TestMethod] + public void Test_433_09() + { + } + + [TestMethod] + public void Test_433_10() + { + } + + [TestMethod] + public void Test_433_11() + { + } + + [TestMethod] + public void Test_433_12() + { + } + + [TestMethod] + public void Test_433_13() + { + } + + [TestMethod] + public void Test_433_14() + { + } + + [TestMethod] + public void Test_433_15() + { + } + + [TestMethod] + public void Test_433_16() + { + } + + [TestMethod] + public void Test_433_17() + { + } + + [TestMethod] + public void Test_433_18() + { + } + + [TestMethod] + public void Test_433_19() + { + } + + [TestMethod] + public void Test_433_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_434 + { + #region PassingTests + [TestMethod] + public void Test_434_01() + { + } + + [TestMethod] + public void Test_434_02() + { + } + + [TestMethod] + public void Test_434_03() + { + } + + [TestMethod] + public void Test_434_04() + { + } + + [TestMethod] + public void Test_434_05() + { + } + + [TestMethod] + public void Test_434_06() + { + } + + [TestMethod] + public void Test_434_07() + { + } + + [TestMethod] + public void Test_434_08() + { + } + + [TestMethod] + public void Test_434_09() + { + } + + [TestMethod] + public void Test_434_10() + { + } + + [TestMethod] + public void Test_434_11() + { + } + + [TestMethod] + public void Test_434_12() + { + } + + [TestMethod] + public void Test_434_13() + { + } + + [TestMethod] + public void Test_434_14() + { + } + + [TestMethod] + public void Test_434_15() + { + } + + [TestMethod] + public void Test_434_16() + { + } + + [TestMethod] + public void Test_434_17() + { + } + + [TestMethod] + public void Test_434_18() + { + } + + [TestMethod] + public void Test_434_19() + { + } + + [TestMethod] + public void Test_434_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_435 + { + #region PassingTests + [TestMethod] + public void Test_435_01() + { + } + + [TestMethod] + public void Test_435_02() + { + } + + [TestMethod] + public void Test_435_03() + { + } + + [TestMethod] + public void Test_435_04() + { + } + + [TestMethod] + public void Test_435_05() + { + } + + [TestMethod] + public void Test_435_06() + { + } + + [TestMethod] + public void Test_435_07() + { + } + + [TestMethod] + public void Test_435_08() + { + } + + [TestMethod] + public void Test_435_09() + { + } + + [TestMethod] + public void Test_435_10() + { + } + + [TestMethod] + public void Test_435_11() + { + } + + [TestMethod] + public void Test_435_12() + { + } + + [TestMethod] + public void Test_435_13() + { + } + + [TestMethod] + public void Test_435_14() + { + } + + [TestMethod] + public void Test_435_15() + { + } + + [TestMethod] + public void Test_435_16() + { + } + + [TestMethod] + public void Test_435_17() + { + } + + [TestMethod] + public void Test_435_18() + { + } + + [TestMethod] + public void Test_435_19() + { + } + + [TestMethod] + public void Test_435_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_436 + { + #region PassingTests + [TestMethod] + public void Test_436_01() + { + } + + [TestMethod] + public void Test_436_02() + { + } + + [TestMethod] + public void Test_436_03() + { + } + + [TestMethod] + public void Test_436_04() + { + } + + [TestMethod] + public void Test_436_05() + { + } + + [TestMethod] + public void Test_436_06() + { + } + + [TestMethod] + public void Test_436_07() + { + } + + [TestMethod] + public void Test_436_08() + { + } + + [TestMethod] + public void Test_436_09() + { + } + + [TestMethod] + public void Test_436_10() + { + } + + [TestMethod] + public void Test_436_11() + { + } + + [TestMethod] + public void Test_436_12() + { + } + + [TestMethod] + public void Test_436_13() + { + } + + [TestMethod] + public void Test_436_14() + { + } + + [TestMethod] + public void Test_436_15() + { + } + + [TestMethod] + public void Test_436_16() + { + } + + [TestMethod] + public void Test_436_17() + { + } + + [TestMethod] + public void Test_436_18() + { + } + + [TestMethod] + public void Test_436_19() + { + } + + [TestMethod] + public void Test_436_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_437 + { + #region PassingTests + [TestMethod] + public void Test_437_01() + { + } + + [TestMethod] + public void Test_437_02() + { + } + + [TestMethod] + public void Test_437_03() + { + } + + [TestMethod] + public void Test_437_04() + { + } + + [TestMethod] + public void Test_437_05() + { + } + + [TestMethod] + public void Test_437_06() + { + } + + [TestMethod] + public void Test_437_07() + { + } + + [TestMethod] + public void Test_437_08() + { + } + + [TestMethod] + public void Test_437_09() + { + } + + [TestMethod] + public void Test_437_10() + { + } + + [TestMethod] + public void Test_437_11() + { + } + + [TestMethod] + public void Test_437_12() + { + } + + [TestMethod] + public void Test_437_13() + { + } + + [TestMethod] + public void Test_437_14() + { + } + + [TestMethod] + public void Test_437_15() + { + } + + [TestMethod] + public void Test_437_16() + { + } + + [TestMethod] + public void Test_437_17() + { + } + + [TestMethod] + public void Test_437_18() + { + } + + [TestMethod] + public void Test_437_19() + { + } + + [TestMethod] + public void Test_437_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_438 + { + #region PassingTests + [TestMethod] + public void Test_438_01() + { + } + + [TestMethod] + public void Test_438_02() + { + } + + [TestMethod] + public void Test_438_03() + { + } + + [TestMethod] + public void Test_438_04() + { + } + + [TestMethod] + public void Test_438_05() + { + } + + [TestMethod] + public void Test_438_06() + { + } + + [TestMethod] + public void Test_438_07() + { + } + + [TestMethod] + public void Test_438_08() + { + } + + [TestMethod] + public void Test_438_09() + { + } + + [TestMethod] + public void Test_438_10() + { + } + + [TestMethod] + public void Test_438_11() + { + } + + [TestMethod] + public void Test_438_12() + { + } + + [TestMethod] + public void Test_438_13() + { + } + + [TestMethod] + public void Test_438_14() + { + } + + [TestMethod] + public void Test_438_15() + { + } + + [TestMethod] + public void Test_438_16() + { + } + + [TestMethod] + public void Test_438_17() + { + } + + [TestMethod] + public void Test_438_18() + { + } + + [TestMethod] + public void Test_438_19() + { + } + + [TestMethod] + public void Test_438_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_439 + { + #region PassingTests + [TestMethod] + public void Test_439_01() + { + } + + [TestMethod] + public void Test_439_02() + { + } + + [TestMethod] + public void Test_439_03() + { + } + + [TestMethod] + public void Test_439_04() + { + } + + [TestMethod] + public void Test_439_05() + { + } + + [TestMethod] + public void Test_439_06() + { + } + + [TestMethod] + public void Test_439_07() + { + } + + [TestMethod] + public void Test_439_08() + { + } + + [TestMethod] + public void Test_439_09() + { + } + + [TestMethod] + public void Test_439_10() + { + } + + [TestMethod] + public void Test_439_11() + { + } + + [TestMethod] + public void Test_439_12() + { + } + + [TestMethod] + public void Test_439_13() + { + } + + [TestMethod] + public void Test_439_14() + { + } + + [TestMethod] + public void Test_439_15() + { + } + + [TestMethod] + public void Test_439_16() + { + } + + [TestMethod] + public void Test_439_17() + { + } + + [TestMethod] + public void Test_439_18() + { + } + + [TestMethod] + public void Test_439_19() + { + } + + [TestMethod] + public void Test_439_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_440 + { + #region PassingTests + [TestMethod] + public void Test_440_01() + { + } + + [TestMethod] + public void Test_440_02() + { + } + + [TestMethod] + public void Test_440_03() + { + } + + [TestMethod] + public void Test_440_04() + { + } + + [TestMethod] + public void Test_440_05() + { + } + + [TestMethod] + public void Test_440_06() + { + } + + [TestMethod] + public void Test_440_07() + { + } + + [TestMethod] + public void Test_440_08() + { + } + + [TestMethod] + public void Test_440_09() + { + } + + [TestMethod] + public void Test_440_10() + { + } + + [TestMethod] + public void Test_440_11() + { + } + + [TestMethod] + public void Test_440_12() + { + } + + [TestMethod] + public void Test_440_13() + { + } + + [TestMethod] + public void Test_440_14() + { + } + + [TestMethod] + public void Test_440_15() + { + } + + [TestMethod] + public void Test_440_16() + { + } + + [TestMethod] + public void Test_440_17() + { + } + + [TestMethod] + public void Test_440_18() + { + } + + [TestMethod] + public void Test_440_19() + { + } + + [TestMethod] + public void Test_440_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_441 + { + #region PassingTests + [TestMethod] + public void Test_441_01() + { + } + + [TestMethod] + public void Test_441_02() + { + } + + [TestMethod] + public void Test_441_03() + { + } + + [TestMethod] + public void Test_441_04() + { + } + + [TestMethod] + public void Test_441_05() + { + } + + [TestMethod] + public void Test_441_06() + { + } + + [TestMethod] + public void Test_441_07() + { + } + + [TestMethod] + public void Test_441_08() + { + } + + [TestMethod] + public void Test_441_09() + { + } + + [TestMethod] + public void Test_441_10() + { + } + + [TestMethod] + public void Test_441_11() + { + } + + [TestMethod] + public void Test_441_12() + { + } + + [TestMethod] + public void Test_441_13() + { + } + + [TestMethod] + public void Test_441_14() + { + } + + [TestMethod] + public void Test_441_15() + { + } + + [TestMethod] + public void Test_441_16() + { + } + + [TestMethod] + public void Test_441_17() + { + } + + [TestMethod] + public void Test_441_18() + { + } + + [TestMethod] + public void Test_441_19() + { + } + + [TestMethod] + public void Test_441_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_442 + { + #region PassingTests + [TestMethod] + public void Test_442_01() + { + } + + [TestMethod] + public void Test_442_02() + { + } + + [TestMethod] + public void Test_442_03() + { + } + + [TestMethod] + public void Test_442_04() + { + } + + [TestMethod] + public void Test_442_05() + { + } + + [TestMethod] + public void Test_442_06() + { + } + + [TestMethod] + public void Test_442_07() + { + } + + [TestMethod] + public void Test_442_08() + { + } + + [TestMethod] + public void Test_442_09() + { + } + + [TestMethod] + public void Test_442_10() + { + } + + [TestMethod] + public void Test_442_11() + { + } + + [TestMethod] + public void Test_442_12() + { + } + + [TestMethod] + public void Test_442_13() + { + } + + [TestMethod] + public void Test_442_14() + { + } + + [TestMethod] + public void Test_442_15() + { + } + + [TestMethod] + public void Test_442_16() + { + } + + [TestMethod] + public void Test_442_17() + { + } + + [TestMethod] + public void Test_442_18() + { + } + + [TestMethod] + public void Test_442_19() + { + } + + [TestMethod] + public void Test_442_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_443 + { + #region PassingTests + [TestMethod] + public void Test_443_01() + { + } + + [TestMethod] + public void Test_443_02() + { + } + + [TestMethod] + public void Test_443_03() + { + } + + [TestMethod] + public void Test_443_04() + { + } + + [TestMethod] + public void Test_443_05() + { + } + + [TestMethod] + public void Test_443_06() + { + } + + [TestMethod] + public void Test_443_07() + { + } + + [TestMethod] + public void Test_443_08() + { + } + + [TestMethod] + public void Test_443_09() + { + } + + [TestMethod] + public void Test_443_10() + { + } + + [TestMethod] + public void Test_443_11() + { + } + + [TestMethod] + public void Test_443_12() + { + } + + [TestMethod] + public void Test_443_13() + { + } + + [TestMethod] + public void Test_443_14() + { + } + + [TestMethod] + public void Test_443_15() + { + } + + [TestMethod] + public void Test_443_16() + { + } + + [TestMethod] + public void Test_443_17() + { + } + + [TestMethod] + public void Test_443_18() + { + } + + [TestMethod] + public void Test_443_19() + { + } + + [TestMethod] + public void Test_443_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_444 + { + #region PassingTests + [TestMethod] + public void Test_444_01() + { + } + + [TestMethod] + public void Test_444_02() + { + } + + [TestMethod] + public void Test_444_03() + { + } + + [TestMethod] + public void Test_444_04() + { + } + + [TestMethod] + public void Test_444_05() + { + } + + [TestMethod] + public void Test_444_06() + { + } + + [TestMethod] + public void Test_444_07() + { + } + + [TestMethod] + public void Test_444_08() + { + } + + [TestMethod] + public void Test_444_09() + { + } + + [TestMethod] + public void Test_444_10() + { + } + + [TestMethod] + public void Test_444_11() + { + } + + [TestMethod] + public void Test_444_12() + { + } + + [TestMethod] + public void Test_444_13() + { + } + + [TestMethod] + public void Test_444_14() + { + } + + [TestMethod] + public void Test_444_15() + { + } + + [TestMethod] + public void Test_444_16() + { + } + + [TestMethod] + public void Test_444_17() + { + } + + [TestMethod] + public void Test_444_18() + { + } + + [TestMethod] + public void Test_444_19() + { + } + + [TestMethod] + public void Test_444_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_445 + { + #region PassingTests + [TestMethod] + public void Test_445_01() + { + } + + [TestMethod] + public void Test_445_02() + { + } + + [TestMethod] + public void Test_445_03() + { + } + + [TestMethod] + public void Test_445_04() + { + } + + [TestMethod] + public void Test_445_05() + { + } + + [TestMethod] + public void Test_445_06() + { + } + + [TestMethod] + public void Test_445_07() + { + } + + [TestMethod] + public void Test_445_08() + { + } + + [TestMethod] + public void Test_445_09() + { + } + + [TestMethod] + public void Test_445_10() + { + } + + [TestMethod] + public void Test_445_11() + { + } + + [TestMethod] + public void Test_445_12() + { + } + + [TestMethod] + public void Test_445_13() + { + } + + [TestMethod] + public void Test_445_14() + { + } + + [TestMethod] + public void Test_445_15() + { + } + + [TestMethod] + public void Test_445_16() + { + } + + [TestMethod] + public void Test_445_17() + { + } + + [TestMethod] + public void Test_445_18() + { + } + + [TestMethod] + public void Test_445_19() + { + } + + [TestMethod] + public void Test_445_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_446 + { + #region PassingTests + [TestMethod] + public void Test_446_01() + { + } + + [TestMethod] + public void Test_446_02() + { + } + + [TestMethod] + public void Test_446_03() + { + } + + [TestMethod] + public void Test_446_04() + { + } + + [TestMethod] + public void Test_446_05() + { + } + + [TestMethod] + public void Test_446_06() + { + } + + [TestMethod] + public void Test_446_07() + { + } + + [TestMethod] + public void Test_446_08() + { + } + + [TestMethod] + public void Test_446_09() + { + } + + [TestMethod] + public void Test_446_10() + { + } + + [TestMethod] + public void Test_446_11() + { + } + + [TestMethod] + public void Test_446_12() + { + } + + [TestMethod] + public void Test_446_13() + { + } + + [TestMethod] + public void Test_446_14() + { + } + + [TestMethod] + public void Test_446_15() + { + } + + [TestMethod] + public void Test_446_16() + { + } + + [TestMethod] + public void Test_446_17() + { + } + + [TestMethod] + public void Test_446_18() + { + } + + [TestMethod] + public void Test_446_19() + { + } + + [TestMethod] + public void Test_446_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_447 + { + #region PassingTests + [TestMethod] + public void Test_447_01() + { + } + + [TestMethod] + public void Test_447_02() + { + } + + [TestMethod] + public void Test_447_03() + { + } + + [TestMethod] + public void Test_447_04() + { + } + + [TestMethod] + public void Test_447_05() + { + } + + [TestMethod] + public void Test_447_06() + { + } + + [TestMethod] + public void Test_447_07() + { + } + + [TestMethod] + public void Test_447_08() + { + } + + [TestMethod] + public void Test_447_09() + { + } + + [TestMethod] + public void Test_447_10() + { + } + + [TestMethod] + public void Test_447_11() + { + } + + [TestMethod] + public void Test_447_12() + { + } + + [TestMethod] + public void Test_447_13() + { + } + + [TestMethod] + public void Test_447_14() + { + } + + [TestMethod] + public void Test_447_15() + { + } + + [TestMethod] + public void Test_447_16() + { + } + + [TestMethod] + public void Test_447_17() + { + } + + [TestMethod] + public void Test_447_18() + { + } + + [TestMethod] + public void Test_447_19() + { + } + + [TestMethod] + public void Test_447_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_448 + { + #region PassingTests + [TestMethod] + public void Test_448_01() + { + } + + [TestMethod] + public void Test_448_02() + { + } + + [TestMethod] + public void Test_448_03() + { + } + + [TestMethod] + public void Test_448_04() + { + } + + [TestMethod] + public void Test_448_05() + { + } + + [TestMethod] + public void Test_448_06() + { + } + + [TestMethod] + public void Test_448_07() + { + } + + [TestMethod] + public void Test_448_08() + { + } + + [TestMethod] + public void Test_448_09() + { + } + + [TestMethod] + public void Test_448_10() + { + } + + [TestMethod] + public void Test_448_11() + { + } + + [TestMethod] + public void Test_448_12() + { + } + + [TestMethod] + public void Test_448_13() + { + } + + [TestMethod] + public void Test_448_14() + { + } + + [TestMethod] + public void Test_448_15() + { + } + + [TestMethod] + public void Test_448_16() + { + } + + [TestMethod] + public void Test_448_17() + { + } + + [TestMethod] + public void Test_448_18() + { + } + + [TestMethod] + public void Test_448_19() + { + } + + [TestMethod] + public void Test_448_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_449 + { + #region PassingTests + [TestMethod] + public void Test_449_01() + { + } + + [TestMethod] + public void Test_449_02() + { + } + + [TestMethod] + public void Test_449_03() + { + } + + [TestMethod] + public void Test_449_04() + { + } + + [TestMethod] + public void Test_449_05() + { + } + + [TestMethod] + public void Test_449_06() + { + } + + [TestMethod] + public void Test_449_07() + { + } + + [TestMethod] + public void Test_449_08() + { + } + + [TestMethod] + public void Test_449_09() + { + } + + [TestMethod] + public void Test_449_10() + { + } + + [TestMethod] + public void Test_449_11() + { + } + + [TestMethod] + public void Test_449_12() + { + } + + [TestMethod] + public void Test_449_13() + { + } + + [TestMethod] + public void Test_449_14() + { + } + + [TestMethod] + public void Test_449_15() + { + } + + [TestMethod] + public void Test_449_16() + { + } + + [TestMethod] + public void Test_449_17() + { + } + + [TestMethod] + public void Test_449_18() + { + } + + [TestMethod] + public void Test_449_19() + { + } + + [TestMethod] + public void Test_449_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_450 + { + #region PassingTests + [TestMethod] + public void Test_450_01() + { + } + + [TestMethod] + public void Test_450_02() + { + } + + [TestMethod] + public void Test_450_03() + { + } + + [TestMethod] + public void Test_450_04() + { + } + + [TestMethod] + public void Test_450_05() + { + } + + [TestMethod] + public void Test_450_06() + { + } + + [TestMethod] + public void Test_450_07() + { + } + + [TestMethod] + public void Test_450_08() + { + } + + [TestMethod] + public void Test_450_09() + { + } + + [TestMethod] + public void Test_450_10() + { + } + + [TestMethod] + public void Test_450_11() + { + } + + [TestMethod] + public void Test_450_12() + { + } + + [TestMethod] + public void Test_450_13() + { + } + + [TestMethod] + public void Test_450_14() + { + } + + [TestMethod] + public void Test_450_15() + { + } + + [TestMethod] + public void Test_450_16() + { + } + + [TestMethod] + public void Test_450_17() + { + } + + [TestMethod] + public void Test_450_18() + { + } + + [TestMethod] + public void Test_450_19() + { + } + + [TestMethod] + public void Test_450_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_451 + { + #region PassingTests + [TestMethod] + public void Test_451_01() + { + } + + [TestMethod] + public void Test_451_02() + { + } + + [TestMethod] + public void Test_451_03() + { + } + + [TestMethod] + public void Test_451_04() + { + } + + [TestMethod] + public void Test_451_05() + { + } + + [TestMethod] + public void Test_451_06() + { + } + + [TestMethod] + public void Test_451_07() + { + } + + [TestMethod] + public void Test_451_08() + { + } + + [TestMethod] + public void Test_451_09() + { + } + + [TestMethod] + public void Test_451_10() + { + } + + [TestMethod] + public void Test_451_11() + { + } + + [TestMethod] + public void Test_451_12() + { + } + + [TestMethod] + public void Test_451_13() + { + } + + [TestMethod] + public void Test_451_14() + { + } + + [TestMethod] + public void Test_451_15() + { + } + + [TestMethod] + public void Test_451_16() + { + } + + [TestMethod] + public void Test_451_17() + { + } + + [TestMethod] + public void Test_451_18() + { + } + + [TestMethod] + public void Test_451_19() + { + } + + [TestMethod] + public void Test_451_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_452 + { + #region PassingTests + [TestMethod] + public void Test_452_01() + { + } + + [TestMethod] + public void Test_452_02() + { + } + + [TestMethod] + public void Test_452_03() + { + } + + [TestMethod] + public void Test_452_04() + { + } + + [TestMethod] + public void Test_452_05() + { + } + + [TestMethod] + public void Test_452_06() + { + } + + [TestMethod] + public void Test_452_07() + { + } + + [TestMethod] + public void Test_452_08() + { + } + + [TestMethod] + public void Test_452_09() + { + } + + [TestMethod] + public void Test_452_10() + { + } + + [TestMethod] + public void Test_452_11() + { + } + + [TestMethod] + public void Test_452_12() + { + } + + [TestMethod] + public void Test_452_13() + { + } + + [TestMethod] + public void Test_452_14() + { + } + + [TestMethod] + public void Test_452_15() + { + } + + [TestMethod] + public void Test_452_16() + { + } + + [TestMethod] + public void Test_452_17() + { + } + + [TestMethod] + public void Test_452_18() + { + } + + [TestMethod] + public void Test_452_19() + { + } + + [TestMethod] + public void Test_452_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_453 + { + #region PassingTests + [TestMethod] + public void Test_453_01() + { + } + + [TestMethod] + public void Test_453_02() + { + } + + [TestMethod] + public void Test_453_03() + { + } + + [TestMethod] + public void Test_453_04() + { + } + + [TestMethod] + public void Test_453_05() + { + } + + [TestMethod] + public void Test_453_06() + { + } + + [TestMethod] + public void Test_453_07() + { + } + + [TestMethod] + public void Test_453_08() + { + } + + [TestMethod] + public void Test_453_09() + { + } + + [TestMethod] + public void Test_453_10() + { + } + + [TestMethod] + public void Test_453_11() + { + } + + [TestMethod] + public void Test_453_12() + { + } + + [TestMethod] + public void Test_453_13() + { + } + + [TestMethod] + public void Test_453_14() + { + } + + [TestMethod] + public void Test_453_15() + { + } + + [TestMethod] + public void Test_453_16() + { + } + + [TestMethod] + public void Test_453_17() + { + } + + [TestMethod] + public void Test_453_18() + { + } + + [TestMethod] + public void Test_453_19() + { + } + + [TestMethod] + public void Test_453_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_454 + { + #region PassingTests + [TestMethod] + public void Test_454_01() + { + } + + [TestMethod] + public void Test_454_02() + { + } + + [TestMethod] + public void Test_454_03() + { + } + + [TestMethod] + public void Test_454_04() + { + } + + [TestMethod] + public void Test_454_05() + { + } + + [TestMethod] + public void Test_454_06() + { + } + + [TestMethod] + public void Test_454_07() + { + } + + [TestMethod] + public void Test_454_08() + { + } + + [TestMethod] + public void Test_454_09() + { + } + + [TestMethod] + public void Test_454_10() + { + } + + [TestMethod] + public void Test_454_11() + { + } + + [TestMethod] + public void Test_454_12() + { + } + + [TestMethod] + public void Test_454_13() + { + } + + [TestMethod] + public void Test_454_14() + { + } + + [TestMethod] + public void Test_454_15() + { + } + + [TestMethod] + public void Test_454_16() + { + } + + [TestMethod] + public void Test_454_17() + { + } + + [TestMethod] + public void Test_454_18() + { + } + + [TestMethod] + public void Test_454_19() + { + } + + [TestMethod] + public void Test_454_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_455 + { + #region PassingTests + [TestMethod] + public void Test_455_01() + { + } + + [TestMethod] + public void Test_455_02() + { + } + + [TestMethod] + public void Test_455_03() + { + } + + [TestMethod] + public void Test_455_04() + { + } + + [TestMethod] + public void Test_455_05() + { + } + + [TestMethod] + public void Test_455_06() + { + } + + [TestMethod] + public void Test_455_07() + { + } + + [TestMethod] + public void Test_455_08() + { + } + + [TestMethod] + public void Test_455_09() + { + } + + [TestMethod] + public void Test_455_10() + { + } + + [TestMethod] + public void Test_455_11() + { + } + + [TestMethod] + public void Test_455_12() + { + } + + [TestMethod] + public void Test_455_13() + { + } + + [TestMethod] + public void Test_455_14() + { + } + + [TestMethod] + public void Test_455_15() + { + } + + [TestMethod] + public void Test_455_16() + { + } + + [TestMethod] + public void Test_455_17() + { + } + + [TestMethod] + public void Test_455_18() + { + } + + [TestMethod] + public void Test_455_19() + { + } + + [TestMethod] + public void Test_455_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_456 + { + #region PassingTests + [TestMethod] + public void Test_456_01() + { + } + + [TestMethod] + public void Test_456_02() + { + } + + [TestMethod] + public void Test_456_03() + { + } + + [TestMethod] + public void Test_456_04() + { + } + + [TestMethod] + public void Test_456_05() + { + } + + [TestMethod] + public void Test_456_06() + { + } + + [TestMethod] + public void Test_456_07() + { + } + + [TestMethod] + public void Test_456_08() + { + } + + [TestMethod] + public void Test_456_09() + { + } + + [TestMethod] + public void Test_456_10() + { + } + + [TestMethod] + public void Test_456_11() + { + } + + [TestMethod] + public void Test_456_12() + { + } + + [TestMethod] + public void Test_456_13() + { + } + + [TestMethod] + public void Test_456_14() + { + } + + [TestMethod] + public void Test_456_15() + { + } + + [TestMethod] + public void Test_456_16() + { + } + + [TestMethod] + public void Test_456_17() + { + } + + [TestMethod] + public void Test_456_18() + { + } + + [TestMethod] + public void Test_456_19() + { + } + + [TestMethod] + public void Test_456_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_457 + { + #region PassingTests + [TestMethod] + public void Test_457_01() + { + } + + [TestMethod] + public void Test_457_02() + { + } + + [TestMethod] + public void Test_457_03() + { + } + + [TestMethod] + public void Test_457_04() + { + } + + [TestMethod] + public void Test_457_05() + { + } + + [TestMethod] + public void Test_457_06() + { + } + + [TestMethod] + public void Test_457_07() + { + } + + [TestMethod] + public void Test_457_08() + { + } + + [TestMethod] + public void Test_457_09() + { + } + + [TestMethod] + public void Test_457_10() + { + } + + [TestMethod] + public void Test_457_11() + { + } + + [TestMethod] + public void Test_457_12() + { + } + + [TestMethod] + public void Test_457_13() + { + } + + [TestMethod] + public void Test_457_14() + { + } + + [TestMethod] + public void Test_457_15() + { + } + + [TestMethod] + public void Test_457_16() + { + } + + [TestMethod] + public void Test_457_17() + { + } + + [TestMethod] + public void Test_457_18() + { + } + + [TestMethod] + public void Test_457_19() + { + } + + [TestMethod] + public void Test_457_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_458 + { + #region PassingTests + [TestMethod] + public void Test_458_01() + { + } + + [TestMethod] + public void Test_458_02() + { + } + + [TestMethod] + public void Test_458_03() + { + } + + [TestMethod] + public void Test_458_04() + { + } + + [TestMethod] + public void Test_458_05() + { + } + + [TestMethod] + public void Test_458_06() + { + } + + [TestMethod] + public void Test_458_07() + { + } + + [TestMethod] + public void Test_458_08() + { + } + + [TestMethod] + public void Test_458_09() + { + } + + [TestMethod] + public void Test_458_10() + { + } + + [TestMethod] + public void Test_458_11() + { + } + + [TestMethod] + public void Test_458_12() + { + } + + [TestMethod] + public void Test_458_13() + { + } + + [TestMethod] + public void Test_458_14() + { + } + + [TestMethod] + public void Test_458_15() + { + } + + [TestMethod] + public void Test_458_16() + { + } + + [TestMethod] + public void Test_458_17() + { + } + + [TestMethod] + public void Test_458_18() + { + } + + [TestMethod] + public void Test_458_19() + { + } + + [TestMethod] + public void Test_458_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_459 + { + #region PassingTests + [TestMethod] + public void Test_459_01() + { + } + + [TestMethod] + public void Test_459_02() + { + } + + [TestMethod] + public void Test_459_03() + { + } + + [TestMethod] + public void Test_459_04() + { + } + + [TestMethod] + public void Test_459_05() + { + } + + [TestMethod] + public void Test_459_06() + { + } + + [TestMethod] + public void Test_459_07() + { + } + + [TestMethod] + public void Test_459_08() + { + } + + [TestMethod] + public void Test_459_09() + { + } + + [TestMethod] + public void Test_459_10() + { + } + + [TestMethod] + public void Test_459_11() + { + } + + [TestMethod] + public void Test_459_12() + { + } + + [TestMethod] + public void Test_459_13() + { + } + + [TestMethod] + public void Test_459_14() + { + } + + [TestMethod] + public void Test_459_15() + { + } + + [TestMethod] + public void Test_459_16() + { + } + + [TestMethod] + public void Test_459_17() + { + } + + [TestMethod] + public void Test_459_18() + { + } + + [TestMethod] + public void Test_459_19() + { + } + + [TestMethod] + public void Test_459_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_460 + { + #region PassingTests + [TestMethod] + public void Test_460_01() + { + } + + [TestMethod] + public void Test_460_02() + { + } + + [TestMethod] + public void Test_460_03() + { + } + + [TestMethod] + public void Test_460_04() + { + } + + [TestMethod] + public void Test_460_05() + { + } + + [TestMethod] + public void Test_460_06() + { + } + + [TestMethod] + public void Test_460_07() + { + } + + [TestMethod] + public void Test_460_08() + { + } + + [TestMethod] + public void Test_460_09() + { + } + + [TestMethod] + public void Test_460_10() + { + } + + [TestMethod] + public void Test_460_11() + { + } + + [TestMethod] + public void Test_460_12() + { + } + + [TestMethod] + public void Test_460_13() + { + } + + [TestMethod] + public void Test_460_14() + { + } + + [TestMethod] + public void Test_460_15() + { + } + + [TestMethod] + public void Test_460_16() + { + } + + [TestMethod] + public void Test_460_17() + { + } + + [TestMethod] + public void Test_460_18() + { + } + + [TestMethod] + public void Test_460_19() + { + } + + [TestMethod] + public void Test_460_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_461 + { + #region PassingTests + [TestMethod] + public void Test_461_01() + { + } + + [TestMethod] + public void Test_461_02() + { + } + + [TestMethod] + public void Test_461_03() + { + } + + [TestMethod] + public void Test_461_04() + { + } + + [TestMethod] + public void Test_461_05() + { + } + + [TestMethod] + public void Test_461_06() + { + } + + [TestMethod] + public void Test_461_07() + { + } + + [TestMethod] + public void Test_461_08() + { + } + + [TestMethod] + public void Test_461_09() + { + } + + [TestMethod] + public void Test_461_10() + { + } + + [TestMethod] + public void Test_461_11() + { + } + + [TestMethod] + public void Test_461_12() + { + } + + [TestMethod] + public void Test_461_13() + { + } + + [TestMethod] + public void Test_461_14() + { + } + + [TestMethod] + public void Test_461_15() + { + } + + [TestMethod] + public void Test_461_16() + { + } + + [TestMethod] + public void Test_461_17() + { + } + + [TestMethod] + public void Test_461_18() + { + } + + [TestMethod] + public void Test_461_19() + { + } + + [TestMethod] + public void Test_461_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_462 + { + #region PassingTests + [TestMethod] + public void Test_462_01() + { + } + + [TestMethod] + public void Test_462_02() + { + } + + [TestMethod] + public void Test_462_03() + { + } + + [TestMethod] + public void Test_462_04() + { + } + + [TestMethod] + public void Test_462_05() + { + } + + [TestMethod] + public void Test_462_06() + { + } + + [TestMethod] + public void Test_462_07() + { + } + + [TestMethod] + public void Test_462_08() + { + } + + [TestMethod] + public void Test_462_09() + { + } + + [TestMethod] + public void Test_462_10() + { + } + + [TestMethod] + public void Test_462_11() + { + } + + [TestMethod] + public void Test_462_12() + { + } + + [TestMethod] + public void Test_462_13() + { + } + + [TestMethod] + public void Test_462_14() + { + } + + [TestMethod] + public void Test_462_15() + { + } + + [TestMethod] + public void Test_462_16() + { + } + + [TestMethod] + public void Test_462_17() + { + } + + [TestMethod] + public void Test_462_18() + { + } + + [TestMethod] + public void Test_462_19() + { + } + + [TestMethod] + public void Test_462_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_463 + { + #region PassingTests + [TestMethod] + public void Test_463_01() + { + } + + [TestMethod] + public void Test_463_02() + { + } + + [TestMethod] + public void Test_463_03() + { + } + + [TestMethod] + public void Test_463_04() + { + } + + [TestMethod] + public void Test_463_05() + { + } + + [TestMethod] + public void Test_463_06() + { + } + + [TestMethod] + public void Test_463_07() + { + } + + [TestMethod] + public void Test_463_08() + { + } + + [TestMethod] + public void Test_463_09() + { + } + + [TestMethod] + public void Test_463_10() + { + } + + [TestMethod] + public void Test_463_11() + { + } + + [TestMethod] + public void Test_463_12() + { + } + + [TestMethod] + public void Test_463_13() + { + } + + [TestMethod] + public void Test_463_14() + { + } + + [TestMethod] + public void Test_463_15() + { + } + + [TestMethod] + public void Test_463_16() + { + } + + [TestMethod] + public void Test_463_17() + { + } + + [TestMethod] + public void Test_463_18() + { + } + + [TestMethod] + public void Test_463_19() + { + } + + [TestMethod] + public void Test_463_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_464 + { + #region PassingTests + [TestMethod] + public void Test_464_01() + { + } + + [TestMethod] + public void Test_464_02() + { + } + + [TestMethod] + public void Test_464_03() + { + } + + [TestMethod] + public void Test_464_04() + { + } + + [TestMethod] + public void Test_464_05() + { + } + + [TestMethod] + public void Test_464_06() + { + } + + [TestMethod] + public void Test_464_07() + { + } + + [TestMethod] + public void Test_464_08() + { + } + + [TestMethod] + public void Test_464_09() + { + } + + [TestMethod] + public void Test_464_10() + { + } + + [TestMethod] + public void Test_464_11() + { + } + + [TestMethod] + public void Test_464_12() + { + } + + [TestMethod] + public void Test_464_13() + { + } + + [TestMethod] + public void Test_464_14() + { + } + + [TestMethod] + public void Test_464_15() + { + } + + [TestMethod] + public void Test_464_16() + { + } + + [TestMethod] + public void Test_464_17() + { + } + + [TestMethod] + public void Test_464_18() + { + } + + [TestMethod] + public void Test_464_19() + { + } + + [TestMethod] + public void Test_464_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_465 + { + #region PassingTests + [TestMethod] + public void Test_465_01() + { + } + + [TestMethod] + public void Test_465_02() + { + } + + [TestMethod] + public void Test_465_03() + { + } + + [TestMethod] + public void Test_465_04() + { + } + + [TestMethod] + public void Test_465_05() + { + } + + [TestMethod] + public void Test_465_06() + { + } + + [TestMethod] + public void Test_465_07() + { + } + + [TestMethod] + public void Test_465_08() + { + } + + [TestMethod] + public void Test_465_09() + { + } + + [TestMethod] + public void Test_465_10() + { + } + + [TestMethod] + public void Test_465_11() + { + } + + [TestMethod] + public void Test_465_12() + { + } + + [TestMethod] + public void Test_465_13() + { + } + + [TestMethod] + public void Test_465_14() + { + } + + [TestMethod] + public void Test_465_15() + { + } + + [TestMethod] + public void Test_465_16() + { + } + + [TestMethod] + public void Test_465_17() + { + } + + [TestMethod] + public void Test_465_18() + { + } + + [TestMethod] + public void Test_465_19() + { + } + + [TestMethod] + public void Test_465_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_466 + { + #region PassingTests + [TestMethod] + public void Test_466_01() + { + } + + [TestMethod] + public void Test_466_02() + { + } + + [TestMethod] + public void Test_466_03() + { + } + + [TestMethod] + public void Test_466_04() + { + } + + [TestMethod] + public void Test_466_05() + { + } + + [TestMethod] + public void Test_466_06() + { + } + + [TestMethod] + public void Test_466_07() + { + } + + [TestMethod] + public void Test_466_08() + { + } + + [TestMethod] + public void Test_466_09() + { + } + + [TestMethod] + public void Test_466_10() + { + } + + [TestMethod] + public void Test_466_11() + { + } + + [TestMethod] + public void Test_466_12() + { + } + + [TestMethod] + public void Test_466_13() + { + } + + [TestMethod] + public void Test_466_14() + { + } + + [TestMethod] + public void Test_466_15() + { + } + + [TestMethod] + public void Test_466_16() + { + } + + [TestMethod] + public void Test_466_17() + { + } + + [TestMethod] + public void Test_466_18() + { + } + + [TestMethod] + public void Test_466_19() + { + } + + [TestMethod] + public void Test_466_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_467 + { + #region PassingTests + [TestMethod] + public void Test_467_01() + { + } + + [TestMethod] + public void Test_467_02() + { + } + + [TestMethod] + public void Test_467_03() + { + } + + [TestMethod] + public void Test_467_04() + { + } + + [TestMethod] + public void Test_467_05() + { + } + + [TestMethod] + public void Test_467_06() + { + } + + [TestMethod] + public void Test_467_07() + { + } + + [TestMethod] + public void Test_467_08() + { + } + + [TestMethod] + public void Test_467_09() + { + } + + [TestMethod] + public void Test_467_10() + { + } + + [TestMethod] + public void Test_467_11() + { + } + + [TestMethod] + public void Test_467_12() + { + } + + [TestMethod] + public void Test_467_13() + { + } + + [TestMethod] + public void Test_467_14() + { + } + + [TestMethod] + public void Test_467_15() + { + } + + [TestMethod] + public void Test_467_16() + { + } + + [TestMethod] + public void Test_467_17() + { + } + + [TestMethod] + public void Test_467_18() + { + } + + [TestMethod] + public void Test_467_19() + { + } + + [TestMethod] + public void Test_467_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_468 + { + #region PassingTests + [TestMethod] + public void Test_468_01() + { + } + + [TestMethod] + public void Test_468_02() + { + } + + [TestMethod] + public void Test_468_03() + { + } + + [TestMethod] + public void Test_468_04() + { + } + + [TestMethod] + public void Test_468_05() + { + } + + [TestMethod] + public void Test_468_06() + { + } + + [TestMethod] + public void Test_468_07() + { + } + + [TestMethod] + public void Test_468_08() + { + } + + [TestMethod] + public void Test_468_09() + { + } + + [TestMethod] + public void Test_468_10() + { + } + + [TestMethod] + public void Test_468_11() + { + } + + [TestMethod] + public void Test_468_12() + { + } + + [TestMethod] + public void Test_468_13() + { + } + + [TestMethod] + public void Test_468_14() + { + } + + [TestMethod] + public void Test_468_15() + { + } + + [TestMethod] + public void Test_468_16() + { + } + + [TestMethod] + public void Test_468_17() + { + } + + [TestMethod] + public void Test_468_18() + { + } + + [TestMethod] + public void Test_468_19() + { + } + + [TestMethod] + public void Test_468_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_469 + { + #region PassingTests + [TestMethod] + public void Test_469_01() + { + } + + [TestMethod] + public void Test_469_02() + { + } + + [TestMethod] + public void Test_469_03() + { + } + + [TestMethod] + public void Test_469_04() + { + } + + [TestMethod] + public void Test_469_05() + { + } + + [TestMethod] + public void Test_469_06() + { + } + + [TestMethod] + public void Test_469_07() + { + } + + [TestMethod] + public void Test_469_08() + { + } + + [TestMethod] + public void Test_469_09() + { + } + + [TestMethod] + public void Test_469_10() + { + } + + [TestMethod] + public void Test_469_11() + { + } + + [TestMethod] + public void Test_469_12() + { + } + + [TestMethod] + public void Test_469_13() + { + } + + [TestMethod] + public void Test_469_14() + { + } + + [TestMethod] + public void Test_469_15() + { + } + + [TestMethod] + public void Test_469_16() + { + } + + [TestMethod] + public void Test_469_17() + { + } + + [TestMethod] + public void Test_469_18() + { + } + + [TestMethod] + public void Test_469_19() + { + } + + [TestMethod] + public void Test_469_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_470 + { + #region PassingTests + [TestMethod] + public void Test_470_01() + { + } + + [TestMethod] + public void Test_470_02() + { + } + + [TestMethod] + public void Test_470_03() + { + } + + [TestMethod] + public void Test_470_04() + { + } + + [TestMethod] + public void Test_470_05() + { + } + + [TestMethod] + public void Test_470_06() + { + } + + [TestMethod] + public void Test_470_07() + { + } + + [TestMethod] + public void Test_470_08() + { + } + + [TestMethod] + public void Test_470_09() + { + } + + [TestMethod] + public void Test_470_10() + { + } + + [TestMethod] + public void Test_470_11() + { + } + + [TestMethod] + public void Test_470_12() + { + } + + [TestMethod] + public void Test_470_13() + { + } + + [TestMethod] + public void Test_470_14() + { + } + + [TestMethod] + public void Test_470_15() + { + } + + [TestMethod] + public void Test_470_16() + { + } + + [TestMethod] + public void Test_470_17() + { + } + + [TestMethod] + public void Test_470_18() + { + } + + [TestMethod] + public void Test_470_19() + { + } + + [TestMethod] + public void Test_470_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_471 + { + #region PassingTests + [TestMethod] + public void Test_471_01() + { + } + + [TestMethod] + public void Test_471_02() + { + } + + [TestMethod] + public void Test_471_03() + { + } + + [TestMethod] + public void Test_471_04() + { + } + + [TestMethod] + public void Test_471_05() + { + } + + [TestMethod] + public void Test_471_06() + { + } + + [TestMethod] + public void Test_471_07() + { + } + + [TestMethod] + public void Test_471_08() + { + } + + [TestMethod] + public void Test_471_09() + { + } + + [TestMethod] + public void Test_471_10() + { + } + + [TestMethod] + public void Test_471_11() + { + } + + [TestMethod] + public void Test_471_12() + { + } + + [TestMethod] + public void Test_471_13() + { + } + + [TestMethod] + public void Test_471_14() + { + } + + [TestMethod] + public void Test_471_15() + { + } + + [TestMethod] + public void Test_471_16() + { + } + + [TestMethod] + public void Test_471_17() + { + } + + [TestMethod] + public void Test_471_18() + { + } + + [TestMethod] + public void Test_471_19() + { + } + + [TestMethod] + public void Test_471_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_472 + { + #region PassingTests + [TestMethod] + public void Test_472_01() + { + } + + [TestMethod] + public void Test_472_02() + { + } + + [TestMethod] + public void Test_472_03() + { + } + + [TestMethod] + public void Test_472_04() + { + } + + [TestMethod] + public void Test_472_05() + { + } + + [TestMethod] + public void Test_472_06() + { + } + + [TestMethod] + public void Test_472_07() + { + } + + [TestMethod] + public void Test_472_08() + { + } + + [TestMethod] + public void Test_472_09() + { + } + + [TestMethod] + public void Test_472_10() + { + } + + [TestMethod] + public void Test_472_11() + { + } + + [TestMethod] + public void Test_472_12() + { + } + + [TestMethod] + public void Test_472_13() + { + } + + [TestMethod] + public void Test_472_14() + { + } + + [TestMethod] + public void Test_472_15() + { + } + + [TestMethod] + public void Test_472_16() + { + } + + [TestMethod] + public void Test_472_17() + { + } + + [TestMethod] + public void Test_472_18() + { + } + + [TestMethod] + public void Test_472_19() + { + } + + [TestMethod] + public void Test_472_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_473 + { + #region PassingTests + [TestMethod] + public void Test_473_01() + { + } + + [TestMethod] + public void Test_473_02() + { + } + + [TestMethod] + public void Test_473_03() + { + } + + [TestMethod] + public void Test_473_04() + { + } + + [TestMethod] + public void Test_473_05() + { + } + + [TestMethod] + public void Test_473_06() + { + } + + [TestMethod] + public void Test_473_07() + { + } + + [TestMethod] + public void Test_473_08() + { + } + + [TestMethod] + public void Test_473_09() + { + } + + [TestMethod] + public void Test_473_10() + { + } + + [TestMethod] + public void Test_473_11() + { + } + + [TestMethod] + public void Test_473_12() + { + } + + [TestMethod] + public void Test_473_13() + { + } + + [TestMethod] + public void Test_473_14() + { + } + + [TestMethod] + public void Test_473_15() + { + } + + [TestMethod] + public void Test_473_16() + { + } + + [TestMethod] + public void Test_473_17() + { + } + + [TestMethod] + public void Test_473_18() + { + } + + [TestMethod] + public void Test_473_19() + { + } + + [TestMethod] + public void Test_473_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_474 + { + #region PassingTests + [TestMethod] + public void Test_474_01() + { + } + + [TestMethod] + public void Test_474_02() + { + } + + [TestMethod] + public void Test_474_03() + { + } + + [TestMethod] + public void Test_474_04() + { + } + + [TestMethod] + public void Test_474_05() + { + } + + [TestMethod] + public void Test_474_06() + { + } + + [TestMethod] + public void Test_474_07() + { + } + + [TestMethod] + public void Test_474_08() + { + } + + [TestMethod] + public void Test_474_09() + { + } + + [TestMethod] + public void Test_474_10() + { + } + + [TestMethod] + public void Test_474_11() + { + } + + [TestMethod] + public void Test_474_12() + { + } + + [TestMethod] + public void Test_474_13() + { + } + + [TestMethod] + public void Test_474_14() + { + } + + [TestMethod] + public void Test_474_15() + { + } + + [TestMethod] + public void Test_474_16() + { + } + + [TestMethod] + public void Test_474_17() + { + } + + [TestMethod] + public void Test_474_18() + { + } + + [TestMethod] + public void Test_474_19() + { + } + + [TestMethod] + public void Test_474_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_475 + { + #region PassingTests + [TestMethod] + public void Test_475_01() + { + } + + [TestMethod] + public void Test_475_02() + { + } + + [TestMethod] + public void Test_475_03() + { + } + + [TestMethod] + public void Test_475_04() + { + } + + [TestMethod] + public void Test_475_05() + { + } + + [TestMethod] + public void Test_475_06() + { + } + + [TestMethod] + public void Test_475_07() + { + } + + [TestMethod] + public void Test_475_08() + { + } + + [TestMethod] + public void Test_475_09() + { + } + + [TestMethod] + public void Test_475_10() + { + } + + [TestMethod] + public void Test_475_11() + { + } + + [TestMethod] + public void Test_475_12() + { + } + + [TestMethod] + public void Test_475_13() + { + } + + [TestMethod] + public void Test_475_14() + { + } + + [TestMethod] + public void Test_475_15() + { + } + + [TestMethod] + public void Test_475_16() + { + } + + [TestMethod] + public void Test_475_17() + { + } + + [TestMethod] + public void Test_475_18() + { + } + + [TestMethod] + public void Test_475_19() + { + } + + [TestMethod] + public void Test_475_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_476 + { + #region PassingTests + [TestMethod] + public void Test_476_01() + { + } + + [TestMethod] + public void Test_476_02() + { + } + + [TestMethod] + public void Test_476_03() + { + } + + [TestMethod] + public void Test_476_04() + { + } + + [TestMethod] + public void Test_476_05() + { + } + + [TestMethod] + public void Test_476_06() + { + } + + [TestMethod] + public void Test_476_07() + { + } + + [TestMethod] + public void Test_476_08() + { + } + + [TestMethod] + public void Test_476_09() + { + } + + [TestMethod] + public void Test_476_10() + { + } + + [TestMethod] + public void Test_476_11() + { + } + + [TestMethod] + public void Test_476_12() + { + } + + [TestMethod] + public void Test_476_13() + { + } + + [TestMethod] + public void Test_476_14() + { + } + + [TestMethod] + public void Test_476_15() + { + } + + [TestMethod] + public void Test_476_16() + { + } + + [TestMethod] + public void Test_476_17() + { + } + + [TestMethod] + public void Test_476_18() + { + } + + [TestMethod] + public void Test_476_19() + { + } + + [TestMethod] + public void Test_476_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_477 + { + #region PassingTests + [TestMethod] + public void Test_477_01() + { + } + + [TestMethod] + public void Test_477_02() + { + } + + [TestMethod] + public void Test_477_03() + { + } + + [TestMethod] + public void Test_477_04() + { + } + + [TestMethod] + public void Test_477_05() + { + } + + [TestMethod] + public void Test_477_06() + { + } + + [TestMethod] + public void Test_477_07() + { + } + + [TestMethod] + public void Test_477_08() + { + } + + [TestMethod] + public void Test_477_09() + { + } + + [TestMethod] + public void Test_477_10() + { + } + + [TestMethod] + public void Test_477_11() + { + } + + [TestMethod] + public void Test_477_12() + { + } + + [TestMethod] + public void Test_477_13() + { + } + + [TestMethod] + public void Test_477_14() + { + } + + [TestMethod] + public void Test_477_15() + { + } + + [TestMethod] + public void Test_477_16() + { + } + + [TestMethod] + public void Test_477_17() + { + } + + [TestMethod] + public void Test_477_18() + { + } + + [TestMethod] + public void Test_477_19() + { + } + + [TestMethod] + public void Test_477_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_478 + { + #region PassingTests + [TestMethod] + public void Test_478_01() + { + } + + [TestMethod] + public void Test_478_02() + { + } + + [TestMethod] + public void Test_478_03() + { + } + + [TestMethod] + public void Test_478_04() + { + } + + [TestMethod] + public void Test_478_05() + { + } + + [TestMethod] + public void Test_478_06() + { + } + + [TestMethod] + public void Test_478_07() + { + } + + [TestMethod] + public void Test_478_08() + { + } + + [TestMethod] + public void Test_478_09() + { + } + + [TestMethod] + public void Test_478_10() + { + } + + [TestMethod] + public void Test_478_11() + { + } + + [TestMethod] + public void Test_478_12() + { + } + + [TestMethod] + public void Test_478_13() + { + } + + [TestMethod] + public void Test_478_14() + { + } + + [TestMethod] + public void Test_478_15() + { + } + + [TestMethod] + public void Test_478_16() + { + } + + [TestMethod] + public void Test_478_17() + { + } + + [TestMethod] + public void Test_478_18() + { + } + + [TestMethod] + public void Test_478_19() + { + } + + [TestMethod] + public void Test_478_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_479 + { + #region PassingTests + [TestMethod] + public void Test_479_01() + { + } + + [TestMethod] + public void Test_479_02() + { + } + + [TestMethod] + public void Test_479_03() + { + } + + [TestMethod] + public void Test_479_04() + { + } + + [TestMethod] + public void Test_479_05() + { + } + + [TestMethod] + public void Test_479_06() + { + } + + [TestMethod] + public void Test_479_07() + { + } + + [TestMethod] + public void Test_479_08() + { + } + + [TestMethod] + public void Test_479_09() + { + } + + [TestMethod] + public void Test_479_10() + { + } + + [TestMethod] + public void Test_479_11() + { + } + + [TestMethod] + public void Test_479_12() + { + } + + [TestMethod] + public void Test_479_13() + { + } + + [TestMethod] + public void Test_479_14() + { + } + + [TestMethod] + public void Test_479_15() + { + } + + [TestMethod] + public void Test_479_16() + { + } + + [TestMethod] + public void Test_479_17() + { + } + + [TestMethod] + public void Test_479_18() + { + } + + [TestMethod] + public void Test_479_19() + { + } + + [TestMethod] + public void Test_479_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_480 + { + #region PassingTests + [TestMethod] + public void Test_480_01() + { + } + + [TestMethod] + public void Test_480_02() + { + } + + [TestMethod] + public void Test_480_03() + { + } + + [TestMethod] + public void Test_480_04() + { + } + + [TestMethod] + public void Test_480_05() + { + } + + [TestMethod] + public void Test_480_06() + { + } + + [TestMethod] + public void Test_480_07() + { + } + + [TestMethod] + public void Test_480_08() + { + } + + [TestMethod] + public void Test_480_09() + { + } + + [TestMethod] + public void Test_480_10() + { + } + + [TestMethod] + public void Test_480_11() + { + } + + [TestMethod] + public void Test_480_12() + { + } + + [TestMethod] + public void Test_480_13() + { + } + + [TestMethod] + public void Test_480_14() + { + } + + [TestMethod] + public void Test_480_15() + { + } + + [TestMethod] + public void Test_480_16() + { + } + + [TestMethod] + public void Test_480_17() + { + } + + [TestMethod] + public void Test_480_18() + { + } + + [TestMethod] + public void Test_480_19() + { + } + + [TestMethod] + public void Test_480_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_481 + { + #region PassingTests + [TestMethod] + public void Test_481_01() + { + } + + [TestMethod] + public void Test_481_02() + { + } + + [TestMethod] + public void Test_481_03() + { + } + + [TestMethod] + public void Test_481_04() + { + } + + [TestMethod] + public void Test_481_05() + { + } + + [TestMethod] + public void Test_481_06() + { + } + + [TestMethod] + public void Test_481_07() + { + } + + [TestMethod] + public void Test_481_08() + { + } + + [TestMethod] + public void Test_481_09() + { + } + + [TestMethod] + public void Test_481_10() + { + } + + [TestMethod] + public void Test_481_11() + { + } + + [TestMethod] + public void Test_481_12() + { + } + + [TestMethod] + public void Test_481_13() + { + } + + [TestMethod] + public void Test_481_14() + { + } + + [TestMethod] + public void Test_481_15() + { + } + + [TestMethod] + public void Test_481_16() + { + } + + [TestMethod] + public void Test_481_17() + { + } + + [TestMethod] + public void Test_481_18() + { + } + + [TestMethod] + public void Test_481_19() + { + } + + [TestMethod] + public void Test_481_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_482 + { + #region PassingTests + [TestMethod] + public void Test_482_01() + { + } + + [TestMethod] + public void Test_482_02() + { + } + + [TestMethod] + public void Test_482_03() + { + } + + [TestMethod] + public void Test_482_04() + { + } + + [TestMethod] + public void Test_482_05() + { + } + + [TestMethod] + public void Test_482_06() + { + } + + [TestMethod] + public void Test_482_07() + { + } + + [TestMethod] + public void Test_482_08() + { + } + + [TestMethod] + public void Test_482_09() + { + } + + [TestMethod] + public void Test_482_10() + { + } + + [TestMethod] + public void Test_482_11() + { + } + + [TestMethod] + public void Test_482_12() + { + } + + [TestMethod] + public void Test_482_13() + { + } + + [TestMethod] + public void Test_482_14() + { + } + + [TestMethod] + public void Test_482_15() + { + } + + [TestMethod] + public void Test_482_16() + { + } + + [TestMethod] + public void Test_482_17() + { + } + + [TestMethod] + public void Test_482_18() + { + } + + [TestMethod] + public void Test_482_19() + { + } + + [TestMethod] + public void Test_482_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_483 + { + #region PassingTests + [TestMethod] + public void Test_483_01() + { + } + + [TestMethod] + public void Test_483_02() + { + } + + [TestMethod] + public void Test_483_03() + { + } + + [TestMethod] + public void Test_483_04() + { + } + + [TestMethod] + public void Test_483_05() + { + } + + [TestMethod] + public void Test_483_06() + { + } + + [TestMethod] + public void Test_483_07() + { + } + + [TestMethod] + public void Test_483_08() + { + } + + [TestMethod] + public void Test_483_09() + { + } + + [TestMethod] + public void Test_483_10() + { + } + + [TestMethod] + public void Test_483_11() + { + } + + [TestMethod] + public void Test_483_12() + { + } + + [TestMethod] + public void Test_483_13() + { + } + + [TestMethod] + public void Test_483_14() + { + } + + [TestMethod] + public void Test_483_15() + { + } + + [TestMethod] + public void Test_483_16() + { + } + + [TestMethod] + public void Test_483_17() + { + } + + [TestMethod] + public void Test_483_18() + { + } + + [TestMethod] + public void Test_483_19() + { + } + + [TestMethod] + public void Test_483_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_484 + { + #region PassingTests + [TestMethod] + public void Test_484_01() + { + } + + [TestMethod] + public void Test_484_02() + { + } + + [TestMethod] + public void Test_484_03() + { + } + + [TestMethod] + public void Test_484_04() + { + } + + [TestMethod] + public void Test_484_05() + { + } + + [TestMethod] + public void Test_484_06() + { + } + + [TestMethod] + public void Test_484_07() + { + } + + [TestMethod] + public void Test_484_08() + { + } + + [TestMethod] + public void Test_484_09() + { + } + + [TestMethod] + public void Test_484_10() + { + } + + [TestMethod] + public void Test_484_11() + { + } + + [TestMethod] + public void Test_484_12() + { + } + + [TestMethod] + public void Test_484_13() + { + } + + [TestMethod] + public void Test_484_14() + { + } + + [TestMethod] + public void Test_484_15() + { + } + + [TestMethod] + public void Test_484_16() + { + } + + [TestMethod] + public void Test_484_17() + { + } + + [TestMethod] + public void Test_484_18() + { + } + + [TestMethod] + public void Test_484_19() + { + } + + [TestMethod] + public void Test_484_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_485 + { + #region PassingTests + [TestMethod] + public void Test_485_01() + { + } + + [TestMethod] + public void Test_485_02() + { + } + + [TestMethod] + public void Test_485_03() + { + } + + [TestMethod] + public void Test_485_04() + { + } + + [TestMethod] + public void Test_485_05() + { + } + + [TestMethod] + public void Test_485_06() + { + } + + [TestMethod] + public void Test_485_07() + { + } + + [TestMethod] + public void Test_485_08() + { + } + + [TestMethod] + public void Test_485_09() + { + } + + [TestMethod] + public void Test_485_10() + { + } + + [TestMethod] + public void Test_485_11() + { + } + + [TestMethod] + public void Test_485_12() + { + } + + [TestMethod] + public void Test_485_13() + { + } + + [TestMethod] + public void Test_485_14() + { + } + + [TestMethod] + public void Test_485_15() + { + } + + [TestMethod] + public void Test_485_16() + { + } + + [TestMethod] + public void Test_485_17() + { + } + + [TestMethod] + public void Test_485_18() + { + } + + [TestMethod] + public void Test_485_19() + { + } + + [TestMethod] + public void Test_485_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_486 + { + #region PassingTests + [TestMethod] + public void Test_486_01() + { + } + + [TestMethod] + public void Test_486_02() + { + } + + [TestMethod] + public void Test_486_03() + { + } + + [TestMethod] + public void Test_486_04() + { + } + + [TestMethod] + public void Test_486_05() + { + } + + [TestMethod] + public void Test_486_06() + { + } + + [TestMethod] + public void Test_486_07() + { + } + + [TestMethod] + public void Test_486_08() + { + } + + [TestMethod] + public void Test_486_09() + { + } + + [TestMethod] + public void Test_486_10() + { + } + + [TestMethod] + public void Test_486_11() + { + } + + [TestMethod] + public void Test_486_12() + { + } + + [TestMethod] + public void Test_486_13() + { + } + + [TestMethod] + public void Test_486_14() + { + } + + [TestMethod] + public void Test_486_15() + { + } + + [TestMethod] + public void Test_486_16() + { + } + + [TestMethod] + public void Test_486_17() + { + } + + [TestMethod] + public void Test_486_18() + { + } + + [TestMethod] + public void Test_486_19() + { + } + + [TestMethod] + public void Test_486_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_487 + { + #region PassingTests + [TestMethod] + public void Test_487_01() + { + } + + [TestMethod] + public void Test_487_02() + { + } + + [TestMethod] + public void Test_487_03() + { + } + + [TestMethod] + public void Test_487_04() + { + } + + [TestMethod] + public void Test_487_05() + { + } + + [TestMethod] + public void Test_487_06() + { + } + + [TestMethod] + public void Test_487_07() + { + } + + [TestMethod] + public void Test_487_08() + { + } + + [TestMethod] + public void Test_487_09() + { + } + + [TestMethod] + public void Test_487_10() + { + } + + [TestMethod] + public void Test_487_11() + { + } + + [TestMethod] + public void Test_487_12() + { + } + + [TestMethod] + public void Test_487_13() + { + } + + [TestMethod] + public void Test_487_14() + { + } + + [TestMethod] + public void Test_487_15() + { + } + + [TestMethod] + public void Test_487_16() + { + } + + [TestMethod] + public void Test_487_17() + { + } + + [TestMethod] + public void Test_487_18() + { + } + + [TestMethod] + public void Test_487_19() + { + } + + [TestMethod] + public void Test_487_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_488 + { + #region PassingTests + [TestMethod] + public void Test_488_01() + { + } + + [TestMethod] + public void Test_488_02() + { + } + + [TestMethod] + public void Test_488_03() + { + } + + [TestMethod] + public void Test_488_04() + { + } + + [TestMethod] + public void Test_488_05() + { + } + + [TestMethod] + public void Test_488_06() + { + } + + [TestMethod] + public void Test_488_07() + { + } + + [TestMethod] + public void Test_488_08() + { + } + + [TestMethod] + public void Test_488_09() + { + } + + [TestMethod] + public void Test_488_10() + { + } + + [TestMethod] + public void Test_488_11() + { + } + + [TestMethod] + public void Test_488_12() + { + } + + [TestMethod] + public void Test_488_13() + { + } + + [TestMethod] + public void Test_488_14() + { + } + + [TestMethod] + public void Test_488_15() + { + } + + [TestMethod] + public void Test_488_16() + { + } + + [TestMethod] + public void Test_488_17() + { + } + + [TestMethod] + public void Test_488_18() + { + } + + [TestMethod] + public void Test_488_19() + { + } + + [TestMethod] + public void Test_488_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_489 + { + #region PassingTests + [TestMethod] + public void Test_489_01() + { + } + + [TestMethod] + public void Test_489_02() + { + } + + [TestMethod] + public void Test_489_03() + { + } + + [TestMethod] + public void Test_489_04() + { + } + + [TestMethod] + public void Test_489_05() + { + } + + [TestMethod] + public void Test_489_06() + { + } + + [TestMethod] + public void Test_489_07() + { + } + + [TestMethod] + public void Test_489_08() + { + } + + [TestMethod] + public void Test_489_09() + { + } + + [TestMethod] + public void Test_489_10() + { + } + + [TestMethod] + public void Test_489_11() + { + } + + [TestMethod] + public void Test_489_12() + { + } + + [TestMethod] + public void Test_489_13() + { + } + + [TestMethod] + public void Test_489_14() + { + } + + [TestMethod] + public void Test_489_15() + { + } + + [TestMethod] + public void Test_489_16() + { + } + + [TestMethod] + public void Test_489_17() + { + } + + [TestMethod] + public void Test_489_18() + { + } + + [TestMethod] + public void Test_489_19() + { + } + + [TestMethod] + public void Test_489_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_490 + { + #region PassingTests + [TestMethod] + public void Test_490_01() + { + } + + [TestMethod] + public void Test_490_02() + { + } + + [TestMethod] + public void Test_490_03() + { + } + + [TestMethod] + public void Test_490_04() + { + } + + [TestMethod] + public void Test_490_05() + { + } + + [TestMethod] + public void Test_490_06() + { + } + + [TestMethod] + public void Test_490_07() + { + } + + [TestMethod] + public void Test_490_08() + { + } + + [TestMethod] + public void Test_490_09() + { + } + + [TestMethod] + public void Test_490_10() + { + } + + [TestMethod] + public void Test_490_11() + { + } + + [TestMethod] + public void Test_490_12() + { + } + + [TestMethod] + public void Test_490_13() + { + } + + [TestMethod] + public void Test_490_14() + { + } + + [TestMethod] + public void Test_490_15() + { + } + + [TestMethod] + public void Test_490_16() + { + } + + [TestMethod] + public void Test_490_17() + { + } + + [TestMethod] + public void Test_490_18() + { + } + + [TestMethod] + public void Test_490_19() + { + } + + [TestMethod] + public void Test_490_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_491 + { + #region PassingTests + [TestMethod] + public void Test_491_01() + { + } + + [TestMethod] + public void Test_491_02() + { + } + + [TestMethod] + public void Test_491_03() + { + } + + [TestMethod] + public void Test_491_04() + { + } + + [TestMethod] + public void Test_491_05() + { + } + + [TestMethod] + public void Test_491_06() + { + } + + [TestMethod] + public void Test_491_07() + { + } + + [TestMethod] + public void Test_491_08() + { + } + + [TestMethod] + public void Test_491_09() + { + } + + [TestMethod] + public void Test_491_10() + { + } + + [TestMethod] + public void Test_491_11() + { + } + + [TestMethod] + public void Test_491_12() + { + } + + [TestMethod] + public void Test_491_13() + { + } + + [TestMethod] + public void Test_491_14() + { + } + + [TestMethod] + public void Test_491_15() + { + } + + [TestMethod] + public void Test_491_16() + { + } + + [TestMethod] + public void Test_491_17() + { + } + + [TestMethod] + public void Test_491_18() + { + } + + [TestMethod] + public void Test_491_19() + { + } + + [TestMethod] + public void Test_491_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_492 + { + #region PassingTests + [TestMethod] + public void Test_492_01() + { + } + + [TestMethod] + public void Test_492_02() + { + } + + [TestMethod] + public void Test_492_03() + { + } + + [TestMethod] + public void Test_492_04() + { + } + + [TestMethod] + public void Test_492_05() + { + } + + [TestMethod] + public void Test_492_06() + { + } + + [TestMethod] + public void Test_492_07() + { + } + + [TestMethod] + public void Test_492_08() + { + } + + [TestMethod] + public void Test_492_09() + { + } + + [TestMethod] + public void Test_492_10() + { + } + + [TestMethod] + public void Test_492_11() + { + } + + [TestMethod] + public void Test_492_12() + { + } + + [TestMethod] + public void Test_492_13() + { + } + + [TestMethod] + public void Test_492_14() + { + } + + [TestMethod] + public void Test_492_15() + { + } + + [TestMethod] + public void Test_492_16() + { + } + + [TestMethod] + public void Test_492_17() + { + } + + [TestMethod] + public void Test_492_18() + { + } + + [TestMethod] + public void Test_492_19() + { + } + + [TestMethod] + public void Test_492_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_493 + { + #region PassingTests + [TestMethod] + public void Test_493_01() + { + } + + [TestMethod] + public void Test_493_02() + { + } + + [TestMethod] + public void Test_493_03() + { + } + + [TestMethod] + public void Test_493_04() + { + } + + [TestMethod] + public void Test_493_05() + { + } + + [TestMethod] + public void Test_493_06() + { + } + + [TestMethod] + public void Test_493_07() + { + } + + [TestMethod] + public void Test_493_08() + { + } + + [TestMethod] + public void Test_493_09() + { + } + + [TestMethod] + public void Test_493_10() + { + } + + [TestMethod] + public void Test_493_11() + { + } + + [TestMethod] + public void Test_493_12() + { + } + + [TestMethod] + public void Test_493_13() + { + } + + [TestMethod] + public void Test_493_14() + { + } + + [TestMethod] + public void Test_493_15() + { + } + + [TestMethod] + public void Test_493_16() + { + } + + [TestMethod] + public void Test_493_17() + { + } + + [TestMethod] + public void Test_493_18() + { + } + + [TestMethod] + public void Test_493_19() + { + } + + [TestMethod] + public void Test_493_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_494 + { + #region PassingTests + [TestMethod] + public void Test_494_01() + { + } + + [TestMethod] + public void Test_494_02() + { + } + + [TestMethod] + public void Test_494_03() + { + } + + [TestMethod] + public void Test_494_04() + { + } + + [TestMethod] + public void Test_494_05() + { + } + + [TestMethod] + public void Test_494_06() + { + } + + [TestMethod] + public void Test_494_07() + { + } + + [TestMethod] + public void Test_494_08() + { + } + + [TestMethod] + public void Test_494_09() + { + } + + [TestMethod] + public void Test_494_10() + { + } + + [TestMethod] + public void Test_494_11() + { + } + + [TestMethod] + public void Test_494_12() + { + } + + [TestMethod] + public void Test_494_13() + { + } + + [TestMethod] + public void Test_494_14() + { + } + + [TestMethod] + public void Test_494_15() + { + } + + [TestMethod] + public void Test_494_16() + { + } + + [TestMethod] + public void Test_494_17() + { + } + + [TestMethod] + public void Test_494_18() + { + } + + [TestMethod] + public void Test_494_19() + { + } + + [TestMethod] + public void Test_494_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_495 + { + #region PassingTests + [TestMethod] + public void Test_495_01() + { + } + + [TestMethod] + public void Test_495_02() + { + } + + [TestMethod] + public void Test_495_03() + { + } + + [TestMethod] + public void Test_495_04() + { + } + + [TestMethod] + public void Test_495_05() + { + } + + [TestMethod] + public void Test_495_06() + { + } + + [TestMethod] + public void Test_495_07() + { + } + + [TestMethod] + public void Test_495_08() + { + } + + [TestMethod] + public void Test_495_09() + { + } + + [TestMethod] + public void Test_495_10() + { + } + + [TestMethod] + public void Test_495_11() + { + } + + [TestMethod] + public void Test_495_12() + { + } + + [TestMethod] + public void Test_495_13() + { + } + + [TestMethod] + public void Test_495_14() + { + } + + [TestMethod] + public void Test_495_15() + { + } + + [TestMethod] + public void Test_495_16() + { + } + + [TestMethod] + public void Test_495_17() + { + } + + [TestMethod] + public void Test_495_18() + { + } + + [TestMethod] + public void Test_495_19() + { + } + + [TestMethod] + public void Test_495_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_496 + { + #region PassingTests + [TestMethod] + public void Test_496_01() + { + } + + [TestMethod] + public void Test_496_02() + { + } + + [TestMethod] + public void Test_496_03() + { + } + + [TestMethod] + public void Test_496_04() + { + } + + [TestMethod] + public void Test_496_05() + { + } + + [TestMethod] + public void Test_496_06() + { + } + + [TestMethod] + public void Test_496_07() + { + } + + [TestMethod] + public void Test_496_08() + { + } + + [TestMethod] + public void Test_496_09() + { + } + + [TestMethod] + public void Test_496_10() + { + } + + [TestMethod] + public void Test_496_11() + { + } + + [TestMethod] + public void Test_496_12() + { + } + + [TestMethod] + public void Test_496_13() + { + } + + [TestMethod] + public void Test_496_14() + { + } + + [TestMethod] + public void Test_496_15() + { + } + + [TestMethod] + public void Test_496_16() + { + } + + [TestMethod] + public void Test_496_17() + { + } + + [TestMethod] + public void Test_496_18() + { + } + + [TestMethod] + public void Test_496_19() + { + } + + [TestMethod] + public void Test_496_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_497 + { + #region PassingTests + [TestMethod] + public void Test_497_01() + { + } + + [TestMethod] + public void Test_497_02() + { + } + + [TestMethod] + public void Test_497_03() + { + } + + [TestMethod] + public void Test_497_04() + { + } + + [TestMethod] + public void Test_497_05() + { + } + + [TestMethod] + public void Test_497_06() + { + } + + [TestMethod] + public void Test_497_07() + { + } + + [TestMethod] + public void Test_497_08() + { + } + + [TestMethod] + public void Test_497_09() + { + } + + [TestMethod] + public void Test_497_10() + { + } + + [TestMethod] + public void Test_497_11() + { + } + + [TestMethod] + public void Test_497_12() + { + } + + [TestMethod] + public void Test_497_13() + { + } + + [TestMethod] + public void Test_497_14() + { + } + + [TestMethod] + public void Test_497_15() + { + } + + [TestMethod] + public void Test_497_16() + { + } + + [TestMethod] + public void Test_497_17() + { + } + + [TestMethod] + public void Test_497_18() + { + } + + [TestMethod] + public void Test_497_19() + { + } + + [TestMethod] + public void Test_497_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_498 + { + #region PassingTests + [TestMethod] + public void Test_498_01() + { + } + + [TestMethod] + public void Test_498_02() + { + } + + [TestMethod] + public void Test_498_03() + { + } + + [TestMethod] + public void Test_498_04() + { + } + + [TestMethod] + public void Test_498_05() + { + } + + [TestMethod] + public void Test_498_06() + { + } + + [TestMethod] + public void Test_498_07() + { + } + + [TestMethod] + public void Test_498_08() + { + } + + [TestMethod] + public void Test_498_09() + { + } + + [TestMethod] + public void Test_498_10() + { + } + + [TestMethod] + public void Test_498_11() + { + } + + [TestMethod] + public void Test_498_12() + { + } + + [TestMethod] + public void Test_498_13() + { + } + + [TestMethod] + public void Test_498_14() + { + } + + [TestMethod] + public void Test_498_15() + { + } + + [TestMethod] + public void Test_498_16() + { + } + + [TestMethod] + public void Test_498_17() + { + } + + [TestMethod] + public void Test_498_18() + { + } + + [TestMethod] + public void Test_498_19() + { + } + + [TestMethod] + public void Test_498_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_499 + { + #region PassingTests + [TestMethod] + public void Test_499_01() + { + } + + [TestMethod] + public void Test_499_02() + { + } + + [TestMethod] + public void Test_499_03() + { + } + + [TestMethod] + public void Test_499_04() + { + } + + [TestMethod] + public void Test_499_05() + { + } + + [TestMethod] + public void Test_499_06() + { + } + + [TestMethod] + public void Test_499_07() + { + } + + [TestMethod] + public void Test_499_08() + { + } + + [TestMethod] + public void Test_499_09() + { + } + + [TestMethod] + public void Test_499_10() + { + } + + [TestMethod] + public void Test_499_11() + { + } + + [TestMethod] + public void Test_499_12() + { + } + + [TestMethod] + public void Test_499_13() + { + } + + [TestMethod] + public void Test_499_14() + { + } + + [TestMethod] + public void Test_499_15() + { + } + + [TestMethod] + public void Test_499_16() + { + } + + [TestMethod] + public void Test_499_17() + { + } + + [TestMethod] + public void Test_499_18() + { + } + + [TestMethod] + public void Test_499_19() + { + } + + [TestMethod] + public void Test_499_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestClass] + public class TestClass_500 + { + #region PassingTests + [TestMethod] + public void Test_500_01() + { + } + + [TestMethod] + public void Test_500_02() + { + } + + [TestMethod] + public void Test_500_03() + { + } + + [TestMethod] + public void Test_500_04() + { + } + + [TestMethod] + public void Test_500_05() + { + } + + [TestMethod] + public void Test_500_06() + { + } + + [TestMethod] + public void Test_500_07() + { + } + + [TestMethod] + public void Test_500_08() + { + } + + [TestMethod] + public void Test_500_09() + { + } + + [TestMethod] + public void Test_500_10() + { + } + + [TestMethod] + public void Test_500_11() + { + } + + [TestMethod] + public void Test_500_12() + { + } + + [TestMethod] + public void Test_500_13() + { + } + + [TestMethod] + public void Test_500_14() + { + } + + [TestMethod] + public void Test_500_15() + { + } + + [TestMethod] + public void Test_500_16() + { + } + + [TestMethod] + public void Test_500_17() + { + } + + [TestMethod] + public void Test_500_18() + { + } + + [TestMethod] + public void Test_500_19() + { + } + + [TestMethod] + public void Test_500_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/MSTest10kPassing/MSTests.tt b/test/TestAssets/performance/MSTest10kPassing/MSTests.tt new file mode 100644 index 0000000000..f476b44d51 --- /dev/null +++ b/test/TestAssets/performance/MSTest10kPassing/MSTests.tt @@ -0,0 +1,56 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ +<# + int classes = 500; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestClass] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/MSTest1Passing/MSTest1Passing.csproj b/test/TestAssets/performance/MSTest1Passing/MSTest1Passing.csproj new file mode 100644 index 0000000000..b81e9fb18d --- /dev/null +++ b/test/TestAssets/performance/MSTest1Passing/MSTest1Passing.csproj @@ -0,0 +1,33 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + MSTests.cs + + + + + + + + + + True + True + MSTests.tt + + + + diff --git a/test/TestAssets/performance/MSTest1Passing/MSTests.cs b/test/TestAssets/performance/MSTest1Passing/MSTests.cs new file mode 100644 index 0000000000..c5300f1880 --- /dev/null +++ b/test/TestAssets/performance/MSTest1Passing/MSTests.cs @@ -0,0 +1,19 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ + [TestClass] + public class TestClass_01 + { + #region PassingTests + [TestMethod] + public void Test_01_01() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/MSTest1Passing/MSTests.tt b/test/TestAssets/performance/MSTest1Passing/MSTests.tt new file mode 100644 index 0000000000..f6374efefe --- /dev/null +++ b/test/TestAssets/performance/MSTest1Passing/MSTests.tt @@ -0,0 +1,56 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Tests +{ +<# + int classes = 1; + int passedTests = 1; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestClass] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [TestMethod] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/NUnit1000Passing/NUnit1000Passing.csproj b/test/TestAssets/performance/NUnit1000Passing/NUnit1000Passing.csproj new file mode 100644 index 0000000000..2b873ab980 --- /dev/null +++ b/test/TestAssets/performance/NUnit1000Passing/NUnit1000Passing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + + + + + + + + + + + TextTemplatingFileGenerator + NunitTests.cs + + + + + + + + + + True + True + NunitTests.tt + + + + diff --git a/test/TestAssets/performance/NUnit1000Passing/NunitTests.cs b/test/TestAssets/performance/NUnit1000Passing/NunitTests.cs new file mode 100644 index 0000000000..375f852d12 --- /dev/null +++ b/test/TestAssets/performance/NUnit1000Passing/NunitTests.cs @@ -0,0 +1,5455 @@ +using NUnit.Framework; + +namespace Tests +{ + [TestFixture] + public class TestClass_01 + { + #region PassingTests + [Test] + public void Test_01_01() + { + } + + [Test] + public void Test_01_02() + { + } + + [Test] + public void Test_01_03() + { + } + + [Test] + public void Test_01_04() + { + } + + [Test] + public void Test_01_05() + { + } + + [Test] + public void Test_01_06() + { + } + + [Test] + public void Test_01_07() + { + } + + [Test] + public void Test_01_08() + { + } + + [Test] + public void Test_01_09() + { + } + + [Test] + public void Test_01_10() + { + } + + [Test] + public void Test_01_11() + { + } + + [Test] + public void Test_01_12() + { + } + + [Test] + public void Test_01_13() + { + } + + [Test] + public void Test_01_14() + { + } + + [Test] + public void Test_01_15() + { + } + + [Test] + public void Test_01_16() + { + } + + [Test] + public void Test_01_17() + { + } + + [Test] + public void Test_01_18() + { + } + + [Test] + public void Test_01_19() + { + } + + [Test] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_02 + { + #region PassingTests + [Test] + public void Test_02_01() + { + } + + [Test] + public void Test_02_02() + { + } + + [Test] + public void Test_02_03() + { + } + + [Test] + public void Test_02_04() + { + } + + [Test] + public void Test_02_05() + { + } + + [Test] + public void Test_02_06() + { + } + + [Test] + public void Test_02_07() + { + } + + [Test] + public void Test_02_08() + { + } + + [Test] + public void Test_02_09() + { + } + + [Test] + public void Test_02_10() + { + } + + [Test] + public void Test_02_11() + { + } + + [Test] + public void Test_02_12() + { + } + + [Test] + public void Test_02_13() + { + } + + [Test] + public void Test_02_14() + { + } + + [Test] + public void Test_02_15() + { + } + + [Test] + public void Test_02_16() + { + } + + [Test] + public void Test_02_17() + { + } + + [Test] + public void Test_02_18() + { + } + + [Test] + public void Test_02_19() + { + } + + [Test] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_03 + { + #region PassingTests + [Test] + public void Test_03_01() + { + } + + [Test] + public void Test_03_02() + { + } + + [Test] + public void Test_03_03() + { + } + + [Test] + public void Test_03_04() + { + } + + [Test] + public void Test_03_05() + { + } + + [Test] + public void Test_03_06() + { + } + + [Test] + public void Test_03_07() + { + } + + [Test] + public void Test_03_08() + { + } + + [Test] + public void Test_03_09() + { + } + + [Test] + public void Test_03_10() + { + } + + [Test] + public void Test_03_11() + { + } + + [Test] + public void Test_03_12() + { + } + + [Test] + public void Test_03_13() + { + } + + [Test] + public void Test_03_14() + { + } + + [Test] + public void Test_03_15() + { + } + + [Test] + public void Test_03_16() + { + } + + [Test] + public void Test_03_17() + { + } + + [Test] + public void Test_03_18() + { + } + + [Test] + public void Test_03_19() + { + } + + [Test] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_04 + { + #region PassingTests + [Test] + public void Test_04_01() + { + } + + [Test] + public void Test_04_02() + { + } + + [Test] + public void Test_04_03() + { + } + + [Test] + public void Test_04_04() + { + } + + [Test] + public void Test_04_05() + { + } + + [Test] + public void Test_04_06() + { + } + + [Test] + public void Test_04_07() + { + } + + [Test] + public void Test_04_08() + { + } + + [Test] + public void Test_04_09() + { + } + + [Test] + public void Test_04_10() + { + } + + [Test] + public void Test_04_11() + { + } + + [Test] + public void Test_04_12() + { + } + + [Test] + public void Test_04_13() + { + } + + [Test] + public void Test_04_14() + { + } + + [Test] + public void Test_04_15() + { + } + + [Test] + public void Test_04_16() + { + } + + [Test] + public void Test_04_17() + { + } + + [Test] + public void Test_04_18() + { + } + + [Test] + public void Test_04_19() + { + } + + [Test] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_05 + { + #region PassingTests + [Test] + public void Test_05_01() + { + } + + [Test] + public void Test_05_02() + { + } + + [Test] + public void Test_05_03() + { + } + + [Test] + public void Test_05_04() + { + } + + [Test] + public void Test_05_05() + { + } + + [Test] + public void Test_05_06() + { + } + + [Test] + public void Test_05_07() + { + } + + [Test] + public void Test_05_08() + { + } + + [Test] + public void Test_05_09() + { + } + + [Test] + public void Test_05_10() + { + } + + [Test] + public void Test_05_11() + { + } + + [Test] + public void Test_05_12() + { + } + + [Test] + public void Test_05_13() + { + } + + [Test] + public void Test_05_14() + { + } + + [Test] + public void Test_05_15() + { + } + + [Test] + public void Test_05_16() + { + } + + [Test] + public void Test_05_17() + { + } + + [Test] + public void Test_05_18() + { + } + + [Test] + public void Test_05_19() + { + } + + [Test] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_06 + { + #region PassingTests + [Test] + public void Test_06_01() + { + } + + [Test] + public void Test_06_02() + { + } + + [Test] + public void Test_06_03() + { + } + + [Test] + public void Test_06_04() + { + } + + [Test] + public void Test_06_05() + { + } + + [Test] + public void Test_06_06() + { + } + + [Test] + public void Test_06_07() + { + } + + [Test] + public void Test_06_08() + { + } + + [Test] + public void Test_06_09() + { + } + + [Test] + public void Test_06_10() + { + } + + [Test] + public void Test_06_11() + { + } + + [Test] + public void Test_06_12() + { + } + + [Test] + public void Test_06_13() + { + } + + [Test] + public void Test_06_14() + { + } + + [Test] + public void Test_06_15() + { + } + + [Test] + public void Test_06_16() + { + } + + [Test] + public void Test_06_17() + { + } + + [Test] + public void Test_06_18() + { + } + + [Test] + public void Test_06_19() + { + } + + [Test] + public void Test_06_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_07 + { + #region PassingTests + [Test] + public void Test_07_01() + { + } + + [Test] + public void Test_07_02() + { + } + + [Test] + public void Test_07_03() + { + } + + [Test] + public void Test_07_04() + { + } + + [Test] + public void Test_07_05() + { + } + + [Test] + public void Test_07_06() + { + } + + [Test] + public void Test_07_07() + { + } + + [Test] + public void Test_07_08() + { + } + + [Test] + public void Test_07_09() + { + } + + [Test] + public void Test_07_10() + { + } + + [Test] + public void Test_07_11() + { + } + + [Test] + public void Test_07_12() + { + } + + [Test] + public void Test_07_13() + { + } + + [Test] + public void Test_07_14() + { + } + + [Test] + public void Test_07_15() + { + } + + [Test] + public void Test_07_16() + { + } + + [Test] + public void Test_07_17() + { + } + + [Test] + public void Test_07_18() + { + } + + [Test] + public void Test_07_19() + { + } + + [Test] + public void Test_07_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_08 + { + #region PassingTests + [Test] + public void Test_08_01() + { + } + + [Test] + public void Test_08_02() + { + } + + [Test] + public void Test_08_03() + { + } + + [Test] + public void Test_08_04() + { + } + + [Test] + public void Test_08_05() + { + } + + [Test] + public void Test_08_06() + { + } + + [Test] + public void Test_08_07() + { + } + + [Test] + public void Test_08_08() + { + } + + [Test] + public void Test_08_09() + { + } + + [Test] + public void Test_08_10() + { + } + + [Test] + public void Test_08_11() + { + } + + [Test] + public void Test_08_12() + { + } + + [Test] + public void Test_08_13() + { + } + + [Test] + public void Test_08_14() + { + } + + [Test] + public void Test_08_15() + { + } + + [Test] + public void Test_08_16() + { + } + + [Test] + public void Test_08_17() + { + } + + [Test] + public void Test_08_18() + { + } + + [Test] + public void Test_08_19() + { + } + + [Test] + public void Test_08_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_09 + { + #region PassingTests + [Test] + public void Test_09_01() + { + } + + [Test] + public void Test_09_02() + { + } + + [Test] + public void Test_09_03() + { + } + + [Test] + public void Test_09_04() + { + } + + [Test] + public void Test_09_05() + { + } + + [Test] + public void Test_09_06() + { + } + + [Test] + public void Test_09_07() + { + } + + [Test] + public void Test_09_08() + { + } + + [Test] + public void Test_09_09() + { + } + + [Test] + public void Test_09_10() + { + } + + [Test] + public void Test_09_11() + { + } + + [Test] + public void Test_09_12() + { + } + + [Test] + public void Test_09_13() + { + } + + [Test] + public void Test_09_14() + { + } + + [Test] + public void Test_09_15() + { + } + + [Test] + public void Test_09_16() + { + } + + [Test] + public void Test_09_17() + { + } + + [Test] + public void Test_09_18() + { + } + + [Test] + public void Test_09_19() + { + } + + [Test] + public void Test_09_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_10 + { + #region PassingTests + [Test] + public void Test_10_01() + { + } + + [Test] + public void Test_10_02() + { + } + + [Test] + public void Test_10_03() + { + } + + [Test] + public void Test_10_04() + { + } + + [Test] + public void Test_10_05() + { + } + + [Test] + public void Test_10_06() + { + } + + [Test] + public void Test_10_07() + { + } + + [Test] + public void Test_10_08() + { + } + + [Test] + public void Test_10_09() + { + } + + [Test] + public void Test_10_10() + { + } + + [Test] + public void Test_10_11() + { + } + + [Test] + public void Test_10_12() + { + } + + [Test] + public void Test_10_13() + { + } + + [Test] + public void Test_10_14() + { + } + + [Test] + public void Test_10_15() + { + } + + [Test] + public void Test_10_16() + { + } + + [Test] + public void Test_10_17() + { + } + + [Test] + public void Test_10_18() + { + } + + [Test] + public void Test_10_19() + { + } + + [Test] + public void Test_10_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_11 + { + #region PassingTests + [Test] + public void Test_11_01() + { + } + + [Test] + public void Test_11_02() + { + } + + [Test] + public void Test_11_03() + { + } + + [Test] + public void Test_11_04() + { + } + + [Test] + public void Test_11_05() + { + } + + [Test] + public void Test_11_06() + { + } + + [Test] + public void Test_11_07() + { + } + + [Test] + public void Test_11_08() + { + } + + [Test] + public void Test_11_09() + { + } + + [Test] + public void Test_11_10() + { + } + + [Test] + public void Test_11_11() + { + } + + [Test] + public void Test_11_12() + { + } + + [Test] + public void Test_11_13() + { + } + + [Test] + public void Test_11_14() + { + } + + [Test] + public void Test_11_15() + { + } + + [Test] + public void Test_11_16() + { + } + + [Test] + public void Test_11_17() + { + } + + [Test] + public void Test_11_18() + { + } + + [Test] + public void Test_11_19() + { + } + + [Test] + public void Test_11_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_12 + { + #region PassingTests + [Test] + public void Test_12_01() + { + } + + [Test] + public void Test_12_02() + { + } + + [Test] + public void Test_12_03() + { + } + + [Test] + public void Test_12_04() + { + } + + [Test] + public void Test_12_05() + { + } + + [Test] + public void Test_12_06() + { + } + + [Test] + public void Test_12_07() + { + } + + [Test] + public void Test_12_08() + { + } + + [Test] + public void Test_12_09() + { + } + + [Test] + public void Test_12_10() + { + } + + [Test] + public void Test_12_11() + { + } + + [Test] + public void Test_12_12() + { + } + + [Test] + public void Test_12_13() + { + } + + [Test] + public void Test_12_14() + { + } + + [Test] + public void Test_12_15() + { + } + + [Test] + public void Test_12_16() + { + } + + [Test] + public void Test_12_17() + { + } + + [Test] + public void Test_12_18() + { + } + + [Test] + public void Test_12_19() + { + } + + [Test] + public void Test_12_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_13 + { + #region PassingTests + [Test] + public void Test_13_01() + { + } + + [Test] + public void Test_13_02() + { + } + + [Test] + public void Test_13_03() + { + } + + [Test] + public void Test_13_04() + { + } + + [Test] + public void Test_13_05() + { + } + + [Test] + public void Test_13_06() + { + } + + [Test] + public void Test_13_07() + { + } + + [Test] + public void Test_13_08() + { + } + + [Test] + public void Test_13_09() + { + } + + [Test] + public void Test_13_10() + { + } + + [Test] + public void Test_13_11() + { + } + + [Test] + public void Test_13_12() + { + } + + [Test] + public void Test_13_13() + { + } + + [Test] + public void Test_13_14() + { + } + + [Test] + public void Test_13_15() + { + } + + [Test] + public void Test_13_16() + { + } + + [Test] + public void Test_13_17() + { + } + + [Test] + public void Test_13_18() + { + } + + [Test] + public void Test_13_19() + { + } + + [Test] + public void Test_13_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_14 + { + #region PassingTests + [Test] + public void Test_14_01() + { + } + + [Test] + public void Test_14_02() + { + } + + [Test] + public void Test_14_03() + { + } + + [Test] + public void Test_14_04() + { + } + + [Test] + public void Test_14_05() + { + } + + [Test] + public void Test_14_06() + { + } + + [Test] + public void Test_14_07() + { + } + + [Test] + public void Test_14_08() + { + } + + [Test] + public void Test_14_09() + { + } + + [Test] + public void Test_14_10() + { + } + + [Test] + public void Test_14_11() + { + } + + [Test] + public void Test_14_12() + { + } + + [Test] + public void Test_14_13() + { + } + + [Test] + public void Test_14_14() + { + } + + [Test] + public void Test_14_15() + { + } + + [Test] + public void Test_14_16() + { + } + + [Test] + public void Test_14_17() + { + } + + [Test] + public void Test_14_18() + { + } + + [Test] + public void Test_14_19() + { + } + + [Test] + public void Test_14_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_15 + { + #region PassingTests + [Test] + public void Test_15_01() + { + } + + [Test] + public void Test_15_02() + { + } + + [Test] + public void Test_15_03() + { + } + + [Test] + public void Test_15_04() + { + } + + [Test] + public void Test_15_05() + { + } + + [Test] + public void Test_15_06() + { + } + + [Test] + public void Test_15_07() + { + } + + [Test] + public void Test_15_08() + { + } + + [Test] + public void Test_15_09() + { + } + + [Test] + public void Test_15_10() + { + } + + [Test] + public void Test_15_11() + { + } + + [Test] + public void Test_15_12() + { + } + + [Test] + public void Test_15_13() + { + } + + [Test] + public void Test_15_14() + { + } + + [Test] + public void Test_15_15() + { + } + + [Test] + public void Test_15_16() + { + } + + [Test] + public void Test_15_17() + { + } + + [Test] + public void Test_15_18() + { + } + + [Test] + public void Test_15_19() + { + } + + [Test] + public void Test_15_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_16 + { + #region PassingTests + [Test] + public void Test_16_01() + { + } + + [Test] + public void Test_16_02() + { + } + + [Test] + public void Test_16_03() + { + } + + [Test] + public void Test_16_04() + { + } + + [Test] + public void Test_16_05() + { + } + + [Test] + public void Test_16_06() + { + } + + [Test] + public void Test_16_07() + { + } + + [Test] + public void Test_16_08() + { + } + + [Test] + public void Test_16_09() + { + } + + [Test] + public void Test_16_10() + { + } + + [Test] + public void Test_16_11() + { + } + + [Test] + public void Test_16_12() + { + } + + [Test] + public void Test_16_13() + { + } + + [Test] + public void Test_16_14() + { + } + + [Test] + public void Test_16_15() + { + } + + [Test] + public void Test_16_16() + { + } + + [Test] + public void Test_16_17() + { + } + + [Test] + public void Test_16_18() + { + } + + [Test] + public void Test_16_19() + { + } + + [Test] + public void Test_16_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_17 + { + #region PassingTests + [Test] + public void Test_17_01() + { + } + + [Test] + public void Test_17_02() + { + } + + [Test] + public void Test_17_03() + { + } + + [Test] + public void Test_17_04() + { + } + + [Test] + public void Test_17_05() + { + } + + [Test] + public void Test_17_06() + { + } + + [Test] + public void Test_17_07() + { + } + + [Test] + public void Test_17_08() + { + } + + [Test] + public void Test_17_09() + { + } + + [Test] + public void Test_17_10() + { + } + + [Test] + public void Test_17_11() + { + } + + [Test] + public void Test_17_12() + { + } + + [Test] + public void Test_17_13() + { + } + + [Test] + public void Test_17_14() + { + } + + [Test] + public void Test_17_15() + { + } + + [Test] + public void Test_17_16() + { + } + + [Test] + public void Test_17_17() + { + } + + [Test] + public void Test_17_18() + { + } + + [Test] + public void Test_17_19() + { + } + + [Test] + public void Test_17_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_18 + { + #region PassingTests + [Test] + public void Test_18_01() + { + } + + [Test] + public void Test_18_02() + { + } + + [Test] + public void Test_18_03() + { + } + + [Test] + public void Test_18_04() + { + } + + [Test] + public void Test_18_05() + { + } + + [Test] + public void Test_18_06() + { + } + + [Test] + public void Test_18_07() + { + } + + [Test] + public void Test_18_08() + { + } + + [Test] + public void Test_18_09() + { + } + + [Test] + public void Test_18_10() + { + } + + [Test] + public void Test_18_11() + { + } + + [Test] + public void Test_18_12() + { + } + + [Test] + public void Test_18_13() + { + } + + [Test] + public void Test_18_14() + { + } + + [Test] + public void Test_18_15() + { + } + + [Test] + public void Test_18_16() + { + } + + [Test] + public void Test_18_17() + { + } + + [Test] + public void Test_18_18() + { + } + + [Test] + public void Test_18_19() + { + } + + [Test] + public void Test_18_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_19 + { + #region PassingTests + [Test] + public void Test_19_01() + { + } + + [Test] + public void Test_19_02() + { + } + + [Test] + public void Test_19_03() + { + } + + [Test] + public void Test_19_04() + { + } + + [Test] + public void Test_19_05() + { + } + + [Test] + public void Test_19_06() + { + } + + [Test] + public void Test_19_07() + { + } + + [Test] + public void Test_19_08() + { + } + + [Test] + public void Test_19_09() + { + } + + [Test] + public void Test_19_10() + { + } + + [Test] + public void Test_19_11() + { + } + + [Test] + public void Test_19_12() + { + } + + [Test] + public void Test_19_13() + { + } + + [Test] + public void Test_19_14() + { + } + + [Test] + public void Test_19_15() + { + } + + [Test] + public void Test_19_16() + { + } + + [Test] + public void Test_19_17() + { + } + + [Test] + public void Test_19_18() + { + } + + [Test] + public void Test_19_19() + { + } + + [Test] + public void Test_19_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_20 + { + #region PassingTests + [Test] + public void Test_20_01() + { + } + + [Test] + public void Test_20_02() + { + } + + [Test] + public void Test_20_03() + { + } + + [Test] + public void Test_20_04() + { + } + + [Test] + public void Test_20_05() + { + } + + [Test] + public void Test_20_06() + { + } + + [Test] + public void Test_20_07() + { + } + + [Test] + public void Test_20_08() + { + } + + [Test] + public void Test_20_09() + { + } + + [Test] + public void Test_20_10() + { + } + + [Test] + public void Test_20_11() + { + } + + [Test] + public void Test_20_12() + { + } + + [Test] + public void Test_20_13() + { + } + + [Test] + public void Test_20_14() + { + } + + [Test] + public void Test_20_15() + { + } + + [Test] + public void Test_20_16() + { + } + + [Test] + public void Test_20_17() + { + } + + [Test] + public void Test_20_18() + { + } + + [Test] + public void Test_20_19() + { + } + + [Test] + public void Test_20_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_21 + { + #region PassingTests + [Test] + public void Test_21_01() + { + } + + [Test] + public void Test_21_02() + { + } + + [Test] + public void Test_21_03() + { + } + + [Test] + public void Test_21_04() + { + } + + [Test] + public void Test_21_05() + { + } + + [Test] + public void Test_21_06() + { + } + + [Test] + public void Test_21_07() + { + } + + [Test] + public void Test_21_08() + { + } + + [Test] + public void Test_21_09() + { + } + + [Test] + public void Test_21_10() + { + } + + [Test] + public void Test_21_11() + { + } + + [Test] + public void Test_21_12() + { + } + + [Test] + public void Test_21_13() + { + } + + [Test] + public void Test_21_14() + { + } + + [Test] + public void Test_21_15() + { + } + + [Test] + public void Test_21_16() + { + } + + [Test] + public void Test_21_17() + { + } + + [Test] + public void Test_21_18() + { + } + + [Test] + public void Test_21_19() + { + } + + [Test] + public void Test_21_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_22 + { + #region PassingTests + [Test] + public void Test_22_01() + { + } + + [Test] + public void Test_22_02() + { + } + + [Test] + public void Test_22_03() + { + } + + [Test] + public void Test_22_04() + { + } + + [Test] + public void Test_22_05() + { + } + + [Test] + public void Test_22_06() + { + } + + [Test] + public void Test_22_07() + { + } + + [Test] + public void Test_22_08() + { + } + + [Test] + public void Test_22_09() + { + } + + [Test] + public void Test_22_10() + { + } + + [Test] + public void Test_22_11() + { + } + + [Test] + public void Test_22_12() + { + } + + [Test] + public void Test_22_13() + { + } + + [Test] + public void Test_22_14() + { + } + + [Test] + public void Test_22_15() + { + } + + [Test] + public void Test_22_16() + { + } + + [Test] + public void Test_22_17() + { + } + + [Test] + public void Test_22_18() + { + } + + [Test] + public void Test_22_19() + { + } + + [Test] + public void Test_22_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_23 + { + #region PassingTests + [Test] + public void Test_23_01() + { + } + + [Test] + public void Test_23_02() + { + } + + [Test] + public void Test_23_03() + { + } + + [Test] + public void Test_23_04() + { + } + + [Test] + public void Test_23_05() + { + } + + [Test] + public void Test_23_06() + { + } + + [Test] + public void Test_23_07() + { + } + + [Test] + public void Test_23_08() + { + } + + [Test] + public void Test_23_09() + { + } + + [Test] + public void Test_23_10() + { + } + + [Test] + public void Test_23_11() + { + } + + [Test] + public void Test_23_12() + { + } + + [Test] + public void Test_23_13() + { + } + + [Test] + public void Test_23_14() + { + } + + [Test] + public void Test_23_15() + { + } + + [Test] + public void Test_23_16() + { + } + + [Test] + public void Test_23_17() + { + } + + [Test] + public void Test_23_18() + { + } + + [Test] + public void Test_23_19() + { + } + + [Test] + public void Test_23_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_24 + { + #region PassingTests + [Test] + public void Test_24_01() + { + } + + [Test] + public void Test_24_02() + { + } + + [Test] + public void Test_24_03() + { + } + + [Test] + public void Test_24_04() + { + } + + [Test] + public void Test_24_05() + { + } + + [Test] + public void Test_24_06() + { + } + + [Test] + public void Test_24_07() + { + } + + [Test] + public void Test_24_08() + { + } + + [Test] + public void Test_24_09() + { + } + + [Test] + public void Test_24_10() + { + } + + [Test] + public void Test_24_11() + { + } + + [Test] + public void Test_24_12() + { + } + + [Test] + public void Test_24_13() + { + } + + [Test] + public void Test_24_14() + { + } + + [Test] + public void Test_24_15() + { + } + + [Test] + public void Test_24_16() + { + } + + [Test] + public void Test_24_17() + { + } + + [Test] + public void Test_24_18() + { + } + + [Test] + public void Test_24_19() + { + } + + [Test] + public void Test_24_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_25 + { + #region PassingTests + [Test] + public void Test_25_01() + { + } + + [Test] + public void Test_25_02() + { + } + + [Test] + public void Test_25_03() + { + } + + [Test] + public void Test_25_04() + { + } + + [Test] + public void Test_25_05() + { + } + + [Test] + public void Test_25_06() + { + } + + [Test] + public void Test_25_07() + { + } + + [Test] + public void Test_25_08() + { + } + + [Test] + public void Test_25_09() + { + } + + [Test] + public void Test_25_10() + { + } + + [Test] + public void Test_25_11() + { + } + + [Test] + public void Test_25_12() + { + } + + [Test] + public void Test_25_13() + { + } + + [Test] + public void Test_25_14() + { + } + + [Test] + public void Test_25_15() + { + } + + [Test] + public void Test_25_16() + { + } + + [Test] + public void Test_25_17() + { + } + + [Test] + public void Test_25_18() + { + } + + [Test] + public void Test_25_19() + { + } + + [Test] + public void Test_25_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_26 + { + #region PassingTests + [Test] + public void Test_26_01() + { + } + + [Test] + public void Test_26_02() + { + } + + [Test] + public void Test_26_03() + { + } + + [Test] + public void Test_26_04() + { + } + + [Test] + public void Test_26_05() + { + } + + [Test] + public void Test_26_06() + { + } + + [Test] + public void Test_26_07() + { + } + + [Test] + public void Test_26_08() + { + } + + [Test] + public void Test_26_09() + { + } + + [Test] + public void Test_26_10() + { + } + + [Test] + public void Test_26_11() + { + } + + [Test] + public void Test_26_12() + { + } + + [Test] + public void Test_26_13() + { + } + + [Test] + public void Test_26_14() + { + } + + [Test] + public void Test_26_15() + { + } + + [Test] + public void Test_26_16() + { + } + + [Test] + public void Test_26_17() + { + } + + [Test] + public void Test_26_18() + { + } + + [Test] + public void Test_26_19() + { + } + + [Test] + public void Test_26_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_27 + { + #region PassingTests + [Test] + public void Test_27_01() + { + } + + [Test] + public void Test_27_02() + { + } + + [Test] + public void Test_27_03() + { + } + + [Test] + public void Test_27_04() + { + } + + [Test] + public void Test_27_05() + { + } + + [Test] + public void Test_27_06() + { + } + + [Test] + public void Test_27_07() + { + } + + [Test] + public void Test_27_08() + { + } + + [Test] + public void Test_27_09() + { + } + + [Test] + public void Test_27_10() + { + } + + [Test] + public void Test_27_11() + { + } + + [Test] + public void Test_27_12() + { + } + + [Test] + public void Test_27_13() + { + } + + [Test] + public void Test_27_14() + { + } + + [Test] + public void Test_27_15() + { + } + + [Test] + public void Test_27_16() + { + } + + [Test] + public void Test_27_17() + { + } + + [Test] + public void Test_27_18() + { + } + + [Test] + public void Test_27_19() + { + } + + [Test] + public void Test_27_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_28 + { + #region PassingTests + [Test] + public void Test_28_01() + { + } + + [Test] + public void Test_28_02() + { + } + + [Test] + public void Test_28_03() + { + } + + [Test] + public void Test_28_04() + { + } + + [Test] + public void Test_28_05() + { + } + + [Test] + public void Test_28_06() + { + } + + [Test] + public void Test_28_07() + { + } + + [Test] + public void Test_28_08() + { + } + + [Test] + public void Test_28_09() + { + } + + [Test] + public void Test_28_10() + { + } + + [Test] + public void Test_28_11() + { + } + + [Test] + public void Test_28_12() + { + } + + [Test] + public void Test_28_13() + { + } + + [Test] + public void Test_28_14() + { + } + + [Test] + public void Test_28_15() + { + } + + [Test] + public void Test_28_16() + { + } + + [Test] + public void Test_28_17() + { + } + + [Test] + public void Test_28_18() + { + } + + [Test] + public void Test_28_19() + { + } + + [Test] + public void Test_28_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_29 + { + #region PassingTests + [Test] + public void Test_29_01() + { + } + + [Test] + public void Test_29_02() + { + } + + [Test] + public void Test_29_03() + { + } + + [Test] + public void Test_29_04() + { + } + + [Test] + public void Test_29_05() + { + } + + [Test] + public void Test_29_06() + { + } + + [Test] + public void Test_29_07() + { + } + + [Test] + public void Test_29_08() + { + } + + [Test] + public void Test_29_09() + { + } + + [Test] + public void Test_29_10() + { + } + + [Test] + public void Test_29_11() + { + } + + [Test] + public void Test_29_12() + { + } + + [Test] + public void Test_29_13() + { + } + + [Test] + public void Test_29_14() + { + } + + [Test] + public void Test_29_15() + { + } + + [Test] + public void Test_29_16() + { + } + + [Test] + public void Test_29_17() + { + } + + [Test] + public void Test_29_18() + { + } + + [Test] + public void Test_29_19() + { + } + + [Test] + public void Test_29_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_30 + { + #region PassingTests + [Test] + public void Test_30_01() + { + } + + [Test] + public void Test_30_02() + { + } + + [Test] + public void Test_30_03() + { + } + + [Test] + public void Test_30_04() + { + } + + [Test] + public void Test_30_05() + { + } + + [Test] + public void Test_30_06() + { + } + + [Test] + public void Test_30_07() + { + } + + [Test] + public void Test_30_08() + { + } + + [Test] + public void Test_30_09() + { + } + + [Test] + public void Test_30_10() + { + } + + [Test] + public void Test_30_11() + { + } + + [Test] + public void Test_30_12() + { + } + + [Test] + public void Test_30_13() + { + } + + [Test] + public void Test_30_14() + { + } + + [Test] + public void Test_30_15() + { + } + + [Test] + public void Test_30_16() + { + } + + [Test] + public void Test_30_17() + { + } + + [Test] + public void Test_30_18() + { + } + + [Test] + public void Test_30_19() + { + } + + [Test] + public void Test_30_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_31 + { + #region PassingTests + [Test] + public void Test_31_01() + { + } + + [Test] + public void Test_31_02() + { + } + + [Test] + public void Test_31_03() + { + } + + [Test] + public void Test_31_04() + { + } + + [Test] + public void Test_31_05() + { + } + + [Test] + public void Test_31_06() + { + } + + [Test] + public void Test_31_07() + { + } + + [Test] + public void Test_31_08() + { + } + + [Test] + public void Test_31_09() + { + } + + [Test] + public void Test_31_10() + { + } + + [Test] + public void Test_31_11() + { + } + + [Test] + public void Test_31_12() + { + } + + [Test] + public void Test_31_13() + { + } + + [Test] + public void Test_31_14() + { + } + + [Test] + public void Test_31_15() + { + } + + [Test] + public void Test_31_16() + { + } + + [Test] + public void Test_31_17() + { + } + + [Test] + public void Test_31_18() + { + } + + [Test] + public void Test_31_19() + { + } + + [Test] + public void Test_31_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_32 + { + #region PassingTests + [Test] + public void Test_32_01() + { + } + + [Test] + public void Test_32_02() + { + } + + [Test] + public void Test_32_03() + { + } + + [Test] + public void Test_32_04() + { + } + + [Test] + public void Test_32_05() + { + } + + [Test] + public void Test_32_06() + { + } + + [Test] + public void Test_32_07() + { + } + + [Test] + public void Test_32_08() + { + } + + [Test] + public void Test_32_09() + { + } + + [Test] + public void Test_32_10() + { + } + + [Test] + public void Test_32_11() + { + } + + [Test] + public void Test_32_12() + { + } + + [Test] + public void Test_32_13() + { + } + + [Test] + public void Test_32_14() + { + } + + [Test] + public void Test_32_15() + { + } + + [Test] + public void Test_32_16() + { + } + + [Test] + public void Test_32_17() + { + } + + [Test] + public void Test_32_18() + { + } + + [Test] + public void Test_32_19() + { + } + + [Test] + public void Test_32_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_33 + { + #region PassingTests + [Test] + public void Test_33_01() + { + } + + [Test] + public void Test_33_02() + { + } + + [Test] + public void Test_33_03() + { + } + + [Test] + public void Test_33_04() + { + } + + [Test] + public void Test_33_05() + { + } + + [Test] + public void Test_33_06() + { + } + + [Test] + public void Test_33_07() + { + } + + [Test] + public void Test_33_08() + { + } + + [Test] + public void Test_33_09() + { + } + + [Test] + public void Test_33_10() + { + } + + [Test] + public void Test_33_11() + { + } + + [Test] + public void Test_33_12() + { + } + + [Test] + public void Test_33_13() + { + } + + [Test] + public void Test_33_14() + { + } + + [Test] + public void Test_33_15() + { + } + + [Test] + public void Test_33_16() + { + } + + [Test] + public void Test_33_17() + { + } + + [Test] + public void Test_33_18() + { + } + + [Test] + public void Test_33_19() + { + } + + [Test] + public void Test_33_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_34 + { + #region PassingTests + [Test] + public void Test_34_01() + { + } + + [Test] + public void Test_34_02() + { + } + + [Test] + public void Test_34_03() + { + } + + [Test] + public void Test_34_04() + { + } + + [Test] + public void Test_34_05() + { + } + + [Test] + public void Test_34_06() + { + } + + [Test] + public void Test_34_07() + { + } + + [Test] + public void Test_34_08() + { + } + + [Test] + public void Test_34_09() + { + } + + [Test] + public void Test_34_10() + { + } + + [Test] + public void Test_34_11() + { + } + + [Test] + public void Test_34_12() + { + } + + [Test] + public void Test_34_13() + { + } + + [Test] + public void Test_34_14() + { + } + + [Test] + public void Test_34_15() + { + } + + [Test] + public void Test_34_16() + { + } + + [Test] + public void Test_34_17() + { + } + + [Test] + public void Test_34_18() + { + } + + [Test] + public void Test_34_19() + { + } + + [Test] + public void Test_34_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_35 + { + #region PassingTests + [Test] + public void Test_35_01() + { + } + + [Test] + public void Test_35_02() + { + } + + [Test] + public void Test_35_03() + { + } + + [Test] + public void Test_35_04() + { + } + + [Test] + public void Test_35_05() + { + } + + [Test] + public void Test_35_06() + { + } + + [Test] + public void Test_35_07() + { + } + + [Test] + public void Test_35_08() + { + } + + [Test] + public void Test_35_09() + { + } + + [Test] + public void Test_35_10() + { + } + + [Test] + public void Test_35_11() + { + } + + [Test] + public void Test_35_12() + { + } + + [Test] + public void Test_35_13() + { + } + + [Test] + public void Test_35_14() + { + } + + [Test] + public void Test_35_15() + { + } + + [Test] + public void Test_35_16() + { + } + + [Test] + public void Test_35_17() + { + } + + [Test] + public void Test_35_18() + { + } + + [Test] + public void Test_35_19() + { + } + + [Test] + public void Test_35_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_36 + { + #region PassingTests + [Test] + public void Test_36_01() + { + } + + [Test] + public void Test_36_02() + { + } + + [Test] + public void Test_36_03() + { + } + + [Test] + public void Test_36_04() + { + } + + [Test] + public void Test_36_05() + { + } + + [Test] + public void Test_36_06() + { + } + + [Test] + public void Test_36_07() + { + } + + [Test] + public void Test_36_08() + { + } + + [Test] + public void Test_36_09() + { + } + + [Test] + public void Test_36_10() + { + } + + [Test] + public void Test_36_11() + { + } + + [Test] + public void Test_36_12() + { + } + + [Test] + public void Test_36_13() + { + } + + [Test] + public void Test_36_14() + { + } + + [Test] + public void Test_36_15() + { + } + + [Test] + public void Test_36_16() + { + } + + [Test] + public void Test_36_17() + { + } + + [Test] + public void Test_36_18() + { + } + + [Test] + public void Test_36_19() + { + } + + [Test] + public void Test_36_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_37 + { + #region PassingTests + [Test] + public void Test_37_01() + { + } + + [Test] + public void Test_37_02() + { + } + + [Test] + public void Test_37_03() + { + } + + [Test] + public void Test_37_04() + { + } + + [Test] + public void Test_37_05() + { + } + + [Test] + public void Test_37_06() + { + } + + [Test] + public void Test_37_07() + { + } + + [Test] + public void Test_37_08() + { + } + + [Test] + public void Test_37_09() + { + } + + [Test] + public void Test_37_10() + { + } + + [Test] + public void Test_37_11() + { + } + + [Test] + public void Test_37_12() + { + } + + [Test] + public void Test_37_13() + { + } + + [Test] + public void Test_37_14() + { + } + + [Test] + public void Test_37_15() + { + } + + [Test] + public void Test_37_16() + { + } + + [Test] + public void Test_37_17() + { + } + + [Test] + public void Test_37_18() + { + } + + [Test] + public void Test_37_19() + { + } + + [Test] + public void Test_37_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_38 + { + #region PassingTests + [Test] + public void Test_38_01() + { + } + + [Test] + public void Test_38_02() + { + } + + [Test] + public void Test_38_03() + { + } + + [Test] + public void Test_38_04() + { + } + + [Test] + public void Test_38_05() + { + } + + [Test] + public void Test_38_06() + { + } + + [Test] + public void Test_38_07() + { + } + + [Test] + public void Test_38_08() + { + } + + [Test] + public void Test_38_09() + { + } + + [Test] + public void Test_38_10() + { + } + + [Test] + public void Test_38_11() + { + } + + [Test] + public void Test_38_12() + { + } + + [Test] + public void Test_38_13() + { + } + + [Test] + public void Test_38_14() + { + } + + [Test] + public void Test_38_15() + { + } + + [Test] + public void Test_38_16() + { + } + + [Test] + public void Test_38_17() + { + } + + [Test] + public void Test_38_18() + { + } + + [Test] + public void Test_38_19() + { + } + + [Test] + public void Test_38_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_39 + { + #region PassingTests + [Test] + public void Test_39_01() + { + } + + [Test] + public void Test_39_02() + { + } + + [Test] + public void Test_39_03() + { + } + + [Test] + public void Test_39_04() + { + } + + [Test] + public void Test_39_05() + { + } + + [Test] + public void Test_39_06() + { + } + + [Test] + public void Test_39_07() + { + } + + [Test] + public void Test_39_08() + { + } + + [Test] + public void Test_39_09() + { + } + + [Test] + public void Test_39_10() + { + } + + [Test] + public void Test_39_11() + { + } + + [Test] + public void Test_39_12() + { + } + + [Test] + public void Test_39_13() + { + } + + [Test] + public void Test_39_14() + { + } + + [Test] + public void Test_39_15() + { + } + + [Test] + public void Test_39_16() + { + } + + [Test] + public void Test_39_17() + { + } + + [Test] + public void Test_39_18() + { + } + + [Test] + public void Test_39_19() + { + } + + [Test] + public void Test_39_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_40 + { + #region PassingTests + [Test] + public void Test_40_01() + { + } + + [Test] + public void Test_40_02() + { + } + + [Test] + public void Test_40_03() + { + } + + [Test] + public void Test_40_04() + { + } + + [Test] + public void Test_40_05() + { + } + + [Test] + public void Test_40_06() + { + } + + [Test] + public void Test_40_07() + { + } + + [Test] + public void Test_40_08() + { + } + + [Test] + public void Test_40_09() + { + } + + [Test] + public void Test_40_10() + { + } + + [Test] + public void Test_40_11() + { + } + + [Test] + public void Test_40_12() + { + } + + [Test] + public void Test_40_13() + { + } + + [Test] + public void Test_40_14() + { + } + + [Test] + public void Test_40_15() + { + } + + [Test] + public void Test_40_16() + { + } + + [Test] + public void Test_40_17() + { + } + + [Test] + public void Test_40_18() + { + } + + [Test] + public void Test_40_19() + { + } + + [Test] + public void Test_40_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_41 + { + #region PassingTests + [Test] + public void Test_41_01() + { + } + + [Test] + public void Test_41_02() + { + } + + [Test] + public void Test_41_03() + { + } + + [Test] + public void Test_41_04() + { + } + + [Test] + public void Test_41_05() + { + } + + [Test] + public void Test_41_06() + { + } + + [Test] + public void Test_41_07() + { + } + + [Test] + public void Test_41_08() + { + } + + [Test] + public void Test_41_09() + { + } + + [Test] + public void Test_41_10() + { + } + + [Test] + public void Test_41_11() + { + } + + [Test] + public void Test_41_12() + { + } + + [Test] + public void Test_41_13() + { + } + + [Test] + public void Test_41_14() + { + } + + [Test] + public void Test_41_15() + { + } + + [Test] + public void Test_41_16() + { + } + + [Test] + public void Test_41_17() + { + } + + [Test] + public void Test_41_18() + { + } + + [Test] + public void Test_41_19() + { + } + + [Test] + public void Test_41_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_42 + { + #region PassingTests + [Test] + public void Test_42_01() + { + } + + [Test] + public void Test_42_02() + { + } + + [Test] + public void Test_42_03() + { + } + + [Test] + public void Test_42_04() + { + } + + [Test] + public void Test_42_05() + { + } + + [Test] + public void Test_42_06() + { + } + + [Test] + public void Test_42_07() + { + } + + [Test] + public void Test_42_08() + { + } + + [Test] + public void Test_42_09() + { + } + + [Test] + public void Test_42_10() + { + } + + [Test] + public void Test_42_11() + { + } + + [Test] + public void Test_42_12() + { + } + + [Test] + public void Test_42_13() + { + } + + [Test] + public void Test_42_14() + { + } + + [Test] + public void Test_42_15() + { + } + + [Test] + public void Test_42_16() + { + } + + [Test] + public void Test_42_17() + { + } + + [Test] + public void Test_42_18() + { + } + + [Test] + public void Test_42_19() + { + } + + [Test] + public void Test_42_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_43 + { + #region PassingTests + [Test] + public void Test_43_01() + { + } + + [Test] + public void Test_43_02() + { + } + + [Test] + public void Test_43_03() + { + } + + [Test] + public void Test_43_04() + { + } + + [Test] + public void Test_43_05() + { + } + + [Test] + public void Test_43_06() + { + } + + [Test] + public void Test_43_07() + { + } + + [Test] + public void Test_43_08() + { + } + + [Test] + public void Test_43_09() + { + } + + [Test] + public void Test_43_10() + { + } + + [Test] + public void Test_43_11() + { + } + + [Test] + public void Test_43_12() + { + } + + [Test] + public void Test_43_13() + { + } + + [Test] + public void Test_43_14() + { + } + + [Test] + public void Test_43_15() + { + } + + [Test] + public void Test_43_16() + { + } + + [Test] + public void Test_43_17() + { + } + + [Test] + public void Test_43_18() + { + } + + [Test] + public void Test_43_19() + { + } + + [Test] + public void Test_43_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_44 + { + #region PassingTests + [Test] + public void Test_44_01() + { + } + + [Test] + public void Test_44_02() + { + } + + [Test] + public void Test_44_03() + { + } + + [Test] + public void Test_44_04() + { + } + + [Test] + public void Test_44_05() + { + } + + [Test] + public void Test_44_06() + { + } + + [Test] + public void Test_44_07() + { + } + + [Test] + public void Test_44_08() + { + } + + [Test] + public void Test_44_09() + { + } + + [Test] + public void Test_44_10() + { + } + + [Test] + public void Test_44_11() + { + } + + [Test] + public void Test_44_12() + { + } + + [Test] + public void Test_44_13() + { + } + + [Test] + public void Test_44_14() + { + } + + [Test] + public void Test_44_15() + { + } + + [Test] + public void Test_44_16() + { + } + + [Test] + public void Test_44_17() + { + } + + [Test] + public void Test_44_18() + { + } + + [Test] + public void Test_44_19() + { + } + + [Test] + public void Test_44_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_45 + { + #region PassingTests + [Test] + public void Test_45_01() + { + } + + [Test] + public void Test_45_02() + { + } + + [Test] + public void Test_45_03() + { + } + + [Test] + public void Test_45_04() + { + } + + [Test] + public void Test_45_05() + { + } + + [Test] + public void Test_45_06() + { + } + + [Test] + public void Test_45_07() + { + } + + [Test] + public void Test_45_08() + { + } + + [Test] + public void Test_45_09() + { + } + + [Test] + public void Test_45_10() + { + } + + [Test] + public void Test_45_11() + { + } + + [Test] + public void Test_45_12() + { + } + + [Test] + public void Test_45_13() + { + } + + [Test] + public void Test_45_14() + { + } + + [Test] + public void Test_45_15() + { + } + + [Test] + public void Test_45_16() + { + } + + [Test] + public void Test_45_17() + { + } + + [Test] + public void Test_45_18() + { + } + + [Test] + public void Test_45_19() + { + } + + [Test] + public void Test_45_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_46 + { + #region PassingTests + [Test] + public void Test_46_01() + { + } + + [Test] + public void Test_46_02() + { + } + + [Test] + public void Test_46_03() + { + } + + [Test] + public void Test_46_04() + { + } + + [Test] + public void Test_46_05() + { + } + + [Test] + public void Test_46_06() + { + } + + [Test] + public void Test_46_07() + { + } + + [Test] + public void Test_46_08() + { + } + + [Test] + public void Test_46_09() + { + } + + [Test] + public void Test_46_10() + { + } + + [Test] + public void Test_46_11() + { + } + + [Test] + public void Test_46_12() + { + } + + [Test] + public void Test_46_13() + { + } + + [Test] + public void Test_46_14() + { + } + + [Test] + public void Test_46_15() + { + } + + [Test] + public void Test_46_16() + { + } + + [Test] + public void Test_46_17() + { + } + + [Test] + public void Test_46_18() + { + } + + [Test] + public void Test_46_19() + { + } + + [Test] + public void Test_46_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_47 + { + #region PassingTests + [Test] + public void Test_47_01() + { + } + + [Test] + public void Test_47_02() + { + } + + [Test] + public void Test_47_03() + { + } + + [Test] + public void Test_47_04() + { + } + + [Test] + public void Test_47_05() + { + } + + [Test] + public void Test_47_06() + { + } + + [Test] + public void Test_47_07() + { + } + + [Test] + public void Test_47_08() + { + } + + [Test] + public void Test_47_09() + { + } + + [Test] + public void Test_47_10() + { + } + + [Test] + public void Test_47_11() + { + } + + [Test] + public void Test_47_12() + { + } + + [Test] + public void Test_47_13() + { + } + + [Test] + public void Test_47_14() + { + } + + [Test] + public void Test_47_15() + { + } + + [Test] + public void Test_47_16() + { + } + + [Test] + public void Test_47_17() + { + } + + [Test] + public void Test_47_18() + { + } + + [Test] + public void Test_47_19() + { + } + + [Test] + public void Test_47_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_48 + { + #region PassingTests + [Test] + public void Test_48_01() + { + } + + [Test] + public void Test_48_02() + { + } + + [Test] + public void Test_48_03() + { + } + + [Test] + public void Test_48_04() + { + } + + [Test] + public void Test_48_05() + { + } + + [Test] + public void Test_48_06() + { + } + + [Test] + public void Test_48_07() + { + } + + [Test] + public void Test_48_08() + { + } + + [Test] + public void Test_48_09() + { + } + + [Test] + public void Test_48_10() + { + } + + [Test] + public void Test_48_11() + { + } + + [Test] + public void Test_48_12() + { + } + + [Test] + public void Test_48_13() + { + } + + [Test] + public void Test_48_14() + { + } + + [Test] + public void Test_48_15() + { + } + + [Test] + public void Test_48_16() + { + } + + [Test] + public void Test_48_17() + { + } + + [Test] + public void Test_48_18() + { + } + + [Test] + public void Test_48_19() + { + } + + [Test] + public void Test_48_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_49 + { + #region PassingTests + [Test] + public void Test_49_01() + { + } + + [Test] + public void Test_49_02() + { + } + + [Test] + public void Test_49_03() + { + } + + [Test] + public void Test_49_04() + { + } + + [Test] + public void Test_49_05() + { + } + + [Test] + public void Test_49_06() + { + } + + [Test] + public void Test_49_07() + { + } + + [Test] + public void Test_49_08() + { + } + + [Test] + public void Test_49_09() + { + } + + [Test] + public void Test_49_10() + { + } + + [Test] + public void Test_49_11() + { + } + + [Test] + public void Test_49_12() + { + } + + [Test] + public void Test_49_13() + { + } + + [Test] + public void Test_49_14() + { + } + + [Test] + public void Test_49_15() + { + } + + [Test] + public void Test_49_16() + { + } + + [Test] + public void Test_49_17() + { + } + + [Test] + public void Test_49_18() + { + } + + [Test] + public void Test_49_19() + { + } + + [Test] + public void Test_49_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_50 + { + #region PassingTests + [Test] + public void Test_50_01() + { + } + + [Test] + public void Test_50_02() + { + } + + [Test] + public void Test_50_03() + { + } + + [Test] + public void Test_50_04() + { + } + + [Test] + public void Test_50_05() + { + } + + [Test] + public void Test_50_06() + { + } + + [Test] + public void Test_50_07() + { + } + + [Test] + public void Test_50_08() + { + } + + [Test] + public void Test_50_09() + { + } + + [Test] + public void Test_50_10() + { + } + + [Test] + public void Test_50_11() + { + } + + [Test] + public void Test_50_12() + { + } + + [Test] + public void Test_50_13() + { + } + + [Test] + public void Test_50_14() + { + } + + [Test] + public void Test_50_15() + { + } + + [Test] + public void Test_50_16() + { + } + + [Test] + public void Test_50_17() + { + } + + [Test] + public void Test_50_18() + { + } + + [Test] + public void Test_50_19() + { + } + + [Test] + public void Test_50_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/NUnit1000Passing/NunitTests.tt b/test/TestAssets/performance/NUnit1000Passing/NunitTests.tt new file mode 100644 index 0000000000..5203ef532f --- /dev/null +++ b/test/TestAssets/performance/NUnit1000Passing/NunitTests.tt @@ -0,0 +1,56 @@ +using NUnit.Framework; + +namespace Tests +{ +<# + int classes = 50; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestFixture] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/NUnit100Passing/NUnit100Passing.csproj b/test/TestAssets/performance/NUnit100Passing/NUnit100Passing.csproj new file mode 100644 index 0000000000..4b0d0e5b87 --- /dev/null +++ b/test/TestAssets/performance/NUnit100Passing/NUnit100Passing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + + + + + + + + + + + TextTemplatingFileGenerator + NunitTests.cs + + + + + + + + + + True + True + NunitTests.tt + + + + diff --git a/test/TestAssets/performance/NUnit100Passing/NunitTests.cs b/test/TestAssets/performance/NUnit100Passing/NunitTests.cs new file mode 100644 index 0000000000..2102117bfb --- /dev/null +++ b/test/TestAssets/performance/NUnit100Passing/NunitTests.cs @@ -0,0 +1,550 @@ +using NUnit.Framework; + +namespace Tests +{ + [TestFixture] + public class TestClass_01 + { + #region PassingTests + [Test] + public void Test_01_01() + { + } + + [Test] + public void Test_01_02() + { + } + + [Test] + public void Test_01_03() + { + } + + [Test] + public void Test_01_04() + { + } + + [Test] + public void Test_01_05() + { + } + + [Test] + public void Test_01_06() + { + } + + [Test] + public void Test_01_07() + { + } + + [Test] + public void Test_01_08() + { + } + + [Test] + public void Test_01_09() + { + } + + [Test] + public void Test_01_10() + { + } + + [Test] + public void Test_01_11() + { + } + + [Test] + public void Test_01_12() + { + } + + [Test] + public void Test_01_13() + { + } + + [Test] + public void Test_01_14() + { + } + + [Test] + public void Test_01_15() + { + } + + [Test] + public void Test_01_16() + { + } + + [Test] + public void Test_01_17() + { + } + + [Test] + public void Test_01_18() + { + } + + [Test] + public void Test_01_19() + { + } + + [Test] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_02 + { + #region PassingTests + [Test] + public void Test_02_01() + { + } + + [Test] + public void Test_02_02() + { + } + + [Test] + public void Test_02_03() + { + } + + [Test] + public void Test_02_04() + { + } + + [Test] + public void Test_02_05() + { + } + + [Test] + public void Test_02_06() + { + } + + [Test] + public void Test_02_07() + { + } + + [Test] + public void Test_02_08() + { + } + + [Test] + public void Test_02_09() + { + } + + [Test] + public void Test_02_10() + { + } + + [Test] + public void Test_02_11() + { + } + + [Test] + public void Test_02_12() + { + } + + [Test] + public void Test_02_13() + { + } + + [Test] + public void Test_02_14() + { + } + + [Test] + public void Test_02_15() + { + } + + [Test] + public void Test_02_16() + { + } + + [Test] + public void Test_02_17() + { + } + + [Test] + public void Test_02_18() + { + } + + [Test] + public void Test_02_19() + { + } + + [Test] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_03 + { + #region PassingTests + [Test] + public void Test_03_01() + { + } + + [Test] + public void Test_03_02() + { + } + + [Test] + public void Test_03_03() + { + } + + [Test] + public void Test_03_04() + { + } + + [Test] + public void Test_03_05() + { + } + + [Test] + public void Test_03_06() + { + } + + [Test] + public void Test_03_07() + { + } + + [Test] + public void Test_03_08() + { + } + + [Test] + public void Test_03_09() + { + } + + [Test] + public void Test_03_10() + { + } + + [Test] + public void Test_03_11() + { + } + + [Test] + public void Test_03_12() + { + } + + [Test] + public void Test_03_13() + { + } + + [Test] + public void Test_03_14() + { + } + + [Test] + public void Test_03_15() + { + } + + [Test] + public void Test_03_16() + { + } + + [Test] + public void Test_03_17() + { + } + + [Test] + public void Test_03_18() + { + } + + [Test] + public void Test_03_19() + { + } + + [Test] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_04 + { + #region PassingTests + [Test] + public void Test_04_01() + { + } + + [Test] + public void Test_04_02() + { + } + + [Test] + public void Test_04_03() + { + } + + [Test] + public void Test_04_04() + { + } + + [Test] + public void Test_04_05() + { + } + + [Test] + public void Test_04_06() + { + } + + [Test] + public void Test_04_07() + { + } + + [Test] + public void Test_04_08() + { + } + + [Test] + public void Test_04_09() + { + } + + [Test] + public void Test_04_10() + { + } + + [Test] + public void Test_04_11() + { + } + + [Test] + public void Test_04_12() + { + } + + [Test] + public void Test_04_13() + { + } + + [Test] + public void Test_04_14() + { + } + + [Test] + public void Test_04_15() + { + } + + [Test] + public void Test_04_16() + { + } + + [Test] + public void Test_04_17() + { + } + + [Test] + public void Test_04_18() + { + } + + [Test] + public void Test_04_19() + { + } + + [Test] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_05 + { + #region PassingTests + [Test] + public void Test_05_01() + { + } + + [Test] + public void Test_05_02() + { + } + + [Test] + public void Test_05_03() + { + } + + [Test] + public void Test_05_04() + { + } + + [Test] + public void Test_05_05() + { + } + + [Test] + public void Test_05_06() + { + } + + [Test] + public void Test_05_07() + { + } + + [Test] + public void Test_05_08() + { + } + + [Test] + public void Test_05_09() + { + } + + [Test] + public void Test_05_10() + { + } + + [Test] + public void Test_05_11() + { + } + + [Test] + public void Test_05_12() + { + } + + [Test] + public void Test_05_13() + { + } + + [Test] + public void Test_05_14() + { + } + + [Test] + public void Test_05_15() + { + } + + [Test] + public void Test_05_16() + { + } + + [Test] + public void Test_05_17() + { + } + + [Test] + public void Test_05_18() + { + } + + [Test] + public void Test_05_19() + { + } + + [Test] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/NUnit100Passing/NunitTests.tt b/test/TestAssets/performance/NUnit100Passing/NunitTests.tt new file mode 100644 index 0000000000..6db97ec3dd --- /dev/null +++ b/test/TestAssets/performance/NUnit100Passing/NunitTests.tt @@ -0,0 +1,56 @@ +using NUnit.Framework; + +namespace Tests +{ +<# + int classes = 5; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestFixture] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/NUnit10kPassing/NUnit10kPassing.csproj b/test/TestAssets/performance/NUnit10kPassing/NUnit10kPassing.csproj new file mode 100644 index 0000000000..4b0d0e5b87 --- /dev/null +++ b/test/TestAssets/performance/NUnit10kPassing/NUnit10kPassing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + + + + + + + + + + + TextTemplatingFileGenerator + NunitTests.cs + + + + + + + + + + True + True + NunitTests.tt + + + + diff --git a/test/TestAssets/performance/NUnit10kPassing/NunitTests.cs b/test/TestAssets/performance/NUnit10kPassing/NunitTests.cs new file mode 100644 index 0000000000..7cb2d4760d --- /dev/null +++ b/test/TestAssets/performance/NUnit10kPassing/NunitTests.cs @@ -0,0 +1,54505 @@ +using NUnit.Framework; + +namespace Tests +{ + [TestFixture] + public class TestClass_01 + { + #region PassingTests + [Test] + public void Test_01_01() + { + } + + [Test] + public void Test_01_02() + { + } + + [Test] + public void Test_01_03() + { + } + + [Test] + public void Test_01_04() + { + } + + [Test] + public void Test_01_05() + { + } + + [Test] + public void Test_01_06() + { + } + + [Test] + public void Test_01_07() + { + } + + [Test] + public void Test_01_08() + { + } + + [Test] + public void Test_01_09() + { + } + + [Test] + public void Test_01_10() + { + } + + [Test] + public void Test_01_11() + { + } + + [Test] + public void Test_01_12() + { + } + + [Test] + public void Test_01_13() + { + } + + [Test] + public void Test_01_14() + { + } + + [Test] + public void Test_01_15() + { + } + + [Test] + public void Test_01_16() + { + } + + [Test] + public void Test_01_17() + { + } + + [Test] + public void Test_01_18() + { + } + + [Test] + public void Test_01_19() + { + } + + [Test] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_02 + { + #region PassingTests + [Test] + public void Test_02_01() + { + } + + [Test] + public void Test_02_02() + { + } + + [Test] + public void Test_02_03() + { + } + + [Test] + public void Test_02_04() + { + } + + [Test] + public void Test_02_05() + { + } + + [Test] + public void Test_02_06() + { + } + + [Test] + public void Test_02_07() + { + } + + [Test] + public void Test_02_08() + { + } + + [Test] + public void Test_02_09() + { + } + + [Test] + public void Test_02_10() + { + } + + [Test] + public void Test_02_11() + { + } + + [Test] + public void Test_02_12() + { + } + + [Test] + public void Test_02_13() + { + } + + [Test] + public void Test_02_14() + { + } + + [Test] + public void Test_02_15() + { + } + + [Test] + public void Test_02_16() + { + } + + [Test] + public void Test_02_17() + { + } + + [Test] + public void Test_02_18() + { + } + + [Test] + public void Test_02_19() + { + } + + [Test] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_03 + { + #region PassingTests + [Test] + public void Test_03_01() + { + } + + [Test] + public void Test_03_02() + { + } + + [Test] + public void Test_03_03() + { + } + + [Test] + public void Test_03_04() + { + } + + [Test] + public void Test_03_05() + { + } + + [Test] + public void Test_03_06() + { + } + + [Test] + public void Test_03_07() + { + } + + [Test] + public void Test_03_08() + { + } + + [Test] + public void Test_03_09() + { + } + + [Test] + public void Test_03_10() + { + } + + [Test] + public void Test_03_11() + { + } + + [Test] + public void Test_03_12() + { + } + + [Test] + public void Test_03_13() + { + } + + [Test] + public void Test_03_14() + { + } + + [Test] + public void Test_03_15() + { + } + + [Test] + public void Test_03_16() + { + } + + [Test] + public void Test_03_17() + { + } + + [Test] + public void Test_03_18() + { + } + + [Test] + public void Test_03_19() + { + } + + [Test] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_04 + { + #region PassingTests + [Test] + public void Test_04_01() + { + } + + [Test] + public void Test_04_02() + { + } + + [Test] + public void Test_04_03() + { + } + + [Test] + public void Test_04_04() + { + } + + [Test] + public void Test_04_05() + { + } + + [Test] + public void Test_04_06() + { + } + + [Test] + public void Test_04_07() + { + } + + [Test] + public void Test_04_08() + { + } + + [Test] + public void Test_04_09() + { + } + + [Test] + public void Test_04_10() + { + } + + [Test] + public void Test_04_11() + { + } + + [Test] + public void Test_04_12() + { + } + + [Test] + public void Test_04_13() + { + } + + [Test] + public void Test_04_14() + { + } + + [Test] + public void Test_04_15() + { + } + + [Test] + public void Test_04_16() + { + } + + [Test] + public void Test_04_17() + { + } + + [Test] + public void Test_04_18() + { + } + + [Test] + public void Test_04_19() + { + } + + [Test] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_05 + { + #region PassingTests + [Test] + public void Test_05_01() + { + } + + [Test] + public void Test_05_02() + { + } + + [Test] + public void Test_05_03() + { + } + + [Test] + public void Test_05_04() + { + } + + [Test] + public void Test_05_05() + { + } + + [Test] + public void Test_05_06() + { + } + + [Test] + public void Test_05_07() + { + } + + [Test] + public void Test_05_08() + { + } + + [Test] + public void Test_05_09() + { + } + + [Test] + public void Test_05_10() + { + } + + [Test] + public void Test_05_11() + { + } + + [Test] + public void Test_05_12() + { + } + + [Test] + public void Test_05_13() + { + } + + [Test] + public void Test_05_14() + { + } + + [Test] + public void Test_05_15() + { + } + + [Test] + public void Test_05_16() + { + } + + [Test] + public void Test_05_17() + { + } + + [Test] + public void Test_05_18() + { + } + + [Test] + public void Test_05_19() + { + } + + [Test] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_06 + { + #region PassingTests + [Test] + public void Test_06_01() + { + } + + [Test] + public void Test_06_02() + { + } + + [Test] + public void Test_06_03() + { + } + + [Test] + public void Test_06_04() + { + } + + [Test] + public void Test_06_05() + { + } + + [Test] + public void Test_06_06() + { + } + + [Test] + public void Test_06_07() + { + } + + [Test] + public void Test_06_08() + { + } + + [Test] + public void Test_06_09() + { + } + + [Test] + public void Test_06_10() + { + } + + [Test] + public void Test_06_11() + { + } + + [Test] + public void Test_06_12() + { + } + + [Test] + public void Test_06_13() + { + } + + [Test] + public void Test_06_14() + { + } + + [Test] + public void Test_06_15() + { + } + + [Test] + public void Test_06_16() + { + } + + [Test] + public void Test_06_17() + { + } + + [Test] + public void Test_06_18() + { + } + + [Test] + public void Test_06_19() + { + } + + [Test] + public void Test_06_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_07 + { + #region PassingTests + [Test] + public void Test_07_01() + { + } + + [Test] + public void Test_07_02() + { + } + + [Test] + public void Test_07_03() + { + } + + [Test] + public void Test_07_04() + { + } + + [Test] + public void Test_07_05() + { + } + + [Test] + public void Test_07_06() + { + } + + [Test] + public void Test_07_07() + { + } + + [Test] + public void Test_07_08() + { + } + + [Test] + public void Test_07_09() + { + } + + [Test] + public void Test_07_10() + { + } + + [Test] + public void Test_07_11() + { + } + + [Test] + public void Test_07_12() + { + } + + [Test] + public void Test_07_13() + { + } + + [Test] + public void Test_07_14() + { + } + + [Test] + public void Test_07_15() + { + } + + [Test] + public void Test_07_16() + { + } + + [Test] + public void Test_07_17() + { + } + + [Test] + public void Test_07_18() + { + } + + [Test] + public void Test_07_19() + { + } + + [Test] + public void Test_07_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_08 + { + #region PassingTests + [Test] + public void Test_08_01() + { + } + + [Test] + public void Test_08_02() + { + } + + [Test] + public void Test_08_03() + { + } + + [Test] + public void Test_08_04() + { + } + + [Test] + public void Test_08_05() + { + } + + [Test] + public void Test_08_06() + { + } + + [Test] + public void Test_08_07() + { + } + + [Test] + public void Test_08_08() + { + } + + [Test] + public void Test_08_09() + { + } + + [Test] + public void Test_08_10() + { + } + + [Test] + public void Test_08_11() + { + } + + [Test] + public void Test_08_12() + { + } + + [Test] + public void Test_08_13() + { + } + + [Test] + public void Test_08_14() + { + } + + [Test] + public void Test_08_15() + { + } + + [Test] + public void Test_08_16() + { + } + + [Test] + public void Test_08_17() + { + } + + [Test] + public void Test_08_18() + { + } + + [Test] + public void Test_08_19() + { + } + + [Test] + public void Test_08_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_09 + { + #region PassingTests + [Test] + public void Test_09_01() + { + } + + [Test] + public void Test_09_02() + { + } + + [Test] + public void Test_09_03() + { + } + + [Test] + public void Test_09_04() + { + } + + [Test] + public void Test_09_05() + { + } + + [Test] + public void Test_09_06() + { + } + + [Test] + public void Test_09_07() + { + } + + [Test] + public void Test_09_08() + { + } + + [Test] + public void Test_09_09() + { + } + + [Test] + public void Test_09_10() + { + } + + [Test] + public void Test_09_11() + { + } + + [Test] + public void Test_09_12() + { + } + + [Test] + public void Test_09_13() + { + } + + [Test] + public void Test_09_14() + { + } + + [Test] + public void Test_09_15() + { + } + + [Test] + public void Test_09_16() + { + } + + [Test] + public void Test_09_17() + { + } + + [Test] + public void Test_09_18() + { + } + + [Test] + public void Test_09_19() + { + } + + [Test] + public void Test_09_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_10 + { + #region PassingTests + [Test] + public void Test_10_01() + { + } + + [Test] + public void Test_10_02() + { + } + + [Test] + public void Test_10_03() + { + } + + [Test] + public void Test_10_04() + { + } + + [Test] + public void Test_10_05() + { + } + + [Test] + public void Test_10_06() + { + } + + [Test] + public void Test_10_07() + { + } + + [Test] + public void Test_10_08() + { + } + + [Test] + public void Test_10_09() + { + } + + [Test] + public void Test_10_10() + { + } + + [Test] + public void Test_10_11() + { + } + + [Test] + public void Test_10_12() + { + } + + [Test] + public void Test_10_13() + { + } + + [Test] + public void Test_10_14() + { + } + + [Test] + public void Test_10_15() + { + } + + [Test] + public void Test_10_16() + { + } + + [Test] + public void Test_10_17() + { + } + + [Test] + public void Test_10_18() + { + } + + [Test] + public void Test_10_19() + { + } + + [Test] + public void Test_10_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_11 + { + #region PassingTests + [Test] + public void Test_11_01() + { + } + + [Test] + public void Test_11_02() + { + } + + [Test] + public void Test_11_03() + { + } + + [Test] + public void Test_11_04() + { + } + + [Test] + public void Test_11_05() + { + } + + [Test] + public void Test_11_06() + { + } + + [Test] + public void Test_11_07() + { + } + + [Test] + public void Test_11_08() + { + } + + [Test] + public void Test_11_09() + { + } + + [Test] + public void Test_11_10() + { + } + + [Test] + public void Test_11_11() + { + } + + [Test] + public void Test_11_12() + { + } + + [Test] + public void Test_11_13() + { + } + + [Test] + public void Test_11_14() + { + } + + [Test] + public void Test_11_15() + { + } + + [Test] + public void Test_11_16() + { + } + + [Test] + public void Test_11_17() + { + } + + [Test] + public void Test_11_18() + { + } + + [Test] + public void Test_11_19() + { + } + + [Test] + public void Test_11_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_12 + { + #region PassingTests + [Test] + public void Test_12_01() + { + } + + [Test] + public void Test_12_02() + { + } + + [Test] + public void Test_12_03() + { + } + + [Test] + public void Test_12_04() + { + } + + [Test] + public void Test_12_05() + { + } + + [Test] + public void Test_12_06() + { + } + + [Test] + public void Test_12_07() + { + } + + [Test] + public void Test_12_08() + { + } + + [Test] + public void Test_12_09() + { + } + + [Test] + public void Test_12_10() + { + } + + [Test] + public void Test_12_11() + { + } + + [Test] + public void Test_12_12() + { + } + + [Test] + public void Test_12_13() + { + } + + [Test] + public void Test_12_14() + { + } + + [Test] + public void Test_12_15() + { + } + + [Test] + public void Test_12_16() + { + } + + [Test] + public void Test_12_17() + { + } + + [Test] + public void Test_12_18() + { + } + + [Test] + public void Test_12_19() + { + } + + [Test] + public void Test_12_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_13 + { + #region PassingTests + [Test] + public void Test_13_01() + { + } + + [Test] + public void Test_13_02() + { + } + + [Test] + public void Test_13_03() + { + } + + [Test] + public void Test_13_04() + { + } + + [Test] + public void Test_13_05() + { + } + + [Test] + public void Test_13_06() + { + } + + [Test] + public void Test_13_07() + { + } + + [Test] + public void Test_13_08() + { + } + + [Test] + public void Test_13_09() + { + } + + [Test] + public void Test_13_10() + { + } + + [Test] + public void Test_13_11() + { + } + + [Test] + public void Test_13_12() + { + } + + [Test] + public void Test_13_13() + { + } + + [Test] + public void Test_13_14() + { + } + + [Test] + public void Test_13_15() + { + } + + [Test] + public void Test_13_16() + { + } + + [Test] + public void Test_13_17() + { + } + + [Test] + public void Test_13_18() + { + } + + [Test] + public void Test_13_19() + { + } + + [Test] + public void Test_13_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_14 + { + #region PassingTests + [Test] + public void Test_14_01() + { + } + + [Test] + public void Test_14_02() + { + } + + [Test] + public void Test_14_03() + { + } + + [Test] + public void Test_14_04() + { + } + + [Test] + public void Test_14_05() + { + } + + [Test] + public void Test_14_06() + { + } + + [Test] + public void Test_14_07() + { + } + + [Test] + public void Test_14_08() + { + } + + [Test] + public void Test_14_09() + { + } + + [Test] + public void Test_14_10() + { + } + + [Test] + public void Test_14_11() + { + } + + [Test] + public void Test_14_12() + { + } + + [Test] + public void Test_14_13() + { + } + + [Test] + public void Test_14_14() + { + } + + [Test] + public void Test_14_15() + { + } + + [Test] + public void Test_14_16() + { + } + + [Test] + public void Test_14_17() + { + } + + [Test] + public void Test_14_18() + { + } + + [Test] + public void Test_14_19() + { + } + + [Test] + public void Test_14_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_15 + { + #region PassingTests + [Test] + public void Test_15_01() + { + } + + [Test] + public void Test_15_02() + { + } + + [Test] + public void Test_15_03() + { + } + + [Test] + public void Test_15_04() + { + } + + [Test] + public void Test_15_05() + { + } + + [Test] + public void Test_15_06() + { + } + + [Test] + public void Test_15_07() + { + } + + [Test] + public void Test_15_08() + { + } + + [Test] + public void Test_15_09() + { + } + + [Test] + public void Test_15_10() + { + } + + [Test] + public void Test_15_11() + { + } + + [Test] + public void Test_15_12() + { + } + + [Test] + public void Test_15_13() + { + } + + [Test] + public void Test_15_14() + { + } + + [Test] + public void Test_15_15() + { + } + + [Test] + public void Test_15_16() + { + } + + [Test] + public void Test_15_17() + { + } + + [Test] + public void Test_15_18() + { + } + + [Test] + public void Test_15_19() + { + } + + [Test] + public void Test_15_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_16 + { + #region PassingTests + [Test] + public void Test_16_01() + { + } + + [Test] + public void Test_16_02() + { + } + + [Test] + public void Test_16_03() + { + } + + [Test] + public void Test_16_04() + { + } + + [Test] + public void Test_16_05() + { + } + + [Test] + public void Test_16_06() + { + } + + [Test] + public void Test_16_07() + { + } + + [Test] + public void Test_16_08() + { + } + + [Test] + public void Test_16_09() + { + } + + [Test] + public void Test_16_10() + { + } + + [Test] + public void Test_16_11() + { + } + + [Test] + public void Test_16_12() + { + } + + [Test] + public void Test_16_13() + { + } + + [Test] + public void Test_16_14() + { + } + + [Test] + public void Test_16_15() + { + } + + [Test] + public void Test_16_16() + { + } + + [Test] + public void Test_16_17() + { + } + + [Test] + public void Test_16_18() + { + } + + [Test] + public void Test_16_19() + { + } + + [Test] + public void Test_16_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_17 + { + #region PassingTests + [Test] + public void Test_17_01() + { + } + + [Test] + public void Test_17_02() + { + } + + [Test] + public void Test_17_03() + { + } + + [Test] + public void Test_17_04() + { + } + + [Test] + public void Test_17_05() + { + } + + [Test] + public void Test_17_06() + { + } + + [Test] + public void Test_17_07() + { + } + + [Test] + public void Test_17_08() + { + } + + [Test] + public void Test_17_09() + { + } + + [Test] + public void Test_17_10() + { + } + + [Test] + public void Test_17_11() + { + } + + [Test] + public void Test_17_12() + { + } + + [Test] + public void Test_17_13() + { + } + + [Test] + public void Test_17_14() + { + } + + [Test] + public void Test_17_15() + { + } + + [Test] + public void Test_17_16() + { + } + + [Test] + public void Test_17_17() + { + } + + [Test] + public void Test_17_18() + { + } + + [Test] + public void Test_17_19() + { + } + + [Test] + public void Test_17_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_18 + { + #region PassingTests + [Test] + public void Test_18_01() + { + } + + [Test] + public void Test_18_02() + { + } + + [Test] + public void Test_18_03() + { + } + + [Test] + public void Test_18_04() + { + } + + [Test] + public void Test_18_05() + { + } + + [Test] + public void Test_18_06() + { + } + + [Test] + public void Test_18_07() + { + } + + [Test] + public void Test_18_08() + { + } + + [Test] + public void Test_18_09() + { + } + + [Test] + public void Test_18_10() + { + } + + [Test] + public void Test_18_11() + { + } + + [Test] + public void Test_18_12() + { + } + + [Test] + public void Test_18_13() + { + } + + [Test] + public void Test_18_14() + { + } + + [Test] + public void Test_18_15() + { + } + + [Test] + public void Test_18_16() + { + } + + [Test] + public void Test_18_17() + { + } + + [Test] + public void Test_18_18() + { + } + + [Test] + public void Test_18_19() + { + } + + [Test] + public void Test_18_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_19 + { + #region PassingTests + [Test] + public void Test_19_01() + { + } + + [Test] + public void Test_19_02() + { + } + + [Test] + public void Test_19_03() + { + } + + [Test] + public void Test_19_04() + { + } + + [Test] + public void Test_19_05() + { + } + + [Test] + public void Test_19_06() + { + } + + [Test] + public void Test_19_07() + { + } + + [Test] + public void Test_19_08() + { + } + + [Test] + public void Test_19_09() + { + } + + [Test] + public void Test_19_10() + { + } + + [Test] + public void Test_19_11() + { + } + + [Test] + public void Test_19_12() + { + } + + [Test] + public void Test_19_13() + { + } + + [Test] + public void Test_19_14() + { + } + + [Test] + public void Test_19_15() + { + } + + [Test] + public void Test_19_16() + { + } + + [Test] + public void Test_19_17() + { + } + + [Test] + public void Test_19_18() + { + } + + [Test] + public void Test_19_19() + { + } + + [Test] + public void Test_19_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_20 + { + #region PassingTests + [Test] + public void Test_20_01() + { + } + + [Test] + public void Test_20_02() + { + } + + [Test] + public void Test_20_03() + { + } + + [Test] + public void Test_20_04() + { + } + + [Test] + public void Test_20_05() + { + } + + [Test] + public void Test_20_06() + { + } + + [Test] + public void Test_20_07() + { + } + + [Test] + public void Test_20_08() + { + } + + [Test] + public void Test_20_09() + { + } + + [Test] + public void Test_20_10() + { + } + + [Test] + public void Test_20_11() + { + } + + [Test] + public void Test_20_12() + { + } + + [Test] + public void Test_20_13() + { + } + + [Test] + public void Test_20_14() + { + } + + [Test] + public void Test_20_15() + { + } + + [Test] + public void Test_20_16() + { + } + + [Test] + public void Test_20_17() + { + } + + [Test] + public void Test_20_18() + { + } + + [Test] + public void Test_20_19() + { + } + + [Test] + public void Test_20_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_21 + { + #region PassingTests + [Test] + public void Test_21_01() + { + } + + [Test] + public void Test_21_02() + { + } + + [Test] + public void Test_21_03() + { + } + + [Test] + public void Test_21_04() + { + } + + [Test] + public void Test_21_05() + { + } + + [Test] + public void Test_21_06() + { + } + + [Test] + public void Test_21_07() + { + } + + [Test] + public void Test_21_08() + { + } + + [Test] + public void Test_21_09() + { + } + + [Test] + public void Test_21_10() + { + } + + [Test] + public void Test_21_11() + { + } + + [Test] + public void Test_21_12() + { + } + + [Test] + public void Test_21_13() + { + } + + [Test] + public void Test_21_14() + { + } + + [Test] + public void Test_21_15() + { + } + + [Test] + public void Test_21_16() + { + } + + [Test] + public void Test_21_17() + { + } + + [Test] + public void Test_21_18() + { + } + + [Test] + public void Test_21_19() + { + } + + [Test] + public void Test_21_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_22 + { + #region PassingTests + [Test] + public void Test_22_01() + { + } + + [Test] + public void Test_22_02() + { + } + + [Test] + public void Test_22_03() + { + } + + [Test] + public void Test_22_04() + { + } + + [Test] + public void Test_22_05() + { + } + + [Test] + public void Test_22_06() + { + } + + [Test] + public void Test_22_07() + { + } + + [Test] + public void Test_22_08() + { + } + + [Test] + public void Test_22_09() + { + } + + [Test] + public void Test_22_10() + { + } + + [Test] + public void Test_22_11() + { + } + + [Test] + public void Test_22_12() + { + } + + [Test] + public void Test_22_13() + { + } + + [Test] + public void Test_22_14() + { + } + + [Test] + public void Test_22_15() + { + } + + [Test] + public void Test_22_16() + { + } + + [Test] + public void Test_22_17() + { + } + + [Test] + public void Test_22_18() + { + } + + [Test] + public void Test_22_19() + { + } + + [Test] + public void Test_22_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_23 + { + #region PassingTests + [Test] + public void Test_23_01() + { + } + + [Test] + public void Test_23_02() + { + } + + [Test] + public void Test_23_03() + { + } + + [Test] + public void Test_23_04() + { + } + + [Test] + public void Test_23_05() + { + } + + [Test] + public void Test_23_06() + { + } + + [Test] + public void Test_23_07() + { + } + + [Test] + public void Test_23_08() + { + } + + [Test] + public void Test_23_09() + { + } + + [Test] + public void Test_23_10() + { + } + + [Test] + public void Test_23_11() + { + } + + [Test] + public void Test_23_12() + { + } + + [Test] + public void Test_23_13() + { + } + + [Test] + public void Test_23_14() + { + } + + [Test] + public void Test_23_15() + { + } + + [Test] + public void Test_23_16() + { + } + + [Test] + public void Test_23_17() + { + } + + [Test] + public void Test_23_18() + { + } + + [Test] + public void Test_23_19() + { + } + + [Test] + public void Test_23_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_24 + { + #region PassingTests + [Test] + public void Test_24_01() + { + } + + [Test] + public void Test_24_02() + { + } + + [Test] + public void Test_24_03() + { + } + + [Test] + public void Test_24_04() + { + } + + [Test] + public void Test_24_05() + { + } + + [Test] + public void Test_24_06() + { + } + + [Test] + public void Test_24_07() + { + } + + [Test] + public void Test_24_08() + { + } + + [Test] + public void Test_24_09() + { + } + + [Test] + public void Test_24_10() + { + } + + [Test] + public void Test_24_11() + { + } + + [Test] + public void Test_24_12() + { + } + + [Test] + public void Test_24_13() + { + } + + [Test] + public void Test_24_14() + { + } + + [Test] + public void Test_24_15() + { + } + + [Test] + public void Test_24_16() + { + } + + [Test] + public void Test_24_17() + { + } + + [Test] + public void Test_24_18() + { + } + + [Test] + public void Test_24_19() + { + } + + [Test] + public void Test_24_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_25 + { + #region PassingTests + [Test] + public void Test_25_01() + { + } + + [Test] + public void Test_25_02() + { + } + + [Test] + public void Test_25_03() + { + } + + [Test] + public void Test_25_04() + { + } + + [Test] + public void Test_25_05() + { + } + + [Test] + public void Test_25_06() + { + } + + [Test] + public void Test_25_07() + { + } + + [Test] + public void Test_25_08() + { + } + + [Test] + public void Test_25_09() + { + } + + [Test] + public void Test_25_10() + { + } + + [Test] + public void Test_25_11() + { + } + + [Test] + public void Test_25_12() + { + } + + [Test] + public void Test_25_13() + { + } + + [Test] + public void Test_25_14() + { + } + + [Test] + public void Test_25_15() + { + } + + [Test] + public void Test_25_16() + { + } + + [Test] + public void Test_25_17() + { + } + + [Test] + public void Test_25_18() + { + } + + [Test] + public void Test_25_19() + { + } + + [Test] + public void Test_25_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_26 + { + #region PassingTests + [Test] + public void Test_26_01() + { + } + + [Test] + public void Test_26_02() + { + } + + [Test] + public void Test_26_03() + { + } + + [Test] + public void Test_26_04() + { + } + + [Test] + public void Test_26_05() + { + } + + [Test] + public void Test_26_06() + { + } + + [Test] + public void Test_26_07() + { + } + + [Test] + public void Test_26_08() + { + } + + [Test] + public void Test_26_09() + { + } + + [Test] + public void Test_26_10() + { + } + + [Test] + public void Test_26_11() + { + } + + [Test] + public void Test_26_12() + { + } + + [Test] + public void Test_26_13() + { + } + + [Test] + public void Test_26_14() + { + } + + [Test] + public void Test_26_15() + { + } + + [Test] + public void Test_26_16() + { + } + + [Test] + public void Test_26_17() + { + } + + [Test] + public void Test_26_18() + { + } + + [Test] + public void Test_26_19() + { + } + + [Test] + public void Test_26_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_27 + { + #region PassingTests + [Test] + public void Test_27_01() + { + } + + [Test] + public void Test_27_02() + { + } + + [Test] + public void Test_27_03() + { + } + + [Test] + public void Test_27_04() + { + } + + [Test] + public void Test_27_05() + { + } + + [Test] + public void Test_27_06() + { + } + + [Test] + public void Test_27_07() + { + } + + [Test] + public void Test_27_08() + { + } + + [Test] + public void Test_27_09() + { + } + + [Test] + public void Test_27_10() + { + } + + [Test] + public void Test_27_11() + { + } + + [Test] + public void Test_27_12() + { + } + + [Test] + public void Test_27_13() + { + } + + [Test] + public void Test_27_14() + { + } + + [Test] + public void Test_27_15() + { + } + + [Test] + public void Test_27_16() + { + } + + [Test] + public void Test_27_17() + { + } + + [Test] + public void Test_27_18() + { + } + + [Test] + public void Test_27_19() + { + } + + [Test] + public void Test_27_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_28 + { + #region PassingTests + [Test] + public void Test_28_01() + { + } + + [Test] + public void Test_28_02() + { + } + + [Test] + public void Test_28_03() + { + } + + [Test] + public void Test_28_04() + { + } + + [Test] + public void Test_28_05() + { + } + + [Test] + public void Test_28_06() + { + } + + [Test] + public void Test_28_07() + { + } + + [Test] + public void Test_28_08() + { + } + + [Test] + public void Test_28_09() + { + } + + [Test] + public void Test_28_10() + { + } + + [Test] + public void Test_28_11() + { + } + + [Test] + public void Test_28_12() + { + } + + [Test] + public void Test_28_13() + { + } + + [Test] + public void Test_28_14() + { + } + + [Test] + public void Test_28_15() + { + } + + [Test] + public void Test_28_16() + { + } + + [Test] + public void Test_28_17() + { + } + + [Test] + public void Test_28_18() + { + } + + [Test] + public void Test_28_19() + { + } + + [Test] + public void Test_28_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_29 + { + #region PassingTests + [Test] + public void Test_29_01() + { + } + + [Test] + public void Test_29_02() + { + } + + [Test] + public void Test_29_03() + { + } + + [Test] + public void Test_29_04() + { + } + + [Test] + public void Test_29_05() + { + } + + [Test] + public void Test_29_06() + { + } + + [Test] + public void Test_29_07() + { + } + + [Test] + public void Test_29_08() + { + } + + [Test] + public void Test_29_09() + { + } + + [Test] + public void Test_29_10() + { + } + + [Test] + public void Test_29_11() + { + } + + [Test] + public void Test_29_12() + { + } + + [Test] + public void Test_29_13() + { + } + + [Test] + public void Test_29_14() + { + } + + [Test] + public void Test_29_15() + { + } + + [Test] + public void Test_29_16() + { + } + + [Test] + public void Test_29_17() + { + } + + [Test] + public void Test_29_18() + { + } + + [Test] + public void Test_29_19() + { + } + + [Test] + public void Test_29_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_30 + { + #region PassingTests + [Test] + public void Test_30_01() + { + } + + [Test] + public void Test_30_02() + { + } + + [Test] + public void Test_30_03() + { + } + + [Test] + public void Test_30_04() + { + } + + [Test] + public void Test_30_05() + { + } + + [Test] + public void Test_30_06() + { + } + + [Test] + public void Test_30_07() + { + } + + [Test] + public void Test_30_08() + { + } + + [Test] + public void Test_30_09() + { + } + + [Test] + public void Test_30_10() + { + } + + [Test] + public void Test_30_11() + { + } + + [Test] + public void Test_30_12() + { + } + + [Test] + public void Test_30_13() + { + } + + [Test] + public void Test_30_14() + { + } + + [Test] + public void Test_30_15() + { + } + + [Test] + public void Test_30_16() + { + } + + [Test] + public void Test_30_17() + { + } + + [Test] + public void Test_30_18() + { + } + + [Test] + public void Test_30_19() + { + } + + [Test] + public void Test_30_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_31 + { + #region PassingTests + [Test] + public void Test_31_01() + { + } + + [Test] + public void Test_31_02() + { + } + + [Test] + public void Test_31_03() + { + } + + [Test] + public void Test_31_04() + { + } + + [Test] + public void Test_31_05() + { + } + + [Test] + public void Test_31_06() + { + } + + [Test] + public void Test_31_07() + { + } + + [Test] + public void Test_31_08() + { + } + + [Test] + public void Test_31_09() + { + } + + [Test] + public void Test_31_10() + { + } + + [Test] + public void Test_31_11() + { + } + + [Test] + public void Test_31_12() + { + } + + [Test] + public void Test_31_13() + { + } + + [Test] + public void Test_31_14() + { + } + + [Test] + public void Test_31_15() + { + } + + [Test] + public void Test_31_16() + { + } + + [Test] + public void Test_31_17() + { + } + + [Test] + public void Test_31_18() + { + } + + [Test] + public void Test_31_19() + { + } + + [Test] + public void Test_31_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_32 + { + #region PassingTests + [Test] + public void Test_32_01() + { + } + + [Test] + public void Test_32_02() + { + } + + [Test] + public void Test_32_03() + { + } + + [Test] + public void Test_32_04() + { + } + + [Test] + public void Test_32_05() + { + } + + [Test] + public void Test_32_06() + { + } + + [Test] + public void Test_32_07() + { + } + + [Test] + public void Test_32_08() + { + } + + [Test] + public void Test_32_09() + { + } + + [Test] + public void Test_32_10() + { + } + + [Test] + public void Test_32_11() + { + } + + [Test] + public void Test_32_12() + { + } + + [Test] + public void Test_32_13() + { + } + + [Test] + public void Test_32_14() + { + } + + [Test] + public void Test_32_15() + { + } + + [Test] + public void Test_32_16() + { + } + + [Test] + public void Test_32_17() + { + } + + [Test] + public void Test_32_18() + { + } + + [Test] + public void Test_32_19() + { + } + + [Test] + public void Test_32_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_33 + { + #region PassingTests + [Test] + public void Test_33_01() + { + } + + [Test] + public void Test_33_02() + { + } + + [Test] + public void Test_33_03() + { + } + + [Test] + public void Test_33_04() + { + } + + [Test] + public void Test_33_05() + { + } + + [Test] + public void Test_33_06() + { + } + + [Test] + public void Test_33_07() + { + } + + [Test] + public void Test_33_08() + { + } + + [Test] + public void Test_33_09() + { + } + + [Test] + public void Test_33_10() + { + } + + [Test] + public void Test_33_11() + { + } + + [Test] + public void Test_33_12() + { + } + + [Test] + public void Test_33_13() + { + } + + [Test] + public void Test_33_14() + { + } + + [Test] + public void Test_33_15() + { + } + + [Test] + public void Test_33_16() + { + } + + [Test] + public void Test_33_17() + { + } + + [Test] + public void Test_33_18() + { + } + + [Test] + public void Test_33_19() + { + } + + [Test] + public void Test_33_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_34 + { + #region PassingTests + [Test] + public void Test_34_01() + { + } + + [Test] + public void Test_34_02() + { + } + + [Test] + public void Test_34_03() + { + } + + [Test] + public void Test_34_04() + { + } + + [Test] + public void Test_34_05() + { + } + + [Test] + public void Test_34_06() + { + } + + [Test] + public void Test_34_07() + { + } + + [Test] + public void Test_34_08() + { + } + + [Test] + public void Test_34_09() + { + } + + [Test] + public void Test_34_10() + { + } + + [Test] + public void Test_34_11() + { + } + + [Test] + public void Test_34_12() + { + } + + [Test] + public void Test_34_13() + { + } + + [Test] + public void Test_34_14() + { + } + + [Test] + public void Test_34_15() + { + } + + [Test] + public void Test_34_16() + { + } + + [Test] + public void Test_34_17() + { + } + + [Test] + public void Test_34_18() + { + } + + [Test] + public void Test_34_19() + { + } + + [Test] + public void Test_34_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_35 + { + #region PassingTests + [Test] + public void Test_35_01() + { + } + + [Test] + public void Test_35_02() + { + } + + [Test] + public void Test_35_03() + { + } + + [Test] + public void Test_35_04() + { + } + + [Test] + public void Test_35_05() + { + } + + [Test] + public void Test_35_06() + { + } + + [Test] + public void Test_35_07() + { + } + + [Test] + public void Test_35_08() + { + } + + [Test] + public void Test_35_09() + { + } + + [Test] + public void Test_35_10() + { + } + + [Test] + public void Test_35_11() + { + } + + [Test] + public void Test_35_12() + { + } + + [Test] + public void Test_35_13() + { + } + + [Test] + public void Test_35_14() + { + } + + [Test] + public void Test_35_15() + { + } + + [Test] + public void Test_35_16() + { + } + + [Test] + public void Test_35_17() + { + } + + [Test] + public void Test_35_18() + { + } + + [Test] + public void Test_35_19() + { + } + + [Test] + public void Test_35_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_36 + { + #region PassingTests + [Test] + public void Test_36_01() + { + } + + [Test] + public void Test_36_02() + { + } + + [Test] + public void Test_36_03() + { + } + + [Test] + public void Test_36_04() + { + } + + [Test] + public void Test_36_05() + { + } + + [Test] + public void Test_36_06() + { + } + + [Test] + public void Test_36_07() + { + } + + [Test] + public void Test_36_08() + { + } + + [Test] + public void Test_36_09() + { + } + + [Test] + public void Test_36_10() + { + } + + [Test] + public void Test_36_11() + { + } + + [Test] + public void Test_36_12() + { + } + + [Test] + public void Test_36_13() + { + } + + [Test] + public void Test_36_14() + { + } + + [Test] + public void Test_36_15() + { + } + + [Test] + public void Test_36_16() + { + } + + [Test] + public void Test_36_17() + { + } + + [Test] + public void Test_36_18() + { + } + + [Test] + public void Test_36_19() + { + } + + [Test] + public void Test_36_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_37 + { + #region PassingTests + [Test] + public void Test_37_01() + { + } + + [Test] + public void Test_37_02() + { + } + + [Test] + public void Test_37_03() + { + } + + [Test] + public void Test_37_04() + { + } + + [Test] + public void Test_37_05() + { + } + + [Test] + public void Test_37_06() + { + } + + [Test] + public void Test_37_07() + { + } + + [Test] + public void Test_37_08() + { + } + + [Test] + public void Test_37_09() + { + } + + [Test] + public void Test_37_10() + { + } + + [Test] + public void Test_37_11() + { + } + + [Test] + public void Test_37_12() + { + } + + [Test] + public void Test_37_13() + { + } + + [Test] + public void Test_37_14() + { + } + + [Test] + public void Test_37_15() + { + } + + [Test] + public void Test_37_16() + { + } + + [Test] + public void Test_37_17() + { + } + + [Test] + public void Test_37_18() + { + } + + [Test] + public void Test_37_19() + { + } + + [Test] + public void Test_37_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_38 + { + #region PassingTests + [Test] + public void Test_38_01() + { + } + + [Test] + public void Test_38_02() + { + } + + [Test] + public void Test_38_03() + { + } + + [Test] + public void Test_38_04() + { + } + + [Test] + public void Test_38_05() + { + } + + [Test] + public void Test_38_06() + { + } + + [Test] + public void Test_38_07() + { + } + + [Test] + public void Test_38_08() + { + } + + [Test] + public void Test_38_09() + { + } + + [Test] + public void Test_38_10() + { + } + + [Test] + public void Test_38_11() + { + } + + [Test] + public void Test_38_12() + { + } + + [Test] + public void Test_38_13() + { + } + + [Test] + public void Test_38_14() + { + } + + [Test] + public void Test_38_15() + { + } + + [Test] + public void Test_38_16() + { + } + + [Test] + public void Test_38_17() + { + } + + [Test] + public void Test_38_18() + { + } + + [Test] + public void Test_38_19() + { + } + + [Test] + public void Test_38_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_39 + { + #region PassingTests + [Test] + public void Test_39_01() + { + } + + [Test] + public void Test_39_02() + { + } + + [Test] + public void Test_39_03() + { + } + + [Test] + public void Test_39_04() + { + } + + [Test] + public void Test_39_05() + { + } + + [Test] + public void Test_39_06() + { + } + + [Test] + public void Test_39_07() + { + } + + [Test] + public void Test_39_08() + { + } + + [Test] + public void Test_39_09() + { + } + + [Test] + public void Test_39_10() + { + } + + [Test] + public void Test_39_11() + { + } + + [Test] + public void Test_39_12() + { + } + + [Test] + public void Test_39_13() + { + } + + [Test] + public void Test_39_14() + { + } + + [Test] + public void Test_39_15() + { + } + + [Test] + public void Test_39_16() + { + } + + [Test] + public void Test_39_17() + { + } + + [Test] + public void Test_39_18() + { + } + + [Test] + public void Test_39_19() + { + } + + [Test] + public void Test_39_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_40 + { + #region PassingTests + [Test] + public void Test_40_01() + { + } + + [Test] + public void Test_40_02() + { + } + + [Test] + public void Test_40_03() + { + } + + [Test] + public void Test_40_04() + { + } + + [Test] + public void Test_40_05() + { + } + + [Test] + public void Test_40_06() + { + } + + [Test] + public void Test_40_07() + { + } + + [Test] + public void Test_40_08() + { + } + + [Test] + public void Test_40_09() + { + } + + [Test] + public void Test_40_10() + { + } + + [Test] + public void Test_40_11() + { + } + + [Test] + public void Test_40_12() + { + } + + [Test] + public void Test_40_13() + { + } + + [Test] + public void Test_40_14() + { + } + + [Test] + public void Test_40_15() + { + } + + [Test] + public void Test_40_16() + { + } + + [Test] + public void Test_40_17() + { + } + + [Test] + public void Test_40_18() + { + } + + [Test] + public void Test_40_19() + { + } + + [Test] + public void Test_40_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_41 + { + #region PassingTests + [Test] + public void Test_41_01() + { + } + + [Test] + public void Test_41_02() + { + } + + [Test] + public void Test_41_03() + { + } + + [Test] + public void Test_41_04() + { + } + + [Test] + public void Test_41_05() + { + } + + [Test] + public void Test_41_06() + { + } + + [Test] + public void Test_41_07() + { + } + + [Test] + public void Test_41_08() + { + } + + [Test] + public void Test_41_09() + { + } + + [Test] + public void Test_41_10() + { + } + + [Test] + public void Test_41_11() + { + } + + [Test] + public void Test_41_12() + { + } + + [Test] + public void Test_41_13() + { + } + + [Test] + public void Test_41_14() + { + } + + [Test] + public void Test_41_15() + { + } + + [Test] + public void Test_41_16() + { + } + + [Test] + public void Test_41_17() + { + } + + [Test] + public void Test_41_18() + { + } + + [Test] + public void Test_41_19() + { + } + + [Test] + public void Test_41_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_42 + { + #region PassingTests + [Test] + public void Test_42_01() + { + } + + [Test] + public void Test_42_02() + { + } + + [Test] + public void Test_42_03() + { + } + + [Test] + public void Test_42_04() + { + } + + [Test] + public void Test_42_05() + { + } + + [Test] + public void Test_42_06() + { + } + + [Test] + public void Test_42_07() + { + } + + [Test] + public void Test_42_08() + { + } + + [Test] + public void Test_42_09() + { + } + + [Test] + public void Test_42_10() + { + } + + [Test] + public void Test_42_11() + { + } + + [Test] + public void Test_42_12() + { + } + + [Test] + public void Test_42_13() + { + } + + [Test] + public void Test_42_14() + { + } + + [Test] + public void Test_42_15() + { + } + + [Test] + public void Test_42_16() + { + } + + [Test] + public void Test_42_17() + { + } + + [Test] + public void Test_42_18() + { + } + + [Test] + public void Test_42_19() + { + } + + [Test] + public void Test_42_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_43 + { + #region PassingTests + [Test] + public void Test_43_01() + { + } + + [Test] + public void Test_43_02() + { + } + + [Test] + public void Test_43_03() + { + } + + [Test] + public void Test_43_04() + { + } + + [Test] + public void Test_43_05() + { + } + + [Test] + public void Test_43_06() + { + } + + [Test] + public void Test_43_07() + { + } + + [Test] + public void Test_43_08() + { + } + + [Test] + public void Test_43_09() + { + } + + [Test] + public void Test_43_10() + { + } + + [Test] + public void Test_43_11() + { + } + + [Test] + public void Test_43_12() + { + } + + [Test] + public void Test_43_13() + { + } + + [Test] + public void Test_43_14() + { + } + + [Test] + public void Test_43_15() + { + } + + [Test] + public void Test_43_16() + { + } + + [Test] + public void Test_43_17() + { + } + + [Test] + public void Test_43_18() + { + } + + [Test] + public void Test_43_19() + { + } + + [Test] + public void Test_43_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_44 + { + #region PassingTests + [Test] + public void Test_44_01() + { + } + + [Test] + public void Test_44_02() + { + } + + [Test] + public void Test_44_03() + { + } + + [Test] + public void Test_44_04() + { + } + + [Test] + public void Test_44_05() + { + } + + [Test] + public void Test_44_06() + { + } + + [Test] + public void Test_44_07() + { + } + + [Test] + public void Test_44_08() + { + } + + [Test] + public void Test_44_09() + { + } + + [Test] + public void Test_44_10() + { + } + + [Test] + public void Test_44_11() + { + } + + [Test] + public void Test_44_12() + { + } + + [Test] + public void Test_44_13() + { + } + + [Test] + public void Test_44_14() + { + } + + [Test] + public void Test_44_15() + { + } + + [Test] + public void Test_44_16() + { + } + + [Test] + public void Test_44_17() + { + } + + [Test] + public void Test_44_18() + { + } + + [Test] + public void Test_44_19() + { + } + + [Test] + public void Test_44_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_45 + { + #region PassingTests + [Test] + public void Test_45_01() + { + } + + [Test] + public void Test_45_02() + { + } + + [Test] + public void Test_45_03() + { + } + + [Test] + public void Test_45_04() + { + } + + [Test] + public void Test_45_05() + { + } + + [Test] + public void Test_45_06() + { + } + + [Test] + public void Test_45_07() + { + } + + [Test] + public void Test_45_08() + { + } + + [Test] + public void Test_45_09() + { + } + + [Test] + public void Test_45_10() + { + } + + [Test] + public void Test_45_11() + { + } + + [Test] + public void Test_45_12() + { + } + + [Test] + public void Test_45_13() + { + } + + [Test] + public void Test_45_14() + { + } + + [Test] + public void Test_45_15() + { + } + + [Test] + public void Test_45_16() + { + } + + [Test] + public void Test_45_17() + { + } + + [Test] + public void Test_45_18() + { + } + + [Test] + public void Test_45_19() + { + } + + [Test] + public void Test_45_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_46 + { + #region PassingTests + [Test] + public void Test_46_01() + { + } + + [Test] + public void Test_46_02() + { + } + + [Test] + public void Test_46_03() + { + } + + [Test] + public void Test_46_04() + { + } + + [Test] + public void Test_46_05() + { + } + + [Test] + public void Test_46_06() + { + } + + [Test] + public void Test_46_07() + { + } + + [Test] + public void Test_46_08() + { + } + + [Test] + public void Test_46_09() + { + } + + [Test] + public void Test_46_10() + { + } + + [Test] + public void Test_46_11() + { + } + + [Test] + public void Test_46_12() + { + } + + [Test] + public void Test_46_13() + { + } + + [Test] + public void Test_46_14() + { + } + + [Test] + public void Test_46_15() + { + } + + [Test] + public void Test_46_16() + { + } + + [Test] + public void Test_46_17() + { + } + + [Test] + public void Test_46_18() + { + } + + [Test] + public void Test_46_19() + { + } + + [Test] + public void Test_46_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_47 + { + #region PassingTests + [Test] + public void Test_47_01() + { + } + + [Test] + public void Test_47_02() + { + } + + [Test] + public void Test_47_03() + { + } + + [Test] + public void Test_47_04() + { + } + + [Test] + public void Test_47_05() + { + } + + [Test] + public void Test_47_06() + { + } + + [Test] + public void Test_47_07() + { + } + + [Test] + public void Test_47_08() + { + } + + [Test] + public void Test_47_09() + { + } + + [Test] + public void Test_47_10() + { + } + + [Test] + public void Test_47_11() + { + } + + [Test] + public void Test_47_12() + { + } + + [Test] + public void Test_47_13() + { + } + + [Test] + public void Test_47_14() + { + } + + [Test] + public void Test_47_15() + { + } + + [Test] + public void Test_47_16() + { + } + + [Test] + public void Test_47_17() + { + } + + [Test] + public void Test_47_18() + { + } + + [Test] + public void Test_47_19() + { + } + + [Test] + public void Test_47_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_48 + { + #region PassingTests + [Test] + public void Test_48_01() + { + } + + [Test] + public void Test_48_02() + { + } + + [Test] + public void Test_48_03() + { + } + + [Test] + public void Test_48_04() + { + } + + [Test] + public void Test_48_05() + { + } + + [Test] + public void Test_48_06() + { + } + + [Test] + public void Test_48_07() + { + } + + [Test] + public void Test_48_08() + { + } + + [Test] + public void Test_48_09() + { + } + + [Test] + public void Test_48_10() + { + } + + [Test] + public void Test_48_11() + { + } + + [Test] + public void Test_48_12() + { + } + + [Test] + public void Test_48_13() + { + } + + [Test] + public void Test_48_14() + { + } + + [Test] + public void Test_48_15() + { + } + + [Test] + public void Test_48_16() + { + } + + [Test] + public void Test_48_17() + { + } + + [Test] + public void Test_48_18() + { + } + + [Test] + public void Test_48_19() + { + } + + [Test] + public void Test_48_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_49 + { + #region PassingTests + [Test] + public void Test_49_01() + { + } + + [Test] + public void Test_49_02() + { + } + + [Test] + public void Test_49_03() + { + } + + [Test] + public void Test_49_04() + { + } + + [Test] + public void Test_49_05() + { + } + + [Test] + public void Test_49_06() + { + } + + [Test] + public void Test_49_07() + { + } + + [Test] + public void Test_49_08() + { + } + + [Test] + public void Test_49_09() + { + } + + [Test] + public void Test_49_10() + { + } + + [Test] + public void Test_49_11() + { + } + + [Test] + public void Test_49_12() + { + } + + [Test] + public void Test_49_13() + { + } + + [Test] + public void Test_49_14() + { + } + + [Test] + public void Test_49_15() + { + } + + [Test] + public void Test_49_16() + { + } + + [Test] + public void Test_49_17() + { + } + + [Test] + public void Test_49_18() + { + } + + [Test] + public void Test_49_19() + { + } + + [Test] + public void Test_49_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_50 + { + #region PassingTests + [Test] + public void Test_50_01() + { + } + + [Test] + public void Test_50_02() + { + } + + [Test] + public void Test_50_03() + { + } + + [Test] + public void Test_50_04() + { + } + + [Test] + public void Test_50_05() + { + } + + [Test] + public void Test_50_06() + { + } + + [Test] + public void Test_50_07() + { + } + + [Test] + public void Test_50_08() + { + } + + [Test] + public void Test_50_09() + { + } + + [Test] + public void Test_50_10() + { + } + + [Test] + public void Test_50_11() + { + } + + [Test] + public void Test_50_12() + { + } + + [Test] + public void Test_50_13() + { + } + + [Test] + public void Test_50_14() + { + } + + [Test] + public void Test_50_15() + { + } + + [Test] + public void Test_50_16() + { + } + + [Test] + public void Test_50_17() + { + } + + [Test] + public void Test_50_18() + { + } + + [Test] + public void Test_50_19() + { + } + + [Test] + public void Test_50_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_51 + { + #region PassingTests + [Test] + public void Test_51_01() + { + } + + [Test] + public void Test_51_02() + { + } + + [Test] + public void Test_51_03() + { + } + + [Test] + public void Test_51_04() + { + } + + [Test] + public void Test_51_05() + { + } + + [Test] + public void Test_51_06() + { + } + + [Test] + public void Test_51_07() + { + } + + [Test] + public void Test_51_08() + { + } + + [Test] + public void Test_51_09() + { + } + + [Test] + public void Test_51_10() + { + } + + [Test] + public void Test_51_11() + { + } + + [Test] + public void Test_51_12() + { + } + + [Test] + public void Test_51_13() + { + } + + [Test] + public void Test_51_14() + { + } + + [Test] + public void Test_51_15() + { + } + + [Test] + public void Test_51_16() + { + } + + [Test] + public void Test_51_17() + { + } + + [Test] + public void Test_51_18() + { + } + + [Test] + public void Test_51_19() + { + } + + [Test] + public void Test_51_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_52 + { + #region PassingTests + [Test] + public void Test_52_01() + { + } + + [Test] + public void Test_52_02() + { + } + + [Test] + public void Test_52_03() + { + } + + [Test] + public void Test_52_04() + { + } + + [Test] + public void Test_52_05() + { + } + + [Test] + public void Test_52_06() + { + } + + [Test] + public void Test_52_07() + { + } + + [Test] + public void Test_52_08() + { + } + + [Test] + public void Test_52_09() + { + } + + [Test] + public void Test_52_10() + { + } + + [Test] + public void Test_52_11() + { + } + + [Test] + public void Test_52_12() + { + } + + [Test] + public void Test_52_13() + { + } + + [Test] + public void Test_52_14() + { + } + + [Test] + public void Test_52_15() + { + } + + [Test] + public void Test_52_16() + { + } + + [Test] + public void Test_52_17() + { + } + + [Test] + public void Test_52_18() + { + } + + [Test] + public void Test_52_19() + { + } + + [Test] + public void Test_52_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_53 + { + #region PassingTests + [Test] + public void Test_53_01() + { + } + + [Test] + public void Test_53_02() + { + } + + [Test] + public void Test_53_03() + { + } + + [Test] + public void Test_53_04() + { + } + + [Test] + public void Test_53_05() + { + } + + [Test] + public void Test_53_06() + { + } + + [Test] + public void Test_53_07() + { + } + + [Test] + public void Test_53_08() + { + } + + [Test] + public void Test_53_09() + { + } + + [Test] + public void Test_53_10() + { + } + + [Test] + public void Test_53_11() + { + } + + [Test] + public void Test_53_12() + { + } + + [Test] + public void Test_53_13() + { + } + + [Test] + public void Test_53_14() + { + } + + [Test] + public void Test_53_15() + { + } + + [Test] + public void Test_53_16() + { + } + + [Test] + public void Test_53_17() + { + } + + [Test] + public void Test_53_18() + { + } + + [Test] + public void Test_53_19() + { + } + + [Test] + public void Test_53_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_54 + { + #region PassingTests + [Test] + public void Test_54_01() + { + } + + [Test] + public void Test_54_02() + { + } + + [Test] + public void Test_54_03() + { + } + + [Test] + public void Test_54_04() + { + } + + [Test] + public void Test_54_05() + { + } + + [Test] + public void Test_54_06() + { + } + + [Test] + public void Test_54_07() + { + } + + [Test] + public void Test_54_08() + { + } + + [Test] + public void Test_54_09() + { + } + + [Test] + public void Test_54_10() + { + } + + [Test] + public void Test_54_11() + { + } + + [Test] + public void Test_54_12() + { + } + + [Test] + public void Test_54_13() + { + } + + [Test] + public void Test_54_14() + { + } + + [Test] + public void Test_54_15() + { + } + + [Test] + public void Test_54_16() + { + } + + [Test] + public void Test_54_17() + { + } + + [Test] + public void Test_54_18() + { + } + + [Test] + public void Test_54_19() + { + } + + [Test] + public void Test_54_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_55 + { + #region PassingTests + [Test] + public void Test_55_01() + { + } + + [Test] + public void Test_55_02() + { + } + + [Test] + public void Test_55_03() + { + } + + [Test] + public void Test_55_04() + { + } + + [Test] + public void Test_55_05() + { + } + + [Test] + public void Test_55_06() + { + } + + [Test] + public void Test_55_07() + { + } + + [Test] + public void Test_55_08() + { + } + + [Test] + public void Test_55_09() + { + } + + [Test] + public void Test_55_10() + { + } + + [Test] + public void Test_55_11() + { + } + + [Test] + public void Test_55_12() + { + } + + [Test] + public void Test_55_13() + { + } + + [Test] + public void Test_55_14() + { + } + + [Test] + public void Test_55_15() + { + } + + [Test] + public void Test_55_16() + { + } + + [Test] + public void Test_55_17() + { + } + + [Test] + public void Test_55_18() + { + } + + [Test] + public void Test_55_19() + { + } + + [Test] + public void Test_55_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_56 + { + #region PassingTests + [Test] + public void Test_56_01() + { + } + + [Test] + public void Test_56_02() + { + } + + [Test] + public void Test_56_03() + { + } + + [Test] + public void Test_56_04() + { + } + + [Test] + public void Test_56_05() + { + } + + [Test] + public void Test_56_06() + { + } + + [Test] + public void Test_56_07() + { + } + + [Test] + public void Test_56_08() + { + } + + [Test] + public void Test_56_09() + { + } + + [Test] + public void Test_56_10() + { + } + + [Test] + public void Test_56_11() + { + } + + [Test] + public void Test_56_12() + { + } + + [Test] + public void Test_56_13() + { + } + + [Test] + public void Test_56_14() + { + } + + [Test] + public void Test_56_15() + { + } + + [Test] + public void Test_56_16() + { + } + + [Test] + public void Test_56_17() + { + } + + [Test] + public void Test_56_18() + { + } + + [Test] + public void Test_56_19() + { + } + + [Test] + public void Test_56_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_57 + { + #region PassingTests + [Test] + public void Test_57_01() + { + } + + [Test] + public void Test_57_02() + { + } + + [Test] + public void Test_57_03() + { + } + + [Test] + public void Test_57_04() + { + } + + [Test] + public void Test_57_05() + { + } + + [Test] + public void Test_57_06() + { + } + + [Test] + public void Test_57_07() + { + } + + [Test] + public void Test_57_08() + { + } + + [Test] + public void Test_57_09() + { + } + + [Test] + public void Test_57_10() + { + } + + [Test] + public void Test_57_11() + { + } + + [Test] + public void Test_57_12() + { + } + + [Test] + public void Test_57_13() + { + } + + [Test] + public void Test_57_14() + { + } + + [Test] + public void Test_57_15() + { + } + + [Test] + public void Test_57_16() + { + } + + [Test] + public void Test_57_17() + { + } + + [Test] + public void Test_57_18() + { + } + + [Test] + public void Test_57_19() + { + } + + [Test] + public void Test_57_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_58 + { + #region PassingTests + [Test] + public void Test_58_01() + { + } + + [Test] + public void Test_58_02() + { + } + + [Test] + public void Test_58_03() + { + } + + [Test] + public void Test_58_04() + { + } + + [Test] + public void Test_58_05() + { + } + + [Test] + public void Test_58_06() + { + } + + [Test] + public void Test_58_07() + { + } + + [Test] + public void Test_58_08() + { + } + + [Test] + public void Test_58_09() + { + } + + [Test] + public void Test_58_10() + { + } + + [Test] + public void Test_58_11() + { + } + + [Test] + public void Test_58_12() + { + } + + [Test] + public void Test_58_13() + { + } + + [Test] + public void Test_58_14() + { + } + + [Test] + public void Test_58_15() + { + } + + [Test] + public void Test_58_16() + { + } + + [Test] + public void Test_58_17() + { + } + + [Test] + public void Test_58_18() + { + } + + [Test] + public void Test_58_19() + { + } + + [Test] + public void Test_58_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_59 + { + #region PassingTests + [Test] + public void Test_59_01() + { + } + + [Test] + public void Test_59_02() + { + } + + [Test] + public void Test_59_03() + { + } + + [Test] + public void Test_59_04() + { + } + + [Test] + public void Test_59_05() + { + } + + [Test] + public void Test_59_06() + { + } + + [Test] + public void Test_59_07() + { + } + + [Test] + public void Test_59_08() + { + } + + [Test] + public void Test_59_09() + { + } + + [Test] + public void Test_59_10() + { + } + + [Test] + public void Test_59_11() + { + } + + [Test] + public void Test_59_12() + { + } + + [Test] + public void Test_59_13() + { + } + + [Test] + public void Test_59_14() + { + } + + [Test] + public void Test_59_15() + { + } + + [Test] + public void Test_59_16() + { + } + + [Test] + public void Test_59_17() + { + } + + [Test] + public void Test_59_18() + { + } + + [Test] + public void Test_59_19() + { + } + + [Test] + public void Test_59_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_60 + { + #region PassingTests + [Test] + public void Test_60_01() + { + } + + [Test] + public void Test_60_02() + { + } + + [Test] + public void Test_60_03() + { + } + + [Test] + public void Test_60_04() + { + } + + [Test] + public void Test_60_05() + { + } + + [Test] + public void Test_60_06() + { + } + + [Test] + public void Test_60_07() + { + } + + [Test] + public void Test_60_08() + { + } + + [Test] + public void Test_60_09() + { + } + + [Test] + public void Test_60_10() + { + } + + [Test] + public void Test_60_11() + { + } + + [Test] + public void Test_60_12() + { + } + + [Test] + public void Test_60_13() + { + } + + [Test] + public void Test_60_14() + { + } + + [Test] + public void Test_60_15() + { + } + + [Test] + public void Test_60_16() + { + } + + [Test] + public void Test_60_17() + { + } + + [Test] + public void Test_60_18() + { + } + + [Test] + public void Test_60_19() + { + } + + [Test] + public void Test_60_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_61 + { + #region PassingTests + [Test] + public void Test_61_01() + { + } + + [Test] + public void Test_61_02() + { + } + + [Test] + public void Test_61_03() + { + } + + [Test] + public void Test_61_04() + { + } + + [Test] + public void Test_61_05() + { + } + + [Test] + public void Test_61_06() + { + } + + [Test] + public void Test_61_07() + { + } + + [Test] + public void Test_61_08() + { + } + + [Test] + public void Test_61_09() + { + } + + [Test] + public void Test_61_10() + { + } + + [Test] + public void Test_61_11() + { + } + + [Test] + public void Test_61_12() + { + } + + [Test] + public void Test_61_13() + { + } + + [Test] + public void Test_61_14() + { + } + + [Test] + public void Test_61_15() + { + } + + [Test] + public void Test_61_16() + { + } + + [Test] + public void Test_61_17() + { + } + + [Test] + public void Test_61_18() + { + } + + [Test] + public void Test_61_19() + { + } + + [Test] + public void Test_61_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_62 + { + #region PassingTests + [Test] + public void Test_62_01() + { + } + + [Test] + public void Test_62_02() + { + } + + [Test] + public void Test_62_03() + { + } + + [Test] + public void Test_62_04() + { + } + + [Test] + public void Test_62_05() + { + } + + [Test] + public void Test_62_06() + { + } + + [Test] + public void Test_62_07() + { + } + + [Test] + public void Test_62_08() + { + } + + [Test] + public void Test_62_09() + { + } + + [Test] + public void Test_62_10() + { + } + + [Test] + public void Test_62_11() + { + } + + [Test] + public void Test_62_12() + { + } + + [Test] + public void Test_62_13() + { + } + + [Test] + public void Test_62_14() + { + } + + [Test] + public void Test_62_15() + { + } + + [Test] + public void Test_62_16() + { + } + + [Test] + public void Test_62_17() + { + } + + [Test] + public void Test_62_18() + { + } + + [Test] + public void Test_62_19() + { + } + + [Test] + public void Test_62_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_63 + { + #region PassingTests + [Test] + public void Test_63_01() + { + } + + [Test] + public void Test_63_02() + { + } + + [Test] + public void Test_63_03() + { + } + + [Test] + public void Test_63_04() + { + } + + [Test] + public void Test_63_05() + { + } + + [Test] + public void Test_63_06() + { + } + + [Test] + public void Test_63_07() + { + } + + [Test] + public void Test_63_08() + { + } + + [Test] + public void Test_63_09() + { + } + + [Test] + public void Test_63_10() + { + } + + [Test] + public void Test_63_11() + { + } + + [Test] + public void Test_63_12() + { + } + + [Test] + public void Test_63_13() + { + } + + [Test] + public void Test_63_14() + { + } + + [Test] + public void Test_63_15() + { + } + + [Test] + public void Test_63_16() + { + } + + [Test] + public void Test_63_17() + { + } + + [Test] + public void Test_63_18() + { + } + + [Test] + public void Test_63_19() + { + } + + [Test] + public void Test_63_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_64 + { + #region PassingTests + [Test] + public void Test_64_01() + { + } + + [Test] + public void Test_64_02() + { + } + + [Test] + public void Test_64_03() + { + } + + [Test] + public void Test_64_04() + { + } + + [Test] + public void Test_64_05() + { + } + + [Test] + public void Test_64_06() + { + } + + [Test] + public void Test_64_07() + { + } + + [Test] + public void Test_64_08() + { + } + + [Test] + public void Test_64_09() + { + } + + [Test] + public void Test_64_10() + { + } + + [Test] + public void Test_64_11() + { + } + + [Test] + public void Test_64_12() + { + } + + [Test] + public void Test_64_13() + { + } + + [Test] + public void Test_64_14() + { + } + + [Test] + public void Test_64_15() + { + } + + [Test] + public void Test_64_16() + { + } + + [Test] + public void Test_64_17() + { + } + + [Test] + public void Test_64_18() + { + } + + [Test] + public void Test_64_19() + { + } + + [Test] + public void Test_64_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_65 + { + #region PassingTests + [Test] + public void Test_65_01() + { + } + + [Test] + public void Test_65_02() + { + } + + [Test] + public void Test_65_03() + { + } + + [Test] + public void Test_65_04() + { + } + + [Test] + public void Test_65_05() + { + } + + [Test] + public void Test_65_06() + { + } + + [Test] + public void Test_65_07() + { + } + + [Test] + public void Test_65_08() + { + } + + [Test] + public void Test_65_09() + { + } + + [Test] + public void Test_65_10() + { + } + + [Test] + public void Test_65_11() + { + } + + [Test] + public void Test_65_12() + { + } + + [Test] + public void Test_65_13() + { + } + + [Test] + public void Test_65_14() + { + } + + [Test] + public void Test_65_15() + { + } + + [Test] + public void Test_65_16() + { + } + + [Test] + public void Test_65_17() + { + } + + [Test] + public void Test_65_18() + { + } + + [Test] + public void Test_65_19() + { + } + + [Test] + public void Test_65_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_66 + { + #region PassingTests + [Test] + public void Test_66_01() + { + } + + [Test] + public void Test_66_02() + { + } + + [Test] + public void Test_66_03() + { + } + + [Test] + public void Test_66_04() + { + } + + [Test] + public void Test_66_05() + { + } + + [Test] + public void Test_66_06() + { + } + + [Test] + public void Test_66_07() + { + } + + [Test] + public void Test_66_08() + { + } + + [Test] + public void Test_66_09() + { + } + + [Test] + public void Test_66_10() + { + } + + [Test] + public void Test_66_11() + { + } + + [Test] + public void Test_66_12() + { + } + + [Test] + public void Test_66_13() + { + } + + [Test] + public void Test_66_14() + { + } + + [Test] + public void Test_66_15() + { + } + + [Test] + public void Test_66_16() + { + } + + [Test] + public void Test_66_17() + { + } + + [Test] + public void Test_66_18() + { + } + + [Test] + public void Test_66_19() + { + } + + [Test] + public void Test_66_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_67 + { + #region PassingTests + [Test] + public void Test_67_01() + { + } + + [Test] + public void Test_67_02() + { + } + + [Test] + public void Test_67_03() + { + } + + [Test] + public void Test_67_04() + { + } + + [Test] + public void Test_67_05() + { + } + + [Test] + public void Test_67_06() + { + } + + [Test] + public void Test_67_07() + { + } + + [Test] + public void Test_67_08() + { + } + + [Test] + public void Test_67_09() + { + } + + [Test] + public void Test_67_10() + { + } + + [Test] + public void Test_67_11() + { + } + + [Test] + public void Test_67_12() + { + } + + [Test] + public void Test_67_13() + { + } + + [Test] + public void Test_67_14() + { + } + + [Test] + public void Test_67_15() + { + } + + [Test] + public void Test_67_16() + { + } + + [Test] + public void Test_67_17() + { + } + + [Test] + public void Test_67_18() + { + } + + [Test] + public void Test_67_19() + { + } + + [Test] + public void Test_67_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_68 + { + #region PassingTests + [Test] + public void Test_68_01() + { + } + + [Test] + public void Test_68_02() + { + } + + [Test] + public void Test_68_03() + { + } + + [Test] + public void Test_68_04() + { + } + + [Test] + public void Test_68_05() + { + } + + [Test] + public void Test_68_06() + { + } + + [Test] + public void Test_68_07() + { + } + + [Test] + public void Test_68_08() + { + } + + [Test] + public void Test_68_09() + { + } + + [Test] + public void Test_68_10() + { + } + + [Test] + public void Test_68_11() + { + } + + [Test] + public void Test_68_12() + { + } + + [Test] + public void Test_68_13() + { + } + + [Test] + public void Test_68_14() + { + } + + [Test] + public void Test_68_15() + { + } + + [Test] + public void Test_68_16() + { + } + + [Test] + public void Test_68_17() + { + } + + [Test] + public void Test_68_18() + { + } + + [Test] + public void Test_68_19() + { + } + + [Test] + public void Test_68_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_69 + { + #region PassingTests + [Test] + public void Test_69_01() + { + } + + [Test] + public void Test_69_02() + { + } + + [Test] + public void Test_69_03() + { + } + + [Test] + public void Test_69_04() + { + } + + [Test] + public void Test_69_05() + { + } + + [Test] + public void Test_69_06() + { + } + + [Test] + public void Test_69_07() + { + } + + [Test] + public void Test_69_08() + { + } + + [Test] + public void Test_69_09() + { + } + + [Test] + public void Test_69_10() + { + } + + [Test] + public void Test_69_11() + { + } + + [Test] + public void Test_69_12() + { + } + + [Test] + public void Test_69_13() + { + } + + [Test] + public void Test_69_14() + { + } + + [Test] + public void Test_69_15() + { + } + + [Test] + public void Test_69_16() + { + } + + [Test] + public void Test_69_17() + { + } + + [Test] + public void Test_69_18() + { + } + + [Test] + public void Test_69_19() + { + } + + [Test] + public void Test_69_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_70 + { + #region PassingTests + [Test] + public void Test_70_01() + { + } + + [Test] + public void Test_70_02() + { + } + + [Test] + public void Test_70_03() + { + } + + [Test] + public void Test_70_04() + { + } + + [Test] + public void Test_70_05() + { + } + + [Test] + public void Test_70_06() + { + } + + [Test] + public void Test_70_07() + { + } + + [Test] + public void Test_70_08() + { + } + + [Test] + public void Test_70_09() + { + } + + [Test] + public void Test_70_10() + { + } + + [Test] + public void Test_70_11() + { + } + + [Test] + public void Test_70_12() + { + } + + [Test] + public void Test_70_13() + { + } + + [Test] + public void Test_70_14() + { + } + + [Test] + public void Test_70_15() + { + } + + [Test] + public void Test_70_16() + { + } + + [Test] + public void Test_70_17() + { + } + + [Test] + public void Test_70_18() + { + } + + [Test] + public void Test_70_19() + { + } + + [Test] + public void Test_70_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_71 + { + #region PassingTests + [Test] + public void Test_71_01() + { + } + + [Test] + public void Test_71_02() + { + } + + [Test] + public void Test_71_03() + { + } + + [Test] + public void Test_71_04() + { + } + + [Test] + public void Test_71_05() + { + } + + [Test] + public void Test_71_06() + { + } + + [Test] + public void Test_71_07() + { + } + + [Test] + public void Test_71_08() + { + } + + [Test] + public void Test_71_09() + { + } + + [Test] + public void Test_71_10() + { + } + + [Test] + public void Test_71_11() + { + } + + [Test] + public void Test_71_12() + { + } + + [Test] + public void Test_71_13() + { + } + + [Test] + public void Test_71_14() + { + } + + [Test] + public void Test_71_15() + { + } + + [Test] + public void Test_71_16() + { + } + + [Test] + public void Test_71_17() + { + } + + [Test] + public void Test_71_18() + { + } + + [Test] + public void Test_71_19() + { + } + + [Test] + public void Test_71_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_72 + { + #region PassingTests + [Test] + public void Test_72_01() + { + } + + [Test] + public void Test_72_02() + { + } + + [Test] + public void Test_72_03() + { + } + + [Test] + public void Test_72_04() + { + } + + [Test] + public void Test_72_05() + { + } + + [Test] + public void Test_72_06() + { + } + + [Test] + public void Test_72_07() + { + } + + [Test] + public void Test_72_08() + { + } + + [Test] + public void Test_72_09() + { + } + + [Test] + public void Test_72_10() + { + } + + [Test] + public void Test_72_11() + { + } + + [Test] + public void Test_72_12() + { + } + + [Test] + public void Test_72_13() + { + } + + [Test] + public void Test_72_14() + { + } + + [Test] + public void Test_72_15() + { + } + + [Test] + public void Test_72_16() + { + } + + [Test] + public void Test_72_17() + { + } + + [Test] + public void Test_72_18() + { + } + + [Test] + public void Test_72_19() + { + } + + [Test] + public void Test_72_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_73 + { + #region PassingTests + [Test] + public void Test_73_01() + { + } + + [Test] + public void Test_73_02() + { + } + + [Test] + public void Test_73_03() + { + } + + [Test] + public void Test_73_04() + { + } + + [Test] + public void Test_73_05() + { + } + + [Test] + public void Test_73_06() + { + } + + [Test] + public void Test_73_07() + { + } + + [Test] + public void Test_73_08() + { + } + + [Test] + public void Test_73_09() + { + } + + [Test] + public void Test_73_10() + { + } + + [Test] + public void Test_73_11() + { + } + + [Test] + public void Test_73_12() + { + } + + [Test] + public void Test_73_13() + { + } + + [Test] + public void Test_73_14() + { + } + + [Test] + public void Test_73_15() + { + } + + [Test] + public void Test_73_16() + { + } + + [Test] + public void Test_73_17() + { + } + + [Test] + public void Test_73_18() + { + } + + [Test] + public void Test_73_19() + { + } + + [Test] + public void Test_73_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_74 + { + #region PassingTests + [Test] + public void Test_74_01() + { + } + + [Test] + public void Test_74_02() + { + } + + [Test] + public void Test_74_03() + { + } + + [Test] + public void Test_74_04() + { + } + + [Test] + public void Test_74_05() + { + } + + [Test] + public void Test_74_06() + { + } + + [Test] + public void Test_74_07() + { + } + + [Test] + public void Test_74_08() + { + } + + [Test] + public void Test_74_09() + { + } + + [Test] + public void Test_74_10() + { + } + + [Test] + public void Test_74_11() + { + } + + [Test] + public void Test_74_12() + { + } + + [Test] + public void Test_74_13() + { + } + + [Test] + public void Test_74_14() + { + } + + [Test] + public void Test_74_15() + { + } + + [Test] + public void Test_74_16() + { + } + + [Test] + public void Test_74_17() + { + } + + [Test] + public void Test_74_18() + { + } + + [Test] + public void Test_74_19() + { + } + + [Test] + public void Test_74_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_75 + { + #region PassingTests + [Test] + public void Test_75_01() + { + } + + [Test] + public void Test_75_02() + { + } + + [Test] + public void Test_75_03() + { + } + + [Test] + public void Test_75_04() + { + } + + [Test] + public void Test_75_05() + { + } + + [Test] + public void Test_75_06() + { + } + + [Test] + public void Test_75_07() + { + } + + [Test] + public void Test_75_08() + { + } + + [Test] + public void Test_75_09() + { + } + + [Test] + public void Test_75_10() + { + } + + [Test] + public void Test_75_11() + { + } + + [Test] + public void Test_75_12() + { + } + + [Test] + public void Test_75_13() + { + } + + [Test] + public void Test_75_14() + { + } + + [Test] + public void Test_75_15() + { + } + + [Test] + public void Test_75_16() + { + } + + [Test] + public void Test_75_17() + { + } + + [Test] + public void Test_75_18() + { + } + + [Test] + public void Test_75_19() + { + } + + [Test] + public void Test_75_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_76 + { + #region PassingTests + [Test] + public void Test_76_01() + { + } + + [Test] + public void Test_76_02() + { + } + + [Test] + public void Test_76_03() + { + } + + [Test] + public void Test_76_04() + { + } + + [Test] + public void Test_76_05() + { + } + + [Test] + public void Test_76_06() + { + } + + [Test] + public void Test_76_07() + { + } + + [Test] + public void Test_76_08() + { + } + + [Test] + public void Test_76_09() + { + } + + [Test] + public void Test_76_10() + { + } + + [Test] + public void Test_76_11() + { + } + + [Test] + public void Test_76_12() + { + } + + [Test] + public void Test_76_13() + { + } + + [Test] + public void Test_76_14() + { + } + + [Test] + public void Test_76_15() + { + } + + [Test] + public void Test_76_16() + { + } + + [Test] + public void Test_76_17() + { + } + + [Test] + public void Test_76_18() + { + } + + [Test] + public void Test_76_19() + { + } + + [Test] + public void Test_76_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_77 + { + #region PassingTests + [Test] + public void Test_77_01() + { + } + + [Test] + public void Test_77_02() + { + } + + [Test] + public void Test_77_03() + { + } + + [Test] + public void Test_77_04() + { + } + + [Test] + public void Test_77_05() + { + } + + [Test] + public void Test_77_06() + { + } + + [Test] + public void Test_77_07() + { + } + + [Test] + public void Test_77_08() + { + } + + [Test] + public void Test_77_09() + { + } + + [Test] + public void Test_77_10() + { + } + + [Test] + public void Test_77_11() + { + } + + [Test] + public void Test_77_12() + { + } + + [Test] + public void Test_77_13() + { + } + + [Test] + public void Test_77_14() + { + } + + [Test] + public void Test_77_15() + { + } + + [Test] + public void Test_77_16() + { + } + + [Test] + public void Test_77_17() + { + } + + [Test] + public void Test_77_18() + { + } + + [Test] + public void Test_77_19() + { + } + + [Test] + public void Test_77_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_78 + { + #region PassingTests + [Test] + public void Test_78_01() + { + } + + [Test] + public void Test_78_02() + { + } + + [Test] + public void Test_78_03() + { + } + + [Test] + public void Test_78_04() + { + } + + [Test] + public void Test_78_05() + { + } + + [Test] + public void Test_78_06() + { + } + + [Test] + public void Test_78_07() + { + } + + [Test] + public void Test_78_08() + { + } + + [Test] + public void Test_78_09() + { + } + + [Test] + public void Test_78_10() + { + } + + [Test] + public void Test_78_11() + { + } + + [Test] + public void Test_78_12() + { + } + + [Test] + public void Test_78_13() + { + } + + [Test] + public void Test_78_14() + { + } + + [Test] + public void Test_78_15() + { + } + + [Test] + public void Test_78_16() + { + } + + [Test] + public void Test_78_17() + { + } + + [Test] + public void Test_78_18() + { + } + + [Test] + public void Test_78_19() + { + } + + [Test] + public void Test_78_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_79 + { + #region PassingTests + [Test] + public void Test_79_01() + { + } + + [Test] + public void Test_79_02() + { + } + + [Test] + public void Test_79_03() + { + } + + [Test] + public void Test_79_04() + { + } + + [Test] + public void Test_79_05() + { + } + + [Test] + public void Test_79_06() + { + } + + [Test] + public void Test_79_07() + { + } + + [Test] + public void Test_79_08() + { + } + + [Test] + public void Test_79_09() + { + } + + [Test] + public void Test_79_10() + { + } + + [Test] + public void Test_79_11() + { + } + + [Test] + public void Test_79_12() + { + } + + [Test] + public void Test_79_13() + { + } + + [Test] + public void Test_79_14() + { + } + + [Test] + public void Test_79_15() + { + } + + [Test] + public void Test_79_16() + { + } + + [Test] + public void Test_79_17() + { + } + + [Test] + public void Test_79_18() + { + } + + [Test] + public void Test_79_19() + { + } + + [Test] + public void Test_79_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_80 + { + #region PassingTests + [Test] + public void Test_80_01() + { + } + + [Test] + public void Test_80_02() + { + } + + [Test] + public void Test_80_03() + { + } + + [Test] + public void Test_80_04() + { + } + + [Test] + public void Test_80_05() + { + } + + [Test] + public void Test_80_06() + { + } + + [Test] + public void Test_80_07() + { + } + + [Test] + public void Test_80_08() + { + } + + [Test] + public void Test_80_09() + { + } + + [Test] + public void Test_80_10() + { + } + + [Test] + public void Test_80_11() + { + } + + [Test] + public void Test_80_12() + { + } + + [Test] + public void Test_80_13() + { + } + + [Test] + public void Test_80_14() + { + } + + [Test] + public void Test_80_15() + { + } + + [Test] + public void Test_80_16() + { + } + + [Test] + public void Test_80_17() + { + } + + [Test] + public void Test_80_18() + { + } + + [Test] + public void Test_80_19() + { + } + + [Test] + public void Test_80_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_81 + { + #region PassingTests + [Test] + public void Test_81_01() + { + } + + [Test] + public void Test_81_02() + { + } + + [Test] + public void Test_81_03() + { + } + + [Test] + public void Test_81_04() + { + } + + [Test] + public void Test_81_05() + { + } + + [Test] + public void Test_81_06() + { + } + + [Test] + public void Test_81_07() + { + } + + [Test] + public void Test_81_08() + { + } + + [Test] + public void Test_81_09() + { + } + + [Test] + public void Test_81_10() + { + } + + [Test] + public void Test_81_11() + { + } + + [Test] + public void Test_81_12() + { + } + + [Test] + public void Test_81_13() + { + } + + [Test] + public void Test_81_14() + { + } + + [Test] + public void Test_81_15() + { + } + + [Test] + public void Test_81_16() + { + } + + [Test] + public void Test_81_17() + { + } + + [Test] + public void Test_81_18() + { + } + + [Test] + public void Test_81_19() + { + } + + [Test] + public void Test_81_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_82 + { + #region PassingTests + [Test] + public void Test_82_01() + { + } + + [Test] + public void Test_82_02() + { + } + + [Test] + public void Test_82_03() + { + } + + [Test] + public void Test_82_04() + { + } + + [Test] + public void Test_82_05() + { + } + + [Test] + public void Test_82_06() + { + } + + [Test] + public void Test_82_07() + { + } + + [Test] + public void Test_82_08() + { + } + + [Test] + public void Test_82_09() + { + } + + [Test] + public void Test_82_10() + { + } + + [Test] + public void Test_82_11() + { + } + + [Test] + public void Test_82_12() + { + } + + [Test] + public void Test_82_13() + { + } + + [Test] + public void Test_82_14() + { + } + + [Test] + public void Test_82_15() + { + } + + [Test] + public void Test_82_16() + { + } + + [Test] + public void Test_82_17() + { + } + + [Test] + public void Test_82_18() + { + } + + [Test] + public void Test_82_19() + { + } + + [Test] + public void Test_82_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_83 + { + #region PassingTests + [Test] + public void Test_83_01() + { + } + + [Test] + public void Test_83_02() + { + } + + [Test] + public void Test_83_03() + { + } + + [Test] + public void Test_83_04() + { + } + + [Test] + public void Test_83_05() + { + } + + [Test] + public void Test_83_06() + { + } + + [Test] + public void Test_83_07() + { + } + + [Test] + public void Test_83_08() + { + } + + [Test] + public void Test_83_09() + { + } + + [Test] + public void Test_83_10() + { + } + + [Test] + public void Test_83_11() + { + } + + [Test] + public void Test_83_12() + { + } + + [Test] + public void Test_83_13() + { + } + + [Test] + public void Test_83_14() + { + } + + [Test] + public void Test_83_15() + { + } + + [Test] + public void Test_83_16() + { + } + + [Test] + public void Test_83_17() + { + } + + [Test] + public void Test_83_18() + { + } + + [Test] + public void Test_83_19() + { + } + + [Test] + public void Test_83_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_84 + { + #region PassingTests + [Test] + public void Test_84_01() + { + } + + [Test] + public void Test_84_02() + { + } + + [Test] + public void Test_84_03() + { + } + + [Test] + public void Test_84_04() + { + } + + [Test] + public void Test_84_05() + { + } + + [Test] + public void Test_84_06() + { + } + + [Test] + public void Test_84_07() + { + } + + [Test] + public void Test_84_08() + { + } + + [Test] + public void Test_84_09() + { + } + + [Test] + public void Test_84_10() + { + } + + [Test] + public void Test_84_11() + { + } + + [Test] + public void Test_84_12() + { + } + + [Test] + public void Test_84_13() + { + } + + [Test] + public void Test_84_14() + { + } + + [Test] + public void Test_84_15() + { + } + + [Test] + public void Test_84_16() + { + } + + [Test] + public void Test_84_17() + { + } + + [Test] + public void Test_84_18() + { + } + + [Test] + public void Test_84_19() + { + } + + [Test] + public void Test_84_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_85 + { + #region PassingTests + [Test] + public void Test_85_01() + { + } + + [Test] + public void Test_85_02() + { + } + + [Test] + public void Test_85_03() + { + } + + [Test] + public void Test_85_04() + { + } + + [Test] + public void Test_85_05() + { + } + + [Test] + public void Test_85_06() + { + } + + [Test] + public void Test_85_07() + { + } + + [Test] + public void Test_85_08() + { + } + + [Test] + public void Test_85_09() + { + } + + [Test] + public void Test_85_10() + { + } + + [Test] + public void Test_85_11() + { + } + + [Test] + public void Test_85_12() + { + } + + [Test] + public void Test_85_13() + { + } + + [Test] + public void Test_85_14() + { + } + + [Test] + public void Test_85_15() + { + } + + [Test] + public void Test_85_16() + { + } + + [Test] + public void Test_85_17() + { + } + + [Test] + public void Test_85_18() + { + } + + [Test] + public void Test_85_19() + { + } + + [Test] + public void Test_85_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_86 + { + #region PassingTests + [Test] + public void Test_86_01() + { + } + + [Test] + public void Test_86_02() + { + } + + [Test] + public void Test_86_03() + { + } + + [Test] + public void Test_86_04() + { + } + + [Test] + public void Test_86_05() + { + } + + [Test] + public void Test_86_06() + { + } + + [Test] + public void Test_86_07() + { + } + + [Test] + public void Test_86_08() + { + } + + [Test] + public void Test_86_09() + { + } + + [Test] + public void Test_86_10() + { + } + + [Test] + public void Test_86_11() + { + } + + [Test] + public void Test_86_12() + { + } + + [Test] + public void Test_86_13() + { + } + + [Test] + public void Test_86_14() + { + } + + [Test] + public void Test_86_15() + { + } + + [Test] + public void Test_86_16() + { + } + + [Test] + public void Test_86_17() + { + } + + [Test] + public void Test_86_18() + { + } + + [Test] + public void Test_86_19() + { + } + + [Test] + public void Test_86_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_87 + { + #region PassingTests + [Test] + public void Test_87_01() + { + } + + [Test] + public void Test_87_02() + { + } + + [Test] + public void Test_87_03() + { + } + + [Test] + public void Test_87_04() + { + } + + [Test] + public void Test_87_05() + { + } + + [Test] + public void Test_87_06() + { + } + + [Test] + public void Test_87_07() + { + } + + [Test] + public void Test_87_08() + { + } + + [Test] + public void Test_87_09() + { + } + + [Test] + public void Test_87_10() + { + } + + [Test] + public void Test_87_11() + { + } + + [Test] + public void Test_87_12() + { + } + + [Test] + public void Test_87_13() + { + } + + [Test] + public void Test_87_14() + { + } + + [Test] + public void Test_87_15() + { + } + + [Test] + public void Test_87_16() + { + } + + [Test] + public void Test_87_17() + { + } + + [Test] + public void Test_87_18() + { + } + + [Test] + public void Test_87_19() + { + } + + [Test] + public void Test_87_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_88 + { + #region PassingTests + [Test] + public void Test_88_01() + { + } + + [Test] + public void Test_88_02() + { + } + + [Test] + public void Test_88_03() + { + } + + [Test] + public void Test_88_04() + { + } + + [Test] + public void Test_88_05() + { + } + + [Test] + public void Test_88_06() + { + } + + [Test] + public void Test_88_07() + { + } + + [Test] + public void Test_88_08() + { + } + + [Test] + public void Test_88_09() + { + } + + [Test] + public void Test_88_10() + { + } + + [Test] + public void Test_88_11() + { + } + + [Test] + public void Test_88_12() + { + } + + [Test] + public void Test_88_13() + { + } + + [Test] + public void Test_88_14() + { + } + + [Test] + public void Test_88_15() + { + } + + [Test] + public void Test_88_16() + { + } + + [Test] + public void Test_88_17() + { + } + + [Test] + public void Test_88_18() + { + } + + [Test] + public void Test_88_19() + { + } + + [Test] + public void Test_88_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_89 + { + #region PassingTests + [Test] + public void Test_89_01() + { + } + + [Test] + public void Test_89_02() + { + } + + [Test] + public void Test_89_03() + { + } + + [Test] + public void Test_89_04() + { + } + + [Test] + public void Test_89_05() + { + } + + [Test] + public void Test_89_06() + { + } + + [Test] + public void Test_89_07() + { + } + + [Test] + public void Test_89_08() + { + } + + [Test] + public void Test_89_09() + { + } + + [Test] + public void Test_89_10() + { + } + + [Test] + public void Test_89_11() + { + } + + [Test] + public void Test_89_12() + { + } + + [Test] + public void Test_89_13() + { + } + + [Test] + public void Test_89_14() + { + } + + [Test] + public void Test_89_15() + { + } + + [Test] + public void Test_89_16() + { + } + + [Test] + public void Test_89_17() + { + } + + [Test] + public void Test_89_18() + { + } + + [Test] + public void Test_89_19() + { + } + + [Test] + public void Test_89_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_90 + { + #region PassingTests + [Test] + public void Test_90_01() + { + } + + [Test] + public void Test_90_02() + { + } + + [Test] + public void Test_90_03() + { + } + + [Test] + public void Test_90_04() + { + } + + [Test] + public void Test_90_05() + { + } + + [Test] + public void Test_90_06() + { + } + + [Test] + public void Test_90_07() + { + } + + [Test] + public void Test_90_08() + { + } + + [Test] + public void Test_90_09() + { + } + + [Test] + public void Test_90_10() + { + } + + [Test] + public void Test_90_11() + { + } + + [Test] + public void Test_90_12() + { + } + + [Test] + public void Test_90_13() + { + } + + [Test] + public void Test_90_14() + { + } + + [Test] + public void Test_90_15() + { + } + + [Test] + public void Test_90_16() + { + } + + [Test] + public void Test_90_17() + { + } + + [Test] + public void Test_90_18() + { + } + + [Test] + public void Test_90_19() + { + } + + [Test] + public void Test_90_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_91 + { + #region PassingTests + [Test] + public void Test_91_01() + { + } + + [Test] + public void Test_91_02() + { + } + + [Test] + public void Test_91_03() + { + } + + [Test] + public void Test_91_04() + { + } + + [Test] + public void Test_91_05() + { + } + + [Test] + public void Test_91_06() + { + } + + [Test] + public void Test_91_07() + { + } + + [Test] + public void Test_91_08() + { + } + + [Test] + public void Test_91_09() + { + } + + [Test] + public void Test_91_10() + { + } + + [Test] + public void Test_91_11() + { + } + + [Test] + public void Test_91_12() + { + } + + [Test] + public void Test_91_13() + { + } + + [Test] + public void Test_91_14() + { + } + + [Test] + public void Test_91_15() + { + } + + [Test] + public void Test_91_16() + { + } + + [Test] + public void Test_91_17() + { + } + + [Test] + public void Test_91_18() + { + } + + [Test] + public void Test_91_19() + { + } + + [Test] + public void Test_91_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_92 + { + #region PassingTests + [Test] + public void Test_92_01() + { + } + + [Test] + public void Test_92_02() + { + } + + [Test] + public void Test_92_03() + { + } + + [Test] + public void Test_92_04() + { + } + + [Test] + public void Test_92_05() + { + } + + [Test] + public void Test_92_06() + { + } + + [Test] + public void Test_92_07() + { + } + + [Test] + public void Test_92_08() + { + } + + [Test] + public void Test_92_09() + { + } + + [Test] + public void Test_92_10() + { + } + + [Test] + public void Test_92_11() + { + } + + [Test] + public void Test_92_12() + { + } + + [Test] + public void Test_92_13() + { + } + + [Test] + public void Test_92_14() + { + } + + [Test] + public void Test_92_15() + { + } + + [Test] + public void Test_92_16() + { + } + + [Test] + public void Test_92_17() + { + } + + [Test] + public void Test_92_18() + { + } + + [Test] + public void Test_92_19() + { + } + + [Test] + public void Test_92_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_93 + { + #region PassingTests + [Test] + public void Test_93_01() + { + } + + [Test] + public void Test_93_02() + { + } + + [Test] + public void Test_93_03() + { + } + + [Test] + public void Test_93_04() + { + } + + [Test] + public void Test_93_05() + { + } + + [Test] + public void Test_93_06() + { + } + + [Test] + public void Test_93_07() + { + } + + [Test] + public void Test_93_08() + { + } + + [Test] + public void Test_93_09() + { + } + + [Test] + public void Test_93_10() + { + } + + [Test] + public void Test_93_11() + { + } + + [Test] + public void Test_93_12() + { + } + + [Test] + public void Test_93_13() + { + } + + [Test] + public void Test_93_14() + { + } + + [Test] + public void Test_93_15() + { + } + + [Test] + public void Test_93_16() + { + } + + [Test] + public void Test_93_17() + { + } + + [Test] + public void Test_93_18() + { + } + + [Test] + public void Test_93_19() + { + } + + [Test] + public void Test_93_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_94 + { + #region PassingTests + [Test] + public void Test_94_01() + { + } + + [Test] + public void Test_94_02() + { + } + + [Test] + public void Test_94_03() + { + } + + [Test] + public void Test_94_04() + { + } + + [Test] + public void Test_94_05() + { + } + + [Test] + public void Test_94_06() + { + } + + [Test] + public void Test_94_07() + { + } + + [Test] + public void Test_94_08() + { + } + + [Test] + public void Test_94_09() + { + } + + [Test] + public void Test_94_10() + { + } + + [Test] + public void Test_94_11() + { + } + + [Test] + public void Test_94_12() + { + } + + [Test] + public void Test_94_13() + { + } + + [Test] + public void Test_94_14() + { + } + + [Test] + public void Test_94_15() + { + } + + [Test] + public void Test_94_16() + { + } + + [Test] + public void Test_94_17() + { + } + + [Test] + public void Test_94_18() + { + } + + [Test] + public void Test_94_19() + { + } + + [Test] + public void Test_94_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_95 + { + #region PassingTests + [Test] + public void Test_95_01() + { + } + + [Test] + public void Test_95_02() + { + } + + [Test] + public void Test_95_03() + { + } + + [Test] + public void Test_95_04() + { + } + + [Test] + public void Test_95_05() + { + } + + [Test] + public void Test_95_06() + { + } + + [Test] + public void Test_95_07() + { + } + + [Test] + public void Test_95_08() + { + } + + [Test] + public void Test_95_09() + { + } + + [Test] + public void Test_95_10() + { + } + + [Test] + public void Test_95_11() + { + } + + [Test] + public void Test_95_12() + { + } + + [Test] + public void Test_95_13() + { + } + + [Test] + public void Test_95_14() + { + } + + [Test] + public void Test_95_15() + { + } + + [Test] + public void Test_95_16() + { + } + + [Test] + public void Test_95_17() + { + } + + [Test] + public void Test_95_18() + { + } + + [Test] + public void Test_95_19() + { + } + + [Test] + public void Test_95_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_96 + { + #region PassingTests + [Test] + public void Test_96_01() + { + } + + [Test] + public void Test_96_02() + { + } + + [Test] + public void Test_96_03() + { + } + + [Test] + public void Test_96_04() + { + } + + [Test] + public void Test_96_05() + { + } + + [Test] + public void Test_96_06() + { + } + + [Test] + public void Test_96_07() + { + } + + [Test] + public void Test_96_08() + { + } + + [Test] + public void Test_96_09() + { + } + + [Test] + public void Test_96_10() + { + } + + [Test] + public void Test_96_11() + { + } + + [Test] + public void Test_96_12() + { + } + + [Test] + public void Test_96_13() + { + } + + [Test] + public void Test_96_14() + { + } + + [Test] + public void Test_96_15() + { + } + + [Test] + public void Test_96_16() + { + } + + [Test] + public void Test_96_17() + { + } + + [Test] + public void Test_96_18() + { + } + + [Test] + public void Test_96_19() + { + } + + [Test] + public void Test_96_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_97 + { + #region PassingTests + [Test] + public void Test_97_01() + { + } + + [Test] + public void Test_97_02() + { + } + + [Test] + public void Test_97_03() + { + } + + [Test] + public void Test_97_04() + { + } + + [Test] + public void Test_97_05() + { + } + + [Test] + public void Test_97_06() + { + } + + [Test] + public void Test_97_07() + { + } + + [Test] + public void Test_97_08() + { + } + + [Test] + public void Test_97_09() + { + } + + [Test] + public void Test_97_10() + { + } + + [Test] + public void Test_97_11() + { + } + + [Test] + public void Test_97_12() + { + } + + [Test] + public void Test_97_13() + { + } + + [Test] + public void Test_97_14() + { + } + + [Test] + public void Test_97_15() + { + } + + [Test] + public void Test_97_16() + { + } + + [Test] + public void Test_97_17() + { + } + + [Test] + public void Test_97_18() + { + } + + [Test] + public void Test_97_19() + { + } + + [Test] + public void Test_97_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_98 + { + #region PassingTests + [Test] + public void Test_98_01() + { + } + + [Test] + public void Test_98_02() + { + } + + [Test] + public void Test_98_03() + { + } + + [Test] + public void Test_98_04() + { + } + + [Test] + public void Test_98_05() + { + } + + [Test] + public void Test_98_06() + { + } + + [Test] + public void Test_98_07() + { + } + + [Test] + public void Test_98_08() + { + } + + [Test] + public void Test_98_09() + { + } + + [Test] + public void Test_98_10() + { + } + + [Test] + public void Test_98_11() + { + } + + [Test] + public void Test_98_12() + { + } + + [Test] + public void Test_98_13() + { + } + + [Test] + public void Test_98_14() + { + } + + [Test] + public void Test_98_15() + { + } + + [Test] + public void Test_98_16() + { + } + + [Test] + public void Test_98_17() + { + } + + [Test] + public void Test_98_18() + { + } + + [Test] + public void Test_98_19() + { + } + + [Test] + public void Test_98_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_99 + { + #region PassingTests + [Test] + public void Test_99_01() + { + } + + [Test] + public void Test_99_02() + { + } + + [Test] + public void Test_99_03() + { + } + + [Test] + public void Test_99_04() + { + } + + [Test] + public void Test_99_05() + { + } + + [Test] + public void Test_99_06() + { + } + + [Test] + public void Test_99_07() + { + } + + [Test] + public void Test_99_08() + { + } + + [Test] + public void Test_99_09() + { + } + + [Test] + public void Test_99_10() + { + } + + [Test] + public void Test_99_11() + { + } + + [Test] + public void Test_99_12() + { + } + + [Test] + public void Test_99_13() + { + } + + [Test] + public void Test_99_14() + { + } + + [Test] + public void Test_99_15() + { + } + + [Test] + public void Test_99_16() + { + } + + [Test] + public void Test_99_17() + { + } + + [Test] + public void Test_99_18() + { + } + + [Test] + public void Test_99_19() + { + } + + [Test] + public void Test_99_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_100 + { + #region PassingTests + [Test] + public void Test_100_01() + { + } + + [Test] + public void Test_100_02() + { + } + + [Test] + public void Test_100_03() + { + } + + [Test] + public void Test_100_04() + { + } + + [Test] + public void Test_100_05() + { + } + + [Test] + public void Test_100_06() + { + } + + [Test] + public void Test_100_07() + { + } + + [Test] + public void Test_100_08() + { + } + + [Test] + public void Test_100_09() + { + } + + [Test] + public void Test_100_10() + { + } + + [Test] + public void Test_100_11() + { + } + + [Test] + public void Test_100_12() + { + } + + [Test] + public void Test_100_13() + { + } + + [Test] + public void Test_100_14() + { + } + + [Test] + public void Test_100_15() + { + } + + [Test] + public void Test_100_16() + { + } + + [Test] + public void Test_100_17() + { + } + + [Test] + public void Test_100_18() + { + } + + [Test] + public void Test_100_19() + { + } + + [Test] + public void Test_100_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_101 + { + #region PassingTests + [Test] + public void Test_101_01() + { + } + + [Test] + public void Test_101_02() + { + } + + [Test] + public void Test_101_03() + { + } + + [Test] + public void Test_101_04() + { + } + + [Test] + public void Test_101_05() + { + } + + [Test] + public void Test_101_06() + { + } + + [Test] + public void Test_101_07() + { + } + + [Test] + public void Test_101_08() + { + } + + [Test] + public void Test_101_09() + { + } + + [Test] + public void Test_101_10() + { + } + + [Test] + public void Test_101_11() + { + } + + [Test] + public void Test_101_12() + { + } + + [Test] + public void Test_101_13() + { + } + + [Test] + public void Test_101_14() + { + } + + [Test] + public void Test_101_15() + { + } + + [Test] + public void Test_101_16() + { + } + + [Test] + public void Test_101_17() + { + } + + [Test] + public void Test_101_18() + { + } + + [Test] + public void Test_101_19() + { + } + + [Test] + public void Test_101_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_102 + { + #region PassingTests + [Test] + public void Test_102_01() + { + } + + [Test] + public void Test_102_02() + { + } + + [Test] + public void Test_102_03() + { + } + + [Test] + public void Test_102_04() + { + } + + [Test] + public void Test_102_05() + { + } + + [Test] + public void Test_102_06() + { + } + + [Test] + public void Test_102_07() + { + } + + [Test] + public void Test_102_08() + { + } + + [Test] + public void Test_102_09() + { + } + + [Test] + public void Test_102_10() + { + } + + [Test] + public void Test_102_11() + { + } + + [Test] + public void Test_102_12() + { + } + + [Test] + public void Test_102_13() + { + } + + [Test] + public void Test_102_14() + { + } + + [Test] + public void Test_102_15() + { + } + + [Test] + public void Test_102_16() + { + } + + [Test] + public void Test_102_17() + { + } + + [Test] + public void Test_102_18() + { + } + + [Test] + public void Test_102_19() + { + } + + [Test] + public void Test_102_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_103 + { + #region PassingTests + [Test] + public void Test_103_01() + { + } + + [Test] + public void Test_103_02() + { + } + + [Test] + public void Test_103_03() + { + } + + [Test] + public void Test_103_04() + { + } + + [Test] + public void Test_103_05() + { + } + + [Test] + public void Test_103_06() + { + } + + [Test] + public void Test_103_07() + { + } + + [Test] + public void Test_103_08() + { + } + + [Test] + public void Test_103_09() + { + } + + [Test] + public void Test_103_10() + { + } + + [Test] + public void Test_103_11() + { + } + + [Test] + public void Test_103_12() + { + } + + [Test] + public void Test_103_13() + { + } + + [Test] + public void Test_103_14() + { + } + + [Test] + public void Test_103_15() + { + } + + [Test] + public void Test_103_16() + { + } + + [Test] + public void Test_103_17() + { + } + + [Test] + public void Test_103_18() + { + } + + [Test] + public void Test_103_19() + { + } + + [Test] + public void Test_103_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_104 + { + #region PassingTests + [Test] + public void Test_104_01() + { + } + + [Test] + public void Test_104_02() + { + } + + [Test] + public void Test_104_03() + { + } + + [Test] + public void Test_104_04() + { + } + + [Test] + public void Test_104_05() + { + } + + [Test] + public void Test_104_06() + { + } + + [Test] + public void Test_104_07() + { + } + + [Test] + public void Test_104_08() + { + } + + [Test] + public void Test_104_09() + { + } + + [Test] + public void Test_104_10() + { + } + + [Test] + public void Test_104_11() + { + } + + [Test] + public void Test_104_12() + { + } + + [Test] + public void Test_104_13() + { + } + + [Test] + public void Test_104_14() + { + } + + [Test] + public void Test_104_15() + { + } + + [Test] + public void Test_104_16() + { + } + + [Test] + public void Test_104_17() + { + } + + [Test] + public void Test_104_18() + { + } + + [Test] + public void Test_104_19() + { + } + + [Test] + public void Test_104_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_105 + { + #region PassingTests + [Test] + public void Test_105_01() + { + } + + [Test] + public void Test_105_02() + { + } + + [Test] + public void Test_105_03() + { + } + + [Test] + public void Test_105_04() + { + } + + [Test] + public void Test_105_05() + { + } + + [Test] + public void Test_105_06() + { + } + + [Test] + public void Test_105_07() + { + } + + [Test] + public void Test_105_08() + { + } + + [Test] + public void Test_105_09() + { + } + + [Test] + public void Test_105_10() + { + } + + [Test] + public void Test_105_11() + { + } + + [Test] + public void Test_105_12() + { + } + + [Test] + public void Test_105_13() + { + } + + [Test] + public void Test_105_14() + { + } + + [Test] + public void Test_105_15() + { + } + + [Test] + public void Test_105_16() + { + } + + [Test] + public void Test_105_17() + { + } + + [Test] + public void Test_105_18() + { + } + + [Test] + public void Test_105_19() + { + } + + [Test] + public void Test_105_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_106 + { + #region PassingTests + [Test] + public void Test_106_01() + { + } + + [Test] + public void Test_106_02() + { + } + + [Test] + public void Test_106_03() + { + } + + [Test] + public void Test_106_04() + { + } + + [Test] + public void Test_106_05() + { + } + + [Test] + public void Test_106_06() + { + } + + [Test] + public void Test_106_07() + { + } + + [Test] + public void Test_106_08() + { + } + + [Test] + public void Test_106_09() + { + } + + [Test] + public void Test_106_10() + { + } + + [Test] + public void Test_106_11() + { + } + + [Test] + public void Test_106_12() + { + } + + [Test] + public void Test_106_13() + { + } + + [Test] + public void Test_106_14() + { + } + + [Test] + public void Test_106_15() + { + } + + [Test] + public void Test_106_16() + { + } + + [Test] + public void Test_106_17() + { + } + + [Test] + public void Test_106_18() + { + } + + [Test] + public void Test_106_19() + { + } + + [Test] + public void Test_106_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_107 + { + #region PassingTests + [Test] + public void Test_107_01() + { + } + + [Test] + public void Test_107_02() + { + } + + [Test] + public void Test_107_03() + { + } + + [Test] + public void Test_107_04() + { + } + + [Test] + public void Test_107_05() + { + } + + [Test] + public void Test_107_06() + { + } + + [Test] + public void Test_107_07() + { + } + + [Test] + public void Test_107_08() + { + } + + [Test] + public void Test_107_09() + { + } + + [Test] + public void Test_107_10() + { + } + + [Test] + public void Test_107_11() + { + } + + [Test] + public void Test_107_12() + { + } + + [Test] + public void Test_107_13() + { + } + + [Test] + public void Test_107_14() + { + } + + [Test] + public void Test_107_15() + { + } + + [Test] + public void Test_107_16() + { + } + + [Test] + public void Test_107_17() + { + } + + [Test] + public void Test_107_18() + { + } + + [Test] + public void Test_107_19() + { + } + + [Test] + public void Test_107_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_108 + { + #region PassingTests + [Test] + public void Test_108_01() + { + } + + [Test] + public void Test_108_02() + { + } + + [Test] + public void Test_108_03() + { + } + + [Test] + public void Test_108_04() + { + } + + [Test] + public void Test_108_05() + { + } + + [Test] + public void Test_108_06() + { + } + + [Test] + public void Test_108_07() + { + } + + [Test] + public void Test_108_08() + { + } + + [Test] + public void Test_108_09() + { + } + + [Test] + public void Test_108_10() + { + } + + [Test] + public void Test_108_11() + { + } + + [Test] + public void Test_108_12() + { + } + + [Test] + public void Test_108_13() + { + } + + [Test] + public void Test_108_14() + { + } + + [Test] + public void Test_108_15() + { + } + + [Test] + public void Test_108_16() + { + } + + [Test] + public void Test_108_17() + { + } + + [Test] + public void Test_108_18() + { + } + + [Test] + public void Test_108_19() + { + } + + [Test] + public void Test_108_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_109 + { + #region PassingTests + [Test] + public void Test_109_01() + { + } + + [Test] + public void Test_109_02() + { + } + + [Test] + public void Test_109_03() + { + } + + [Test] + public void Test_109_04() + { + } + + [Test] + public void Test_109_05() + { + } + + [Test] + public void Test_109_06() + { + } + + [Test] + public void Test_109_07() + { + } + + [Test] + public void Test_109_08() + { + } + + [Test] + public void Test_109_09() + { + } + + [Test] + public void Test_109_10() + { + } + + [Test] + public void Test_109_11() + { + } + + [Test] + public void Test_109_12() + { + } + + [Test] + public void Test_109_13() + { + } + + [Test] + public void Test_109_14() + { + } + + [Test] + public void Test_109_15() + { + } + + [Test] + public void Test_109_16() + { + } + + [Test] + public void Test_109_17() + { + } + + [Test] + public void Test_109_18() + { + } + + [Test] + public void Test_109_19() + { + } + + [Test] + public void Test_109_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_110 + { + #region PassingTests + [Test] + public void Test_110_01() + { + } + + [Test] + public void Test_110_02() + { + } + + [Test] + public void Test_110_03() + { + } + + [Test] + public void Test_110_04() + { + } + + [Test] + public void Test_110_05() + { + } + + [Test] + public void Test_110_06() + { + } + + [Test] + public void Test_110_07() + { + } + + [Test] + public void Test_110_08() + { + } + + [Test] + public void Test_110_09() + { + } + + [Test] + public void Test_110_10() + { + } + + [Test] + public void Test_110_11() + { + } + + [Test] + public void Test_110_12() + { + } + + [Test] + public void Test_110_13() + { + } + + [Test] + public void Test_110_14() + { + } + + [Test] + public void Test_110_15() + { + } + + [Test] + public void Test_110_16() + { + } + + [Test] + public void Test_110_17() + { + } + + [Test] + public void Test_110_18() + { + } + + [Test] + public void Test_110_19() + { + } + + [Test] + public void Test_110_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_111 + { + #region PassingTests + [Test] + public void Test_111_01() + { + } + + [Test] + public void Test_111_02() + { + } + + [Test] + public void Test_111_03() + { + } + + [Test] + public void Test_111_04() + { + } + + [Test] + public void Test_111_05() + { + } + + [Test] + public void Test_111_06() + { + } + + [Test] + public void Test_111_07() + { + } + + [Test] + public void Test_111_08() + { + } + + [Test] + public void Test_111_09() + { + } + + [Test] + public void Test_111_10() + { + } + + [Test] + public void Test_111_11() + { + } + + [Test] + public void Test_111_12() + { + } + + [Test] + public void Test_111_13() + { + } + + [Test] + public void Test_111_14() + { + } + + [Test] + public void Test_111_15() + { + } + + [Test] + public void Test_111_16() + { + } + + [Test] + public void Test_111_17() + { + } + + [Test] + public void Test_111_18() + { + } + + [Test] + public void Test_111_19() + { + } + + [Test] + public void Test_111_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_112 + { + #region PassingTests + [Test] + public void Test_112_01() + { + } + + [Test] + public void Test_112_02() + { + } + + [Test] + public void Test_112_03() + { + } + + [Test] + public void Test_112_04() + { + } + + [Test] + public void Test_112_05() + { + } + + [Test] + public void Test_112_06() + { + } + + [Test] + public void Test_112_07() + { + } + + [Test] + public void Test_112_08() + { + } + + [Test] + public void Test_112_09() + { + } + + [Test] + public void Test_112_10() + { + } + + [Test] + public void Test_112_11() + { + } + + [Test] + public void Test_112_12() + { + } + + [Test] + public void Test_112_13() + { + } + + [Test] + public void Test_112_14() + { + } + + [Test] + public void Test_112_15() + { + } + + [Test] + public void Test_112_16() + { + } + + [Test] + public void Test_112_17() + { + } + + [Test] + public void Test_112_18() + { + } + + [Test] + public void Test_112_19() + { + } + + [Test] + public void Test_112_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_113 + { + #region PassingTests + [Test] + public void Test_113_01() + { + } + + [Test] + public void Test_113_02() + { + } + + [Test] + public void Test_113_03() + { + } + + [Test] + public void Test_113_04() + { + } + + [Test] + public void Test_113_05() + { + } + + [Test] + public void Test_113_06() + { + } + + [Test] + public void Test_113_07() + { + } + + [Test] + public void Test_113_08() + { + } + + [Test] + public void Test_113_09() + { + } + + [Test] + public void Test_113_10() + { + } + + [Test] + public void Test_113_11() + { + } + + [Test] + public void Test_113_12() + { + } + + [Test] + public void Test_113_13() + { + } + + [Test] + public void Test_113_14() + { + } + + [Test] + public void Test_113_15() + { + } + + [Test] + public void Test_113_16() + { + } + + [Test] + public void Test_113_17() + { + } + + [Test] + public void Test_113_18() + { + } + + [Test] + public void Test_113_19() + { + } + + [Test] + public void Test_113_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_114 + { + #region PassingTests + [Test] + public void Test_114_01() + { + } + + [Test] + public void Test_114_02() + { + } + + [Test] + public void Test_114_03() + { + } + + [Test] + public void Test_114_04() + { + } + + [Test] + public void Test_114_05() + { + } + + [Test] + public void Test_114_06() + { + } + + [Test] + public void Test_114_07() + { + } + + [Test] + public void Test_114_08() + { + } + + [Test] + public void Test_114_09() + { + } + + [Test] + public void Test_114_10() + { + } + + [Test] + public void Test_114_11() + { + } + + [Test] + public void Test_114_12() + { + } + + [Test] + public void Test_114_13() + { + } + + [Test] + public void Test_114_14() + { + } + + [Test] + public void Test_114_15() + { + } + + [Test] + public void Test_114_16() + { + } + + [Test] + public void Test_114_17() + { + } + + [Test] + public void Test_114_18() + { + } + + [Test] + public void Test_114_19() + { + } + + [Test] + public void Test_114_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_115 + { + #region PassingTests + [Test] + public void Test_115_01() + { + } + + [Test] + public void Test_115_02() + { + } + + [Test] + public void Test_115_03() + { + } + + [Test] + public void Test_115_04() + { + } + + [Test] + public void Test_115_05() + { + } + + [Test] + public void Test_115_06() + { + } + + [Test] + public void Test_115_07() + { + } + + [Test] + public void Test_115_08() + { + } + + [Test] + public void Test_115_09() + { + } + + [Test] + public void Test_115_10() + { + } + + [Test] + public void Test_115_11() + { + } + + [Test] + public void Test_115_12() + { + } + + [Test] + public void Test_115_13() + { + } + + [Test] + public void Test_115_14() + { + } + + [Test] + public void Test_115_15() + { + } + + [Test] + public void Test_115_16() + { + } + + [Test] + public void Test_115_17() + { + } + + [Test] + public void Test_115_18() + { + } + + [Test] + public void Test_115_19() + { + } + + [Test] + public void Test_115_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_116 + { + #region PassingTests + [Test] + public void Test_116_01() + { + } + + [Test] + public void Test_116_02() + { + } + + [Test] + public void Test_116_03() + { + } + + [Test] + public void Test_116_04() + { + } + + [Test] + public void Test_116_05() + { + } + + [Test] + public void Test_116_06() + { + } + + [Test] + public void Test_116_07() + { + } + + [Test] + public void Test_116_08() + { + } + + [Test] + public void Test_116_09() + { + } + + [Test] + public void Test_116_10() + { + } + + [Test] + public void Test_116_11() + { + } + + [Test] + public void Test_116_12() + { + } + + [Test] + public void Test_116_13() + { + } + + [Test] + public void Test_116_14() + { + } + + [Test] + public void Test_116_15() + { + } + + [Test] + public void Test_116_16() + { + } + + [Test] + public void Test_116_17() + { + } + + [Test] + public void Test_116_18() + { + } + + [Test] + public void Test_116_19() + { + } + + [Test] + public void Test_116_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_117 + { + #region PassingTests + [Test] + public void Test_117_01() + { + } + + [Test] + public void Test_117_02() + { + } + + [Test] + public void Test_117_03() + { + } + + [Test] + public void Test_117_04() + { + } + + [Test] + public void Test_117_05() + { + } + + [Test] + public void Test_117_06() + { + } + + [Test] + public void Test_117_07() + { + } + + [Test] + public void Test_117_08() + { + } + + [Test] + public void Test_117_09() + { + } + + [Test] + public void Test_117_10() + { + } + + [Test] + public void Test_117_11() + { + } + + [Test] + public void Test_117_12() + { + } + + [Test] + public void Test_117_13() + { + } + + [Test] + public void Test_117_14() + { + } + + [Test] + public void Test_117_15() + { + } + + [Test] + public void Test_117_16() + { + } + + [Test] + public void Test_117_17() + { + } + + [Test] + public void Test_117_18() + { + } + + [Test] + public void Test_117_19() + { + } + + [Test] + public void Test_117_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_118 + { + #region PassingTests + [Test] + public void Test_118_01() + { + } + + [Test] + public void Test_118_02() + { + } + + [Test] + public void Test_118_03() + { + } + + [Test] + public void Test_118_04() + { + } + + [Test] + public void Test_118_05() + { + } + + [Test] + public void Test_118_06() + { + } + + [Test] + public void Test_118_07() + { + } + + [Test] + public void Test_118_08() + { + } + + [Test] + public void Test_118_09() + { + } + + [Test] + public void Test_118_10() + { + } + + [Test] + public void Test_118_11() + { + } + + [Test] + public void Test_118_12() + { + } + + [Test] + public void Test_118_13() + { + } + + [Test] + public void Test_118_14() + { + } + + [Test] + public void Test_118_15() + { + } + + [Test] + public void Test_118_16() + { + } + + [Test] + public void Test_118_17() + { + } + + [Test] + public void Test_118_18() + { + } + + [Test] + public void Test_118_19() + { + } + + [Test] + public void Test_118_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_119 + { + #region PassingTests + [Test] + public void Test_119_01() + { + } + + [Test] + public void Test_119_02() + { + } + + [Test] + public void Test_119_03() + { + } + + [Test] + public void Test_119_04() + { + } + + [Test] + public void Test_119_05() + { + } + + [Test] + public void Test_119_06() + { + } + + [Test] + public void Test_119_07() + { + } + + [Test] + public void Test_119_08() + { + } + + [Test] + public void Test_119_09() + { + } + + [Test] + public void Test_119_10() + { + } + + [Test] + public void Test_119_11() + { + } + + [Test] + public void Test_119_12() + { + } + + [Test] + public void Test_119_13() + { + } + + [Test] + public void Test_119_14() + { + } + + [Test] + public void Test_119_15() + { + } + + [Test] + public void Test_119_16() + { + } + + [Test] + public void Test_119_17() + { + } + + [Test] + public void Test_119_18() + { + } + + [Test] + public void Test_119_19() + { + } + + [Test] + public void Test_119_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_120 + { + #region PassingTests + [Test] + public void Test_120_01() + { + } + + [Test] + public void Test_120_02() + { + } + + [Test] + public void Test_120_03() + { + } + + [Test] + public void Test_120_04() + { + } + + [Test] + public void Test_120_05() + { + } + + [Test] + public void Test_120_06() + { + } + + [Test] + public void Test_120_07() + { + } + + [Test] + public void Test_120_08() + { + } + + [Test] + public void Test_120_09() + { + } + + [Test] + public void Test_120_10() + { + } + + [Test] + public void Test_120_11() + { + } + + [Test] + public void Test_120_12() + { + } + + [Test] + public void Test_120_13() + { + } + + [Test] + public void Test_120_14() + { + } + + [Test] + public void Test_120_15() + { + } + + [Test] + public void Test_120_16() + { + } + + [Test] + public void Test_120_17() + { + } + + [Test] + public void Test_120_18() + { + } + + [Test] + public void Test_120_19() + { + } + + [Test] + public void Test_120_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_121 + { + #region PassingTests + [Test] + public void Test_121_01() + { + } + + [Test] + public void Test_121_02() + { + } + + [Test] + public void Test_121_03() + { + } + + [Test] + public void Test_121_04() + { + } + + [Test] + public void Test_121_05() + { + } + + [Test] + public void Test_121_06() + { + } + + [Test] + public void Test_121_07() + { + } + + [Test] + public void Test_121_08() + { + } + + [Test] + public void Test_121_09() + { + } + + [Test] + public void Test_121_10() + { + } + + [Test] + public void Test_121_11() + { + } + + [Test] + public void Test_121_12() + { + } + + [Test] + public void Test_121_13() + { + } + + [Test] + public void Test_121_14() + { + } + + [Test] + public void Test_121_15() + { + } + + [Test] + public void Test_121_16() + { + } + + [Test] + public void Test_121_17() + { + } + + [Test] + public void Test_121_18() + { + } + + [Test] + public void Test_121_19() + { + } + + [Test] + public void Test_121_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_122 + { + #region PassingTests + [Test] + public void Test_122_01() + { + } + + [Test] + public void Test_122_02() + { + } + + [Test] + public void Test_122_03() + { + } + + [Test] + public void Test_122_04() + { + } + + [Test] + public void Test_122_05() + { + } + + [Test] + public void Test_122_06() + { + } + + [Test] + public void Test_122_07() + { + } + + [Test] + public void Test_122_08() + { + } + + [Test] + public void Test_122_09() + { + } + + [Test] + public void Test_122_10() + { + } + + [Test] + public void Test_122_11() + { + } + + [Test] + public void Test_122_12() + { + } + + [Test] + public void Test_122_13() + { + } + + [Test] + public void Test_122_14() + { + } + + [Test] + public void Test_122_15() + { + } + + [Test] + public void Test_122_16() + { + } + + [Test] + public void Test_122_17() + { + } + + [Test] + public void Test_122_18() + { + } + + [Test] + public void Test_122_19() + { + } + + [Test] + public void Test_122_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_123 + { + #region PassingTests + [Test] + public void Test_123_01() + { + } + + [Test] + public void Test_123_02() + { + } + + [Test] + public void Test_123_03() + { + } + + [Test] + public void Test_123_04() + { + } + + [Test] + public void Test_123_05() + { + } + + [Test] + public void Test_123_06() + { + } + + [Test] + public void Test_123_07() + { + } + + [Test] + public void Test_123_08() + { + } + + [Test] + public void Test_123_09() + { + } + + [Test] + public void Test_123_10() + { + } + + [Test] + public void Test_123_11() + { + } + + [Test] + public void Test_123_12() + { + } + + [Test] + public void Test_123_13() + { + } + + [Test] + public void Test_123_14() + { + } + + [Test] + public void Test_123_15() + { + } + + [Test] + public void Test_123_16() + { + } + + [Test] + public void Test_123_17() + { + } + + [Test] + public void Test_123_18() + { + } + + [Test] + public void Test_123_19() + { + } + + [Test] + public void Test_123_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_124 + { + #region PassingTests + [Test] + public void Test_124_01() + { + } + + [Test] + public void Test_124_02() + { + } + + [Test] + public void Test_124_03() + { + } + + [Test] + public void Test_124_04() + { + } + + [Test] + public void Test_124_05() + { + } + + [Test] + public void Test_124_06() + { + } + + [Test] + public void Test_124_07() + { + } + + [Test] + public void Test_124_08() + { + } + + [Test] + public void Test_124_09() + { + } + + [Test] + public void Test_124_10() + { + } + + [Test] + public void Test_124_11() + { + } + + [Test] + public void Test_124_12() + { + } + + [Test] + public void Test_124_13() + { + } + + [Test] + public void Test_124_14() + { + } + + [Test] + public void Test_124_15() + { + } + + [Test] + public void Test_124_16() + { + } + + [Test] + public void Test_124_17() + { + } + + [Test] + public void Test_124_18() + { + } + + [Test] + public void Test_124_19() + { + } + + [Test] + public void Test_124_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_125 + { + #region PassingTests + [Test] + public void Test_125_01() + { + } + + [Test] + public void Test_125_02() + { + } + + [Test] + public void Test_125_03() + { + } + + [Test] + public void Test_125_04() + { + } + + [Test] + public void Test_125_05() + { + } + + [Test] + public void Test_125_06() + { + } + + [Test] + public void Test_125_07() + { + } + + [Test] + public void Test_125_08() + { + } + + [Test] + public void Test_125_09() + { + } + + [Test] + public void Test_125_10() + { + } + + [Test] + public void Test_125_11() + { + } + + [Test] + public void Test_125_12() + { + } + + [Test] + public void Test_125_13() + { + } + + [Test] + public void Test_125_14() + { + } + + [Test] + public void Test_125_15() + { + } + + [Test] + public void Test_125_16() + { + } + + [Test] + public void Test_125_17() + { + } + + [Test] + public void Test_125_18() + { + } + + [Test] + public void Test_125_19() + { + } + + [Test] + public void Test_125_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_126 + { + #region PassingTests + [Test] + public void Test_126_01() + { + } + + [Test] + public void Test_126_02() + { + } + + [Test] + public void Test_126_03() + { + } + + [Test] + public void Test_126_04() + { + } + + [Test] + public void Test_126_05() + { + } + + [Test] + public void Test_126_06() + { + } + + [Test] + public void Test_126_07() + { + } + + [Test] + public void Test_126_08() + { + } + + [Test] + public void Test_126_09() + { + } + + [Test] + public void Test_126_10() + { + } + + [Test] + public void Test_126_11() + { + } + + [Test] + public void Test_126_12() + { + } + + [Test] + public void Test_126_13() + { + } + + [Test] + public void Test_126_14() + { + } + + [Test] + public void Test_126_15() + { + } + + [Test] + public void Test_126_16() + { + } + + [Test] + public void Test_126_17() + { + } + + [Test] + public void Test_126_18() + { + } + + [Test] + public void Test_126_19() + { + } + + [Test] + public void Test_126_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_127 + { + #region PassingTests + [Test] + public void Test_127_01() + { + } + + [Test] + public void Test_127_02() + { + } + + [Test] + public void Test_127_03() + { + } + + [Test] + public void Test_127_04() + { + } + + [Test] + public void Test_127_05() + { + } + + [Test] + public void Test_127_06() + { + } + + [Test] + public void Test_127_07() + { + } + + [Test] + public void Test_127_08() + { + } + + [Test] + public void Test_127_09() + { + } + + [Test] + public void Test_127_10() + { + } + + [Test] + public void Test_127_11() + { + } + + [Test] + public void Test_127_12() + { + } + + [Test] + public void Test_127_13() + { + } + + [Test] + public void Test_127_14() + { + } + + [Test] + public void Test_127_15() + { + } + + [Test] + public void Test_127_16() + { + } + + [Test] + public void Test_127_17() + { + } + + [Test] + public void Test_127_18() + { + } + + [Test] + public void Test_127_19() + { + } + + [Test] + public void Test_127_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_128 + { + #region PassingTests + [Test] + public void Test_128_01() + { + } + + [Test] + public void Test_128_02() + { + } + + [Test] + public void Test_128_03() + { + } + + [Test] + public void Test_128_04() + { + } + + [Test] + public void Test_128_05() + { + } + + [Test] + public void Test_128_06() + { + } + + [Test] + public void Test_128_07() + { + } + + [Test] + public void Test_128_08() + { + } + + [Test] + public void Test_128_09() + { + } + + [Test] + public void Test_128_10() + { + } + + [Test] + public void Test_128_11() + { + } + + [Test] + public void Test_128_12() + { + } + + [Test] + public void Test_128_13() + { + } + + [Test] + public void Test_128_14() + { + } + + [Test] + public void Test_128_15() + { + } + + [Test] + public void Test_128_16() + { + } + + [Test] + public void Test_128_17() + { + } + + [Test] + public void Test_128_18() + { + } + + [Test] + public void Test_128_19() + { + } + + [Test] + public void Test_128_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_129 + { + #region PassingTests + [Test] + public void Test_129_01() + { + } + + [Test] + public void Test_129_02() + { + } + + [Test] + public void Test_129_03() + { + } + + [Test] + public void Test_129_04() + { + } + + [Test] + public void Test_129_05() + { + } + + [Test] + public void Test_129_06() + { + } + + [Test] + public void Test_129_07() + { + } + + [Test] + public void Test_129_08() + { + } + + [Test] + public void Test_129_09() + { + } + + [Test] + public void Test_129_10() + { + } + + [Test] + public void Test_129_11() + { + } + + [Test] + public void Test_129_12() + { + } + + [Test] + public void Test_129_13() + { + } + + [Test] + public void Test_129_14() + { + } + + [Test] + public void Test_129_15() + { + } + + [Test] + public void Test_129_16() + { + } + + [Test] + public void Test_129_17() + { + } + + [Test] + public void Test_129_18() + { + } + + [Test] + public void Test_129_19() + { + } + + [Test] + public void Test_129_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_130 + { + #region PassingTests + [Test] + public void Test_130_01() + { + } + + [Test] + public void Test_130_02() + { + } + + [Test] + public void Test_130_03() + { + } + + [Test] + public void Test_130_04() + { + } + + [Test] + public void Test_130_05() + { + } + + [Test] + public void Test_130_06() + { + } + + [Test] + public void Test_130_07() + { + } + + [Test] + public void Test_130_08() + { + } + + [Test] + public void Test_130_09() + { + } + + [Test] + public void Test_130_10() + { + } + + [Test] + public void Test_130_11() + { + } + + [Test] + public void Test_130_12() + { + } + + [Test] + public void Test_130_13() + { + } + + [Test] + public void Test_130_14() + { + } + + [Test] + public void Test_130_15() + { + } + + [Test] + public void Test_130_16() + { + } + + [Test] + public void Test_130_17() + { + } + + [Test] + public void Test_130_18() + { + } + + [Test] + public void Test_130_19() + { + } + + [Test] + public void Test_130_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_131 + { + #region PassingTests + [Test] + public void Test_131_01() + { + } + + [Test] + public void Test_131_02() + { + } + + [Test] + public void Test_131_03() + { + } + + [Test] + public void Test_131_04() + { + } + + [Test] + public void Test_131_05() + { + } + + [Test] + public void Test_131_06() + { + } + + [Test] + public void Test_131_07() + { + } + + [Test] + public void Test_131_08() + { + } + + [Test] + public void Test_131_09() + { + } + + [Test] + public void Test_131_10() + { + } + + [Test] + public void Test_131_11() + { + } + + [Test] + public void Test_131_12() + { + } + + [Test] + public void Test_131_13() + { + } + + [Test] + public void Test_131_14() + { + } + + [Test] + public void Test_131_15() + { + } + + [Test] + public void Test_131_16() + { + } + + [Test] + public void Test_131_17() + { + } + + [Test] + public void Test_131_18() + { + } + + [Test] + public void Test_131_19() + { + } + + [Test] + public void Test_131_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_132 + { + #region PassingTests + [Test] + public void Test_132_01() + { + } + + [Test] + public void Test_132_02() + { + } + + [Test] + public void Test_132_03() + { + } + + [Test] + public void Test_132_04() + { + } + + [Test] + public void Test_132_05() + { + } + + [Test] + public void Test_132_06() + { + } + + [Test] + public void Test_132_07() + { + } + + [Test] + public void Test_132_08() + { + } + + [Test] + public void Test_132_09() + { + } + + [Test] + public void Test_132_10() + { + } + + [Test] + public void Test_132_11() + { + } + + [Test] + public void Test_132_12() + { + } + + [Test] + public void Test_132_13() + { + } + + [Test] + public void Test_132_14() + { + } + + [Test] + public void Test_132_15() + { + } + + [Test] + public void Test_132_16() + { + } + + [Test] + public void Test_132_17() + { + } + + [Test] + public void Test_132_18() + { + } + + [Test] + public void Test_132_19() + { + } + + [Test] + public void Test_132_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_133 + { + #region PassingTests + [Test] + public void Test_133_01() + { + } + + [Test] + public void Test_133_02() + { + } + + [Test] + public void Test_133_03() + { + } + + [Test] + public void Test_133_04() + { + } + + [Test] + public void Test_133_05() + { + } + + [Test] + public void Test_133_06() + { + } + + [Test] + public void Test_133_07() + { + } + + [Test] + public void Test_133_08() + { + } + + [Test] + public void Test_133_09() + { + } + + [Test] + public void Test_133_10() + { + } + + [Test] + public void Test_133_11() + { + } + + [Test] + public void Test_133_12() + { + } + + [Test] + public void Test_133_13() + { + } + + [Test] + public void Test_133_14() + { + } + + [Test] + public void Test_133_15() + { + } + + [Test] + public void Test_133_16() + { + } + + [Test] + public void Test_133_17() + { + } + + [Test] + public void Test_133_18() + { + } + + [Test] + public void Test_133_19() + { + } + + [Test] + public void Test_133_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_134 + { + #region PassingTests + [Test] + public void Test_134_01() + { + } + + [Test] + public void Test_134_02() + { + } + + [Test] + public void Test_134_03() + { + } + + [Test] + public void Test_134_04() + { + } + + [Test] + public void Test_134_05() + { + } + + [Test] + public void Test_134_06() + { + } + + [Test] + public void Test_134_07() + { + } + + [Test] + public void Test_134_08() + { + } + + [Test] + public void Test_134_09() + { + } + + [Test] + public void Test_134_10() + { + } + + [Test] + public void Test_134_11() + { + } + + [Test] + public void Test_134_12() + { + } + + [Test] + public void Test_134_13() + { + } + + [Test] + public void Test_134_14() + { + } + + [Test] + public void Test_134_15() + { + } + + [Test] + public void Test_134_16() + { + } + + [Test] + public void Test_134_17() + { + } + + [Test] + public void Test_134_18() + { + } + + [Test] + public void Test_134_19() + { + } + + [Test] + public void Test_134_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_135 + { + #region PassingTests + [Test] + public void Test_135_01() + { + } + + [Test] + public void Test_135_02() + { + } + + [Test] + public void Test_135_03() + { + } + + [Test] + public void Test_135_04() + { + } + + [Test] + public void Test_135_05() + { + } + + [Test] + public void Test_135_06() + { + } + + [Test] + public void Test_135_07() + { + } + + [Test] + public void Test_135_08() + { + } + + [Test] + public void Test_135_09() + { + } + + [Test] + public void Test_135_10() + { + } + + [Test] + public void Test_135_11() + { + } + + [Test] + public void Test_135_12() + { + } + + [Test] + public void Test_135_13() + { + } + + [Test] + public void Test_135_14() + { + } + + [Test] + public void Test_135_15() + { + } + + [Test] + public void Test_135_16() + { + } + + [Test] + public void Test_135_17() + { + } + + [Test] + public void Test_135_18() + { + } + + [Test] + public void Test_135_19() + { + } + + [Test] + public void Test_135_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_136 + { + #region PassingTests + [Test] + public void Test_136_01() + { + } + + [Test] + public void Test_136_02() + { + } + + [Test] + public void Test_136_03() + { + } + + [Test] + public void Test_136_04() + { + } + + [Test] + public void Test_136_05() + { + } + + [Test] + public void Test_136_06() + { + } + + [Test] + public void Test_136_07() + { + } + + [Test] + public void Test_136_08() + { + } + + [Test] + public void Test_136_09() + { + } + + [Test] + public void Test_136_10() + { + } + + [Test] + public void Test_136_11() + { + } + + [Test] + public void Test_136_12() + { + } + + [Test] + public void Test_136_13() + { + } + + [Test] + public void Test_136_14() + { + } + + [Test] + public void Test_136_15() + { + } + + [Test] + public void Test_136_16() + { + } + + [Test] + public void Test_136_17() + { + } + + [Test] + public void Test_136_18() + { + } + + [Test] + public void Test_136_19() + { + } + + [Test] + public void Test_136_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_137 + { + #region PassingTests + [Test] + public void Test_137_01() + { + } + + [Test] + public void Test_137_02() + { + } + + [Test] + public void Test_137_03() + { + } + + [Test] + public void Test_137_04() + { + } + + [Test] + public void Test_137_05() + { + } + + [Test] + public void Test_137_06() + { + } + + [Test] + public void Test_137_07() + { + } + + [Test] + public void Test_137_08() + { + } + + [Test] + public void Test_137_09() + { + } + + [Test] + public void Test_137_10() + { + } + + [Test] + public void Test_137_11() + { + } + + [Test] + public void Test_137_12() + { + } + + [Test] + public void Test_137_13() + { + } + + [Test] + public void Test_137_14() + { + } + + [Test] + public void Test_137_15() + { + } + + [Test] + public void Test_137_16() + { + } + + [Test] + public void Test_137_17() + { + } + + [Test] + public void Test_137_18() + { + } + + [Test] + public void Test_137_19() + { + } + + [Test] + public void Test_137_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_138 + { + #region PassingTests + [Test] + public void Test_138_01() + { + } + + [Test] + public void Test_138_02() + { + } + + [Test] + public void Test_138_03() + { + } + + [Test] + public void Test_138_04() + { + } + + [Test] + public void Test_138_05() + { + } + + [Test] + public void Test_138_06() + { + } + + [Test] + public void Test_138_07() + { + } + + [Test] + public void Test_138_08() + { + } + + [Test] + public void Test_138_09() + { + } + + [Test] + public void Test_138_10() + { + } + + [Test] + public void Test_138_11() + { + } + + [Test] + public void Test_138_12() + { + } + + [Test] + public void Test_138_13() + { + } + + [Test] + public void Test_138_14() + { + } + + [Test] + public void Test_138_15() + { + } + + [Test] + public void Test_138_16() + { + } + + [Test] + public void Test_138_17() + { + } + + [Test] + public void Test_138_18() + { + } + + [Test] + public void Test_138_19() + { + } + + [Test] + public void Test_138_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_139 + { + #region PassingTests + [Test] + public void Test_139_01() + { + } + + [Test] + public void Test_139_02() + { + } + + [Test] + public void Test_139_03() + { + } + + [Test] + public void Test_139_04() + { + } + + [Test] + public void Test_139_05() + { + } + + [Test] + public void Test_139_06() + { + } + + [Test] + public void Test_139_07() + { + } + + [Test] + public void Test_139_08() + { + } + + [Test] + public void Test_139_09() + { + } + + [Test] + public void Test_139_10() + { + } + + [Test] + public void Test_139_11() + { + } + + [Test] + public void Test_139_12() + { + } + + [Test] + public void Test_139_13() + { + } + + [Test] + public void Test_139_14() + { + } + + [Test] + public void Test_139_15() + { + } + + [Test] + public void Test_139_16() + { + } + + [Test] + public void Test_139_17() + { + } + + [Test] + public void Test_139_18() + { + } + + [Test] + public void Test_139_19() + { + } + + [Test] + public void Test_139_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_140 + { + #region PassingTests + [Test] + public void Test_140_01() + { + } + + [Test] + public void Test_140_02() + { + } + + [Test] + public void Test_140_03() + { + } + + [Test] + public void Test_140_04() + { + } + + [Test] + public void Test_140_05() + { + } + + [Test] + public void Test_140_06() + { + } + + [Test] + public void Test_140_07() + { + } + + [Test] + public void Test_140_08() + { + } + + [Test] + public void Test_140_09() + { + } + + [Test] + public void Test_140_10() + { + } + + [Test] + public void Test_140_11() + { + } + + [Test] + public void Test_140_12() + { + } + + [Test] + public void Test_140_13() + { + } + + [Test] + public void Test_140_14() + { + } + + [Test] + public void Test_140_15() + { + } + + [Test] + public void Test_140_16() + { + } + + [Test] + public void Test_140_17() + { + } + + [Test] + public void Test_140_18() + { + } + + [Test] + public void Test_140_19() + { + } + + [Test] + public void Test_140_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_141 + { + #region PassingTests + [Test] + public void Test_141_01() + { + } + + [Test] + public void Test_141_02() + { + } + + [Test] + public void Test_141_03() + { + } + + [Test] + public void Test_141_04() + { + } + + [Test] + public void Test_141_05() + { + } + + [Test] + public void Test_141_06() + { + } + + [Test] + public void Test_141_07() + { + } + + [Test] + public void Test_141_08() + { + } + + [Test] + public void Test_141_09() + { + } + + [Test] + public void Test_141_10() + { + } + + [Test] + public void Test_141_11() + { + } + + [Test] + public void Test_141_12() + { + } + + [Test] + public void Test_141_13() + { + } + + [Test] + public void Test_141_14() + { + } + + [Test] + public void Test_141_15() + { + } + + [Test] + public void Test_141_16() + { + } + + [Test] + public void Test_141_17() + { + } + + [Test] + public void Test_141_18() + { + } + + [Test] + public void Test_141_19() + { + } + + [Test] + public void Test_141_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_142 + { + #region PassingTests + [Test] + public void Test_142_01() + { + } + + [Test] + public void Test_142_02() + { + } + + [Test] + public void Test_142_03() + { + } + + [Test] + public void Test_142_04() + { + } + + [Test] + public void Test_142_05() + { + } + + [Test] + public void Test_142_06() + { + } + + [Test] + public void Test_142_07() + { + } + + [Test] + public void Test_142_08() + { + } + + [Test] + public void Test_142_09() + { + } + + [Test] + public void Test_142_10() + { + } + + [Test] + public void Test_142_11() + { + } + + [Test] + public void Test_142_12() + { + } + + [Test] + public void Test_142_13() + { + } + + [Test] + public void Test_142_14() + { + } + + [Test] + public void Test_142_15() + { + } + + [Test] + public void Test_142_16() + { + } + + [Test] + public void Test_142_17() + { + } + + [Test] + public void Test_142_18() + { + } + + [Test] + public void Test_142_19() + { + } + + [Test] + public void Test_142_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_143 + { + #region PassingTests + [Test] + public void Test_143_01() + { + } + + [Test] + public void Test_143_02() + { + } + + [Test] + public void Test_143_03() + { + } + + [Test] + public void Test_143_04() + { + } + + [Test] + public void Test_143_05() + { + } + + [Test] + public void Test_143_06() + { + } + + [Test] + public void Test_143_07() + { + } + + [Test] + public void Test_143_08() + { + } + + [Test] + public void Test_143_09() + { + } + + [Test] + public void Test_143_10() + { + } + + [Test] + public void Test_143_11() + { + } + + [Test] + public void Test_143_12() + { + } + + [Test] + public void Test_143_13() + { + } + + [Test] + public void Test_143_14() + { + } + + [Test] + public void Test_143_15() + { + } + + [Test] + public void Test_143_16() + { + } + + [Test] + public void Test_143_17() + { + } + + [Test] + public void Test_143_18() + { + } + + [Test] + public void Test_143_19() + { + } + + [Test] + public void Test_143_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_144 + { + #region PassingTests + [Test] + public void Test_144_01() + { + } + + [Test] + public void Test_144_02() + { + } + + [Test] + public void Test_144_03() + { + } + + [Test] + public void Test_144_04() + { + } + + [Test] + public void Test_144_05() + { + } + + [Test] + public void Test_144_06() + { + } + + [Test] + public void Test_144_07() + { + } + + [Test] + public void Test_144_08() + { + } + + [Test] + public void Test_144_09() + { + } + + [Test] + public void Test_144_10() + { + } + + [Test] + public void Test_144_11() + { + } + + [Test] + public void Test_144_12() + { + } + + [Test] + public void Test_144_13() + { + } + + [Test] + public void Test_144_14() + { + } + + [Test] + public void Test_144_15() + { + } + + [Test] + public void Test_144_16() + { + } + + [Test] + public void Test_144_17() + { + } + + [Test] + public void Test_144_18() + { + } + + [Test] + public void Test_144_19() + { + } + + [Test] + public void Test_144_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_145 + { + #region PassingTests + [Test] + public void Test_145_01() + { + } + + [Test] + public void Test_145_02() + { + } + + [Test] + public void Test_145_03() + { + } + + [Test] + public void Test_145_04() + { + } + + [Test] + public void Test_145_05() + { + } + + [Test] + public void Test_145_06() + { + } + + [Test] + public void Test_145_07() + { + } + + [Test] + public void Test_145_08() + { + } + + [Test] + public void Test_145_09() + { + } + + [Test] + public void Test_145_10() + { + } + + [Test] + public void Test_145_11() + { + } + + [Test] + public void Test_145_12() + { + } + + [Test] + public void Test_145_13() + { + } + + [Test] + public void Test_145_14() + { + } + + [Test] + public void Test_145_15() + { + } + + [Test] + public void Test_145_16() + { + } + + [Test] + public void Test_145_17() + { + } + + [Test] + public void Test_145_18() + { + } + + [Test] + public void Test_145_19() + { + } + + [Test] + public void Test_145_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_146 + { + #region PassingTests + [Test] + public void Test_146_01() + { + } + + [Test] + public void Test_146_02() + { + } + + [Test] + public void Test_146_03() + { + } + + [Test] + public void Test_146_04() + { + } + + [Test] + public void Test_146_05() + { + } + + [Test] + public void Test_146_06() + { + } + + [Test] + public void Test_146_07() + { + } + + [Test] + public void Test_146_08() + { + } + + [Test] + public void Test_146_09() + { + } + + [Test] + public void Test_146_10() + { + } + + [Test] + public void Test_146_11() + { + } + + [Test] + public void Test_146_12() + { + } + + [Test] + public void Test_146_13() + { + } + + [Test] + public void Test_146_14() + { + } + + [Test] + public void Test_146_15() + { + } + + [Test] + public void Test_146_16() + { + } + + [Test] + public void Test_146_17() + { + } + + [Test] + public void Test_146_18() + { + } + + [Test] + public void Test_146_19() + { + } + + [Test] + public void Test_146_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_147 + { + #region PassingTests + [Test] + public void Test_147_01() + { + } + + [Test] + public void Test_147_02() + { + } + + [Test] + public void Test_147_03() + { + } + + [Test] + public void Test_147_04() + { + } + + [Test] + public void Test_147_05() + { + } + + [Test] + public void Test_147_06() + { + } + + [Test] + public void Test_147_07() + { + } + + [Test] + public void Test_147_08() + { + } + + [Test] + public void Test_147_09() + { + } + + [Test] + public void Test_147_10() + { + } + + [Test] + public void Test_147_11() + { + } + + [Test] + public void Test_147_12() + { + } + + [Test] + public void Test_147_13() + { + } + + [Test] + public void Test_147_14() + { + } + + [Test] + public void Test_147_15() + { + } + + [Test] + public void Test_147_16() + { + } + + [Test] + public void Test_147_17() + { + } + + [Test] + public void Test_147_18() + { + } + + [Test] + public void Test_147_19() + { + } + + [Test] + public void Test_147_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_148 + { + #region PassingTests + [Test] + public void Test_148_01() + { + } + + [Test] + public void Test_148_02() + { + } + + [Test] + public void Test_148_03() + { + } + + [Test] + public void Test_148_04() + { + } + + [Test] + public void Test_148_05() + { + } + + [Test] + public void Test_148_06() + { + } + + [Test] + public void Test_148_07() + { + } + + [Test] + public void Test_148_08() + { + } + + [Test] + public void Test_148_09() + { + } + + [Test] + public void Test_148_10() + { + } + + [Test] + public void Test_148_11() + { + } + + [Test] + public void Test_148_12() + { + } + + [Test] + public void Test_148_13() + { + } + + [Test] + public void Test_148_14() + { + } + + [Test] + public void Test_148_15() + { + } + + [Test] + public void Test_148_16() + { + } + + [Test] + public void Test_148_17() + { + } + + [Test] + public void Test_148_18() + { + } + + [Test] + public void Test_148_19() + { + } + + [Test] + public void Test_148_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_149 + { + #region PassingTests + [Test] + public void Test_149_01() + { + } + + [Test] + public void Test_149_02() + { + } + + [Test] + public void Test_149_03() + { + } + + [Test] + public void Test_149_04() + { + } + + [Test] + public void Test_149_05() + { + } + + [Test] + public void Test_149_06() + { + } + + [Test] + public void Test_149_07() + { + } + + [Test] + public void Test_149_08() + { + } + + [Test] + public void Test_149_09() + { + } + + [Test] + public void Test_149_10() + { + } + + [Test] + public void Test_149_11() + { + } + + [Test] + public void Test_149_12() + { + } + + [Test] + public void Test_149_13() + { + } + + [Test] + public void Test_149_14() + { + } + + [Test] + public void Test_149_15() + { + } + + [Test] + public void Test_149_16() + { + } + + [Test] + public void Test_149_17() + { + } + + [Test] + public void Test_149_18() + { + } + + [Test] + public void Test_149_19() + { + } + + [Test] + public void Test_149_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_150 + { + #region PassingTests + [Test] + public void Test_150_01() + { + } + + [Test] + public void Test_150_02() + { + } + + [Test] + public void Test_150_03() + { + } + + [Test] + public void Test_150_04() + { + } + + [Test] + public void Test_150_05() + { + } + + [Test] + public void Test_150_06() + { + } + + [Test] + public void Test_150_07() + { + } + + [Test] + public void Test_150_08() + { + } + + [Test] + public void Test_150_09() + { + } + + [Test] + public void Test_150_10() + { + } + + [Test] + public void Test_150_11() + { + } + + [Test] + public void Test_150_12() + { + } + + [Test] + public void Test_150_13() + { + } + + [Test] + public void Test_150_14() + { + } + + [Test] + public void Test_150_15() + { + } + + [Test] + public void Test_150_16() + { + } + + [Test] + public void Test_150_17() + { + } + + [Test] + public void Test_150_18() + { + } + + [Test] + public void Test_150_19() + { + } + + [Test] + public void Test_150_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_151 + { + #region PassingTests + [Test] + public void Test_151_01() + { + } + + [Test] + public void Test_151_02() + { + } + + [Test] + public void Test_151_03() + { + } + + [Test] + public void Test_151_04() + { + } + + [Test] + public void Test_151_05() + { + } + + [Test] + public void Test_151_06() + { + } + + [Test] + public void Test_151_07() + { + } + + [Test] + public void Test_151_08() + { + } + + [Test] + public void Test_151_09() + { + } + + [Test] + public void Test_151_10() + { + } + + [Test] + public void Test_151_11() + { + } + + [Test] + public void Test_151_12() + { + } + + [Test] + public void Test_151_13() + { + } + + [Test] + public void Test_151_14() + { + } + + [Test] + public void Test_151_15() + { + } + + [Test] + public void Test_151_16() + { + } + + [Test] + public void Test_151_17() + { + } + + [Test] + public void Test_151_18() + { + } + + [Test] + public void Test_151_19() + { + } + + [Test] + public void Test_151_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_152 + { + #region PassingTests + [Test] + public void Test_152_01() + { + } + + [Test] + public void Test_152_02() + { + } + + [Test] + public void Test_152_03() + { + } + + [Test] + public void Test_152_04() + { + } + + [Test] + public void Test_152_05() + { + } + + [Test] + public void Test_152_06() + { + } + + [Test] + public void Test_152_07() + { + } + + [Test] + public void Test_152_08() + { + } + + [Test] + public void Test_152_09() + { + } + + [Test] + public void Test_152_10() + { + } + + [Test] + public void Test_152_11() + { + } + + [Test] + public void Test_152_12() + { + } + + [Test] + public void Test_152_13() + { + } + + [Test] + public void Test_152_14() + { + } + + [Test] + public void Test_152_15() + { + } + + [Test] + public void Test_152_16() + { + } + + [Test] + public void Test_152_17() + { + } + + [Test] + public void Test_152_18() + { + } + + [Test] + public void Test_152_19() + { + } + + [Test] + public void Test_152_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_153 + { + #region PassingTests + [Test] + public void Test_153_01() + { + } + + [Test] + public void Test_153_02() + { + } + + [Test] + public void Test_153_03() + { + } + + [Test] + public void Test_153_04() + { + } + + [Test] + public void Test_153_05() + { + } + + [Test] + public void Test_153_06() + { + } + + [Test] + public void Test_153_07() + { + } + + [Test] + public void Test_153_08() + { + } + + [Test] + public void Test_153_09() + { + } + + [Test] + public void Test_153_10() + { + } + + [Test] + public void Test_153_11() + { + } + + [Test] + public void Test_153_12() + { + } + + [Test] + public void Test_153_13() + { + } + + [Test] + public void Test_153_14() + { + } + + [Test] + public void Test_153_15() + { + } + + [Test] + public void Test_153_16() + { + } + + [Test] + public void Test_153_17() + { + } + + [Test] + public void Test_153_18() + { + } + + [Test] + public void Test_153_19() + { + } + + [Test] + public void Test_153_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_154 + { + #region PassingTests + [Test] + public void Test_154_01() + { + } + + [Test] + public void Test_154_02() + { + } + + [Test] + public void Test_154_03() + { + } + + [Test] + public void Test_154_04() + { + } + + [Test] + public void Test_154_05() + { + } + + [Test] + public void Test_154_06() + { + } + + [Test] + public void Test_154_07() + { + } + + [Test] + public void Test_154_08() + { + } + + [Test] + public void Test_154_09() + { + } + + [Test] + public void Test_154_10() + { + } + + [Test] + public void Test_154_11() + { + } + + [Test] + public void Test_154_12() + { + } + + [Test] + public void Test_154_13() + { + } + + [Test] + public void Test_154_14() + { + } + + [Test] + public void Test_154_15() + { + } + + [Test] + public void Test_154_16() + { + } + + [Test] + public void Test_154_17() + { + } + + [Test] + public void Test_154_18() + { + } + + [Test] + public void Test_154_19() + { + } + + [Test] + public void Test_154_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_155 + { + #region PassingTests + [Test] + public void Test_155_01() + { + } + + [Test] + public void Test_155_02() + { + } + + [Test] + public void Test_155_03() + { + } + + [Test] + public void Test_155_04() + { + } + + [Test] + public void Test_155_05() + { + } + + [Test] + public void Test_155_06() + { + } + + [Test] + public void Test_155_07() + { + } + + [Test] + public void Test_155_08() + { + } + + [Test] + public void Test_155_09() + { + } + + [Test] + public void Test_155_10() + { + } + + [Test] + public void Test_155_11() + { + } + + [Test] + public void Test_155_12() + { + } + + [Test] + public void Test_155_13() + { + } + + [Test] + public void Test_155_14() + { + } + + [Test] + public void Test_155_15() + { + } + + [Test] + public void Test_155_16() + { + } + + [Test] + public void Test_155_17() + { + } + + [Test] + public void Test_155_18() + { + } + + [Test] + public void Test_155_19() + { + } + + [Test] + public void Test_155_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_156 + { + #region PassingTests + [Test] + public void Test_156_01() + { + } + + [Test] + public void Test_156_02() + { + } + + [Test] + public void Test_156_03() + { + } + + [Test] + public void Test_156_04() + { + } + + [Test] + public void Test_156_05() + { + } + + [Test] + public void Test_156_06() + { + } + + [Test] + public void Test_156_07() + { + } + + [Test] + public void Test_156_08() + { + } + + [Test] + public void Test_156_09() + { + } + + [Test] + public void Test_156_10() + { + } + + [Test] + public void Test_156_11() + { + } + + [Test] + public void Test_156_12() + { + } + + [Test] + public void Test_156_13() + { + } + + [Test] + public void Test_156_14() + { + } + + [Test] + public void Test_156_15() + { + } + + [Test] + public void Test_156_16() + { + } + + [Test] + public void Test_156_17() + { + } + + [Test] + public void Test_156_18() + { + } + + [Test] + public void Test_156_19() + { + } + + [Test] + public void Test_156_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_157 + { + #region PassingTests + [Test] + public void Test_157_01() + { + } + + [Test] + public void Test_157_02() + { + } + + [Test] + public void Test_157_03() + { + } + + [Test] + public void Test_157_04() + { + } + + [Test] + public void Test_157_05() + { + } + + [Test] + public void Test_157_06() + { + } + + [Test] + public void Test_157_07() + { + } + + [Test] + public void Test_157_08() + { + } + + [Test] + public void Test_157_09() + { + } + + [Test] + public void Test_157_10() + { + } + + [Test] + public void Test_157_11() + { + } + + [Test] + public void Test_157_12() + { + } + + [Test] + public void Test_157_13() + { + } + + [Test] + public void Test_157_14() + { + } + + [Test] + public void Test_157_15() + { + } + + [Test] + public void Test_157_16() + { + } + + [Test] + public void Test_157_17() + { + } + + [Test] + public void Test_157_18() + { + } + + [Test] + public void Test_157_19() + { + } + + [Test] + public void Test_157_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_158 + { + #region PassingTests + [Test] + public void Test_158_01() + { + } + + [Test] + public void Test_158_02() + { + } + + [Test] + public void Test_158_03() + { + } + + [Test] + public void Test_158_04() + { + } + + [Test] + public void Test_158_05() + { + } + + [Test] + public void Test_158_06() + { + } + + [Test] + public void Test_158_07() + { + } + + [Test] + public void Test_158_08() + { + } + + [Test] + public void Test_158_09() + { + } + + [Test] + public void Test_158_10() + { + } + + [Test] + public void Test_158_11() + { + } + + [Test] + public void Test_158_12() + { + } + + [Test] + public void Test_158_13() + { + } + + [Test] + public void Test_158_14() + { + } + + [Test] + public void Test_158_15() + { + } + + [Test] + public void Test_158_16() + { + } + + [Test] + public void Test_158_17() + { + } + + [Test] + public void Test_158_18() + { + } + + [Test] + public void Test_158_19() + { + } + + [Test] + public void Test_158_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_159 + { + #region PassingTests + [Test] + public void Test_159_01() + { + } + + [Test] + public void Test_159_02() + { + } + + [Test] + public void Test_159_03() + { + } + + [Test] + public void Test_159_04() + { + } + + [Test] + public void Test_159_05() + { + } + + [Test] + public void Test_159_06() + { + } + + [Test] + public void Test_159_07() + { + } + + [Test] + public void Test_159_08() + { + } + + [Test] + public void Test_159_09() + { + } + + [Test] + public void Test_159_10() + { + } + + [Test] + public void Test_159_11() + { + } + + [Test] + public void Test_159_12() + { + } + + [Test] + public void Test_159_13() + { + } + + [Test] + public void Test_159_14() + { + } + + [Test] + public void Test_159_15() + { + } + + [Test] + public void Test_159_16() + { + } + + [Test] + public void Test_159_17() + { + } + + [Test] + public void Test_159_18() + { + } + + [Test] + public void Test_159_19() + { + } + + [Test] + public void Test_159_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_160 + { + #region PassingTests + [Test] + public void Test_160_01() + { + } + + [Test] + public void Test_160_02() + { + } + + [Test] + public void Test_160_03() + { + } + + [Test] + public void Test_160_04() + { + } + + [Test] + public void Test_160_05() + { + } + + [Test] + public void Test_160_06() + { + } + + [Test] + public void Test_160_07() + { + } + + [Test] + public void Test_160_08() + { + } + + [Test] + public void Test_160_09() + { + } + + [Test] + public void Test_160_10() + { + } + + [Test] + public void Test_160_11() + { + } + + [Test] + public void Test_160_12() + { + } + + [Test] + public void Test_160_13() + { + } + + [Test] + public void Test_160_14() + { + } + + [Test] + public void Test_160_15() + { + } + + [Test] + public void Test_160_16() + { + } + + [Test] + public void Test_160_17() + { + } + + [Test] + public void Test_160_18() + { + } + + [Test] + public void Test_160_19() + { + } + + [Test] + public void Test_160_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_161 + { + #region PassingTests + [Test] + public void Test_161_01() + { + } + + [Test] + public void Test_161_02() + { + } + + [Test] + public void Test_161_03() + { + } + + [Test] + public void Test_161_04() + { + } + + [Test] + public void Test_161_05() + { + } + + [Test] + public void Test_161_06() + { + } + + [Test] + public void Test_161_07() + { + } + + [Test] + public void Test_161_08() + { + } + + [Test] + public void Test_161_09() + { + } + + [Test] + public void Test_161_10() + { + } + + [Test] + public void Test_161_11() + { + } + + [Test] + public void Test_161_12() + { + } + + [Test] + public void Test_161_13() + { + } + + [Test] + public void Test_161_14() + { + } + + [Test] + public void Test_161_15() + { + } + + [Test] + public void Test_161_16() + { + } + + [Test] + public void Test_161_17() + { + } + + [Test] + public void Test_161_18() + { + } + + [Test] + public void Test_161_19() + { + } + + [Test] + public void Test_161_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_162 + { + #region PassingTests + [Test] + public void Test_162_01() + { + } + + [Test] + public void Test_162_02() + { + } + + [Test] + public void Test_162_03() + { + } + + [Test] + public void Test_162_04() + { + } + + [Test] + public void Test_162_05() + { + } + + [Test] + public void Test_162_06() + { + } + + [Test] + public void Test_162_07() + { + } + + [Test] + public void Test_162_08() + { + } + + [Test] + public void Test_162_09() + { + } + + [Test] + public void Test_162_10() + { + } + + [Test] + public void Test_162_11() + { + } + + [Test] + public void Test_162_12() + { + } + + [Test] + public void Test_162_13() + { + } + + [Test] + public void Test_162_14() + { + } + + [Test] + public void Test_162_15() + { + } + + [Test] + public void Test_162_16() + { + } + + [Test] + public void Test_162_17() + { + } + + [Test] + public void Test_162_18() + { + } + + [Test] + public void Test_162_19() + { + } + + [Test] + public void Test_162_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_163 + { + #region PassingTests + [Test] + public void Test_163_01() + { + } + + [Test] + public void Test_163_02() + { + } + + [Test] + public void Test_163_03() + { + } + + [Test] + public void Test_163_04() + { + } + + [Test] + public void Test_163_05() + { + } + + [Test] + public void Test_163_06() + { + } + + [Test] + public void Test_163_07() + { + } + + [Test] + public void Test_163_08() + { + } + + [Test] + public void Test_163_09() + { + } + + [Test] + public void Test_163_10() + { + } + + [Test] + public void Test_163_11() + { + } + + [Test] + public void Test_163_12() + { + } + + [Test] + public void Test_163_13() + { + } + + [Test] + public void Test_163_14() + { + } + + [Test] + public void Test_163_15() + { + } + + [Test] + public void Test_163_16() + { + } + + [Test] + public void Test_163_17() + { + } + + [Test] + public void Test_163_18() + { + } + + [Test] + public void Test_163_19() + { + } + + [Test] + public void Test_163_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_164 + { + #region PassingTests + [Test] + public void Test_164_01() + { + } + + [Test] + public void Test_164_02() + { + } + + [Test] + public void Test_164_03() + { + } + + [Test] + public void Test_164_04() + { + } + + [Test] + public void Test_164_05() + { + } + + [Test] + public void Test_164_06() + { + } + + [Test] + public void Test_164_07() + { + } + + [Test] + public void Test_164_08() + { + } + + [Test] + public void Test_164_09() + { + } + + [Test] + public void Test_164_10() + { + } + + [Test] + public void Test_164_11() + { + } + + [Test] + public void Test_164_12() + { + } + + [Test] + public void Test_164_13() + { + } + + [Test] + public void Test_164_14() + { + } + + [Test] + public void Test_164_15() + { + } + + [Test] + public void Test_164_16() + { + } + + [Test] + public void Test_164_17() + { + } + + [Test] + public void Test_164_18() + { + } + + [Test] + public void Test_164_19() + { + } + + [Test] + public void Test_164_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_165 + { + #region PassingTests + [Test] + public void Test_165_01() + { + } + + [Test] + public void Test_165_02() + { + } + + [Test] + public void Test_165_03() + { + } + + [Test] + public void Test_165_04() + { + } + + [Test] + public void Test_165_05() + { + } + + [Test] + public void Test_165_06() + { + } + + [Test] + public void Test_165_07() + { + } + + [Test] + public void Test_165_08() + { + } + + [Test] + public void Test_165_09() + { + } + + [Test] + public void Test_165_10() + { + } + + [Test] + public void Test_165_11() + { + } + + [Test] + public void Test_165_12() + { + } + + [Test] + public void Test_165_13() + { + } + + [Test] + public void Test_165_14() + { + } + + [Test] + public void Test_165_15() + { + } + + [Test] + public void Test_165_16() + { + } + + [Test] + public void Test_165_17() + { + } + + [Test] + public void Test_165_18() + { + } + + [Test] + public void Test_165_19() + { + } + + [Test] + public void Test_165_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_166 + { + #region PassingTests + [Test] + public void Test_166_01() + { + } + + [Test] + public void Test_166_02() + { + } + + [Test] + public void Test_166_03() + { + } + + [Test] + public void Test_166_04() + { + } + + [Test] + public void Test_166_05() + { + } + + [Test] + public void Test_166_06() + { + } + + [Test] + public void Test_166_07() + { + } + + [Test] + public void Test_166_08() + { + } + + [Test] + public void Test_166_09() + { + } + + [Test] + public void Test_166_10() + { + } + + [Test] + public void Test_166_11() + { + } + + [Test] + public void Test_166_12() + { + } + + [Test] + public void Test_166_13() + { + } + + [Test] + public void Test_166_14() + { + } + + [Test] + public void Test_166_15() + { + } + + [Test] + public void Test_166_16() + { + } + + [Test] + public void Test_166_17() + { + } + + [Test] + public void Test_166_18() + { + } + + [Test] + public void Test_166_19() + { + } + + [Test] + public void Test_166_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_167 + { + #region PassingTests + [Test] + public void Test_167_01() + { + } + + [Test] + public void Test_167_02() + { + } + + [Test] + public void Test_167_03() + { + } + + [Test] + public void Test_167_04() + { + } + + [Test] + public void Test_167_05() + { + } + + [Test] + public void Test_167_06() + { + } + + [Test] + public void Test_167_07() + { + } + + [Test] + public void Test_167_08() + { + } + + [Test] + public void Test_167_09() + { + } + + [Test] + public void Test_167_10() + { + } + + [Test] + public void Test_167_11() + { + } + + [Test] + public void Test_167_12() + { + } + + [Test] + public void Test_167_13() + { + } + + [Test] + public void Test_167_14() + { + } + + [Test] + public void Test_167_15() + { + } + + [Test] + public void Test_167_16() + { + } + + [Test] + public void Test_167_17() + { + } + + [Test] + public void Test_167_18() + { + } + + [Test] + public void Test_167_19() + { + } + + [Test] + public void Test_167_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_168 + { + #region PassingTests + [Test] + public void Test_168_01() + { + } + + [Test] + public void Test_168_02() + { + } + + [Test] + public void Test_168_03() + { + } + + [Test] + public void Test_168_04() + { + } + + [Test] + public void Test_168_05() + { + } + + [Test] + public void Test_168_06() + { + } + + [Test] + public void Test_168_07() + { + } + + [Test] + public void Test_168_08() + { + } + + [Test] + public void Test_168_09() + { + } + + [Test] + public void Test_168_10() + { + } + + [Test] + public void Test_168_11() + { + } + + [Test] + public void Test_168_12() + { + } + + [Test] + public void Test_168_13() + { + } + + [Test] + public void Test_168_14() + { + } + + [Test] + public void Test_168_15() + { + } + + [Test] + public void Test_168_16() + { + } + + [Test] + public void Test_168_17() + { + } + + [Test] + public void Test_168_18() + { + } + + [Test] + public void Test_168_19() + { + } + + [Test] + public void Test_168_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_169 + { + #region PassingTests + [Test] + public void Test_169_01() + { + } + + [Test] + public void Test_169_02() + { + } + + [Test] + public void Test_169_03() + { + } + + [Test] + public void Test_169_04() + { + } + + [Test] + public void Test_169_05() + { + } + + [Test] + public void Test_169_06() + { + } + + [Test] + public void Test_169_07() + { + } + + [Test] + public void Test_169_08() + { + } + + [Test] + public void Test_169_09() + { + } + + [Test] + public void Test_169_10() + { + } + + [Test] + public void Test_169_11() + { + } + + [Test] + public void Test_169_12() + { + } + + [Test] + public void Test_169_13() + { + } + + [Test] + public void Test_169_14() + { + } + + [Test] + public void Test_169_15() + { + } + + [Test] + public void Test_169_16() + { + } + + [Test] + public void Test_169_17() + { + } + + [Test] + public void Test_169_18() + { + } + + [Test] + public void Test_169_19() + { + } + + [Test] + public void Test_169_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_170 + { + #region PassingTests + [Test] + public void Test_170_01() + { + } + + [Test] + public void Test_170_02() + { + } + + [Test] + public void Test_170_03() + { + } + + [Test] + public void Test_170_04() + { + } + + [Test] + public void Test_170_05() + { + } + + [Test] + public void Test_170_06() + { + } + + [Test] + public void Test_170_07() + { + } + + [Test] + public void Test_170_08() + { + } + + [Test] + public void Test_170_09() + { + } + + [Test] + public void Test_170_10() + { + } + + [Test] + public void Test_170_11() + { + } + + [Test] + public void Test_170_12() + { + } + + [Test] + public void Test_170_13() + { + } + + [Test] + public void Test_170_14() + { + } + + [Test] + public void Test_170_15() + { + } + + [Test] + public void Test_170_16() + { + } + + [Test] + public void Test_170_17() + { + } + + [Test] + public void Test_170_18() + { + } + + [Test] + public void Test_170_19() + { + } + + [Test] + public void Test_170_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_171 + { + #region PassingTests + [Test] + public void Test_171_01() + { + } + + [Test] + public void Test_171_02() + { + } + + [Test] + public void Test_171_03() + { + } + + [Test] + public void Test_171_04() + { + } + + [Test] + public void Test_171_05() + { + } + + [Test] + public void Test_171_06() + { + } + + [Test] + public void Test_171_07() + { + } + + [Test] + public void Test_171_08() + { + } + + [Test] + public void Test_171_09() + { + } + + [Test] + public void Test_171_10() + { + } + + [Test] + public void Test_171_11() + { + } + + [Test] + public void Test_171_12() + { + } + + [Test] + public void Test_171_13() + { + } + + [Test] + public void Test_171_14() + { + } + + [Test] + public void Test_171_15() + { + } + + [Test] + public void Test_171_16() + { + } + + [Test] + public void Test_171_17() + { + } + + [Test] + public void Test_171_18() + { + } + + [Test] + public void Test_171_19() + { + } + + [Test] + public void Test_171_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_172 + { + #region PassingTests + [Test] + public void Test_172_01() + { + } + + [Test] + public void Test_172_02() + { + } + + [Test] + public void Test_172_03() + { + } + + [Test] + public void Test_172_04() + { + } + + [Test] + public void Test_172_05() + { + } + + [Test] + public void Test_172_06() + { + } + + [Test] + public void Test_172_07() + { + } + + [Test] + public void Test_172_08() + { + } + + [Test] + public void Test_172_09() + { + } + + [Test] + public void Test_172_10() + { + } + + [Test] + public void Test_172_11() + { + } + + [Test] + public void Test_172_12() + { + } + + [Test] + public void Test_172_13() + { + } + + [Test] + public void Test_172_14() + { + } + + [Test] + public void Test_172_15() + { + } + + [Test] + public void Test_172_16() + { + } + + [Test] + public void Test_172_17() + { + } + + [Test] + public void Test_172_18() + { + } + + [Test] + public void Test_172_19() + { + } + + [Test] + public void Test_172_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_173 + { + #region PassingTests + [Test] + public void Test_173_01() + { + } + + [Test] + public void Test_173_02() + { + } + + [Test] + public void Test_173_03() + { + } + + [Test] + public void Test_173_04() + { + } + + [Test] + public void Test_173_05() + { + } + + [Test] + public void Test_173_06() + { + } + + [Test] + public void Test_173_07() + { + } + + [Test] + public void Test_173_08() + { + } + + [Test] + public void Test_173_09() + { + } + + [Test] + public void Test_173_10() + { + } + + [Test] + public void Test_173_11() + { + } + + [Test] + public void Test_173_12() + { + } + + [Test] + public void Test_173_13() + { + } + + [Test] + public void Test_173_14() + { + } + + [Test] + public void Test_173_15() + { + } + + [Test] + public void Test_173_16() + { + } + + [Test] + public void Test_173_17() + { + } + + [Test] + public void Test_173_18() + { + } + + [Test] + public void Test_173_19() + { + } + + [Test] + public void Test_173_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_174 + { + #region PassingTests + [Test] + public void Test_174_01() + { + } + + [Test] + public void Test_174_02() + { + } + + [Test] + public void Test_174_03() + { + } + + [Test] + public void Test_174_04() + { + } + + [Test] + public void Test_174_05() + { + } + + [Test] + public void Test_174_06() + { + } + + [Test] + public void Test_174_07() + { + } + + [Test] + public void Test_174_08() + { + } + + [Test] + public void Test_174_09() + { + } + + [Test] + public void Test_174_10() + { + } + + [Test] + public void Test_174_11() + { + } + + [Test] + public void Test_174_12() + { + } + + [Test] + public void Test_174_13() + { + } + + [Test] + public void Test_174_14() + { + } + + [Test] + public void Test_174_15() + { + } + + [Test] + public void Test_174_16() + { + } + + [Test] + public void Test_174_17() + { + } + + [Test] + public void Test_174_18() + { + } + + [Test] + public void Test_174_19() + { + } + + [Test] + public void Test_174_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_175 + { + #region PassingTests + [Test] + public void Test_175_01() + { + } + + [Test] + public void Test_175_02() + { + } + + [Test] + public void Test_175_03() + { + } + + [Test] + public void Test_175_04() + { + } + + [Test] + public void Test_175_05() + { + } + + [Test] + public void Test_175_06() + { + } + + [Test] + public void Test_175_07() + { + } + + [Test] + public void Test_175_08() + { + } + + [Test] + public void Test_175_09() + { + } + + [Test] + public void Test_175_10() + { + } + + [Test] + public void Test_175_11() + { + } + + [Test] + public void Test_175_12() + { + } + + [Test] + public void Test_175_13() + { + } + + [Test] + public void Test_175_14() + { + } + + [Test] + public void Test_175_15() + { + } + + [Test] + public void Test_175_16() + { + } + + [Test] + public void Test_175_17() + { + } + + [Test] + public void Test_175_18() + { + } + + [Test] + public void Test_175_19() + { + } + + [Test] + public void Test_175_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_176 + { + #region PassingTests + [Test] + public void Test_176_01() + { + } + + [Test] + public void Test_176_02() + { + } + + [Test] + public void Test_176_03() + { + } + + [Test] + public void Test_176_04() + { + } + + [Test] + public void Test_176_05() + { + } + + [Test] + public void Test_176_06() + { + } + + [Test] + public void Test_176_07() + { + } + + [Test] + public void Test_176_08() + { + } + + [Test] + public void Test_176_09() + { + } + + [Test] + public void Test_176_10() + { + } + + [Test] + public void Test_176_11() + { + } + + [Test] + public void Test_176_12() + { + } + + [Test] + public void Test_176_13() + { + } + + [Test] + public void Test_176_14() + { + } + + [Test] + public void Test_176_15() + { + } + + [Test] + public void Test_176_16() + { + } + + [Test] + public void Test_176_17() + { + } + + [Test] + public void Test_176_18() + { + } + + [Test] + public void Test_176_19() + { + } + + [Test] + public void Test_176_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_177 + { + #region PassingTests + [Test] + public void Test_177_01() + { + } + + [Test] + public void Test_177_02() + { + } + + [Test] + public void Test_177_03() + { + } + + [Test] + public void Test_177_04() + { + } + + [Test] + public void Test_177_05() + { + } + + [Test] + public void Test_177_06() + { + } + + [Test] + public void Test_177_07() + { + } + + [Test] + public void Test_177_08() + { + } + + [Test] + public void Test_177_09() + { + } + + [Test] + public void Test_177_10() + { + } + + [Test] + public void Test_177_11() + { + } + + [Test] + public void Test_177_12() + { + } + + [Test] + public void Test_177_13() + { + } + + [Test] + public void Test_177_14() + { + } + + [Test] + public void Test_177_15() + { + } + + [Test] + public void Test_177_16() + { + } + + [Test] + public void Test_177_17() + { + } + + [Test] + public void Test_177_18() + { + } + + [Test] + public void Test_177_19() + { + } + + [Test] + public void Test_177_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_178 + { + #region PassingTests + [Test] + public void Test_178_01() + { + } + + [Test] + public void Test_178_02() + { + } + + [Test] + public void Test_178_03() + { + } + + [Test] + public void Test_178_04() + { + } + + [Test] + public void Test_178_05() + { + } + + [Test] + public void Test_178_06() + { + } + + [Test] + public void Test_178_07() + { + } + + [Test] + public void Test_178_08() + { + } + + [Test] + public void Test_178_09() + { + } + + [Test] + public void Test_178_10() + { + } + + [Test] + public void Test_178_11() + { + } + + [Test] + public void Test_178_12() + { + } + + [Test] + public void Test_178_13() + { + } + + [Test] + public void Test_178_14() + { + } + + [Test] + public void Test_178_15() + { + } + + [Test] + public void Test_178_16() + { + } + + [Test] + public void Test_178_17() + { + } + + [Test] + public void Test_178_18() + { + } + + [Test] + public void Test_178_19() + { + } + + [Test] + public void Test_178_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_179 + { + #region PassingTests + [Test] + public void Test_179_01() + { + } + + [Test] + public void Test_179_02() + { + } + + [Test] + public void Test_179_03() + { + } + + [Test] + public void Test_179_04() + { + } + + [Test] + public void Test_179_05() + { + } + + [Test] + public void Test_179_06() + { + } + + [Test] + public void Test_179_07() + { + } + + [Test] + public void Test_179_08() + { + } + + [Test] + public void Test_179_09() + { + } + + [Test] + public void Test_179_10() + { + } + + [Test] + public void Test_179_11() + { + } + + [Test] + public void Test_179_12() + { + } + + [Test] + public void Test_179_13() + { + } + + [Test] + public void Test_179_14() + { + } + + [Test] + public void Test_179_15() + { + } + + [Test] + public void Test_179_16() + { + } + + [Test] + public void Test_179_17() + { + } + + [Test] + public void Test_179_18() + { + } + + [Test] + public void Test_179_19() + { + } + + [Test] + public void Test_179_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_180 + { + #region PassingTests + [Test] + public void Test_180_01() + { + } + + [Test] + public void Test_180_02() + { + } + + [Test] + public void Test_180_03() + { + } + + [Test] + public void Test_180_04() + { + } + + [Test] + public void Test_180_05() + { + } + + [Test] + public void Test_180_06() + { + } + + [Test] + public void Test_180_07() + { + } + + [Test] + public void Test_180_08() + { + } + + [Test] + public void Test_180_09() + { + } + + [Test] + public void Test_180_10() + { + } + + [Test] + public void Test_180_11() + { + } + + [Test] + public void Test_180_12() + { + } + + [Test] + public void Test_180_13() + { + } + + [Test] + public void Test_180_14() + { + } + + [Test] + public void Test_180_15() + { + } + + [Test] + public void Test_180_16() + { + } + + [Test] + public void Test_180_17() + { + } + + [Test] + public void Test_180_18() + { + } + + [Test] + public void Test_180_19() + { + } + + [Test] + public void Test_180_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_181 + { + #region PassingTests + [Test] + public void Test_181_01() + { + } + + [Test] + public void Test_181_02() + { + } + + [Test] + public void Test_181_03() + { + } + + [Test] + public void Test_181_04() + { + } + + [Test] + public void Test_181_05() + { + } + + [Test] + public void Test_181_06() + { + } + + [Test] + public void Test_181_07() + { + } + + [Test] + public void Test_181_08() + { + } + + [Test] + public void Test_181_09() + { + } + + [Test] + public void Test_181_10() + { + } + + [Test] + public void Test_181_11() + { + } + + [Test] + public void Test_181_12() + { + } + + [Test] + public void Test_181_13() + { + } + + [Test] + public void Test_181_14() + { + } + + [Test] + public void Test_181_15() + { + } + + [Test] + public void Test_181_16() + { + } + + [Test] + public void Test_181_17() + { + } + + [Test] + public void Test_181_18() + { + } + + [Test] + public void Test_181_19() + { + } + + [Test] + public void Test_181_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_182 + { + #region PassingTests + [Test] + public void Test_182_01() + { + } + + [Test] + public void Test_182_02() + { + } + + [Test] + public void Test_182_03() + { + } + + [Test] + public void Test_182_04() + { + } + + [Test] + public void Test_182_05() + { + } + + [Test] + public void Test_182_06() + { + } + + [Test] + public void Test_182_07() + { + } + + [Test] + public void Test_182_08() + { + } + + [Test] + public void Test_182_09() + { + } + + [Test] + public void Test_182_10() + { + } + + [Test] + public void Test_182_11() + { + } + + [Test] + public void Test_182_12() + { + } + + [Test] + public void Test_182_13() + { + } + + [Test] + public void Test_182_14() + { + } + + [Test] + public void Test_182_15() + { + } + + [Test] + public void Test_182_16() + { + } + + [Test] + public void Test_182_17() + { + } + + [Test] + public void Test_182_18() + { + } + + [Test] + public void Test_182_19() + { + } + + [Test] + public void Test_182_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_183 + { + #region PassingTests + [Test] + public void Test_183_01() + { + } + + [Test] + public void Test_183_02() + { + } + + [Test] + public void Test_183_03() + { + } + + [Test] + public void Test_183_04() + { + } + + [Test] + public void Test_183_05() + { + } + + [Test] + public void Test_183_06() + { + } + + [Test] + public void Test_183_07() + { + } + + [Test] + public void Test_183_08() + { + } + + [Test] + public void Test_183_09() + { + } + + [Test] + public void Test_183_10() + { + } + + [Test] + public void Test_183_11() + { + } + + [Test] + public void Test_183_12() + { + } + + [Test] + public void Test_183_13() + { + } + + [Test] + public void Test_183_14() + { + } + + [Test] + public void Test_183_15() + { + } + + [Test] + public void Test_183_16() + { + } + + [Test] + public void Test_183_17() + { + } + + [Test] + public void Test_183_18() + { + } + + [Test] + public void Test_183_19() + { + } + + [Test] + public void Test_183_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_184 + { + #region PassingTests + [Test] + public void Test_184_01() + { + } + + [Test] + public void Test_184_02() + { + } + + [Test] + public void Test_184_03() + { + } + + [Test] + public void Test_184_04() + { + } + + [Test] + public void Test_184_05() + { + } + + [Test] + public void Test_184_06() + { + } + + [Test] + public void Test_184_07() + { + } + + [Test] + public void Test_184_08() + { + } + + [Test] + public void Test_184_09() + { + } + + [Test] + public void Test_184_10() + { + } + + [Test] + public void Test_184_11() + { + } + + [Test] + public void Test_184_12() + { + } + + [Test] + public void Test_184_13() + { + } + + [Test] + public void Test_184_14() + { + } + + [Test] + public void Test_184_15() + { + } + + [Test] + public void Test_184_16() + { + } + + [Test] + public void Test_184_17() + { + } + + [Test] + public void Test_184_18() + { + } + + [Test] + public void Test_184_19() + { + } + + [Test] + public void Test_184_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_185 + { + #region PassingTests + [Test] + public void Test_185_01() + { + } + + [Test] + public void Test_185_02() + { + } + + [Test] + public void Test_185_03() + { + } + + [Test] + public void Test_185_04() + { + } + + [Test] + public void Test_185_05() + { + } + + [Test] + public void Test_185_06() + { + } + + [Test] + public void Test_185_07() + { + } + + [Test] + public void Test_185_08() + { + } + + [Test] + public void Test_185_09() + { + } + + [Test] + public void Test_185_10() + { + } + + [Test] + public void Test_185_11() + { + } + + [Test] + public void Test_185_12() + { + } + + [Test] + public void Test_185_13() + { + } + + [Test] + public void Test_185_14() + { + } + + [Test] + public void Test_185_15() + { + } + + [Test] + public void Test_185_16() + { + } + + [Test] + public void Test_185_17() + { + } + + [Test] + public void Test_185_18() + { + } + + [Test] + public void Test_185_19() + { + } + + [Test] + public void Test_185_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_186 + { + #region PassingTests + [Test] + public void Test_186_01() + { + } + + [Test] + public void Test_186_02() + { + } + + [Test] + public void Test_186_03() + { + } + + [Test] + public void Test_186_04() + { + } + + [Test] + public void Test_186_05() + { + } + + [Test] + public void Test_186_06() + { + } + + [Test] + public void Test_186_07() + { + } + + [Test] + public void Test_186_08() + { + } + + [Test] + public void Test_186_09() + { + } + + [Test] + public void Test_186_10() + { + } + + [Test] + public void Test_186_11() + { + } + + [Test] + public void Test_186_12() + { + } + + [Test] + public void Test_186_13() + { + } + + [Test] + public void Test_186_14() + { + } + + [Test] + public void Test_186_15() + { + } + + [Test] + public void Test_186_16() + { + } + + [Test] + public void Test_186_17() + { + } + + [Test] + public void Test_186_18() + { + } + + [Test] + public void Test_186_19() + { + } + + [Test] + public void Test_186_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_187 + { + #region PassingTests + [Test] + public void Test_187_01() + { + } + + [Test] + public void Test_187_02() + { + } + + [Test] + public void Test_187_03() + { + } + + [Test] + public void Test_187_04() + { + } + + [Test] + public void Test_187_05() + { + } + + [Test] + public void Test_187_06() + { + } + + [Test] + public void Test_187_07() + { + } + + [Test] + public void Test_187_08() + { + } + + [Test] + public void Test_187_09() + { + } + + [Test] + public void Test_187_10() + { + } + + [Test] + public void Test_187_11() + { + } + + [Test] + public void Test_187_12() + { + } + + [Test] + public void Test_187_13() + { + } + + [Test] + public void Test_187_14() + { + } + + [Test] + public void Test_187_15() + { + } + + [Test] + public void Test_187_16() + { + } + + [Test] + public void Test_187_17() + { + } + + [Test] + public void Test_187_18() + { + } + + [Test] + public void Test_187_19() + { + } + + [Test] + public void Test_187_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_188 + { + #region PassingTests + [Test] + public void Test_188_01() + { + } + + [Test] + public void Test_188_02() + { + } + + [Test] + public void Test_188_03() + { + } + + [Test] + public void Test_188_04() + { + } + + [Test] + public void Test_188_05() + { + } + + [Test] + public void Test_188_06() + { + } + + [Test] + public void Test_188_07() + { + } + + [Test] + public void Test_188_08() + { + } + + [Test] + public void Test_188_09() + { + } + + [Test] + public void Test_188_10() + { + } + + [Test] + public void Test_188_11() + { + } + + [Test] + public void Test_188_12() + { + } + + [Test] + public void Test_188_13() + { + } + + [Test] + public void Test_188_14() + { + } + + [Test] + public void Test_188_15() + { + } + + [Test] + public void Test_188_16() + { + } + + [Test] + public void Test_188_17() + { + } + + [Test] + public void Test_188_18() + { + } + + [Test] + public void Test_188_19() + { + } + + [Test] + public void Test_188_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_189 + { + #region PassingTests + [Test] + public void Test_189_01() + { + } + + [Test] + public void Test_189_02() + { + } + + [Test] + public void Test_189_03() + { + } + + [Test] + public void Test_189_04() + { + } + + [Test] + public void Test_189_05() + { + } + + [Test] + public void Test_189_06() + { + } + + [Test] + public void Test_189_07() + { + } + + [Test] + public void Test_189_08() + { + } + + [Test] + public void Test_189_09() + { + } + + [Test] + public void Test_189_10() + { + } + + [Test] + public void Test_189_11() + { + } + + [Test] + public void Test_189_12() + { + } + + [Test] + public void Test_189_13() + { + } + + [Test] + public void Test_189_14() + { + } + + [Test] + public void Test_189_15() + { + } + + [Test] + public void Test_189_16() + { + } + + [Test] + public void Test_189_17() + { + } + + [Test] + public void Test_189_18() + { + } + + [Test] + public void Test_189_19() + { + } + + [Test] + public void Test_189_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_190 + { + #region PassingTests + [Test] + public void Test_190_01() + { + } + + [Test] + public void Test_190_02() + { + } + + [Test] + public void Test_190_03() + { + } + + [Test] + public void Test_190_04() + { + } + + [Test] + public void Test_190_05() + { + } + + [Test] + public void Test_190_06() + { + } + + [Test] + public void Test_190_07() + { + } + + [Test] + public void Test_190_08() + { + } + + [Test] + public void Test_190_09() + { + } + + [Test] + public void Test_190_10() + { + } + + [Test] + public void Test_190_11() + { + } + + [Test] + public void Test_190_12() + { + } + + [Test] + public void Test_190_13() + { + } + + [Test] + public void Test_190_14() + { + } + + [Test] + public void Test_190_15() + { + } + + [Test] + public void Test_190_16() + { + } + + [Test] + public void Test_190_17() + { + } + + [Test] + public void Test_190_18() + { + } + + [Test] + public void Test_190_19() + { + } + + [Test] + public void Test_190_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_191 + { + #region PassingTests + [Test] + public void Test_191_01() + { + } + + [Test] + public void Test_191_02() + { + } + + [Test] + public void Test_191_03() + { + } + + [Test] + public void Test_191_04() + { + } + + [Test] + public void Test_191_05() + { + } + + [Test] + public void Test_191_06() + { + } + + [Test] + public void Test_191_07() + { + } + + [Test] + public void Test_191_08() + { + } + + [Test] + public void Test_191_09() + { + } + + [Test] + public void Test_191_10() + { + } + + [Test] + public void Test_191_11() + { + } + + [Test] + public void Test_191_12() + { + } + + [Test] + public void Test_191_13() + { + } + + [Test] + public void Test_191_14() + { + } + + [Test] + public void Test_191_15() + { + } + + [Test] + public void Test_191_16() + { + } + + [Test] + public void Test_191_17() + { + } + + [Test] + public void Test_191_18() + { + } + + [Test] + public void Test_191_19() + { + } + + [Test] + public void Test_191_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_192 + { + #region PassingTests + [Test] + public void Test_192_01() + { + } + + [Test] + public void Test_192_02() + { + } + + [Test] + public void Test_192_03() + { + } + + [Test] + public void Test_192_04() + { + } + + [Test] + public void Test_192_05() + { + } + + [Test] + public void Test_192_06() + { + } + + [Test] + public void Test_192_07() + { + } + + [Test] + public void Test_192_08() + { + } + + [Test] + public void Test_192_09() + { + } + + [Test] + public void Test_192_10() + { + } + + [Test] + public void Test_192_11() + { + } + + [Test] + public void Test_192_12() + { + } + + [Test] + public void Test_192_13() + { + } + + [Test] + public void Test_192_14() + { + } + + [Test] + public void Test_192_15() + { + } + + [Test] + public void Test_192_16() + { + } + + [Test] + public void Test_192_17() + { + } + + [Test] + public void Test_192_18() + { + } + + [Test] + public void Test_192_19() + { + } + + [Test] + public void Test_192_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_193 + { + #region PassingTests + [Test] + public void Test_193_01() + { + } + + [Test] + public void Test_193_02() + { + } + + [Test] + public void Test_193_03() + { + } + + [Test] + public void Test_193_04() + { + } + + [Test] + public void Test_193_05() + { + } + + [Test] + public void Test_193_06() + { + } + + [Test] + public void Test_193_07() + { + } + + [Test] + public void Test_193_08() + { + } + + [Test] + public void Test_193_09() + { + } + + [Test] + public void Test_193_10() + { + } + + [Test] + public void Test_193_11() + { + } + + [Test] + public void Test_193_12() + { + } + + [Test] + public void Test_193_13() + { + } + + [Test] + public void Test_193_14() + { + } + + [Test] + public void Test_193_15() + { + } + + [Test] + public void Test_193_16() + { + } + + [Test] + public void Test_193_17() + { + } + + [Test] + public void Test_193_18() + { + } + + [Test] + public void Test_193_19() + { + } + + [Test] + public void Test_193_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_194 + { + #region PassingTests + [Test] + public void Test_194_01() + { + } + + [Test] + public void Test_194_02() + { + } + + [Test] + public void Test_194_03() + { + } + + [Test] + public void Test_194_04() + { + } + + [Test] + public void Test_194_05() + { + } + + [Test] + public void Test_194_06() + { + } + + [Test] + public void Test_194_07() + { + } + + [Test] + public void Test_194_08() + { + } + + [Test] + public void Test_194_09() + { + } + + [Test] + public void Test_194_10() + { + } + + [Test] + public void Test_194_11() + { + } + + [Test] + public void Test_194_12() + { + } + + [Test] + public void Test_194_13() + { + } + + [Test] + public void Test_194_14() + { + } + + [Test] + public void Test_194_15() + { + } + + [Test] + public void Test_194_16() + { + } + + [Test] + public void Test_194_17() + { + } + + [Test] + public void Test_194_18() + { + } + + [Test] + public void Test_194_19() + { + } + + [Test] + public void Test_194_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_195 + { + #region PassingTests + [Test] + public void Test_195_01() + { + } + + [Test] + public void Test_195_02() + { + } + + [Test] + public void Test_195_03() + { + } + + [Test] + public void Test_195_04() + { + } + + [Test] + public void Test_195_05() + { + } + + [Test] + public void Test_195_06() + { + } + + [Test] + public void Test_195_07() + { + } + + [Test] + public void Test_195_08() + { + } + + [Test] + public void Test_195_09() + { + } + + [Test] + public void Test_195_10() + { + } + + [Test] + public void Test_195_11() + { + } + + [Test] + public void Test_195_12() + { + } + + [Test] + public void Test_195_13() + { + } + + [Test] + public void Test_195_14() + { + } + + [Test] + public void Test_195_15() + { + } + + [Test] + public void Test_195_16() + { + } + + [Test] + public void Test_195_17() + { + } + + [Test] + public void Test_195_18() + { + } + + [Test] + public void Test_195_19() + { + } + + [Test] + public void Test_195_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_196 + { + #region PassingTests + [Test] + public void Test_196_01() + { + } + + [Test] + public void Test_196_02() + { + } + + [Test] + public void Test_196_03() + { + } + + [Test] + public void Test_196_04() + { + } + + [Test] + public void Test_196_05() + { + } + + [Test] + public void Test_196_06() + { + } + + [Test] + public void Test_196_07() + { + } + + [Test] + public void Test_196_08() + { + } + + [Test] + public void Test_196_09() + { + } + + [Test] + public void Test_196_10() + { + } + + [Test] + public void Test_196_11() + { + } + + [Test] + public void Test_196_12() + { + } + + [Test] + public void Test_196_13() + { + } + + [Test] + public void Test_196_14() + { + } + + [Test] + public void Test_196_15() + { + } + + [Test] + public void Test_196_16() + { + } + + [Test] + public void Test_196_17() + { + } + + [Test] + public void Test_196_18() + { + } + + [Test] + public void Test_196_19() + { + } + + [Test] + public void Test_196_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_197 + { + #region PassingTests + [Test] + public void Test_197_01() + { + } + + [Test] + public void Test_197_02() + { + } + + [Test] + public void Test_197_03() + { + } + + [Test] + public void Test_197_04() + { + } + + [Test] + public void Test_197_05() + { + } + + [Test] + public void Test_197_06() + { + } + + [Test] + public void Test_197_07() + { + } + + [Test] + public void Test_197_08() + { + } + + [Test] + public void Test_197_09() + { + } + + [Test] + public void Test_197_10() + { + } + + [Test] + public void Test_197_11() + { + } + + [Test] + public void Test_197_12() + { + } + + [Test] + public void Test_197_13() + { + } + + [Test] + public void Test_197_14() + { + } + + [Test] + public void Test_197_15() + { + } + + [Test] + public void Test_197_16() + { + } + + [Test] + public void Test_197_17() + { + } + + [Test] + public void Test_197_18() + { + } + + [Test] + public void Test_197_19() + { + } + + [Test] + public void Test_197_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_198 + { + #region PassingTests + [Test] + public void Test_198_01() + { + } + + [Test] + public void Test_198_02() + { + } + + [Test] + public void Test_198_03() + { + } + + [Test] + public void Test_198_04() + { + } + + [Test] + public void Test_198_05() + { + } + + [Test] + public void Test_198_06() + { + } + + [Test] + public void Test_198_07() + { + } + + [Test] + public void Test_198_08() + { + } + + [Test] + public void Test_198_09() + { + } + + [Test] + public void Test_198_10() + { + } + + [Test] + public void Test_198_11() + { + } + + [Test] + public void Test_198_12() + { + } + + [Test] + public void Test_198_13() + { + } + + [Test] + public void Test_198_14() + { + } + + [Test] + public void Test_198_15() + { + } + + [Test] + public void Test_198_16() + { + } + + [Test] + public void Test_198_17() + { + } + + [Test] + public void Test_198_18() + { + } + + [Test] + public void Test_198_19() + { + } + + [Test] + public void Test_198_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_199 + { + #region PassingTests + [Test] + public void Test_199_01() + { + } + + [Test] + public void Test_199_02() + { + } + + [Test] + public void Test_199_03() + { + } + + [Test] + public void Test_199_04() + { + } + + [Test] + public void Test_199_05() + { + } + + [Test] + public void Test_199_06() + { + } + + [Test] + public void Test_199_07() + { + } + + [Test] + public void Test_199_08() + { + } + + [Test] + public void Test_199_09() + { + } + + [Test] + public void Test_199_10() + { + } + + [Test] + public void Test_199_11() + { + } + + [Test] + public void Test_199_12() + { + } + + [Test] + public void Test_199_13() + { + } + + [Test] + public void Test_199_14() + { + } + + [Test] + public void Test_199_15() + { + } + + [Test] + public void Test_199_16() + { + } + + [Test] + public void Test_199_17() + { + } + + [Test] + public void Test_199_18() + { + } + + [Test] + public void Test_199_19() + { + } + + [Test] + public void Test_199_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_200 + { + #region PassingTests + [Test] + public void Test_200_01() + { + } + + [Test] + public void Test_200_02() + { + } + + [Test] + public void Test_200_03() + { + } + + [Test] + public void Test_200_04() + { + } + + [Test] + public void Test_200_05() + { + } + + [Test] + public void Test_200_06() + { + } + + [Test] + public void Test_200_07() + { + } + + [Test] + public void Test_200_08() + { + } + + [Test] + public void Test_200_09() + { + } + + [Test] + public void Test_200_10() + { + } + + [Test] + public void Test_200_11() + { + } + + [Test] + public void Test_200_12() + { + } + + [Test] + public void Test_200_13() + { + } + + [Test] + public void Test_200_14() + { + } + + [Test] + public void Test_200_15() + { + } + + [Test] + public void Test_200_16() + { + } + + [Test] + public void Test_200_17() + { + } + + [Test] + public void Test_200_18() + { + } + + [Test] + public void Test_200_19() + { + } + + [Test] + public void Test_200_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_201 + { + #region PassingTests + [Test] + public void Test_201_01() + { + } + + [Test] + public void Test_201_02() + { + } + + [Test] + public void Test_201_03() + { + } + + [Test] + public void Test_201_04() + { + } + + [Test] + public void Test_201_05() + { + } + + [Test] + public void Test_201_06() + { + } + + [Test] + public void Test_201_07() + { + } + + [Test] + public void Test_201_08() + { + } + + [Test] + public void Test_201_09() + { + } + + [Test] + public void Test_201_10() + { + } + + [Test] + public void Test_201_11() + { + } + + [Test] + public void Test_201_12() + { + } + + [Test] + public void Test_201_13() + { + } + + [Test] + public void Test_201_14() + { + } + + [Test] + public void Test_201_15() + { + } + + [Test] + public void Test_201_16() + { + } + + [Test] + public void Test_201_17() + { + } + + [Test] + public void Test_201_18() + { + } + + [Test] + public void Test_201_19() + { + } + + [Test] + public void Test_201_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_202 + { + #region PassingTests + [Test] + public void Test_202_01() + { + } + + [Test] + public void Test_202_02() + { + } + + [Test] + public void Test_202_03() + { + } + + [Test] + public void Test_202_04() + { + } + + [Test] + public void Test_202_05() + { + } + + [Test] + public void Test_202_06() + { + } + + [Test] + public void Test_202_07() + { + } + + [Test] + public void Test_202_08() + { + } + + [Test] + public void Test_202_09() + { + } + + [Test] + public void Test_202_10() + { + } + + [Test] + public void Test_202_11() + { + } + + [Test] + public void Test_202_12() + { + } + + [Test] + public void Test_202_13() + { + } + + [Test] + public void Test_202_14() + { + } + + [Test] + public void Test_202_15() + { + } + + [Test] + public void Test_202_16() + { + } + + [Test] + public void Test_202_17() + { + } + + [Test] + public void Test_202_18() + { + } + + [Test] + public void Test_202_19() + { + } + + [Test] + public void Test_202_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_203 + { + #region PassingTests + [Test] + public void Test_203_01() + { + } + + [Test] + public void Test_203_02() + { + } + + [Test] + public void Test_203_03() + { + } + + [Test] + public void Test_203_04() + { + } + + [Test] + public void Test_203_05() + { + } + + [Test] + public void Test_203_06() + { + } + + [Test] + public void Test_203_07() + { + } + + [Test] + public void Test_203_08() + { + } + + [Test] + public void Test_203_09() + { + } + + [Test] + public void Test_203_10() + { + } + + [Test] + public void Test_203_11() + { + } + + [Test] + public void Test_203_12() + { + } + + [Test] + public void Test_203_13() + { + } + + [Test] + public void Test_203_14() + { + } + + [Test] + public void Test_203_15() + { + } + + [Test] + public void Test_203_16() + { + } + + [Test] + public void Test_203_17() + { + } + + [Test] + public void Test_203_18() + { + } + + [Test] + public void Test_203_19() + { + } + + [Test] + public void Test_203_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_204 + { + #region PassingTests + [Test] + public void Test_204_01() + { + } + + [Test] + public void Test_204_02() + { + } + + [Test] + public void Test_204_03() + { + } + + [Test] + public void Test_204_04() + { + } + + [Test] + public void Test_204_05() + { + } + + [Test] + public void Test_204_06() + { + } + + [Test] + public void Test_204_07() + { + } + + [Test] + public void Test_204_08() + { + } + + [Test] + public void Test_204_09() + { + } + + [Test] + public void Test_204_10() + { + } + + [Test] + public void Test_204_11() + { + } + + [Test] + public void Test_204_12() + { + } + + [Test] + public void Test_204_13() + { + } + + [Test] + public void Test_204_14() + { + } + + [Test] + public void Test_204_15() + { + } + + [Test] + public void Test_204_16() + { + } + + [Test] + public void Test_204_17() + { + } + + [Test] + public void Test_204_18() + { + } + + [Test] + public void Test_204_19() + { + } + + [Test] + public void Test_204_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_205 + { + #region PassingTests + [Test] + public void Test_205_01() + { + } + + [Test] + public void Test_205_02() + { + } + + [Test] + public void Test_205_03() + { + } + + [Test] + public void Test_205_04() + { + } + + [Test] + public void Test_205_05() + { + } + + [Test] + public void Test_205_06() + { + } + + [Test] + public void Test_205_07() + { + } + + [Test] + public void Test_205_08() + { + } + + [Test] + public void Test_205_09() + { + } + + [Test] + public void Test_205_10() + { + } + + [Test] + public void Test_205_11() + { + } + + [Test] + public void Test_205_12() + { + } + + [Test] + public void Test_205_13() + { + } + + [Test] + public void Test_205_14() + { + } + + [Test] + public void Test_205_15() + { + } + + [Test] + public void Test_205_16() + { + } + + [Test] + public void Test_205_17() + { + } + + [Test] + public void Test_205_18() + { + } + + [Test] + public void Test_205_19() + { + } + + [Test] + public void Test_205_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_206 + { + #region PassingTests + [Test] + public void Test_206_01() + { + } + + [Test] + public void Test_206_02() + { + } + + [Test] + public void Test_206_03() + { + } + + [Test] + public void Test_206_04() + { + } + + [Test] + public void Test_206_05() + { + } + + [Test] + public void Test_206_06() + { + } + + [Test] + public void Test_206_07() + { + } + + [Test] + public void Test_206_08() + { + } + + [Test] + public void Test_206_09() + { + } + + [Test] + public void Test_206_10() + { + } + + [Test] + public void Test_206_11() + { + } + + [Test] + public void Test_206_12() + { + } + + [Test] + public void Test_206_13() + { + } + + [Test] + public void Test_206_14() + { + } + + [Test] + public void Test_206_15() + { + } + + [Test] + public void Test_206_16() + { + } + + [Test] + public void Test_206_17() + { + } + + [Test] + public void Test_206_18() + { + } + + [Test] + public void Test_206_19() + { + } + + [Test] + public void Test_206_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_207 + { + #region PassingTests + [Test] + public void Test_207_01() + { + } + + [Test] + public void Test_207_02() + { + } + + [Test] + public void Test_207_03() + { + } + + [Test] + public void Test_207_04() + { + } + + [Test] + public void Test_207_05() + { + } + + [Test] + public void Test_207_06() + { + } + + [Test] + public void Test_207_07() + { + } + + [Test] + public void Test_207_08() + { + } + + [Test] + public void Test_207_09() + { + } + + [Test] + public void Test_207_10() + { + } + + [Test] + public void Test_207_11() + { + } + + [Test] + public void Test_207_12() + { + } + + [Test] + public void Test_207_13() + { + } + + [Test] + public void Test_207_14() + { + } + + [Test] + public void Test_207_15() + { + } + + [Test] + public void Test_207_16() + { + } + + [Test] + public void Test_207_17() + { + } + + [Test] + public void Test_207_18() + { + } + + [Test] + public void Test_207_19() + { + } + + [Test] + public void Test_207_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_208 + { + #region PassingTests + [Test] + public void Test_208_01() + { + } + + [Test] + public void Test_208_02() + { + } + + [Test] + public void Test_208_03() + { + } + + [Test] + public void Test_208_04() + { + } + + [Test] + public void Test_208_05() + { + } + + [Test] + public void Test_208_06() + { + } + + [Test] + public void Test_208_07() + { + } + + [Test] + public void Test_208_08() + { + } + + [Test] + public void Test_208_09() + { + } + + [Test] + public void Test_208_10() + { + } + + [Test] + public void Test_208_11() + { + } + + [Test] + public void Test_208_12() + { + } + + [Test] + public void Test_208_13() + { + } + + [Test] + public void Test_208_14() + { + } + + [Test] + public void Test_208_15() + { + } + + [Test] + public void Test_208_16() + { + } + + [Test] + public void Test_208_17() + { + } + + [Test] + public void Test_208_18() + { + } + + [Test] + public void Test_208_19() + { + } + + [Test] + public void Test_208_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_209 + { + #region PassingTests + [Test] + public void Test_209_01() + { + } + + [Test] + public void Test_209_02() + { + } + + [Test] + public void Test_209_03() + { + } + + [Test] + public void Test_209_04() + { + } + + [Test] + public void Test_209_05() + { + } + + [Test] + public void Test_209_06() + { + } + + [Test] + public void Test_209_07() + { + } + + [Test] + public void Test_209_08() + { + } + + [Test] + public void Test_209_09() + { + } + + [Test] + public void Test_209_10() + { + } + + [Test] + public void Test_209_11() + { + } + + [Test] + public void Test_209_12() + { + } + + [Test] + public void Test_209_13() + { + } + + [Test] + public void Test_209_14() + { + } + + [Test] + public void Test_209_15() + { + } + + [Test] + public void Test_209_16() + { + } + + [Test] + public void Test_209_17() + { + } + + [Test] + public void Test_209_18() + { + } + + [Test] + public void Test_209_19() + { + } + + [Test] + public void Test_209_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_210 + { + #region PassingTests + [Test] + public void Test_210_01() + { + } + + [Test] + public void Test_210_02() + { + } + + [Test] + public void Test_210_03() + { + } + + [Test] + public void Test_210_04() + { + } + + [Test] + public void Test_210_05() + { + } + + [Test] + public void Test_210_06() + { + } + + [Test] + public void Test_210_07() + { + } + + [Test] + public void Test_210_08() + { + } + + [Test] + public void Test_210_09() + { + } + + [Test] + public void Test_210_10() + { + } + + [Test] + public void Test_210_11() + { + } + + [Test] + public void Test_210_12() + { + } + + [Test] + public void Test_210_13() + { + } + + [Test] + public void Test_210_14() + { + } + + [Test] + public void Test_210_15() + { + } + + [Test] + public void Test_210_16() + { + } + + [Test] + public void Test_210_17() + { + } + + [Test] + public void Test_210_18() + { + } + + [Test] + public void Test_210_19() + { + } + + [Test] + public void Test_210_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_211 + { + #region PassingTests + [Test] + public void Test_211_01() + { + } + + [Test] + public void Test_211_02() + { + } + + [Test] + public void Test_211_03() + { + } + + [Test] + public void Test_211_04() + { + } + + [Test] + public void Test_211_05() + { + } + + [Test] + public void Test_211_06() + { + } + + [Test] + public void Test_211_07() + { + } + + [Test] + public void Test_211_08() + { + } + + [Test] + public void Test_211_09() + { + } + + [Test] + public void Test_211_10() + { + } + + [Test] + public void Test_211_11() + { + } + + [Test] + public void Test_211_12() + { + } + + [Test] + public void Test_211_13() + { + } + + [Test] + public void Test_211_14() + { + } + + [Test] + public void Test_211_15() + { + } + + [Test] + public void Test_211_16() + { + } + + [Test] + public void Test_211_17() + { + } + + [Test] + public void Test_211_18() + { + } + + [Test] + public void Test_211_19() + { + } + + [Test] + public void Test_211_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_212 + { + #region PassingTests + [Test] + public void Test_212_01() + { + } + + [Test] + public void Test_212_02() + { + } + + [Test] + public void Test_212_03() + { + } + + [Test] + public void Test_212_04() + { + } + + [Test] + public void Test_212_05() + { + } + + [Test] + public void Test_212_06() + { + } + + [Test] + public void Test_212_07() + { + } + + [Test] + public void Test_212_08() + { + } + + [Test] + public void Test_212_09() + { + } + + [Test] + public void Test_212_10() + { + } + + [Test] + public void Test_212_11() + { + } + + [Test] + public void Test_212_12() + { + } + + [Test] + public void Test_212_13() + { + } + + [Test] + public void Test_212_14() + { + } + + [Test] + public void Test_212_15() + { + } + + [Test] + public void Test_212_16() + { + } + + [Test] + public void Test_212_17() + { + } + + [Test] + public void Test_212_18() + { + } + + [Test] + public void Test_212_19() + { + } + + [Test] + public void Test_212_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_213 + { + #region PassingTests + [Test] + public void Test_213_01() + { + } + + [Test] + public void Test_213_02() + { + } + + [Test] + public void Test_213_03() + { + } + + [Test] + public void Test_213_04() + { + } + + [Test] + public void Test_213_05() + { + } + + [Test] + public void Test_213_06() + { + } + + [Test] + public void Test_213_07() + { + } + + [Test] + public void Test_213_08() + { + } + + [Test] + public void Test_213_09() + { + } + + [Test] + public void Test_213_10() + { + } + + [Test] + public void Test_213_11() + { + } + + [Test] + public void Test_213_12() + { + } + + [Test] + public void Test_213_13() + { + } + + [Test] + public void Test_213_14() + { + } + + [Test] + public void Test_213_15() + { + } + + [Test] + public void Test_213_16() + { + } + + [Test] + public void Test_213_17() + { + } + + [Test] + public void Test_213_18() + { + } + + [Test] + public void Test_213_19() + { + } + + [Test] + public void Test_213_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_214 + { + #region PassingTests + [Test] + public void Test_214_01() + { + } + + [Test] + public void Test_214_02() + { + } + + [Test] + public void Test_214_03() + { + } + + [Test] + public void Test_214_04() + { + } + + [Test] + public void Test_214_05() + { + } + + [Test] + public void Test_214_06() + { + } + + [Test] + public void Test_214_07() + { + } + + [Test] + public void Test_214_08() + { + } + + [Test] + public void Test_214_09() + { + } + + [Test] + public void Test_214_10() + { + } + + [Test] + public void Test_214_11() + { + } + + [Test] + public void Test_214_12() + { + } + + [Test] + public void Test_214_13() + { + } + + [Test] + public void Test_214_14() + { + } + + [Test] + public void Test_214_15() + { + } + + [Test] + public void Test_214_16() + { + } + + [Test] + public void Test_214_17() + { + } + + [Test] + public void Test_214_18() + { + } + + [Test] + public void Test_214_19() + { + } + + [Test] + public void Test_214_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_215 + { + #region PassingTests + [Test] + public void Test_215_01() + { + } + + [Test] + public void Test_215_02() + { + } + + [Test] + public void Test_215_03() + { + } + + [Test] + public void Test_215_04() + { + } + + [Test] + public void Test_215_05() + { + } + + [Test] + public void Test_215_06() + { + } + + [Test] + public void Test_215_07() + { + } + + [Test] + public void Test_215_08() + { + } + + [Test] + public void Test_215_09() + { + } + + [Test] + public void Test_215_10() + { + } + + [Test] + public void Test_215_11() + { + } + + [Test] + public void Test_215_12() + { + } + + [Test] + public void Test_215_13() + { + } + + [Test] + public void Test_215_14() + { + } + + [Test] + public void Test_215_15() + { + } + + [Test] + public void Test_215_16() + { + } + + [Test] + public void Test_215_17() + { + } + + [Test] + public void Test_215_18() + { + } + + [Test] + public void Test_215_19() + { + } + + [Test] + public void Test_215_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_216 + { + #region PassingTests + [Test] + public void Test_216_01() + { + } + + [Test] + public void Test_216_02() + { + } + + [Test] + public void Test_216_03() + { + } + + [Test] + public void Test_216_04() + { + } + + [Test] + public void Test_216_05() + { + } + + [Test] + public void Test_216_06() + { + } + + [Test] + public void Test_216_07() + { + } + + [Test] + public void Test_216_08() + { + } + + [Test] + public void Test_216_09() + { + } + + [Test] + public void Test_216_10() + { + } + + [Test] + public void Test_216_11() + { + } + + [Test] + public void Test_216_12() + { + } + + [Test] + public void Test_216_13() + { + } + + [Test] + public void Test_216_14() + { + } + + [Test] + public void Test_216_15() + { + } + + [Test] + public void Test_216_16() + { + } + + [Test] + public void Test_216_17() + { + } + + [Test] + public void Test_216_18() + { + } + + [Test] + public void Test_216_19() + { + } + + [Test] + public void Test_216_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_217 + { + #region PassingTests + [Test] + public void Test_217_01() + { + } + + [Test] + public void Test_217_02() + { + } + + [Test] + public void Test_217_03() + { + } + + [Test] + public void Test_217_04() + { + } + + [Test] + public void Test_217_05() + { + } + + [Test] + public void Test_217_06() + { + } + + [Test] + public void Test_217_07() + { + } + + [Test] + public void Test_217_08() + { + } + + [Test] + public void Test_217_09() + { + } + + [Test] + public void Test_217_10() + { + } + + [Test] + public void Test_217_11() + { + } + + [Test] + public void Test_217_12() + { + } + + [Test] + public void Test_217_13() + { + } + + [Test] + public void Test_217_14() + { + } + + [Test] + public void Test_217_15() + { + } + + [Test] + public void Test_217_16() + { + } + + [Test] + public void Test_217_17() + { + } + + [Test] + public void Test_217_18() + { + } + + [Test] + public void Test_217_19() + { + } + + [Test] + public void Test_217_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_218 + { + #region PassingTests + [Test] + public void Test_218_01() + { + } + + [Test] + public void Test_218_02() + { + } + + [Test] + public void Test_218_03() + { + } + + [Test] + public void Test_218_04() + { + } + + [Test] + public void Test_218_05() + { + } + + [Test] + public void Test_218_06() + { + } + + [Test] + public void Test_218_07() + { + } + + [Test] + public void Test_218_08() + { + } + + [Test] + public void Test_218_09() + { + } + + [Test] + public void Test_218_10() + { + } + + [Test] + public void Test_218_11() + { + } + + [Test] + public void Test_218_12() + { + } + + [Test] + public void Test_218_13() + { + } + + [Test] + public void Test_218_14() + { + } + + [Test] + public void Test_218_15() + { + } + + [Test] + public void Test_218_16() + { + } + + [Test] + public void Test_218_17() + { + } + + [Test] + public void Test_218_18() + { + } + + [Test] + public void Test_218_19() + { + } + + [Test] + public void Test_218_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_219 + { + #region PassingTests + [Test] + public void Test_219_01() + { + } + + [Test] + public void Test_219_02() + { + } + + [Test] + public void Test_219_03() + { + } + + [Test] + public void Test_219_04() + { + } + + [Test] + public void Test_219_05() + { + } + + [Test] + public void Test_219_06() + { + } + + [Test] + public void Test_219_07() + { + } + + [Test] + public void Test_219_08() + { + } + + [Test] + public void Test_219_09() + { + } + + [Test] + public void Test_219_10() + { + } + + [Test] + public void Test_219_11() + { + } + + [Test] + public void Test_219_12() + { + } + + [Test] + public void Test_219_13() + { + } + + [Test] + public void Test_219_14() + { + } + + [Test] + public void Test_219_15() + { + } + + [Test] + public void Test_219_16() + { + } + + [Test] + public void Test_219_17() + { + } + + [Test] + public void Test_219_18() + { + } + + [Test] + public void Test_219_19() + { + } + + [Test] + public void Test_219_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_220 + { + #region PassingTests + [Test] + public void Test_220_01() + { + } + + [Test] + public void Test_220_02() + { + } + + [Test] + public void Test_220_03() + { + } + + [Test] + public void Test_220_04() + { + } + + [Test] + public void Test_220_05() + { + } + + [Test] + public void Test_220_06() + { + } + + [Test] + public void Test_220_07() + { + } + + [Test] + public void Test_220_08() + { + } + + [Test] + public void Test_220_09() + { + } + + [Test] + public void Test_220_10() + { + } + + [Test] + public void Test_220_11() + { + } + + [Test] + public void Test_220_12() + { + } + + [Test] + public void Test_220_13() + { + } + + [Test] + public void Test_220_14() + { + } + + [Test] + public void Test_220_15() + { + } + + [Test] + public void Test_220_16() + { + } + + [Test] + public void Test_220_17() + { + } + + [Test] + public void Test_220_18() + { + } + + [Test] + public void Test_220_19() + { + } + + [Test] + public void Test_220_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_221 + { + #region PassingTests + [Test] + public void Test_221_01() + { + } + + [Test] + public void Test_221_02() + { + } + + [Test] + public void Test_221_03() + { + } + + [Test] + public void Test_221_04() + { + } + + [Test] + public void Test_221_05() + { + } + + [Test] + public void Test_221_06() + { + } + + [Test] + public void Test_221_07() + { + } + + [Test] + public void Test_221_08() + { + } + + [Test] + public void Test_221_09() + { + } + + [Test] + public void Test_221_10() + { + } + + [Test] + public void Test_221_11() + { + } + + [Test] + public void Test_221_12() + { + } + + [Test] + public void Test_221_13() + { + } + + [Test] + public void Test_221_14() + { + } + + [Test] + public void Test_221_15() + { + } + + [Test] + public void Test_221_16() + { + } + + [Test] + public void Test_221_17() + { + } + + [Test] + public void Test_221_18() + { + } + + [Test] + public void Test_221_19() + { + } + + [Test] + public void Test_221_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_222 + { + #region PassingTests + [Test] + public void Test_222_01() + { + } + + [Test] + public void Test_222_02() + { + } + + [Test] + public void Test_222_03() + { + } + + [Test] + public void Test_222_04() + { + } + + [Test] + public void Test_222_05() + { + } + + [Test] + public void Test_222_06() + { + } + + [Test] + public void Test_222_07() + { + } + + [Test] + public void Test_222_08() + { + } + + [Test] + public void Test_222_09() + { + } + + [Test] + public void Test_222_10() + { + } + + [Test] + public void Test_222_11() + { + } + + [Test] + public void Test_222_12() + { + } + + [Test] + public void Test_222_13() + { + } + + [Test] + public void Test_222_14() + { + } + + [Test] + public void Test_222_15() + { + } + + [Test] + public void Test_222_16() + { + } + + [Test] + public void Test_222_17() + { + } + + [Test] + public void Test_222_18() + { + } + + [Test] + public void Test_222_19() + { + } + + [Test] + public void Test_222_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_223 + { + #region PassingTests + [Test] + public void Test_223_01() + { + } + + [Test] + public void Test_223_02() + { + } + + [Test] + public void Test_223_03() + { + } + + [Test] + public void Test_223_04() + { + } + + [Test] + public void Test_223_05() + { + } + + [Test] + public void Test_223_06() + { + } + + [Test] + public void Test_223_07() + { + } + + [Test] + public void Test_223_08() + { + } + + [Test] + public void Test_223_09() + { + } + + [Test] + public void Test_223_10() + { + } + + [Test] + public void Test_223_11() + { + } + + [Test] + public void Test_223_12() + { + } + + [Test] + public void Test_223_13() + { + } + + [Test] + public void Test_223_14() + { + } + + [Test] + public void Test_223_15() + { + } + + [Test] + public void Test_223_16() + { + } + + [Test] + public void Test_223_17() + { + } + + [Test] + public void Test_223_18() + { + } + + [Test] + public void Test_223_19() + { + } + + [Test] + public void Test_223_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_224 + { + #region PassingTests + [Test] + public void Test_224_01() + { + } + + [Test] + public void Test_224_02() + { + } + + [Test] + public void Test_224_03() + { + } + + [Test] + public void Test_224_04() + { + } + + [Test] + public void Test_224_05() + { + } + + [Test] + public void Test_224_06() + { + } + + [Test] + public void Test_224_07() + { + } + + [Test] + public void Test_224_08() + { + } + + [Test] + public void Test_224_09() + { + } + + [Test] + public void Test_224_10() + { + } + + [Test] + public void Test_224_11() + { + } + + [Test] + public void Test_224_12() + { + } + + [Test] + public void Test_224_13() + { + } + + [Test] + public void Test_224_14() + { + } + + [Test] + public void Test_224_15() + { + } + + [Test] + public void Test_224_16() + { + } + + [Test] + public void Test_224_17() + { + } + + [Test] + public void Test_224_18() + { + } + + [Test] + public void Test_224_19() + { + } + + [Test] + public void Test_224_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_225 + { + #region PassingTests + [Test] + public void Test_225_01() + { + } + + [Test] + public void Test_225_02() + { + } + + [Test] + public void Test_225_03() + { + } + + [Test] + public void Test_225_04() + { + } + + [Test] + public void Test_225_05() + { + } + + [Test] + public void Test_225_06() + { + } + + [Test] + public void Test_225_07() + { + } + + [Test] + public void Test_225_08() + { + } + + [Test] + public void Test_225_09() + { + } + + [Test] + public void Test_225_10() + { + } + + [Test] + public void Test_225_11() + { + } + + [Test] + public void Test_225_12() + { + } + + [Test] + public void Test_225_13() + { + } + + [Test] + public void Test_225_14() + { + } + + [Test] + public void Test_225_15() + { + } + + [Test] + public void Test_225_16() + { + } + + [Test] + public void Test_225_17() + { + } + + [Test] + public void Test_225_18() + { + } + + [Test] + public void Test_225_19() + { + } + + [Test] + public void Test_225_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_226 + { + #region PassingTests + [Test] + public void Test_226_01() + { + } + + [Test] + public void Test_226_02() + { + } + + [Test] + public void Test_226_03() + { + } + + [Test] + public void Test_226_04() + { + } + + [Test] + public void Test_226_05() + { + } + + [Test] + public void Test_226_06() + { + } + + [Test] + public void Test_226_07() + { + } + + [Test] + public void Test_226_08() + { + } + + [Test] + public void Test_226_09() + { + } + + [Test] + public void Test_226_10() + { + } + + [Test] + public void Test_226_11() + { + } + + [Test] + public void Test_226_12() + { + } + + [Test] + public void Test_226_13() + { + } + + [Test] + public void Test_226_14() + { + } + + [Test] + public void Test_226_15() + { + } + + [Test] + public void Test_226_16() + { + } + + [Test] + public void Test_226_17() + { + } + + [Test] + public void Test_226_18() + { + } + + [Test] + public void Test_226_19() + { + } + + [Test] + public void Test_226_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_227 + { + #region PassingTests + [Test] + public void Test_227_01() + { + } + + [Test] + public void Test_227_02() + { + } + + [Test] + public void Test_227_03() + { + } + + [Test] + public void Test_227_04() + { + } + + [Test] + public void Test_227_05() + { + } + + [Test] + public void Test_227_06() + { + } + + [Test] + public void Test_227_07() + { + } + + [Test] + public void Test_227_08() + { + } + + [Test] + public void Test_227_09() + { + } + + [Test] + public void Test_227_10() + { + } + + [Test] + public void Test_227_11() + { + } + + [Test] + public void Test_227_12() + { + } + + [Test] + public void Test_227_13() + { + } + + [Test] + public void Test_227_14() + { + } + + [Test] + public void Test_227_15() + { + } + + [Test] + public void Test_227_16() + { + } + + [Test] + public void Test_227_17() + { + } + + [Test] + public void Test_227_18() + { + } + + [Test] + public void Test_227_19() + { + } + + [Test] + public void Test_227_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_228 + { + #region PassingTests + [Test] + public void Test_228_01() + { + } + + [Test] + public void Test_228_02() + { + } + + [Test] + public void Test_228_03() + { + } + + [Test] + public void Test_228_04() + { + } + + [Test] + public void Test_228_05() + { + } + + [Test] + public void Test_228_06() + { + } + + [Test] + public void Test_228_07() + { + } + + [Test] + public void Test_228_08() + { + } + + [Test] + public void Test_228_09() + { + } + + [Test] + public void Test_228_10() + { + } + + [Test] + public void Test_228_11() + { + } + + [Test] + public void Test_228_12() + { + } + + [Test] + public void Test_228_13() + { + } + + [Test] + public void Test_228_14() + { + } + + [Test] + public void Test_228_15() + { + } + + [Test] + public void Test_228_16() + { + } + + [Test] + public void Test_228_17() + { + } + + [Test] + public void Test_228_18() + { + } + + [Test] + public void Test_228_19() + { + } + + [Test] + public void Test_228_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_229 + { + #region PassingTests + [Test] + public void Test_229_01() + { + } + + [Test] + public void Test_229_02() + { + } + + [Test] + public void Test_229_03() + { + } + + [Test] + public void Test_229_04() + { + } + + [Test] + public void Test_229_05() + { + } + + [Test] + public void Test_229_06() + { + } + + [Test] + public void Test_229_07() + { + } + + [Test] + public void Test_229_08() + { + } + + [Test] + public void Test_229_09() + { + } + + [Test] + public void Test_229_10() + { + } + + [Test] + public void Test_229_11() + { + } + + [Test] + public void Test_229_12() + { + } + + [Test] + public void Test_229_13() + { + } + + [Test] + public void Test_229_14() + { + } + + [Test] + public void Test_229_15() + { + } + + [Test] + public void Test_229_16() + { + } + + [Test] + public void Test_229_17() + { + } + + [Test] + public void Test_229_18() + { + } + + [Test] + public void Test_229_19() + { + } + + [Test] + public void Test_229_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_230 + { + #region PassingTests + [Test] + public void Test_230_01() + { + } + + [Test] + public void Test_230_02() + { + } + + [Test] + public void Test_230_03() + { + } + + [Test] + public void Test_230_04() + { + } + + [Test] + public void Test_230_05() + { + } + + [Test] + public void Test_230_06() + { + } + + [Test] + public void Test_230_07() + { + } + + [Test] + public void Test_230_08() + { + } + + [Test] + public void Test_230_09() + { + } + + [Test] + public void Test_230_10() + { + } + + [Test] + public void Test_230_11() + { + } + + [Test] + public void Test_230_12() + { + } + + [Test] + public void Test_230_13() + { + } + + [Test] + public void Test_230_14() + { + } + + [Test] + public void Test_230_15() + { + } + + [Test] + public void Test_230_16() + { + } + + [Test] + public void Test_230_17() + { + } + + [Test] + public void Test_230_18() + { + } + + [Test] + public void Test_230_19() + { + } + + [Test] + public void Test_230_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_231 + { + #region PassingTests + [Test] + public void Test_231_01() + { + } + + [Test] + public void Test_231_02() + { + } + + [Test] + public void Test_231_03() + { + } + + [Test] + public void Test_231_04() + { + } + + [Test] + public void Test_231_05() + { + } + + [Test] + public void Test_231_06() + { + } + + [Test] + public void Test_231_07() + { + } + + [Test] + public void Test_231_08() + { + } + + [Test] + public void Test_231_09() + { + } + + [Test] + public void Test_231_10() + { + } + + [Test] + public void Test_231_11() + { + } + + [Test] + public void Test_231_12() + { + } + + [Test] + public void Test_231_13() + { + } + + [Test] + public void Test_231_14() + { + } + + [Test] + public void Test_231_15() + { + } + + [Test] + public void Test_231_16() + { + } + + [Test] + public void Test_231_17() + { + } + + [Test] + public void Test_231_18() + { + } + + [Test] + public void Test_231_19() + { + } + + [Test] + public void Test_231_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_232 + { + #region PassingTests + [Test] + public void Test_232_01() + { + } + + [Test] + public void Test_232_02() + { + } + + [Test] + public void Test_232_03() + { + } + + [Test] + public void Test_232_04() + { + } + + [Test] + public void Test_232_05() + { + } + + [Test] + public void Test_232_06() + { + } + + [Test] + public void Test_232_07() + { + } + + [Test] + public void Test_232_08() + { + } + + [Test] + public void Test_232_09() + { + } + + [Test] + public void Test_232_10() + { + } + + [Test] + public void Test_232_11() + { + } + + [Test] + public void Test_232_12() + { + } + + [Test] + public void Test_232_13() + { + } + + [Test] + public void Test_232_14() + { + } + + [Test] + public void Test_232_15() + { + } + + [Test] + public void Test_232_16() + { + } + + [Test] + public void Test_232_17() + { + } + + [Test] + public void Test_232_18() + { + } + + [Test] + public void Test_232_19() + { + } + + [Test] + public void Test_232_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_233 + { + #region PassingTests + [Test] + public void Test_233_01() + { + } + + [Test] + public void Test_233_02() + { + } + + [Test] + public void Test_233_03() + { + } + + [Test] + public void Test_233_04() + { + } + + [Test] + public void Test_233_05() + { + } + + [Test] + public void Test_233_06() + { + } + + [Test] + public void Test_233_07() + { + } + + [Test] + public void Test_233_08() + { + } + + [Test] + public void Test_233_09() + { + } + + [Test] + public void Test_233_10() + { + } + + [Test] + public void Test_233_11() + { + } + + [Test] + public void Test_233_12() + { + } + + [Test] + public void Test_233_13() + { + } + + [Test] + public void Test_233_14() + { + } + + [Test] + public void Test_233_15() + { + } + + [Test] + public void Test_233_16() + { + } + + [Test] + public void Test_233_17() + { + } + + [Test] + public void Test_233_18() + { + } + + [Test] + public void Test_233_19() + { + } + + [Test] + public void Test_233_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_234 + { + #region PassingTests + [Test] + public void Test_234_01() + { + } + + [Test] + public void Test_234_02() + { + } + + [Test] + public void Test_234_03() + { + } + + [Test] + public void Test_234_04() + { + } + + [Test] + public void Test_234_05() + { + } + + [Test] + public void Test_234_06() + { + } + + [Test] + public void Test_234_07() + { + } + + [Test] + public void Test_234_08() + { + } + + [Test] + public void Test_234_09() + { + } + + [Test] + public void Test_234_10() + { + } + + [Test] + public void Test_234_11() + { + } + + [Test] + public void Test_234_12() + { + } + + [Test] + public void Test_234_13() + { + } + + [Test] + public void Test_234_14() + { + } + + [Test] + public void Test_234_15() + { + } + + [Test] + public void Test_234_16() + { + } + + [Test] + public void Test_234_17() + { + } + + [Test] + public void Test_234_18() + { + } + + [Test] + public void Test_234_19() + { + } + + [Test] + public void Test_234_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_235 + { + #region PassingTests + [Test] + public void Test_235_01() + { + } + + [Test] + public void Test_235_02() + { + } + + [Test] + public void Test_235_03() + { + } + + [Test] + public void Test_235_04() + { + } + + [Test] + public void Test_235_05() + { + } + + [Test] + public void Test_235_06() + { + } + + [Test] + public void Test_235_07() + { + } + + [Test] + public void Test_235_08() + { + } + + [Test] + public void Test_235_09() + { + } + + [Test] + public void Test_235_10() + { + } + + [Test] + public void Test_235_11() + { + } + + [Test] + public void Test_235_12() + { + } + + [Test] + public void Test_235_13() + { + } + + [Test] + public void Test_235_14() + { + } + + [Test] + public void Test_235_15() + { + } + + [Test] + public void Test_235_16() + { + } + + [Test] + public void Test_235_17() + { + } + + [Test] + public void Test_235_18() + { + } + + [Test] + public void Test_235_19() + { + } + + [Test] + public void Test_235_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_236 + { + #region PassingTests + [Test] + public void Test_236_01() + { + } + + [Test] + public void Test_236_02() + { + } + + [Test] + public void Test_236_03() + { + } + + [Test] + public void Test_236_04() + { + } + + [Test] + public void Test_236_05() + { + } + + [Test] + public void Test_236_06() + { + } + + [Test] + public void Test_236_07() + { + } + + [Test] + public void Test_236_08() + { + } + + [Test] + public void Test_236_09() + { + } + + [Test] + public void Test_236_10() + { + } + + [Test] + public void Test_236_11() + { + } + + [Test] + public void Test_236_12() + { + } + + [Test] + public void Test_236_13() + { + } + + [Test] + public void Test_236_14() + { + } + + [Test] + public void Test_236_15() + { + } + + [Test] + public void Test_236_16() + { + } + + [Test] + public void Test_236_17() + { + } + + [Test] + public void Test_236_18() + { + } + + [Test] + public void Test_236_19() + { + } + + [Test] + public void Test_236_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_237 + { + #region PassingTests + [Test] + public void Test_237_01() + { + } + + [Test] + public void Test_237_02() + { + } + + [Test] + public void Test_237_03() + { + } + + [Test] + public void Test_237_04() + { + } + + [Test] + public void Test_237_05() + { + } + + [Test] + public void Test_237_06() + { + } + + [Test] + public void Test_237_07() + { + } + + [Test] + public void Test_237_08() + { + } + + [Test] + public void Test_237_09() + { + } + + [Test] + public void Test_237_10() + { + } + + [Test] + public void Test_237_11() + { + } + + [Test] + public void Test_237_12() + { + } + + [Test] + public void Test_237_13() + { + } + + [Test] + public void Test_237_14() + { + } + + [Test] + public void Test_237_15() + { + } + + [Test] + public void Test_237_16() + { + } + + [Test] + public void Test_237_17() + { + } + + [Test] + public void Test_237_18() + { + } + + [Test] + public void Test_237_19() + { + } + + [Test] + public void Test_237_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_238 + { + #region PassingTests + [Test] + public void Test_238_01() + { + } + + [Test] + public void Test_238_02() + { + } + + [Test] + public void Test_238_03() + { + } + + [Test] + public void Test_238_04() + { + } + + [Test] + public void Test_238_05() + { + } + + [Test] + public void Test_238_06() + { + } + + [Test] + public void Test_238_07() + { + } + + [Test] + public void Test_238_08() + { + } + + [Test] + public void Test_238_09() + { + } + + [Test] + public void Test_238_10() + { + } + + [Test] + public void Test_238_11() + { + } + + [Test] + public void Test_238_12() + { + } + + [Test] + public void Test_238_13() + { + } + + [Test] + public void Test_238_14() + { + } + + [Test] + public void Test_238_15() + { + } + + [Test] + public void Test_238_16() + { + } + + [Test] + public void Test_238_17() + { + } + + [Test] + public void Test_238_18() + { + } + + [Test] + public void Test_238_19() + { + } + + [Test] + public void Test_238_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_239 + { + #region PassingTests + [Test] + public void Test_239_01() + { + } + + [Test] + public void Test_239_02() + { + } + + [Test] + public void Test_239_03() + { + } + + [Test] + public void Test_239_04() + { + } + + [Test] + public void Test_239_05() + { + } + + [Test] + public void Test_239_06() + { + } + + [Test] + public void Test_239_07() + { + } + + [Test] + public void Test_239_08() + { + } + + [Test] + public void Test_239_09() + { + } + + [Test] + public void Test_239_10() + { + } + + [Test] + public void Test_239_11() + { + } + + [Test] + public void Test_239_12() + { + } + + [Test] + public void Test_239_13() + { + } + + [Test] + public void Test_239_14() + { + } + + [Test] + public void Test_239_15() + { + } + + [Test] + public void Test_239_16() + { + } + + [Test] + public void Test_239_17() + { + } + + [Test] + public void Test_239_18() + { + } + + [Test] + public void Test_239_19() + { + } + + [Test] + public void Test_239_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_240 + { + #region PassingTests + [Test] + public void Test_240_01() + { + } + + [Test] + public void Test_240_02() + { + } + + [Test] + public void Test_240_03() + { + } + + [Test] + public void Test_240_04() + { + } + + [Test] + public void Test_240_05() + { + } + + [Test] + public void Test_240_06() + { + } + + [Test] + public void Test_240_07() + { + } + + [Test] + public void Test_240_08() + { + } + + [Test] + public void Test_240_09() + { + } + + [Test] + public void Test_240_10() + { + } + + [Test] + public void Test_240_11() + { + } + + [Test] + public void Test_240_12() + { + } + + [Test] + public void Test_240_13() + { + } + + [Test] + public void Test_240_14() + { + } + + [Test] + public void Test_240_15() + { + } + + [Test] + public void Test_240_16() + { + } + + [Test] + public void Test_240_17() + { + } + + [Test] + public void Test_240_18() + { + } + + [Test] + public void Test_240_19() + { + } + + [Test] + public void Test_240_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_241 + { + #region PassingTests + [Test] + public void Test_241_01() + { + } + + [Test] + public void Test_241_02() + { + } + + [Test] + public void Test_241_03() + { + } + + [Test] + public void Test_241_04() + { + } + + [Test] + public void Test_241_05() + { + } + + [Test] + public void Test_241_06() + { + } + + [Test] + public void Test_241_07() + { + } + + [Test] + public void Test_241_08() + { + } + + [Test] + public void Test_241_09() + { + } + + [Test] + public void Test_241_10() + { + } + + [Test] + public void Test_241_11() + { + } + + [Test] + public void Test_241_12() + { + } + + [Test] + public void Test_241_13() + { + } + + [Test] + public void Test_241_14() + { + } + + [Test] + public void Test_241_15() + { + } + + [Test] + public void Test_241_16() + { + } + + [Test] + public void Test_241_17() + { + } + + [Test] + public void Test_241_18() + { + } + + [Test] + public void Test_241_19() + { + } + + [Test] + public void Test_241_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_242 + { + #region PassingTests + [Test] + public void Test_242_01() + { + } + + [Test] + public void Test_242_02() + { + } + + [Test] + public void Test_242_03() + { + } + + [Test] + public void Test_242_04() + { + } + + [Test] + public void Test_242_05() + { + } + + [Test] + public void Test_242_06() + { + } + + [Test] + public void Test_242_07() + { + } + + [Test] + public void Test_242_08() + { + } + + [Test] + public void Test_242_09() + { + } + + [Test] + public void Test_242_10() + { + } + + [Test] + public void Test_242_11() + { + } + + [Test] + public void Test_242_12() + { + } + + [Test] + public void Test_242_13() + { + } + + [Test] + public void Test_242_14() + { + } + + [Test] + public void Test_242_15() + { + } + + [Test] + public void Test_242_16() + { + } + + [Test] + public void Test_242_17() + { + } + + [Test] + public void Test_242_18() + { + } + + [Test] + public void Test_242_19() + { + } + + [Test] + public void Test_242_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_243 + { + #region PassingTests + [Test] + public void Test_243_01() + { + } + + [Test] + public void Test_243_02() + { + } + + [Test] + public void Test_243_03() + { + } + + [Test] + public void Test_243_04() + { + } + + [Test] + public void Test_243_05() + { + } + + [Test] + public void Test_243_06() + { + } + + [Test] + public void Test_243_07() + { + } + + [Test] + public void Test_243_08() + { + } + + [Test] + public void Test_243_09() + { + } + + [Test] + public void Test_243_10() + { + } + + [Test] + public void Test_243_11() + { + } + + [Test] + public void Test_243_12() + { + } + + [Test] + public void Test_243_13() + { + } + + [Test] + public void Test_243_14() + { + } + + [Test] + public void Test_243_15() + { + } + + [Test] + public void Test_243_16() + { + } + + [Test] + public void Test_243_17() + { + } + + [Test] + public void Test_243_18() + { + } + + [Test] + public void Test_243_19() + { + } + + [Test] + public void Test_243_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_244 + { + #region PassingTests + [Test] + public void Test_244_01() + { + } + + [Test] + public void Test_244_02() + { + } + + [Test] + public void Test_244_03() + { + } + + [Test] + public void Test_244_04() + { + } + + [Test] + public void Test_244_05() + { + } + + [Test] + public void Test_244_06() + { + } + + [Test] + public void Test_244_07() + { + } + + [Test] + public void Test_244_08() + { + } + + [Test] + public void Test_244_09() + { + } + + [Test] + public void Test_244_10() + { + } + + [Test] + public void Test_244_11() + { + } + + [Test] + public void Test_244_12() + { + } + + [Test] + public void Test_244_13() + { + } + + [Test] + public void Test_244_14() + { + } + + [Test] + public void Test_244_15() + { + } + + [Test] + public void Test_244_16() + { + } + + [Test] + public void Test_244_17() + { + } + + [Test] + public void Test_244_18() + { + } + + [Test] + public void Test_244_19() + { + } + + [Test] + public void Test_244_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_245 + { + #region PassingTests + [Test] + public void Test_245_01() + { + } + + [Test] + public void Test_245_02() + { + } + + [Test] + public void Test_245_03() + { + } + + [Test] + public void Test_245_04() + { + } + + [Test] + public void Test_245_05() + { + } + + [Test] + public void Test_245_06() + { + } + + [Test] + public void Test_245_07() + { + } + + [Test] + public void Test_245_08() + { + } + + [Test] + public void Test_245_09() + { + } + + [Test] + public void Test_245_10() + { + } + + [Test] + public void Test_245_11() + { + } + + [Test] + public void Test_245_12() + { + } + + [Test] + public void Test_245_13() + { + } + + [Test] + public void Test_245_14() + { + } + + [Test] + public void Test_245_15() + { + } + + [Test] + public void Test_245_16() + { + } + + [Test] + public void Test_245_17() + { + } + + [Test] + public void Test_245_18() + { + } + + [Test] + public void Test_245_19() + { + } + + [Test] + public void Test_245_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_246 + { + #region PassingTests + [Test] + public void Test_246_01() + { + } + + [Test] + public void Test_246_02() + { + } + + [Test] + public void Test_246_03() + { + } + + [Test] + public void Test_246_04() + { + } + + [Test] + public void Test_246_05() + { + } + + [Test] + public void Test_246_06() + { + } + + [Test] + public void Test_246_07() + { + } + + [Test] + public void Test_246_08() + { + } + + [Test] + public void Test_246_09() + { + } + + [Test] + public void Test_246_10() + { + } + + [Test] + public void Test_246_11() + { + } + + [Test] + public void Test_246_12() + { + } + + [Test] + public void Test_246_13() + { + } + + [Test] + public void Test_246_14() + { + } + + [Test] + public void Test_246_15() + { + } + + [Test] + public void Test_246_16() + { + } + + [Test] + public void Test_246_17() + { + } + + [Test] + public void Test_246_18() + { + } + + [Test] + public void Test_246_19() + { + } + + [Test] + public void Test_246_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_247 + { + #region PassingTests + [Test] + public void Test_247_01() + { + } + + [Test] + public void Test_247_02() + { + } + + [Test] + public void Test_247_03() + { + } + + [Test] + public void Test_247_04() + { + } + + [Test] + public void Test_247_05() + { + } + + [Test] + public void Test_247_06() + { + } + + [Test] + public void Test_247_07() + { + } + + [Test] + public void Test_247_08() + { + } + + [Test] + public void Test_247_09() + { + } + + [Test] + public void Test_247_10() + { + } + + [Test] + public void Test_247_11() + { + } + + [Test] + public void Test_247_12() + { + } + + [Test] + public void Test_247_13() + { + } + + [Test] + public void Test_247_14() + { + } + + [Test] + public void Test_247_15() + { + } + + [Test] + public void Test_247_16() + { + } + + [Test] + public void Test_247_17() + { + } + + [Test] + public void Test_247_18() + { + } + + [Test] + public void Test_247_19() + { + } + + [Test] + public void Test_247_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_248 + { + #region PassingTests + [Test] + public void Test_248_01() + { + } + + [Test] + public void Test_248_02() + { + } + + [Test] + public void Test_248_03() + { + } + + [Test] + public void Test_248_04() + { + } + + [Test] + public void Test_248_05() + { + } + + [Test] + public void Test_248_06() + { + } + + [Test] + public void Test_248_07() + { + } + + [Test] + public void Test_248_08() + { + } + + [Test] + public void Test_248_09() + { + } + + [Test] + public void Test_248_10() + { + } + + [Test] + public void Test_248_11() + { + } + + [Test] + public void Test_248_12() + { + } + + [Test] + public void Test_248_13() + { + } + + [Test] + public void Test_248_14() + { + } + + [Test] + public void Test_248_15() + { + } + + [Test] + public void Test_248_16() + { + } + + [Test] + public void Test_248_17() + { + } + + [Test] + public void Test_248_18() + { + } + + [Test] + public void Test_248_19() + { + } + + [Test] + public void Test_248_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_249 + { + #region PassingTests + [Test] + public void Test_249_01() + { + } + + [Test] + public void Test_249_02() + { + } + + [Test] + public void Test_249_03() + { + } + + [Test] + public void Test_249_04() + { + } + + [Test] + public void Test_249_05() + { + } + + [Test] + public void Test_249_06() + { + } + + [Test] + public void Test_249_07() + { + } + + [Test] + public void Test_249_08() + { + } + + [Test] + public void Test_249_09() + { + } + + [Test] + public void Test_249_10() + { + } + + [Test] + public void Test_249_11() + { + } + + [Test] + public void Test_249_12() + { + } + + [Test] + public void Test_249_13() + { + } + + [Test] + public void Test_249_14() + { + } + + [Test] + public void Test_249_15() + { + } + + [Test] + public void Test_249_16() + { + } + + [Test] + public void Test_249_17() + { + } + + [Test] + public void Test_249_18() + { + } + + [Test] + public void Test_249_19() + { + } + + [Test] + public void Test_249_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_250 + { + #region PassingTests + [Test] + public void Test_250_01() + { + } + + [Test] + public void Test_250_02() + { + } + + [Test] + public void Test_250_03() + { + } + + [Test] + public void Test_250_04() + { + } + + [Test] + public void Test_250_05() + { + } + + [Test] + public void Test_250_06() + { + } + + [Test] + public void Test_250_07() + { + } + + [Test] + public void Test_250_08() + { + } + + [Test] + public void Test_250_09() + { + } + + [Test] + public void Test_250_10() + { + } + + [Test] + public void Test_250_11() + { + } + + [Test] + public void Test_250_12() + { + } + + [Test] + public void Test_250_13() + { + } + + [Test] + public void Test_250_14() + { + } + + [Test] + public void Test_250_15() + { + } + + [Test] + public void Test_250_16() + { + } + + [Test] + public void Test_250_17() + { + } + + [Test] + public void Test_250_18() + { + } + + [Test] + public void Test_250_19() + { + } + + [Test] + public void Test_250_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_251 + { + #region PassingTests + [Test] + public void Test_251_01() + { + } + + [Test] + public void Test_251_02() + { + } + + [Test] + public void Test_251_03() + { + } + + [Test] + public void Test_251_04() + { + } + + [Test] + public void Test_251_05() + { + } + + [Test] + public void Test_251_06() + { + } + + [Test] + public void Test_251_07() + { + } + + [Test] + public void Test_251_08() + { + } + + [Test] + public void Test_251_09() + { + } + + [Test] + public void Test_251_10() + { + } + + [Test] + public void Test_251_11() + { + } + + [Test] + public void Test_251_12() + { + } + + [Test] + public void Test_251_13() + { + } + + [Test] + public void Test_251_14() + { + } + + [Test] + public void Test_251_15() + { + } + + [Test] + public void Test_251_16() + { + } + + [Test] + public void Test_251_17() + { + } + + [Test] + public void Test_251_18() + { + } + + [Test] + public void Test_251_19() + { + } + + [Test] + public void Test_251_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_252 + { + #region PassingTests + [Test] + public void Test_252_01() + { + } + + [Test] + public void Test_252_02() + { + } + + [Test] + public void Test_252_03() + { + } + + [Test] + public void Test_252_04() + { + } + + [Test] + public void Test_252_05() + { + } + + [Test] + public void Test_252_06() + { + } + + [Test] + public void Test_252_07() + { + } + + [Test] + public void Test_252_08() + { + } + + [Test] + public void Test_252_09() + { + } + + [Test] + public void Test_252_10() + { + } + + [Test] + public void Test_252_11() + { + } + + [Test] + public void Test_252_12() + { + } + + [Test] + public void Test_252_13() + { + } + + [Test] + public void Test_252_14() + { + } + + [Test] + public void Test_252_15() + { + } + + [Test] + public void Test_252_16() + { + } + + [Test] + public void Test_252_17() + { + } + + [Test] + public void Test_252_18() + { + } + + [Test] + public void Test_252_19() + { + } + + [Test] + public void Test_252_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_253 + { + #region PassingTests + [Test] + public void Test_253_01() + { + } + + [Test] + public void Test_253_02() + { + } + + [Test] + public void Test_253_03() + { + } + + [Test] + public void Test_253_04() + { + } + + [Test] + public void Test_253_05() + { + } + + [Test] + public void Test_253_06() + { + } + + [Test] + public void Test_253_07() + { + } + + [Test] + public void Test_253_08() + { + } + + [Test] + public void Test_253_09() + { + } + + [Test] + public void Test_253_10() + { + } + + [Test] + public void Test_253_11() + { + } + + [Test] + public void Test_253_12() + { + } + + [Test] + public void Test_253_13() + { + } + + [Test] + public void Test_253_14() + { + } + + [Test] + public void Test_253_15() + { + } + + [Test] + public void Test_253_16() + { + } + + [Test] + public void Test_253_17() + { + } + + [Test] + public void Test_253_18() + { + } + + [Test] + public void Test_253_19() + { + } + + [Test] + public void Test_253_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_254 + { + #region PassingTests + [Test] + public void Test_254_01() + { + } + + [Test] + public void Test_254_02() + { + } + + [Test] + public void Test_254_03() + { + } + + [Test] + public void Test_254_04() + { + } + + [Test] + public void Test_254_05() + { + } + + [Test] + public void Test_254_06() + { + } + + [Test] + public void Test_254_07() + { + } + + [Test] + public void Test_254_08() + { + } + + [Test] + public void Test_254_09() + { + } + + [Test] + public void Test_254_10() + { + } + + [Test] + public void Test_254_11() + { + } + + [Test] + public void Test_254_12() + { + } + + [Test] + public void Test_254_13() + { + } + + [Test] + public void Test_254_14() + { + } + + [Test] + public void Test_254_15() + { + } + + [Test] + public void Test_254_16() + { + } + + [Test] + public void Test_254_17() + { + } + + [Test] + public void Test_254_18() + { + } + + [Test] + public void Test_254_19() + { + } + + [Test] + public void Test_254_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_255 + { + #region PassingTests + [Test] + public void Test_255_01() + { + } + + [Test] + public void Test_255_02() + { + } + + [Test] + public void Test_255_03() + { + } + + [Test] + public void Test_255_04() + { + } + + [Test] + public void Test_255_05() + { + } + + [Test] + public void Test_255_06() + { + } + + [Test] + public void Test_255_07() + { + } + + [Test] + public void Test_255_08() + { + } + + [Test] + public void Test_255_09() + { + } + + [Test] + public void Test_255_10() + { + } + + [Test] + public void Test_255_11() + { + } + + [Test] + public void Test_255_12() + { + } + + [Test] + public void Test_255_13() + { + } + + [Test] + public void Test_255_14() + { + } + + [Test] + public void Test_255_15() + { + } + + [Test] + public void Test_255_16() + { + } + + [Test] + public void Test_255_17() + { + } + + [Test] + public void Test_255_18() + { + } + + [Test] + public void Test_255_19() + { + } + + [Test] + public void Test_255_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_256 + { + #region PassingTests + [Test] + public void Test_256_01() + { + } + + [Test] + public void Test_256_02() + { + } + + [Test] + public void Test_256_03() + { + } + + [Test] + public void Test_256_04() + { + } + + [Test] + public void Test_256_05() + { + } + + [Test] + public void Test_256_06() + { + } + + [Test] + public void Test_256_07() + { + } + + [Test] + public void Test_256_08() + { + } + + [Test] + public void Test_256_09() + { + } + + [Test] + public void Test_256_10() + { + } + + [Test] + public void Test_256_11() + { + } + + [Test] + public void Test_256_12() + { + } + + [Test] + public void Test_256_13() + { + } + + [Test] + public void Test_256_14() + { + } + + [Test] + public void Test_256_15() + { + } + + [Test] + public void Test_256_16() + { + } + + [Test] + public void Test_256_17() + { + } + + [Test] + public void Test_256_18() + { + } + + [Test] + public void Test_256_19() + { + } + + [Test] + public void Test_256_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_257 + { + #region PassingTests + [Test] + public void Test_257_01() + { + } + + [Test] + public void Test_257_02() + { + } + + [Test] + public void Test_257_03() + { + } + + [Test] + public void Test_257_04() + { + } + + [Test] + public void Test_257_05() + { + } + + [Test] + public void Test_257_06() + { + } + + [Test] + public void Test_257_07() + { + } + + [Test] + public void Test_257_08() + { + } + + [Test] + public void Test_257_09() + { + } + + [Test] + public void Test_257_10() + { + } + + [Test] + public void Test_257_11() + { + } + + [Test] + public void Test_257_12() + { + } + + [Test] + public void Test_257_13() + { + } + + [Test] + public void Test_257_14() + { + } + + [Test] + public void Test_257_15() + { + } + + [Test] + public void Test_257_16() + { + } + + [Test] + public void Test_257_17() + { + } + + [Test] + public void Test_257_18() + { + } + + [Test] + public void Test_257_19() + { + } + + [Test] + public void Test_257_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_258 + { + #region PassingTests + [Test] + public void Test_258_01() + { + } + + [Test] + public void Test_258_02() + { + } + + [Test] + public void Test_258_03() + { + } + + [Test] + public void Test_258_04() + { + } + + [Test] + public void Test_258_05() + { + } + + [Test] + public void Test_258_06() + { + } + + [Test] + public void Test_258_07() + { + } + + [Test] + public void Test_258_08() + { + } + + [Test] + public void Test_258_09() + { + } + + [Test] + public void Test_258_10() + { + } + + [Test] + public void Test_258_11() + { + } + + [Test] + public void Test_258_12() + { + } + + [Test] + public void Test_258_13() + { + } + + [Test] + public void Test_258_14() + { + } + + [Test] + public void Test_258_15() + { + } + + [Test] + public void Test_258_16() + { + } + + [Test] + public void Test_258_17() + { + } + + [Test] + public void Test_258_18() + { + } + + [Test] + public void Test_258_19() + { + } + + [Test] + public void Test_258_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_259 + { + #region PassingTests + [Test] + public void Test_259_01() + { + } + + [Test] + public void Test_259_02() + { + } + + [Test] + public void Test_259_03() + { + } + + [Test] + public void Test_259_04() + { + } + + [Test] + public void Test_259_05() + { + } + + [Test] + public void Test_259_06() + { + } + + [Test] + public void Test_259_07() + { + } + + [Test] + public void Test_259_08() + { + } + + [Test] + public void Test_259_09() + { + } + + [Test] + public void Test_259_10() + { + } + + [Test] + public void Test_259_11() + { + } + + [Test] + public void Test_259_12() + { + } + + [Test] + public void Test_259_13() + { + } + + [Test] + public void Test_259_14() + { + } + + [Test] + public void Test_259_15() + { + } + + [Test] + public void Test_259_16() + { + } + + [Test] + public void Test_259_17() + { + } + + [Test] + public void Test_259_18() + { + } + + [Test] + public void Test_259_19() + { + } + + [Test] + public void Test_259_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_260 + { + #region PassingTests + [Test] + public void Test_260_01() + { + } + + [Test] + public void Test_260_02() + { + } + + [Test] + public void Test_260_03() + { + } + + [Test] + public void Test_260_04() + { + } + + [Test] + public void Test_260_05() + { + } + + [Test] + public void Test_260_06() + { + } + + [Test] + public void Test_260_07() + { + } + + [Test] + public void Test_260_08() + { + } + + [Test] + public void Test_260_09() + { + } + + [Test] + public void Test_260_10() + { + } + + [Test] + public void Test_260_11() + { + } + + [Test] + public void Test_260_12() + { + } + + [Test] + public void Test_260_13() + { + } + + [Test] + public void Test_260_14() + { + } + + [Test] + public void Test_260_15() + { + } + + [Test] + public void Test_260_16() + { + } + + [Test] + public void Test_260_17() + { + } + + [Test] + public void Test_260_18() + { + } + + [Test] + public void Test_260_19() + { + } + + [Test] + public void Test_260_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_261 + { + #region PassingTests + [Test] + public void Test_261_01() + { + } + + [Test] + public void Test_261_02() + { + } + + [Test] + public void Test_261_03() + { + } + + [Test] + public void Test_261_04() + { + } + + [Test] + public void Test_261_05() + { + } + + [Test] + public void Test_261_06() + { + } + + [Test] + public void Test_261_07() + { + } + + [Test] + public void Test_261_08() + { + } + + [Test] + public void Test_261_09() + { + } + + [Test] + public void Test_261_10() + { + } + + [Test] + public void Test_261_11() + { + } + + [Test] + public void Test_261_12() + { + } + + [Test] + public void Test_261_13() + { + } + + [Test] + public void Test_261_14() + { + } + + [Test] + public void Test_261_15() + { + } + + [Test] + public void Test_261_16() + { + } + + [Test] + public void Test_261_17() + { + } + + [Test] + public void Test_261_18() + { + } + + [Test] + public void Test_261_19() + { + } + + [Test] + public void Test_261_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_262 + { + #region PassingTests + [Test] + public void Test_262_01() + { + } + + [Test] + public void Test_262_02() + { + } + + [Test] + public void Test_262_03() + { + } + + [Test] + public void Test_262_04() + { + } + + [Test] + public void Test_262_05() + { + } + + [Test] + public void Test_262_06() + { + } + + [Test] + public void Test_262_07() + { + } + + [Test] + public void Test_262_08() + { + } + + [Test] + public void Test_262_09() + { + } + + [Test] + public void Test_262_10() + { + } + + [Test] + public void Test_262_11() + { + } + + [Test] + public void Test_262_12() + { + } + + [Test] + public void Test_262_13() + { + } + + [Test] + public void Test_262_14() + { + } + + [Test] + public void Test_262_15() + { + } + + [Test] + public void Test_262_16() + { + } + + [Test] + public void Test_262_17() + { + } + + [Test] + public void Test_262_18() + { + } + + [Test] + public void Test_262_19() + { + } + + [Test] + public void Test_262_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_263 + { + #region PassingTests + [Test] + public void Test_263_01() + { + } + + [Test] + public void Test_263_02() + { + } + + [Test] + public void Test_263_03() + { + } + + [Test] + public void Test_263_04() + { + } + + [Test] + public void Test_263_05() + { + } + + [Test] + public void Test_263_06() + { + } + + [Test] + public void Test_263_07() + { + } + + [Test] + public void Test_263_08() + { + } + + [Test] + public void Test_263_09() + { + } + + [Test] + public void Test_263_10() + { + } + + [Test] + public void Test_263_11() + { + } + + [Test] + public void Test_263_12() + { + } + + [Test] + public void Test_263_13() + { + } + + [Test] + public void Test_263_14() + { + } + + [Test] + public void Test_263_15() + { + } + + [Test] + public void Test_263_16() + { + } + + [Test] + public void Test_263_17() + { + } + + [Test] + public void Test_263_18() + { + } + + [Test] + public void Test_263_19() + { + } + + [Test] + public void Test_263_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_264 + { + #region PassingTests + [Test] + public void Test_264_01() + { + } + + [Test] + public void Test_264_02() + { + } + + [Test] + public void Test_264_03() + { + } + + [Test] + public void Test_264_04() + { + } + + [Test] + public void Test_264_05() + { + } + + [Test] + public void Test_264_06() + { + } + + [Test] + public void Test_264_07() + { + } + + [Test] + public void Test_264_08() + { + } + + [Test] + public void Test_264_09() + { + } + + [Test] + public void Test_264_10() + { + } + + [Test] + public void Test_264_11() + { + } + + [Test] + public void Test_264_12() + { + } + + [Test] + public void Test_264_13() + { + } + + [Test] + public void Test_264_14() + { + } + + [Test] + public void Test_264_15() + { + } + + [Test] + public void Test_264_16() + { + } + + [Test] + public void Test_264_17() + { + } + + [Test] + public void Test_264_18() + { + } + + [Test] + public void Test_264_19() + { + } + + [Test] + public void Test_264_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_265 + { + #region PassingTests + [Test] + public void Test_265_01() + { + } + + [Test] + public void Test_265_02() + { + } + + [Test] + public void Test_265_03() + { + } + + [Test] + public void Test_265_04() + { + } + + [Test] + public void Test_265_05() + { + } + + [Test] + public void Test_265_06() + { + } + + [Test] + public void Test_265_07() + { + } + + [Test] + public void Test_265_08() + { + } + + [Test] + public void Test_265_09() + { + } + + [Test] + public void Test_265_10() + { + } + + [Test] + public void Test_265_11() + { + } + + [Test] + public void Test_265_12() + { + } + + [Test] + public void Test_265_13() + { + } + + [Test] + public void Test_265_14() + { + } + + [Test] + public void Test_265_15() + { + } + + [Test] + public void Test_265_16() + { + } + + [Test] + public void Test_265_17() + { + } + + [Test] + public void Test_265_18() + { + } + + [Test] + public void Test_265_19() + { + } + + [Test] + public void Test_265_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_266 + { + #region PassingTests + [Test] + public void Test_266_01() + { + } + + [Test] + public void Test_266_02() + { + } + + [Test] + public void Test_266_03() + { + } + + [Test] + public void Test_266_04() + { + } + + [Test] + public void Test_266_05() + { + } + + [Test] + public void Test_266_06() + { + } + + [Test] + public void Test_266_07() + { + } + + [Test] + public void Test_266_08() + { + } + + [Test] + public void Test_266_09() + { + } + + [Test] + public void Test_266_10() + { + } + + [Test] + public void Test_266_11() + { + } + + [Test] + public void Test_266_12() + { + } + + [Test] + public void Test_266_13() + { + } + + [Test] + public void Test_266_14() + { + } + + [Test] + public void Test_266_15() + { + } + + [Test] + public void Test_266_16() + { + } + + [Test] + public void Test_266_17() + { + } + + [Test] + public void Test_266_18() + { + } + + [Test] + public void Test_266_19() + { + } + + [Test] + public void Test_266_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_267 + { + #region PassingTests + [Test] + public void Test_267_01() + { + } + + [Test] + public void Test_267_02() + { + } + + [Test] + public void Test_267_03() + { + } + + [Test] + public void Test_267_04() + { + } + + [Test] + public void Test_267_05() + { + } + + [Test] + public void Test_267_06() + { + } + + [Test] + public void Test_267_07() + { + } + + [Test] + public void Test_267_08() + { + } + + [Test] + public void Test_267_09() + { + } + + [Test] + public void Test_267_10() + { + } + + [Test] + public void Test_267_11() + { + } + + [Test] + public void Test_267_12() + { + } + + [Test] + public void Test_267_13() + { + } + + [Test] + public void Test_267_14() + { + } + + [Test] + public void Test_267_15() + { + } + + [Test] + public void Test_267_16() + { + } + + [Test] + public void Test_267_17() + { + } + + [Test] + public void Test_267_18() + { + } + + [Test] + public void Test_267_19() + { + } + + [Test] + public void Test_267_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_268 + { + #region PassingTests + [Test] + public void Test_268_01() + { + } + + [Test] + public void Test_268_02() + { + } + + [Test] + public void Test_268_03() + { + } + + [Test] + public void Test_268_04() + { + } + + [Test] + public void Test_268_05() + { + } + + [Test] + public void Test_268_06() + { + } + + [Test] + public void Test_268_07() + { + } + + [Test] + public void Test_268_08() + { + } + + [Test] + public void Test_268_09() + { + } + + [Test] + public void Test_268_10() + { + } + + [Test] + public void Test_268_11() + { + } + + [Test] + public void Test_268_12() + { + } + + [Test] + public void Test_268_13() + { + } + + [Test] + public void Test_268_14() + { + } + + [Test] + public void Test_268_15() + { + } + + [Test] + public void Test_268_16() + { + } + + [Test] + public void Test_268_17() + { + } + + [Test] + public void Test_268_18() + { + } + + [Test] + public void Test_268_19() + { + } + + [Test] + public void Test_268_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_269 + { + #region PassingTests + [Test] + public void Test_269_01() + { + } + + [Test] + public void Test_269_02() + { + } + + [Test] + public void Test_269_03() + { + } + + [Test] + public void Test_269_04() + { + } + + [Test] + public void Test_269_05() + { + } + + [Test] + public void Test_269_06() + { + } + + [Test] + public void Test_269_07() + { + } + + [Test] + public void Test_269_08() + { + } + + [Test] + public void Test_269_09() + { + } + + [Test] + public void Test_269_10() + { + } + + [Test] + public void Test_269_11() + { + } + + [Test] + public void Test_269_12() + { + } + + [Test] + public void Test_269_13() + { + } + + [Test] + public void Test_269_14() + { + } + + [Test] + public void Test_269_15() + { + } + + [Test] + public void Test_269_16() + { + } + + [Test] + public void Test_269_17() + { + } + + [Test] + public void Test_269_18() + { + } + + [Test] + public void Test_269_19() + { + } + + [Test] + public void Test_269_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_270 + { + #region PassingTests + [Test] + public void Test_270_01() + { + } + + [Test] + public void Test_270_02() + { + } + + [Test] + public void Test_270_03() + { + } + + [Test] + public void Test_270_04() + { + } + + [Test] + public void Test_270_05() + { + } + + [Test] + public void Test_270_06() + { + } + + [Test] + public void Test_270_07() + { + } + + [Test] + public void Test_270_08() + { + } + + [Test] + public void Test_270_09() + { + } + + [Test] + public void Test_270_10() + { + } + + [Test] + public void Test_270_11() + { + } + + [Test] + public void Test_270_12() + { + } + + [Test] + public void Test_270_13() + { + } + + [Test] + public void Test_270_14() + { + } + + [Test] + public void Test_270_15() + { + } + + [Test] + public void Test_270_16() + { + } + + [Test] + public void Test_270_17() + { + } + + [Test] + public void Test_270_18() + { + } + + [Test] + public void Test_270_19() + { + } + + [Test] + public void Test_270_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_271 + { + #region PassingTests + [Test] + public void Test_271_01() + { + } + + [Test] + public void Test_271_02() + { + } + + [Test] + public void Test_271_03() + { + } + + [Test] + public void Test_271_04() + { + } + + [Test] + public void Test_271_05() + { + } + + [Test] + public void Test_271_06() + { + } + + [Test] + public void Test_271_07() + { + } + + [Test] + public void Test_271_08() + { + } + + [Test] + public void Test_271_09() + { + } + + [Test] + public void Test_271_10() + { + } + + [Test] + public void Test_271_11() + { + } + + [Test] + public void Test_271_12() + { + } + + [Test] + public void Test_271_13() + { + } + + [Test] + public void Test_271_14() + { + } + + [Test] + public void Test_271_15() + { + } + + [Test] + public void Test_271_16() + { + } + + [Test] + public void Test_271_17() + { + } + + [Test] + public void Test_271_18() + { + } + + [Test] + public void Test_271_19() + { + } + + [Test] + public void Test_271_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_272 + { + #region PassingTests + [Test] + public void Test_272_01() + { + } + + [Test] + public void Test_272_02() + { + } + + [Test] + public void Test_272_03() + { + } + + [Test] + public void Test_272_04() + { + } + + [Test] + public void Test_272_05() + { + } + + [Test] + public void Test_272_06() + { + } + + [Test] + public void Test_272_07() + { + } + + [Test] + public void Test_272_08() + { + } + + [Test] + public void Test_272_09() + { + } + + [Test] + public void Test_272_10() + { + } + + [Test] + public void Test_272_11() + { + } + + [Test] + public void Test_272_12() + { + } + + [Test] + public void Test_272_13() + { + } + + [Test] + public void Test_272_14() + { + } + + [Test] + public void Test_272_15() + { + } + + [Test] + public void Test_272_16() + { + } + + [Test] + public void Test_272_17() + { + } + + [Test] + public void Test_272_18() + { + } + + [Test] + public void Test_272_19() + { + } + + [Test] + public void Test_272_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_273 + { + #region PassingTests + [Test] + public void Test_273_01() + { + } + + [Test] + public void Test_273_02() + { + } + + [Test] + public void Test_273_03() + { + } + + [Test] + public void Test_273_04() + { + } + + [Test] + public void Test_273_05() + { + } + + [Test] + public void Test_273_06() + { + } + + [Test] + public void Test_273_07() + { + } + + [Test] + public void Test_273_08() + { + } + + [Test] + public void Test_273_09() + { + } + + [Test] + public void Test_273_10() + { + } + + [Test] + public void Test_273_11() + { + } + + [Test] + public void Test_273_12() + { + } + + [Test] + public void Test_273_13() + { + } + + [Test] + public void Test_273_14() + { + } + + [Test] + public void Test_273_15() + { + } + + [Test] + public void Test_273_16() + { + } + + [Test] + public void Test_273_17() + { + } + + [Test] + public void Test_273_18() + { + } + + [Test] + public void Test_273_19() + { + } + + [Test] + public void Test_273_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_274 + { + #region PassingTests + [Test] + public void Test_274_01() + { + } + + [Test] + public void Test_274_02() + { + } + + [Test] + public void Test_274_03() + { + } + + [Test] + public void Test_274_04() + { + } + + [Test] + public void Test_274_05() + { + } + + [Test] + public void Test_274_06() + { + } + + [Test] + public void Test_274_07() + { + } + + [Test] + public void Test_274_08() + { + } + + [Test] + public void Test_274_09() + { + } + + [Test] + public void Test_274_10() + { + } + + [Test] + public void Test_274_11() + { + } + + [Test] + public void Test_274_12() + { + } + + [Test] + public void Test_274_13() + { + } + + [Test] + public void Test_274_14() + { + } + + [Test] + public void Test_274_15() + { + } + + [Test] + public void Test_274_16() + { + } + + [Test] + public void Test_274_17() + { + } + + [Test] + public void Test_274_18() + { + } + + [Test] + public void Test_274_19() + { + } + + [Test] + public void Test_274_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_275 + { + #region PassingTests + [Test] + public void Test_275_01() + { + } + + [Test] + public void Test_275_02() + { + } + + [Test] + public void Test_275_03() + { + } + + [Test] + public void Test_275_04() + { + } + + [Test] + public void Test_275_05() + { + } + + [Test] + public void Test_275_06() + { + } + + [Test] + public void Test_275_07() + { + } + + [Test] + public void Test_275_08() + { + } + + [Test] + public void Test_275_09() + { + } + + [Test] + public void Test_275_10() + { + } + + [Test] + public void Test_275_11() + { + } + + [Test] + public void Test_275_12() + { + } + + [Test] + public void Test_275_13() + { + } + + [Test] + public void Test_275_14() + { + } + + [Test] + public void Test_275_15() + { + } + + [Test] + public void Test_275_16() + { + } + + [Test] + public void Test_275_17() + { + } + + [Test] + public void Test_275_18() + { + } + + [Test] + public void Test_275_19() + { + } + + [Test] + public void Test_275_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_276 + { + #region PassingTests + [Test] + public void Test_276_01() + { + } + + [Test] + public void Test_276_02() + { + } + + [Test] + public void Test_276_03() + { + } + + [Test] + public void Test_276_04() + { + } + + [Test] + public void Test_276_05() + { + } + + [Test] + public void Test_276_06() + { + } + + [Test] + public void Test_276_07() + { + } + + [Test] + public void Test_276_08() + { + } + + [Test] + public void Test_276_09() + { + } + + [Test] + public void Test_276_10() + { + } + + [Test] + public void Test_276_11() + { + } + + [Test] + public void Test_276_12() + { + } + + [Test] + public void Test_276_13() + { + } + + [Test] + public void Test_276_14() + { + } + + [Test] + public void Test_276_15() + { + } + + [Test] + public void Test_276_16() + { + } + + [Test] + public void Test_276_17() + { + } + + [Test] + public void Test_276_18() + { + } + + [Test] + public void Test_276_19() + { + } + + [Test] + public void Test_276_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_277 + { + #region PassingTests + [Test] + public void Test_277_01() + { + } + + [Test] + public void Test_277_02() + { + } + + [Test] + public void Test_277_03() + { + } + + [Test] + public void Test_277_04() + { + } + + [Test] + public void Test_277_05() + { + } + + [Test] + public void Test_277_06() + { + } + + [Test] + public void Test_277_07() + { + } + + [Test] + public void Test_277_08() + { + } + + [Test] + public void Test_277_09() + { + } + + [Test] + public void Test_277_10() + { + } + + [Test] + public void Test_277_11() + { + } + + [Test] + public void Test_277_12() + { + } + + [Test] + public void Test_277_13() + { + } + + [Test] + public void Test_277_14() + { + } + + [Test] + public void Test_277_15() + { + } + + [Test] + public void Test_277_16() + { + } + + [Test] + public void Test_277_17() + { + } + + [Test] + public void Test_277_18() + { + } + + [Test] + public void Test_277_19() + { + } + + [Test] + public void Test_277_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_278 + { + #region PassingTests + [Test] + public void Test_278_01() + { + } + + [Test] + public void Test_278_02() + { + } + + [Test] + public void Test_278_03() + { + } + + [Test] + public void Test_278_04() + { + } + + [Test] + public void Test_278_05() + { + } + + [Test] + public void Test_278_06() + { + } + + [Test] + public void Test_278_07() + { + } + + [Test] + public void Test_278_08() + { + } + + [Test] + public void Test_278_09() + { + } + + [Test] + public void Test_278_10() + { + } + + [Test] + public void Test_278_11() + { + } + + [Test] + public void Test_278_12() + { + } + + [Test] + public void Test_278_13() + { + } + + [Test] + public void Test_278_14() + { + } + + [Test] + public void Test_278_15() + { + } + + [Test] + public void Test_278_16() + { + } + + [Test] + public void Test_278_17() + { + } + + [Test] + public void Test_278_18() + { + } + + [Test] + public void Test_278_19() + { + } + + [Test] + public void Test_278_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_279 + { + #region PassingTests + [Test] + public void Test_279_01() + { + } + + [Test] + public void Test_279_02() + { + } + + [Test] + public void Test_279_03() + { + } + + [Test] + public void Test_279_04() + { + } + + [Test] + public void Test_279_05() + { + } + + [Test] + public void Test_279_06() + { + } + + [Test] + public void Test_279_07() + { + } + + [Test] + public void Test_279_08() + { + } + + [Test] + public void Test_279_09() + { + } + + [Test] + public void Test_279_10() + { + } + + [Test] + public void Test_279_11() + { + } + + [Test] + public void Test_279_12() + { + } + + [Test] + public void Test_279_13() + { + } + + [Test] + public void Test_279_14() + { + } + + [Test] + public void Test_279_15() + { + } + + [Test] + public void Test_279_16() + { + } + + [Test] + public void Test_279_17() + { + } + + [Test] + public void Test_279_18() + { + } + + [Test] + public void Test_279_19() + { + } + + [Test] + public void Test_279_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_280 + { + #region PassingTests + [Test] + public void Test_280_01() + { + } + + [Test] + public void Test_280_02() + { + } + + [Test] + public void Test_280_03() + { + } + + [Test] + public void Test_280_04() + { + } + + [Test] + public void Test_280_05() + { + } + + [Test] + public void Test_280_06() + { + } + + [Test] + public void Test_280_07() + { + } + + [Test] + public void Test_280_08() + { + } + + [Test] + public void Test_280_09() + { + } + + [Test] + public void Test_280_10() + { + } + + [Test] + public void Test_280_11() + { + } + + [Test] + public void Test_280_12() + { + } + + [Test] + public void Test_280_13() + { + } + + [Test] + public void Test_280_14() + { + } + + [Test] + public void Test_280_15() + { + } + + [Test] + public void Test_280_16() + { + } + + [Test] + public void Test_280_17() + { + } + + [Test] + public void Test_280_18() + { + } + + [Test] + public void Test_280_19() + { + } + + [Test] + public void Test_280_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_281 + { + #region PassingTests + [Test] + public void Test_281_01() + { + } + + [Test] + public void Test_281_02() + { + } + + [Test] + public void Test_281_03() + { + } + + [Test] + public void Test_281_04() + { + } + + [Test] + public void Test_281_05() + { + } + + [Test] + public void Test_281_06() + { + } + + [Test] + public void Test_281_07() + { + } + + [Test] + public void Test_281_08() + { + } + + [Test] + public void Test_281_09() + { + } + + [Test] + public void Test_281_10() + { + } + + [Test] + public void Test_281_11() + { + } + + [Test] + public void Test_281_12() + { + } + + [Test] + public void Test_281_13() + { + } + + [Test] + public void Test_281_14() + { + } + + [Test] + public void Test_281_15() + { + } + + [Test] + public void Test_281_16() + { + } + + [Test] + public void Test_281_17() + { + } + + [Test] + public void Test_281_18() + { + } + + [Test] + public void Test_281_19() + { + } + + [Test] + public void Test_281_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_282 + { + #region PassingTests + [Test] + public void Test_282_01() + { + } + + [Test] + public void Test_282_02() + { + } + + [Test] + public void Test_282_03() + { + } + + [Test] + public void Test_282_04() + { + } + + [Test] + public void Test_282_05() + { + } + + [Test] + public void Test_282_06() + { + } + + [Test] + public void Test_282_07() + { + } + + [Test] + public void Test_282_08() + { + } + + [Test] + public void Test_282_09() + { + } + + [Test] + public void Test_282_10() + { + } + + [Test] + public void Test_282_11() + { + } + + [Test] + public void Test_282_12() + { + } + + [Test] + public void Test_282_13() + { + } + + [Test] + public void Test_282_14() + { + } + + [Test] + public void Test_282_15() + { + } + + [Test] + public void Test_282_16() + { + } + + [Test] + public void Test_282_17() + { + } + + [Test] + public void Test_282_18() + { + } + + [Test] + public void Test_282_19() + { + } + + [Test] + public void Test_282_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_283 + { + #region PassingTests + [Test] + public void Test_283_01() + { + } + + [Test] + public void Test_283_02() + { + } + + [Test] + public void Test_283_03() + { + } + + [Test] + public void Test_283_04() + { + } + + [Test] + public void Test_283_05() + { + } + + [Test] + public void Test_283_06() + { + } + + [Test] + public void Test_283_07() + { + } + + [Test] + public void Test_283_08() + { + } + + [Test] + public void Test_283_09() + { + } + + [Test] + public void Test_283_10() + { + } + + [Test] + public void Test_283_11() + { + } + + [Test] + public void Test_283_12() + { + } + + [Test] + public void Test_283_13() + { + } + + [Test] + public void Test_283_14() + { + } + + [Test] + public void Test_283_15() + { + } + + [Test] + public void Test_283_16() + { + } + + [Test] + public void Test_283_17() + { + } + + [Test] + public void Test_283_18() + { + } + + [Test] + public void Test_283_19() + { + } + + [Test] + public void Test_283_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_284 + { + #region PassingTests + [Test] + public void Test_284_01() + { + } + + [Test] + public void Test_284_02() + { + } + + [Test] + public void Test_284_03() + { + } + + [Test] + public void Test_284_04() + { + } + + [Test] + public void Test_284_05() + { + } + + [Test] + public void Test_284_06() + { + } + + [Test] + public void Test_284_07() + { + } + + [Test] + public void Test_284_08() + { + } + + [Test] + public void Test_284_09() + { + } + + [Test] + public void Test_284_10() + { + } + + [Test] + public void Test_284_11() + { + } + + [Test] + public void Test_284_12() + { + } + + [Test] + public void Test_284_13() + { + } + + [Test] + public void Test_284_14() + { + } + + [Test] + public void Test_284_15() + { + } + + [Test] + public void Test_284_16() + { + } + + [Test] + public void Test_284_17() + { + } + + [Test] + public void Test_284_18() + { + } + + [Test] + public void Test_284_19() + { + } + + [Test] + public void Test_284_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_285 + { + #region PassingTests + [Test] + public void Test_285_01() + { + } + + [Test] + public void Test_285_02() + { + } + + [Test] + public void Test_285_03() + { + } + + [Test] + public void Test_285_04() + { + } + + [Test] + public void Test_285_05() + { + } + + [Test] + public void Test_285_06() + { + } + + [Test] + public void Test_285_07() + { + } + + [Test] + public void Test_285_08() + { + } + + [Test] + public void Test_285_09() + { + } + + [Test] + public void Test_285_10() + { + } + + [Test] + public void Test_285_11() + { + } + + [Test] + public void Test_285_12() + { + } + + [Test] + public void Test_285_13() + { + } + + [Test] + public void Test_285_14() + { + } + + [Test] + public void Test_285_15() + { + } + + [Test] + public void Test_285_16() + { + } + + [Test] + public void Test_285_17() + { + } + + [Test] + public void Test_285_18() + { + } + + [Test] + public void Test_285_19() + { + } + + [Test] + public void Test_285_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_286 + { + #region PassingTests + [Test] + public void Test_286_01() + { + } + + [Test] + public void Test_286_02() + { + } + + [Test] + public void Test_286_03() + { + } + + [Test] + public void Test_286_04() + { + } + + [Test] + public void Test_286_05() + { + } + + [Test] + public void Test_286_06() + { + } + + [Test] + public void Test_286_07() + { + } + + [Test] + public void Test_286_08() + { + } + + [Test] + public void Test_286_09() + { + } + + [Test] + public void Test_286_10() + { + } + + [Test] + public void Test_286_11() + { + } + + [Test] + public void Test_286_12() + { + } + + [Test] + public void Test_286_13() + { + } + + [Test] + public void Test_286_14() + { + } + + [Test] + public void Test_286_15() + { + } + + [Test] + public void Test_286_16() + { + } + + [Test] + public void Test_286_17() + { + } + + [Test] + public void Test_286_18() + { + } + + [Test] + public void Test_286_19() + { + } + + [Test] + public void Test_286_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_287 + { + #region PassingTests + [Test] + public void Test_287_01() + { + } + + [Test] + public void Test_287_02() + { + } + + [Test] + public void Test_287_03() + { + } + + [Test] + public void Test_287_04() + { + } + + [Test] + public void Test_287_05() + { + } + + [Test] + public void Test_287_06() + { + } + + [Test] + public void Test_287_07() + { + } + + [Test] + public void Test_287_08() + { + } + + [Test] + public void Test_287_09() + { + } + + [Test] + public void Test_287_10() + { + } + + [Test] + public void Test_287_11() + { + } + + [Test] + public void Test_287_12() + { + } + + [Test] + public void Test_287_13() + { + } + + [Test] + public void Test_287_14() + { + } + + [Test] + public void Test_287_15() + { + } + + [Test] + public void Test_287_16() + { + } + + [Test] + public void Test_287_17() + { + } + + [Test] + public void Test_287_18() + { + } + + [Test] + public void Test_287_19() + { + } + + [Test] + public void Test_287_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_288 + { + #region PassingTests + [Test] + public void Test_288_01() + { + } + + [Test] + public void Test_288_02() + { + } + + [Test] + public void Test_288_03() + { + } + + [Test] + public void Test_288_04() + { + } + + [Test] + public void Test_288_05() + { + } + + [Test] + public void Test_288_06() + { + } + + [Test] + public void Test_288_07() + { + } + + [Test] + public void Test_288_08() + { + } + + [Test] + public void Test_288_09() + { + } + + [Test] + public void Test_288_10() + { + } + + [Test] + public void Test_288_11() + { + } + + [Test] + public void Test_288_12() + { + } + + [Test] + public void Test_288_13() + { + } + + [Test] + public void Test_288_14() + { + } + + [Test] + public void Test_288_15() + { + } + + [Test] + public void Test_288_16() + { + } + + [Test] + public void Test_288_17() + { + } + + [Test] + public void Test_288_18() + { + } + + [Test] + public void Test_288_19() + { + } + + [Test] + public void Test_288_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_289 + { + #region PassingTests + [Test] + public void Test_289_01() + { + } + + [Test] + public void Test_289_02() + { + } + + [Test] + public void Test_289_03() + { + } + + [Test] + public void Test_289_04() + { + } + + [Test] + public void Test_289_05() + { + } + + [Test] + public void Test_289_06() + { + } + + [Test] + public void Test_289_07() + { + } + + [Test] + public void Test_289_08() + { + } + + [Test] + public void Test_289_09() + { + } + + [Test] + public void Test_289_10() + { + } + + [Test] + public void Test_289_11() + { + } + + [Test] + public void Test_289_12() + { + } + + [Test] + public void Test_289_13() + { + } + + [Test] + public void Test_289_14() + { + } + + [Test] + public void Test_289_15() + { + } + + [Test] + public void Test_289_16() + { + } + + [Test] + public void Test_289_17() + { + } + + [Test] + public void Test_289_18() + { + } + + [Test] + public void Test_289_19() + { + } + + [Test] + public void Test_289_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_290 + { + #region PassingTests + [Test] + public void Test_290_01() + { + } + + [Test] + public void Test_290_02() + { + } + + [Test] + public void Test_290_03() + { + } + + [Test] + public void Test_290_04() + { + } + + [Test] + public void Test_290_05() + { + } + + [Test] + public void Test_290_06() + { + } + + [Test] + public void Test_290_07() + { + } + + [Test] + public void Test_290_08() + { + } + + [Test] + public void Test_290_09() + { + } + + [Test] + public void Test_290_10() + { + } + + [Test] + public void Test_290_11() + { + } + + [Test] + public void Test_290_12() + { + } + + [Test] + public void Test_290_13() + { + } + + [Test] + public void Test_290_14() + { + } + + [Test] + public void Test_290_15() + { + } + + [Test] + public void Test_290_16() + { + } + + [Test] + public void Test_290_17() + { + } + + [Test] + public void Test_290_18() + { + } + + [Test] + public void Test_290_19() + { + } + + [Test] + public void Test_290_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_291 + { + #region PassingTests + [Test] + public void Test_291_01() + { + } + + [Test] + public void Test_291_02() + { + } + + [Test] + public void Test_291_03() + { + } + + [Test] + public void Test_291_04() + { + } + + [Test] + public void Test_291_05() + { + } + + [Test] + public void Test_291_06() + { + } + + [Test] + public void Test_291_07() + { + } + + [Test] + public void Test_291_08() + { + } + + [Test] + public void Test_291_09() + { + } + + [Test] + public void Test_291_10() + { + } + + [Test] + public void Test_291_11() + { + } + + [Test] + public void Test_291_12() + { + } + + [Test] + public void Test_291_13() + { + } + + [Test] + public void Test_291_14() + { + } + + [Test] + public void Test_291_15() + { + } + + [Test] + public void Test_291_16() + { + } + + [Test] + public void Test_291_17() + { + } + + [Test] + public void Test_291_18() + { + } + + [Test] + public void Test_291_19() + { + } + + [Test] + public void Test_291_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_292 + { + #region PassingTests + [Test] + public void Test_292_01() + { + } + + [Test] + public void Test_292_02() + { + } + + [Test] + public void Test_292_03() + { + } + + [Test] + public void Test_292_04() + { + } + + [Test] + public void Test_292_05() + { + } + + [Test] + public void Test_292_06() + { + } + + [Test] + public void Test_292_07() + { + } + + [Test] + public void Test_292_08() + { + } + + [Test] + public void Test_292_09() + { + } + + [Test] + public void Test_292_10() + { + } + + [Test] + public void Test_292_11() + { + } + + [Test] + public void Test_292_12() + { + } + + [Test] + public void Test_292_13() + { + } + + [Test] + public void Test_292_14() + { + } + + [Test] + public void Test_292_15() + { + } + + [Test] + public void Test_292_16() + { + } + + [Test] + public void Test_292_17() + { + } + + [Test] + public void Test_292_18() + { + } + + [Test] + public void Test_292_19() + { + } + + [Test] + public void Test_292_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_293 + { + #region PassingTests + [Test] + public void Test_293_01() + { + } + + [Test] + public void Test_293_02() + { + } + + [Test] + public void Test_293_03() + { + } + + [Test] + public void Test_293_04() + { + } + + [Test] + public void Test_293_05() + { + } + + [Test] + public void Test_293_06() + { + } + + [Test] + public void Test_293_07() + { + } + + [Test] + public void Test_293_08() + { + } + + [Test] + public void Test_293_09() + { + } + + [Test] + public void Test_293_10() + { + } + + [Test] + public void Test_293_11() + { + } + + [Test] + public void Test_293_12() + { + } + + [Test] + public void Test_293_13() + { + } + + [Test] + public void Test_293_14() + { + } + + [Test] + public void Test_293_15() + { + } + + [Test] + public void Test_293_16() + { + } + + [Test] + public void Test_293_17() + { + } + + [Test] + public void Test_293_18() + { + } + + [Test] + public void Test_293_19() + { + } + + [Test] + public void Test_293_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_294 + { + #region PassingTests + [Test] + public void Test_294_01() + { + } + + [Test] + public void Test_294_02() + { + } + + [Test] + public void Test_294_03() + { + } + + [Test] + public void Test_294_04() + { + } + + [Test] + public void Test_294_05() + { + } + + [Test] + public void Test_294_06() + { + } + + [Test] + public void Test_294_07() + { + } + + [Test] + public void Test_294_08() + { + } + + [Test] + public void Test_294_09() + { + } + + [Test] + public void Test_294_10() + { + } + + [Test] + public void Test_294_11() + { + } + + [Test] + public void Test_294_12() + { + } + + [Test] + public void Test_294_13() + { + } + + [Test] + public void Test_294_14() + { + } + + [Test] + public void Test_294_15() + { + } + + [Test] + public void Test_294_16() + { + } + + [Test] + public void Test_294_17() + { + } + + [Test] + public void Test_294_18() + { + } + + [Test] + public void Test_294_19() + { + } + + [Test] + public void Test_294_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_295 + { + #region PassingTests + [Test] + public void Test_295_01() + { + } + + [Test] + public void Test_295_02() + { + } + + [Test] + public void Test_295_03() + { + } + + [Test] + public void Test_295_04() + { + } + + [Test] + public void Test_295_05() + { + } + + [Test] + public void Test_295_06() + { + } + + [Test] + public void Test_295_07() + { + } + + [Test] + public void Test_295_08() + { + } + + [Test] + public void Test_295_09() + { + } + + [Test] + public void Test_295_10() + { + } + + [Test] + public void Test_295_11() + { + } + + [Test] + public void Test_295_12() + { + } + + [Test] + public void Test_295_13() + { + } + + [Test] + public void Test_295_14() + { + } + + [Test] + public void Test_295_15() + { + } + + [Test] + public void Test_295_16() + { + } + + [Test] + public void Test_295_17() + { + } + + [Test] + public void Test_295_18() + { + } + + [Test] + public void Test_295_19() + { + } + + [Test] + public void Test_295_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_296 + { + #region PassingTests + [Test] + public void Test_296_01() + { + } + + [Test] + public void Test_296_02() + { + } + + [Test] + public void Test_296_03() + { + } + + [Test] + public void Test_296_04() + { + } + + [Test] + public void Test_296_05() + { + } + + [Test] + public void Test_296_06() + { + } + + [Test] + public void Test_296_07() + { + } + + [Test] + public void Test_296_08() + { + } + + [Test] + public void Test_296_09() + { + } + + [Test] + public void Test_296_10() + { + } + + [Test] + public void Test_296_11() + { + } + + [Test] + public void Test_296_12() + { + } + + [Test] + public void Test_296_13() + { + } + + [Test] + public void Test_296_14() + { + } + + [Test] + public void Test_296_15() + { + } + + [Test] + public void Test_296_16() + { + } + + [Test] + public void Test_296_17() + { + } + + [Test] + public void Test_296_18() + { + } + + [Test] + public void Test_296_19() + { + } + + [Test] + public void Test_296_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_297 + { + #region PassingTests + [Test] + public void Test_297_01() + { + } + + [Test] + public void Test_297_02() + { + } + + [Test] + public void Test_297_03() + { + } + + [Test] + public void Test_297_04() + { + } + + [Test] + public void Test_297_05() + { + } + + [Test] + public void Test_297_06() + { + } + + [Test] + public void Test_297_07() + { + } + + [Test] + public void Test_297_08() + { + } + + [Test] + public void Test_297_09() + { + } + + [Test] + public void Test_297_10() + { + } + + [Test] + public void Test_297_11() + { + } + + [Test] + public void Test_297_12() + { + } + + [Test] + public void Test_297_13() + { + } + + [Test] + public void Test_297_14() + { + } + + [Test] + public void Test_297_15() + { + } + + [Test] + public void Test_297_16() + { + } + + [Test] + public void Test_297_17() + { + } + + [Test] + public void Test_297_18() + { + } + + [Test] + public void Test_297_19() + { + } + + [Test] + public void Test_297_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_298 + { + #region PassingTests + [Test] + public void Test_298_01() + { + } + + [Test] + public void Test_298_02() + { + } + + [Test] + public void Test_298_03() + { + } + + [Test] + public void Test_298_04() + { + } + + [Test] + public void Test_298_05() + { + } + + [Test] + public void Test_298_06() + { + } + + [Test] + public void Test_298_07() + { + } + + [Test] + public void Test_298_08() + { + } + + [Test] + public void Test_298_09() + { + } + + [Test] + public void Test_298_10() + { + } + + [Test] + public void Test_298_11() + { + } + + [Test] + public void Test_298_12() + { + } + + [Test] + public void Test_298_13() + { + } + + [Test] + public void Test_298_14() + { + } + + [Test] + public void Test_298_15() + { + } + + [Test] + public void Test_298_16() + { + } + + [Test] + public void Test_298_17() + { + } + + [Test] + public void Test_298_18() + { + } + + [Test] + public void Test_298_19() + { + } + + [Test] + public void Test_298_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_299 + { + #region PassingTests + [Test] + public void Test_299_01() + { + } + + [Test] + public void Test_299_02() + { + } + + [Test] + public void Test_299_03() + { + } + + [Test] + public void Test_299_04() + { + } + + [Test] + public void Test_299_05() + { + } + + [Test] + public void Test_299_06() + { + } + + [Test] + public void Test_299_07() + { + } + + [Test] + public void Test_299_08() + { + } + + [Test] + public void Test_299_09() + { + } + + [Test] + public void Test_299_10() + { + } + + [Test] + public void Test_299_11() + { + } + + [Test] + public void Test_299_12() + { + } + + [Test] + public void Test_299_13() + { + } + + [Test] + public void Test_299_14() + { + } + + [Test] + public void Test_299_15() + { + } + + [Test] + public void Test_299_16() + { + } + + [Test] + public void Test_299_17() + { + } + + [Test] + public void Test_299_18() + { + } + + [Test] + public void Test_299_19() + { + } + + [Test] + public void Test_299_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_300 + { + #region PassingTests + [Test] + public void Test_300_01() + { + } + + [Test] + public void Test_300_02() + { + } + + [Test] + public void Test_300_03() + { + } + + [Test] + public void Test_300_04() + { + } + + [Test] + public void Test_300_05() + { + } + + [Test] + public void Test_300_06() + { + } + + [Test] + public void Test_300_07() + { + } + + [Test] + public void Test_300_08() + { + } + + [Test] + public void Test_300_09() + { + } + + [Test] + public void Test_300_10() + { + } + + [Test] + public void Test_300_11() + { + } + + [Test] + public void Test_300_12() + { + } + + [Test] + public void Test_300_13() + { + } + + [Test] + public void Test_300_14() + { + } + + [Test] + public void Test_300_15() + { + } + + [Test] + public void Test_300_16() + { + } + + [Test] + public void Test_300_17() + { + } + + [Test] + public void Test_300_18() + { + } + + [Test] + public void Test_300_19() + { + } + + [Test] + public void Test_300_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_301 + { + #region PassingTests + [Test] + public void Test_301_01() + { + } + + [Test] + public void Test_301_02() + { + } + + [Test] + public void Test_301_03() + { + } + + [Test] + public void Test_301_04() + { + } + + [Test] + public void Test_301_05() + { + } + + [Test] + public void Test_301_06() + { + } + + [Test] + public void Test_301_07() + { + } + + [Test] + public void Test_301_08() + { + } + + [Test] + public void Test_301_09() + { + } + + [Test] + public void Test_301_10() + { + } + + [Test] + public void Test_301_11() + { + } + + [Test] + public void Test_301_12() + { + } + + [Test] + public void Test_301_13() + { + } + + [Test] + public void Test_301_14() + { + } + + [Test] + public void Test_301_15() + { + } + + [Test] + public void Test_301_16() + { + } + + [Test] + public void Test_301_17() + { + } + + [Test] + public void Test_301_18() + { + } + + [Test] + public void Test_301_19() + { + } + + [Test] + public void Test_301_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_302 + { + #region PassingTests + [Test] + public void Test_302_01() + { + } + + [Test] + public void Test_302_02() + { + } + + [Test] + public void Test_302_03() + { + } + + [Test] + public void Test_302_04() + { + } + + [Test] + public void Test_302_05() + { + } + + [Test] + public void Test_302_06() + { + } + + [Test] + public void Test_302_07() + { + } + + [Test] + public void Test_302_08() + { + } + + [Test] + public void Test_302_09() + { + } + + [Test] + public void Test_302_10() + { + } + + [Test] + public void Test_302_11() + { + } + + [Test] + public void Test_302_12() + { + } + + [Test] + public void Test_302_13() + { + } + + [Test] + public void Test_302_14() + { + } + + [Test] + public void Test_302_15() + { + } + + [Test] + public void Test_302_16() + { + } + + [Test] + public void Test_302_17() + { + } + + [Test] + public void Test_302_18() + { + } + + [Test] + public void Test_302_19() + { + } + + [Test] + public void Test_302_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_303 + { + #region PassingTests + [Test] + public void Test_303_01() + { + } + + [Test] + public void Test_303_02() + { + } + + [Test] + public void Test_303_03() + { + } + + [Test] + public void Test_303_04() + { + } + + [Test] + public void Test_303_05() + { + } + + [Test] + public void Test_303_06() + { + } + + [Test] + public void Test_303_07() + { + } + + [Test] + public void Test_303_08() + { + } + + [Test] + public void Test_303_09() + { + } + + [Test] + public void Test_303_10() + { + } + + [Test] + public void Test_303_11() + { + } + + [Test] + public void Test_303_12() + { + } + + [Test] + public void Test_303_13() + { + } + + [Test] + public void Test_303_14() + { + } + + [Test] + public void Test_303_15() + { + } + + [Test] + public void Test_303_16() + { + } + + [Test] + public void Test_303_17() + { + } + + [Test] + public void Test_303_18() + { + } + + [Test] + public void Test_303_19() + { + } + + [Test] + public void Test_303_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_304 + { + #region PassingTests + [Test] + public void Test_304_01() + { + } + + [Test] + public void Test_304_02() + { + } + + [Test] + public void Test_304_03() + { + } + + [Test] + public void Test_304_04() + { + } + + [Test] + public void Test_304_05() + { + } + + [Test] + public void Test_304_06() + { + } + + [Test] + public void Test_304_07() + { + } + + [Test] + public void Test_304_08() + { + } + + [Test] + public void Test_304_09() + { + } + + [Test] + public void Test_304_10() + { + } + + [Test] + public void Test_304_11() + { + } + + [Test] + public void Test_304_12() + { + } + + [Test] + public void Test_304_13() + { + } + + [Test] + public void Test_304_14() + { + } + + [Test] + public void Test_304_15() + { + } + + [Test] + public void Test_304_16() + { + } + + [Test] + public void Test_304_17() + { + } + + [Test] + public void Test_304_18() + { + } + + [Test] + public void Test_304_19() + { + } + + [Test] + public void Test_304_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_305 + { + #region PassingTests + [Test] + public void Test_305_01() + { + } + + [Test] + public void Test_305_02() + { + } + + [Test] + public void Test_305_03() + { + } + + [Test] + public void Test_305_04() + { + } + + [Test] + public void Test_305_05() + { + } + + [Test] + public void Test_305_06() + { + } + + [Test] + public void Test_305_07() + { + } + + [Test] + public void Test_305_08() + { + } + + [Test] + public void Test_305_09() + { + } + + [Test] + public void Test_305_10() + { + } + + [Test] + public void Test_305_11() + { + } + + [Test] + public void Test_305_12() + { + } + + [Test] + public void Test_305_13() + { + } + + [Test] + public void Test_305_14() + { + } + + [Test] + public void Test_305_15() + { + } + + [Test] + public void Test_305_16() + { + } + + [Test] + public void Test_305_17() + { + } + + [Test] + public void Test_305_18() + { + } + + [Test] + public void Test_305_19() + { + } + + [Test] + public void Test_305_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_306 + { + #region PassingTests + [Test] + public void Test_306_01() + { + } + + [Test] + public void Test_306_02() + { + } + + [Test] + public void Test_306_03() + { + } + + [Test] + public void Test_306_04() + { + } + + [Test] + public void Test_306_05() + { + } + + [Test] + public void Test_306_06() + { + } + + [Test] + public void Test_306_07() + { + } + + [Test] + public void Test_306_08() + { + } + + [Test] + public void Test_306_09() + { + } + + [Test] + public void Test_306_10() + { + } + + [Test] + public void Test_306_11() + { + } + + [Test] + public void Test_306_12() + { + } + + [Test] + public void Test_306_13() + { + } + + [Test] + public void Test_306_14() + { + } + + [Test] + public void Test_306_15() + { + } + + [Test] + public void Test_306_16() + { + } + + [Test] + public void Test_306_17() + { + } + + [Test] + public void Test_306_18() + { + } + + [Test] + public void Test_306_19() + { + } + + [Test] + public void Test_306_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_307 + { + #region PassingTests + [Test] + public void Test_307_01() + { + } + + [Test] + public void Test_307_02() + { + } + + [Test] + public void Test_307_03() + { + } + + [Test] + public void Test_307_04() + { + } + + [Test] + public void Test_307_05() + { + } + + [Test] + public void Test_307_06() + { + } + + [Test] + public void Test_307_07() + { + } + + [Test] + public void Test_307_08() + { + } + + [Test] + public void Test_307_09() + { + } + + [Test] + public void Test_307_10() + { + } + + [Test] + public void Test_307_11() + { + } + + [Test] + public void Test_307_12() + { + } + + [Test] + public void Test_307_13() + { + } + + [Test] + public void Test_307_14() + { + } + + [Test] + public void Test_307_15() + { + } + + [Test] + public void Test_307_16() + { + } + + [Test] + public void Test_307_17() + { + } + + [Test] + public void Test_307_18() + { + } + + [Test] + public void Test_307_19() + { + } + + [Test] + public void Test_307_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_308 + { + #region PassingTests + [Test] + public void Test_308_01() + { + } + + [Test] + public void Test_308_02() + { + } + + [Test] + public void Test_308_03() + { + } + + [Test] + public void Test_308_04() + { + } + + [Test] + public void Test_308_05() + { + } + + [Test] + public void Test_308_06() + { + } + + [Test] + public void Test_308_07() + { + } + + [Test] + public void Test_308_08() + { + } + + [Test] + public void Test_308_09() + { + } + + [Test] + public void Test_308_10() + { + } + + [Test] + public void Test_308_11() + { + } + + [Test] + public void Test_308_12() + { + } + + [Test] + public void Test_308_13() + { + } + + [Test] + public void Test_308_14() + { + } + + [Test] + public void Test_308_15() + { + } + + [Test] + public void Test_308_16() + { + } + + [Test] + public void Test_308_17() + { + } + + [Test] + public void Test_308_18() + { + } + + [Test] + public void Test_308_19() + { + } + + [Test] + public void Test_308_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_309 + { + #region PassingTests + [Test] + public void Test_309_01() + { + } + + [Test] + public void Test_309_02() + { + } + + [Test] + public void Test_309_03() + { + } + + [Test] + public void Test_309_04() + { + } + + [Test] + public void Test_309_05() + { + } + + [Test] + public void Test_309_06() + { + } + + [Test] + public void Test_309_07() + { + } + + [Test] + public void Test_309_08() + { + } + + [Test] + public void Test_309_09() + { + } + + [Test] + public void Test_309_10() + { + } + + [Test] + public void Test_309_11() + { + } + + [Test] + public void Test_309_12() + { + } + + [Test] + public void Test_309_13() + { + } + + [Test] + public void Test_309_14() + { + } + + [Test] + public void Test_309_15() + { + } + + [Test] + public void Test_309_16() + { + } + + [Test] + public void Test_309_17() + { + } + + [Test] + public void Test_309_18() + { + } + + [Test] + public void Test_309_19() + { + } + + [Test] + public void Test_309_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_310 + { + #region PassingTests + [Test] + public void Test_310_01() + { + } + + [Test] + public void Test_310_02() + { + } + + [Test] + public void Test_310_03() + { + } + + [Test] + public void Test_310_04() + { + } + + [Test] + public void Test_310_05() + { + } + + [Test] + public void Test_310_06() + { + } + + [Test] + public void Test_310_07() + { + } + + [Test] + public void Test_310_08() + { + } + + [Test] + public void Test_310_09() + { + } + + [Test] + public void Test_310_10() + { + } + + [Test] + public void Test_310_11() + { + } + + [Test] + public void Test_310_12() + { + } + + [Test] + public void Test_310_13() + { + } + + [Test] + public void Test_310_14() + { + } + + [Test] + public void Test_310_15() + { + } + + [Test] + public void Test_310_16() + { + } + + [Test] + public void Test_310_17() + { + } + + [Test] + public void Test_310_18() + { + } + + [Test] + public void Test_310_19() + { + } + + [Test] + public void Test_310_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_311 + { + #region PassingTests + [Test] + public void Test_311_01() + { + } + + [Test] + public void Test_311_02() + { + } + + [Test] + public void Test_311_03() + { + } + + [Test] + public void Test_311_04() + { + } + + [Test] + public void Test_311_05() + { + } + + [Test] + public void Test_311_06() + { + } + + [Test] + public void Test_311_07() + { + } + + [Test] + public void Test_311_08() + { + } + + [Test] + public void Test_311_09() + { + } + + [Test] + public void Test_311_10() + { + } + + [Test] + public void Test_311_11() + { + } + + [Test] + public void Test_311_12() + { + } + + [Test] + public void Test_311_13() + { + } + + [Test] + public void Test_311_14() + { + } + + [Test] + public void Test_311_15() + { + } + + [Test] + public void Test_311_16() + { + } + + [Test] + public void Test_311_17() + { + } + + [Test] + public void Test_311_18() + { + } + + [Test] + public void Test_311_19() + { + } + + [Test] + public void Test_311_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_312 + { + #region PassingTests + [Test] + public void Test_312_01() + { + } + + [Test] + public void Test_312_02() + { + } + + [Test] + public void Test_312_03() + { + } + + [Test] + public void Test_312_04() + { + } + + [Test] + public void Test_312_05() + { + } + + [Test] + public void Test_312_06() + { + } + + [Test] + public void Test_312_07() + { + } + + [Test] + public void Test_312_08() + { + } + + [Test] + public void Test_312_09() + { + } + + [Test] + public void Test_312_10() + { + } + + [Test] + public void Test_312_11() + { + } + + [Test] + public void Test_312_12() + { + } + + [Test] + public void Test_312_13() + { + } + + [Test] + public void Test_312_14() + { + } + + [Test] + public void Test_312_15() + { + } + + [Test] + public void Test_312_16() + { + } + + [Test] + public void Test_312_17() + { + } + + [Test] + public void Test_312_18() + { + } + + [Test] + public void Test_312_19() + { + } + + [Test] + public void Test_312_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_313 + { + #region PassingTests + [Test] + public void Test_313_01() + { + } + + [Test] + public void Test_313_02() + { + } + + [Test] + public void Test_313_03() + { + } + + [Test] + public void Test_313_04() + { + } + + [Test] + public void Test_313_05() + { + } + + [Test] + public void Test_313_06() + { + } + + [Test] + public void Test_313_07() + { + } + + [Test] + public void Test_313_08() + { + } + + [Test] + public void Test_313_09() + { + } + + [Test] + public void Test_313_10() + { + } + + [Test] + public void Test_313_11() + { + } + + [Test] + public void Test_313_12() + { + } + + [Test] + public void Test_313_13() + { + } + + [Test] + public void Test_313_14() + { + } + + [Test] + public void Test_313_15() + { + } + + [Test] + public void Test_313_16() + { + } + + [Test] + public void Test_313_17() + { + } + + [Test] + public void Test_313_18() + { + } + + [Test] + public void Test_313_19() + { + } + + [Test] + public void Test_313_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_314 + { + #region PassingTests + [Test] + public void Test_314_01() + { + } + + [Test] + public void Test_314_02() + { + } + + [Test] + public void Test_314_03() + { + } + + [Test] + public void Test_314_04() + { + } + + [Test] + public void Test_314_05() + { + } + + [Test] + public void Test_314_06() + { + } + + [Test] + public void Test_314_07() + { + } + + [Test] + public void Test_314_08() + { + } + + [Test] + public void Test_314_09() + { + } + + [Test] + public void Test_314_10() + { + } + + [Test] + public void Test_314_11() + { + } + + [Test] + public void Test_314_12() + { + } + + [Test] + public void Test_314_13() + { + } + + [Test] + public void Test_314_14() + { + } + + [Test] + public void Test_314_15() + { + } + + [Test] + public void Test_314_16() + { + } + + [Test] + public void Test_314_17() + { + } + + [Test] + public void Test_314_18() + { + } + + [Test] + public void Test_314_19() + { + } + + [Test] + public void Test_314_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_315 + { + #region PassingTests + [Test] + public void Test_315_01() + { + } + + [Test] + public void Test_315_02() + { + } + + [Test] + public void Test_315_03() + { + } + + [Test] + public void Test_315_04() + { + } + + [Test] + public void Test_315_05() + { + } + + [Test] + public void Test_315_06() + { + } + + [Test] + public void Test_315_07() + { + } + + [Test] + public void Test_315_08() + { + } + + [Test] + public void Test_315_09() + { + } + + [Test] + public void Test_315_10() + { + } + + [Test] + public void Test_315_11() + { + } + + [Test] + public void Test_315_12() + { + } + + [Test] + public void Test_315_13() + { + } + + [Test] + public void Test_315_14() + { + } + + [Test] + public void Test_315_15() + { + } + + [Test] + public void Test_315_16() + { + } + + [Test] + public void Test_315_17() + { + } + + [Test] + public void Test_315_18() + { + } + + [Test] + public void Test_315_19() + { + } + + [Test] + public void Test_315_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_316 + { + #region PassingTests + [Test] + public void Test_316_01() + { + } + + [Test] + public void Test_316_02() + { + } + + [Test] + public void Test_316_03() + { + } + + [Test] + public void Test_316_04() + { + } + + [Test] + public void Test_316_05() + { + } + + [Test] + public void Test_316_06() + { + } + + [Test] + public void Test_316_07() + { + } + + [Test] + public void Test_316_08() + { + } + + [Test] + public void Test_316_09() + { + } + + [Test] + public void Test_316_10() + { + } + + [Test] + public void Test_316_11() + { + } + + [Test] + public void Test_316_12() + { + } + + [Test] + public void Test_316_13() + { + } + + [Test] + public void Test_316_14() + { + } + + [Test] + public void Test_316_15() + { + } + + [Test] + public void Test_316_16() + { + } + + [Test] + public void Test_316_17() + { + } + + [Test] + public void Test_316_18() + { + } + + [Test] + public void Test_316_19() + { + } + + [Test] + public void Test_316_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_317 + { + #region PassingTests + [Test] + public void Test_317_01() + { + } + + [Test] + public void Test_317_02() + { + } + + [Test] + public void Test_317_03() + { + } + + [Test] + public void Test_317_04() + { + } + + [Test] + public void Test_317_05() + { + } + + [Test] + public void Test_317_06() + { + } + + [Test] + public void Test_317_07() + { + } + + [Test] + public void Test_317_08() + { + } + + [Test] + public void Test_317_09() + { + } + + [Test] + public void Test_317_10() + { + } + + [Test] + public void Test_317_11() + { + } + + [Test] + public void Test_317_12() + { + } + + [Test] + public void Test_317_13() + { + } + + [Test] + public void Test_317_14() + { + } + + [Test] + public void Test_317_15() + { + } + + [Test] + public void Test_317_16() + { + } + + [Test] + public void Test_317_17() + { + } + + [Test] + public void Test_317_18() + { + } + + [Test] + public void Test_317_19() + { + } + + [Test] + public void Test_317_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_318 + { + #region PassingTests + [Test] + public void Test_318_01() + { + } + + [Test] + public void Test_318_02() + { + } + + [Test] + public void Test_318_03() + { + } + + [Test] + public void Test_318_04() + { + } + + [Test] + public void Test_318_05() + { + } + + [Test] + public void Test_318_06() + { + } + + [Test] + public void Test_318_07() + { + } + + [Test] + public void Test_318_08() + { + } + + [Test] + public void Test_318_09() + { + } + + [Test] + public void Test_318_10() + { + } + + [Test] + public void Test_318_11() + { + } + + [Test] + public void Test_318_12() + { + } + + [Test] + public void Test_318_13() + { + } + + [Test] + public void Test_318_14() + { + } + + [Test] + public void Test_318_15() + { + } + + [Test] + public void Test_318_16() + { + } + + [Test] + public void Test_318_17() + { + } + + [Test] + public void Test_318_18() + { + } + + [Test] + public void Test_318_19() + { + } + + [Test] + public void Test_318_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_319 + { + #region PassingTests + [Test] + public void Test_319_01() + { + } + + [Test] + public void Test_319_02() + { + } + + [Test] + public void Test_319_03() + { + } + + [Test] + public void Test_319_04() + { + } + + [Test] + public void Test_319_05() + { + } + + [Test] + public void Test_319_06() + { + } + + [Test] + public void Test_319_07() + { + } + + [Test] + public void Test_319_08() + { + } + + [Test] + public void Test_319_09() + { + } + + [Test] + public void Test_319_10() + { + } + + [Test] + public void Test_319_11() + { + } + + [Test] + public void Test_319_12() + { + } + + [Test] + public void Test_319_13() + { + } + + [Test] + public void Test_319_14() + { + } + + [Test] + public void Test_319_15() + { + } + + [Test] + public void Test_319_16() + { + } + + [Test] + public void Test_319_17() + { + } + + [Test] + public void Test_319_18() + { + } + + [Test] + public void Test_319_19() + { + } + + [Test] + public void Test_319_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_320 + { + #region PassingTests + [Test] + public void Test_320_01() + { + } + + [Test] + public void Test_320_02() + { + } + + [Test] + public void Test_320_03() + { + } + + [Test] + public void Test_320_04() + { + } + + [Test] + public void Test_320_05() + { + } + + [Test] + public void Test_320_06() + { + } + + [Test] + public void Test_320_07() + { + } + + [Test] + public void Test_320_08() + { + } + + [Test] + public void Test_320_09() + { + } + + [Test] + public void Test_320_10() + { + } + + [Test] + public void Test_320_11() + { + } + + [Test] + public void Test_320_12() + { + } + + [Test] + public void Test_320_13() + { + } + + [Test] + public void Test_320_14() + { + } + + [Test] + public void Test_320_15() + { + } + + [Test] + public void Test_320_16() + { + } + + [Test] + public void Test_320_17() + { + } + + [Test] + public void Test_320_18() + { + } + + [Test] + public void Test_320_19() + { + } + + [Test] + public void Test_320_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_321 + { + #region PassingTests + [Test] + public void Test_321_01() + { + } + + [Test] + public void Test_321_02() + { + } + + [Test] + public void Test_321_03() + { + } + + [Test] + public void Test_321_04() + { + } + + [Test] + public void Test_321_05() + { + } + + [Test] + public void Test_321_06() + { + } + + [Test] + public void Test_321_07() + { + } + + [Test] + public void Test_321_08() + { + } + + [Test] + public void Test_321_09() + { + } + + [Test] + public void Test_321_10() + { + } + + [Test] + public void Test_321_11() + { + } + + [Test] + public void Test_321_12() + { + } + + [Test] + public void Test_321_13() + { + } + + [Test] + public void Test_321_14() + { + } + + [Test] + public void Test_321_15() + { + } + + [Test] + public void Test_321_16() + { + } + + [Test] + public void Test_321_17() + { + } + + [Test] + public void Test_321_18() + { + } + + [Test] + public void Test_321_19() + { + } + + [Test] + public void Test_321_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_322 + { + #region PassingTests + [Test] + public void Test_322_01() + { + } + + [Test] + public void Test_322_02() + { + } + + [Test] + public void Test_322_03() + { + } + + [Test] + public void Test_322_04() + { + } + + [Test] + public void Test_322_05() + { + } + + [Test] + public void Test_322_06() + { + } + + [Test] + public void Test_322_07() + { + } + + [Test] + public void Test_322_08() + { + } + + [Test] + public void Test_322_09() + { + } + + [Test] + public void Test_322_10() + { + } + + [Test] + public void Test_322_11() + { + } + + [Test] + public void Test_322_12() + { + } + + [Test] + public void Test_322_13() + { + } + + [Test] + public void Test_322_14() + { + } + + [Test] + public void Test_322_15() + { + } + + [Test] + public void Test_322_16() + { + } + + [Test] + public void Test_322_17() + { + } + + [Test] + public void Test_322_18() + { + } + + [Test] + public void Test_322_19() + { + } + + [Test] + public void Test_322_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_323 + { + #region PassingTests + [Test] + public void Test_323_01() + { + } + + [Test] + public void Test_323_02() + { + } + + [Test] + public void Test_323_03() + { + } + + [Test] + public void Test_323_04() + { + } + + [Test] + public void Test_323_05() + { + } + + [Test] + public void Test_323_06() + { + } + + [Test] + public void Test_323_07() + { + } + + [Test] + public void Test_323_08() + { + } + + [Test] + public void Test_323_09() + { + } + + [Test] + public void Test_323_10() + { + } + + [Test] + public void Test_323_11() + { + } + + [Test] + public void Test_323_12() + { + } + + [Test] + public void Test_323_13() + { + } + + [Test] + public void Test_323_14() + { + } + + [Test] + public void Test_323_15() + { + } + + [Test] + public void Test_323_16() + { + } + + [Test] + public void Test_323_17() + { + } + + [Test] + public void Test_323_18() + { + } + + [Test] + public void Test_323_19() + { + } + + [Test] + public void Test_323_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_324 + { + #region PassingTests + [Test] + public void Test_324_01() + { + } + + [Test] + public void Test_324_02() + { + } + + [Test] + public void Test_324_03() + { + } + + [Test] + public void Test_324_04() + { + } + + [Test] + public void Test_324_05() + { + } + + [Test] + public void Test_324_06() + { + } + + [Test] + public void Test_324_07() + { + } + + [Test] + public void Test_324_08() + { + } + + [Test] + public void Test_324_09() + { + } + + [Test] + public void Test_324_10() + { + } + + [Test] + public void Test_324_11() + { + } + + [Test] + public void Test_324_12() + { + } + + [Test] + public void Test_324_13() + { + } + + [Test] + public void Test_324_14() + { + } + + [Test] + public void Test_324_15() + { + } + + [Test] + public void Test_324_16() + { + } + + [Test] + public void Test_324_17() + { + } + + [Test] + public void Test_324_18() + { + } + + [Test] + public void Test_324_19() + { + } + + [Test] + public void Test_324_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_325 + { + #region PassingTests + [Test] + public void Test_325_01() + { + } + + [Test] + public void Test_325_02() + { + } + + [Test] + public void Test_325_03() + { + } + + [Test] + public void Test_325_04() + { + } + + [Test] + public void Test_325_05() + { + } + + [Test] + public void Test_325_06() + { + } + + [Test] + public void Test_325_07() + { + } + + [Test] + public void Test_325_08() + { + } + + [Test] + public void Test_325_09() + { + } + + [Test] + public void Test_325_10() + { + } + + [Test] + public void Test_325_11() + { + } + + [Test] + public void Test_325_12() + { + } + + [Test] + public void Test_325_13() + { + } + + [Test] + public void Test_325_14() + { + } + + [Test] + public void Test_325_15() + { + } + + [Test] + public void Test_325_16() + { + } + + [Test] + public void Test_325_17() + { + } + + [Test] + public void Test_325_18() + { + } + + [Test] + public void Test_325_19() + { + } + + [Test] + public void Test_325_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_326 + { + #region PassingTests + [Test] + public void Test_326_01() + { + } + + [Test] + public void Test_326_02() + { + } + + [Test] + public void Test_326_03() + { + } + + [Test] + public void Test_326_04() + { + } + + [Test] + public void Test_326_05() + { + } + + [Test] + public void Test_326_06() + { + } + + [Test] + public void Test_326_07() + { + } + + [Test] + public void Test_326_08() + { + } + + [Test] + public void Test_326_09() + { + } + + [Test] + public void Test_326_10() + { + } + + [Test] + public void Test_326_11() + { + } + + [Test] + public void Test_326_12() + { + } + + [Test] + public void Test_326_13() + { + } + + [Test] + public void Test_326_14() + { + } + + [Test] + public void Test_326_15() + { + } + + [Test] + public void Test_326_16() + { + } + + [Test] + public void Test_326_17() + { + } + + [Test] + public void Test_326_18() + { + } + + [Test] + public void Test_326_19() + { + } + + [Test] + public void Test_326_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_327 + { + #region PassingTests + [Test] + public void Test_327_01() + { + } + + [Test] + public void Test_327_02() + { + } + + [Test] + public void Test_327_03() + { + } + + [Test] + public void Test_327_04() + { + } + + [Test] + public void Test_327_05() + { + } + + [Test] + public void Test_327_06() + { + } + + [Test] + public void Test_327_07() + { + } + + [Test] + public void Test_327_08() + { + } + + [Test] + public void Test_327_09() + { + } + + [Test] + public void Test_327_10() + { + } + + [Test] + public void Test_327_11() + { + } + + [Test] + public void Test_327_12() + { + } + + [Test] + public void Test_327_13() + { + } + + [Test] + public void Test_327_14() + { + } + + [Test] + public void Test_327_15() + { + } + + [Test] + public void Test_327_16() + { + } + + [Test] + public void Test_327_17() + { + } + + [Test] + public void Test_327_18() + { + } + + [Test] + public void Test_327_19() + { + } + + [Test] + public void Test_327_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_328 + { + #region PassingTests + [Test] + public void Test_328_01() + { + } + + [Test] + public void Test_328_02() + { + } + + [Test] + public void Test_328_03() + { + } + + [Test] + public void Test_328_04() + { + } + + [Test] + public void Test_328_05() + { + } + + [Test] + public void Test_328_06() + { + } + + [Test] + public void Test_328_07() + { + } + + [Test] + public void Test_328_08() + { + } + + [Test] + public void Test_328_09() + { + } + + [Test] + public void Test_328_10() + { + } + + [Test] + public void Test_328_11() + { + } + + [Test] + public void Test_328_12() + { + } + + [Test] + public void Test_328_13() + { + } + + [Test] + public void Test_328_14() + { + } + + [Test] + public void Test_328_15() + { + } + + [Test] + public void Test_328_16() + { + } + + [Test] + public void Test_328_17() + { + } + + [Test] + public void Test_328_18() + { + } + + [Test] + public void Test_328_19() + { + } + + [Test] + public void Test_328_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_329 + { + #region PassingTests + [Test] + public void Test_329_01() + { + } + + [Test] + public void Test_329_02() + { + } + + [Test] + public void Test_329_03() + { + } + + [Test] + public void Test_329_04() + { + } + + [Test] + public void Test_329_05() + { + } + + [Test] + public void Test_329_06() + { + } + + [Test] + public void Test_329_07() + { + } + + [Test] + public void Test_329_08() + { + } + + [Test] + public void Test_329_09() + { + } + + [Test] + public void Test_329_10() + { + } + + [Test] + public void Test_329_11() + { + } + + [Test] + public void Test_329_12() + { + } + + [Test] + public void Test_329_13() + { + } + + [Test] + public void Test_329_14() + { + } + + [Test] + public void Test_329_15() + { + } + + [Test] + public void Test_329_16() + { + } + + [Test] + public void Test_329_17() + { + } + + [Test] + public void Test_329_18() + { + } + + [Test] + public void Test_329_19() + { + } + + [Test] + public void Test_329_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_330 + { + #region PassingTests + [Test] + public void Test_330_01() + { + } + + [Test] + public void Test_330_02() + { + } + + [Test] + public void Test_330_03() + { + } + + [Test] + public void Test_330_04() + { + } + + [Test] + public void Test_330_05() + { + } + + [Test] + public void Test_330_06() + { + } + + [Test] + public void Test_330_07() + { + } + + [Test] + public void Test_330_08() + { + } + + [Test] + public void Test_330_09() + { + } + + [Test] + public void Test_330_10() + { + } + + [Test] + public void Test_330_11() + { + } + + [Test] + public void Test_330_12() + { + } + + [Test] + public void Test_330_13() + { + } + + [Test] + public void Test_330_14() + { + } + + [Test] + public void Test_330_15() + { + } + + [Test] + public void Test_330_16() + { + } + + [Test] + public void Test_330_17() + { + } + + [Test] + public void Test_330_18() + { + } + + [Test] + public void Test_330_19() + { + } + + [Test] + public void Test_330_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_331 + { + #region PassingTests + [Test] + public void Test_331_01() + { + } + + [Test] + public void Test_331_02() + { + } + + [Test] + public void Test_331_03() + { + } + + [Test] + public void Test_331_04() + { + } + + [Test] + public void Test_331_05() + { + } + + [Test] + public void Test_331_06() + { + } + + [Test] + public void Test_331_07() + { + } + + [Test] + public void Test_331_08() + { + } + + [Test] + public void Test_331_09() + { + } + + [Test] + public void Test_331_10() + { + } + + [Test] + public void Test_331_11() + { + } + + [Test] + public void Test_331_12() + { + } + + [Test] + public void Test_331_13() + { + } + + [Test] + public void Test_331_14() + { + } + + [Test] + public void Test_331_15() + { + } + + [Test] + public void Test_331_16() + { + } + + [Test] + public void Test_331_17() + { + } + + [Test] + public void Test_331_18() + { + } + + [Test] + public void Test_331_19() + { + } + + [Test] + public void Test_331_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_332 + { + #region PassingTests + [Test] + public void Test_332_01() + { + } + + [Test] + public void Test_332_02() + { + } + + [Test] + public void Test_332_03() + { + } + + [Test] + public void Test_332_04() + { + } + + [Test] + public void Test_332_05() + { + } + + [Test] + public void Test_332_06() + { + } + + [Test] + public void Test_332_07() + { + } + + [Test] + public void Test_332_08() + { + } + + [Test] + public void Test_332_09() + { + } + + [Test] + public void Test_332_10() + { + } + + [Test] + public void Test_332_11() + { + } + + [Test] + public void Test_332_12() + { + } + + [Test] + public void Test_332_13() + { + } + + [Test] + public void Test_332_14() + { + } + + [Test] + public void Test_332_15() + { + } + + [Test] + public void Test_332_16() + { + } + + [Test] + public void Test_332_17() + { + } + + [Test] + public void Test_332_18() + { + } + + [Test] + public void Test_332_19() + { + } + + [Test] + public void Test_332_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_333 + { + #region PassingTests + [Test] + public void Test_333_01() + { + } + + [Test] + public void Test_333_02() + { + } + + [Test] + public void Test_333_03() + { + } + + [Test] + public void Test_333_04() + { + } + + [Test] + public void Test_333_05() + { + } + + [Test] + public void Test_333_06() + { + } + + [Test] + public void Test_333_07() + { + } + + [Test] + public void Test_333_08() + { + } + + [Test] + public void Test_333_09() + { + } + + [Test] + public void Test_333_10() + { + } + + [Test] + public void Test_333_11() + { + } + + [Test] + public void Test_333_12() + { + } + + [Test] + public void Test_333_13() + { + } + + [Test] + public void Test_333_14() + { + } + + [Test] + public void Test_333_15() + { + } + + [Test] + public void Test_333_16() + { + } + + [Test] + public void Test_333_17() + { + } + + [Test] + public void Test_333_18() + { + } + + [Test] + public void Test_333_19() + { + } + + [Test] + public void Test_333_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_334 + { + #region PassingTests + [Test] + public void Test_334_01() + { + } + + [Test] + public void Test_334_02() + { + } + + [Test] + public void Test_334_03() + { + } + + [Test] + public void Test_334_04() + { + } + + [Test] + public void Test_334_05() + { + } + + [Test] + public void Test_334_06() + { + } + + [Test] + public void Test_334_07() + { + } + + [Test] + public void Test_334_08() + { + } + + [Test] + public void Test_334_09() + { + } + + [Test] + public void Test_334_10() + { + } + + [Test] + public void Test_334_11() + { + } + + [Test] + public void Test_334_12() + { + } + + [Test] + public void Test_334_13() + { + } + + [Test] + public void Test_334_14() + { + } + + [Test] + public void Test_334_15() + { + } + + [Test] + public void Test_334_16() + { + } + + [Test] + public void Test_334_17() + { + } + + [Test] + public void Test_334_18() + { + } + + [Test] + public void Test_334_19() + { + } + + [Test] + public void Test_334_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_335 + { + #region PassingTests + [Test] + public void Test_335_01() + { + } + + [Test] + public void Test_335_02() + { + } + + [Test] + public void Test_335_03() + { + } + + [Test] + public void Test_335_04() + { + } + + [Test] + public void Test_335_05() + { + } + + [Test] + public void Test_335_06() + { + } + + [Test] + public void Test_335_07() + { + } + + [Test] + public void Test_335_08() + { + } + + [Test] + public void Test_335_09() + { + } + + [Test] + public void Test_335_10() + { + } + + [Test] + public void Test_335_11() + { + } + + [Test] + public void Test_335_12() + { + } + + [Test] + public void Test_335_13() + { + } + + [Test] + public void Test_335_14() + { + } + + [Test] + public void Test_335_15() + { + } + + [Test] + public void Test_335_16() + { + } + + [Test] + public void Test_335_17() + { + } + + [Test] + public void Test_335_18() + { + } + + [Test] + public void Test_335_19() + { + } + + [Test] + public void Test_335_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_336 + { + #region PassingTests + [Test] + public void Test_336_01() + { + } + + [Test] + public void Test_336_02() + { + } + + [Test] + public void Test_336_03() + { + } + + [Test] + public void Test_336_04() + { + } + + [Test] + public void Test_336_05() + { + } + + [Test] + public void Test_336_06() + { + } + + [Test] + public void Test_336_07() + { + } + + [Test] + public void Test_336_08() + { + } + + [Test] + public void Test_336_09() + { + } + + [Test] + public void Test_336_10() + { + } + + [Test] + public void Test_336_11() + { + } + + [Test] + public void Test_336_12() + { + } + + [Test] + public void Test_336_13() + { + } + + [Test] + public void Test_336_14() + { + } + + [Test] + public void Test_336_15() + { + } + + [Test] + public void Test_336_16() + { + } + + [Test] + public void Test_336_17() + { + } + + [Test] + public void Test_336_18() + { + } + + [Test] + public void Test_336_19() + { + } + + [Test] + public void Test_336_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_337 + { + #region PassingTests + [Test] + public void Test_337_01() + { + } + + [Test] + public void Test_337_02() + { + } + + [Test] + public void Test_337_03() + { + } + + [Test] + public void Test_337_04() + { + } + + [Test] + public void Test_337_05() + { + } + + [Test] + public void Test_337_06() + { + } + + [Test] + public void Test_337_07() + { + } + + [Test] + public void Test_337_08() + { + } + + [Test] + public void Test_337_09() + { + } + + [Test] + public void Test_337_10() + { + } + + [Test] + public void Test_337_11() + { + } + + [Test] + public void Test_337_12() + { + } + + [Test] + public void Test_337_13() + { + } + + [Test] + public void Test_337_14() + { + } + + [Test] + public void Test_337_15() + { + } + + [Test] + public void Test_337_16() + { + } + + [Test] + public void Test_337_17() + { + } + + [Test] + public void Test_337_18() + { + } + + [Test] + public void Test_337_19() + { + } + + [Test] + public void Test_337_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_338 + { + #region PassingTests + [Test] + public void Test_338_01() + { + } + + [Test] + public void Test_338_02() + { + } + + [Test] + public void Test_338_03() + { + } + + [Test] + public void Test_338_04() + { + } + + [Test] + public void Test_338_05() + { + } + + [Test] + public void Test_338_06() + { + } + + [Test] + public void Test_338_07() + { + } + + [Test] + public void Test_338_08() + { + } + + [Test] + public void Test_338_09() + { + } + + [Test] + public void Test_338_10() + { + } + + [Test] + public void Test_338_11() + { + } + + [Test] + public void Test_338_12() + { + } + + [Test] + public void Test_338_13() + { + } + + [Test] + public void Test_338_14() + { + } + + [Test] + public void Test_338_15() + { + } + + [Test] + public void Test_338_16() + { + } + + [Test] + public void Test_338_17() + { + } + + [Test] + public void Test_338_18() + { + } + + [Test] + public void Test_338_19() + { + } + + [Test] + public void Test_338_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_339 + { + #region PassingTests + [Test] + public void Test_339_01() + { + } + + [Test] + public void Test_339_02() + { + } + + [Test] + public void Test_339_03() + { + } + + [Test] + public void Test_339_04() + { + } + + [Test] + public void Test_339_05() + { + } + + [Test] + public void Test_339_06() + { + } + + [Test] + public void Test_339_07() + { + } + + [Test] + public void Test_339_08() + { + } + + [Test] + public void Test_339_09() + { + } + + [Test] + public void Test_339_10() + { + } + + [Test] + public void Test_339_11() + { + } + + [Test] + public void Test_339_12() + { + } + + [Test] + public void Test_339_13() + { + } + + [Test] + public void Test_339_14() + { + } + + [Test] + public void Test_339_15() + { + } + + [Test] + public void Test_339_16() + { + } + + [Test] + public void Test_339_17() + { + } + + [Test] + public void Test_339_18() + { + } + + [Test] + public void Test_339_19() + { + } + + [Test] + public void Test_339_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_340 + { + #region PassingTests + [Test] + public void Test_340_01() + { + } + + [Test] + public void Test_340_02() + { + } + + [Test] + public void Test_340_03() + { + } + + [Test] + public void Test_340_04() + { + } + + [Test] + public void Test_340_05() + { + } + + [Test] + public void Test_340_06() + { + } + + [Test] + public void Test_340_07() + { + } + + [Test] + public void Test_340_08() + { + } + + [Test] + public void Test_340_09() + { + } + + [Test] + public void Test_340_10() + { + } + + [Test] + public void Test_340_11() + { + } + + [Test] + public void Test_340_12() + { + } + + [Test] + public void Test_340_13() + { + } + + [Test] + public void Test_340_14() + { + } + + [Test] + public void Test_340_15() + { + } + + [Test] + public void Test_340_16() + { + } + + [Test] + public void Test_340_17() + { + } + + [Test] + public void Test_340_18() + { + } + + [Test] + public void Test_340_19() + { + } + + [Test] + public void Test_340_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_341 + { + #region PassingTests + [Test] + public void Test_341_01() + { + } + + [Test] + public void Test_341_02() + { + } + + [Test] + public void Test_341_03() + { + } + + [Test] + public void Test_341_04() + { + } + + [Test] + public void Test_341_05() + { + } + + [Test] + public void Test_341_06() + { + } + + [Test] + public void Test_341_07() + { + } + + [Test] + public void Test_341_08() + { + } + + [Test] + public void Test_341_09() + { + } + + [Test] + public void Test_341_10() + { + } + + [Test] + public void Test_341_11() + { + } + + [Test] + public void Test_341_12() + { + } + + [Test] + public void Test_341_13() + { + } + + [Test] + public void Test_341_14() + { + } + + [Test] + public void Test_341_15() + { + } + + [Test] + public void Test_341_16() + { + } + + [Test] + public void Test_341_17() + { + } + + [Test] + public void Test_341_18() + { + } + + [Test] + public void Test_341_19() + { + } + + [Test] + public void Test_341_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_342 + { + #region PassingTests + [Test] + public void Test_342_01() + { + } + + [Test] + public void Test_342_02() + { + } + + [Test] + public void Test_342_03() + { + } + + [Test] + public void Test_342_04() + { + } + + [Test] + public void Test_342_05() + { + } + + [Test] + public void Test_342_06() + { + } + + [Test] + public void Test_342_07() + { + } + + [Test] + public void Test_342_08() + { + } + + [Test] + public void Test_342_09() + { + } + + [Test] + public void Test_342_10() + { + } + + [Test] + public void Test_342_11() + { + } + + [Test] + public void Test_342_12() + { + } + + [Test] + public void Test_342_13() + { + } + + [Test] + public void Test_342_14() + { + } + + [Test] + public void Test_342_15() + { + } + + [Test] + public void Test_342_16() + { + } + + [Test] + public void Test_342_17() + { + } + + [Test] + public void Test_342_18() + { + } + + [Test] + public void Test_342_19() + { + } + + [Test] + public void Test_342_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_343 + { + #region PassingTests + [Test] + public void Test_343_01() + { + } + + [Test] + public void Test_343_02() + { + } + + [Test] + public void Test_343_03() + { + } + + [Test] + public void Test_343_04() + { + } + + [Test] + public void Test_343_05() + { + } + + [Test] + public void Test_343_06() + { + } + + [Test] + public void Test_343_07() + { + } + + [Test] + public void Test_343_08() + { + } + + [Test] + public void Test_343_09() + { + } + + [Test] + public void Test_343_10() + { + } + + [Test] + public void Test_343_11() + { + } + + [Test] + public void Test_343_12() + { + } + + [Test] + public void Test_343_13() + { + } + + [Test] + public void Test_343_14() + { + } + + [Test] + public void Test_343_15() + { + } + + [Test] + public void Test_343_16() + { + } + + [Test] + public void Test_343_17() + { + } + + [Test] + public void Test_343_18() + { + } + + [Test] + public void Test_343_19() + { + } + + [Test] + public void Test_343_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_344 + { + #region PassingTests + [Test] + public void Test_344_01() + { + } + + [Test] + public void Test_344_02() + { + } + + [Test] + public void Test_344_03() + { + } + + [Test] + public void Test_344_04() + { + } + + [Test] + public void Test_344_05() + { + } + + [Test] + public void Test_344_06() + { + } + + [Test] + public void Test_344_07() + { + } + + [Test] + public void Test_344_08() + { + } + + [Test] + public void Test_344_09() + { + } + + [Test] + public void Test_344_10() + { + } + + [Test] + public void Test_344_11() + { + } + + [Test] + public void Test_344_12() + { + } + + [Test] + public void Test_344_13() + { + } + + [Test] + public void Test_344_14() + { + } + + [Test] + public void Test_344_15() + { + } + + [Test] + public void Test_344_16() + { + } + + [Test] + public void Test_344_17() + { + } + + [Test] + public void Test_344_18() + { + } + + [Test] + public void Test_344_19() + { + } + + [Test] + public void Test_344_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_345 + { + #region PassingTests + [Test] + public void Test_345_01() + { + } + + [Test] + public void Test_345_02() + { + } + + [Test] + public void Test_345_03() + { + } + + [Test] + public void Test_345_04() + { + } + + [Test] + public void Test_345_05() + { + } + + [Test] + public void Test_345_06() + { + } + + [Test] + public void Test_345_07() + { + } + + [Test] + public void Test_345_08() + { + } + + [Test] + public void Test_345_09() + { + } + + [Test] + public void Test_345_10() + { + } + + [Test] + public void Test_345_11() + { + } + + [Test] + public void Test_345_12() + { + } + + [Test] + public void Test_345_13() + { + } + + [Test] + public void Test_345_14() + { + } + + [Test] + public void Test_345_15() + { + } + + [Test] + public void Test_345_16() + { + } + + [Test] + public void Test_345_17() + { + } + + [Test] + public void Test_345_18() + { + } + + [Test] + public void Test_345_19() + { + } + + [Test] + public void Test_345_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_346 + { + #region PassingTests + [Test] + public void Test_346_01() + { + } + + [Test] + public void Test_346_02() + { + } + + [Test] + public void Test_346_03() + { + } + + [Test] + public void Test_346_04() + { + } + + [Test] + public void Test_346_05() + { + } + + [Test] + public void Test_346_06() + { + } + + [Test] + public void Test_346_07() + { + } + + [Test] + public void Test_346_08() + { + } + + [Test] + public void Test_346_09() + { + } + + [Test] + public void Test_346_10() + { + } + + [Test] + public void Test_346_11() + { + } + + [Test] + public void Test_346_12() + { + } + + [Test] + public void Test_346_13() + { + } + + [Test] + public void Test_346_14() + { + } + + [Test] + public void Test_346_15() + { + } + + [Test] + public void Test_346_16() + { + } + + [Test] + public void Test_346_17() + { + } + + [Test] + public void Test_346_18() + { + } + + [Test] + public void Test_346_19() + { + } + + [Test] + public void Test_346_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_347 + { + #region PassingTests + [Test] + public void Test_347_01() + { + } + + [Test] + public void Test_347_02() + { + } + + [Test] + public void Test_347_03() + { + } + + [Test] + public void Test_347_04() + { + } + + [Test] + public void Test_347_05() + { + } + + [Test] + public void Test_347_06() + { + } + + [Test] + public void Test_347_07() + { + } + + [Test] + public void Test_347_08() + { + } + + [Test] + public void Test_347_09() + { + } + + [Test] + public void Test_347_10() + { + } + + [Test] + public void Test_347_11() + { + } + + [Test] + public void Test_347_12() + { + } + + [Test] + public void Test_347_13() + { + } + + [Test] + public void Test_347_14() + { + } + + [Test] + public void Test_347_15() + { + } + + [Test] + public void Test_347_16() + { + } + + [Test] + public void Test_347_17() + { + } + + [Test] + public void Test_347_18() + { + } + + [Test] + public void Test_347_19() + { + } + + [Test] + public void Test_347_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_348 + { + #region PassingTests + [Test] + public void Test_348_01() + { + } + + [Test] + public void Test_348_02() + { + } + + [Test] + public void Test_348_03() + { + } + + [Test] + public void Test_348_04() + { + } + + [Test] + public void Test_348_05() + { + } + + [Test] + public void Test_348_06() + { + } + + [Test] + public void Test_348_07() + { + } + + [Test] + public void Test_348_08() + { + } + + [Test] + public void Test_348_09() + { + } + + [Test] + public void Test_348_10() + { + } + + [Test] + public void Test_348_11() + { + } + + [Test] + public void Test_348_12() + { + } + + [Test] + public void Test_348_13() + { + } + + [Test] + public void Test_348_14() + { + } + + [Test] + public void Test_348_15() + { + } + + [Test] + public void Test_348_16() + { + } + + [Test] + public void Test_348_17() + { + } + + [Test] + public void Test_348_18() + { + } + + [Test] + public void Test_348_19() + { + } + + [Test] + public void Test_348_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_349 + { + #region PassingTests + [Test] + public void Test_349_01() + { + } + + [Test] + public void Test_349_02() + { + } + + [Test] + public void Test_349_03() + { + } + + [Test] + public void Test_349_04() + { + } + + [Test] + public void Test_349_05() + { + } + + [Test] + public void Test_349_06() + { + } + + [Test] + public void Test_349_07() + { + } + + [Test] + public void Test_349_08() + { + } + + [Test] + public void Test_349_09() + { + } + + [Test] + public void Test_349_10() + { + } + + [Test] + public void Test_349_11() + { + } + + [Test] + public void Test_349_12() + { + } + + [Test] + public void Test_349_13() + { + } + + [Test] + public void Test_349_14() + { + } + + [Test] + public void Test_349_15() + { + } + + [Test] + public void Test_349_16() + { + } + + [Test] + public void Test_349_17() + { + } + + [Test] + public void Test_349_18() + { + } + + [Test] + public void Test_349_19() + { + } + + [Test] + public void Test_349_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_350 + { + #region PassingTests + [Test] + public void Test_350_01() + { + } + + [Test] + public void Test_350_02() + { + } + + [Test] + public void Test_350_03() + { + } + + [Test] + public void Test_350_04() + { + } + + [Test] + public void Test_350_05() + { + } + + [Test] + public void Test_350_06() + { + } + + [Test] + public void Test_350_07() + { + } + + [Test] + public void Test_350_08() + { + } + + [Test] + public void Test_350_09() + { + } + + [Test] + public void Test_350_10() + { + } + + [Test] + public void Test_350_11() + { + } + + [Test] + public void Test_350_12() + { + } + + [Test] + public void Test_350_13() + { + } + + [Test] + public void Test_350_14() + { + } + + [Test] + public void Test_350_15() + { + } + + [Test] + public void Test_350_16() + { + } + + [Test] + public void Test_350_17() + { + } + + [Test] + public void Test_350_18() + { + } + + [Test] + public void Test_350_19() + { + } + + [Test] + public void Test_350_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_351 + { + #region PassingTests + [Test] + public void Test_351_01() + { + } + + [Test] + public void Test_351_02() + { + } + + [Test] + public void Test_351_03() + { + } + + [Test] + public void Test_351_04() + { + } + + [Test] + public void Test_351_05() + { + } + + [Test] + public void Test_351_06() + { + } + + [Test] + public void Test_351_07() + { + } + + [Test] + public void Test_351_08() + { + } + + [Test] + public void Test_351_09() + { + } + + [Test] + public void Test_351_10() + { + } + + [Test] + public void Test_351_11() + { + } + + [Test] + public void Test_351_12() + { + } + + [Test] + public void Test_351_13() + { + } + + [Test] + public void Test_351_14() + { + } + + [Test] + public void Test_351_15() + { + } + + [Test] + public void Test_351_16() + { + } + + [Test] + public void Test_351_17() + { + } + + [Test] + public void Test_351_18() + { + } + + [Test] + public void Test_351_19() + { + } + + [Test] + public void Test_351_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_352 + { + #region PassingTests + [Test] + public void Test_352_01() + { + } + + [Test] + public void Test_352_02() + { + } + + [Test] + public void Test_352_03() + { + } + + [Test] + public void Test_352_04() + { + } + + [Test] + public void Test_352_05() + { + } + + [Test] + public void Test_352_06() + { + } + + [Test] + public void Test_352_07() + { + } + + [Test] + public void Test_352_08() + { + } + + [Test] + public void Test_352_09() + { + } + + [Test] + public void Test_352_10() + { + } + + [Test] + public void Test_352_11() + { + } + + [Test] + public void Test_352_12() + { + } + + [Test] + public void Test_352_13() + { + } + + [Test] + public void Test_352_14() + { + } + + [Test] + public void Test_352_15() + { + } + + [Test] + public void Test_352_16() + { + } + + [Test] + public void Test_352_17() + { + } + + [Test] + public void Test_352_18() + { + } + + [Test] + public void Test_352_19() + { + } + + [Test] + public void Test_352_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_353 + { + #region PassingTests + [Test] + public void Test_353_01() + { + } + + [Test] + public void Test_353_02() + { + } + + [Test] + public void Test_353_03() + { + } + + [Test] + public void Test_353_04() + { + } + + [Test] + public void Test_353_05() + { + } + + [Test] + public void Test_353_06() + { + } + + [Test] + public void Test_353_07() + { + } + + [Test] + public void Test_353_08() + { + } + + [Test] + public void Test_353_09() + { + } + + [Test] + public void Test_353_10() + { + } + + [Test] + public void Test_353_11() + { + } + + [Test] + public void Test_353_12() + { + } + + [Test] + public void Test_353_13() + { + } + + [Test] + public void Test_353_14() + { + } + + [Test] + public void Test_353_15() + { + } + + [Test] + public void Test_353_16() + { + } + + [Test] + public void Test_353_17() + { + } + + [Test] + public void Test_353_18() + { + } + + [Test] + public void Test_353_19() + { + } + + [Test] + public void Test_353_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_354 + { + #region PassingTests + [Test] + public void Test_354_01() + { + } + + [Test] + public void Test_354_02() + { + } + + [Test] + public void Test_354_03() + { + } + + [Test] + public void Test_354_04() + { + } + + [Test] + public void Test_354_05() + { + } + + [Test] + public void Test_354_06() + { + } + + [Test] + public void Test_354_07() + { + } + + [Test] + public void Test_354_08() + { + } + + [Test] + public void Test_354_09() + { + } + + [Test] + public void Test_354_10() + { + } + + [Test] + public void Test_354_11() + { + } + + [Test] + public void Test_354_12() + { + } + + [Test] + public void Test_354_13() + { + } + + [Test] + public void Test_354_14() + { + } + + [Test] + public void Test_354_15() + { + } + + [Test] + public void Test_354_16() + { + } + + [Test] + public void Test_354_17() + { + } + + [Test] + public void Test_354_18() + { + } + + [Test] + public void Test_354_19() + { + } + + [Test] + public void Test_354_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_355 + { + #region PassingTests + [Test] + public void Test_355_01() + { + } + + [Test] + public void Test_355_02() + { + } + + [Test] + public void Test_355_03() + { + } + + [Test] + public void Test_355_04() + { + } + + [Test] + public void Test_355_05() + { + } + + [Test] + public void Test_355_06() + { + } + + [Test] + public void Test_355_07() + { + } + + [Test] + public void Test_355_08() + { + } + + [Test] + public void Test_355_09() + { + } + + [Test] + public void Test_355_10() + { + } + + [Test] + public void Test_355_11() + { + } + + [Test] + public void Test_355_12() + { + } + + [Test] + public void Test_355_13() + { + } + + [Test] + public void Test_355_14() + { + } + + [Test] + public void Test_355_15() + { + } + + [Test] + public void Test_355_16() + { + } + + [Test] + public void Test_355_17() + { + } + + [Test] + public void Test_355_18() + { + } + + [Test] + public void Test_355_19() + { + } + + [Test] + public void Test_355_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_356 + { + #region PassingTests + [Test] + public void Test_356_01() + { + } + + [Test] + public void Test_356_02() + { + } + + [Test] + public void Test_356_03() + { + } + + [Test] + public void Test_356_04() + { + } + + [Test] + public void Test_356_05() + { + } + + [Test] + public void Test_356_06() + { + } + + [Test] + public void Test_356_07() + { + } + + [Test] + public void Test_356_08() + { + } + + [Test] + public void Test_356_09() + { + } + + [Test] + public void Test_356_10() + { + } + + [Test] + public void Test_356_11() + { + } + + [Test] + public void Test_356_12() + { + } + + [Test] + public void Test_356_13() + { + } + + [Test] + public void Test_356_14() + { + } + + [Test] + public void Test_356_15() + { + } + + [Test] + public void Test_356_16() + { + } + + [Test] + public void Test_356_17() + { + } + + [Test] + public void Test_356_18() + { + } + + [Test] + public void Test_356_19() + { + } + + [Test] + public void Test_356_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_357 + { + #region PassingTests + [Test] + public void Test_357_01() + { + } + + [Test] + public void Test_357_02() + { + } + + [Test] + public void Test_357_03() + { + } + + [Test] + public void Test_357_04() + { + } + + [Test] + public void Test_357_05() + { + } + + [Test] + public void Test_357_06() + { + } + + [Test] + public void Test_357_07() + { + } + + [Test] + public void Test_357_08() + { + } + + [Test] + public void Test_357_09() + { + } + + [Test] + public void Test_357_10() + { + } + + [Test] + public void Test_357_11() + { + } + + [Test] + public void Test_357_12() + { + } + + [Test] + public void Test_357_13() + { + } + + [Test] + public void Test_357_14() + { + } + + [Test] + public void Test_357_15() + { + } + + [Test] + public void Test_357_16() + { + } + + [Test] + public void Test_357_17() + { + } + + [Test] + public void Test_357_18() + { + } + + [Test] + public void Test_357_19() + { + } + + [Test] + public void Test_357_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_358 + { + #region PassingTests + [Test] + public void Test_358_01() + { + } + + [Test] + public void Test_358_02() + { + } + + [Test] + public void Test_358_03() + { + } + + [Test] + public void Test_358_04() + { + } + + [Test] + public void Test_358_05() + { + } + + [Test] + public void Test_358_06() + { + } + + [Test] + public void Test_358_07() + { + } + + [Test] + public void Test_358_08() + { + } + + [Test] + public void Test_358_09() + { + } + + [Test] + public void Test_358_10() + { + } + + [Test] + public void Test_358_11() + { + } + + [Test] + public void Test_358_12() + { + } + + [Test] + public void Test_358_13() + { + } + + [Test] + public void Test_358_14() + { + } + + [Test] + public void Test_358_15() + { + } + + [Test] + public void Test_358_16() + { + } + + [Test] + public void Test_358_17() + { + } + + [Test] + public void Test_358_18() + { + } + + [Test] + public void Test_358_19() + { + } + + [Test] + public void Test_358_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_359 + { + #region PassingTests + [Test] + public void Test_359_01() + { + } + + [Test] + public void Test_359_02() + { + } + + [Test] + public void Test_359_03() + { + } + + [Test] + public void Test_359_04() + { + } + + [Test] + public void Test_359_05() + { + } + + [Test] + public void Test_359_06() + { + } + + [Test] + public void Test_359_07() + { + } + + [Test] + public void Test_359_08() + { + } + + [Test] + public void Test_359_09() + { + } + + [Test] + public void Test_359_10() + { + } + + [Test] + public void Test_359_11() + { + } + + [Test] + public void Test_359_12() + { + } + + [Test] + public void Test_359_13() + { + } + + [Test] + public void Test_359_14() + { + } + + [Test] + public void Test_359_15() + { + } + + [Test] + public void Test_359_16() + { + } + + [Test] + public void Test_359_17() + { + } + + [Test] + public void Test_359_18() + { + } + + [Test] + public void Test_359_19() + { + } + + [Test] + public void Test_359_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_360 + { + #region PassingTests + [Test] + public void Test_360_01() + { + } + + [Test] + public void Test_360_02() + { + } + + [Test] + public void Test_360_03() + { + } + + [Test] + public void Test_360_04() + { + } + + [Test] + public void Test_360_05() + { + } + + [Test] + public void Test_360_06() + { + } + + [Test] + public void Test_360_07() + { + } + + [Test] + public void Test_360_08() + { + } + + [Test] + public void Test_360_09() + { + } + + [Test] + public void Test_360_10() + { + } + + [Test] + public void Test_360_11() + { + } + + [Test] + public void Test_360_12() + { + } + + [Test] + public void Test_360_13() + { + } + + [Test] + public void Test_360_14() + { + } + + [Test] + public void Test_360_15() + { + } + + [Test] + public void Test_360_16() + { + } + + [Test] + public void Test_360_17() + { + } + + [Test] + public void Test_360_18() + { + } + + [Test] + public void Test_360_19() + { + } + + [Test] + public void Test_360_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_361 + { + #region PassingTests + [Test] + public void Test_361_01() + { + } + + [Test] + public void Test_361_02() + { + } + + [Test] + public void Test_361_03() + { + } + + [Test] + public void Test_361_04() + { + } + + [Test] + public void Test_361_05() + { + } + + [Test] + public void Test_361_06() + { + } + + [Test] + public void Test_361_07() + { + } + + [Test] + public void Test_361_08() + { + } + + [Test] + public void Test_361_09() + { + } + + [Test] + public void Test_361_10() + { + } + + [Test] + public void Test_361_11() + { + } + + [Test] + public void Test_361_12() + { + } + + [Test] + public void Test_361_13() + { + } + + [Test] + public void Test_361_14() + { + } + + [Test] + public void Test_361_15() + { + } + + [Test] + public void Test_361_16() + { + } + + [Test] + public void Test_361_17() + { + } + + [Test] + public void Test_361_18() + { + } + + [Test] + public void Test_361_19() + { + } + + [Test] + public void Test_361_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_362 + { + #region PassingTests + [Test] + public void Test_362_01() + { + } + + [Test] + public void Test_362_02() + { + } + + [Test] + public void Test_362_03() + { + } + + [Test] + public void Test_362_04() + { + } + + [Test] + public void Test_362_05() + { + } + + [Test] + public void Test_362_06() + { + } + + [Test] + public void Test_362_07() + { + } + + [Test] + public void Test_362_08() + { + } + + [Test] + public void Test_362_09() + { + } + + [Test] + public void Test_362_10() + { + } + + [Test] + public void Test_362_11() + { + } + + [Test] + public void Test_362_12() + { + } + + [Test] + public void Test_362_13() + { + } + + [Test] + public void Test_362_14() + { + } + + [Test] + public void Test_362_15() + { + } + + [Test] + public void Test_362_16() + { + } + + [Test] + public void Test_362_17() + { + } + + [Test] + public void Test_362_18() + { + } + + [Test] + public void Test_362_19() + { + } + + [Test] + public void Test_362_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_363 + { + #region PassingTests + [Test] + public void Test_363_01() + { + } + + [Test] + public void Test_363_02() + { + } + + [Test] + public void Test_363_03() + { + } + + [Test] + public void Test_363_04() + { + } + + [Test] + public void Test_363_05() + { + } + + [Test] + public void Test_363_06() + { + } + + [Test] + public void Test_363_07() + { + } + + [Test] + public void Test_363_08() + { + } + + [Test] + public void Test_363_09() + { + } + + [Test] + public void Test_363_10() + { + } + + [Test] + public void Test_363_11() + { + } + + [Test] + public void Test_363_12() + { + } + + [Test] + public void Test_363_13() + { + } + + [Test] + public void Test_363_14() + { + } + + [Test] + public void Test_363_15() + { + } + + [Test] + public void Test_363_16() + { + } + + [Test] + public void Test_363_17() + { + } + + [Test] + public void Test_363_18() + { + } + + [Test] + public void Test_363_19() + { + } + + [Test] + public void Test_363_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_364 + { + #region PassingTests + [Test] + public void Test_364_01() + { + } + + [Test] + public void Test_364_02() + { + } + + [Test] + public void Test_364_03() + { + } + + [Test] + public void Test_364_04() + { + } + + [Test] + public void Test_364_05() + { + } + + [Test] + public void Test_364_06() + { + } + + [Test] + public void Test_364_07() + { + } + + [Test] + public void Test_364_08() + { + } + + [Test] + public void Test_364_09() + { + } + + [Test] + public void Test_364_10() + { + } + + [Test] + public void Test_364_11() + { + } + + [Test] + public void Test_364_12() + { + } + + [Test] + public void Test_364_13() + { + } + + [Test] + public void Test_364_14() + { + } + + [Test] + public void Test_364_15() + { + } + + [Test] + public void Test_364_16() + { + } + + [Test] + public void Test_364_17() + { + } + + [Test] + public void Test_364_18() + { + } + + [Test] + public void Test_364_19() + { + } + + [Test] + public void Test_364_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_365 + { + #region PassingTests + [Test] + public void Test_365_01() + { + } + + [Test] + public void Test_365_02() + { + } + + [Test] + public void Test_365_03() + { + } + + [Test] + public void Test_365_04() + { + } + + [Test] + public void Test_365_05() + { + } + + [Test] + public void Test_365_06() + { + } + + [Test] + public void Test_365_07() + { + } + + [Test] + public void Test_365_08() + { + } + + [Test] + public void Test_365_09() + { + } + + [Test] + public void Test_365_10() + { + } + + [Test] + public void Test_365_11() + { + } + + [Test] + public void Test_365_12() + { + } + + [Test] + public void Test_365_13() + { + } + + [Test] + public void Test_365_14() + { + } + + [Test] + public void Test_365_15() + { + } + + [Test] + public void Test_365_16() + { + } + + [Test] + public void Test_365_17() + { + } + + [Test] + public void Test_365_18() + { + } + + [Test] + public void Test_365_19() + { + } + + [Test] + public void Test_365_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_366 + { + #region PassingTests + [Test] + public void Test_366_01() + { + } + + [Test] + public void Test_366_02() + { + } + + [Test] + public void Test_366_03() + { + } + + [Test] + public void Test_366_04() + { + } + + [Test] + public void Test_366_05() + { + } + + [Test] + public void Test_366_06() + { + } + + [Test] + public void Test_366_07() + { + } + + [Test] + public void Test_366_08() + { + } + + [Test] + public void Test_366_09() + { + } + + [Test] + public void Test_366_10() + { + } + + [Test] + public void Test_366_11() + { + } + + [Test] + public void Test_366_12() + { + } + + [Test] + public void Test_366_13() + { + } + + [Test] + public void Test_366_14() + { + } + + [Test] + public void Test_366_15() + { + } + + [Test] + public void Test_366_16() + { + } + + [Test] + public void Test_366_17() + { + } + + [Test] + public void Test_366_18() + { + } + + [Test] + public void Test_366_19() + { + } + + [Test] + public void Test_366_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_367 + { + #region PassingTests + [Test] + public void Test_367_01() + { + } + + [Test] + public void Test_367_02() + { + } + + [Test] + public void Test_367_03() + { + } + + [Test] + public void Test_367_04() + { + } + + [Test] + public void Test_367_05() + { + } + + [Test] + public void Test_367_06() + { + } + + [Test] + public void Test_367_07() + { + } + + [Test] + public void Test_367_08() + { + } + + [Test] + public void Test_367_09() + { + } + + [Test] + public void Test_367_10() + { + } + + [Test] + public void Test_367_11() + { + } + + [Test] + public void Test_367_12() + { + } + + [Test] + public void Test_367_13() + { + } + + [Test] + public void Test_367_14() + { + } + + [Test] + public void Test_367_15() + { + } + + [Test] + public void Test_367_16() + { + } + + [Test] + public void Test_367_17() + { + } + + [Test] + public void Test_367_18() + { + } + + [Test] + public void Test_367_19() + { + } + + [Test] + public void Test_367_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_368 + { + #region PassingTests + [Test] + public void Test_368_01() + { + } + + [Test] + public void Test_368_02() + { + } + + [Test] + public void Test_368_03() + { + } + + [Test] + public void Test_368_04() + { + } + + [Test] + public void Test_368_05() + { + } + + [Test] + public void Test_368_06() + { + } + + [Test] + public void Test_368_07() + { + } + + [Test] + public void Test_368_08() + { + } + + [Test] + public void Test_368_09() + { + } + + [Test] + public void Test_368_10() + { + } + + [Test] + public void Test_368_11() + { + } + + [Test] + public void Test_368_12() + { + } + + [Test] + public void Test_368_13() + { + } + + [Test] + public void Test_368_14() + { + } + + [Test] + public void Test_368_15() + { + } + + [Test] + public void Test_368_16() + { + } + + [Test] + public void Test_368_17() + { + } + + [Test] + public void Test_368_18() + { + } + + [Test] + public void Test_368_19() + { + } + + [Test] + public void Test_368_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_369 + { + #region PassingTests + [Test] + public void Test_369_01() + { + } + + [Test] + public void Test_369_02() + { + } + + [Test] + public void Test_369_03() + { + } + + [Test] + public void Test_369_04() + { + } + + [Test] + public void Test_369_05() + { + } + + [Test] + public void Test_369_06() + { + } + + [Test] + public void Test_369_07() + { + } + + [Test] + public void Test_369_08() + { + } + + [Test] + public void Test_369_09() + { + } + + [Test] + public void Test_369_10() + { + } + + [Test] + public void Test_369_11() + { + } + + [Test] + public void Test_369_12() + { + } + + [Test] + public void Test_369_13() + { + } + + [Test] + public void Test_369_14() + { + } + + [Test] + public void Test_369_15() + { + } + + [Test] + public void Test_369_16() + { + } + + [Test] + public void Test_369_17() + { + } + + [Test] + public void Test_369_18() + { + } + + [Test] + public void Test_369_19() + { + } + + [Test] + public void Test_369_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_370 + { + #region PassingTests + [Test] + public void Test_370_01() + { + } + + [Test] + public void Test_370_02() + { + } + + [Test] + public void Test_370_03() + { + } + + [Test] + public void Test_370_04() + { + } + + [Test] + public void Test_370_05() + { + } + + [Test] + public void Test_370_06() + { + } + + [Test] + public void Test_370_07() + { + } + + [Test] + public void Test_370_08() + { + } + + [Test] + public void Test_370_09() + { + } + + [Test] + public void Test_370_10() + { + } + + [Test] + public void Test_370_11() + { + } + + [Test] + public void Test_370_12() + { + } + + [Test] + public void Test_370_13() + { + } + + [Test] + public void Test_370_14() + { + } + + [Test] + public void Test_370_15() + { + } + + [Test] + public void Test_370_16() + { + } + + [Test] + public void Test_370_17() + { + } + + [Test] + public void Test_370_18() + { + } + + [Test] + public void Test_370_19() + { + } + + [Test] + public void Test_370_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_371 + { + #region PassingTests + [Test] + public void Test_371_01() + { + } + + [Test] + public void Test_371_02() + { + } + + [Test] + public void Test_371_03() + { + } + + [Test] + public void Test_371_04() + { + } + + [Test] + public void Test_371_05() + { + } + + [Test] + public void Test_371_06() + { + } + + [Test] + public void Test_371_07() + { + } + + [Test] + public void Test_371_08() + { + } + + [Test] + public void Test_371_09() + { + } + + [Test] + public void Test_371_10() + { + } + + [Test] + public void Test_371_11() + { + } + + [Test] + public void Test_371_12() + { + } + + [Test] + public void Test_371_13() + { + } + + [Test] + public void Test_371_14() + { + } + + [Test] + public void Test_371_15() + { + } + + [Test] + public void Test_371_16() + { + } + + [Test] + public void Test_371_17() + { + } + + [Test] + public void Test_371_18() + { + } + + [Test] + public void Test_371_19() + { + } + + [Test] + public void Test_371_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_372 + { + #region PassingTests + [Test] + public void Test_372_01() + { + } + + [Test] + public void Test_372_02() + { + } + + [Test] + public void Test_372_03() + { + } + + [Test] + public void Test_372_04() + { + } + + [Test] + public void Test_372_05() + { + } + + [Test] + public void Test_372_06() + { + } + + [Test] + public void Test_372_07() + { + } + + [Test] + public void Test_372_08() + { + } + + [Test] + public void Test_372_09() + { + } + + [Test] + public void Test_372_10() + { + } + + [Test] + public void Test_372_11() + { + } + + [Test] + public void Test_372_12() + { + } + + [Test] + public void Test_372_13() + { + } + + [Test] + public void Test_372_14() + { + } + + [Test] + public void Test_372_15() + { + } + + [Test] + public void Test_372_16() + { + } + + [Test] + public void Test_372_17() + { + } + + [Test] + public void Test_372_18() + { + } + + [Test] + public void Test_372_19() + { + } + + [Test] + public void Test_372_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_373 + { + #region PassingTests + [Test] + public void Test_373_01() + { + } + + [Test] + public void Test_373_02() + { + } + + [Test] + public void Test_373_03() + { + } + + [Test] + public void Test_373_04() + { + } + + [Test] + public void Test_373_05() + { + } + + [Test] + public void Test_373_06() + { + } + + [Test] + public void Test_373_07() + { + } + + [Test] + public void Test_373_08() + { + } + + [Test] + public void Test_373_09() + { + } + + [Test] + public void Test_373_10() + { + } + + [Test] + public void Test_373_11() + { + } + + [Test] + public void Test_373_12() + { + } + + [Test] + public void Test_373_13() + { + } + + [Test] + public void Test_373_14() + { + } + + [Test] + public void Test_373_15() + { + } + + [Test] + public void Test_373_16() + { + } + + [Test] + public void Test_373_17() + { + } + + [Test] + public void Test_373_18() + { + } + + [Test] + public void Test_373_19() + { + } + + [Test] + public void Test_373_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_374 + { + #region PassingTests + [Test] + public void Test_374_01() + { + } + + [Test] + public void Test_374_02() + { + } + + [Test] + public void Test_374_03() + { + } + + [Test] + public void Test_374_04() + { + } + + [Test] + public void Test_374_05() + { + } + + [Test] + public void Test_374_06() + { + } + + [Test] + public void Test_374_07() + { + } + + [Test] + public void Test_374_08() + { + } + + [Test] + public void Test_374_09() + { + } + + [Test] + public void Test_374_10() + { + } + + [Test] + public void Test_374_11() + { + } + + [Test] + public void Test_374_12() + { + } + + [Test] + public void Test_374_13() + { + } + + [Test] + public void Test_374_14() + { + } + + [Test] + public void Test_374_15() + { + } + + [Test] + public void Test_374_16() + { + } + + [Test] + public void Test_374_17() + { + } + + [Test] + public void Test_374_18() + { + } + + [Test] + public void Test_374_19() + { + } + + [Test] + public void Test_374_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_375 + { + #region PassingTests + [Test] + public void Test_375_01() + { + } + + [Test] + public void Test_375_02() + { + } + + [Test] + public void Test_375_03() + { + } + + [Test] + public void Test_375_04() + { + } + + [Test] + public void Test_375_05() + { + } + + [Test] + public void Test_375_06() + { + } + + [Test] + public void Test_375_07() + { + } + + [Test] + public void Test_375_08() + { + } + + [Test] + public void Test_375_09() + { + } + + [Test] + public void Test_375_10() + { + } + + [Test] + public void Test_375_11() + { + } + + [Test] + public void Test_375_12() + { + } + + [Test] + public void Test_375_13() + { + } + + [Test] + public void Test_375_14() + { + } + + [Test] + public void Test_375_15() + { + } + + [Test] + public void Test_375_16() + { + } + + [Test] + public void Test_375_17() + { + } + + [Test] + public void Test_375_18() + { + } + + [Test] + public void Test_375_19() + { + } + + [Test] + public void Test_375_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_376 + { + #region PassingTests + [Test] + public void Test_376_01() + { + } + + [Test] + public void Test_376_02() + { + } + + [Test] + public void Test_376_03() + { + } + + [Test] + public void Test_376_04() + { + } + + [Test] + public void Test_376_05() + { + } + + [Test] + public void Test_376_06() + { + } + + [Test] + public void Test_376_07() + { + } + + [Test] + public void Test_376_08() + { + } + + [Test] + public void Test_376_09() + { + } + + [Test] + public void Test_376_10() + { + } + + [Test] + public void Test_376_11() + { + } + + [Test] + public void Test_376_12() + { + } + + [Test] + public void Test_376_13() + { + } + + [Test] + public void Test_376_14() + { + } + + [Test] + public void Test_376_15() + { + } + + [Test] + public void Test_376_16() + { + } + + [Test] + public void Test_376_17() + { + } + + [Test] + public void Test_376_18() + { + } + + [Test] + public void Test_376_19() + { + } + + [Test] + public void Test_376_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_377 + { + #region PassingTests + [Test] + public void Test_377_01() + { + } + + [Test] + public void Test_377_02() + { + } + + [Test] + public void Test_377_03() + { + } + + [Test] + public void Test_377_04() + { + } + + [Test] + public void Test_377_05() + { + } + + [Test] + public void Test_377_06() + { + } + + [Test] + public void Test_377_07() + { + } + + [Test] + public void Test_377_08() + { + } + + [Test] + public void Test_377_09() + { + } + + [Test] + public void Test_377_10() + { + } + + [Test] + public void Test_377_11() + { + } + + [Test] + public void Test_377_12() + { + } + + [Test] + public void Test_377_13() + { + } + + [Test] + public void Test_377_14() + { + } + + [Test] + public void Test_377_15() + { + } + + [Test] + public void Test_377_16() + { + } + + [Test] + public void Test_377_17() + { + } + + [Test] + public void Test_377_18() + { + } + + [Test] + public void Test_377_19() + { + } + + [Test] + public void Test_377_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_378 + { + #region PassingTests + [Test] + public void Test_378_01() + { + } + + [Test] + public void Test_378_02() + { + } + + [Test] + public void Test_378_03() + { + } + + [Test] + public void Test_378_04() + { + } + + [Test] + public void Test_378_05() + { + } + + [Test] + public void Test_378_06() + { + } + + [Test] + public void Test_378_07() + { + } + + [Test] + public void Test_378_08() + { + } + + [Test] + public void Test_378_09() + { + } + + [Test] + public void Test_378_10() + { + } + + [Test] + public void Test_378_11() + { + } + + [Test] + public void Test_378_12() + { + } + + [Test] + public void Test_378_13() + { + } + + [Test] + public void Test_378_14() + { + } + + [Test] + public void Test_378_15() + { + } + + [Test] + public void Test_378_16() + { + } + + [Test] + public void Test_378_17() + { + } + + [Test] + public void Test_378_18() + { + } + + [Test] + public void Test_378_19() + { + } + + [Test] + public void Test_378_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_379 + { + #region PassingTests + [Test] + public void Test_379_01() + { + } + + [Test] + public void Test_379_02() + { + } + + [Test] + public void Test_379_03() + { + } + + [Test] + public void Test_379_04() + { + } + + [Test] + public void Test_379_05() + { + } + + [Test] + public void Test_379_06() + { + } + + [Test] + public void Test_379_07() + { + } + + [Test] + public void Test_379_08() + { + } + + [Test] + public void Test_379_09() + { + } + + [Test] + public void Test_379_10() + { + } + + [Test] + public void Test_379_11() + { + } + + [Test] + public void Test_379_12() + { + } + + [Test] + public void Test_379_13() + { + } + + [Test] + public void Test_379_14() + { + } + + [Test] + public void Test_379_15() + { + } + + [Test] + public void Test_379_16() + { + } + + [Test] + public void Test_379_17() + { + } + + [Test] + public void Test_379_18() + { + } + + [Test] + public void Test_379_19() + { + } + + [Test] + public void Test_379_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_380 + { + #region PassingTests + [Test] + public void Test_380_01() + { + } + + [Test] + public void Test_380_02() + { + } + + [Test] + public void Test_380_03() + { + } + + [Test] + public void Test_380_04() + { + } + + [Test] + public void Test_380_05() + { + } + + [Test] + public void Test_380_06() + { + } + + [Test] + public void Test_380_07() + { + } + + [Test] + public void Test_380_08() + { + } + + [Test] + public void Test_380_09() + { + } + + [Test] + public void Test_380_10() + { + } + + [Test] + public void Test_380_11() + { + } + + [Test] + public void Test_380_12() + { + } + + [Test] + public void Test_380_13() + { + } + + [Test] + public void Test_380_14() + { + } + + [Test] + public void Test_380_15() + { + } + + [Test] + public void Test_380_16() + { + } + + [Test] + public void Test_380_17() + { + } + + [Test] + public void Test_380_18() + { + } + + [Test] + public void Test_380_19() + { + } + + [Test] + public void Test_380_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_381 + { + #region PassingTests + [Test] + public void Test_381_01() + { + } + + [Test] + public void Test_381_02() + { + } + + [Test] + public void Test_381_03() + { + } + + [Test] + public void Test_381_04() + { + } + + [Test] + public void Test_381_05() + { + } + + [Test] + public void Test_381_06() + { + } + + [Test] + public void Test_381_07() + { + } + + [Test] + public void Test_381_08() + { + } + + [Test] + public void Test_381_09() + { + } + + [Test] + public void Test_381_10() + { + } + + [Test] + public void Test_381_11() + { + } + + [Test] + public void Test_381_12() + { + } + + [Test] + public void Test_381_13() + { + } + + [Test] + public void Test_381_14() + { + } + + [Test] + public void Test_381_15() + { + } + + [Test] + public void Test_381_16() + { + } + + [Test] + public void Test_381_17() + { + } + + [Test] + public void Test_381_18() + { + } + + [Test] + public void Test_381_19() + { + } + + [Test] + public void Test_381_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_382 + { + #region PassingTests + [Test] + public void Test_382_01() + { + } + + [Test] + public void Test_382_02() + { + } + + [Test] + public void Test_382_03() + { + } + + [Test] + public void Test_382_04() + { + } + + [Test] + public void Test_382_05() + { + } + + [Test] + public void Test_382_06() + { + } + + [Test] + public void Test_382_07() + { + } + + [Test] + public void Test_382_08() + { + } + + [Test] + public void Test_382_09() + { + } + + [Test] + public void Test_382_10() + { + } + + [Test] + public void Test_382_11() + { + } + + [Test] + public void Test_382_12() + { + } + + [Test] + public void Test_382_13() + { + } + + [Test] + public void Test_382_14() + { + } + + [Test] + public void Test_382_15() + { + } + + [Test] + public void Test_382_16() + { + } + + [Test] + public void Test_382_17() + { + } + + [Test] + public void Test_382_18() + { + } + + [Test] + public void Test_382_19() + { + } + + [Test] + public void Test_382_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_383 + { + #region PassingTests + [Test] + public void Test_383_01() + { + } + + [Test] + public void Test_383_02() + { + } + + [Test] + public void Test_383_03() + { + } + + [Test] + public void Test_383_04() + { + } + + [Test] + public void Test_383_05() + { + } + + [Test] + public void Test_383_06() + { + } + + [Test] + public void Test_383_07() + { + } + + [Test] + public void Test_383_08() + { + } + + [Test] + public void Test_383_09() + { + } + + [Test] + public void Test_383_10() + { + } + + [Test] + public void Test_383_11() + { + } + + [Test] + public void Test_383_12() + { + } + + [Test] + public void Test_383_13() + { + } + + [Test] + public void Test_383_14() + { + } + + [Test] + public void Test_383_15() + { + } + + [Test] + public void Test_383_16() + { + } + + [Test] + public void Test_383_17() + { + } + + [Test] + public void Test_383_18() + { + } + + [Test] + public void Test_383_19() + { + } + + [Test] + public void Test_383_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_384 + { + #region PassingTests + [Test] + public void Test_384_01() + { + } + + [Test] + public void Test_384_02() + { + } + + [Test] + public void Test_384_03() + { + } + + [Test] + public void Test_384_04() + { + } + + [Test] + public void Test_384_05() + { + } + + [Test] + public void Test_384_06() + { + } + + [Test] + public void Test_384_07() + { + } + + [Test] + public void Test_384_08() + { + } + + [Test] + public void Test_384_09() + { + } + + [Test] + public void Test_384_10() + { + } + + [Test] + public void Test_384_11() + { + } + + [Test] + public void Test_384_12() + { + } + + [Test] + public void Test_384_13() + { + } + + [Test] + public void Test_384_14() + { + } + + [Test] + public void Test_384_15() + { + } + + [Test] + public void Test_384_16() + { + } + + [Test] + public void Test_384_17() + { + } + + [Test] + public void Test_384_18() + { + } + + [Test] + public void Test_384_19() + { + } + + [Test] + public void Test_384_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_385 + { + #region PassingTests + [Test] + public void Test_385_01() + { + } + + [Test] + public void Test_385_02() + { + } + + [Test] + public void Test_385_03() + { + } + + [Test] + public void Test_385_04() + { + } + + [Test] + public void Test_385_05() + { + } + + [Test] + public void Test_385_06() + { + } + + [Test] + public void Test_385_07() + { + } + + [Test] + public void Test_385_08() + { + } + + [Test] + public void Test_385_09() + { + } + + [Test] + public void Test_385_10() + { + } + + [Test] + public void Test_385_11() + { + } + + [Test] + public void Test_385_12() + { + } + + [Test] + public void Test_385_13() + { + } + + [Test] + public void Test_385_14() + { + } + + [Test] + public void Test_385_15() + { + } + + [Test] + public void Test_385_16() + { + } + + [Test] + public void Test_385_17() + { + } + + [Test] + public void Test_385_18() + { + } + + [Test] + public void Test_385_19() + { + } + + [Test] + public void Test_385_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_386 + { + #region PassingTests + [Test] + public void Test_386_01() + { + } + + [Test] + public void Test_386_02() + { + } + + [Test] + public void Test_386_03() + { + } + + [Test] + public void Test_386_04() + { + } + + [Test] + public void Test_386_05() + { + } + + [Test] + public void Test_386_06() + { + } + + [Test] + public void Test_386_07() + { + } + + [Test] + public void Test_386_08() + { + } + + [Test] + public void Test_386_09() + { + } + + [Test] + public void Test_386_10() + { + } + + [Test] + public void Test_386_11() + { + } + + [Test] + public void Test_386_12() + { + } + + [Test] + public void Test_386_13() + { + } + + [Test] + public void Test_386_14() + { + } + + [Test] + public void Test_386_15() + { + } + + [Test] + public void Test_386_16() + { + } + + [Test] + public void Test_386_17() + { + } + + [Test] + public void Test_386_18() + { + } + + [Test] + public void Test_386_19() + { + } + + [Test] + public void Test_386_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_387 + { + #region PassingTests + [Test] + public void Test_387_01() + { + } + + [Test] + public void Test_387_02() + { + } + + [Test] + public void Test_387_03() + { + } + + [Test] + public void Test_387_04() + { + } + + [Test] + public void Test_387_05() + { + } + + [Test] + public void Test_387_06() + { + } + + [Test] + public void Test_387_07() + { + } + + [Test] + public void Test_387_08() + { + } + + [Test] + public void Test_387_09() + { + } + + [Test] + public void Test_387_10() + { + } + + [Test] + public void Test_387_11() + { + } + + [Test] + public void Test_387_12() + { + } + + [Test] + public void Test_387_13() + { + } + + [Test] + public void Test_387_14() + { + } + + [Test] + public void Test_387_15() + { + } + + [Test] + public void Test_387_16() + { + } + + [Test] + public void Test_387_17() + { + } + + [Test] + public void Test_387_18() + { + } + + [Test] + public void Test_387_19() + { + } + + [Test] + public void Test_387_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_388 + { + #region PassingTests + [Test] + public void Test_388_01() + { + } + + [Test] + public void Test_388_02() + { + } + + [Test] + public void Test_388_03() + { + } + + [Test] + public void Test_388_04() + { + } + + [Test] + public void Test_388_05() + { + } + + [Test] + public void Test_388_06() + { + } + + [Test] + public void Test_388_07() + { + } + + [Test] + public void Test_388_08() + { + } + + [Test] + public void Test_388_09() + { + } + + [Test] + public void Test_388_10() + { + } + + [Test] + public void Test_388_11() + { + } + + [Test] + public void Test_388_12() + { + } + + [Test] + public void Test_388_13() + { + } + + [Test] + public void Test_388_14() + { + } + + [Test] + public void Test_388_15() + { + } + + [Test] + public void Test_388_16() + { + } + + [Test] + public void Test_388_17() + { + } + + [Test] + public void Test_388_18() + { + } + + [Test] + public void Test_388_19() + { + } + + [Test] + public void Test_388_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_389 + { + #region PassingTests + [Test] + public void Test_389_01() + { + } + + [Test] + public void Test_389_02() + { + } + + [Test] + public void Test_389_03() + { + } + + [Test] + public void Test_389_04() + { + } + + [Test] + public void Test_389_05() + { + } + + [Test] + public void Test_389_06() + { + } + + [Test] + public void Test_389_07() + { + } + + [Test] + public void Test_389_08() + { + } + + [Test] + public void Test_389_09() + { + } + + [Test] + public void Test_389_10() + { + } + + [Test] + public void Test_389_11() + { + } + + [Test] + public void Test_389_12() + { + } + + [Test] + public void Test_389_13() + { + } + + [Test] + public void Test_389_14() + { + } + + [Test] + public void Test_389_15() + { + } + + [Test] + public void Test_389_16() + { + } + + [Test] + public void Test_389_17() + { + } + + [Test] + public void Test_389_18() + { + } + + [Test] + public void Test_389_19() + { + } + + [Test] + public void Test_389_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_390 + { + #region PassingTests + [Test] + public void Test_390_01() + { + } + + [Test] + public void Test_390_02() + { + } + + [Test] + public void Test_390_03() + { + } + + [Test] + public void Test_390_04() + { + } + + [Test] + public void Test_390_05() + { + } + + [Test] + public void Test_390_06() + { + } + + [Test] + public void Test_390_07() + { + } + + [Test] + public void Test_390_08() + { + } + + [Test] + public void Test_390_09() + { + } + + [Test] + public void Test_390_10() + { + } + + [Test] + public void Test_390_11() + { + } + + [Test] + public void Test_390_12() + { + } + + [Test] + public void Test_390_13() + { + } + + [Test] + public void Test_390_14() + { + } + + [Test] + public void Test_390_15() + { + } + + [Test] + public void Test_390_16() + { + } + + [Test] + public void Test_390_17() + { + } + + [Test] + public void Test_390_18() + { + } + + [Test] + public void Test_390_19() + { + } + + [Test] + public void Test_390_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_391 + { + #region PassingTests + [Test] + public void Test_391_01() + { + } + + [Test] + public void Test_391_02() + { + } + + [Test] + public void Test_391_03() + { + } + + [Test] + public void Test_391_04() + { + } + + [Test] + public void Test_391_05() + { + } + + [Test] + public void Test_391_06() + { + } + + [Test] + public void Test_391_07() + { + } + + [Test] + public void Test_391_08() + { + } + + [Test] + public void Test_391_09() + { + } + + [Test] + public void Test_391_10() + { + } + + [Test] + public void Test_391_11() + { + } + + [Test] + public void Test_391_12() + { + } + + [Test] + public void Test_391_13() + { + } + + [Test] + public void Test_391_14() + { + } + + [Test] + public void Test_391_15() + { + } + + [Test] + public void Test_391_16() + { + } + + [Test] + public void Test_391_17() + { + } + + [Test] + public void Test_391_18() + { + } + + [Test] + public void Test_391_19() + { + } + + [Test] + public void Test_391_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_392 + { + #region PassingTests + [Test] + public void Test_392_01() + { + } + + [Test] + public void Test_392_02() + { + } + + [Test] + public void Test_392_03() + { + } + + [Test] + public void Test_392_04() + { + } + + [Test] + public void Test_392_05() + { + } + + [Test] + public void Test_392_06() + { + } + + [Test] + public void Test_392_07() + { + } + + [Test] + public void Test_392_08() + { + } + + [Test] + public void Test_392_09() + { + } + + [Test] + public void Test_392_10() + { + } + + [Test] + public void Test_392_11() + { + } + + [Test] + public void Test_392_12() + { + } + + [Test] + public void Test_392_13() + { + } + + [Test] + public void Test_392_14() + { + } + + [Test] + public void Test_392_15() + { + } + + [Test] + public void Test_392_16() + { + } + + [Test] + public void Test_392_17() + { + } + + [Test] + public void Test_392_18() + { + } + + [Test] + public void Test_392_19() + { + } + + [Test] + public void Test_392_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_393 + { + #region PassingTests + [Test] + public void Test_393_01() + { + } + + [Test] + public void Test_393_02() + { + } + + [Test] + public void Test_393_03() + { + } + + [Test] + public void Test_393_04() + { + } + + [Test] + public void Test_393_05() + { + } + + [Test] + public void Test_393_06() + { + } + + [Test] + public void Test_393_07() + { + } + + [Test] + public void Test_393_08() + { + } + + [Test] + public void Test_393_09() + { + } + + [Test] + public void Test_393_10() + { + } + + [Test] + public void Test_393_11() + { + } + + [Test] + public void Test_393_12() + { + } + + [Test] + public void Test_393_13() + { + } + + [Test] + public void Test_393_14() + { + } + + [Test] + public void Test_393_15() + { + } + + [Test] + public void Test_393_16() + { + } + + [Test] + public void Test_393_17() + { + } + + [Test] + public void Test_393_18() + { + } + + [Test] + public void Test_393_19() + { + } + + [Test] + public void Test_393_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_394 + { + #region PassingTests + [Test] + public void Test_394_01() + { + } + + [Test] + public void Test_394_02() + { + } + + [Test] + public void Test_394_03() + { + } + + [Test] + public void Test_394_04() + { + } + + [Test] + public void Test_394_05() + { + } + + [Test] + public void Test_394_06() + { + } + + [Test] + public void Test_394_07() + { + } + + [Test] + public void Test_394_08() + { + } + + [Test] + public void Test_394_09() + { + } + + [Test] + public void Test_394_10() + { + } + + [Test] + public void Test_394_11() + { + } + + [Test] + public void Test_394_12() + { + } + + [Test] + public void Test_394_13() + { + } + + [Test] + public void Test_394_14() + { + } + + [Test] + public void Test_394_15() + { + } + + [Test] + public void Test_394_16() + { + } + + [Test] + public void Test_394_17() + { + } + + [Test] + public void Test_394_18() + { + } + + [Test] + public void Test_394_19() + { + } + + [Test] + public void Test_394_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_395 + { + #region PassingTests + [Test] + public void Test_395_01() + { + } + + [Test] + public void Test_395_02() + { + } + + [Test] + public void Test_395_03() + { + } + + [Test] + public void Test_395_04() + { + } + + [Test] + public void Test_395_05() + { + } + + [Test] + public void Test_395_06() + { + } + + [Test] + public void Test_395_07() + { + } + + [Test] + public void Test_395_08() + { + } + + [Test] + public void Test_395_09() + { + } + + [Test] + public void Test_395_10() + { + } + + [Test] + public void Test_395_11() + { + } + + [Test] + public void Test_395_12() + { + } + + [Test] + public void Test_395_13() + { + } + + [Test] + public void Test_395_14() + { + } + + [Test] + public void Test_395_15() + { + } + + [Test] + public void Test_395_16() + { + } + + [Test] + public void Test_395_17() + { + } + + [Test] + public void Test_395_18() + { + } + + [Test] + public void Test_395_19() + { + } + + [Test] + public void Test_395_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_396 + { + #region PassingTests + [Test] + public void Test_396_01() + { + } + + [Test] + public void Test_396_02() + { + } + + [Test] + public void Test_396_03() + { + } + + [Test] + public void Test_396_04() + { + } + + [Test] + public void Test_396_05() + { + } + + [Test] + public void Test_396_06() + { + } + + [Test] + public void Test_396_07() + { + } + + [Test] + public void Test_396_08() + { + } + + [Test] + public void Test_396_09() + { + } + + [Test] + public void Test_396_10() + { + } + + [Test] + public void Test_396_11() + { + } + + [Test] + public void Test_396_12() + { + } + + [Test] + public void Test_396_13() + { + } + + [Test] + public void Test_396_14() + { + } + + [Test] + public void Test_396_15() + { + } + + [Test] + public void Test_396_16() + { + } + + [Test] + public void Test_396_17() + { + } + + [Test] + public void Test_396_18() + { + } + + [Test] + public void Test_396_19() + { + } + + [Test] + public void Test_396_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_397 + { + #region PassingTests + [Test] + public void Test_397_01() + { + } + + [Test] + public void Test_397_02() + { + } + + [Test] + public void Test_397_03() + { + } + + [Test] + public void Test_397_04() + { + } + + [Test] + public void Test_397_05() + { + } + + [Test] + public void Test_397_06() + { + } + + [Test] + public void Test_397_07() + { + } + + [Test] + public void Test_397_08() + { + } + + [Test] + public void Test_397_09() + { + } + + [Test] + public void Test_397_10() + { + } + + [Test] + public void Test_397_11() + { + } + + [Test] + public void Test_397_12() + { + } + + [Test] + public void Test_397_13() + { + } + + [Test] + public void Test_397_14() + { + } + + [Test] + public void Test_397_15() + { + } + + [Test] + public void Test_397_16() + { + } + + [Test] + public void Test_397_17() + { + } + + [Test] + public void Test_397_18() + { + } + + [Test] + public void Test_397_19() + { + } + + [Test] + public void Test_397_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_398 + { + #region PassingTests + [Test] + public void Test_398_01() + { + } + + [Test] + public void Test_398_02() + { + } + + [Test] + public void Test_398_03() + { + } + + [Test] + public void Test_398_04() + { + } + + [Test] + public void Test_398_05() + { + } + + [Test] + public void Test_398_06() + { + } + + [Test] + public void Test_398_07() + { + } + + [Test] + public void Test_398_08() + { + } + + [Test] + public void Test_398_09() + { + } + + [Test] + public void Test_398_10() + { + } + + [Test] + public void Test_398_11() + { + } + + [Test] + public void Test_398_12() + { + } + + [Test] + public void Test_398_13() + { + } + + [Test] + public void Test_398_14() + { + } + + [Test] + public void Test_398_15() + { + } + + [Test] + public void Test_398_16() + { + } + + [Test] + public void Test_398_17() + { + } + + [Test] + public void Test_398_18() + { + } + + [Test] + public void Test_398_19() + { + } + + [Test] + public void Test_398_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_399 + { + #region PassingTests + [Test] + public void Test_399_01() + { + } + + [Test] + public void Test_399_02() + { + } + + [Test] + public void Test_399_03() + { + } + + [Test] + public void Test_399_04() + { + } + + [Test] + public void Test_399_05() + { + } + + [Test] + public void Test_399_06() + { + } + + [Test] + public void Test_399_07() + { + } + + [Test] + public void Test_399_08() + { + } + + [Test] + public void Test_399_09() + { + } + + [Test] + public void Test_399_10() + { + } + + [Test] + public void Test_399_11() + { + } + + [Test] + public void Test_399_12() + { + } + + [Test] + public void Test_399_13() + { + } + + [Test] + public void Test_399_14() + { + } + + [Test] + public void Test_399_15() + { + } + + [Test] + public void Test_399_16() + { + } + + [Test] + public void Test_399_17() + { + } + + [Test] + public void Test_399_18() + { + } + + [Test] + public void Test_399_19() + { + } + + [Test] + public void Test_399_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_400 + { + #region PassingTests + [Test] + public void Test_400_01() + { + } + + [Test] + public void Test_400_02() + { + } + + [Test] + public void Test_400_03() + { + } + + [Test] + public void Test_400_04() + { + } + + [Test] + public void Test_400_05() + { + } + + [Test] + public void Test_400_06() + { + } + + [Test] + public void Test_400_07() + { + } + + [Test] + public void Test_400_08() + { + } + + [Test] + public void Test_400_09() + { + } + + [Test] + public void Test_400_10() + { + } + + [Test] + public void Test_400_11() + { + } + + [Test] + public void Test_400_12() + { + } + + [Test] + public void Test_400_13() + { + } + + [Test] + public void Test_400_14() + { + } + + [Test] + public void Test_400_15() + { + } + + [Test] + public void Test_400_16() + { + } + + [Test] + public void Test_400_17() + { + } + + [Test] + public void Test_400_18() + { + } + + [Test] + public void Test_400_19() + { + } + + [Test] + public void Test_400_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_401 + { + #region PassingTests + [Test] + public void Test_401_01() + { + } + + [Test] + public void Test_401_02() + { + } + + [Test] + public void Test_401_03() + { + } + + [Test] + public void Test_401_04() + { + } + + [Test] + public void Test_401_05() + { + } + + [Test] + public void Test_401_06() + { + } + + [Test] + public void Test_401_07() + { + } + + [Test] + public void Test_401_08() + { + } + + [Test] + public void Test_401_09() + { + } + + [Test] + public void Test_401_10() + { + } + + [Test] + public void Test_401_11() + { + } + + [Test] + public void Test_401_12() + { + } + + [Test] + public void Test_401_13() + { + } + + [Test] + public void Test_401_14() + { + } + + [Test] + public void Test_401_15() + { + } + + [Test] + public void Test_401_16() + { + } + + [Test] + public void Test_401_17() + { + } + + [Test] + public void Test_401_18() + { + } + + [Test] + public void Test_401_19() + { + } + + [Test] + public void Test_401_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_402 + { + #region PassingTests + [Test] + public void Test_402_01() + { + } + + [Test] + public void Test_402_02() + { + } + + [Test] + public void Test_402_03() + { + } + + [Test] + public void Test_402_04() + { + } + + [Test] + public void Test_402_05() + { + } + + [Test] + public void Test_402_06() + { + } + + [Test] + public void Test_402_07() + { + } + + [Test] + public void Test_402_08() + { + } + + [Test] + public void Test_402_09() + { + } + + [Test] + public void Test_402_10() + { + } + + [Test] + public void Test_402_11() + { + } + + [Test] + public void Test_402_12() + { + } + + [Test] + public void Test_402_13() + { + } + + [Test] + public void Test_402_14() + { + } + + [Test] + public void Test_402_15() + { + } + + [Test] + public void Test_402_16() + { + } + + [Test] + public void Test_402_17() + { + } + + [Test] + public void Test_402_18() + { + } + + [Test] + public void Test_402_19() + { + } + + [Test] + public void Test_402_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_403 + { + #region PassingTests + [Test] + public void Test_403_01() + { + } + + [Test] + public void Test_403_02() + { + } + + [Test] + public void Test_403_03() + { + } + + [Test] + public void Test_403_04() + { + } + + [Test] + public void Test_403_05() + { + } + + [Test] + public void Test_403_06() + { + } + + [Test] + public void Test_403_07() + { + } + + [Test] + public void Test_403_08() + { + } + + [Test] + public void Test_403_09() + { + } + + [Test] + public void Test_403_10() + { + } + + [Test] + public void Test_403_11() + { + } + + [Test] + public void Test_403_12() + { + } + + [Test] + public void Test_403_13() + { + } + + [Test] + public void Test_403_14() + { + } + + [Test] + public void Test_403_15() + { + } + + [Test] + public void Test_403_16() + { + } + + [Test] + public void Test_403_17() + { + } + + [Test] + public void Test_403_18() + { + } + + [Test] + public void Test_403_19() + { + } + + [Test] + public void Test_403_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_404 + { + #region PassingTests + [Test] + public void Test_404_01() + { + } + + [Test] + public void Test_404_02() + { + } + + [Test] + public void Test_404_03() + { + } + + [Test] + public void Test_404_04() + { + } + + [Test] + public void Test_404_05() + { + } + + [Test] + public void Test_404_06() + { + } + + [Test] + public void Test_404_07() + { + } + + [Test] + public void Test_404_08() + { + } + + [Test] + public void Test_404_09() + { + } + + [Test] + public void Test_404_10() + { + } + + [Test] + public void Test_404_11() + { + } + + [Test] + public void Test_404_12() + { + } + + [Test] + public void Test_404_13() + { + } + + [Test] + public void Test_404_14() + { + } + + [Test] + public void Test_404_15() + { + } + + [Test] + public void Test_404_16() + { + } + + [Test] + public void Test_404_17() + { + } + + [Test] + public void Test_404_18() + { + } + + [Test] + public void Test_404_19() + { + } + + [Test] + public void Test_404_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_405 + { + #region PassingTests + [Test] + public void Test_405_01() + { + } + + [Test] + public void Test_405_02() + { + } + + [Test] + public void Test_405_03() + { + } + + [Test] + public void Test_405_04() + { + } + + [Test] + public void Test_405_05() + { + } + + [Test] + public void Test_405_06() + { + } + + [Test] + public void Test_405_07() + { + } + + [Test] + public void Test_405_08() + { + } + + [Test] + public void Test_405_09() + { + } + + [Test] + public void Test_405_10() + { + } + + [Test] + public void Test_405_11() + { + } + + [Test] + public void Test_405_12() + { + } + + [Test] + public void Test_405_13() + { + } + + [Test] + public void Test_405_14() + { + } + + [Test] + public void Test_405_15() + { + } + + [Test] + public void Test_405_16() + { + } + + [Test] + public void Test_405_17() + { + } + + [Test] + public void Test_405_18() + { + } + + [Test] + public void Test_405_19() + { + } + + [Test] + public void Test_405_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_406 + { + #region PassingTests + [Test] + public void Test_406_01() + { + } + + [Test] + public void Test_406_02() + { + } + + [Test] + public void Test_406_03() + { + } + + [Test] + public void Test_406_04() + { + } + + [Test] + public void Test_406_05() + { + } + + [Test] + public void Test_406_06() + { + } + + [Test] + public void Test_406_07() + { + } + + [Test] + public void Test_406_08() + { + } + + [Test] + public void Test_406_09() + { + } + + [Test] + public void Test_406_10() + { + } + + [Test] + public void Test_406_11() + { + } + + [Test] + public void Test_406_12() + { + } + + [Test] + public void Test_406_13() + { + } + + [Test] + public void Test_406_14() + { + } + + [Test] + public void Test_406_15() + { + } + + [Test] + public void Test_406_16() + { + } + + [Test] + public void Test_406_17() + { + } + + [Test] + public void Test_406_18() + { + } + + [Test] + public void Test_406_19() + { + } + + [Test] + public void Test_406_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_407 + { + #region PassingTests + [Test] + public void Test_407_01() + { + } + + [Test] + public void Test_407_02() + { + } + + [Test] + public void Test_407_03() + { + } + + [Test] + public void Test_407_04() + { + } + + [Test] + public void Test_407_05() + { + } + + [Test] + public void Test_407_06() + { + } + + [Test] + public void Test_407_07() + { + } + + [Test] + public void Test_407_08() + { + } + + [Test] + public void Test_407_09() + { + } + + [Test] + public void Test_407_10() + { + } + + [Test] + public void Test_407_11() + { + } + + [Test] + public void Test_407_12() + { + } + + [Test] + public void Test_407_13() + { + } + + [Test] + public void Test_407_14() + { + } + + [Test] + public void Test_407_15() + { + } + + [Test] + public void Test_407_16() + { + } + + [Test] + public void Test_407_17() + { + } + + [Test] + public void Test_407_18() + { + } + + [Test] + public void Test_407_19() + { + } + + [Test] + public void Test_407_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_408 + { + #region PassingTests + [Test] + public void Test_408_01() + { + } + + [Test] + public void Test_408_02() + { + } + + [Test] + public void Test_408_03() + { + } + + [Test] + public void Test_408_04() + { + } + + [Test] + public void Test_408_05() + { + } + + [Test] + public void Test_408_06() + { + } + + [Test] + public void Test_408_07() + { + } + + [Test] + public void Test_408_08() + { + } + + [Test] + public void Test_408_09() + { + } + + [Test] + public void Test_408_10() + { + } + + [Test] + public void Test_408_11() + { + } + + [Test] + public void Test_408_12() + { + } + + [Test] + public void Test_408_13() + { + } + + [Test] + public void Test_408_14() + { + } + + [Test] + public void Test_408_15() + { + } + + [Test] + public void Test_408_16() + { + } + + [Test] + public void Test_408_17() + { + } + + [Test] + public void Test_408_18() + { + } + + [Test] + public void Test_408_19() + { + } + + [Test] + public void Test_408_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_409 + { + #region PassingTests + [Test] + public void Test_409_01() + { + } + + [Test] + public void Test_409_02() + { + } + + [Test] + public void Test_409_03() + { + } + + [Test] + public void Test_409_04() + { + } + + [Test] + public void Test_409_05() + { + } + + [Test] + public void Test_409_06() + { + } + + [Test] + public void Test_409_07() + { + } + + [Test] + public void Test_409_08() + { + } + + [Test] + public void Test_409_09() + { + } + + [Test] + public void Test_409_10() + { + } + + [Test] + public void Test_409_11() + { + } + + [Test] + public void Test_409_12() + { + } + + [Test] + public void Test_409_13() + { + } + + [Test] + public void Test_409_14() + { + } + + [Test] + public void Test_409_15() + { + } + + [Test] + public void Test_409_16() + { + } + + [Test] + public void Test_409_17() + { + } + + [Test] + public void Test_409_18() + { + } + + [Test] + public void Test_409_19() + { + } + + [Test] + public void Test_409_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_410 + { + #region PassingTests + [Test] + public void Test_410_01() + { + } + + [Test] + public void Test_410_02() + { + } + + [Test] + public void Test_410_03() + { + } + + [Test] + public void Test_410_04() + { + } + + [Test] + public void Test_410_05() + { + } + + [Test] + public void Test_410_06() + { + } + + [Test] + public void Test_410_07() + { + } + + [Test] + public void Test_410_08() + { + } + + [Test] + public void Test_410_09() + { + } + + [Test] + public void Test_410_10() + { + } + + [Test] + public void Test_410_11() + { + } + + [Test] + public void Test_410_12() + { + } + + [Test] + public void Test_410_13() + { + } + + [Test] + public void Test_410_14() + { + } + + [Test] + public void Test_410_15() + { + } + + [Test] + public void Test_410_16() + { + } + + [Test] + public void Test_410_17() + { + } + + [Test] + public void Test_410_18() + { + } + + [Test] + public void Test_410_19() + { + } + + [Test] + public void Test_410_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_411 + { + #region PassingTests + [Test] + public void Test_411_01() + { + } + + [Test] + public void Test_411_02() + { + } + + [Test] + public void Test_411_03() + { + } + + [Test] + public void Test_411_04() + { + } + + [Test] + public void Test_411_05() + { + } + + [Test] + public void Test_411_06() + { + } + + [Test] + public void Test_411_07() + { + } + + [Test] + public void Test_411_08() + { + } + + [Test] + public void Test_411_09() + { + } + + [Test] + public void Test_411_10() + { + } + + [Test] + public void Test_411_11() + { + } + + [Test] + public void Test_411_12() + { + } + + [Test] + public void Test_411_13() + { + } + + [Test] + public void Test_411_14() + { + } + + [Test] + public void Test_411_15() + { + } + + [Test] + public void Test_411_16() + { + } + + [Test] + public void Test_411_17() + { + } + + [Test] + public void Test_411_18() + { + } + + [Test] + public void Test_411_19() + { + } + + [Test] + public void Test_411_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_412 + { + #region PassingTests + [Test] + public void Test_412_01() + { + } + + [Test] + public void Test_412_02() + { + } + + [Test] + public void Test_412_03() + { + } + + [Test] + public void Test_412_04() + { + } + + [Test] + public void Test_412_05() + { + } + + [Test] + public void Test_412_06() + { + } + + [Test] + public void Test_412_07() + { + } + + [Test] + public void Test_412_08() + { + } + + [Test] + public void Test_412_09() + { + } + + [Test] + public void Test_412_10() + { + } + + [Test] + public void Test_412_11() + { + } + + [Test] + public void Test_412_12() + { + } + + [Test] + public void Test_412_13() + { + } + + [Test] + public void Test_412_14() + { + } + + [Test] + public void Test_412_15() + { + } + + [Test] + public void Test_412_16() + { + } + + [Test] + public void Test_412_17() + { + } + + [Test] + public void Test_412_18() + { + } + + [Test] + public void Test_412_19() + { + } + + [Test] + public void Test_412_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_413 + { + #region PassingTests + [Test] + public void Test_413_01() + { + } + + [Test] + public void Test_413_02() + { + } + + [Test] + public void Test_413_03() + { + } + + [Test] + public void Test_413_04() + { + } + + [Test] + public void Test_413_05() + { + } + + [Test] + public void Test_413_06() + { + } + + [Test] + public void Test_413_07() + { + } + + [Test] + public void Test_413_08() + { + } + + [Test] + public void Test_413_09() + { + } + + [Test] + public void Test_413_10() + { + } + + [Test] + public void Test_413_11() + { + } + + [Test] + public void Test_413_12() + { + } + + [Test] + public void Test_413_13() + { + } + + [Test] + public void Test_413_14() + { + } + + [Test] + public void Test_413_15() + { + } + + [Test] + public void Test_413_16() + { + } + + [Test] + public void Test_413_17() + { + } + + [Test] + public void Test_413_18() + { + } + + [Test] + public void Test_413_19() + { + } + + [Test] + public void Test_413_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_414 + { + #region PassingTests + [Test] + public void Test_414_01() + { + } + + [Test] + public void Test_414_02() + { + } + + [Test] + public void Test_414_03() + { + } + + [Test] + public void Test_414_04() + { + } + + [Test] + public void Test_414_05() + { + } + + [Test] + public void Test_414_06() + { + } + + [Test] + public void Test_414_07() + { + } + + [Test] + public void Test_414_08() + { + } + + [Test] + public void Test_414_09() + { + } + + [Test] + public void Test_414_10() + { + } + + [Test] + public void Test_414_11() + { + } + + [Test] + public void Test_414_12() + { + } + + [Test] + public void Test_414_13() + { + } + + [Test] + public void Test_414_14() + { + } + + [Test] + public void Test_414_15() + { + } + + [Test] + public void Test_414_16() + { + } + + [Test] + public void Test_414_17() + { + } + + [Test] + public void Test_414_18() + { + } + + [Test] + public void Test_414_19() + { + } + + [Test] + public void Test_414_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_415 + { + #region PassingTests + [Test] + public void Test_415_01() + { + } + + [Test] + public void Test_415_02() + { + } + + [Test] + public void Test_415_03() + { + } + + [Test] + public void Test_415_04() + { + } + + [Test] + public void Test_415_05() + { + } + + [Test] + public void Test_415_06() + { + } + + [Test] + public void Test_415_07() + { + } + + [Test] + public void Test_415_08() + { + } + + [Test] + public void Test_415_09() + { + } + + [Test] + public void Test_415_10() + { + } + + [Test] + public void Test_415_11() + { + } + + [Test] + public void Test_415_12() + { + } + + [Test] + public void Test_415_13() + { + } + + [Test] + public void Test_415_14() + { + } + + [Test] + public void Test_415_15() + { + } + + [Test] + public void Test_415_16() + { + } + + [Test] + public void Test_415_17() + { + } + + [Test] + public void Test_415_18() + { + } + + [Test] + public void Test_415_19() + { + } + + [Test] + public void Test_415_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_416 + { + #region PassingTests + [Test] + public void Test_416_01() + { + } + + [Test] + public void Test_416_02() + { + } + + [Test] + public void Test_416_03() + { + } + + [Test] + public void Test_416_04() + { + } + + [Test] + public void Test_416_05() + { + } + + [Test] + public void Test_416_06() + { + } + + [Test] + public void Test_416_07() + { + } + + [Test] + public void Test_416_08() + { + } + + [Test] + public void Test_416_09() + { + } + + [Test] + public void Test_416_10() + { + } + + [Test] + public void Test_416_11() + { + } + + [Test] + public void Test_416_12() + { + } + + [Test] + public void Test_416_13() + { + } + + [Test] + public void Test_416_14() + { + } + + [Test] + public void Test_416_15() + { + } + + [Test] + public void Test_416_16() + { + } + + [Test] + public void Test_416_17() + { + } + + [Test] + public void Test_416_18() + { + } + + [Test] + public void Test_416_19() + { + } + + [Test] + public void Test_416_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_417 + { + #region PassingTests + [Test] + public void Test_417_01() + { + } + + [Test] + public void Test_417_02() + { + } + + [Test] + public void Test_417_03() + { + } + + [Test] + public void Test_417_04() + { + } + + [Test] + public void Test_417_05() + { + } + + [Test] + public void Test_417_06() + { + } + + [Test] + public void Test_417_07() + { + } + + [Test] + public void Test_417_08() + { + } + + [Test] + public void Test_417_09() + { + } + + [Test] + public void Test_417_10() + { + } + + [Test] + public void Test_417_11() + { + } + + [Test] + public void Test_417_12() + { + } + + [Test] + public void Test_417_13() + { + } + + [Test] + public void Test_417_14() + { + } + + [Test] + public void Test_417_15() + { + } + + [Test] + public void Test_417_16() + { + } + + [Test] + public void Test_417_17() + { + } + + [Test] + public void Test_417_18() + { + } + + [Test] + public void Test_417_19() + { + } + + [Test] + public void Test_417_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_418 + { + #region PassingTests + [Test] + public void Test_418_01() + { + } + + [Test] + public void Test_418_02() + { + } + + [Test] + public void Test_418_03() + { + } + + [Test] + public void Test_418_04() + { + } + + [Test] + public void Test_418_05() + { + } + + [Test] + public void Test_418_06() + { + } + + [Test] + public void Test_418_07() + { + } + + [Test] + public void Test_418_08() + { + } + + [Test] + public void Test_418_09() + { + } + + [Test] + public void Test_418_10() + { + } + + [Test] + public void Test_418_11() + { + } + + [Test] + public void Test_418_12() + { + } + + [Test] + public void Test_418_13() + { + } + + [Test] + public void Test_418_14() + { + } + + [Test] + public void Test_418_15() + { + } + + [Test] + public void Test_418_16() + { + } + + [Test] + public void Test_418_17() + { + } + + [Test] + public void Test_418_18() + { + } + + [Test] + public void Test_418_19() + { + } + + [Test] + public void Test_418_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_419 + { + #region PassingTests + [Test] + public void Test_419_01() + { + } + + [Test] + public void Test_419_02() + { + } + + [Test] + public void Test_419_03() + { + } + + [Test] + public void Test_419_04() + { + } + + [Test] + public void Test_419_05() + { + } + + [Test] + public void Test_419_06() + { + } + + [Test] + public void Test_419_07() + { + } + + [Test] + public void Test_419_08() + { + } + + [Test] + public void Test_419_09() + { + } + + [Test] + public void Test_419_10() + { + } + + [Test] + public void Test_419_11() + { + } + + [Test] + public void Test_419_12() + { + } + + [Test] + public void Test_419_13() + { + } + + [Test] + public void Test_419_14() + { + } + + [Test] + public void Test_419_15() + { + } + + [Test] + public void Test_419_16() + { + } + + [Test] + public void Test_419_17() + { + } + + [Test] + public void Test_419_18() + { + } + + [Test] + public void Test_419_19() + { + } + + [Test] + public void Test_419_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_420 + { + #region PassingTests + [Test] + public void Test_420_01() + { + } + + [Test] + public void Test_420_02() + { + } + + [Test] + public void Test_420_03() + { + } + + [Test] + public void Test_420_04() + { + } + + [Test] + public void Test_420_05() + { + } + + [Test] + public void Test_420_06() + { + } + + [Test] + public void Test_420_07() + { + } + + [Test] + public void Test_420_08() + { + } + + [Test] + public void Test_420_09() + { + } + + [Test] + public void Test_420_10() + { + } + + [Test] + public void Test_420_11() + { + } + + [Test] + public void Test_420_12() + { + } + + [Test] + public void Test_420_13() + { + } + + [Test] + public void Test_420_14() + { + } + + [Test] + public void Test_420_15() + { + } + + [Test] + public void Test_420_16() + { + } + + [Test] + public void Test_420_17() + { + } + + [Test] + public void Test_420_18() + { + } + + [Test] + public void Test_420_19() + { + } + + [Test] + public void Test_420_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_421 + { + #region PassingTests + [Test] + public void Test_421_01() + { + } + + [Test] + public void Test_421_02() + { + } + + [Test] + public void Test_421_03() + { + } + + [Test] + public void Test_421_04() + { + } + + [Test] + public void Test_421_05() + { + } + + [Test] + public void Test_421_06() + { + } + + [Test] + public void Test_421_07() + { + } + + [Test] + public void Test_421_08() + { + } + + [Test] + public void Test_421_09() + { + } + + [Test] + public void Test_421_10() + { + } + + [Test] + public void Test_421_11() + { + } + + [Test] + public void Test_421_12() + { + } + + [Test] + public void Test_421_13() + { + } + + [Test] + public void Test_421_14() + { + } + + [Test] + public void Test_421_15() + { + } + + [Test] + public void Test_421_16() + { + } + + [Test] + public void Test_421_17() + { + } + + [Test] + public void Test_421_18() + { + } + + [Test] + public void Test_421_19() + { + } + + [Test] + public void Test_421_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_422 + { + #region PassingTests + [Test] + public void Test_422_01() + { + } + + [Test] + public void Test_422_02() + { + } + + [Test] + public void Test_422_03() + { + } + + [Test] + public void Test_422_04() + { + } + + [Test] + public void Test_422_05() + { + } + + [Test] + public void Test_422_06() + { + } + + [Test] + public void Test_422_07() + { + } + + [Test] + public void Test_422_08() + { + } + + [Test] + public void Test_422_09() + { + } + + [Test] + public void Test_422_10() + { + } + + [Test] + public void Test_422_11() + { + } + + [Test] + public void Test_422_12() + { + } + + [Test] + public void Test_422_13() + { + } + + [Test] + public void Test_422_14() + { + } + + [Test] + public void Test_422_15() + { + } + + [Test] + public void Test_422_16() + { + } + + [Test] + public void Test_422_17() + { + } + + [Test] + public void Test_422_18() + { + } + + [Test] + public void Test_422_19() + { + } + + [Test] + public void Test_422_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_423 + { + #region PassingTests + [Test] + public void Test_423_01() + { + } + + [Test] + public void Test_423_02() + { + } + + [Test] + public void Test_423_03() + { + } + + [Test] + public void Test_423_04() + { + } + + [Test] + public void Test_423_05() + { + } + + [Test] + public void Test_423_06() + { + } + + [Test] + public void Test_423_07() + { + } + + [Test] + public void Test_423_08() + { + } + + [Test] + public void Test_423_09() + { + } + + [Test] + public void Test_423_10() + { + } + + [Test] + public void Test_423_11() + { + } + + [Test] + public void Test_423_12() + { + } + + [Test] + public void Test_423_13() + { + } + + [Test] + public void Test_423_14() + { + } + + [Test] + public void Test_423_15() + { + } + + [Test] + public void Test_423_16() + { + } + + [Test] + public void Test_423_17() + { + } + + [Test] + public void Test_423_18() + { + } + + [Test] + public void Test_423_19() + { + } + + [Test] + public void Test_423_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_424 + { + #region PassingTests + [Test] + public void Test_424_01() + { + } + + [Test] + public void Test_424_02() + { + } + + [Test] + public void Test_424_03() + { + } + + [Test] + public void Test_424_04() + { + } + + [Test] + public void Test_424_05() + { + } + + [Test] + public void Test_424_06() + { + } + + [Test] + public void Test_424_07() + { + } + + [Test] + public void Test_424_08() + { + } + + [Test] + public void Test_424_09() + { + } + + [Test] + public void Test_424_10() + { + } + + [Test] + public void Test_424_11() + { + } + + [Test] + public void Test_424_12() + { + } + + [Test] + public void Test_424_13() + { + } + + [Test] + public void Test_424_14() + { + } + + [Test] + public void Test_424_15() + { + } + + [Test] + public void Test_424_16() + { + } + + [Test] + public void Test_424_17() + { + } + + [Test] + public void Test_424_18() + { + } + + [Test] + public void Test_424_19() + { + } + + [Test] + public void Test_424_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_425 + { + #region PassingTests + [Test] + public void Test_425_01() + { + } + + [Test] + public void Test_425_02() + { + } + + [Test] + public void Test_425_03() + { + } + + [Test] + public void Test_425_04() + { + } + + [Test] + public void Test_425_05() + { + } + + [Test] + public void Test_425_06() + { + } + + [Test] + public void Test_425_07() + { + } + + [Test] + public void Test_425_08() + { + } + + [Test] + public void Test_425_09() + { + } + + [Test] + public void Test_425_10() + { + } + + [Test] + public void Test_425_11() + { + } + + [Test] + public void Test_425_12() + { + } + + [Test] + public void Test_425_13() + { + } + + [Test] + public void Test_425_14() + { + } + + [Test] + public void Test_425_15() + { + } + + [Test] + public void Test_425_16() + { + } + + [Test] + public void Test_425_17() + { + } + + [Test] + public void Test_425_18() + { + } + + [Test] + public void Test_425_19() + { + } + + [Test] + public void Test_425_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_426 + { + #region PassingTests + [Test] + public void Test_426_01() + { + } + + [Test] + public void Test_426_02() + { + } + + [Test] + public void Test_426_03() + { + } + + [Test] + public void Test_426_04() + { + } + + [Test] + public void Test_426_05() + { + } + + [Test] + public void Test_426_06() + { + } + + [Test] + public void Test_426_07() + { + } + + [Test] + public void Test_426_08() + { + } + + [Test] + public void Test_426_09() + { + } + + [Test] + public void Test_426_10() + { + } + + [Test] + public void Test_426_11() + { + } + + [Test] + public void Test_426_12() + { + } + + [Test] + public void Test_426_13() + { + } + + [Test] + public void Test_426_14() + { + } + + [Test] + public void Test_426_15() + { + } + + [Test] + public void Test_426_16() + { + } + + [Test] + public void Test_426_17() + { + } + + [Test] + public void Test_426_18() + { + } + + [Test] + public void Test_426_19() + { + } + + [Test] + public void Test_426_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_427 + { + #region PassingTests + [Test] + public void Test_427_01() + { + } + + [Test] + public void Test_427_02() + { + } + + [Test] + public void Test_427_03() + { + } + + [Test] + public void Test_427_04() + { + } + + [Test] + public void Test_427_05() + { + } + + [Test] + public void Test_427_06() + { + } + + [Test] + public void Test_427_07() + { + } + + [Test] + public void Test_427_08() + { + } + + [Test] + public void Test_427_09() + { + } + + [Test] + public void Test_427_10() + { + } + + [Test] + public void Test_427_11() + { + } + + [Test] + public void Test_427_12() + { + } + + [Test] + public void Test_427_13() + { + } + + [Test] + public void Test_427_14() + { + } + + [Test] + public void Test_427_15() + { + } + + [Test] + public void Test_427_16() + { + } + + [Test] + public void Test_427_17() + { + } + + [Test] + public void Test_427_18() + { + } + + [Test] + public void Test_427_19() + { + } + + [Test] + public void Test_427_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_428 + { + #region PassingTests + [Test] + public void Test_428_01() + { + } + + [Test] + public void Test_428_02() + { + } + + [Test] + public void Test_428_03() + { + } + + [Test] + public void Test_428_04() + { + } + + [Test] + public void Test_428_05() + { + } + + [Test] + public void Test_428_06() + { + } + + [Test] + public void Test_428_07() + { + } + + [Test] + public void Test_428_08() + { + } + + [Test] + public void Test_428_09() + { + } + + [Test] + public void Test_428_10() + { + } + + [Test] + public void Test_428_11() + { + } + + [Test] + public void Test_428_12() + { + } + + [Test] + public void Test_428_13() + { + } + + [Test] + public void Test_428_14() + { + } + + [Test] + public void Test_428_15() + { + } + + [Test] + public void Test_428_16() + { + } + + [Test] + public void Test_428_17() + { + } + + [Test] + public void Test_428_18() + { + } + + [Test] + public void Test_428_19() + { + } + + [Test] + public void Test_428_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_429 + { + #region PassingTests + [Test] + public void Test_429_01() + { + } + + [Test] + public void Test_429_02() + { + } + + [Test] + public void Test_429_03() + { + } + + [Test] + public void Test_429_04() + { + } + + [Test] + public void Test_429_05() + { + } + + [Test] + public void Test_429_06() + { + } + + [Test] + public void Test_429_07() + { + } + + [Test] + public void Test_429_08() + { + } + + [Test] + public void Test_429_09() + { + } + + [Test] + public void Test_429_10() + { + } + + [Test] + public void Test_429_11() + { + } + + [Test] + public void Test_429_12() + { + } + + [Test] + public void Test_429_13() + { + } + + [Test] + public void Test_429_14() + { + } + + [Test] + public void Test_429_15() + { + } + + [Test] + public void Test_429_16() + { + } + + [Test] + public void Test_429_17() + { + } + + [Test] + public void Test_429_18() + { + } + + [Test] + public void Test_429_19() + { + } + + [Test] + public void Test_429_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_430 + { + #region PassingTests + [Test] + public void Test_430_01() + { + } + + [Test] + public void Test_430_02() + { + } + + [Test] + public void Test_430_03() + { + } + + [Test] + public void Test_430_04() + { + } + + [Test] + public void Test_430_05() + { + } + + [Test] + public void Test_430_06() + { + } + + [Test] + public void Test_430_07() + { + } + + [Test] + public void Test_430_08() + { + } + + [Test] + public void Test_430_09() + { + } + + [Test] + public void Test_430_10() + { + } + + [Test] + public void Test_430_11() + { + } + + [Test] + public void Test_430_12() + { + } + + [Test] + public void Test_430_13() + { + } + + [Test] + public void Test_430_14() + { + } + + [Test] + public void Test_430_15() + { + } + + [Test] + public void Test_430_16() + { + } + + [Test] + public void Test_430_17() + { + } + + [Test] + public void Test_430_18() + { + } + + [Test] + public void Test_430_19() + { + } + + [Test] + public void Test_430_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_431 + { + #region PassingTests + [Test] + public void Test_431_01() + { + } + + [Test] + public void Test_431_02() + { + } + + [Test] + public void Test_431_03() + { + } + + [Test] + public void Test_431_04() + { + } + + [Test] + public void Test_431_05() + { + } + + [Test] + public void Test_431_06() + { + } + + [Test] + public void Test_431_07() + { + } + + [Test] + public void Test_431_08() + { + } + + [Test] + public void Test_431_09() + { + } + + [Test] + public void Test_431_10() + { + } + + [Test] + public void Test_431_11() + { + } + + [Test] + public void Test_431_12() + { + } + + [Test] + public void Test_431_13() + { + } + + [Test] + public void Test_431_14() + { + } + + [Test] + public void Test_431_15() + { + } + + [Test] + public void Test_431_16() + { + } + + [Test] + public void Test_431_17() + { + } + + [Test] + public void Test_431_18() + { + } + + [Test] + public void Test_431_19() + { + } + + [Test] + public void Test_431_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_432 + { + #region PassingTests + [Test] + public void Test_432_01() + { + } + + [Test] + public void Test_432_02() + { + } + + [Test] + public void Test_432_03() + { + } + + [Test] + public void Test_432_04() + { + } + + [Test] + public void Test_432_05() + { + } + + [Test] + public void Test_432_06() + { + } + + [Test] + public void Test_432_07() + { + } + + [Test] + public void Test_432_08() + { + } + + [Test] + public void Test_432_09() + { + } + + [Test] + public void Test_432_10() + { + } + + [Test] + public void Test_432_11() + { + } + + [Test] + public void Test_432_12() + { + } + + [Test] + public void Test_432_13() + { + } + + [Test] + public void Test_432_14() + { + } + + [Test] + public void Test_432_15() + { + } + + [Test] + public void Test_432_16() + { + } + + [Test] + public void Test_432_17() + { + } + + [Test] + public void Test_432_18() + { + } + + [Test] + public void Test_432_19() + { + } + + [Test] + public void Test_432_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_433 + { + #region PassingTests + [Test] + public void Test_433_01() + { + } + + [Test] + public void Test_433_02() + { + } + + [Test] + public void Test_433_03() + { + } + + [Test] + public void Test_433_04() + { + } + + [Test] + public void Test_433_05() + { + } + + [Test] + public void Test_433_06() + { + } + + [Test] + public void Test_433_07() + { + } + + [Test] + public void Test_433_08() + { + } + + [Test] + public void Test_433_09() + { + } + + [Test] + public void Test_433_10() + { + } + + [Test] + public void Test_433_11() + { + } + + [Test] + public void Test_433_12() + { + } + + [Test] + public void Test_433_13() + { + } + + [Test] + public void Test_433_14() + { + } + + [Test] + public void Test_433_15() + { + } + + [Test] + public void Test_433_16() + { + } + + [Test] + public void Test_433_17() + { + } + + [Test] + public void Test_433_18() + { + } + + [Test] + public void Test_433_19() + { + } + + [Test] + public void Test_433_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_434 + { + #region PassingTests + [Test] + public void Test_434_01() + { + } + + [Test] + public void Test_434_02() + { + } + + [Test] + public void Test_434_03() + { + } + + [Test] + public void Test_434_04() + { + } + + [Test] + public void Test_434_05() + { + } + + [Test] + public void Test_434_06() + { + } + + [Test] + public void Test_434_07() + { + } + + [Test] + public void Test_434_08() + { + } + + [Test] + public void Test_434_09() + { + } + + [Test] + public void Test_434_10() + { + } + + [Test] + public void Test_434_11() + { + } + + [Test] + public void Test_434_12() + { + } + + [Test] + public void Test_434_13() + { + } + + [Test] + public void Test_434_14() + { + } + + [Test] + public void Test_434_15() + { + } + + [Test] + public void Test_434_16() + { + } + + [Test] + public void Test_434_17() + { + } + + [Test] + public void Test_434_18() + { + } + + [Test] + public void Test_434_19() + { + } + + [Test] + public void Test_434_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_435 + { + #region PassingTests + [Test] + public void Test_435_01() + { + } + + [Test] + public void Test_435_02() + { + } + + [Test] + public void Test_435_03() + { + } + + [Test] + public void Test_435_04() + { + } + + [Test] + public void Test_435_05() + { + } + + [Test] + public void Test_435_06() + { + } + + [Test] + public void Test_435_07() + { + } + + [Test] + public void Test_435_08() + { + } + + [Test] + public void Test_435_09() + { + } + + [Test] + public void Test_435_10() + { + } + + [Test] + public void Test_435_11() + { + } + + [Test] + public void Test_435_12() + { + } + + [Test] + public void Test_435_13() + { + } + + [Test] + public void Test_435_14() + { + } + + [Test] + public void Test_435_15() + { + } + + [Test] + public void Test_435_16() + { + } + + [Test] + public void Test_435_17() + { + } + + [Test] + public void Test_435_18() + { + } + + [Test] + public void Test_435_19() + { + } + + [Test] + public void Test_435_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_436 + { + #region PassingTests + [Test] + public void Test_436_01() + { + } + + [Test] + public void Test_436_02() + { + } + + [Test] + public void Test_436_03() + { + } + + [Test] + public void Test_436_04() + { + } + + [Test] + public void Test_436_05() + { + } + + [Test] + public void Test_436_06() + { + } + + [Test] + public void Test_436_07() + { + } + + [Test] + public void Test_436_08() + { + } + + [Test] + public void Test_436_09() + { + } + + [Test] + public void Test_436_10() + { + } + + [Test] + public void Test_436_11() + { + } + + [Test] + public void Test_436_12() + { + } + + [Test] + public void Test_436_13() + { + } + + [Test] + public void Test_436_14() + { + } + + [Test] + public void Test_436_15() + { + } + + [Test] + public void Test_436_16() + { + } + + [Test] + public void Test_436_17() + { + } + + [Test] + public void Test_436_18() + { + } + + [Test] + public void Test_436_19() + { + } + + [Test] + public void Test_436_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_437 + { + #region PassingTests + [Test] + public void Test_437_01() + { + } + + [Test] + public void Test_437_02() + { + } + + [Test] + public void Test_437_03() + { + } + + [Test] + public void Test_437_04() + { + } + + [Test] + public void Test_437_05() + { + } + + [Test] + public void Test_437_06() + { + } + + [Test] + public void Test_437_07() + { + } + + [Test] + public void Test_437_08() + { + } + + [Test] + public void Test_437_09() + { + } + + [Test] + public void Test_437_10() + { + } + + [Test] + public void Test_437_11() + { + } + + [Test] + public void Test_437_12() + { + } + + [Test] + public void Test_437_13() + { + } + + [Test] + public void Test_437_14() + { + } + + [Test] + public void Test_437_15() + { + } + + [Test] + public void Test_437_16() + { + } + + [Test] + public void Test_437_17() + { + } + + [Test] + public void Test_437_18() + { + } + + [Test] + public void Test_437_19() + { + } + + [Test] + public void Test_437_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_438 + { + #region PassingTests + [Test] + public void Test_438_01() + { + } + + [Test] + public void Test_438_02() + { + } + + [Test] + public void Test_438_03() + { + } + + [Test] + public void Test_438_04() + { + } + + [Test] + public void Test_438_05() + { + } + + [Test] + public void Test_438_06() + { + } + + [Test] + public void Test_438_07() + { + } + + [Test] + public void Test_438_08() + { + } + + [Test] + public void Test_438_09() + { + } + + [Test] + public void Test_438_10() + { + } + + [Test] + public void Test_438_11() + { + } + + [Test] + public void Test_438_12() + { + } + + [Test] + public void Test_438_13() + { + } + + [Test] + public void Test_438_14() + { + } + + [Test] + public void Test_438_15() + { + } + + [Test] + public void Test_438_16() + { + } + + [Test] + public void Test_438_17() + { + } + + [Test] + public void Test_438_18() + { + } + + [Test] + public void Test_438_19() + { + } + + [Test] + public void Test_438_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_439 + { + #region PassingTests + [Test] + public void Test_439_01() + { + } + + [Test] + public void Test_439_02() + { + } + + [Test] + public void Test_439_03() + { + } + + [Test] + public void Test_439_04() + { + } + + [Test] + public void Test_439_05() + { + } + + [Test] + public void Test_439_06() + { + } + + [Test] + public void Test_439_07() + { + } + + [Test] + public void Test_439_08() + { + } + + [Test] + public void Test_439_09() + { + } + + [Test] + public void Test_439_10() + { + } + + [Test] + public void Test_439_11() + { + } + + [Test] + public void Test_439_12() + { + } + + [Test] + public void Test_439_13() + { + } + + [Test] + public void Test_439_14() + { + } + + [Test] + public void Test_439_15() + { + } + + [Test] + public void Test_439_16() + { + } + + [Test] + public void Test_439_17() + { + } + + [Test] + public void Test_439_18() + { + } + + [Test] + public void Test_439_19() + { + } + + [Test] + public void Test_439_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_440 + { + #region PassingTests + [Test] + public void Test_440_01() + { + } + + [Test] + public void Test_440_02() + { + } + + [Test] + public void Test_440_03() + { + } + + [Test] + public void Test_440_04() + { + } + + [Test] + public void Test_440_05() + { + } + + [Test] + public void Test_440_06() + { + } + + [Test] + public void Test_440_07() + { + } + + [Test] + public void Test_440_08() + { + } + + [Test] + public void Test_440_09() + { + } + + [Test] + public void Test_440_10() + { + } + + [Test] + public void Test_440_11() + { + } + + [Test] + public void Test_440_12() + { + } + + [Test] + public void Test_440_13() + { + } + + [Test] + public void Test_440_14() + { + } + + [Test] + public void Test_440_15() + { + } + + [Test] + public void Test_440_16() + { + } + + [Test] + public void Test_440_17() + { + } + + [Test] + public void Test_440_18() + { + } + + [Test] + public void Test_440_19() + { + } + + [Test] + public void Test_440_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_441 + { + #region PassingTests + [Test] + public void Test_441_01() + { + } + + [Test] + public void Test_441_02() + { + } + + [Test] + public void Test_441_03() + { + } + + [Test] + public void Test_441_04() + { + } + + [Test] + public void Test_441_05() + { + } + + [Test] + public void Test_441_06() + { + } + + [Test] + public void Test_441_07() + { + } + + [Test] + public void Test_441_08() + { + } + + [Test] + public void Test_441_09() + { + } + + [Test] + public void Test_441_10() + { + } + + [Test] + public void Test_441_11() + { + } + + [Test] + public void Test_441_12() + { + } + + [Test] + public void Test_441_13() + { + } + + [Test] + public void Test_441_14() + { + } + + [Test] + public void Test_441_15() + { + } + + [Test] + public void Test_441_16() + { + } + + [Test] + public void Test_441_17() + { + } + + [Test] + public void Test_441_18() + { + } + + [Test] + public void Test_441_19() + { + } + + [Test] + public void Test_441_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_442 + { + #region PassingTests + [Test] + public void Test_442_01() + { + } + + [Test] + public void Test_442_02() + { + } + + [Test] + public void Test_442_03() + { + } + + [Test] + public void Test_442_04() + { + } + + [Test] + public void Test_442_05() + { + } + + [Test] + public void Test_442_06() + { + } + + [Test] + public void Test_442_07() + { + } + + [Test] + public void Test_442_08() + { + } + + [Test] + public void Test_442_09() + { + } + + [Test] + public void Test_442_10() + { + } + + [Test] + public void Test_442_11() + { + } + + [Test] + public void Test_442_12() + { + } + + [Test] + public void Test_442_13() + { + } + + [Test] + public void Test_442_14() + { + } + + [Test] + public void Test_442_15() + { + } + + [Test] + public void Test_442_16() + { + } + + [Test] + public void Test_442_17() + { + } + + [Test] + public void Test_442_18() + { + } + + [Test] + public void Test_442_19() + { + } + + [Test] + public void Test_442_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_443 + { + #region PassingTests + [Test] + public void Test_443_01() + { + } + + [Test] + public void Test_443_02() + { + } + + [Test] + public void Test_443_03() + { + } + + [Test] + public void Test_443_04() + { + } + + [Test] + public void Test_443_05() + { + } + + [Test] + public void Test_443_06() + { + } + + [Test] + public void Test_443_07() + { + } + + [Test] + public void Test_443_08() + { + } + + [Test] + public void Test_443_09() + { + } + + [Test] + public void Test_443_10() + { + } + + [Test] + public void Test_443_11() + { + } + + [Test] + public void Test_443_12() + { + } + + [Test] + public void Test_443_13() + { + } + + [Test] + public void Test_443_14() + { + } + + [Test] + public void Test_443_15() + { + } + + [Test] + public void Test_443_16() + { + } + + [Test] + public void Test_443_17() + { + } + + [Test] + public void Test_443_18() + { + } + + [Test] + public void Test_443_19() + { + } + + [Test] + public void Test_443_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_444 + { + #region PassingTests + [Test] + public void Test_444_01() + { + } + + [Test] + public void Test_444_02() + { + } + + [Test] + public void Test_444_03() + { + } + + [Test] + public void Test_444_04() + { + } + + [Test] + public void Test_444_05() + { + } + + [Test] + public void Test_444_06() + { + } + + [Test] + public void Test_444_07() + { + } + + [Test] + public void Test_444_08() + { + } + + [Test] + public void Test_444_09() + { + } + + [Test] + public void Test_444_10() + { + } + + [Test] + public void Test_444_11() + { + } + + [Test] + public void Test_444_12() + { + } + + [Test] + public void Test_444_13() + { + } + + [Test] + public void Test_444_14() + { + } + + [Test] + public void Test_444_15() + { + } + + [Test] + public void Test_444_16() + { + } + + [Test] + public void Test_444_17() + { + } + + [Test] + public void Test_444_18() + { + } + + [Test] + public void Test_444_19() + { + } + + [Test] + public void Test_444_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_445 + { + #region PassingTests + [Test] + public void Test_445_01() + { + } + + [Test] + public void Test_445_02() + { + } + + [Test] + public void Test_445_03() + { + } + + [Test] + public void Test_445_04() + { + } + + [Test] + public void Test_445_05() + { + } + + [Test] + public void Test_445_06() + { + } + + [Test] + public void Test_445_07() + { + } + + [Test] + public void Test_445_08() + { + } + + [Test] + public void Test_445_09() + { + } + + [Test] + public void Test_445_10() + { + } + + [Test] + public void Test_445_11() + { + } + + [Test] + public void Test_445_12() + { + } + + [Test] + public void Test_445_13() + { + } + + [Test] + public void Test_445_14() + { + } + + [Test] + public void Test_445_15() + { + } + + [Test] + public void Test_445_16() + { + } + + [Test] + public void Test_445_17() + { + } + + [Test] + public void Test_445_18() + { + } + + [Test] + public void Test_445_19() + { + } + + [Test] + public void Test_445_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_446 + { + #region PassingTests + [Test] + public void Test_446_01() + { + } + + [Test] + public void Test_446_02() + { + } + + [Test] + public void Test_446_03() + { + } + + [Test] + public void Test_446_04() + { + } + + [Test] + public void Test_446_05() + { + } + + [Test] + public void Test_446_06() + { + } + + [Test] + public void Test_446_07() + { + } + + [Test] + public void Test_446_08() + { + } + + [Test] + public void Test_446_09() + { + } + + [Test] + public void Test_446_10() + { + } + + [Test] + public void Test_446_11() + { + } + + [Test] + public void Test_446_12() + { + } + + [Test] + public void Test_446_13() + { + } + + [Test] + public void Test_446_14() + { + } + + [Test] + public void Test_446_15() + { + } + + [Test] + public void Test_446_16() + { + } + + [Test] + public void Test_446_17() + { + } + + [Test] + public void Test_446_18() + { + } + + [Test] + public void Test_446_19() + { + } + + [Test] + public void Test_446_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_447 + { + #region PassingTests + [Test] + public void Test_447_01() + { + } + + [Test] + public void Test_447_02() + { + } + + [Test] + public void Test_447_03() + { + } + + [Test] + public void Test_447_04() + { + } + + [Test] + public void Test_447_05() + { + } + + [Test] + public void Test_447_06() + { + } + + [Test] + public void Test_447_07() + { + } + + [Test] + public void Test_447_08() + { + } + + [Test] + public void Test_447_09() + { + } + + [Test] + public void Test_447_10() + { + } + + [Test] + public void Test_447_11() + { + } + + [Test] + public void Test_447_12() + { + } + + [Test] + public void Test_447_13() + { + } + + [Test] + public void Test_447_14() + { + } + + [Test] + public void Test_447_15() + { + } + + [Test] + public void Test_447_16() + { + } + + [Test] + public void Test_447_17() + { + } + + [Test] + public void Test_447_18() + { + } + + [Test] + public void Test_447_19() + { + } + + [Test] + public void Test_447_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_448 + { + #region PassingTests + [Test] + public void Test_448_01() + { + } + + [Test] + public void Test_448_02() + { + } + + [Test] + public void Test_448_03() + { + } + + [Test] + public void Test_448_04() + { + } + + [Test] + public void Test_448_05() + { + } + + [Test] + public void Test_448_06() + { + } + + [Test] + public void Test_448_07() + { + } + + [Test] + public void Test_448_08() + { + } + + [Test] + public void Test_448_09() + { + } + + [Test] + public void Test_448_10() + { + } + + [Test] + public void Test_448_11() + { + } + + [Test] + public void Test_448_12() + { + } + + [Test] + public void Test_448_13() + { + } + + [Test] + public void Test_448_14() + { + } + + [Test] + public void Test_448_15() + { + } + + [Test] + public void Test_448_16() + { + } + + [Test] + public void Test_448_17() + { + } + + [Test] + public void Test_448_18() + { + } + + [Test] + public void Test_448_19() + { + } + + [Test] + public void Test_448_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_449 + { + #region PassingTests + [Test] + public void Test_449_01() + { + } + + [Test] + public void Test_449_02() + { + } + + [Test] + public void Test_449_03() + { + } + + [Test] + public void Test_449_04() + { + } + + [Test] + public void Test_449_05() + { + } + + [Test] + public void Test_449_06() + { + } + + [Test] + public void Test_449_07() + { + } + + [Test] + public void Test_449_08() + { + } + + [Test] + public void Test_449_09() + { + } + + [Test] + public void Test_449_10() + { + } + + [Test] + public void Test_449_11() + { + } + + [Test] + public void Test_449_12() + { + } + + [Test] + public void Test_449_13() + { + } + + [Test] + public void Test_449_14() + { + } + + [Test] + public void Test_449_15() + { + } + + [Test] + public void Test_449_16() + { + } + + [Test] + public void Test_449_17() + { + } + + [Test] + public void Test_449_18() + { + } + + [Test] + public void Test_449_19() + { + } + + [Test] + public void Test_449_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_450 + { + #region PassingTests + [Test] + public void Test_450_01() + { + } + + [Test] + public void Test_450_02() + { + } + + [Test] + public void Test_450_03() + { + } + + [Test] + public void Test_450_04() + { + } + + [Test] + public void Test_450_05() + { + } + + [Test] + public void Test_450_06() + { + } + + [Test] + public void Test_450_07() + { + } + + [Test] + public void Test_450_08() + { + } + + [Test] + public void Test_450_09() + { + } + + [Test] + public void Test_450_10() + { + } + + [Test] + public void Test_450_11() + { + } + + [Test] + public void Test_450_12() + { + } + + [Test] + public void Test_450_13() + { + } + + [Test] + public void Test_450_14() + { + } + + [Test] + public void Test_450_15() + { + } + + [Test] + public void Test_450_16() + { + } + + [Test] + public void Test_450_17() + { + } + + [Test] + public void Test_450_18() + { + } + + [Test] + public void Test_450_19() + { + } + + [Test] + public void Test_450_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_451 + { + #region PassingTests + [Test] + public void Test_451_01() + { + } + + [Test] + public void Test_451_02() + { + } + + [Test] + public void Test_451_03() + { + } + + [Test] + public void Test_451_04() + { + } + + [Test] + public void Test_451_05() + { + } + + [Test] + public void Test_451_06() + { + } + + [Test] + public void Test_451_07() + { + } + + [Test] + public void Test_451_08() + { + } + + [Test] + public void Test_451_09() + { + } + + [Test] + public void Test_451_10() + { + } + + [Test] + public void Test_451_11() + { + } + + [Test] + public void Test_451_12() + { + } + + [Test] + public void Test_451_13() + { + } + + [Test] + public void Test_451_14() + { + } + + [Test] + public void Test_451_15() + { + } + + [Test] + public void Test_451_16() + { + } + + [Test] + public void Test_451_17() + { + } + + [Test] + public void Test_451_18() + { + } + + [Test] + public void Test_451_19() + { + } + + [Test] + public void Test_451_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_452 + { + #region PassingTests + [Test] + public void Test_452_01() + { + } + + [Test] + public void Test_452_02() + { + } + + [Test] + public void Test_452_03() + { + } + + [Test] + public void Test_452_04() + { + } + + [Test] + public void Test_452_05() + { + } + + [Test] + public void Test_452_06() + { + } + + [Test] + public void Test_452_07() + { + } + + [Test] + public void Test_452_08() + { + } + + [Test] + public void Test_452_09() + { + } + + [Test] + public void Test_452_10() + { + } + + [Test] + public void Test_452_11() + { + } + + [Test] + public void Test_452_12() + { + } + + [Test] + public void Test_452_13() + { + } + + [Test] + public void Test_452_14() + { + } + + [Test] + public void Test_452_15() + { + } + + [Test] + public void Test_452_16() + { + } + + [Test] + public void Test_452_17() + { + } + + [Test] + public void Test_452_18() + { + } + + [Test] + public void Test_452_19() + { + } + + [Test] + public void Test_452_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_453 + { + #region PassingTests + [Test] + public void Test_453_01() + { + } + + [Test] + public void Test_453_02() + { + } + + [Test] + public void Test_453_03() + { + } + + [Test] + public void Test_453_04() + { + } + + [Test] + public void Test_453_05() + { + } + + [Test] + public void Test_453_06() + { + } + + [Test] + public void Test_453_07() + { + } + + [Test] + public void Test_453_08() + { + } + + [Test] + public void Test_453_09() + { + } + + [Test] + public void Test_453_10() + { + } + + [Test] + public void Test_453_11() + { + } + + [Test] + public void Test_453_12() + { + } + + [Test] + public void Test_453_13() + { + } + + [Test] + public void Test_453_14() + { + } + + [Test] + public void Test_453_15() + { + } + + [Test] + public void Test_453_16() + { + } + + [Test] + public void Test_453_17() + { + } + + [Test] + public void Test_453_18() + { + } + + [Test] + public void Test_453_19() + { + } + + [Test] + public void Test_453_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_454 + { + #region PassingTests + [Test] + public void Test_454_01() + { + } + + [Test] + public void Test_454_02() + { + } + + [Test] + public void Test_454_03() + { + } + + [Test] + public void Test_454_04() + { + } + + [Test] + public void Test_454_05() + { + } + + [Test] + public void Test_454_06() + { + } + + [Test] + public void Test_454_07() + { + } + + [Test] + public void Test_454_08() + { + } + + [Test] + public void Test_454_09() + { + } + + [Test] + public void Test_454_10() + { + } + + [Test] + public void Test_454_11() + { + } + + [Test] + public void Test_454_12() + { + } + + [Test] + public void Test_454_13() + { + } + + [Test] + public void Test_454_14() + { + } + + [Test] + public void Test_454_15() + { + } + + [Test] + public void Test_454_16() + { + } + + [Test] + public void Test_454_17() + { + } + + [Test] + public void Test_454_18() + { + } + + [Test] + public void Test_454_19() + { + } + + [Test] + public void Test_454_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_455 + { + #region PassingTests + [Test] + public void Test_455_01() + { + } + + [Test] + public void Test_455_02() + { + } + + [Test] + public void Test_455_03() + { + } + + [Test] + public void Test_455_04() + { + } + + [Test] + public void Test_455_05() + { + } + + [Test] + public void Test_455_06() + { + } + + [Test] + public void Test_455_07() + { + } + + [Test] + public void Test_455_08() + { + } + + [Test] + public void Test_455_09() + { + } + + [Test] + public void Test_455_10() + { + } + + [Test] + public void Test_455_11() + { + } + + [Test] + public void Test_455_12() + { + } + + [Test] + public void Test_455_13() + { + } + + [Test] + public void Test_455_14() + { + } + + [Test] + public void Test_455_15() + { + } + + [Test] + public void Test_455_16() + { + } + + [Test] + public void Test_455_17() + { + } + + [Test] + public void Test_455_18() + { + } + + [Test] + public void Test_455_19() + { + } + + [Test] + public void Test_455_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_456 + { + #region PassingTests + [Test] + public void Test_456_01() + { + } + + [Test] + public void Test_456_02() + { + } + + [Test] + public void Test_456_03() + { + } + + [Test] + public void Test_456_04() + { + } + + [Test] + public void Test_456_05() + { + } + + [Test] + public void Test_456_06() + { + } + + [Test] + public void Test_456_07() + { + } + + [Test] + public void Test_456_08() + { + } + + [Test] + public void Test_456_09() + { + } + + [Test] + public void Test_456_10() + { + } + + [Test] + public void Test_456_11() + { + } + + [Test] + public void Test_456_12() + { + } + + [Test] + public void Test_456_13() + { + } + + [Test] + public void Test_456_14() + { + } + + [Test] + public void Test_456_15() + { + } + + [Test] + public void Test_456_16() + { + } + + [Test] + public void Test_456_17() + { + } + + [Test] + public void Test_456_18() + { + } + + [Test] + public void Test_456_19() + { + } + + [Test] + public void Test_456_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_457 + { + #region PassingTests + [Test] + public void Test_457_01() + { + } + + [Test] + public void Test_457_02() + { + } + + [Test] + public void Test_457_03() + { + } + + [Test] + public void Test_457_04() + { + } + + [Test] + public void Test_457_05() + { + } + + [Test] + public void Test_457_06() + { + } + + [Test] + public void Test_457_07() + { + } + + [Test] + public void Test_457_08() + { + } + + [Test] + public void Test_457_09() + { + } + + [Test] + public void Test_457_10() + { + } + + [Test] + public void Test_457_11() + { + } + + [Test] + public void Test_457_12() + { + } + + [Test] + public void Test_457_13() + { + } + + [Test] + public void Test_457_14() + { + } + + [Test] + public void Test_457_15() + { + } + + [Test] + public void Test_457_16() + { + } + + [Test] + public void Test_457_17() + { + } + + [Test] + public void Test_457_18() + { + } + + [Test] + public void Test_457_19() + { + } + + [Test] + public void Test_457_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_458 + { + #region PassingTests + [Test] + public void Test_458_01() + { + } + + [Test] + public void Test_458_02() + { + } + + [Test] + public void Test_458_03() + { + } + + [Test] + public void Test_458_04() + { + } + + [Test] + public void Test_458_05() + { + } + + [Test] + public void Test_458_06() + { + } + + [Test] + public void Test_458_07() + { + } + + [Test] + public void Test_458_08() + { + } + + [Test] + public void Test_458_09() + { + } + + [Test] + public void Test_458_10() + { + } + + [Test] + public void Test_458_11() + { + } + + [Test] + public void Test_458_12() + { + } + + [Test] + public void Test_458_13() + { + } + + [Test] + public void Test_458_14() + { + } + + [Test] + public void Test_458_15() + { + } + + [Test] + public void Test_458_16() + { + } + + [Test] + public void Test_458_17() + { + } + + [Test] + public void Test_458_18() + { + } + + [Test] + public void Test_458_19() + { + } + + [Test] + public void Test_458_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_459 + { + #region PassingTests + [Test] + public void Test_459_01() + { + } + + [Test] + public void Test_459_02() + { + } + + [Test] + public void Test_459_03() + { + } + + [Test] + public void Test_459_04() + { + } + + [Test] + public void Test_459_05() + { + } + + [Test] + public void Test_459_06() + { + } + + [Test] + public void Test_459_07() + { + } + + [Test] + public void Test_459_08() + { + } + + [Test] + public void Test_459_09() + { + } + + [Test] + public void Test_459_10() + { + } + + [Test] + public void Test_459_11() + { + } + + [Test] + public void Test_459_12() + { + } + + [Test] + public void Test_459_13() + { + } + + [Test] + public void Test_459_14() + { + } + + [Test] + public void Test_459_15() + { + } + + [Test] + public void Test_459_16() + { + } + + [Test] + public void Test_459_17() + { + } + + [Test] + public void Test_459_18() + { + } + + [Test] + public void Test_459_19() + { + } + + [Test] + public void Test_459_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_460 + { + #region PassingTests + [Test] + public void Test_460_01() + { + } + + [Test] + public void Test_460_02() + { + } + + [Test] + public void Test_460_03() + { + } + + [Test] + public void Test_460_04() + { + } + + [Test] + public void Test_460_05() + { + } + + [Test] + public void Test_460_06() + { + } + + [Test] + public void Test_460_07() + { + } + + [Test] + public void Test_460_08() + { + } + + [Test] + public void Test_460_09() + { + } + + [Test] + public void Test_460_10() + { + } + + [Test] + public void Test_460_11() + { + } + + [Test] + public void Test_460_12() + { + } + + [Test] + public void Test_460_13() + { + } + + [Test] + public void Test_460_14() + { + } + + [Test] + public void Test_460_15() + { + } + + [Test] + public void Test_460_16() + { + } + + [Test] + public void Test_460_17() + { + } + + [Test] + public void Test_460_18() + { + } + + [Test] + public void Test_460_19() + { + } + + [Test] + public void Test_460_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_461 + { + #region PassingTests + [Test] + public void Test_461_01() + { + } + + [Test] + public void Test_461_02() + { + } + + [Test] + public void Test_461_03() + { + } + + [Test] + public void Test_461_04() + { + } + + [Test] + public void Test_461_05() + { + } + + [Test] + public void Test_461_06() + { + } + + [Test] + public void Test_461_07() + { + } + + [Test] + public void Test_461_08() + { + } + + [Test] + public void Test_461_09() + { + } + + [Test] + public void Test_461_10() + { + } + + [Test] + public void Test_461_11() + { + } + + [Test] + public void Test_461_12() + { + } + + [Test] + public void Test_461_13() + { + } + + [Test] + public void Test_461_14() + { + } + + [Test] + public void Test_461_15() + { + } + + [Test] + public void Test_461_16() + { + } + + [Test] + public void Test_461_17() + { + } + + [Test] + public void Test_461_18() + { + } + + [Test] + public void Test_461_19() + { + } + + [Test] + public void Test_461_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_462 + { + #region PassingTests + [Test] + public void Test_462_01() + { + } + + [Test] + public void Test_462_02() + { + } + + [Test] + public void Test_462_03() + { + } + + [Test] + public void Test_462_04() + { + } + + [Test] + public void Test_462_05() + { + } + + [Test] + public void Test_462_06() + { + } + + [Test] + public void Test_462_07() + { + } + + [Test] + public void Test_462_08() + { + } + + [Test] + public void Test_462_09() + { + } + + [Test] + public void Test_462_10() + { + } + + [Test] + public void Test_462_11() + { + } + + [Test] + public void Test_462_12() + { + } + + [Test] + public void Test_462_13() + { + } + + [Test] + public void Test_462_14() + { + } + + [Test] + public void Test_462_15() + { + } + + [Test] + public void Test_462_16() + { + } + + [Test] + public void Test_462_17() + { + } + + [Test] + public void Test_462_18() + { + } + + [Test] + public void Test_462_19() + { + } + + [Test] + public void Test_462_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_463 + { + #region PassingTests + [Test] + public void Test_463_01() + { + } + + [Test] + public void Test_463_02() + { + } + + [Test] + public void Test_463_03() + { + } + + [Test] + public void Test_463_04() + { + } + + [Test] + public void Test_463_05() + { + } + + [Test] + public void Test_463_06() + { + } + + [Test] + public void Test_463_07() + { + } + + [Test] + public void Test_463_08() + { + } + + [Test] + public void Test_463_09() + { + } + + [Test] + public void Test_463_10() + { + } + + [Test] + public void Test_463_11() + { + } + + [Test] + public void Test_463_12() + { + } + + [Test] + public void Test_463_13() + { + } + + [Test] + public void Test_463_14() + { + } + + [Test] + public void Test_463_15() + { + } + + [Test] + public void Test_463_16() + { + } + + [Test] + public void Test_463_17() + { + } + + [Test] + public void Test_463_18() + { + } + + [Test] + public void Test_463_19() + { + } + + [Test] + public void Test_463_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_464 + { + #region PassingTests + [Test] + public void Test_464_01() + { + } + + [Test] + public void Test_464_02() + { + } + + [Test] + public void Test_464_03() + { + } + + [Test] + public void Test_464_04() + { + } + + [Test] + public void Test_464_05() + { + } + + [Test] + public void Test_464_06() + { + } + + [Test] + public void Test_464_07() + { + } + + [Test] + public void Test_464_08() + { + } + + [Test] + public void Test_464_09() + { + } + + [Test] + public void Test_464_10() + { + } + + [Test] + public void Test_464_11() + { + } + + [Test] + public void Test_464_12() + { + } + + [Test] + public void Test_464_13() + { + } + + [Test] + public void Test_464_14() + { + } + + [Test] + public void Test_464_15() + { + } + + [Test] + public void Test_464_16() + { + } + + [Test] + public void Test_464_17() + { + } + + [Test] + public void Test_464_18() + { + } + + [Test] + public void Test_464_19() + { + } + + [Test] + public void Test_464_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_465 + { + #region PassingTests + [Test] + public void Test_465_01() + { + } + + [Test] + public void Test_465_02() + { + } + + [Test] + public void Test_465_03() + { + } + + [Test] + public void Test_465_04() + { + } + + [Test] + public void Test_465_05() + { + } + + [Test] + public void Test_465_06() + { + } + + [Test] + public void Test_465_07() + { + } + + [Test] + public void Test_465_08() + { + } + + [Test] + public void Test_465_09() + { + } + + [Test] + public void Test_465_10() + { + } + + [Test] + public void Test_465_11() + { + } + + [Test] + public void Test_465_12() + { + } + + [Test] + public void Test_465_13() + { + } + + [Test] + public void Test_465_14() + { + } + + [Test] + public void Test_465_15() + { + } + + [Test] + public void Test_465_16() + { + } + + [Test] + public void Test_465_17() + { + } + + [Test] + public void Test_465_18() + { + } + + [Test] + public void Test_465_19() + { + } + + [Test] + public void Test_465_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_466 + { + #region PassingTests + [Test] + public void Test_466_01() + { + } + + [Test] + public void Test_466_02() + { + } + + [Test] + public void Test_466_03() + { + } + + [Test] + public void Test_466_04() + { + } + + [Test] + public void Test_466_05() + { + } + + [Test] + public void Test_466_06() + { + } + + [Test] + public void Test_466_07() + { + } + + [Test] + public void Test_466_08() + { + } + + [Test] + public void Test_466_09() + { + } + + [Test] + public void Test_466_10() + { + } + + [Test] + public void Test_466_11() + { + } + + [Test] + public void Test_466_12() + { + } + + [Test] + public void Test_466_13() + { + } + + [Test] + public void Test_466_14() + { + } + + [Test] + public void Test_466_15() + { + } + + [Test] + public void Test_466_16() + { + } + + [Test] + public void Test_466_17() + { + } + + [Test] + public void Test_466_18() + { + } + + [Test] + public void Test_466_19() + { + } + + [Test] + public void Test_466_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_467 + { + #region PassingTests + [Test] + public void Test_467_01() + { + } + + [Test] + public void Test_467_02() + { + } + + [Test] + public void Test_467_03() + { + } + + [Test] + public void Test_467_04() + { + } + + [Test] + public void Test_467_05() + { + } + + [Test] + public void Test_467_06() + { + } + + [Test] + public void Test_467_07() + { + } + + [Test] + public void Test_467_08() + { + } + + [Test] + public void Test_467_09() + { + } + + [Test] + public void Test_467_10() + { + } + + [Test] + public void Test_467_11() + { + } + + [Test] + public void Test_467_12() + { + } + + [Test] + public void Test_467_13() + { + } + + [Test] + public void Test_467_14() + { + } + + [Test] + public void Test_467_15() + { + } + + [Test] + public void Test_467_16() + { + } + + [Test] + public void Test_467_17() + { + } + + [Test] + public void Test_467_18() + { + } + + [Test] + public void Test_467_19() + { + } + + [Test] + public void Test_467_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_468 + { + #region PassingTests + [Test] + public void Test_468_01() + { + } + + [Test] + public void Test_468_02() + { + } + + [Test] + public void Test_468_03() + { + } + + [Test] + public void Test_468_04() + { + } + + [Test] + public void Test_468_05() + { + } + + [Test] + public void Test_468_06() + { + } + + [Test] + public void Test_468_07() + { + } + + [Test] + public void Test_468_08() + { + } + + [Test] + public void Test_468_09() + { + } + + [Test] + public void Test_468_10() + { + } + + [Test] + public void Test_468_11() + { + } + + [Test] + public void Test_468_12() + { + } + + [Test] + public void Test_468_13() + { + } + + [Test] + public void Test_468_14() + { + } + + [Test] + public void Test_468_15() + { + } + + [Test] + public void Test_468_16() + { + } + + [Test] + public void Test_468_17() + { + } + + [Test] + public void Test_468_18() + { + } + + [Test] + public void Test_468_19() + { + } + + [Test] + public void Test_468_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_469 + { + #region PassingTests + [Test] + public void Test_469_01() + { + } + + [Test] + public void Test_469_02() + { + } + + [Test] + public void Test_469_03() + { + } + + [Test] + public void Test_469_04() + { + } + + [Test] + public void Test_469_05() + { + } + + [Test] + public void Test_469_06() + { + } + + [Test] + public void Test_469_07() + { + } + + [Test] + public void Test_469_08() + { + } + + [Test] + public void Test_469_09() + { + } + + [Test] + public void Test_469_10() + { + } + + [Test] + public void Test_469_11() + { + } + + [Test] + public void Test_469_12() + { + } + + [Test] + public void Test_469_13() + { + } + + [Test] + public void Test_469_14() + { + } + + [Test] + public void Test_469_15() + { + } + + [Test] + public void Test_469_16() + { + } + + [Test] + public void Test_469_17() + { + } + + [Test] + public void Test_469_18() + { + } + + [Test] + public void Test_469_19() + { + } + + [Test] + public void Test_469_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_470 + { + #region PassingTests + [Test] + public void Test_470_01() + { + } + + [Test] + public void Test_470_02() + { + } + + [Test] + public void Test_470_03() + { + } + + [Test] + public void Test_470_04() + { + } + + [Test] + public void Test_470_05() + { + } + + [Test] + public void Test_470_06() + { + } + + [Test] + public void Test_470_07() + { + } + + [Test] + public void Test_470_08() + { + } + + [Test] + public void Test_470_09() + { + } + + [Test] + public void Test_470_10() + { + } + + [Test] + public void Test_470_11() + { + } + + [Test] + public void Test_470_12() + { + } + + [Test] + public void Test_470_13() + { + } + + [Test] + public void Test_470_14() + { + } + + [Test] + public void Test_470_15() + { + } + + [Test] + public void Test_470_16() + { + } + + [Test] + public void Test_470_17() + { + } + + [Test] + public void Test_470_18() + { + } + + [Test] + public void Test_470_19() + { + } + + [Test] + public void Test_470_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_471 + { + #region PassingTests + [Test] + public void Test_471_01() + { + } + + [Test] + public void Test_471_02() + { + } + + [Test] + public void Test_471_03() + { + } + + [Test] + public void Test_471_04() + { + } + + [Test] + public void Test_471_05() + { + } + + [Test] + public void Test_471_06() + { + } + + [Test] + public void Test_471_07() + { + } + + [Test] + public void Test_471_08() + { + } + + [Test] + public void Test_471_09() + { + } + + [Test] + public void Test_471_10() + { + } + + [Test] + public void Test_471_11() + { + } + + [Test] + public void Test_471_12() + { + } + + [Test] + public void Test_471_13() + { + } + + [Test] + public void Test_471_14() + { + } + + [Test] + public void Test_471_15() + { + } + + [Test] + public void Test_471_16() + { + } + + [Test] + public void Test_471_17() + { + } + + [Test] + public void Test_471_18() + { + } + + [Test] + public void Test_471_19() + { + } + + [Test] + public void Test_471_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_472 + { + #region PassingTests + [Test] + public void Test_472_01() + { + } + + [Test] + public void Test_472_02() + { + } + + [Test] + public void Test_472_03() + { + } + + [Test] + public void Test_472_04() + { + } + + [Test] + public void Test_472_05() + { + } + + [Test] + public void Test_472_06() + { + } + + [Test] + public void Test_472_07() + { + } + + [Test] + public void Test_472_08() + { + } + + [Test] + public void Test_472_09() + { + } + + [Test] + public void Test_472_10() + { + } + + [Test] + public void Test_472_11() + { + } + + [Test] + public void Test_472_12() + { + } + + [Test] + public void Test_472_13() + { + } + + [Test] + public void Test_472_14() + { + } + + [Test] + public void Test_472_15() + { + } + + [Test] + public void Test_472_16() + { + } + + [Test] + public void Test_472_17() + { + } + + [Test] + public void Test_472_18() + { + } + + [Test] + public void Test_472_19() + { + } + + [Test] + public void Test_472_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_473 + { + #region PassingTests + [Test] + public void Test_473_01() + { + } + + [Test] + public void Test_473_02() + { + } + + [Test] + public void Test_473_03() + { + } + + [Test] + public void Test_473_04() + { + } + + [Test] + public void Test_473_05() + { + } + + [Test] + public void Test_473_06() + { + } + + [Test] + public void Test_473_07() + { + } + + [Test] + public void Test_473_08() + { + } + + [Test] + public void Test_473_09() + { + } + + [Test] + public void Test_473_10() + { + } + + [Test] + public void Test_473_11() + { + } + + [Test] + public void Test_473_12() + { + } + + [Test] + public void Test_473_13() + { + } + + [Test] + public void Test_473_14() + { + } + + [Test] + public void Test_473_15() + { + } + + [Test] + public void Test_473_16() + { + } + + [Test] + public void Test_473_17() + { + } + + [Test] + public void Test_473_18() + { + } + + [Test] + public void Test_473_19() + { + } + + [Test] + public void Test_473_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_474 + { + #region PassingTests + [Test] + public void Test_474_01() + { + } + + [Test] + public void Test_474_02() + { + } + + [Test] + public void Test_474_03() + { + } + + [Test] + public void Test_474_04() + { + } + + [Test] + public void Test_474_05() + { + } + + [Test] + public void Test_474_06() + { + } + + [Test] + public void Test_474_07() + { + } + + [Test] + public void Test_474_08() + { + } + + [Test] + public void Test_474_09() + { + } + + [Test] + public void Test_474_10() + { + } + + [Test] + public void Test_474_11() + { + } + + [Test] + public void Test_474_12() + { + } + + [Test] + public void Test_474_13() + { + } + + [Test] + public void Test_474_14() + { + } + + [Test] + public void Test_474_15() + { + } + + [Test] + public void Test_474_16() + { + } + + [Test] + public void Test_474_17() + { + } + + [Test] + public void Test_474_18() + { + } + + [Test] + public void Test_474_19() + { + } + + [Test] + public void Test_474_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_475 + { + #region PassingTests + [Test] + public void Test_475_01() + { + } + + [Test] + public void Test_475_02() + { + } + + [Test] + public void Test_475_03() + { + } + + [Test] + public void Test_475_04() + { + } + + [Test] + public void Test_475_05() + { + } + + [Test] + public void Test_475_06() + { + } + + [Test] + public void Test_475_07() + { + } + + [Test] + public void Test_475_08() + { + } + + [Test] + public void Test_475_09() + { + } + + [Test] + public void Test_475_10() + { + } + + [Test] + public void Test_475_11() + { + } + + [Test] + public void Test_475_12() + { + } + + [Test] + public void Test_475_13() + { + } + + [Test] + public void Test_475_14() + { + } + + [Test] + public void Test_475_15() + { + } + + [Test] + public void Test_475_16() + { + } + + [Test] + public void Test_475_17() + { + } + + [Test] + public void Test_475_18() + { + } + + [Test] + public void Test_475_19() + { + } + + [Test] + public void Test_475_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_476 + { + #region PassingTests + [Test] + public void Test_476_01() + { + } + + [Test] + public void Test_476_02() + { + } + + [Test] + public void Test_476_03() + { + } + + [Test] + public void Test_476_04() + { + } + + [Test] + public void Test_476_05() + { + } + + [Test] + public void Test_476_06() + { + } + + [Test] + public void Test_476_07() + { + } + + [Test] + public void Test_476_08() + { + } + + [Test] + public void Test_476_09() + { + } + + [Test] + public void Test_476_10() + { + } + + [Test] + public void Test_476_11() + { + } + + [Test] + public void Test_476_12() + { + } + + [Test] + public void Test_476_13() + { + } + + [Test] + public void Test_476_14() + { + } + + [Test] + public void Test_476_15() + { + } + + [Test] + public void Test_476_16() + { + } + + [Test] + public void Test_476_17() + { + } + + [Test] + public void Test_476_18() + { + } + + [Test] + public void Test_476_19() + { + } + + [Test] + public void Test_476_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_477 + { + #region PassingTests + [Test] + public void Test_477_01() + { + } + + [Test] + public void Test_477_02() + { + } + + [Test] + public void Test_477_03() + { + } + + [Test] + public void Test_477_04() + { + } + + [Test] + public void Test_477_05() + { + } + + [Test] + public void Test_477_06() + { + } + + [Test] + public void Test_477_07() + { + } + + [Test] + public void Test_477_08() + { + } + + [Test] + public void Test_477_09() + { + } + + [Test] + public void Test_477_10() + { + } + + [Test] + public void Test_477_11() + { + } + + [Test] + public void Test_477_12() + { + } + + [Test] + public void Test_477_13() + { + } + + [Test] + public void Test_477_14() + { + } + + [Test] + public void Test_477_15() + { + } + + [Test] + public void Test_477_16() + { + } + + [Test] + public void Test_477_17() + { + } + + [Test] + public void Test_477_18() + { + } + + [Test] + public void Test_477_19() + { + } + + [Test] + public void Test_477_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_478 + { + #region PassingTests + [Test] + public void Test_478_01() + { + } + + [Test] + public void Test_478_02() + { + } + + [Test] + public void Test_478_03() + { + } + + [Test] + public void Test_478_04() + { + } + + [Test] + public void Test_478_05() + { + } + + [Test] + public void Test_478_06() + { + } + + [Test] + public void Test_478_07() + { + } + + [Test] + public void Test_478_08() + { + } + + [Test] + public void Test_478_09() + { + } + + [Test] + public void Test_478_10() + { + } + + [Test] + public void Test_478_11() + { + } + + [Test] + public void Test_478_12() + { + } + + [Test] + public void Test_478_13() + { + } + + [Test] + public void Test_478_14() + { + } + + [Test] + public void Test_478_15() + { + } + + [Test] + public void Test_478_16() + { + } + + [Test] + public void Test_478_17() + { + } + + [Test] + public void Test_478_18() + { + } + + [Test] + public void Test_478_19() + { + } + + [Test] + public void Test_478_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_479 + { + #region PassingTests + [Test] + public void Test_479_01() + { + } + + [Test] + public void Test_479_02() + { + } + + [Test] + public void Test_479_03() + { + } + + [Test] + public void Test_479_04() + { + } + + [Test] + public void Test_479_05() + { + } + + [Test] + public void Test_479_06() + { + } + + [Test] + public void Test_479_07() + { + } + + [Test] + public void Test_479_08() + { + } + + [Test] + public void Test_479_09() + { + } + + [Test] + public void Test_479_10() + { + } + + [Test] + public void Test_479_11() + { + } + + [Test] + public void Test_479_12() + { + } + + [Test] + public void Test_479_13() + { + } + + [Test] + public void Test_479_14() + { + } + + [Test] + public void Test_479_15() + { + } + + [Test] + public void Test_479_16() + { + } + + [Test] + public void Test_479_17() + { + } + + [Test] + public void Test_479_18() + { + } + + [Test] + public void Test_479_19() + { + } + + [Test] + public void Test_479_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_480 + { + #region PassingTests + [Test] + public void Test_480_01() + { + } + + [Test] + public void Test_480_02() + { + } + + [Test] + public void Test_480_03() + { + } + + [Test] + public void Test_480_04() + { + } + + [Test] + public void Test_480_05() + { + } + + [Test] + public void Test_480_06() + { + } + + [Test] + public void Test_480_07() + { + } + + [Test] + public void Test_480_08() + { + } + + [Test] + public void Test_480_09() + { + } + + [Test] + public void Test_480_10() + { + } + + [Test] + public void Test_480_11() + { + } + + [Test] + public void Test_480_12() + { + } + + [Test] + public void Test_480_13() + { + } + + [Test] + public void Test_480_14() + { + } + + [Test] + public void Test_480_15() + { + } + + [Test] + public void Test_480_16() + { + } + + [Test] + public void Test_480_17() + { + } + + [Test] + public void Test_480_18() + { + } + + [Test] + public void Test_480_19() + { + } + + [Test] + public void Test_480_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_481 + { + #region PassingTests + [Test] + public void Test_481_01() + { + } + + [Test] + public void Test_481_02() + { + } + + [Test] + public void Test_481_03() + { + } + + [Test] + public void Test_481_04() + { + } + + [Test] + public void Test_481_05() + { + } + + [Test] + public void Test_481_06() + { + } + + [Test] + public void Test_481_07() + { + } + + [Test] + public void Test_481_08() + { + } + + [Test] + public void Test_481_09() + { + } + + [Test] + public void Test_481_10() + { + } + + [Test] + public void Test_481_11() + { + } + + [Test] + public void Test_481_12() + { + } + + [Test] + public void Test_481_13() + { + } + + [Test] + public void Test_481_14() + { + } + + [Test] + public void Test_481_15() + { + } + + [Test] + public void Test_481_16() + { + } + + [Test] + public void Test_481_17() + { + } + + [Test] + public void Test_481_18() + { + } + + [Test] + public void Test_481_19() + { + } + + [Test] + public void Test_481_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_482 + { + #region PassingTests + [Test] + public void Test_482_01() + { + } + + [Test] + public void Test_482_02() + { + } + + [Test] + public void Test_482_03() + { + } + + [Test] + public void Test_482_04() + { + } + + [Test] + public void Test_482_05() + { + } + + [Test] + public void Test_482_06() + { + } + + [Test] + public void Test_482_07() + { + } + + [Test] + public void Test_482_08() + { + } + + [Test] + public void Test_482_09() + { + } + + [Test] + public void Test_482_10() + { + } + + [Test] + public void Test_482_11() + { + } + + [Test] + public void Test_482_12() + { + } + + [Test] + public void Test_482_13() + { + } + + [Test] + public void Test_482_14() + { + } + + [Test] + public void Test_482_15() + { + } + + [Test] + public void Test_482_16() + { + } + + [Test] + public void Test_482_17() + { + } + + [Test] + public void Test_482_18() + { + } + + [Test] + public void Test_482_19() + { + } + + [Test] + public void Test_482_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_483 + { + #region PassingTests + [Test] + public void Test_483_01() + { + } + + [Test] + public void Test_483_02() + { + } + + [Test] + public void Test_483_03() + { + } + + [Test] + public void Test_483_04() + { + } + + [Test] + public void Test_483_05() + { + } + + [Test] + public void Test_483_06() + { + } + + [Test] + public void Test_483_07() + { + } + + [Test] + public void Test_483_08() + { + } + + [Test] + public void Test_483_09() + { + } + + [Test] + public void Test_483_10() + { + } + + [Test] + public void Test_483_11() + { + } + + [Test] + public void Test_483_12() + { + } + + [Test] + public void Test_483_13() + { + } + + [Test] + public void Test_483_14() + { + } + + [Test] + public void Test_483_15() + { + } + + [Test] + public void Test_483_16() + { + } + + [Test] + public void Test_483_17() + { + } + + [Test] + public void Test_483_18() + { + } + + [Test] + public void Test_483_19() + { + } + + [Test] + public void Test_483_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_484 + { + #region PassingTests + [Test] + public void Test_484_01() + { + } + + [Test] + public void Test_484_02() + { + } + + [Test] + public void Test_484_03() + { + } + + [Test] + public void Test_484_04() + { + } + + [Test] + public void Test_484_05() + { + } + + [Test] + public void Test_484_06() + { + } + + [Test] + public void Test_484_07() + { + } + + [Test] + public void Test_484_08() + { + } + + [Test] + public void Test_484_09() + { + } + + [Test] + public void Test_484_10() + { + } + + [Test] + public void Test_484_11() + { + } + + [Test] + public void Test_484_12() + { + } + + [Test] + public void Test_484_13() + { + } + + [Test] + public void Test_484_14() + { + } + + [Test] + public void Test_484_15() + { + } + + [Test] + public void Test_484_16() + { + } + + [Test] + public void Test_484_17() + { + } + + [Test] + public void Test_484_18() + { + } + + [Test] + public void Test_484_19() + { + } + + [Test] + public void Test_484_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_485 + { + #region PassingTests + [Test] + public void Test_485_01() + { + } + + [Test] + public void Test_485_02() + { + } + + [Test] + public void Test_485_03() + { + } + + [Test] + public void Test_485_04() + { + } + + [Test] + public void Test_485_05() + { + } + + [Test] + public void Test_485_06() + { + } + + [Test] + public void Test_485_07() + { + } + + [Test] + public void Test_485_08() + { + } + + [Test] + public void Test_485_09() + { + } + + [Test] + public void Test_485_10() + { + } + + [Test] + public void Test_485_11() + { + } + + [Test] + public void Test_485_12() + { + } + + [Test] + public void Test_485_13() + { + } + + [Test] + public void Test_485_14() + { + } + + [Test] + public void Test_485_15() + { + } + + [Test] + public void Test_485_16() + { + } + + [Test] + public void Test_485_17() + { + } + + [Test] + public void Test_485_18() + { + } + + [Test] + public void Test_485_19() + { + } + + [Test] + public void Test_485_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_486 + { + #region PassingTests + [Test] + public void Test_486_01() + { + } + + [Test] + public void Test_486_02() + { + } + + [Test] + public void Test_486_03() + { + } + + [Test] + public void Test_486_04() + { + } + + [Test] + public void Test_486_05() + { + } + + [Test] + public void Test_486_06() + { + } + + [Test] + public void Test_486_07() + { + } + + [Test] + public void Test_486_08() + { + } + + [Test] + public void Test_486_09() + { + } + + [Test] + public void Test_486_10() + { + } + + [Test] + public void Test_486_11() + { + } + + [Test] + public void Test_486_12() + { + } + + [Test] + public void Test_486_13() + { + } + + [Test] + public void Test_486_14() + { + } + + [Test] + public void Test_486_15() + { + } + + [Test] + public void Test_486_16() + { + } + + [Test] + public void Test_486_17() + { + } + + [Test] + public void Test_486_18() + { + } + + [Test] + public void Test_486_19() + { + } + + [Test] + public void Test_486_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_487 + { + #region PassingTests + [Test] + public void Test_487_01() + { + } + + [Test] + public void Test_487_02() + { + } + + [Test] + public void Test_487_03() + { + } + + [Test] + public void Test_487_04() + { + } + + [Test] + public void Test_487_05() + { + } + + [Test] + public void Test_487_06() + { + } + + [Test] + public void Test_487_07() + { + } + + [Test] + public void Test_487_08() + { + } + + [Test] + public void Test_487_09() + { + } + + [Test] + public void Test_487_10() + { + } + + [Test] + public void Test_487_11() + { + } + + [Test] + public void Test_487_12() + { + } + + [Test] + public void Test_487_13() + { + } + + [Test] + public void Test_487_14() + { + } + + [Test] + public void Test_487_15() + { + } + + [Test] + public void Test_487_16() + { + } + + [Test] + public void Test_487_17() + { + } + + [Test] + public void Test_487_18() + { + } + + [Test] + public void Test_487_19() + { + } + + [Test] + public void Test_487_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_488 + { + #region PassingTests + [Test] + public void Test_488_01() + { + } + + [Test] + public void Test_488_02() + { + } + + [Test] + public void Test_488_03() + { + } + + [Test] + public void Test_488_04() + { + } + + [Test] + public void Test_488_05() + { + } + + [Test] + public void Test_488_06() + { + } + + [Test] + public void Test_488_07() + { + } + + [Test] + public void Test_488_08() + { + } + + [Test] + public void Test_488_09() + { + } + + [Test] + public void Test_488_10() + { + } + + [Test] + public void Test_488_11() + { + } + + [Test] + public void Test_488_12() + { + } + + [Test] + public void Test_488_13() + { + } + + [Test] + public void Test_488_14() + { + } + + [Test] + public void Test_488_15() + { + } + + [Test] + public void Test_488_16() + { + } + + [Test] + public void Test_488_17() + { + } + + [Test] + public void Test_488_18() + { + } + + [Test] + public void Test_488_19() + { + } + + [Test] + public void Test_488_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_489 + { + #region PassingTests + [Test] + public void Test_489_01() + { + } + + [Test] + public void Test_489_02() + { + } + + [Test] + public void Test_489_03() + { + } + + [Test] + public void Test_489_04() + { + } + + [Test] + public void Test_489_05() + { + } + + [Test] + public void Test_489_06() + { + } + + [Test] + public void Test_489_07() + { + } + + [Test] + public void Test_489_08() + { + } + + [Test] + public void Test_489_09() + { + } + + [Test] + public void Test_489_10() + { + } + + [Test] + public void Test_489_11() + { + } + + [Test] + public void Test_489_12() + { + } + + [Test] + public void Test_489_13() + { + } + + [Test] + public void Test_489_14() + { + } + + [Test] + public void Test_489_15() + { + } + + [Test] + public void Test_489_16() + { + } + + [Test] + public void Test_489_17() + { + } + + [Test] + public void Test_489_18() + { + } + + [Test] + public void Test_489_19() + { + } + + [Test] + public void Test_489_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_490 + { + #region PassingTests + [Test] + public void Test_490_01() + { + } + + [Test] + public void Test_490_02() + { + } + + [Test] + public void Test_490_03() + { + } + + [Test] + public void Test_490_04() + { + } + + [Test] + public void Test_490_05() + { + } + + [Test] + public void Test_490_06() + { + } + + [Test] + public void Test_490_07() + { + } + + [Test] + public void Test_490_08() + { + } + + [Test] + public void Test_490_09() + { + } + + [Test] + public void Test_490_10() + { + } + + [Test] + public void Test_490_11() + { + } + + [Test] + public void Test_490_12() + { + } + + [Test] + public void Test_490_13() + { + } + + [Test] + public void Test_490_14() + { + } + + [Test] + public void Test_490_15() + { + } + + [Test] + public void Test_490_16() + { + } + + [Test] + public void Test_490_17() + { + } + + [Test] + public void Test_490_18() + { + } + + [Test] + public void Test_490_19() + { + } + + [Test] + public void Test_490_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_491 + { + #region PassingTests + [Test] + public void Test_491_01() + { + } + + [Test] + public void Test_491_02() + { + } + + [Test] + public void Test_491_03() + { + } + + [Test] + public void Test_491_04() + { + } + + [Test] + public void Test_491_05() + { + } + + [Test] + public void Test_491_06() + { + } + + [Test] + public void Test_491_07() + { + } + + [Test] + public void Test_491_08() + { + } + + [Test] + public void Test_491_09() + { + } + + [Test] + public void Test_491_10() + { + } + + [Test] + public void Test_491_11() + { + } + + [Test] + public void Test_491_12() + { + } + + [Test] + public void Test_491_13() + { + } + + [Test] + public void Test_491_14() + { + } + + [Test] + public void Test_491_15() + { + } + + [Test] + public void Test_491_16() + { + } + + [Test] + public void Test_491_17() + { + } + + [Test] + public void Test_491_18() + { + } + + [Test] + public void Test_491_19() + { + } + + [Test] + public void Test_491_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_492 + { + #region PassingTests + [Test] + public void Test_492_01() + { + } + + [Test] + public void Test_492_02() + { + } + + [Test] + public void Test_492_03() + { + } + + [Test] + public void Test_492_04() + { + } + + [Test] + public void Test_492_05() + { + } + + [Test] + public void Test_492_06() + { + } + + [Test] + public void Test_492_07() + { + } + + [Test] + public void Test_492_08() + { + } + + [Test] + public void Test_492_09() + { + } + + [Test] + public void Test_492_10() + { + } + + [Test] + public void Test_492_11() + { + } + + [Test] + public void Test_492_12() + { + } + + [Test] + public void Test_492_13() + { + } + + [Test] + public void Test_492_14() + { + } + + [Test] + public void Test_492_15() + { + } + + [Test] + public void Test_492_16() + { + } + + [Test] + public void Test_492_17() + { + } + + [Test] + public void Test_492_18() + { + } + + [Test] + public void Test_492_19() + { + } + + [Test] + public void Test_492_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_493 + { + #region PassingTests + [Test] + public void Test_493_01() + { + } + + [Test] + public void Test_493_02() + { + } + + [Test] + public void Test_493_03() + { + } + + [Test] + public void Test_493_04() + { + } + + [Test] + public void Test_493_05() + { + } + + [Test] + public void Test_493_06() + { + } + + [Test] + public void Test_493_07() + { + } + + [Test] + public void Test_493_08() + { + } + + [Test] + public void Test_493_09() + { + } + + [Test] + public void Test_493_10() + { + } + + [Test] + public void Test_493_11() + { + } + + [Test] + public void Test_493_12() + { + } + + [Test] + public void Test_493_13() + { + } + + [Test] + public void Test_493_14() + { + } + + [Test] + public void Test_493_15() + { + } + + [Test] + public void Test_493_16() + { + } + + [Test] + public void Test_493_17() + { + } + + [Test] + public void Test_493_18() + { + } + + [Test] + public void Test_493_19() + { + } + + [Test] + public void Test_493_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_494 + { + #region PassingTests + [Test] + public void Test_494_01() + { + } + + [Test] + public void Test_494_02() + { + } + + [Test] + public void Test_494_03() + { + } + + [Test] + public void Test_494_04() + { + } + + [Test] + public void Test_494_05() + { + } + + [Test] + public void Test_494_06() + { + } + + [Test] + public void Test_494_07() + { + } + + [Test] + public void Test_494_08() + { + } + + [Test] + public void Test_494_09() + { + } + + [Test] + public void Test_494_10() + { + } + + [Test] + public void Test_494_11() + { + } + + [Test] + public void Test_494_12() + { + } + + [Test] + public void Test_494_13() + { + } + + [Test] + public void Test_494_14() + { + } + + [Test] + public void Test_494_15() + { + } + + [Test] + public void Test_494_16() + { + } + + [Test] + public void Test_494_17() + { + } + + [Test] + public void Test_494_18() + { + } + + [Test] + public void Test_494_19() + { + } + + [Test] + public void Test_494_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_495 + { + #region PassingTests + [Test] + public void Test_495_01() + { + } + + [Test] + public void Test_495_02() + { + } + + [Test] + public void Test_495_03() + { + } + + [Test] + public void Test_495_04() + { + } + + [Test] + public void Test_495_05() + { + } + + [Test] + public void Test_495_06() + { + } + + [Test] + public void Test_495_07() + { + } + + [Test] + public void Test_495_08() + { + } + + [Test] + public void Test_495_09() + { + } + + [Test] + public void Test_495_10() + { + } + + [Test] + public void Test_495_11() + { + } + + [Test] + public void Test_495_12() + { + } + + [Test] + public void Test_495_13() + { + } + + [Test] + public void Test_495_14() + { + } + + [Test] + public void Test_495_15() + { + } + + [Test] + public void Test_495_16() + { + } + + [Test] + public void Test_495_17() + { + } + + [Test] + public void Test_495_18() + { + } + + [Test] + public void Test_495_19() + { + } + + [Test] + public void Test_495_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_496 + { + #region PassingTests + [Test] + public void Test_496_01() + { + } + + [Test] + public void Test_496_02() + { + } + + [Test] + public void Test_496_03() + { + } + + [Test] + public void Test_496_04() + { + } + + [Test] + public void Test_496_05() + { + } + + [Test] + public void Test_496_06() + { + } + + [Test] + public void Test_496_07() + { + } + + [Test] + public void Test_496_08() + { + } + + [Test] + public void Test_496_09() + { + } + + [Test] + public void Test_496_10() + { + } + + [Test] + public void Test_496_11() + { + } + + [Test] + public void Test_496_12() + { + } + + [Test] + public void Test_496_13() + { + } + + [Test] + public void Test_496_14() + { + } + + [Test] + public void Test_496_15() + { + } + + [Test] + public void Test_496_16() + { + } + + [Test] + public void Test_496_17() + { + } + + [Test] + public void Test_496_18() + { + } + + [Test] + public void Test_496_19() + { + } + + [Test] + public void Test_496_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_497 + { + #region PassingTests + [Test] + public void Test_497_01() + { + } + + [Test] + public void Test_497_02() + { + } + + [Test] + public void Test_497_03() + { + } + + [Test] + public void Test_497_04() + { + } + + [Test] + public void Test_497_05() + { + } + + [Test] + public void Test_497_06() + { + } + + [Test] + public void Test_497_07() + { + } + + [Test] + public void Test_497_08() + { + } + + [Test] + public void Test_497_09() + { + } + + [Test] + public void Test_497_10() + { + } + + [Test] + public void Test_497_11() + { + } + + [Test] + public void Test_497_12() + { + } + + [Test] + public void Test_497_13() + { + } + + [Test] + public void Test_497_14() + { + } + + [Test] + public void Test_497_15() + { + } + + [Test] + public void Test_497_16() + { + } + + [Test] + public void Test_497_17() + { + } + + [Test] + public void Test_497_18() + { + } + + [Test] + public void Test_497_19() + { + } + + [Test] + public void Test_497_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_498 + { + #region PassingTests + [Test] + public void Test_498_01() + { + } + + [Test] + public void Test_498_02() + { + } + + [Test] + public void Test_498_03() + { + } + + [Test] + public void Test_498_04() + { + } + + [Test] + public void Test_498_05() + { + } + + [Test] + public void Test_498_06() + { + } + + [Test] + public void Test_498_07() + { + } + + [Test] + public void Test_498_08() + { + } + + [Test] + public void Test_498_09() + { + } + + [Test] + public void Test_498_10() + { + } + + [Test] + public void Test_498_11() + { + } + + [Test] + public void Test_498_12() + { + } + + [Test] + public void Test_498_13() + { + } + + [Test] + public void Test_498_14() + { + } + + [Test] + public void Test_498_15() + { + } + + [Test] + public void Test_498_16() + { + } + + [Test] + public void Test_498_17() + { + } + + [Test] + public void Test_498_18() + { + } + + [Test] + public void Test_498_19() + { + } + + [Test] + public void Test_498_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_499 + { + #region PassingTests + [Test] + public void Test_499_01() + { + } + + [Test] + public void Test_499_02() + { + } + + [Test] + public void Test_499_03() + { + } + + [Test] + public void Test_499_04() + { + } + + [Test] + public void Test_499_05() + { + } + + [Test] + public void Test_499_06() + { + } + + [Test] + public void Test_499_07() + { + } + + [Test] + public void Test_499_08() + { + } + + [Test] + public void Test_499_09() + { + } + + [Test] + public void Test_499_10() + { + } + + [Test] + public void Test_499_11() + { + } + + [Test] + public void Test_499_12() + { + } + + [Test] + public void Test_499_13() + { + } + + [Test] + public void Test_499_14() + { + } + + [Test] + public void Test_499_15() + { + } + + [Test] + public void Test_499_16() + { + } + + [Test] + public void Test_499_17() + { + } + + [Test] + public void Test_499_18() + { + } + + [Test] + public void Test_499_19() + { + } + + [Test] + public void Test_499_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + [TestFixture] + public class TestClass_500 + { + #region PassingTests + [Test] + public void Test_500_01() + { + } + + [Test] + public void Test_500_02() + { + } + + [Test] + public void Test_500_03() + { + } + + [Test] + public void Test_500_04() + { + } + + [Test] + public void Test_500_05() + { + } + + [Test] + public void Test_500_06() + { + } + + [Test] + public void Test_500_07() + { + } + + [Test] + public void Test_500_08() + { + } + + [Test] + public void Test_500_09() + { + } + + [Test] + public void Test_500_10() + { + } + + [Test] + public void Test_500_11() + { + } + + [Test] + public void Test_500_12() + { + } + + [Test] + public void Test_500_13() + { + } + + [Test] + public void Test_500_14() + { + } + + [Test] + public void Test_500_15() + { + } + + [Test] + public void Test_500_16() + { + } + + [Test] + public void Test_500_17() + { + } + + [Test] + public void Test_500_18() + { + } + + [Test] + public void Test_500_19() + { + } + + [Test] + public void Test_500_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/NUnit10kPassing/NunitTests.tt b/test/TestAssets/performance/NUnit10kPassing/NunitTests.tt new file mode 100644 index 0000000000..e84470ad3d --- /dev/null +++ b/test/TestAssets/performance/NUnit10kPassing/NunitTests.tt @@ -0,0 +1,56 @@ +using NUnit.Framework; + +namespace Tests +{ +<# + int classes = 500; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestFixture] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/NUnit1Passing/NUnit1Passing.csproj b/test/TestAssets/performance/NUnit1Passing/NUnit1Passing.csproj new file mode 100644 index 0000000000..4b0d0e5b87 --- /dev/null +++ b/test/TestAssets/performance/NUnit1Passing/NUnit1Passing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + + + + + + + + + + + TextTemplatingFileGenerator + NunitTests.cs + + + + + + + + + + True + True + NunitTests.tt + + + + diff --git a/test/TestAssets/performance/NUnit1Passing/NunitTests.cs b/test/TestAssets/performance/NUnit1Passing/NunitTests.cs new file mode 100644 index 0000000000..b0fd7a3c9c --- /dev/null +++ b/test/TestAssets/performance/NUnit1Passing/NunitTests.cs @@ -0,0 +1,19 @@ +using NUnit.Framework; + +namespace Tests +{ + [TestFixture] + public class TestClass_01 + { + #region PassingTests + [Test] + public void Test_01_01() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/NUnit1Passing/NunitTests.tt b/test/TestAssets/performance/NUnit1Passing/NunitTests.tt new file mode 100644 index 0000000000..482c0ff2f9 --- /dev/null +++ b/test/TestAssets/performance/NUnit1Passing/NunitTests.tt @@ -0,0 +1,56 @@ +using NUnit.Framework; + +namespace Tests +{ +<# + int classes = 1; + int passedTests = 1; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + [TestFixture] + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Test] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/Perfy.TestAdapter/Perfy.TestAdapter.csproj b/test/TestAssets/performance/Perfy.TestAdapter/Perfy.TestAdapter.csproj new file mode 100644 index 0000000000..0ab7c46aa0 --- /dev/null +++ b/test/TestAssets/performance/Perfy.TestAdapter/Perfy.TestAdapter.csproj @@ -0,0 +1,15 @@ + + + + net48;net472;net471;net9.0;net8.0 + false + + + + + + + + + diff --git a/test/TestAssets/performance/Perfy.TestAdapter/Perfy.cs b/test/TestAssets/performance/Perfy.TestAdapter/Perfy.cs new file mode 100644 index 0000000000..64ccf1d648 --- /dev/null +++ b/test/TestAssets/performance/Perfy.TestAdapter/Perfy.cs @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +// This dll is a TestProject as well as a test adapter.We use it as a baseline for performance. +// It does no actual discovery or run.It just returns as many results as we ask it to by TEST_COUNT env variable. +// It has almost no overhead, so all the overhead we see is coming from TestPlatform. + +using System.Data; +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace PerfyPassing +{ + [ExtensionUri(Id)] + [DefaultExecutorUri(Id)] + public class Perfy : ITestDiscoverer, ITestExecutor + { + static Perfy() + { + // No meaning to the number, it is just easy to find when it breaks. Better than returning 1000 or 0 which are both + // less suspicious. It could throw, but that is bad for interactive debugging. + Count = int.TryParse(Environment.GetEnvironmentVariable("TEST_COUNT") ?? "10000", out var count) ? count : 356; + } + + public const string Id = "executor://perfy.testadapter"; + public static readonly Uri Uri = new Uri(Id); + + public static int Count { get; } + + public void Cancel() + { + // noop + } + + public void RunTests(IEnumerable tests, IRunContext runContext, IFrameworkHandle frameworkHandle) + { + var sources = tests.Select(t => t.Source).Distinct().ToList(); + RunTests(sources, runContext, frameworkHandle); + } + + public void RunTests(IEnumerable sources, IRunContext runContext, IFrameworkHandle frameworkHandle) + { + var location = typeof(Perfy).Assembly.Location; + for (var i = 0; i < Count; i++) + { + var tc = new TestCase($"Test{i}", Uri, location); + frameworkHandle.RecordResult(new TestResult(tc) + { + Outcome = TestOutcome.Passed + }); + } + } + + public void DiscoverTests(IEnumerable _, IDiscoveryContext _2, + IMessageLogger _3, ITestCaseDiscoverySink discoverySink) + { + var location = typeof(Perfy).Assembly.Location; + var tps = new List(); + Func validator = (object o) => !string.IsNullOrWhiteSpace(o as string); + + for (var i = 0; i < Count; i++) + { + var tc = new TestCase($"Test{i}", Uri, location); + discoverySink.SendTestCase(tc); + } + } + } +} diff --git a/test/TestAssets/performance/XUnit1000Passing/XUnit1000Passing.csproj b/test/TestAssets/performance/XUnit1000Passing/XUnit1000Passing.csproj new file mode 100644 index 0000000000..119a479786 --- /dev/null +++ b/test/TestAssets/performance/XUnit1000Passing/XUnit1000Passing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + XunitTests.cs + + + + + + + + + + True + True + XunitTests.tt + + + diff --git a/test/TestAssets/performance/XUnit1000Passing/XunitTests.cs b/test/TestAssets/performance/XUnit1000Passing/XunitTests.cs new file mode 100644 index 0000000000..db3236d8ae --- /dev/null +++ b/test/TestAssets/performance/XUnit1000Passing/XunitTests.cs @@ -0,0 +1,5405 @@ +using Xunit; + +namespace Tests +{ + public class TestClass_01 + { + #region PassingTests + [Fact] + public void Test_01_01() + { + } + + [Fact] + public void Test_01_02() + { + } + + [Fact] + public void Test_01_03() + { + } + + [Fact] + public void Test_01_04() + { + } + + [Fact] + public void Test_01_05() + { + } + + [Fact] + public void Test_01_06() + { + } + + [Fact] + public void Test_01_07() + { + } + + [Fact] + public void Test_01_08() + { + } + + [Fact] + public void Test_01_09() + { + } + + [Fact] + public void Test_01_10() + { + } + + [Fact] + public void Test_01_11() + { + } + + [Fact] + public void Test_01_12() + { + } + + [Fact] + public void Test_01_13() + { + } + + [Fact] + public void Test_01_14() + { + } + + [Fact] + public void Test_01_15() + { + } + + [Fact] + public void Test_01_16() + { + } + + [Fact] + public void Test_01_17() + { + } + + [Fact] + public void Test_01_18() + { + } + + [Fact] + public void Test_01_19() + { + } + + [Fact] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_02 + { + #region PassingTests + [Fact] + public void Test_02_01() + { + } + + [Fact] + public void Test_02_02() + { + } + + [Fact] + public void Test_02_03() + { + } + + [Fact] + public void Test_02_04() + { + } + + [Fact] + public void Test_02_05() + { + } + + [Fact] + public void Test_02_06() + { + } + + [Fact] + public void Test_02_07() + { + } + + [Fact] + public void Test_02_08() + { + } + + [Fact] + public void Test_02_09() + { + } + + [Fact] + public void Test_02_10() + { + } + + [Fact] + public void Test_02_11() + { + } + + [Fact] + public void Test_02_12() + { + } + + [Fact] + public void Test_02_13() + { + } + + [Fact] + public void Test_02_14() + { + } + + [Fact] + public void Test_02_15() + { + } + + [Fact] + public void Test_02_16() + { + } + + [Fact] + public void Test_02_17() + { + } + + [Fact] + public void Test_02_18() + { + } + + [Fact] + public void Test_02_19() + { + } + + [Fact] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_03 + { + #region PassingTests + [Fact] + public void Test_03_01() + { + } + + [Fact] + public void Test_03_02() + { + } + + [Fact] + public void Test_03_03() + { + } + + [Fact] + public void Test_03_04() + { + } + + [Fact] + public void Test_03_05() + { + } + + [Fact] + public void Test_03_06() + { + } + + [Fact] + public void Test_03_07() + { + } + + [Fact] + public void Test_03_08() + { + } + + [Fact] + public void Test_03_09() + { + } + + [Fact] + public void Test_03_10() + { + } + + [Fact] + public void Test_03_11() + { + } + + [Fact] + public void Test_03_12() + { + } + + [Fact] + public void Test_03_13() + { + } + + [Fact] + public void Test_03_14() + { + } + + [Fact] + public void Test_03_15() + { + } + + [Fact] + public void Test_03_16() + { + } + + [Fact] + public void Test_03_17() + { + } + + [Fact] + public void Test_03_18() + { + } + + [Fact] + public void Test_03_19() + { + } + + [Fact] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_04 + { + #region PassingTests + [Fact] + public void Test_04_01() + { + } + + [Fact] + public void Test_04_02() + { + } + + [Fact] + public void Test_04_03() + { + } + + [Fact] + public void Test_04_04() + { + } + + [Fact] + public void Test_04_05() + { + } + + [Fact] + public void Test_04_06() + { + } + + [Fact] + public void Test_04_07() + { + } + + [Fact] + public void Test_04_08() + { + } + + [Fact] + public void Test_04_09() + { + } + + [Fact] + public void Test_04_10() + { + } + + [Fact] + public void Test_04_11() + { + } + + [Fact] + public void Test_04_12() + { + } + + [Fact] + public void Test_04_13() + { + } + + [Fact] + public void Test_04_14() + { + } + + [Fact] + public void Test_04_15() + { + } + + [Fact] + public void Test_04_16() + { + } + + [Fact] + public void Test_04_17() + { + } + + [Fact] + public void Test_04_18() + { + } + + [Fact] + public void Test_04_19() + { + } + + [Fact] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_05 + { + #region PassingTests + [Fact] + public void Test_05_01() + { + } + + [Fact] + public void Test_05_02() + { + } + + [Fact] + public void Test_05_03() + { + } + + [Fact] + public void Test_05_04() + { + } + + [Fact] + public void Test_05_05() + { + } + + [Fact] + public void Test_05_06() + { + } + + [Fact] + public void Test_05_07() + { + } + + [Fact] + public void Test_05_08() + { + } + + [Fact] + public void Test_05_09() + { + } + + [Fact] + public void Test_05_10() + { + } + + [Fact] + public void Test_05_11() + { + } + + [Fact] + public void Test_05_12() + { + } + + [Fact] + public void Test_05_13() + { + } + + [Fact] + public void Test_05_14() + { + } + + [Fact] + public void Test_05_15() + { + } + + [Fact] + public void Test_05_16() + { + } + + [Fact] + public void Test_05_17() + { + } + + [Fact] + public void Test_05_18() + { + } + + [Fact] + public void Test_05_19() + { + } + + [Fact] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_06 + { + #region PassingTests + [Fact] + public void Test_06_01() + { + } + + [Fact] + public void Test_06_02() + { + } + + [Fact] + public void Test_06_03() + { + } + + [Fact] + public void Test_06_04() + { + } + + [Fact] + public void Test_06_05() + { + } + + [Fact] + public void Test_06_06() + { + } + + [Fact] + public void Test_06_07() + { + } + + [Fact] + public void Test_06_08() + { + } + + [Fact] + public void Test_06_09() + { + } + + [Fact] + public void Test_06_10() + { + } + + [Fact] + public void Test_06_11() + { + } + + [Fact] + public void Test_06_12() + { + } + + [Fact] + public void Test_06_13() + { + } + + [Fact] + public void Test_06_14() + { + } + + [Fact] + public void Test_06_15() + { + } + + [Fact] + public void Test_06_16() + { + } + + [Fact] + public void Test_06_17() + { + } + + [Fact] + public void Test_06_18() + { + } + + [Fact] + public void Test_06_19() + { + } + + [Fact] + public void Test_06_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_07 + { + #region PassingTests + [Fact] + public void Test_07_01() + { + } + + [Fact] + public void Test_07_02() + { + } + + [Fact] + public void Test_07_03() + { + } + + [Fact] + public void Test_07_04() + { + } + + [Fact] + public void Test_07_05() + { + } + + [Fact] + public void Test_07_06() + { + } + + [Fact] + public void Test_07_07() + { + } + + [Fact] + public void Test_07_08() + { + } + + [Fact] + public void Test_07_09() + { + } + + [Fact] + public void Test_07_10() + { + } + + [Fact] + public void Test_07_11() + { + } + + [Fact] + public void Test_07_12() + { + } + + [Fact] + public void Test_07_13() + { + } + + [Fact] + public void Test_07_14() + { + } + + [Fact] + public void Test_07_15() + { + } + + [Fact] + public void Test_07_16() + { + } + + [Fact] + public void Test_07_17() + { + } + + [Fact] + public void Test_07_18() + { + } + + [Fact] + public void Test_07_19() + { + } + + [Fact] + public void Test_07_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_08 + { + #region PassingTests + [Fact] + public void Test_08_01() + { + } + + [Fact] + public void Test_08_02() + { + } + + [Fact] + public void Test_08_03() + { + } + + [Fact] + public void Test_08_04() + { + } + + [Fact] + public void Test_08_05() + { + } + + [Fact] + public void Test_08_06() + { + } + + [Fact] + public void Test_08_07() + { + } + + [Fact] + public void Test_08_08() + { + } + + [Fact] + public void Test_08_09() + { + } + + [Fact] + public void Test_08_10() + { + } + + [Fact] + public void Test_08_11() + { + } + + [Fact] + public void Test_08_12() + { + } + + [Fact] + public void Test_08_13() + { + } + + [Fact] + public void Test_08_14() + { + } + + [Fact] + public void Test_08_15() + { + } + + [Fact] + public void Test_08_16() + { + } + + [Fact] + public void Test_08_17() + { + } + + [Fact] + public void Test_08_18() + { + } + + [Fact] + public void Test_08_19() + { + } + + [Fact] + public void Test_08_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_09 + { + #region PassingTests + [Fact] + public void Test_09_01() + { + } + + [Fact] + public void Test_09_02() + { + } + + [Fact] + public void Test_09_03() + { + } + + [Fact] + public void Test_09_04() + { + } + + [Fact] + public void Test_09_05() + { + } + + [Fact] + public void Test_09_06() + { + } + + [Fact] + public void Test_09_07() + { + } + + [Fact] + public void Test_09_08() + { + } + + [Fact] + public void Test_09_09() + { + } + + [Fact] + public void Test_09_10() + { + } + + [Fact] + public void Test_09_11() + { + } + + [Fact] + public void Test_09_12() + { + } + + [Fact] + public void Test_09_13() + { + } + + [Fact] + public void Test_09_14() + { + } + + [Fact] + public void Test_09_15() + { + } + + [Fact] + public void Test_09_16() + { + } + + [Fact] + public void Test_09_17() + { + } + + [Fact] + public void Test_09_18() + { + } + + [Fact] + public void Test_09_19() + { + } + + [Fact] + public void Test_09_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_10 + { + #region PassingTests + [Fact] + public void Test_10_01() + { + } + + [Fact] + public void Test_10_02() + { + } + + [Fact] + public void Test_10_03() + { + } + + [Fact] + public void Test_10_04() + { + } + + [Fact] + public void Test_10_05() + { + } + + [Fact] + public void Test_10_06() + { + } + + [Fact] + public void Test_10_07() + { + } + + [Fact] + public void Test_10_08() + { + } + + [Fact] + public void Test_10_09() + { + } + + [Fact] + public void Test_10_10() + { + } + + [Fact] + public void Test_10_11() + { + } + + [Fact] + public void Test_10_12() + { + } + + [Fact] + public void Test_10_13() + { + } + + [Fact] + public void Test_10_14() + { + } + + [Fact] + public void Test_10_15() + { + } + + [Fact] + public void Test_10_16() + { + } + + [Fact] + public void Test_10_17() + { + } + + [Fact] + public void Test_10_18() + { + } + + [Fact] + public void Test_10_19() + { + } + + [Fact] + public void Test_10_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_11 + { + #region PassingTests + [Fact] + public void Test_11_01() + { + } + + [Fact] + public void Test_11_02() + { + } + + [Fact] + public void Test_11_03() + { + } + + [Fact] + public void Test_11_04() + { + } + + [Fact] + public void Test_11_05() + { + } + + [Fact] + public void Test_11_06() + { + } + + [Fact] + public void Test_11_07() + { + } + + [Fact] + public void Test_11_08() + { + } + + [Fact] + public void Test_11_09() + { + } + + [Fact] + public void Test_11_10() + { + } + + [Fact] + public void Test_11_11() + { + } + + [Fact] + public void Test_11_12() + { + } + + [Fact] + public void Test_11_13() + { + } + + [Fact] + public void Test_11_14() + { + } + + [Fact] + public void Test_11_15() + { + } + + [Fact] + public void Test_11_16() + { + } + + [Fact] + public void Test_11_17() + { + } + + [Fact] + public void Test_11_18() + { + } + + [Fact] + public void Test_11_19() + { + } + + [Fact] + public void Test_11_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_12 + { + #region PassingTests + [Fact] + public void Test_12_01() + { + } + + [Fact] + public void Test_12_02() + { + } + + [Fact] + public void Test_12_03() + { + } + + [Fact] + public void Test_12_04() + { + } + + [Fact] + public void Test_12_05() + { + } + + [Fact] + public void Test_12_06() + { + } + + [Fact] + public void Test_12_07() + { + } + + [Fact] + public void Test_12_08() + { + } + + [Fact] + public void Test_12_09() + { + } + + [Fact] + public void Test_12_10() + { + } + + [Fact] + public void Test_12_11() + { + } + + [Fact] + public void Test_12_12() + { + } + + [Fact] + public void Test_12_13() + { + } + + [Fact] + public void Test_12_14() + { + } + + [Fact] + public void Test_12_15() + { + } + + [Fact] + public void Test_12_16() + { + } + + [Fact] + public void Test_12_17() + { + } + + [Fact] + public void Test_12_18() + { + } + + [Fact] + public void Test_12_19() + { + } + + [Fact] + public void Test_12_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_13 + { + #region PassingTests + [Fact] + public void Test_13_01() + { + } + + [Fact] + public void Test_13_02() + { + } + + [Fact] + public void Test_13_03() + { + } + + [Fact] + public void Test_13_04() + { + } + + [Fact] + public void Test_13_05() + { + } + + [Fact] + public void Test_13_06() + { + } + + [Fact] + public void Test_13_07() + { + } + + [Fact] + public void Test_13_08() + { + } + + [Fact] + public void Test_13_09() + { + } + + [Fact] + public void Test_13_10() + { + } + + [Fact] + public void Test_13_11() + { + } + + [Fact] + public void Test_13_12() + { + } + + [Fact] + public void Test_13_13() + { + } + + [Fact] + public void Test_13_14() + { + } + + [Fact] + public void Test_13_15() + { + } + + [Fact] + public void Test_13_16() + { + } + + [Fact] + public void Test_13_17() + { + } + + [Fact] + public void Test_13_18() + { + } + + [Fact] + public void Test_13_19() + { + } + + [Fact] + public void Test_13_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_14 + { + #region PassingTests + [Fact] + public void Test_14_01() + { + } + + [Fact] + public void Test_14_02() + { + } + + [Fact] + public void Test_14_03() + { + } + + [Fact] + public void Test_14_04() + { + } + + [Fact] + public void Test_14_05() + { + } + + [Fact] + public void Test_14_06() + { + } + + [Fact] + public void Test_14_07() + { + } + + [Fact] + public void Test_14_08() + { + } + + [Fact] + public void Test_14_09() + { + } + + [Fact] + public void Test_14_10() + { + } + + [Fact] + public void Test_14_11() + { + } + + [Fact] + public void Test_14_12() + { + } + + [Fact] + public void Test_14_13() + { + } + + [Fact] + public void Test_14_14() + { + } + + [Fact] + public void Test_14_15() + { + } + + [Fact] + public void Test_14_16() + { + } + + [Fact] + public void Test_14_17() + { + } + + [Fact] + public void Test_14_18() + { + } + + [Fact] + public void Test_14_19() + { + } + + [Fact] + public void Test_14_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_15 + { + #region PassingTests + [Fact] + public void Test_15_01() + { + } + + [Fact] + public void Test_15_02() + { + } + + [Fact] + public void Test_15_03() + { + } + + [Fact] + public void Test_15_04() + { + } + + [Fact] + public void Test_15_05() + { + } + + [Fact] + public void Test_15_06() + { + } + + [Fact] + public void Test_15_07() + { + } + + [Fact] + public void Test_15_08() + { + } + + [Fact] + public void Test_15_09() + { + } + + [Fact] + public void Test_15_10() + { + } + + [Fact] + public void Test_15_11() + { + } + + [Fact] + public void Test_15_12() + { + } + + [Fact] + public void Test_15_13() + { + } + + [Fact] + public void Test_15_14() + { + } + + [Fact] + public void Test_15_15() + { + } + + [Fact] + public void Test_15_16() + { + } + + [Fact] + public void Test_15_17() + { + } + + [Fact] + public void Test_15_18() + { + } + + [Fact] + public void Test_15_19() + { + } + + [Fact] + public void Test_15_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_16 + { + #region PassingTests + [Fact] + public void Test_16_01() + { + } + + [Fact] + public void Test_16_02() + { + } + + [Fact] + public void Test_16_03() + { + } + + [Fact] + public void Test_16_04() + { + } + + [Fact] + public void Test_16_05() + { + } + + [Fact] + public void Test_16_06() + { + } + + [Fact] + public void Test_16_07() + { + } + + [Fact] + public void Test_16_08() + { + } + + [Fact] + public void Test_16_09() + { + } + + [Fact] + public void Test_16_10() + { + } + + [Fact] + public void Test_16_11() + { + } + + [Fact] + public void Test_16_12() + { + } + + [Fact] + public void Test_16_13() + { + } + + [Fact] + public void Test_16_14() + { + } + + [Fact] + public void Test_16_15() + { + } + + [Fact] + public void Test_16_16() + { + } + + [Fact] + public void Test_16_17() + { + } + + [Fact] + public void Test_16_18() + { + } + + [Fact] + public void Test_16_19() + { + } + + [Fact] + public void Test_16_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_17 + { + #region PassingTests + [Fact] + public void Test_17_01() + { + } + + [Fact] + public void Test_17_02() + { + } + + [Fact] + public void Test_17_03() + { + } + + [Fact] + public void Test_17_04() + { + } + + [Fact] + public void Test_17_05() + { + } + + [Fact] + public void Test_17_06() + { + } + + [Fact] + public void Test_17_07() + { + } + + [Fact] + public void Test_17_08() + { + } + + [Fact] + public void Test_17_09() + { + } + + [Fact] + public void Test_17_10() + { + } + + [Fact] + public void Test_17_11() + { + } + + [Fact] + public void Test_17_12() + { + } + + [Fact] + public void Test_17_13() + { + } + + [Fact] + public void Test_17_14() + { + } + + [Fact] + public void Test_17_15() + { + } + + [Fact] + public void Test_17_16() + { + } + + [Fact] + public void Test_17_17() + { + } + + [Fact] + public void Test_17_18() + { + } + + [Fact] + public void Test_17_19() + { + } + + [Fact] + public void Test_17_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_18 + { + #region PassingTests + [Fact] + public void Test_18_01() + { + } + + [Fact] + public void Test_18_02() + { + } + + [Fact] + public void Test_18_03() + { + } + + [Fact] + public void Test_18_04() + { + } + + [Fact] + public void Test_18_05() + { + } + + [Fact] + public void Test_18_06() + { + } + + [Fact] + public void Test_18_07() + { + } + + [Fact] + public void Test_18_08() + { + } + + [Fact] + public void Test_18_09() + { + } + + [Fact] + public void Test_18_10() + { + } + + [Fact] + public void Test_18_11() + { + } + + [Fact] + public void Test_18_12() + { + } + + [Fact] + public void Test_18_13() + { + } + + [Fact] + public void Test_18_14() + { + } + + [Fact] + public void Test_18_15() + { + } + + [Fact] + public void Test_18_16() + { + } + + [Fact] + public void Test_18_17() + { + } + + [Fact] + public void Test_18_18() + { + } + + [Fact] + public void Test_18_19() + { + } + + [Fact] + public void Test_18_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_19 + { + #region PassingTests + [Fact] + public void Test_19_01() + { + } + + [Fact] + public void Test_19_02() + { + } + + [Fact] + public void Test_19_03() + { + } + + [Fact] + public void Test_19_04() + { + } + + [Fact] + public void Test_19_05() + { + } + + [Fact] + public void Test_19_06() + { + } + + [Fact] + public void Test_19_07() + { + } + + [Fact] + public void Test_19_08() + { + } + + [Fact] + public void Test_19_09() + { + } + + [Fact] + public void Test_19_10() + { + } + + [Fact] + public void Test_19_11() + { + } + + [Fact] + public void Test_19_12() + { + } + + [Fact] + public void Test_19_13() + { + } + + [Fact] + public void Test_19_14() + { + } + + [Fact] + public void Test_19_15() + { + } + + [Fact] + public void Test_19_16() + { + } + + [Fact] + public void Test_19_17() + { + } + + [Fact] + public void Test_19_18() + { + } + + [Fact] + public void Test_19_19() + { + } + + [Fact] + public void Test_19_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_20 + { + #region PassingTests + [Fact] + public void Test_20_01() + { + } + + [Fact] + public void Test_20_02() + { + } + + [Fact] + public void Test_20_03() + { + } + + [Fact] + public void Test_20_04() + { + } + + [Fact] + public void Test_20_05() + { + } + + [Fact] + public void Test_20_06() + { + } + + [Fact] + public void Test_20_07() + { + } + + [Fact] + public void Test_20_08() + { + } + + [Fact] + public void Test_20_09() + { + } + + [Fact] + public void Test_20_10() + { + } + + [Fact] + public void Test_20_11() + { + } + + [Fact] + public void Test_20_12() + { + } + + [Fact] + public void Test_20_13() + { + } + + [Fact] + public void Test_20_14() + { + } + + [Fact] + public void Test_20_15() + { + } + + [Fact] + public void Test_20_16() + { + } + + [Fact] + public void Test_20_17() + { + } + + [Fact] + public void Test_20_18() + { + } + + [Fact] + public void Test_20_19() + { + } + + [Fact] + public void Test_20_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_21 + { + #region PassingTests + [Fact] + public void Test_21_01() + { + } + + [Fact] + public void Test_21_02() + { + } + + [Fact] + public void Test_21_03() + { + } + + [Fact] + public void Test_21_04() + { + } + + [Fact] + public void Test_21_05() + { + } + + [Fact] + public void Test_21_06() + { + } + + [Fact] + public void Test_21_07() + { + } + + [Fact] + public void Test_21_08() + { + } + + [Fact] + public void Test_21_09() + { + } + + [Fact] + public void Test_21_10() + { + } + + [Fact] + public void Test_21_11() + { + } + + [Fact] + public void Test_21_12() + { + } + + [Fact] + public void Test_21_13() + { + } + + [Fact] + public void Test_21_14() + { + } + + [Fact] + public void Test_21_15() + { + } + + [Fact] + public void Test_21_16() + { + } + + [Fact] + public void Test_21_17() + { + } + + [Fact] + public void Test_21_18() + { + } + + [Fact] + public void Test_21_19() + { + } + + [Fact] + public void Test_21_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_22 + { + #region PassingTests + [Fact] + public void Test_22_01() + { + } + + [Fact] + public void Test_22_02() + { + } + + [Fact] + public void Test_22_03() + { + } + + [Fact] + public void Test_22_04() + { + } + + [Fact] + public void Test_22_05() + { + } + + [Fact] + public void Test_22_06() + { + } + + [Fact] + public void Test_22_07() + { + } + + [Fact] + public void Test_22_08() + { + } + + [Fact] + public void Test_22_09() + { + } + + [Fact] + public void Test_22_10() + { + } + + [Fact] + public void Test_22_11() + { + } + + [Fact] + public void Test_22_12() + { + } + + [Fact] + public void Test_22_13() + { + } + + [Fact] + public void Test_22_14() + { + } + + [Fact] + public void Test_22_15() + { + } + + [Fact] + public void Test_22_16() + { + } + + [Fact] + public void Test_22_17() + { + } + + [Fact] + public void Test_22_18() + { + } + + [Fact] + public void Test_22_19() + { + } + + [Fact] + public void Test_22_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_23 + { + #region PassingTests + [Fact] + public void Test_23_01() + { + } + + [Fact] + public void Test_23_02() + { + } + + [Fact] + public void Test_23_03() + { + } + + [Fact] + public void Test_23_04() + { + } + + [Fact] + public void Test_23_05() + { + } + + [Fact] + public void Test_23_06() + { + } + + [Fact] + public void Test_23_07() + { + } + + [Fact] + public void Test_23_08() + { + } + + [Fact] + public void Test_23_09() + { + } + + [Fact] + public void Test_23_10() + { + } + + [Fact] + public void Test_23_11() + { + } + + [Fact] + public void Test_23_12() + { + } + + [Fact] + public void Test_23_13() + { + } + + [Fact] + public void Test_23_14() + { + } + + [Fact] + public void Test_23_15() + { + } + + [Fact] + public void Test_23_16() + { + } + + [Fact] + public void Test_23_17() + { + } + + [Fact] + public void Test_23_18() + { + } + + [Fact] + public void Test_23_19() + { + } + + [Fact] + public void Test_23_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_24 + { + #region PassingTests + [Fact] + public void Test_24_01() + { + } + + [Fact] + public void Test_24_02() + { + } + + [Fact] + public void Test_24_03() + { + } + + [Fact] + public void Test_24_04() + { + } + + [Fact] + public void Test_24_05() + { + } + + [Fact] + public void Test_24_06() + { + } + + [Fact] + public void Test_24_07() + { + } + + [Fact] + public void Test_24_08() + { + } + + [Fact] + public void Test_24_09() + { + } + + [Fact] + public void Test_24_10() + { + } + + [Fact] + public void Test_24_11() + { + } + + [Fact] + public void Test_24_12() + { + } + + [Fact] + public void Test_24_13() + { + } + + [Fact] + public void Test_24_14() + { + } + + [Fact] + public void Test_24_15() + { + } + + [Fact] + public void Test_24_16() + { + } + + [Fact] + public void Test_24_17() + { + } + + [Fact] + public void Test_24_18() + { + } + + [Fact] + public void Test_24_19() + { + } + + [Fact] + public void Test_24_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_25 + { + #region PassingTests + [Fact] + public void Test_25_01() + { + } + + [Fact] + public void Test_25_02() + { + } + + [Fact] + public void Test_25_03() + { + } + + [Fact] + public void Test_25_04() + { + } + + [Fact] + public void Test_25_05() + { + } + + [Fact] + public void Test_25_06() + { + } + + [Fact] + public void Test_25_07() + { + } + + [Fact] + public void Test_25_08() + { + } + + [Fact] + public void Test_25_09() + { + } + + [Fact] + public void Test_25_10() + { + } + + [Fact] + public void Test_25_11() + { + } + + [Fact] + public void Test_25_12() + { + } + + [Fact] + public void Test_25_13() + { + } + + [Fact] + public void Test_25_14() + { + } + + [Fact] + public void Test_25_15() + { + } + + [Fact] + public void Test_25_16() + { + } + + [Fact] + public void Test_25_17() + { + } + + [Fact] + public void Test_25_18() + { + } + + [Fact] + public void Test_25_19() + { + } + + [Fact] + public void Test_25_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_26 + { + #region PassingTests + [Fact] + public void Test_26_01() + { + } + + [Fact] + public void Test_26_02() + { + } + + [Fact] + public void Test_26_03() + { + } + + [Fact] + public void Test_26_04() + { + } + + [Fact] + public void Test_26_05() + { + } + + [Fact] + public void Test_26_06() + { + } + + [Fact] + public void Test_26_07() + { + } + + [Fact] + public void Test_26_08() + { + } + + [Fact] + public void Test_26_09() + { + } + + [Fact] + public void Test_26_10() + { + } + + [Fact] + public void Test_26_11() + { + } + + [Fact] + public void Test_26_12() + { + } + + [Fact] + public void Test_26_13() + { + } + + [Fact] + public void Test_26_14() + { + } + + [Fact] + public void Test_26_15() + { + } + + [Fact] + public void Test_26_16() + { + } + + [Fact] + public void Test_26_17() + { + } + + [Fact] + public void Test_26_18() + { + } + + [Fact] + public void Test_26_19() + { + } + + [Fact] + public void Test_26_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_27 + { + #region PassingTests + [Fact] + public void Test_27_01() + { + } + + [Fact] + public void Test_27_02() + { + } + + [Fact] + public void Test_27_03() + { + } + + [Fact] + public void Test_27_04() + { + } + + [Fact] + public void Test_27_05() + { + } + + [Fact] + public void Test_27_06() + { + } + + [Fact] + public void Test_27_07() + { + } + + [Fact] + public void Test_27_08() + { + } + + [Fact] + public void Test_27_09() + { + } + + [Fact] + public void Test_27_10() + { + } + + [Fact] + public void Test_27_11() + { + } + + [Fact] + public void Test_27_12() + { + } + + [Fact] + public void Test_27_13() + { + } + + [Fact] + public void Test_27_14() + { + } + + [Fact] + public void Test_27_15() + { + } + + [Fact] + public void Test_27_16() + { + } + + [Fact] + public void Test_27_17() + { + } + + [Fact] + public void Test_27_18() + { + } + + [Fact] + public void Test_27_19() + { + } + + [Fact] + public void Test_27_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_28 + { + #region PassingTests + [Fact] + public void Test_28_01() + { + } + + [Fact] + public void Test_28_02() + { + } + + [Fact] + public void Test_28_03() + { + } + + [Fact] + public void Test_28_04() + { + } + + [Fact] + public void Test_28_05() + { + } + + [Fact] + public void Test_28_06() + { + } + + [Fact] + public void Test_28_07() + { + } + + [Fact] + public void Test_28_08() + { + } + + [Fact] + public void Test_28_09() + { + } + + [Fact] + public void Test_28_10() + { + } + + [Fact] + public void Test_28_11() + { + } + + [Fact] + public void Test_28_12() + { + } + + [Fact] + public void Test_28_13() + { + } + + [Fact] + public void Test_28_14() + { + } + + [Fact] + public void Test_28_15() + { + } + + [Fact] + public void Test_28_16() + { + } + + [Fact] + public void Test_28_17() + { + } + + [Fact] + public void Test_28_18() + { + } + + [Fact] + public void Test_28_19() + { + } + + [Fact] + public void Test_28_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_29 + { + #region PassingTests + [Fact] + public void Test_29_01() + { + } + + [Fact] + public void Test_29_02() + { + } + + [Fact] + public void Test_29_03() + { + } + + [Fact] + public void Test_29_04() + { + } + + [Fact] + public void Test_29_05() + { + } + + [Fact] + public void Test_29_06() + { + } + + [Fact] + public void Test_29_07() + { + } + + [Fact] + public void Test_29_08() + { + } + + [Fact] + public void Test_29_09() + { + } + + [Fact] + public void Test_29_10() + { + } + + [Fact] + public void Test_29_11() + { + } + + [Fact] + public void Test_29_12() + { + } + + [Fact] + public void Test_29_13() + { + } + + [Fact] + public void Test_29_14() + { + } + + [Fact] + public void Test_29_15() + { + } + + [Fact] + public void Test_29_16() + { + } + + [Fact] + public void Test_29_17() + { + } + + [Fact] + public void Test_29_18() + { + } + + [Fact] + public void Test_29_19() + { + } + + [Fact] + public void Test_29_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_30 + { + #region PassingTests + [Fact] + public void Test_30_01() + { + } + + [Fact] + public void Test_30_02() + { + } + + [Fact] + public void Test_30_03() + { + } + + [Fact] + public void Test_30_04() + { + } + + [Fact] + public void Test_30_05() + { + } + + [Fact] + public void Test_30_06() + { + } + + [Fact] + public void Test_30_07() + { + } + + [Fact] + public void Test_30_08() + { + } + + [Fact] + public void Test_30_09() + { + } + + [Fact] + public void Test_30_10() + { + } + + [Fact] + public void Test_30_11() + { + } + + [Fact] + public void Test_30_12() + { + } + + [Fact] + public void Test_30_13() + { + } + + [Fact] + public void Test_30_14() + { + } + + [Fact] + public void Test_30_15() + { + } + + [Fact] + public void Test_30_16() + { + } + + [Fact] + public void Test_30_17() + { + } + + [Fact] + public void Test_30_18() + { + } + + [Fact] + public void Test_30_19() + { + } + + [Fact] + public void Test_30_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_31 + { + #region PassingTests + [Fact] + public void Test_31_01() + { + } + + [Fact] + public void Test_31_02() + { + } + + [Fact] + public void Test_31_03() + { + } + + [Fact] + public void Test_31_04() + { + } + + [Fact] + public void Test_31_05() + { + } + + [Fact] + public void Test_31_06() + { + } + + [Fact] + public void Test_31_07() + { + } + + [Fact] + public void Test_31_08() + { + } + + [Fact] + public void Test_31_09() + { + } + + [Fact] + public void Test_31_10() + { + } + + [Fact] + public void Test_31_11() + { + } + + [Fact] + public void Test_31_12() + { + } + + [Fact] + public void Test_31_13() + { + } + + [Fact] + public void Test_31_14() + { + } + + [Fact] + public void Test_31_15() + { + } + + [Fact] + public void Test_31_16() + { + } + + [Fact] + public void Test_31_17() + { + } + + [Fact] + public void Test_31_18() + { + } + + [Fact] + public void Test_31_19() + { + } + + [Fact] + public void Test_31_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_32 + { + #region PassingTests + [Fact] + public void Test_32_01() + { + } + + [Fact] + public void Test_32_02() + { + } + + [Fact] + public void Test_32_03() + { + } + + [Fact] + public void Test_32_04() + { + } + + [Fact] + public void Test_32_05() + { + } + + [Fact] + public void Test_32_06() + { + } + + [Fact] + public void Test_32_07() + { + } + + [Fact] + public void Test_32_08() + { + } + + [Fact] + public void Test_32_09() + { + } + + [Fact] + public void Test_32_10() + { + } + + [Fact] + public void Test_32_11() + { + } + + [Fact] + public void Test_32_12() + { + } + + [Fact] + public void Test_32_13() + { + } + + [Fact] + public void Test_32_14() + { + } + + [Fact] + public void Test_32_15() + { + } + + [Fact] + public void Test_32_16() + { + } + + [Fact] + public void Test_32_17() + { + } + + [Fact] + public void Test_32_18() + { + } + + [Fact] + public void Test_32_19() + { + } + + [Fact] + public void Test_32_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_33 + { + #region PassingTests + [Fact] + public void Test_33_01() + { + } + + [Fact] + public void Test_33_02() + { + } + + [Fact] + public void Test_33_03() + { + } + + [Fact] + public void Test_33_04() + { + } + + [Fact] + public void Test_33_05() + { + } + + [Fact] + public void Test_33_06() + { + } + + [Fact] + public void Test_33_07() + { + } + + [Fact] + public void Test_33_08() + { + } + + [Fact] + public void Test_33_09() + { + } + + [Fact] + public void Test_33_10() + { + } + + [Fact] + public void Test_33_11() + { + } + + [Fact] + public void Test_33_12() + { + } + + [Fact] + public void Test_33_13() + { + } + + [Fact] + public void Test_33_14() + { + } + + [Fact] + public void Test_33_15() + { + } + + [Fact] + public void Test_33_16() + { + } + + [Fact] + public void Test_33_17() + { + } + + [Fact] + public void Test_33_18() + { + } + + [Fact] + public void Test_33_19() + { + } + + [Fact] + public void Test_33_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_34 + { + #region PassingTests + [Fact] + public void Test_34_01() + { + } + + [Fact] + public void Test_34_02() + { + } + + [Fact] + public void Test_34_03() + { + } + + [Fact] + public void Test_34_04() + { + } + + [Fact] + public void Test_34_05() + { + } + + [Fact] + public void Test_34_06() + { + } + + [Fact] + public void Test_34_07() + { + } + + [Fact] + public void Test_34_08() + { + } + + [Fact] + public void Test_34_09() + { + } + + [Fact] + public void Test_34_10() + { + } + + [Fact] + public void Test_34_11() + { + } + + [Fact] + public void Test_34_12() + { + } + + [Fact] + public void Test_34_13() + { + } + + [Fact] + public void Test_34_14() + { + } + + [Fact] + public void Test_34_15() + { + } + + [Fact] + public void Test_34_16() + { + } + + [Fact] + public void Test_34_17() + { + } + + [Fact] + public void Test_34_18() + { + } + + [Fact] + public void Test_34_19() + { + } + + [Fact] + public void Test_34_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_35 + { + #region PassingTests + [Fact] + public void Test_35_01() + { + } + + [Fact] + public void Test_35_02() + { + } + + [Fact] + public void Test_35_03() + { + } + + [Fact] + public void Test_35_04() + { + } + + [Fact] + public void Test_35_05() + { + } + + [Fact] + public void Test_35_06() + { + } + + [Fact] + public void Test_35_07() + { + } + + [Fact] + public void Test_35_08() + { + } + + [Fact] + public void Test_35_09() + { + } + + [Fact] + public void Test_35_10() + { + } + + [Fact] + public void Test_35_11() + { + } + + [Fact] + public void Test_35_12() + { + } + + [Fact] + public void Test_35_13() + { + } + + [Fact] + public void Test_35_14() + { + } + + [Fact] + public void Test_35_15() + { + } + + [Fact] + public void Test_35_16() + { + } + + [Fact] + public void Test_35_17() + { + } + + [Fact] + public void Test_35_18() + { + } + + [Fact] + public void Test_35_19() + { + } + + [Fact] + public void Test_35_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_36 + { + #region PassingTests + [Fact] + public void Test_36_01() + { + } + + [Fact] + public void Test_36_02() + { + } + + [Fact] + public void Test_36_03() + { + } + + [Fact] + public void Test_36_04() + { + } + + [Fact] + public void Test_36_05() + { + } + + [Fact] + public void Test_36_06() + { + } + + [Fact] + public void Test_36_07() + { + } + + [Fact] + public void Test_36_08() + { + } + + [Fact] + public void Test_36_09() + { + } + + [Fact] + public void Test_36_10() + { + } + + [Fact] + public void Test_36_11() + { + } + + [Fact] + public void Test_36_12() + { + } + + [Fact] + public void Test_36_13() + { + } + + [Fact] + public void Test_36_14() + { + } + + [Fact] + public void Test_36_15() + { + } + + [Fact] + public void Test_36_16() + { + } + + [Fact] + public void Test_36_17() + { + } + + [Fact] + public void Test_36_18() + { + } + + [Fact] + public void Test_36_19() + { + } + + [Fact] + public void Test_36_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_37 + { + #region PassingTests + [Fact] + public void Test_37_01() + { + } + + [Fact] + public void Test_37_02() + { + } + + [Fact] + public void Test_37_03() + { + } + + [Fact] + public void Test_37_04() + { + } + + [Fact] + public void Test_37_05() + { + } + + [Fact] + public void Test_37_06() + { + } + + [Fact] + public void Test_37_07() + { + } + + [Fact] + public void Test_37_08() + { + } + + [Fact] + public void Test_37_09() + { + } + + [Fact] + public void Test_37_10() + { + } + + [Fact] + public void Test_37_11() + { + } + + [Fact] + public void Test_37_12() + { + } + + [Fact] + public void Test_37_13() + { + } + + [Fact] + public void Test_37_14() + { + } + + [Fact] + public void Test_37_15() + { + } + + [Fact] + public void Test_37_16() + { + } + + [Fact] + public void Test_37_17() + { + } + + [Fact] + public void Test_37_18() + { + } + + [Fact] + public void Test_37_19() + { + } + + [Fact] + public void Test_37_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_38 + { + #region PassingTests + [Fact] + public void Test_38_01() + { + } + + [Fact] + public void Test_38_02() + { + } + + [Fact] + public void Test_38_03() + { + } + + [Fact] + public void Test_38_04() + { + } + + [Fact] + public void Test_38_05() + { + } + + [Fact] + public void Test_38_06() + { + } + + [Fact] + public void Test_38_07() + { + } + + [Fact] + public void Test_38_08() + { + } + + [Fact] + public void Test_38_09() + { + } + + [Fact] + public void Test_38_10() + { + } + + [Fact] + public void Test_38_11() + { + } + + [Fact] + public void Test_38_12() + { + } + + [Fact] + public void Test_38_13() + { + } + + [Fact] + public void Test_38_14() + { + } + + [Fact] + public void Test_38_15() + { + } + + [Fact] + public void Test_38_16() + { + } + + [Fact] + public void Test_38_17() + { + } + + [Fact] + public void Test_38_18() + { + } + + [Fact] + public void Test_38_19() + { + } + + [Fact] + public void Test_38_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_39 + { + #region PassingTests + [Fact] + public void Test_39_01() + { + } + + [Fact] + public void Test_39_02() + { + } + + [Fact] + public void Test_39_03() + { + } + + [Fact] + public void Test_39_04() + { + } + + [Fact] + public void Test_39_05() + { + } + + [Fact] + public void Test_39_06() + { + } + + [Fact] + public void Test_39_07() + { + } + + [Fact] + public void Test_39_08() + { + } + + [Fact] + public void Test_39_09() + { + } + + [Fact] + public void Test_39_10() + { + } + + [Fact] + public void Test_39_11() + { + } + + [Fact] + public void Test_39_12() + { + } + + [Fact] + public void Test_39_13() + { + } + + [Fact] + public void Test_39_14() + { + } + + [Fact] + public void Test_39_15() + { + } + + [Fact] + public void Test_39_16() + { + } + + [Fact] + public void Test_39_17() + { + } + + [Fact] + public void Test_39_18() + { + } + + [Fact] + public void Test_39_19() + { + } + + [Fact] + public void Test_39_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_40 + { + #region PassingTests + [Fact] + public void Test_40_01() + { + } + + [Fact] + public void Test_40_02() + { + } + + [Fact] + public void Test_40_03() + { + } + + [Fact] + public void Test_40_04() + { + } + + [Fact] + public void Test_40_05() + { + } + + [Fact] + public void Test_40_06() + { + } + + [Fact] + public void Test_40_07() + { + } + + [Fact] + public void Test_40_08() + { + } + + [Fact] + public void Test_40_09() + { + } + + [Fact] + public void Test_40_10() + { + } + + [Fact] + public void Test_40_11() + { + } + + [Fact] + public void Test_40_12() + { + } + + [Fact] + public void Test_40_13() + { + } + + [Fact] + public void Test_40_14() + { + } + + [Fact] + public void Test_40_15() + { + } + + [Fact] + public void Test_40_16() + { + } + + [Fact] + public void Test_40_17() + { + } + + [Fact] + public void Test_40_18() + { + } + + [Fact] + public void Test_40_19() + { + } + + [Fact] + public void Test_40_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_41 + { + #region PassingTests + [Fact] + public void Test_41_01() + { + } + + [Fact] + public void Test_41_02() + { + } + + [Fact] + public void Test_41_03() + { + } + + [Fact] + public void Test_41_04() + { + } + + [Fact] + public void Test_41_05() + { + } + + [Fact] + public void Test_41_06() + { + } + + [Fact] + public void Test_41_07() + { + } + + [Fact] + public void Test_41_08() + { + } + + [Fact] + public void Test_41_09() + { + } + + [Fact] + public void Test_41_10() + { + } + + [Fact] + public void Test_41_11() + { + } + + [Fact] + public void Test_41_12() + { + } + + [Fact] + public void Test_41_13() + { + } + + [Fact] + public void Test_41_14() + { + } + + [Fact] + public void Test_41_15() + { + } + + [Fact] + public void Test_41_16() + { + } + + [Fact] + public void Test_41_17() + { + } + + [Fact] + public void Test_41_18() + { + } + + [Fact] + public void Test_41_19() + { + } + + [Fact] + public void Test_41_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_42 + { + #region PassingTests + [Fact] + public void Test_42_01() + { + } + + [Fact] + public void Test_42_02() + { + } + + [Fact] + public void Test_42_03() + { + } + + [Fact] + public void Test_42_04() + { + } + + [Fact] + public void Test_42_05() + { + } + + [Fact] + public void Test_42_06() + { + } + + [Fact] + public void Test_42_07() + { + } + + [Fact] + public void Test_42_08() + { + } + + [Fact] + public void Test_42_09() + { + } + + [Fact] + public void Test_42_10() + { + } + + [Fact] + public void Test_42_11() + { + } + + [Fact] + public void Test_42_12() + { + } + + [Fact] + public void Test_42_13() + { + } + + [Fact] + public void Test_42_14() + { + } + + [Fact] + public void Test_42_15() + { + } + + [Fact] + public void Test_42_16() + { + } + + [Fact] + public void Test_42_17() + { + } + + [Fact] + public void Test_42_18() + { + } + + [Fact] + public void Test_42_19() + { + } + + [Fact] + public void Test_42_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_43 + { + #region PassingTests + [Fact] + public void Test_43_01() + { + } + + [Fact] + public void Test_43_02() + { + } + + [Fact] + public void Test_43_03() + { + } + + [Fact] + public void Test_43_04() + { + } + + [Fact] + public void Test_43_05() + { + } + + [Fact] + public void Test_43_06() + { + } + + [Fact] + public void Test_43_07() + { + } + + [Fact] + public void Test_43_08() + { + } + + [Fact] + public void Test_43_09() + { + } + + [Fact] + public void Test_43_10() + { + } + + [Fact] + public void Test_43_11() + { + } + + [Fact] + public void Test_43_12() + { + } + + [Fact] + public void Test_43_13() + { + } + + [Fact] + public void Test_43_14() + { + } + + [Fact] + public void Test_43_15() + { + } + + [Fact] + public void Test_43_16() + { + } + + [Fact] + public void Test_43_17() + { + } + + [Fact] + public void Test_43_18() + { + } + + [Fact] + public void Test_43_19() + { + } + + [Fact] + public void Test_43_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_44 + { + #region PassingTests + [Fact] + public void Test_44_01() + { + } + + [Fact] + public void Test_44_02() + { + } + + [Fact] + public void Test_44_03() + { + } + + [Fact] + public void Test_44_04() + { + } + + [Fact] + public void Test_44_05() + { + } + + [Fact] + public void Test_44_06() + { + } + + [Fact] + public void Test_44_07() + { + } + + [Fact] + public void Test_44_08() + { + } + + [Fact] + public void Test_44_09() + { + } + + [Fact] + public void Test_44_10() + { + } + + [Fact] + public void Test_44_11() + { + } + + [Fact] + public void Test_44_12() + { + } + + [Fact] + public void Test_44_13() + { + } + + [Fact] + public void Test_44_14() + { + } + + [Fact] + public void Test_44_15() + { + } + + [Fact] + public void Test_44_16() + { + } + + [Fact] + public void Test_44_17() + { + } + + [Fact] + public void Test_44_18() + { + } + + [Fact] + public void Test_44_19() + { + } + + [Fact] + public void Test_44_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_45 + { + #region PassingTests + [Fact] + public void Test_45_01() + { + } + + [Fact] + public void Test_45_02() + { + } + + [Fact] + public void Test_45_03() + { + } + + [Fact] + public void Test_45_04() + { + } + + [Fact] + public void Test_45_05() + { + } + + [Fact] + public void Test_45_06() + { + } + + [Fact] + public void Test_45_07() + { + } + + [Fact] + public void Test_45_08() + { + } + + [Fact] + public void Test_45_09() + { + } + + [Fact] + public void Test_45_10() + { + } + + [Fact] + public void Test_45_11() + { + } + + [Fact] + public void Test_45_12() + { + } + + [Fact] + public void Test_45_13() + { + } + + [Fact] + public void Test_45_14() + { + } + + [Fact] + public void Test_45_15() + { + } + + [Fact] + public void Test_45_16() + { + } + + [Fact] + public void Test_45_17() + { + } + + [Fact] + public void Test_45_18() + { + } + + [Fact] + public void Test_45_19() + { + } + + [Fact] + public void Test_45_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_46 + { + #region PassingTests + [Fact] + public void Test_46_01() + { + } + + [Fact] + public void Test_46_02() + { + } + + [Fact] + public void Test_46_03() + { + } + + [Fact] + public void Test_46_04() + { + } + + [Fact] + public void Test_46_05() + { + } + + [Fact] + public void Test_46_06() + { + } + + [Fact] + public void Test_46_07() + { + } + + [Fact] + public void Test_46_08() + { + } + + [Fact] + public void Test_46_09() + { + } + + [Fact] + public void Test_46_10() + { + } + + [Fact] + public void Test_46_11() + { + } + + [Fact] + public void Test_46_12() + { + } + + [Fact] + public void Test_46_13() + { + } + + [Fact] + public void Test_46_14() + { + } + + [Fact] + public void Test_46_15() + { + } + + [Fact] + public void Test_46_16() + { + } + + [Fact] + public void Test_46_17() + { + } + + [Fact] + public void Test_46_18() + { + } + + [Fact] + public void Test_46_19() + { + } + + [Fact] + public void Test_46_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_47 + { + #region PassingTests + [Fact] + public void Test_47_01() + { + } + + [Fact] + public void Test_47_02() + { + } + + [Fact] + public void Test_47_03() + { + } + + [Fact] + public void Test_47_04() + { + } + + [Fact] + public void Test_47_05() + { + } + + [Fact] + public void Test_47_06() + { + } + + [Fact] + public void Test_47_07() + { + } + + [Fact] + public void Test_47_08() + { + } + + [Fact] + public void Test_47_09() + { + } + + [Fact] + public void Test_47_10() + { + } + + [Fact] + public void Test_47_11() + { + } + + [Fact] + public void Test_47_12() + { + } + + [Fact] + public void Test_47_13() + { + } + + [Fact] + public void Test_47_14() + { + } + + [Fact] + public void Test_47_15() + { + } + + [Fact] + public void Test_47_16() + { + } + + [Fact] + public void Test_47_17() + { + } + + [Fact] + public void Test_47_18() + { + } + + [Fact] + public void Test_47_19() + { + } + + [Fact] + public void Test_47_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_48 + { + #region PassingTests + [Fact] + public void Test_48_01() + { + } + + [Fact] + public void Test_48_02() + { + } + + [Fact] + public void Test_48_03() + { + } + + [Fact] + public void Test_48_04() + { + } + + [Fact] + public void Test_48_05() + { + } + + [Fact] + public void Test_48_06() + { + } + + [Fact] + public void Test_48_07() + { + } + + [Fact] + public void Test_48_08() + { + } + + [Fact] + public void Test_48_09() + { + } + + [Fact] + public void Test_48_10() + { + } + + [Fact] + public void Test_48_11() + { + } + + [Fact] + public void Test_48_12() + { + } + + [Fact] + public void Test_48_13() + { + } + + [Fact] + public void Test_48_14() + { + } + + [Fact] + public void Test_48_15() + { + } + + [Fact] + public void Test_48_16() + { + } + + [Fact] + public void Test_48_17() + { + } + + [Fact] + public void Test_48_18() + { + } + + [Fact] + public void Test_48_19() + { + } + + [Fact] + public void Test_48_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_49 + { + #region PassingTests + [Fact] + public void Test_49_01() + { + } + + [Fact] + public void Test_49_02() + { + } + + [Fact] + public void Test_49_03() + { + } + + [Fact] + public void Test_49_04() + { + } + + [Fact] + public void Test_49_05() + { + } + + [Fact] + public void Test_49_06() + { + } + + [Fact] + public void Test_49_07() + { + } + + [Fact] + public void Test_49_08() + { + } + + [Fact] + public void Test_49_09() + { + } + + [Fact] + public void Test_49_10() + { + } + + [Fact] + public void Test_49_11() + { + } + + [Fact] + public void Test_49_12() + { + } + + [Fact] + public void Test_49_13() + { + } + + [Fact] + public void Test_49_14() + { + } + + [Fact] + public void Test_49_15() + { + } + + [Fact] + public void Test_49_16() + { + } + + [Fact] + public void Test_49_17() + { + } + + [Fact] + public void Test_49_18() + { + } + + [Fact] + public void Test_49_19() + { + } + + [Fact] + public void Test_49_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_50 + { + #region PassingTests + [Fact] + public void Test_50_01() + { + } + + [Fact] + public void Test_50_02() + { + } + + [Fact] + public void Test_50_03() + { + } + + [Fact] + public void Test_50_04() + { + } + + [Fact] + public void Test_50_05() + { + } + + [Fact] + public void Test_50_06() + { + } + + [Fact] + public void Test_50_07() + { + } + + [Fact] + public void Test_50_08() + { + } + + [Fact] + public void Test_50_09() + { + } + + [Fact] + public void Test_50_10() + { + } + + [Fact] + public void Test_50_11() + { + } + + [Fact] + public void Test_50_12() + { + } + + [Fact] + public void Test_50_13() + { + } + + [Fact] + public void Test_50_14() + { + } + + [Fact] + public void Test_50_15() + { + } + + [Fact] + public void Test_50_16() + { + } + + [Fact] + public void Test_50_17() + { + } + + [Fact] + public void Test_50_18() + { + } + + [Fact] + public void Test_50_19() + { + } + + [Fact] + public void Test_50_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/XUnit1000Passing/XunitTests.tt b/test/TestAssets/performance/XUnit1000Passing/XunitTests.tt new file mode 100644 index 0000000000..7486b49df3 --- /dev/null +++ b/test/TestAssets/performance/XUnit1000Passing/XunitTests.tt @@ -0,0 +1,55 @@ +using Xunit; + +namespace Tests +{ +<# + int classes = 50; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/XUnit100Passing/XUnit100Passing.csproj b/test/TestAssets/performance/XUnit100Passing/XUnit100Passing.csproj new file mode 100644 index 0000000000..119a479786 --- /dev/null +++ b/test/TestAssets/performance/XUnit100Passing/XUnit100Passing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + XunitTests.cs + + + + + + + + + + True + True + XunitTests.tt + + + diff --git a/test/TestAssets/performance/XUnit100Passing/XunitTests.cs b/test/TestAssets/performance/XUnit100Passing/XunitTests.cs new file mode 100644 index 0000000000..23ce625eac --- /dev/null +++ b/test/TestAssets/performance/XUnit100Passing/XunitTests.cs @@ -0,0 +1,545 @@ +using Xunit; + +namespace Tests +{ + public class TestClass_01 + { + #region PassingTests + [Fact] + public void Test_01_01() + { + } + + [Fact] + public void Test_01_02() + { + } + + [Fact] + public void Test_01_03() + { + } + + [Fact] + public void Test_01_04() + { + } + + [Fact] + public void Test_01_05() + { + } + + [Fact] + public void Test_01_06() + { + } + + [Fact] + public void Test_01_07() + { + } + + [Fact] + public void Test_01_08() + { + } + + [Fact] + public void Test_01_09() + { + } + + [Fact] + public void Test_01_10() + { + } + + [Fact] + public void Test_01_11() + { + } + + [Fact] + public void Test_01_12() + { + } + + [Fact] + public void Test_01_13() + { + } + + [Fact] + public void Test_01_14() + { + } + + [Fact] + public void Test_01_15() + { + } + + [Fact] + public void Test_01_16() + { + } + + [Fact] + public void Test_01_17() + { + } + + [Fact] + public void Test_01_18() + { + } + + [Fact] + public void Test_01_19() + { + } + + [Fact] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_02 + { + #region PassingTests + [Fact] + public void Test_02_01() + { + } + + [Fact] + public void Test_02_02() + { + } + + [Fact] + public void Test_02_03() + { + } + + [Fact] + public void Test_02_04() + { + } + + [Fact] + public void Test_02_05() + { + } + + [Fact] + public void Test_02_06() + { + } + + [Fact] + public void Test_02_07() + { + } + + [Fact] + public void Test_02_08() + { + } + + [Fact] + public void Test_02_09() + { + } + + [Fact] + public void Test_02_10() + { + } + + [Fact] + public void Test_02_11() + { + } + + [Fact] + public void Test_02_12() + { + } + + [Fact] + public void Test_02_13() + { + } + + [Fact] + public void Test_02_14() + { + } + + [Fact] + public void Test_02_15() + { + } + + [Fact] + public void Test_02_16() + { + } + + [Fact] + public void Test_02_17() + { + } + + [Fact] + public void Test_02_18() + { + } + + [Fact] + public void Test_02_19() + { + } + + [Fact] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_03 + { + #region PassingTests + [Fact] + public void Test_03_01() + { + } + + [Fact] + public void Test_03_02() + { + } + + [Fact] + public void Test_03_03() + { + } + + [Fact] + public void Test_03_04() + { + } + + [Fact] + public void Test_03_05() + { + } + + [Fact] + public void Test_03_06() + { + } + + [Fact] + public void Test_03_07() + { + } + + [Fact] + public void Test_03_08() + { + } + + [Fact] + public void Test_03_09() + { + } + + [Fact] + public void Test_03_10() + { + } + + [Fact] + public void Test_03_11() + { + } + + [Fact] + public void Test_03_12() + { + } + + [Fact] + public void Test_03_13() + { + } + + [Fact] + public void Test_03_14() + { + } + + [Fact] + public void Test_03_15() + { + } + + [Fact] + public void Test_03_16() + { + } + + [Fact] + public void Test_03_17() + { + } + + [Fact] + public void Test_03_18() + { + } + + [Fact] + public void Test_03_19() + { + } + + [Fact] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_04 + { + #region PassingTests + [Fact] + public void Test_04_01() + { + } + + [Fact] + public void Test_04_02() + { + } + + [Fact] + public void Test_04_03() + { + } + + [Fact] + public void Test_04_04() + { + } + + [Fact] + public void Test_04_05() + { + } + + [Fact] + public void Test_04_06() + { + } + + [Fact] + public void Test_04_07() + { + } + + [Fact] + public void Test_04_08() + { + } + + [Fact] + public void Test_04_09() + { + } + + [Fact] + public void Test_04_10() + { + } + + [Fact] + public void Test_04_11() + { + } + + [Fact] + public void Test_04_12() + { + } + + [Fact] + public void Test_04_13() + { + } + + [Fact] + public void Test_04_14() + { + } + + [Fact] + public void Test_04_15() + { + } + + [Fact] + public void Test_04_16() + { + } + + [Fact] + public void Test_04_17() + { + } + + [Fact] + public void Test_04_18() + { + } + + [Fact] + public void Test_04_19() + { + } + + [Fact] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_05 + { + #region PassingTests + [Fact] + public void Test_05_01() + { + } + + [Fact] + public void Test_05_02() + { + } + + [Fact] + public void Test_05_03() + { + } + + [Fact] + public void Test_05_04() + { + } + + [Fact] + public void Test_05_05() + { + } + + [Fact] + public void Test_05_06() + { + } + + [Fact] + public void Test_05_07() + { + } + + [Fact] + public void Test_05_08() + { + } + + [Fact] + public void Test_05_09() + { + } + + [Fact] + public void Test_05_10() + { + } + + [Fact] + public void Test_05_11() + { + } + + [Fact] + public void Test_05_12() + { + } + + [Fact] + public void Test_05_13() + { + } + + [Fact] + public void Test_05_14() + { + } + + [Fact] + public void Test_05_15() + { + } + + [Fact] + public void Test_05_16() + { + } + + [Fact] + public void Test_05_17() + { + } + + [Fact] + public void Test_05_18() + { + } + + [Fact] + public void Test_05_19() + { + } + + [Fact] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/XUnit100Passing/XunitTests.tt b/test/TestAssets/performance/XUnit100Passing/XunitTests.tt new file mode 100644 index 0000000000..0d05a30ff3 --- /dev/null +++ b/test/TestAssets/performance/XUnit100Passing/XunitTests.tt @@ -0,0 +1,55 @@ +using Xunit; + +namespace Tests +{ +<# + int classes = 5; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/XUnit10kPassing/XUnit10kPassing.csproj b/test/TestAssets/performance/XUnit10kPassing/XUnit10kPassing.csproj new file mode 100644 index 0000000000..393eb3be00 --- /dev/null +++ b/test/TestAssets/performance/XUnit10kPassing/XUnit10kPassing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + XunitTests.cs + + + + + + + + + + True + True + XunitTests.tt + + + diff --git a/test/TestAssets/performance/XUnit10kPassing/XunitTests.cs b/test/TestAssets/performance/XUnit10kPassing/XunitTests.cs new file mode 100644 index 0000000000..b91251de85 --- /dev/null +++ b/test/TestAssets/performance/XUnit10kPassing/XunitTests.cs @@ -0,0 +1,54005 @@ +using Xunit; + +namespace Tests +{ + public class TestClass_01 + { + #region PassingTests + [Fact] + public void Test_01_01() + { + } + + [Fact] + public void Test_01_02() + { + } + + [Fact] + public void Test_01_03() + { + } + + [Fact] + public void Test_01_04() + { + } + + [Fact] + public void Test_01_05() + { + } + + [Fact] + public void Test_01_06() + { + } + + [Fact] + public void Test_01_07() + { + } + + [Fact] + public void Test_01_08() + { + } + + [Fact] + public void Test_01_09() + { + } + + [Fact] + public void Test_01_10() + { + } + + [Fact] + public void Test_01_11() + { + } + + [Fact] + public void Test_01_12() + { + } + + [Fact] + public void Test_01_13() + { + } + + [Fact] + public void Test_01_14() + { + } + + [Fact] + public void Test_01_15() + { + } + + [Fact] + public void Test_01_16() + { + } + + [Fact] + public void Test_01_17() + { + } + + [Fact] + public void Test_01_18() + { + } + + [Fact] + public void Test_01_19() + { + } + + [Fact] + public void Test_01_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_02 + { + #region PassingTests + [Fact] + public void Test_02_01() + { + } + + [Fact] + public void Test_02_02() + { + } + + [Fact] + public void Test_02_03() + { + } + + [Fact] + public void Test_02_04() + { + } + + [Fact] + public void Test_02_05() + { + } + + [Fact] + public void Test_02_06() + { + } + + [Fact] + public void Test_02_07() + { + } + + [Fact] + public void Test_02_08() + { + } + + [Fact] + public void Test_02_09() + { + } + + [Fact] + public void Test_02_10() + { + } + + [Fact] + public void Test_02_11() + { + } + + [Fact] + public void Test_02_12() + { + } + + [Fact] + public void Test_02_13() + { + } + + [Fact] + public void Test_02_14() + { + } + + [Fact] + public void Test_02_15() + { + } + + [Fact] + public void Test_02_16() + { + } + + [Fact] + public void Test_02_17() + { + } + + [Fact] + public void Test_02_18() + { + } + + [Fact] + public void Test_02_19() + { + } + + [Fact] + public void Test_02_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_03 + { + #region PassingTests + [Fact] + public void Test_03_01() + { + } + + [Fact] + public void Test_03_02() + { + } + + [Fact] + public void Test_03_03() + { + } + + [Fact] + public void Test_03_04() + { + } + + [Fact] + public void Test_03_05() + { + } + + [Fact] + public void Test_03_06() + { + } + + [Fact] + public void Test_03_07() + { + } + + [Fact] + public void Test_03_08() + { + } + + [Fact] + public void Test_03_09() + { + } + + [Fact] + public void Test_03_10() + { + } + + [Fact] + public void Test_03_11() + { + } + + [Fact] + public void Test_03_12() + { + } + + [Fact] + public void Test_03_13() + { + } + + [Fact] + public void Test_03_14() + { + } + + [Fact] + public void Test_03_15() + { + } + + [Fact] + public void Test_03_16() + { + } + + [Fact] + public void Test_03_17() + { + } + + [Fact] + public void Test_03_18() + { + } + + [Fact] + public void Test_03_19() + { + } + + [Fact] + public void Test_03_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_04 + { + #region PassingTests + [Fact] + public void Test_04_01() + { + } + + [Fact] + public void Test_04_02() + { + } + + [Fact] + public void Test_04_03() + { + } + + [Fact] + public void Test_04_04() + { + } + + [Fact] + public void Test_04_05() + { + } + + [Fact] + public void Test_04_06() + { + } + + [Fact] + public void Test_04_07() + { + } + + [Fact] + public void Test_04_08() + { + } + + [Fact] + public void Test_04_09() + { + } + + [Fact] + public void Test_04_10() + { + } + + [Fact] + public void Test_04_11() + { + } + + [Fact] + public void Test_04_12() + { + } + + [Fact] + public void Test_04_13() + { + } + + [Fact] + public void Test_04_14() + { + } + + [Fact] + public void Test_04_15() + { + } + + [Fact] + public void Test_04_16() + { + } + + [Fact] + public void Test_04_17() + { + } + + [Fact] + public void Test_04_18() + { + } + + [Fact] + public void Test_04_19() + { + } + + [Fact] + public void Test_04_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_05 + { + #region PassingTests + [Fact] + public void Test_05_01() + { + } + + [Fact] + public void Test_05_02() + { + } + + [Fact] + public void Test_05_03() + { + } + + [Fact] + public void Test_05_04() + { + } + + [Fact] + public void Test_05_05() + { + } + + [Fact] + public void Test_05_06() + { + } + + [Fact] + public void Test_05_07() + { + } + + [Fact] + public void Test_05_08() + { + } + + [Fact] + public void Test_05_09() + { + } + + [Fact] + public void Test_05_10() + { + } + + [Fact] + public void Test_05_11() + { + } + + [Fact] + public void Test_05_12() + { + } + + [Fact] + public void Test_05_13() + { + } + + [Fact] + public void Test_05_14() + { + } + + [Fact] + public void Test_05_15() + { + } + + [Fact] + public void Test_05_16() + { + } + + [Fact] + public void Test_05_17() + { + } + + [Fact] + public void Test_05_18() + { + } + + [Fact] + public void Test_05_19() + { + } + + [Fact] + public void Test_05_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_06 + { + #region PassingTests + [Fact] + public void Test_06_01() + { + } + + [Fact] + public void Test_06_02() + { + } + + [Fact] + public void Test_06_03() + { + } + + [Fact] + public void Test_06_04() + { + } + + [Fact] + public void Test_06_05() + { + } + + [Fact] + public void Test_06_06() + { + } + + [Fact] + public void Test_06_07() + { + } + + [Fact] + public void Test_06_08() + { + } + + [Fact] + public void Test_06_09() + { + } + + [Fact] + public void Test_06_10() + { + } + + [Fact] + public void Test_06_11() + { + } + + [Fact] + public void Test_06_12() + { + } + + [Fact] + public void Test_06_13() + { + } + + [Fact] + public void Test_06_14() + { + } + + [Fact] + public void Test_06_15() + { + } + + [Fact] + public void Test_06_16() + { + } + + [Fact] + public void Test_06_17() + { + } + + [Fact] + public void Test_06_18() + { + } + + [Fact] + public void Test_06_19() + { + } + + [Fact] + public void Test_06_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_07 + { + #region PassingTests + [Fact] + public void Test_07_01() + { + } + + [Fact] + public void Test_07_02() + { + } + + [Fact] + public void Test_07_03() + { + } + + [Fact] + public void Test_07_04() + { + } + + [Fact] + public void Test_07_05() + { + } + + [Fact] + public void Test_07_06() + { + } + + [Fact] + public void Test_07_07() + { + } + + [Fact] + public void Test_07_08() + { + } + + [Fact] + public void Test_07_09() + { + } + + [Fact] + public void Test_07_10() + { + } + + [Fact] + public void Test_07_11() + { + } + + [Fact] + public void Test_07_12() + { + } + + [Fact] + public void Test_07_13() + { + } + + [Fact] + public void Test_07_14() + { + } + + [Fact] + public void Test_07_15() + { + } + + [Fact] + public void Test_07_16() + { + } + + [Fact] + public void Test_07_17() + { + } + + [Fact] + public void Test_07_18() + { + } + + [Fact] + public void Test_07_19() + { + } + + [Fact] + public void Test_07_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_08 + { + #region PassingTests + [Fact] + public void Test_08_01() + { + } + + [Fact] + public void Test_08_02() + { + } + + [Fact] + public void Test_08_03() + { + } + + [Fact] + public void Test_08_04() + { + } + + [Fact] + public void Test_08_05() + { + } + + [Fact] + public void Test_08_06() + { + } + + [Fact] + public void Test_08_07() + { + } + + [Fact] + public void Test_08_08() + { + } + + [Fact] + public void Test_08_09() + { + } + + [Fact] + public void Test_08_10() + { + } + + [Fact] + public void Test_08_11() + { + } + + [Fact] + public void Test_08_12() + { + } + + [Fact] + public void Test_08_13() + { + } + + [Fact] + public void Test_08_14() + { + } + + [Fact] + public void Test_08_15() + { + } + + [Fact] + public void Test_08_16() + { + } + + [Fact] + public void Test_08_17() + { + } + + [Fact] + public void Test_08_18() + { + } + + [Fact] + public void Test_08_19() + { + } + + [Fact] + public void Test_08_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_09 + { + #region PassingTests + [Fact] + public void Test_09_01() + { + } + + [Fact] + public void Test_09_02() + { + } + + [Fact] + public void Test_09_03() + { + } + + [Fact] + public void Test_09_04() + { + } + + [Fact] + public void Test_09_05() + { + } + + [Fact] + public void Test_09_06() + { + } + + [Fact] + public void Test_09_07() + { + } + + [Fact] + public void Test_09_08() + { + } + + [Fact] + public void Test_09_09() + { + } + + [Fact] + public void Test_09_10() + { + } + + [Fact] + public void Test_09_11() + { + } + + [Fact] + public void Test_09_12() + { + } + + [Fact] + public void Test_09_13() + { + } + + [Fact] + public void Test_09_14() + { + } + + [Fact] + public void Test_09_15() + { + } + + [Fact] + public void Test_09_16() + { + } + + [Fact] + public void Test_09_17() + { + } + + [Fact] + public void Test_09_18() + { + } + + [Fact] + public void Test_09_19() + { + } + + [Fact] + public void Test_09_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_10 + { + #region PassingTests + [Fact] + public void Test_10_01() + { + } + + [Fact] + public void Test_10_02() + { + } + + [Fact] + public void Test_10_03() + { + } + + [Fact] + public void Test_10_04() + { + } + + [Fact] + public void Test_10_05() + { + } + + [Fact] + public void Test_10_06() + { + } + + [Fact] + public void Test_10_07() + { + } + + [Fact] + public void Test_10_08() + { + } + + [Fact] + public void Test_10_09() + { + } + + [Fact] + public void Test_10_10() + { + } + + [Fact] + public void Test_10_11() + { + } + + [Fact] + public void Test_10_12() + { + } + + [Fact] + public void Test_10_13() + { + } + + [Fact] + public void Test_10_14() + { + } + + [Fact] + public void Test_10_15() + { + } + + [Fact] + public void Test_10_16() + { + } + + [Fact] + public void Test_10_17() + { + } + + [Fact] + public void Test_10_18() + { + } + + [Fact] + public void Test_10_19() + { + } + + [Fact] + public void Test_10_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_11 + { + #region PassingTests + [Fact] + public void Test_11_01() + { + } + + [Fact] + public void Test_11_02() + { + } + + [Fact] + public void Test_11_03() + { + } + + [Fact] + public void Test_11_04() + { + } + + [Fact] + public void Test_11_05() + { + } + + [Fact] + public void Test_11_06() + { + } + + [Fact] + public void Test_11_07() + { + } + + [Fact] + public void Test_11_08() + { + } + + [Fact] + public void Test_11_09() + { + } + + [Fact] + public void Test_11_10() + { + } + + [Fact] + public void Test_11_11() + { + } + + [Fact] + public void Test_11_12() + { + } + + [Fact] + public void Test_11_13() + { + } + + [Fact] + public void Test_11_14() + { + } + + [Fact] + public void Test_11_15() + { + } + + [Fact] + public void Test_11_16() + { + } + + [Fact] + public void Test_11_17() + { + } + + [Fact] + public void Test_11_18() + { + } + + [Fact] + public void Test_11_19() + { + } + + [Fact] + public void Test_11_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_12 + { + #region PassingTests + [Fact] + public void Test_12_01() + { + } + + [Fact] + public void Test_12_02() + { + } + + [Fact] + public void Test_12_03() + { + } + + [Fact] + public void Test_12_04() + { + } + + [Fact] + public void Test_12_05() + { + } + + [Fact] + public void Test_12_06() + { + } + + [Fact] + public void Test_12_07() + { + } + + [Fact] + public void Test_12_08() + { + } + + [Fact] + public void Test_12_09() + { + } + + [Fact] + public void Test_12_10() + { + } + + [Fact] + public void Test_12_11() + { + } + + [Fact] + public void Test_12_12() + { + } + + [Fact] + public void Test_12_13() + { + } + + [Fact] + public void Test_12_14() + { + } + + [Fact] + public void Test_12_15() + { + } + + [Fact] + public void Test_12_16() + { + } + + [Fact] + public void Test_12_17() + { + } + + [Fact] + public void Test_12_18() + { + } + + [Fact] + public void Test_12_19() + { + } + + [Fact] + public void Test_12_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_13 + { + #region PassingTests + [Fact] + public void Test_13_01() + { + } + + [Fact] + public void Test_13_02() + { + } + + [Fact] + public void Test_13_03() + { + } + + [Fact] + public void Test_13_04() + { + } + + [Fact] + public void Test_13_05() + { + } + + [Fact] + public void Test_13_06() + { + } + + [Fact] + public void Test_13_07() + { + } + + [Fact] + public void Test_13_08() + { + } + + [Fact] + public void Test_13_09() + { + } + + [Fact] + public void Test_13_10() + { + } + + [Fact] + public void Test_13_11() + { + } + + [Fact] + public void Test_13_12() + { + } + + [Fact] + public void Test_13_13() + { + } + + [Fact] + public void Test_13_14() + { + } + + [Fact] + public void Test_13_15() + { + } + + [Fact] + public void Test_13_16() + { + } + + [Fact] + public void Test_13_17() + { + } + + [Fact] + public void Test_13_18() + { + } + + [Fact] + public void Test_13_19() + { + } + + [Fact] + public void Test_13_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_14 + { + #region PassingTests + [Fact] + public void Test_14_01() + { + } + + [Fact] + public void Test_14_02() + { + } + + [Fact] + public void Test_14_03() + { + } + + [Fact] + public void Test_14_04() + { + } + + [Fact] + public void Test_14_05() + { + } + + [Fact] + public void Test_14_06() + { + } + + [Fact] + public void Test_14_07() + { + } + + [Fact] + public void Test_14_08() + { + } + + [Fact] + public void Test_14_09() + { + } + + [Fact] + public void Test_14_10() + { + } + + [Fact] + public void Test_14_11() + { + } + + [Fact] + public void Test_14_12() + { + } + + [Fact] + public void Test_14_13() + { + } + + [Fact] + public void Test_14_14() + { + } + + [Fact] + public void Test_14_15() + { + } + + [Fact] + public void Test_14_16() + { + } + + [Fact] + public void Test_14_17() + { + } + + [Fact] + public void Test_14_18() + { + } + + [Fact] + public void Test_14_19() + { + } + + [Fact] + public void Test_14_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_15 + { + #region PassingTests + [Fact] + public void Test_15_01() + { + } + + [Fact] + public void Test_15_02() + { + } + + [Fact] + public void Test_15_03() + { + } + + [Fact] + public void Test_15_04() + { + } + + [Fact] + public void Test_15_05() + { + } + + [Fact] + public void Test_15_06() + { + } + + [Fact] + public void Test_15_07() + { + } + + [Fact] + public void Test_15_08() + { + } + + [Fact] + public void Test_15_09() + { + } + + [Fact] + public void Test_15_10() + { + } + + [Fact] + public void Test_15_11() + { + } + + [Fact] + public void Test_15_12() + { + } + + [Fact] + public void Test_15_13() + { + } + + [Fact] + public void Test_15_14() + { + } + + [Fact] + public void Test_15_15() + { + } + + [Fact] + public void Test_15_16() + { + } + + [Fact] + public void Test_15_17() + { + } + + [Fact] + public void Test_15_18() + { + } + + [Fact] + public void Test_15_19() + { + } + + [Fact] + public void Test_15_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_16 + { + #region PassingTests + [Fact] + public void Test_16_01() + { + } + + [Fact] + public void Test_16_02() + { + } + + [Fact] + public void Test_16_03() + { + } + + [Fact] + public void Test_16_04() + { + } + + [Fact] + public void Test_16_05() + { + } + + [Fact] + public void Test_16_06() + { + } + + [Fact] + public void Test_16_07() + { + } + + [Fact] + public void Test_16_08() + { + } + + [Fact] + public void Test_16_09() + { + } + + [Fact] + public void Test_16_10() + { + } + + [Fact] + public void Test_16_11() + { + } + + [Fact] + public void Test_16_12() + { + } + + [Fact] + public void Test_16_13() + { + } + + [Fact] + public void Test_16_14() + { + } + + [Fact] + public void Test_16_15() + { + } + + [Fact] + public void Test_16_16() + { + } + + [Fact] + public void Test_16_17() + { + } + + [Fact] + public void Test_16_18() + { + } + + [Fact] + public void Test_16_19() + { + } + + [Fact] + public void Test_16_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_17 + { + #region PassingTests + [Fact] + public void Test_17_01() + { + } + + [Fact] + public void Test_17_02() + { + } + + [Fact] + public void Test_17_03() + { + } + + [Fact] + public void Test_17_04() + { + } + + [Fact] + public void Test_17_05() + { + } + + [Fact] + public void Test_17_06() + { + } + + [Fact] + public void Test_17_07() + { + } + + [Fact] + public void Test_17_08() + { + } + + [Fact] + public void Test_17_09() + { + } + + [Fact] + public void Test_17_10() + { + } + + [Fact] + public void Test_17_11() + { + } + + [Fact] + public void Test_17_12() + { + } + + [Fact] + public void Test_17_13() + { + } + + [Fact] + public void Test_17_14() + { + } + + [Fact] + public void Test_17_15() + { + } + + [Fact] + public void Test_17_16() + { + } + + [Fact] + public void Test_17_17() + { + } + + [Fact] + public void Test_17_18() + { + } + + [Fact] + public void Test_17_19() + { + } + + [Fact] + public void Test_17_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_18 + { + #region PassingTests + [Fact] + public void Test_18_01() + { + } + + [Fact] + public void Test_18_02() + { + } + + [Fact] + public void Test_18_03() + { + } + + [Fact] + public void Test_18_04() + { + } + + [Fact] + public void Test_18_05() + { + } + + [Fact] + public void Test_18_06() + { + } + + [Fact] + public void Test_18_07() + { + } + + [Fact] + public void Test_18_08() + { + } + + [Fact] + public void Test_18_09() + { + } + + [Fact] + public void Test_18_10() + { + } + + [Fact] + public void Test_18_11() + { + } + + [Fact] + public void Test_18_12() + { + } + + [Fact] + public void Test_18_13() + { + } + + [Fact] + public void Test_18_14() + { + } + + [Fact] + public void Test_18_15() + { + } + + [Fact] + public void Test_18_16() + { + } + + [Fact] + public void Test_18_17() + { + } + + [Fact] + public void Test_18_18() + { + } + + [Fact] + public void Test_18_19() + { + } + + [Fact] + public void Test_18_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_19 + { + #region PassingTests + [Fact] + public void Test_19_01() + { + } + + [Fact] + public void Test_19_02() + { + } + + [Fact] + public void Test_19_03() + { + } + + [Fact] + public void Test_19_04() + { + } + + [Fact] + public void Test_19_05() + { + } + + [Fact] + public void Test_19_06() + { + } + + [Fact] + public void Test_19_07() + { + } + + [Fact] + public void Test_19_08() + { + } + + [Fact] + public void Test_19_09() + { + } + + [Fact] + public void Test_19_10() + { + } + + [Fact] + public void Test_19_11() + { + } + + [Fact] + public void Test_19_12() + { + } + + [Fact] + public void Test_19_13() + { + } + + [Fact] + public void Test_19_14() + { + } + + [Fact] + public void Test_19_15() + { + } + + [Fact] + public void Test_19_16() + { + } + + [Fact] + public void Test_19_17() + { + } + + [Fact] + public void Test_19_18() + { + } + + [Fact] + public void Test_19_19() + { + } + + [Fact] + public void Test_19_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_20 + { + #region PassingTests + [Fact] + public void Test_20_01() + { + } + + [Fact] + public void Test_20_02() + { + } + + [Fact] + public void Test_20_03() + { + } + + [Fact] + public void Test_20_04() + { + } + + [Fact] + public void Test_20_05() + { + } + + [Fact] + public void Test_20_06() + { + } + + [Fact] + public void Test_20_07() + { + } + + [Fact] + public void Test_20_08() + { + } + + [Fact] + public void Test_20_09() + { + } + + [Fact] + public void Test_20_10() + { + } + + [Fact] + public void Test_20_11() + { + } + + [Fact] + public void Test_20_12() + { + } + + [Fact] + public void Test_20_13() + { + } + + [Fact] + public void Test_20_14() + { + } + + [Fact] + public void Test_20_15() + { + } + + [Fact] + public void Test_20_16() + { + } + + [Fact] + public void Test_20_17() + { + } + + [Fact] + public void Test_20_18() + { + } + + [Fact] + public void Test_20_19() + { + } + + [Fact] + public void Test_20_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_21 + { + #region PassingTests + [Fact] + public void Test_21_01() + { + } + + [Fact] + public void Test_21_02() + { + } + + [Fact] + public void Test_21_03() + { + } + + [Fact] + public void Test_21_04() + { + } + + [Fact] + public void Test_21_05() + { + } + + [Fact] + public void Test_21_06() + { + } + + [Fact] + public void Test_21_07() + { + } + + [Fact] + public void Test_21_08() + { + } + + [Fact] + public void Test_21_09() + { + } + + [Fact] + public void Test_21_10() + { + } + + [Fact] + public void Test_21_11() + { + } + + [Fact] + public void Test_21_12() + { + } + + [Fact] + public void Test_21_13() + { + } + + [Fact] + public void Test_21_14() + { + } + + [Fact] + public void Test_21_15() + { + } + + [Fact] + public void Test_21_16() + { + } + + [Fact] + public void Test_21_17() + { + } + + [Fact] + public void Test_21_18() + { + } + + [Fact] + public void Test_21_19() + { + } + + [Fact] + public void Test_21_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_22 + { + #region PassingTests + [Fact] + public void Test_22_01() + { + } + + [Fact] + public void Test_22_02() + { + } + + [Fact] + public void Test_22_03() + { + } + + [Fact] + public void Test_22_04() + { + } + + [Fact] + public void Test_22_05() + { + } + + [Fact] + public void Test_22_06() + { + } + + [Fact] + public void Test_22_07() + { + } + + [Fact] + public void Test_22_08() + { + } + + [Fact] + public void Test_22_09() + { + } + + [Fact] + public void Test_22_10() + { + } + + [Fact] + public void Test_22_11() + { + } + + [Fact] + public void Test_22_12() + { + } + + [Fact] + public void Test_22_13() + { + } + + [Fact] + public void Test_22_14() + { + } + + [Fact] + public void Test_22_15() + { + } + + [Fact] + public void Test_22_16() + { + } + + [Fact] + public void Test_22_17() + { + } + + [Fact] + public void Test_22_18() + { + } + + [Fact] + public void Test_22_19() + { + } + + [Fact] + public void Test_22_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_23 + { + #region PassingTests + [Fact] + public void Test_23_01() + { + } + + [Fact] + public void Test_23_02() + { + } + + [Fact] + public void Test_23_03() + { + } + + [Fact] + public void Test_23_04() + { + } + + [Fact] + public void Test_23_05() + { + } + + [Fact] + public void Test_23_06() + { + } + + [Fact] + public void Test_23_07() + { + } + + [Fact] + public void Test_23_08() + { + } + + [Fact] + public void Test_23_09() + { + } + + [Fact] + public void Test_23_10() + { + } + + [Fact] + public void Test_23_11() + { + } + + [Fact] + public void Test_23_12() + { + } + + [Fact] + public void Test_23_13() + { + } + + [Fact] + public void Test_23_14() + { + } + + [Fact] + public void Test_23_15() + { + } + + [Fact] + public void Test_23_16() + { + } + + [Fact] + public void Test_23_17() + { + } + + [Fact] + public void Test_23_18() + { + } + + [Fact] + public void Test_23_19() + { + } + + [Fact] + public void Test_23_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_24 + { + #region PassingTests + [Fact] + public void Test_24_01() + { + } + + [Fact] + public void Test_24_02() + { + } + + [Fact] + public void Test_24_03() + { + } + + [Fact] + public void Test_24_04() + { + } + + [Fact] + public void Test_24_05() + { + } + + [Fact] + public void Test_24_06() + { + } + + [Fact] + public void Test_24_07() + { + } + + [Fact] + public void Test_24_08() + { + } + + [Fact] + public void Test_24_09() + { + } + + [Fact] + public void Test_24_10() + { + } + + [Fact] + public void Test_24_11() + { + } + + [Fact] + public void Test_24_12() + { + } + + [Fact] + public void Test_24_13() + { + } + + [Fact] + public void Test_24_14() + { + } + + [Fact] + public void Test_24_15() + { + } + + [Fact] + public void Test_24_16() + { + } + + [Fact] + public void Test_24_17() + { + } + + [Fact] + public void Test_24_18() + { + } + + [Fact] + public void Test_24_19() + { + } + + [Fact] + public void Test_24_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_25 + { + #region PassingTests + [Fact] + public void Test_25_01() + { + } + + [Fact] + public void Test_25_02() + { + } + + [Fact] + public void Test_25_03() + { + } + + [Fact] + public void Test_25_04() + { + } + + [Fact] + public void Test_25_05() + { + } + + [Fact] + public void Test_25_06() + { + } + + [Fact] + public void Test_25_07() + { + } + + [Fact] + public void Test_25_08() + { + } + + [Fact] + public void Test_25_09() + { + } + + [Fact] + public void Test_25_10() + { + } + + [Fact] + public void Test_25_11() + { + } + + [Fact] + public void Test_25_12() + { + } + + [Fact] + public void Test_25_13() + { + } + + [Fact] + public void Test_25_14() + { + } + + [Fact] + public void Test_25_15() + { + } + + [Fact] + public void Test_25_16() + { + } + + [Fact] + public void Test_25_17() + { + } + + [Fact] + public void Test_25_18() + { + } + + [Fact] + public void Test_25_19() + { + } + + [Fact] + public void Test_25_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_26 + { + #region PassingTests + [Fact] + public void Test_26_01() + { + } + + [Fact] + public void Test_26_02() + { + } + + [Fact] + public void Test_26_03() + { + } + + [Fact] + public void Test_26_04() + { + } + + [Fact] + public void Test_26_05() + { + } + + [Fact] + public void Test_26_06() + { + } + + [Fact] + public void Test_26_07() + { + } + + [Fact] + public void Test_26_08() + { + } + + [Fact] + public void Test_26_09() + { + } + + [Fact] + public void Test_26_10() + { + } + + [Fact] + public void Test_26_11() + { + } + + [Fact] + public void Test_26_12() + { + } + + [Fact] + public void Test_26_13() + { + } + + [Fact] + public void Test_26_14() + { + } + + [Fact] + public void Test_26_15() + { + } + + [Fact] + public void Test_26_16() + { + } + + [Fact] + public void Test_26_17() + { + } + + [Fact] + public void Test_26_18() + { + } + + [Fact] + public void Test_26_19() + { + } + + [Fact] + public void Test_26_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_27 + { + #region PassingTests + [Fact] + public void Test_27_01() + { + } + + [Fact] + public void Test_27_02() + { + } + + [Fact] + public void Test_27_03() + { + } + + [Fact] + public void Test_27_04() + { + } + + [Fact] + public void Test_27_05() + { + } + + [Fact] + public void Test_27_06() + { + } + + [Fact] + public void Test_27_07() + { + } + + [Fact] + public void Test_27_08() + { + } + + [Fact] + public void Test_27_09() + { + } + + [Fact] + public void Test_27_10() + { + } + + [Fact] + public void Test_27_11() + { + } + + [Fact] + public void Test_27_12() + { + } + + [Fact] + public void Test_27_13() + { + } + + [Fact] + public void Test_27_14() + { + } + + [Fact] + public void Test_27_15() + { + } + + [Fact] + public void Test_27_16() + { + } + + [Fact] + public void Test_27_17() + { + } + + [Fact] + public void Test_27_18() + { + } + + [Fact] + public void Test_27_19() + { + } + + [Fact] + public void Test_27_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_28 + { + #region PassingTests + [Fact] + public void Test_28_01() + { + } + + [Fact] + public void Test_28_02() + { + } + + [Fact] + public void Test_28_03() + { + } + + [Fact] + public void Test_28_04() + { + } + + [Fact] + public void Test_28_05() + { + } + + [Fact] + public void Test_28_06() + { + } + + [Fact] + public void Test_28_07() + { + } + + [Fact] + public void Test_28_08() + { + } + + [Fact] + public void Test_28_09() + { + } + + [Fact] + public void Test_28_10() + { + } + + [Fact] + public void Test_28_11() + { + } + + [Fact] + public void Test_28_12() + { + } + + [Fact] + public void Test_28_13() + { + } + + [Fact] + public void Test_28_14() + { + } + + [Fact] + public void Test_28_15() + { + } + + [Fact] + public void Test_28_16() + { + } + + [Fact] + public void Test_28_17() + { + } + + [Fact] + public void Test_28_18() + { + } + + [Fact] + public void Test_28_19() + { + } + + [Fact] + public void Test_28_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_29 + { + #region PassingTests + [Fact] + public void Test_29_01() + { + } + + [Fact] + public void Test_29_02() + { + } + + [Fact] + public void Test_29_03() + { + } + + [Fact] + public void Test_29_04() + { + } + + [Fact] + public void Test_29_05() + { + } + + [Fact] + public void Test_29_06() + { + } + + [Fact] + public void Test_29_07() + { + } + + [Fact] + public void Test_29_08() + { + } + + [Fact] + public void Test_29_09() + { + } + + [Fact] + public void Test_29_10() + { + } + + [Fact] + public void Test_29_11() + { + } + + [Fact] + public void Test_29_12() + { + } + + [Fact] + public void Test_29_13() + { + } + + [Fact] + public void Test_29_14() + { + } + + [Fact] + public void Test_29_15() + { + } + + [Fact] + public void Test_29_16() + { + } + + [Fact] + public void Test_29_17() + { + } + + [Fact] + public void Test_29_18() + { + } + + [Fact] + public void Test_29_19() + { + } + + [Fact] + public void Test_29_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_30 + { + #region PassingTests + [Fact] + public void Test_30_01() + { + } + + [Fact] + public void Test_30_02() + { + } + + [Fact] + public void Test_30_03() + { + } + + [Fact] + public void Test_30_04() + { + } + + [Fact] + public void Test_30_05() + { + } + + [Fact] + public void Test_30_06() + { + } + + [Fact] + public void Test_30_07() + { + } + + [Fact] + public void Test_30_08() + { + } + + [Fact] + public void Test_30_09() + { + } + + [Fact] + public void Test_30_10() + { + } + + [Fact] + public void Test_30_11() + { + } + + [Fact] + public void Test_30_12() + { + } + + [Fact] + public void Test_30_13() + { + } + + [Fact] + public void Test_30_14() + { + } + + [Fact] + public void Test_30_15() + { + } + + [Fact] + public void Test_30_16() + { + } + + [Fact] + public void Test_30_17() + { + } + + [Fact] + public void Test_30_18() + { + } + + [Fact] + public void Test_30_19() + { + } + + [Fact] + public void Test_30_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_31 + { + #region PassingTests + [Fact] + public void Test_31_01() + { + } + + [Fact] + public void Test_31_02() + { + } + + [Fact] + public void Test_31_03() + { + } + + [Fact] + public void Test_31_04() + { + } + + [Fact] + public void Test_31_05() + { + } + + [Fact] + public void Test_31_06() + { + } + + [Fact] + public void Test_31_07() + { + } + + [Fact] + public void Test_31_08() + { + } + + [Fact] + public void Test_31_09() + { + } + + [Fact] + public void Test_31_10() + { + } + + [Fact] + public void Test_31_11() + { + } + + [Fact] + public void Test_31_12() + { + } + + [Fact] + public void Test_31_13() + { + } + + [Fact] + public void Test_31_14() + { + } + + [Fact] + public void Test_31_15() + { + } + + [Fact] + public void Test_31_16() + { + } + + [Fact] + public void Test_31_17() + { + } + + [Fact] + public void Test_31_18() + { + } + + [Fact] + public void Test_31_19() + { + } + + [Fact] + public void Test_31_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_32 + { + #region PassingTests + [Fact] + public void Test_32_01() + { + } + + [Fact] + public void Test_32_02() + { + } + + [Fact] + public void Test_32_03() + { + } + + [Fact] + public void Test_32_04() + { + } + + [Fact] + public void Test_32_05() + { + } + + [Fact] + public void Test_32_06() + { + } + + [Fact] + public void Test_32_07() + { + } + + [Fact] + public void Test_32_08() + { + } + + [Fact] + public void Test_32_09() + { + } + + [Fact] + public void Test_32_10() + { + } + + [Fact] + public void Test_32_11() + { + } + + [Fact] + public void Test_32_12() + { + } + + [Fact] + public void Test_32_13() + { + } + + [Fact] + public void Test_32_14() + { + } + + [Fact] + public void Test_32_15() + { + } + + [Fact] + public void Test_32_16() + { + } + + [Fact] + public void Test_32_17() + { + } + + [Fact] + public void Test_32_18() + { + } + + [Fact] + public void Test_32_19() + { + } + + [Fact] + public void Test_32_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_33 + { + #region PassingTests + [Fact] + public void Test_33_01() + { + } + + [Fact] + public void Test_33_02() + { + } + + [Fact] + public void Test_33_03() + { + } + + [Fact] + public void Test_33_04() + { + } + + [Fact] + public void Test_33_05() + { + } + + [Fact] + public void Test_33_06() + { + } + + [Fact] + public void Test_33_07() + { + } + + [Fact] + public void Test_33_08() + { + } + + [Fact] + public void Test_33_09() + { + } + + [Fact] + public void Test_33_10() + { + } + + [Fact] + public void Test_33_11() + { + } + + [Fact] + public void Test_33_12() + { + } + + [Fact] + public void Test_33_13() + { + } + + [Fact] + public void Test_33_14() + { + } + + [Fact] + public void Test_33_15() + { + } + + [Fact] + public void Test_33_16() + { + } + + [Fact] + public void Test_33_17() + { + } + + [Fact] + public void Test_33_18() + { + } + + [Fact] + public void Test_33_19() + { + } + + [Fact] + public void Test_33_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_34 + { + #region PassingTests + [Fact] + public void Test_34_01() + { + } + + [Fact] + public void Test_34_02() + { + } + + [Fact] + public void Test_34_03() + { + } + + [Fact] + public void Test_34_04() + { + } + + [Fact] + public void Test_34_05() + { + } + + [Fact] + public void Test_34_06() + { + } + + [Fact] + public void Test_34_07() + { + } + + [Fact] + public void Test_34_08() + { + } + + [Fact] + public void Test_34_09() + { + } + + [Fact] + public void Test_34_10() + { + } + + [Fact] + public void Test_34_11() + { + } + + [Fact] + public void Test_34_12() + { + } + + [Fact] + public void Test_34_13() + { + } + + [Fact] + public void Test_34_14() + { + } + + [Fact] + public void Test_34_15() + { + } + + [Fact] + public void Test_34_16() + { + } + + [Fact] + public void Test_34_17() + { + } + + [Fact] + public void Test_34_18() + { + } + + [Fact] + public void Test_34_19() + { + } + + [Fact] + public void Test_34_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_35 + { + #region PassingTests + [Fact] + public void Test_35_01() + { + } + + [Fact] + public void Test_35_02() + { + } + + [Fact] + public void Test_35_03() + { + } + + [Fact] + public void Test_35_04() + { + } + + [Fact] + public void Test_35_05() + { + } + + [Fact] + public void Test_35_06() + { + } + + [Fact] + public void Test_35_07() + { + } + + [Fact] + public void Test_35_08() + { + } + + [Fact] + public void Test_35_09() + { + } + + [Fact] + public void Test_35_10() + { + } + + [Fact] + public void Test_35_11() + { + } + + [Fact] + public void Test_35_12() + { + } + + [Fact] + public void Test_35_13() + { + } + + [Fact] + public void Test_35_14() + { + } + + [Fact] + public void Test_35_15() + { + } + + [Fact] + public void Test_35_16() + { + } + + [Fact] + public void Test_35_17() + { + } + + [Fact] + public void Test_35_18() + { + } + + [Fact] + public void Test_35_19() + { + } + + [Fact] + public void Test_35_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_36 + { + #region PassingTests + [Fact] + public void Test_36_01() + { + } + + [Fact] + public void Test_36_02() + { + } + + [Fact] + public void Test_36_03() + { + } + + [Fact] + public void Test_36_04() + { + } + + [Fact] + public void Test_36_05() + { + } + + [Fact] + public void Test_36_06() + { + } + + [Fact] + public void Test_36_07() + { + } + + [Fact] + public void Test_36_08() + { + } + + [Fact] + public void Test_36_09() + { + } + + [Fact] + public void Test_36_10() + { + } + + [Fact] + public void Test_36_11() + { + } + + [Fact] + public void Test_36_12() + { + } + + [Fact] + public void Test_36_13() + { + } + + [Fact] + public void Test_36_14() + { + } + + [Fact] + public void Test_36_15() + { + } + + [Fact] + public void Test_36_16() + { + } + + [Fact] + public void Test_36_17() + { + } + + [Fact] + public void Test_36_18() + { + } + + [Fact] + public void Test_36_19() + { + } + + [Fact] + public void Test_36_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_37 + { + #region PassingTests + [Fact] + public void Test_37_01() + { + } + + [Fact] + public void Test_37_02() + { + } + + [Fact] + public void Test_37_03() + { + } + + [Fact] + public void Test_37_04() + { + } + + [Fact] + public void Test_37_05() + { + } + + [Fact] + public void Test_37_06() + { + } + + [Fact] + public void Test_37_07() + { + } + + [Fact] + public void Test_37_08() + { + } + + [Fact] + public void Test_37_09() + { + } + + [Fact] + public void Test_37_10() + { + } + + [Fact] + public void Test_37_11() + { + } + + [Fact] + public void Test_37_12() + { + } + + [Fact] + public void Test_37_13() + { + } + + [Fact] + public void Test_37_14() + { + } + + [Fact] + public void Test_37_15() + { + } + + [Fact] + public void Test_37_16() + { + } + + [Fact] + public void Test_37_17() + { + } + + [Fact] + public void Test_37_18() + { + } + + [Fact] + public void Test_37_19() + { + } + + [Fact] + public void Test_37_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_38 + { + #region PassingTests + [Fact] + public void Test_38_01() + { + } + + [Fact] + public void Test_38_02() + { + } + + [Fact] + public void Test_38_03() + { + } + + [Fact] + public void Test_38_04() + { + } + + [Fact] + public void Test_38_05() + { + } + + [Fact] + public void Test_38_06() + { + } + + [Fact] + public void Test_38_07() + { + } + + [Fact] + public void Test_38_08() + { + } + + [Fact] + public void Test_38_09() + { + } + + [Fact] + public void Test_38_10() + { + } + + [Fact] + public void Test_38_11() + { + } + + [Fact] + public void Test_38_12() + { + } + + [Fact] + public void Test_38_13() + { + } + + [Fact] + public void Test_38_14() + { + } + + [Fact] + public void Test_38_15() + { + } + + [Fact] + public void Test_38_16() + { + } + + [Fact] + public void Test_38_17() + { + } + + [Fact] + public void Test_38_18() + { + } + + [Fact] + public void Test_38_19() + { + } + + [Fact] + public void Test_38_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_39 + { + #region PassingTests + [Fact] + public void Test_39_01() + { + } + + [Fact] + public void Test_39_02() + { + } + + [Fact] + public void Test_39_03() + { + } + + [Fact] + public void Test_39_04() + { + } + + [Fact] + public void Test_39_05() + { + } + + [Fact] + public void Test_39_06() + { + } + + [Fact] + public void Test_39_07() + { + } + + [Fact] + public void Test_39_08() + { + } + + [Fact] + public void Test_39_09() + { + } + + [Fact] + public void Test_39_10() + { + } + + [Fact] + public void Test_39_11() + { + } + + [Fact] + public void Test_39_12() + { + } + + [Fact] + public void Test_39_13() + { + } + + [Fact] + public void Test_39_14() + { + } + + [Fact] + public void Test_39_15() + { + } + + [Fact] + public void Test_39_16() + { + } + + [Fact] + public void Test_39_17() + { + } + + [Fact] + public void Test_39_18() + { + } + + [Fact] + public void Test_39_19() + { + } + + [Fact] + public void Test_39_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_40 + { + #region PassingTests + [Fact] + public void Test_40_01() + { + } + + [Fact] + public void Test_40_02() + { + } + + [Fact] + public void Test_40_03() + { + } + + [Fact] + public void Test_40_04() + { + } + + [Fact] + public void Test_40_05() + { + } + + [Fact] + public void Test_40_06() + { + } + + [Fact] + public void Test_40_07() + { + } + + [Fact] + public void Test_40_08() + { + } + + [Fact] + public void Test_40_09() + { + } + + [Fact] + public void Test_40_10() + { + } + + [Fact] + public void Test_40_11() + { + } + + [Fact] + public void Test_40_12() + { + } + + [Fact] + public void Test_40_13() + { + } + + [Fact] + public void Test_40_14() + { + } + + [Fact] + public void Test_40_15() + { + } + + [Fact] + public void Test_40_16() + { + } + + [Fact] + public void Test_40_17() + { + } + + [Fact] + public void Test_40_18() + { + } + + [Fact] + public void Test_40_19() + { + } + + [Fact] + public void Test_40_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_41 + { + #region PassingTests + [Fact] + public void Test_41_01() + { + } + + [Fact] + public void Test_41_02() + { + } + + [Fact] + public void Test_41_03() + { + } + + [Fact] + public void Test_41_04() + { + } + + [Fact] + public void Test_41_05() + { + } + + [Fact] + public void Test_41_06() + { + } + + [Fact] + public void Test_41_07() + { + } + + [Fact] + public void Test_41_08() + { + } + + [Fact] + public void Test_41_09() + { + } + + [Fact] + public void Test_41_10() + { + } + + [Fact] + public void Test_41_11() + { + } + + [Fact] + public void Test_41_12() + { + } + + [Fact] + public void Test_41_13() + { + } + + [Fact] + public void Test_41_14() + { + } + + [Fact] + public void Test_41_15() + { + } + + [Fact] + public void Test_41_16() + { + } + + [Fact] + public void Test_41_17() + { + } + + [Fact] + public void Test_41_18() + { + } + + [Fact] + public void Test_41_19() + { + } + + [Fact] + public void Test_41_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_42 + { + #region PassingTests + [Fact] + public void Test_42_01() + { + } + + [Fact] + public void Test_42_02() + { + } + + [Fact] + public void Test_42_03() + { + } + + [Fact] + public void Test_42_04() + { + } + + [Fact] + public void Test_42_05() + { + } + + [Fact] + public void Test_42_06() + { + } + + [Fact] + public void Test_42_07() + { + } + + [Fact] + public void Test_42_08() + { + } + + [Fact] + public void Test_42_09() + { + } + + [Fact] + public void Test_42_10() + { + } + + [Fact] + public void Test_42_11() + { + } + + [Fact] + public void Test_42_12() + { + } + + [Fact] + public void Test_42_13() + { + } + + [Fact] + public void Test_42_14() + { + } + + [Fact] + public void Test_42_15() + { + } + + [Fact] + public void Test_42_16() + { + } + + [Fact] + public void Test_42_17() + { + } + + [Fact] + public void Test_42_18() + { + } + + [Fact] + public void Test_42_19() + { + } + + [Fact] + public void Test_42_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_43 + { + #region PassingTests + [Fact] + public void Test_43_01() + { + } + + [Fact] + public void Test_43_02() + { + } + + [Fact] + public void Test_43_03() + { + } + + [Fact] + public void Test_43_04() + { + } + + [Fact] + public void Test_43_05() + { + } + + [Fact] + public void Test_43_06() + { + } + + [Fact] + public void Test_43_07() + { + } + + [Fact] + public void Test_43_08() + { + } + + [Fact] + public void Test_43_09() + { + } + + [Fact] + public void Test_43_10() + { + } + + [Fact] + public void Test_43_11() + { + } + + [Fact] + public void Test_43_12() + { + } + + [Fact] + public void Test_43_13() + { + } + + [Fact] + public void Test_43_14() + { + } + + [Fact] + public void Test_43_15() + { + } + + [Fact] + public void Test_43_16() + { + } + + [Fact] + public void Test_43_17() + { + } + + [Fact] + public void Test_43_18() + { + } + + [Fact] + public void Test_43_19() + { + } + + [Fact] + public void Test_43_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_44 + { + #region PassingTests + [Fact] + public void Test_44_01() + { + } + + [Fact] + public void Test_44_02() + { + } + + [Fact] + public void Test_44_03() + { + } + + [Fact] + public void Test_44_04() + { + } + + [Fact] + public void Test_44_05() + { + } + + [Fact] + public void Test_44_06() + { + } + + [Fact] + public void Test_44_07() + { + } + + [Fact] + public void Test_44_08() + { + } + + [Fact] + public void Test_44_09() + { + } + + [Fact] + public void Test_44_10() + { + } + + [Fact] + public void Test_44_11() + { + } + + [Fact] + public void Test_44_12() + { + } + + [Fact] + public void Test_44_13() + { + } + + [Fact] + public void Test_44_14() + { + } + + [Fact] + public void Test_44_15() + { + } + + [Fact] + public void Test_44_16() + { + } + + [Fact] + public void Test_44_17() + { + } + + [Fact] + public void Test_44_18() + { + } + + [Fact] + public void Test_44_19() + { + } + + [Fact] + public void Test_44_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_45 + { + #region PassingTests + [Fact] + public void Test_45_01() + { + } + + [Fact] + public void Test_45_02() + { + } + + [Fact] + public void Test_45_03() + { + } + + [Fact] + public void Test_45_04() + { + } + + [Fact] + public void Test_45_05() + { + } + + [Fact] + public void Test_45_06() + { + } + + [Fact] + public void Test_45_07() + { + } + + [Fact] + public void Test_45_08() + { + } + + [Fact] + public void Test_45_09() + { + } + + [Fact] + public void Test_45_10() + { + } + + [Fact] + public void Test_45_11() + { + } + + [Fact] + public void Test_45_12() + { + } + + [Fact] + public void Test_45_13() + { + } + + [Fact] + public void Test_45_14() + { + } + + [Fact] + public void Test_45_15() + { + } + + [Fact] + public void Test_45_16() + { + } + + [Fact] + public void Test_45_17() + { + } + + [Fact] + public void Test_45_18() + { + } + + [Fact] + public void Test_45_19() + { + } + + [Fact] + public void Test_45_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_46 + { + #region PassingTests + [Fact] + public void Test_46_01() + { + } + + [Fact] + public void Test_46_02() + { + } + + [Fact] + public void Test_46_03() + { + } + + [Fact] + public void Test_46_04() + { + } + + [Fact] + public void Test_46_05() + { + } + + [Fact] + public void Test_46_06() + { + } + + [Fact] + public void Test_46_07() + { + } + + [Fact] + public void Test_46_08() + { + } + + [Fact] + public void Test_46_09() + { + } + + [Fact] + public void Test_46_10() + { + } + + [Fact] + public void Test_46_11() + { + } + + [Fact] + public void Test_46_12() + { + } + + [Fact] + public void Test_46_13() + { + } + + [Fact] + public void Test_46_14() + { + } + + [Fact] + public void Test_46_15() + { + } + + [Fact] + public void Test_46_16() + { + } + + [Fact] + public void Test_46_17() + { + } + + [Fact] + public void Test_46_18() + { + } + + [Fact] + public void Test_46_19() + { + } + + [Fact] + public void Test_46_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_47 + { + #region PassingTests + [Fact] + public void Test_47_01() + { + } + + [Fact] + public void Test_47_02() + { + } + + [Fact] + public void Test_47_03() + { + } + + [Fact] + public void Test_47_04() + { + } + + [Fact] + public void Test_47_05() + { + } + + [Fact] + public void Test_47_06() + { + } + + [Fact] + public void Test_47_07() + { + } + + [Fact] + public void Test_47_08() + { + } + + [Fact] + public void Test_47_09() + { + } + + [Fact] + public void Test_47_10() + { + } + + [Fact] + public void Test_47_11() + { + } + + [Fact] + public void Test_47_12() + { + } + + [Fact] + public void Test_47_13() + { + } + + [Fact] + public void Test_47_14() + { + } + + [Fact] + public void Test_47_15() + { + } + + [Fact] + public void Test_47_16() + { + } + + [Fact] + public void Test_47_17() + { + } + + [Fact] + public void Test_47_18() + { + } + + [Fact] + public void Test_47_19() + { + } + + [Fact] + public void Test_47_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_48 + { + #region PassingTests + [Fact] + public void Test_48_01() + { + } + + [Fact] + public void Test_48_02() + { + } + + [Fact] + public void Test_48_03() + { + } + + [Fact] + public void Test_48_04() + { + } + + [Fact] + public void Test_48_05() + { + } + + [Fact] + public void Test_48_06() + { + } + + [Fact] + public void Test_48_07() + { + } + + [Fact] + public void Test_48_08() + { + } + + [Fact] + public void Test_48_09() + { + } + + [Fact] + public void Test_48_10() + { + } + + [Fact] + public void Test_48_11() + { + } + + [Fact] + public void Test_48_12() + { + } + + [Fact] + public void Test_48_13() + { + } + + [Fact] + public void Test_48_14() + { + } + + [Fact] + public void Test_48_15() + { + } + + [Fact] + public void Test_48_16() + { + } + + [Fact] + public void Test_48_17() + { + } + + [Fact] + public void Test_48_18() + { + } + + [Fact] + public void Test_48_19() + { + } + + [Fact] + public void Test_48_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_49 + { + #region PassingTests + [Fact] + public void Test_49_01() + { + } + + [Fact] + public void Test_49_02() + { + } + + [Fact] + public void Test_49_03() + { + } + + [Fact] + public void Test_49_04() + { + } + + [Fact] + public void Test_49_05() + { + } + + [Fact] + public void Test_49_06() + { + } + + [Fact] + public void Test_49_07() + { + } + + [Fact] + public void Test_49_08() + { + } + + [Fact] + public void Test_49_09() + { + } + + [Fact] + public void Test_49_10() + { + } + + [Fact] + public void Test_49_11() + { + } + + [Fact] + public void Test_49_12() + { + } + + [Fact] + public void Test_49_13() + { + } + + [Fact] + public void Test_49_14() + { + } + + [Fact] + public void Test_49_15() + { + } + + [Fact] + public void Test_49_16() + { + } + + [Fact] + public void Test_49_17() + { + } + + [Fact] + public void Test_49_18() + { + } + + [Fact] + public void Test_49_19() + { + } + + [Fact] + public void Test_49_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_50 + { + #region PassingTests + [Fact] + public void Test_50_01() + { + } + + [Fact] + public void Test_50_02() + { + } + + [Fact] + public void Test_50_03() + { + } + + [Fact] + public void Test_50_04() + { + } + + [Fact] + public void Test_50_05() + { + } + + [Fact] + public void Test_50_06() + { + } + + [Fact] + public void Test_50_07() + { + } + + [Fact] + public void Test_50_08() + { + } + + [Fact] + public void Test_50_09() + { + } + + [Fact] + public void Test_50_10() + { + } + + [Fact] + public void Test_50_11() + { + } + + [Fact] + public void Test_50_12() + { + } + + [Fact] + public void Test_50_13() + { + } + + [Fact] + public void Test_50_14() + { + } + + [Fact] + public void Test_50_15() + { + } + + [Fact] + public void Test_50_16() + { + } + + [Fact] + public void Test_50_17() + { + } + + [Fact] + public void Test_50_18() + { + } + + [Fact] + public void Test_50_19() + { + } + + [Fact] + public void Test_50_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_51 + { + #region PassingTests + [Fact] + public void Test_51_01() + { + } + + [Fact] + public void Test_51_02() + { + } + + [Fact] + public void Test_51_03() + { + } + + [Fact] + public void Test_51_04() + { + } + + [Fact] + public void Test_51_05() + { + } + + [Fact] + public void Test_51_06() + { + } + + [Fact] + public void Test_51_07() + { + } + + [Fact] + public void Test_51_08() + { + } + + [Fact] + public void Test_51_09() + { + } + + [Fact] + public void Test_51_10() + { + } + + [Fact] + public void Test_51_11() + { + } + + [Fact] + public void Test_51_12() + { + } + + [Fact] + public void Test_51_13() + { + } + + [Fact] + public void Test_51_14() + { + } + + [Fact] + public void Test_51_15() + { + } + + [Fact] + public void Test_51_16() + { + } + + [Fact] + public void Test_51_17() + { + } + + [Fact] + public void Test_51_18() + { + } + + [Fact] + public void Test_51_19() + { + } + + [Fact] + public void Test_51_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_52 + { + #region PassingTests + [Fact] + public void Test_52_01() + { + } + + [Fact] + public void Test_52_02() + { + } + + [Fact] + public void Test_52_03() + { + } + + [Fact] + public void Test_52_04() + { + } + + [Fact] + public void Test_52_05() + { + } + + [Fact] + public void Test_52_06() + { + } + + [Fact] + public void Test_52_07() + { + } + + [Fact] + public void Test_52_08() + { + } + + [Fact] + public void Test_52_09() + { + } + + [Fact] + public void Test_52_10() + { + } + + [Fact] + public void Test_52_11() + { + } + + [Fact] + public void Test_52_12() + { + } + + [Fact] + public void Test_52_13() + { + } + + [Fact] + public void Test_52_14() + { + } + + [Fact] + public void Test_52_15() + { + } + + [Fact] + public void Test_52_16() + { + } + + [Fact] + public void Test_52_17() + { + } + + [Fact] + public void Test_52_18() + { + } + + [Fact] + public void Test_52_19() + { + } + + [Fact] + public void Test_52_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_53 + { + #region PassingTests + [Fact] + public void Test_53_01() + { + } + + [Fact] + public void Test_53_02() + { + } + + [Fact] + public void Test_53_03() + { + } + + [Fact] + public void Test_53_04() + { + } + + [Fact] + public void Test_53_05() + { + } + + [Fact] + public void Test_53_06() + { + } + + [Fact] + public void Test_53_07() + { + } + + [Fact] + public void Test_53_08() + { + } + + [Fact] + public void Test_53_09() + { + } + + [Fact] + public void Test_53_10() + { + } + + [Fact] + public void Test_53_11() + { + } + + [Fact] + public void Test_53_12() + { + } + + [Fact] + public void Test_53_13() + { + } + + [Fact] + public void Test_53_14() + { + } + + [Fact] + public void Test_53_15() + { + } + + [Fact] + public void Test_53_16() + { + } + + [Fact] + public void Test_53_17() + { + } + + [Fact] + public void Test_53_18() + { + } + + [Fact] + public void Test_53_19() + { + } + + [Fact] + public void Test_53_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_54 + { + #region PassingTests + [Fact] + public void Test_54_01() + { + } + + [Fact] + public void Test_54_02() + { + } + + [Fact] + public void Test_54_03() + { + } + + [Fact] + public void Test_54_04() + { + } + + [Fact] + public void Test_54_05() + { + } + + [Fact] + public void Test_54_06() + { + } + + [Fact] + public void Test_54_07() + { + } + + [Fact] + public void Test_54_08() + { + } + + [Fact] + public void Test_54_09() + { + } + + [Fact] + public void Test_54_10() + { + } + + [Fact] + public void Test_54_11() + { + } + + [Fact] + public void Test_54_12() + { + } + + [Fact] + public void Test_54_13() + { + } + + [Fact] + public void Test_54_14() + { + } + + [Fact] + public void Test_54_15() + { + } + + [Fact] + public void Test_54_16() + { + } + + [Fact] + public void Test_54_17() + { + } + + [Fact] + public void Test_54_18() + { + } + + [Fact] + public void Test_54_19() + { + } + + [Fact] + public void Test_54_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_55 + { + #region PassingTests + [Fact] + public void Test_55_01() + { + } + + [Fact] + public void Test_55_02() + { + } + + [Fact] + public void Test_55_03() + { + } + + [Fact] + public void Test_55_04() + { + } + + [Fact] + public void Test_55_05() + { + } + + [Fact] + public void Test_55_06() + { + } + + [Fact] + public void Test_55_07() + { + } + + [Fact] + public void Test_55_08() + { + } + + [Fact] + public void Test_55_09() + { + } + + [Fact] + public void Test_55_10() + { + } + + [Fact] + public void Test_55_11() + { + } + + [Fact] + public void Test_55_12() + { + } + + [Fact] + public void Test_55_13() + { + } + + [Fact] + public void Test_55_14() + { + } + + [Fact] + public void Test_55_15() + { + } + + [Fact] + public void Test_55_16() + { + } + + [Fact] + public void Test_55_17() + { + } + + [Fact] + public void Test_55_18() + { + } + + [Fact] + public void Test_55_19() + { + } + + [Fact] + public void Test_55_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_56 + { + #region PassingTests + [Fact] + public void Test_56_01() + { + } + + [Fact] + public void Test_56_02() + { + } + + [Fact] + public void Test_56_03() + { + } + + [Fact] + public void Test_56_04() + { + } + + [Fact] + public void Test_56_05() + { + } + + [Fact] + public void Test_56_06() + { + } + + [Fact] + public void Test_56_07() + { + } + + [Fact] + public void Test_56_08() + { + } + + [Fact] + public void Test_56_09() + { + } + + [Fact] + public void Test_56_10() + { + } + + [Fact] + public void Test_56_11() + { + } + + [Fact] + public void Test_56_12() + { + } + + [Fact] + public void Test_56_13() + { + } + + [Fact] + public void Test_56_14() + { + } + + [Fact] + public void Test_56_15() + { + } + + [Fact] + public void Test_56_16() + { + } + + [Fact] + public void Test_56_17() + { + } + + [Fact] + public void Test_56_18() + { + } + + [Fact] + public void Test_56_19() + { + } + + [Fact] + public void Test_56_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_57 + { + #region PassingTests + [Fact] + public void Test_57_01() + { + } + + [Fact] + public void Test_57_02() + { + } + + [Fact] + public void Test_57_03() + { + } + + [Fact] + public void Test_57_04() + { + } + + [Fact] + public void Test_57_05() + { + } + + [Fact] + public void Test_57_06() + { + } + + [Fact] + public void Test_57_07() + { + } + + [Fact] + public void Test_57_08() + { + } + + [Fact] + public void Test_57_09() + { + } + + [Fact] + public void Test_57_10() + { + } + + [Fact] + public void Test_57_11() + { + } + + [Fact] + public void Test_57_12() + { + } + + [Fact] + public void Test_57_13() + { + } + + [Fact] + public void Test_57_14() + { + } + + [Fact] + public void Test_57_15() + { + } + + [Fact] + public void Test_57_16() + { + } + + [Fact] + public void Test_57_17() + { + } + + [Fact] + public void Test_57_18() + { + } + + [Fact] + public void Test_57_19() + { + } + + [Fact] + public void Test_57_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_58 + { + #region PassingTests + [Fact] + public void Test_58_01() + { + } + + [Fact] + public void Test_58_02() + { + } + + [Fact] + public void Test_58_03() + { + } + + [Fact] + public void Test_58_04() + { + } + + [Fact] + public void Test_58_05() + { + } + + [Fact] + public void Test_58_06() + { + } + + [Fact] + public void Test_58_07() + { + } + + [Fact] + public void Test_58_08() + { + } + + [Fact] + public void Test_58_09() + { + } + + [Fact] + public void Test_58_10() + { + } + + [Fact] + public void Test_58_11() + { + } + + [Fact] + public void Test_58_12() + { + } + + [Fact] + public void Test_58_13() + { + } + + [Fact] + public void Test_58_14() + { + } + + [Fact] + public void Test_58_15() + { + } + + [Fact] + public void Test_58_16() + { + } + + [Fact] + public void Test_58_17() + { + } + + [Fact] + public void Test_58_18() + { + } + + [Fact] + public void Test_58_19() + { + } + + [Fact] + public void Test_58_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_59 + { + #region PassingTests + [Fact] + public void Test_59_01() + { + } + + [Fact] + public void Test_59_02() + { + } + + [Fact] + public void Test_59_03() + { + } + + [Fact] + public void Test_59_04() + { + } + + [Fact] + public void Test_59_05() + { + } + + [Fact] + public void Test_59_06() + { + } + + [Fact] + public void Test_59_07() + { + } + + [Fact] + public void Test_59_08() + { + } + + [Fact] + public void Test_59_09() + { + } + + [Fact] + public void Test_59_10() + { + } + + [Fact] + public void Test_59_11() + { + } + + [Fact] + public void Test_59_12() + { + } + + [Fact] + public void Test_59_13() + { + } + + [Fact] + public void Test_59_14() + { + } + + [Fact] + public void Test_59_15() + { + } + + [Fact] + public void Test_59_16() + { + } + + [Fact] + public void Test_59_17() + { + } + + [Fact] + public void Test_59_18() + { + } + + [Fact] + public void Test_59_19() + { + } + + [Fact] + public void Test_59_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_60 + { + #region PassingTests + [Fact] + public void Test_60_01() + { + } + + [Fact] + public void Test_60_02() + { + } + + [Fact] + public void Test_60_03() + { + } + + [Fact] + public void Test_60_04() + { + } + + [Fact] + public void Test_60_05() + { + } + + [Fact] + public void Test_60_06() + { + } + + [Fact] + public void Test_60_07() + { + } + + [Fact] + public void Test_60_08() + { + } + + [Fact] + public void Test_60_09() + { + } + + [Fact] + public void Test_60_10() + { + } + + [Fact] + public void Test_60_11() + { + } + + [Fact] + public void Test_60_12() + { + } + + [Fact] + public void Test_60_13() + { + } + + [Fact] + public void Test_60_14() + { + } + + [Fact] + public void Test_60_15() + { + } + + [Fact] + public void Test_60_16() + { + } + + [Fact] + public void Test_60_17() + { + } + + [Fact] + public void Test_60_18() + { + } + + [Fact] + public void Test_60_19() + { + } + + [Fact] + public void Test_60_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_61 + { + #region PassingTests + [Fact] + public void Test_61_01() + { + } + + [Fact] + public void Test_61_02() + { + } + + [Fact] + public void Test_61_03() + { + } + + [Fact] + public void Test_61_04() + { + } + + [Fact] + public void Test_61_05() + { + } + + [Fact] + public void Test_61_06() + { + } + + [Fact] + public void Test_61_07() + { + } + + [Fact] + public void Test_61_08() + { + } + + [Fact] + public void Test_61_09() + { + } + + [Fact] + public void Test_61_10() + { + } + + [Fact] + public void Test_61_11() + { + } + + [Fact] + public void Test_61_12() + { + } + + [Fact] + public void Test_61_13() + { + } + + [Fact] + public void Test_61_14() + { + } + + [Fact] + public void Test_61_15() + { + } + + [Fact] + public void Test_61_16() + { + } + + [Fact] + public void Test_61_17() + { + } + + [Fact] + public void Test_61_18() + { + } + + [Fact] + public void Test_61_19() + { + } + + [Fact] + public void Test_61_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_62 + { + #region PassingTests + [Fact] + public void Test_62_01() + { + } + + [Fact] + public void Test_62_02() + { + } + + [Fact] + public void Test_62_03() + { + } + + [Fact] + public void Test_62_04() + { + } + + [Fact] + public void Test_62_05() + { + } + + [Fact] + public void Test_62_06() + { + } + + [Fact] + public void Test_62_07() + { + } + + [Fact] + public void Test_62_08() + { + } + + [Fact] + public void Test_62_09() + { + } + + [Fact] + public void Test_62_10() + { + } + + [Fact] + public void Test_62_11() + { + } + + [Fact] + public void Test_62_12() + { + } + + [Fact] + public void Test_62_13() + { + } + + [Fact] + public void Test_62_14() + { + } + + [Fact] + public void Test_62_15() + { + } + + [Fact] + public void Test_62_16() + { + } + + [Fact] + public void Test_62_17() + { + } + + [Fact] + public void Test_62_18() + { + } + + [Fact] + public void Test_62_19() + { + } + + [Fact] + public void Test_62_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_63 + { + #region PassingTests + [Fact] + public void Test_63_01() + { + } + + [Fact] + public void Test_63_02() + { + } + + [Fact] + public void Test_63_03() + { + } + + [Fact] + public void Test_63_04() + { + } + + [Fact] + public void Test_63_05() + { + } + + [Fact] + public void Test_63_06() + { + } + + [Fact] + public void Test_63_07() + { + } + + [Fact] + public void Test_63_08() + { + } + + [Fact] + public void Test_63_09() + { + } + + [Fact] + public void Test_63_10() + { + } + + [Fact] + public void Test_63_11() + { + } + + [Fact] + public void Test_63_12() + { + } + + [Fact] + public void Test_63_13() + { + } + + [Fact] + public void Test_63_14() + { + } + + [Fact] + public void Test_63_15() + { + } + + [Fact] + public void Test_63_16() + { + } + + [Fact] + public void Test_63_17() + { + } + + [Fact] + public void Test_63_18() + { + } + + [Fact] + public void Test_63_19() + { + } + + [Fact] + public void Test_63_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_64 + { + #region PassingTests + [Fact] + public void Test_64_01() + { + } + + [Fact] + public void Test_64_02() + { + } + + [Fact] + public void Test_64_03() + { + } + + [Fact] + public void Test_64_04() + { + } + + [Fact] + public void Test_64_05() + { + } + + [Fact] + public void Test_64_06() + { + } + + [Fact] + public void Test_64_07() + { + } + + [Fact] + public void Test_64_08() + { + } + + [Fact] + public void Test_64_09() + { + } + + [Fact] + public void Test_64_10() + { + } + + [Fact] + public void Test_64_11() + { + } + + [Fact] + public void Test_64_12() + { + } + + [Fact] + public void Test_64_13() + { + } + + [Fact] + public void Test_64_14() + { + } + + [Fact] + public void Test_64_15() + { + } + + [Fact] + public void Test_64_16() + { + } + + [Fact] + public void Test_64_17() + { + } + + [Fact] + public void Test_64_18() + { + } + + [Fact] + public void Test_64_19() + { + } + + [Fact] + public void Test_64_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_65 + { + #region PassingTests + [Fact] + public void Test_65_01() + { + } + + [Fact] + public void Test_65_02() + { + } + + [Fact] + public void Test_65_03() + { + } + + [Fact] + public void Test_65_04() + { + } + + [Fact] + public void Test_65_05() + { + } + + [Fact] + public void Test_65_06() + { + } + + [Fact] + public void Test_65_07() + { + } + + [Fact] + public void Test_65_08() + { + } + + [Fact] + public void Test_65_09() + { + } + + [Fact] + public void Test_65_10() + { + } + + [Fact] + public void Test_65_11() + { + } + + [Fact] + public void Test_65_12() + { + } + + [Fact] + public void Test_65_13() + { + } + + [Fact] + public void Test_65_14() + { + } + + [Fact] + public void Test_65_15() + { + } + + [Fact] + public void Test_65_16() + { + } + + [Fact] + public void Test_65_17() + { + } + + [Fact] + public void Test_65_18() + { + } + + [Fact] + public void Test_65_19() + { + } + + [Fact] + public void Test_65_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_66 + { + #region PassingTests + [Fact] + public void Test_66_01() + { + } + + [Fact] + public void Test_66_02() + { + } + + [Fact] + public void Test_66_03() + { + } + + [Fact] + public void Test_66_04() + { + } + + [Fact] + public void Test_66_05() + { + } + + [Fact] + public void Test_66_06() + { + } + + [Fact] + public void Test_66_07() + { + } + + [Fact] + public void Test_66_08() + { + } + + [Fact] + public void Test_66_09() + { + } + + [Fact] + public void Test_66_10() + { + } + + [Fact] + public void Test_66_11() + { + } + + [Fact] + public void Test_66_12() + { + } + + [Fact] + public void Test_66_13() + { + } + + [Fact] + public void Test_66_14() + { + } + + [Fact] + public void Test_66_15() + { + } + + [Fact] + public void Test_66_16() + { + } + + [Fact] + public void Test_66_17() + { + } + + [Fact] + public void Test_66_18() + { + } + + [Fact] + public void Test_66_19() + { + } + + [Fact] + public void Test_66_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_67 + { + #region PassingTests + [Fact] + public void Test_67_01() + { + } + + [Fact] + public void Test_67_02() + { + } + + [Fact] + public void Test_67_03() + { + } + + [Fact] + public void Test_67_04() + { + } + + [Fact] + public void Test_67_05() + { + } + + [Fact] + public void Test_67_06() + { + } + + [Fact] + public void Test_67_07() + { + } + + [Fact] + public void Test_67_08() + { + } + + [Fact] + public void Test_67_09() + { + } + + [Fact] + public void Test_67_10() + { + } + + [Fact] + public void Test_67_11() + { + } + + [Fact] + public void Test_67_12() + { + } + + [Fact] + public void Test_67_13() + { + } + + [Fact] + public void Test_67_14() + { + } + + [Fact] + public void Test_67_15() + { + } + + [Fact] + public void Test_67_16() + { + } + + [Fact] + public void Test_67_17() + { + } + + [Fact] + public void Test_67_18() + { + } + + [Fact] + public void Test_67_19() + { + } + + [Fact] + public void Test_67_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_68 + { + #region PassingTests + [Fact] + public void Test_68_01() + { + } + + [Fact] + public void Test_68_02() + { + } + + [Fact] + public void Test_68_03() + { + } + + [Fact] + public void Test_68_04() + { + } + + [Fact] + public void Test_68_05() + { + } + + [Fact] + public void Test_68_06() + { + } + + [Fact] + public void Test_68_07() + { + } + + [Fact] + public void Test_68_08() + { + } + + [Fact] + public void Test_68_09() + { + } + + [Fact] + public void Test_68_10() + { + } + + [Fact] + public void Test_68_11() + { + } + + [Fact] + public void Test_68_12() + { + } + + [Fact] + public void Test_68_13() + { + } + + [Fact] + public void Test_68_14() + { + } + + [Fact] + public void Test_68_15() + { + } + + [Fact] + public void Test_68_16() + { + } + + [Fact] + public void Test_68_17() + { + } + + [Fact] + public void Test_68_18() + { + } + + [Fact] + public void Test_68_19() + { + } + + [Fact] + public void Test_68_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_69 + { + #region PassingTests + [Fact] + public void Test_69_01() + { + } + + [Fact] + public void Test_69_02() + { + } + + [Fact] + public void Test_69_03() + { + } + + [Fact] + public void Test_69_04() + { + } + + [Fact] + public void Test_69_05() + { + } + + [Fact] + public void Test_69_06() + { + } + + [Fact] + public void Test_69_07() + { + } + + [Fact] + public void Test_69_08() + { + } + + [Fact] + public void Test_69_09() + { + } + + [Fact] + public void Test_69_10() + { + } + + [Fact] + public void Test_69_11() + { + } + + [Fact] + public void Test_69_12() + { + } + + [Fact] + public void Test_69_13() + { + } + + [Fact] + public void Test_69_14() + { + } + + [Fact] + public void Test_69_15() + { + } + + [Fact] + public void Test_69_16() + { + } + + [Fact] + public void Test_69_17() + { + } + + [Fact] + public void Test_69_18() + { + } + + [Fact] + public void Test_69_19() + { + } + + [Fact] + public void Test_69_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_70 + { + #region PassingTests + [Fact] + public void Test_70_01() + { + } + + [Fact] + public void Test_70_02() + { + } + + [Fact] + public void Test_70_03() + { + } + + [Fact] + public void Test_70_04() + { + } + + [Fact] + public void Test_70_05() + { + } + + [Fact] + public void Test_70_06() + { + } + + [Fact] + public void Test_70_07() + { + } + + [Fact] + public void Test_70_08() + { + } + + [Fact] + public void Test_70_09() + { + } + + [Fact] + public void Test_70_10() + { + } + + [Fact] + public void Test_70_11() + { + } + + [Fact] + public void Test_70_12() + { + } + + [Fact] + public void Test_70_13() + { + } + + [Fact] + public void Test_70_14() + { + } + + [Fact] + public void Test_70_15() + { + } + + [Fact] + public void Test_70_16() + { + } + + [Fact] + public void Test_70_17() + { + } + + [Fact] + public void Test_70_18() + { + } + + [Fact] + public void Test_70_19() + { + } + + [Fact] + public void Test_70_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_71 + { + #region PassingTests + [Fact] + public void Test_71_01() + { + } + + [Fact] + public void Test_71_02() + { + } + + [Fact] + public void Test_71_03() + { + } + + [Fact] + public void Test_71_04() + { + } + + [Fact] + public void Test_71_05() + { + } + + [Fact] + public void Test_71_06() + { + } + + [Fact] + public void Test_71_07() + { + } + + [Fact] + public void Test_71_08() + { + } + + [Fact] + public void Test_71_09() + { + } + + [Fact] + public void Test_71_10() + { + } + + [Fact] + public void Test_71_11() + { + } + + [Fact] + public void Test_71_12() + { + } + + [Fact] + public void Test_71_13() + { + } + + [Fact] + public void Test_71_14() + { + } + + [Fact] + public void Test_71_15() + { + } + + [Fact] + public void Test_71_16() + { + } + + [Fact] + public void Test_71_17() + { + } + + [Fact] + public void Test_71_18() + { + } + + [Fact] + public void Test_71_19() + { + } + + [Fact] + public void Test_71_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_72 + { + #region PassingTests + [Fact] + public void Test_72_01() + { + } + + [Fact] + public void Test_72_02() + { + } + + [Fact] + public void Test_72_03() + { + } + + [Fact] + public void Test_72_04() + { + } + + [Fact] + public void Test_72_05() + { + } + + [Fact] + public void Test_72_06() + { + } + + [Fact] + public void Test_72_07() + { + } + + [Fact] + public void Test_72_08() + { + } + + [Fact] + public void Test_72_09() + { + } + + [Fact] + public void Test_72_10() + { + } + + [Fact] + public void Test_72_11() + { + } + + [Fact] + public void Test_72_12() + { + } + + [Fact] + public void Test_72_13() + { + } + + [Fact] + public void Test_72_14() + { + } + + [Fact] + public void Test_72_15() + { + } + + [Fact] + public void Test_72_16() + { + } + + [Fact] + public void Test_72_17() + { + } + + [Fact] + public void Test_72_18() + { + } + + [Fact] + public void Test_72_19() + { + } + + [Fact] + public void Test_72_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_73 + { + #region PassingTests + [Fact] + public void Test_73_01() + { + } + + [Fact] + public void Test_73_02() + { + } + + [Fact] + public void Test_73_03() + { + } + + [Fact] + public void Test_73_04() + { + } + + [Fact] + public void Test_73_05() + { + } + + [Fact] + public void Test_73_06() + { + } + + [Fact] + public void Test_73_07() + { + } + + [Fact] + public void Test_73_08() + { + } + + [Fact] + public void Test_73_09() + { + } + + [Fact] + public void Test_73_10() + { + } + + [Fact] + public void Test_73_11() + { + } + + [Fact] + public void Test_73_12() + { + } + + [Fact] + public void Test_73_13() + { + } + + [Fact] + public void Test_73_14() + { + } + + [Fact] + public void Test_73_15() + { + } + + [Fact] + public void Test_73_16() + { + } + + [Fact] + public void Test_73_17() + { + } + + [Fact] + public void Test_73_18() + { + } + + [Fact] + public void Test_73_19() + { + } + + [Fact] + public void Test_73_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_74 + { + #region PassingTests + [Fact] + public void Test_74_01() + { + } + + [Fact] + public void Test_74_02() + { + } + + [Fact] + public void Test_74_03() + { + } + + [Fact] + public void Test_74_04() + { + } + + [Fact] + public void Test_74_05() + { + } + + [Fact] + public void Test_74_06() + { + } + + [Fact] + public void Test_74_07() + { + } + + [Fact] + public void Test_74_08() + { + } + + [Fact] + public void Test_74_09() + { + } + + [Fact] + public void Test_74_10() + { + } + + [Fact] + public void Test_74_11() + { + } + + [Fact] + public void Test_74_12() + { + } + + [Fact] + public void Test_74_13() + { + } + + [Fact] + public void Test_74_14() + { + } + + [Fact] + public void Test_74_15() + { + } + + [Fact] + public void Test_74_16() + { + } + + [Fact] + public void Test_74_17() + { + } + + [Fact] + public void Test_74_18() + { + } + + [Fact] + public void Test_74_19() + { + } + + [Fact] + public void Test_74_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_75 + { + #region PassingTests + [Fact] + public void Test_75_01() + { + } + + [Fact] + public void Test_75_02() + { + } + + [Fact] + public void Test_75_03() + { + } + + [Fact] + public void Test_75_04() + { + } + + [Fact] + public void Test_75_05() + { + } + + [Fact] + public void Test_75_06() + { + } + + [Fact] + public void Test_75_07() + { + } + + [Fact] + public void Test_75_08() + { + } + + [Fact] + public void Test_75_09() + { + } + + [Fact] + public void Test_75_10() + { + } + + [Fact] + public void Test_75_11() + { + } + + [Fact] + public void Test_75_12() + { + } + + [Fact] + public void Test_75_13() + { + } + + [Fact] + public void Test_75_14() + { + } + + [Fact] + public void Test_75_15() + { + } + + [Fact] + public void Test_75_16() + { + } + + [Fact] + public void Test_75_17() + { + } + + [Fact] + public void Test_75_18() + { + } + + [Fact] + public void Test_75_19() + { + } + + [Fact] + public void Test_75_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_76 + { + #region PassingTests + [Fact] + public void Test_76_01() + { + } + + [Fact] + public void Test_76_02() + { + } + + [Fact] + public void Test_76_03() + { + } + + [Fact] + public void Test_76_04() + { + } + + [Fact] + public void Test_76_05() + { + } + + [Fact] + public void Test_76_06() + { + } + + [Fact] + public void Test_76_07() + { + } + + [Fact] + public void Test_76_08() + { + } + + [Fact] + public void Test_76_09() + { + } + + [Fact] + public void Test_76_10() + { + } + + [Fact] + public void Test_76_11() + { + } + + [Fact] + public void Test_76_12() + { + } + + [Fact] + public void Test_76_13() + { + } + + [Fact] + public void Test_76_14() + { + } + + [Fact] + public void Test_76_15() + { + } + + [Fact] + public void Test_76_16() + { + } + + [Fact] + public void Test_76_17() + { + } + + [Fact] + public void Test_76_18() + { + } + + [Fact] + public void Test_76_19() + { + } + + [Fact] + public void Test_76_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_77 + { + #region PassingTests + [Fact] + public void Test_77_01() + { + } + + [Fact] + public void Test_77_02() + { + } + + [Fact] + public void Test_77_03() + { + } + + [Fact] + public void Test_77_04() + { + } + + [Fact] + public void Test_77_05() + { + } + + [Fact] + public void Test_77_06() + { + } + + [Fact] + public void Test_77_07() + { + } + + [Fact] + public void Test_77_08() + { + } + + [Fact] + public void Test_77_09() + { + } + + [Fact] + public void Test_77_10() + { + } + + [Fact] + public void Test_77_11() + { + } + + [Fact] + public void Test_77_12() + { + } + + [Fact] + public void Test_77_13() + { + } + + [Fact] + public void Test_77_14() + { + } + + [Fact] + public void Test_77_15() + { + } + + [Fact] + public void Test_77_16() + { + } + + [Fact] + public void Test_77_17() + { + } + + [Fact] + public void Test_77_18() + { + } + + [Fact] + public void Test_77_19() + { + } + + [Fact] + public void Test_77_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_78 + { + #region PassingTests + [Fact] + public void Test_78_01() + { + } + + [Fact] + public void Test_78_02() + { + } + + [Fact] + public void Test_78_03() + { + } + + [Fact] + public void Test_78_04() + { + } + + [Fact] + public void Test_78_05() + { + } + + [Fact] + public void Test_78_06() + { + } + + [Fact] + public void Test_78_07() + { + } + + [Fact] + public void Test_78_08() + { + } + + [Fact] + public void Test_78_09() + { + } + + [Fact] + public void Test_78_10() + { + } + + [Fact] + public void Test_78_11() + { + } + + [Fact] + public void Test_78_12() + { + } + + [Fact] + public void Test_78_13() + { + } + + [Fact] + public void Test_78_14() + { + } + + [Fact] + public void Test_78_15() + { + } + + [Fact] + public void Test_78_16() + { + } + + [Fact] + public void Test_78_17() + { + } + + [Fact] + public void Test_78_18() + { + } + + [Fact] + public void Test_78_19() + { + } + + [Fact] + public void Test_78_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_79 + { + #region PassingTests + [Fact] + public void Test_79_01() + { + } + + [Fact] + public void Test_79_02() + { + } + + [Fact] + public void Test_79_03() + { + } + + [Fact] + public void Test_79_04() + { + } + + [Fact] + public void Test_79_05() + { + } + + [Fact] + public void Test_79_06() + { + } + + [Fact] + public void Test_79_07() + { + } + + [Fact] + public void Test_79_08() + { + } + + [Fact] + public void Test_79_09() + { + } + + [Fact] + public void Test_79_10() + { + } + + [Fact] + public void Test_79_11() + { + } + + [Fact] + public void Test_79_12() + { + } + + [Fact] + public void Test_79_13() + { + } + + [Fact] + public void Test_79_14() + { + } + + [Fact] + public void Test_79_15() + { + } + + [Fact] + public void Test_79_16() + { + } + + [Fact] + public void Test_79_17() + { + } + + [Fact] + public void Test_79_18() + { + } + + [Fact] + public void Test_79_19() + { + } + + [Fact] + public void Test_79_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_80 + { + #region PassingTests + [Fact] + public void Test_80_01() + { + } + + [Fact] + public void Test_80_02() + { + } + + [Fact] + public void Test_80_03() + { + } + + [Fact] + public void Test_80_04() + { + } + + [Fact] + public void Test_80_05() + { + } + + [Fact] + public void Test_80_06() + { + } + + [Fact] + public void Test_80_07() + { + } + + [Fact] + public void Test_80_08() + { + } + + [Fact] + public void Test_80_09() + { + } + + [Fact] + public void Test_80_10() + { + } + + [Fact] + public void Test_80_11() + { + } + + [Fact] + public void Test_80_12() + { + } + + [Fact] + public void Test_80_13() + { + } + + [Fact] + public void Test_80_14() + { + } + + [Fact] + public void Test_80_15() + { + } + + [Fact] + public void Test_80_16() + { + } + + [Fact] + public void Test_80_17() + { + } + + [Fact] + public void Test_80_18() + { + } + + [Fact] + public void Test_80_19() + { + } + + [Fact] + public void Test_80_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_81 + { + #region PassingTests + [Fact] + public void Test_81_01() + { + } + + [Fact] + public void Test_81_02() + { + } + + [Fact] + public void Test_81_03() + { + } + + [Fact] + public void Test_81_04() + { + } + + [Fact] + public void Test_81_05() + { + } + + [Fact] + public void Test_81_06() + { + } + + [Fact] + public void Test_81_07() + { + } + + [Fact] + public void Test_81_08() + { + } + + [Fact] + public void Test_81_09() + { + } + + [Fact] + public void Test_81_10() + { + } + + [Fact] + public void Test_81_11() + { + } + + [Fact] + public void Test_81_12() + { + } + + [Fact] + public void Test_81_13() + { + } + + [Fact] + public void Test_81_14() + { + } + + [Fact] + public void Test_81_15() + { + } + + [Fact] + public void Test_81_16() + { + } + + [Fact] + public void Test_81_17() + { + } + + [Fact] + public void Test_81_18() + { + } + + [Fact] + public void Test_81_19() + { + } + + [Fact] + public void Test_81_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_82 + { + #region PassingTests + [Fact] + public void Test_82_01() + { + } + + [Fact] + public void Test_82_02() + { + } + + [Fact] + public void Test_82_03() + { + } + + [Fact] + public void Test_82_04() + { + } + + [Fact] + public void Test_82_05() + { + } + + [Fact] + public void Test_82_06() + { + } + + [Fact] + public void Test_82_07() + { + } + + [Fact] + public void Test_82_08() + { + } + + [Fact] + public void Test_82_09() + { + } + + [Fact] + public void Test_82_10() + { + } + + [Fact] + public void Test_82_11() + { + } + + [Fact] + public void Test_82_12() + { + } + + [Fact] + public void Test_82_13() + { + } + + [Fact] + public void Test_82_14() + { + } + + [Fact] + public void Test_82_15() + { + } + + [Fact] + public void Test_82_16() + { + } + + [Fact] + public void Test_82_17() + { + } + + [Fact] + public void Test_82_18() + { + } + + [Fact] + public void Test_82_19() + { + } + + [Fact] + public void Test_82_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_83 + { + #region PassingTests + [Fact] + public void Test_83_01() + { + } + + [Fact] + public void Test_83_02() + { + } + + [Fact] + public void Test_83_03() + { + } + + [Fact] + public void Test_83_04() + { + } + + [Fact] + public void Test_83_05() + { + } + + [Fact] + public void Test_83_06() + { + } + + [Fact] + public void Test_83_07() + { + } + + [Fact] + public void Test_83_08() + { + } + + [Fact] + public void Test_83_09() + { + } + + [Fact] + public void Test_83_10() + { + } + + [Fact] + public void Test_83_11() + { + } + + [Fact] + public void Test_83_12() + { + } + + [Fact] + public void Test_83_13() + { + } + + [Fact] + public void Test_83_14() + { + } + + [Fact] + public void Test_83_15() + { + } + + [Fact] + public void Test_83_16() + { + } + + [Fact] + public void Test_83_17() + { + } + + [Fact] + public void Test_83_18() + { + } + + [Fact] + public void Test_83_19() + { + } + + [Fact] + public void Test_83_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_84 + { + #region PassingTests + [Fact] + public void Test_84_01() + { + } + + [Fact] + public void Test_84_02() + { + } + + [Fact] + public void Test_84_03() + { + } + + [Fact] + public void Test_84_04() + { + } + + [Fact] + public void Test_84_05() + { + } + + [Fact] + public void Test_84_06() + { + } + + [Fact] + public void Test_84_07() + { + } + + [Fact] + public void Test_84_08() + { + } + + [Fact] + public void Test_84_09() + { + } + + [Fact] + public void Test_84_10() + { + } + + [Fact] + public void Test_84_11() + { + } + + [Fact] + public void Test_84_12() + { + } + + [Fact] + public void Test_84_13() + { + } + + [Fact] + public void Test_84_14() + { + } + + [Fact] + public void Test_84_15() + { + } + + [Fact] + public void Test_84_16() + { + } + + [Fact] + public void Test_84_17() + { + } + + [Fact] + public void Test_84_18() + { + } + + [Fact] + public void Test_84_19() + { + } + + [Fact] + public void Test_84_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_85 + { + #region PassingTests + [Fact] + public void Test_85_01() + { + } + + [Fact] + public void Test_85_02() + { + } + + [Fact] + public void Test_85_03() + { + } + + [Fact] + public void Test_85_04() + { + } + + [Fact] + public void Test_85_05() + { + } + + [Fact] + public void Test_85_06() + { + } + + [Fact] + public void Test_85_07() + { + } + + [Fact] + public void Test_85_08() + { + } + + [Fact] + public void Test_85_09() + { + } + + [Fact] + public void Test_85_10() + { + } + + [Fact] + public void Test_85_11() + { + } + + [Fact] + public void Test_85_12() + { + } + + [Fact] + public void Test_85_13() + { + } + + [Fact] + public void Test_85_14() + { + } + + [Fact] + public void Test_85_15() + { + } + + [Fact] + public void Test_85_16() + { + } + + [Fact] + public void Test_85_17() + { + } + + [Fact] + public void Test_85_18() + { + } + + [Fact] + public void Test_85_19() + { + } + + [Fact] + public void Test_85_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_86 + { + #region PassingTests + [Fact] + public void Test_86_01() + { + } + + [Fact] + public void Test_86_02() + { + } + + [Fact] + public void Test_86_03() + { + } + + [Fact] + public void Test_86_04() + { + } + + [Fact] + public void Test_86_05() + { + } + + [Fact] + public void Test_86_06() + { + } + + [Fact] + public void Test_86_07() + { + } + + [Fact] + public void Test_86_08() + { + } + + [Fact] + public void Test_86_09() + { + } + + [Fact] + public void Test_86_10() + { + } + + [Fact] + public void Test_86_11() + { + } + + [Fact] + public void Test_86_12() + { + } + + [Fact] + public void Test_86_13() + { + } + + [Fact] + public void Test_86_14() + { + } + + [Fact] + public void Test_86_15() + { + } + + [Fact] + public void Test_86_16() + { + } + + [Fact] + public void Test_86_17() + { + } + + [Fact] + public void Test_86_18() + { + } + + [Fact] + public void Test_86_19() + { + } + + [Fact] + public void Test_86_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_87 + { + #region PassingTests + [Fact] + public void Test_87_01() + { + } + + [Fact] + public void Test_87_02() + { + } + + [Fact] + public void Test_87_03() + { + } + + [Fact] + public void Test_87_04() + { + } + + [Fact] + public void Test_87_05() + { + } + + [Fact] + public void Test_87_06() + { + } + + [Fact] + public void Test_87_07() + { + } + + [Fact] + public void Test_87_08() + { + } + + [Fact] + public void Test_87_09() + { + } + + [Fact] + public void Test_87_10() + { + } + + [Fact] + public void Test_87_11() + { + } + + [Fact] + public void Test_87_12() + { + } + + [Fact] + public void Test_87_13() + { + } + + [Fact] + public void Test_87_14() + { + } + + [Fact] + public void Test_87_15() + { + } + + [Fact] + public void Test_87_16() + { + } + + [Fact] + public void Test_87_17() + { + } + + [Fact] + public void Test_87_18() + { + } + + [Fact] + public void Test_87_19() + { + } + + [Fact] + public void Test_87_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_88 + { + #region PassingTests + [Fact] + public void Test_88_01() + { + } + + [Fact] + public void Test_88_02() + { + } + + [Fact] + public void Test_88_03() + { + } + + [Fact] + public void Test_88_04() + { + } + + [Fact] + public void Test_88_05() + { + } + + [Fact] + public void Test_88_06() + { + } + + [Fact] + public void Test_88_07() + { + } + + [Fact] + public void Test_88_08() + { + } + + [Fact] + public void Test_88_09() + { + } + + [Fact] + public void Test_88_10() + { + } + + [Fact] + public void Test_88_11() + { + } + + [Fact] + public void Test_88_12() + { + } + + [Fact] + public void Test_88_13() + { + } + + [Fact] + public void Test_88_14() + { + } + + [Fact] + public void Test_88_15() + { + } + + [Fact] + public void Test_88_16() + { + } + + [Fact] + public void Test_88_17() + { + } + + [Fact] + public void Test_88_18() + { + } + + [Fact] + public void Test_88_19() + { + } + + [Fact] + public void Test_88_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_89 + { + #region PassingTests + [Fact] + public void Test_89_01() + { + } + + [Fact] + public void Test_89_02() + { + } + + [Fact] + public void Test_89_03() + { + } + + [Fact] + public void Test_89_04() + { + } + + [Fact] + public void Test_89_05() + { + } + + [Fact] + public void Test_89_06() + { + } + + [Fact] + public void Test_89_07() + { + } + + [Fact] + public void Test_89_08() + { + } + + [Fact] + public void Test_89_09() + { + } + + [Fact] + public void Test_89_10() + { + } + + [Fact] + public void Test_89_11() + { + } + + [Fact] + public void Test_89_12() + { + } + + [Fact] + public void Test_89_13() + { + } + + [Fact] + public void Test_89_14() + { + } + + [Fact] + public void Test_89_15() + { + } + + [Fact] + public void Test_89_16() + { + } + + [Fact] + public void Test_89_17() + { + } + + [Fact] + public void Test_89_18() + { + } + + [Fact] + public void Test_89_19() + { + } + + [Fact] + public void Test_89_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_90 + { + #region PassingTests + [Fact] + public void Test_90_01() + { + } + + [Fact] + public void Test_90_02() + { + } + + [Fact] + public void Test_90_03() + { + } + + [Fact] + public void Test_90_04() + { + } + + [Fact] + public void Test_90_05() + { + } + + [Fact] + public void Test_90_06() + { + } + + [Fact] + public void Test_90_07() + { + } + + [Fact] + public void Test_90_08() + { + } + + [Fact] + public void Test_90_09() + { + } + + [Fact] + public void Test_90_10() + { + } + + [Fact] + public void Test_90_11() + { + } + + [Fact] + public void Test_90_12() + { + } + + [Fact] + public void Test_90_13() + { + } + + [Fact] + public void Test_90_14() + { + } + + [Fact] + public void Test_90_15() + { + } + + [Fact] + public void Test_90_16() + { + } + + [Fact] + public void Test_90_17() + { + } + + [Fact] + public void Test_90_18() + { + } + + [Fact] + public void Test_90_19() + { + } + + [Fact] + public void Test_90_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_91 + { + #region PassingTests + [Fact] + public void Test_91_01() + { + } + + [Fact] + public void Test_91_02() + { + } + + [Fact] + public void Test_91_03() + { + } + + [Fact] + public void Test_91_04() + { + } + + [Fact] + public void Test_91_05() + { + } + + [Fact] + public void Test_91_06() + { + } + + [Fact] + public void Test_91_07() + { + } + + [Fact] + public void Test_91_08() + { + } + + [Fact] + public void Test_91_09() + { + } + + [Fact] + public void Test_91_10() + { + } + + [Fact] + public void Test_91_11() + { + } + + [Fact] + public void Test_91_12() + { + } + + [Fact] + public void Test_91_13() + { + } + + [Fact] + public void Test_91_14() + { + } + + [Fact] + public void Test_91_15() + { + } + + [Fact] + public void Test_91_16() + { + } + + [Fact] + public void Test_91_17() + { + } + + [Fact] + public void Test_91_18() + { + } + + [Fact] + public void Test_91_19() + { + } + + [Fact] + public void Test_91_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_92 + { + #region PassingTests + [Fact] + public void Test_92_01() + { + } + + [Fact] + public void Test_92_02() + { + } + + [Fact] + public void Test_92_03() + { + } + + [Fact] + public void Test_92_04() + { + } + + [Fact] + public void Test_92_05() + { + } + + [Fact] + public void Test_92_06() + { + } + + [Fact] + public void Test_92_07() + { + } + + [Fact] + public void Test_92_08() + { + } + + [Fact] + public void Test_92_09() + { + } + + [Fact] + public void Test_92_10() + { + } + + [Fact] + public void Test_92_11() + { + } + + [Fact] + public void Test_92_12() + { + } + + [Fact] + public void Test_92_13() + { + } + + [Fact] + public void Test_92_14() + { + } + + [Fact] + public void Test_92_15() + { + } + + [Fact] + public void Test_92_16() + { + } + + [Fact] + public void Test_92_17() + { + } + + [Fact] + public void Test_92_18() + { + } + + [Fact] + public void Test_92_19() + { + } + + [Fact] + public void Test_92_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_93 + { + #region PassingTests + [Fact] + public void Test_93_01() + { + } + + [Fact] + public void Test_93_02() + { + } + + [Fact] + public void Test_93_03() + { + } + + [Fact] + public void Test_93_04() + { + } + + [Fact] + public void Test_93_05() + { + } + + [Fact] + public void Test_93_06() + { + } + + [Fact] + public void Test_93_07() + { + } + + [Fact] + public void Test_93_08() + { + } + + [Fact] + public void Test_93_09() + { + } + + [Fact] + public void Test_93_10() + { + } + + [Fact] + public void Test_93_11() + { + } + + [Fact] + public void Test_93_12() + { + } + + [Fact] + public void Test_93_13() + { + } + + [Fact] + public void Test_93_14() + { + } + + [Fact] + public void Test_93_15() + { + } + + [Fact] + public void Test_93_16() + { + } + + [Fact] + public void Test_93_17() + { + } + + [Fact] + public void Test_93_18() + { + } + + [Fact] + public void Test_93_19() + { + } + + [Fact] + public void Test_93_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_94 + { + #region PassingTests + [Fact] + public void Test_94_01() + { + } + + [Fact] + public void Test_94_02() + { + } + + [Fact] + public void Test_94_03() + { + } + + [Fact] + public void Test_94_04() + { + } + + [Fact] + public void Test_94_05() + { + } + + [Fact] + public void Test_94_06() + { + } + + [Fact] + public void Test_94_07() + { + } + + [Fact] + public void Test_94_08() + { + } + + [Fact] + public void Test_94_09() + { + } + + [Fact] + public void Test_94_10() + { + } + + [Fact] + public void Test_94_11() + { + } + + [Fact] + public void Test_94_12() + { + } + + [Fact] + public void Test_94_13() + { + } + + [Fact] + public void Test_94_14() + { + } + + [Fact] + public void Test_94_15() + { + } + + [Fact] + public void Test_94_16() + { + } + + [Fact] + public void Test_94_17() + { + } + + [Fact] + public void Test_94_18() + { + } + + [Fact] + public void Test_94_19() + { + } + + [Fact] + public void Test_94_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_95 + { + #region PassingTests + [Fact] + public void Test_95_01() + { + } + + [Fact] + public void Test_95_02() + { + } + + [Fact] + public void Test_95_03() + { + } + + [Fact] + public void Test_95_04() + { + } + + [Fact] + public void Test_95_05() + { + } + + [Fact] + public void Test_95_06() + { + } + + [Fact] + public void Test_95_07() + { + } + + [Fact] + public void Test_95_08() + { + } + + [Fact] + public void Test_95_09() + { + } + + [Fact] + public void Test_95_10() + { + } + + [Fact] + public void Test_95_11() + { + } + + [Fact] + public void Test_95_12() + { + } + + [Fact] + public void Test_95_13() + { + } + + [Fact] + public void Test_95_14() + { + } + + [Fact] + public void Test_95_15() + { + } + + [Fact] + public void Test_95_16() + { + } + + [Fact] + public void Test_95_17() + { + } + + [Fact] + public void Test_95_18() + { + } + + [Fact] + public void Test_95_19() + { + } + + [Fact] + public void Test_95_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_96 + { + #region PassingTests + [Fact] + public void Test_96_01() + { + } + + [Fact] + public void Test_96_02() + { + } + + [Fact] + public void Test_96_03() + { + } + + [Fact] + public void Test_96_04() + { + } + + [Fact] + public void Test_96_05() + { + } + + [Fact] + public void Test_96_06() + { + } + + [Fact] + public void Test_96_07() + { + } + + [Fact] + public void Test_96_08() + { + } + + [Fact] + public void Test_96_09() + { + } + + [Fact] + public void Test_96_10() + { + } + + [Fact] + public void Test_96_11() + { + } + + [Fact] + public void Test_96_12() + { + } + + [Fact] + public void Test_96_13() + { + } + + [Fact] + public void Test_96_14() + { + } + + [Fact] + public void Test_96_15() + { + } + + [Fact] + public void Test_96_16() + { + } + + [Fact] + public void Test_96_17() + { + } + + [Fact] + public void Test_96_18() + { + } + + [Fact] + public void Test_96_19() + { + } + + [Fact] + public void Test_96_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_97 + { + #region PassingTests + [Fact] + public void Test_97_01() + { + } + + [Fact] + public void Test_97_02() + { + } + + [Fact] + public void Test_97_03() + { + } + + [Fact] + public void Test_97_04() + { + } + + [Fact] + public void Test_97_05() + { + } + + [Fact] + public void Test_97_06() + { + } + + [Fact] + public void Test_97_07() + { + } + + [Fact] + public void Test_97_08() + { + } + + [Fact] + public void Test_97_09() + { + } + + [Fact] + public void Test_97_10() + { + } + + [Fact] + public void Test_97_11() + { + } + + [Fact] + public void Test_97_12() + { + } + + [Fact] + public void Test_97_13() + { + } + + [Fact] + public void Test_97_14() + { + } + + [Fact] + public void Test_97_15() + { + } + + [Fact] + public void Test_97_16() + { + } + + [Fact] + public void Test_97_17() + { + } + + [Fact] + public void Test_97_18() + { + } + + [Fact] + public void Test_97_19() + { + } + + [Fact] + public void Test_97_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_98 + { + #region PassingTests + [Fact] + public void Test_98_01() + { + } + + [Fact] + public void Test_98_02() + { + } + + [Fact] + public void Test_98_03() + { + } + + [Fact] + public void Test_98_04() + { + } + + [Fact] + public void Test_98_05() + { + } + + [Fact] + public void Test_98_06() + { + } + + [Fact] + public void Test_98_07() + { + } + + [Fact] + public void Test_98_08() + { + } + + [Fact] + public void Test_98_09() + { + } + + [Fact] + public void Test_98_10() + { + } + + [Fact] + public void Test_98_11() + { + } + + [Fact] + public void Test_98_12() + { + } + + [Fact] + public void Test_98_13() + { + } + + [Fact] + public void Test_98_14() + { + } + + [Fact] + public void Test_98_15() + { + } + + [Fact] + public void Test_98_16() + { + } + + [Fact] + public void Test_98_17() + { + } + + [Fact] + public void Test_98_18() + { + } + + [Fact] + public void Test_98_19() + { + } + + [Fact] + public void Test_98_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_99 + { + #region PassingTests + [Fact] + public void Test_99_01() + { + } + + [Fact] + public void Test_99_02() + { + } + + [Fact] + public void Test_99_03() + { + } + + [Fact] + public void Test_99_04() + { + } + + [Fact] + public void Test_99_05() + { + } + + [Fact] + public void Test_99_06() + { + } + + [Fact] + public void Test_99_07() + { + } + + [Fact] + public void Test_99_08() + { + } + + [Fact] + public void Test_99_09() + { + } + + [Fact] + public void Test_99_10() + { + } + + [Fact] + public void Test_99_11() + { + } + + [Fact] + public void Test_99_12() + { + } + + [Fact] + public void Test_99_13() + { + } + + [Fact] + public void Test_99_14() + { + } + + [Fact] + public void Test_99_15() + { + } + + [Fact] + public void Test_99_16() + { + } + + [Fact] + public void Test_99_17() + { + } + + [Fact] + public void Test_99_18() + { + } + + [Fact] + public void Test_99_19() + { + } + + [Fact] + public void Test_99_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_100 + { + #region PassingTests + [Fact] + public void Test_100_01() + { + } + + [Fact] + public void Test_100_02() + { + } + + [Fact] + public void Test_100_03() + { + } + + [Fact] + public void Test_100_04() + { + } + + [Fact] + public void Test_100_05() + { + } + + [Fact] + public void Test_100_06() + { + } + + [Fact] + public void Test_100_07() + { + } + + [Fact] + public void Test_100_08() + { + } + + [Fact] + public void Test_100_09() + { + } + + [Fact] + public void Test_100_10() + { + } + + [Fact] + public void Test_100_11() + { + } + + [Fact] + public void Test_100_12() + { + } + + [Fact] + public void Test_100_13() + { + } + + [Fact] + public void Test_100_14() + { + } + + [Fact] + public void Test_100_15() + { + } + + [Fact] + public void Test_100_16() + { + } + + [Fact] + public void Test_100_17() + { + } + + [Fact] + public void Test_100_18() + { + } + + [Fact] + public void Test_100_19() + { + } + + [Fact] + public void Test_100_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_101 + { + #region PassingTests + [Fact] + public void Test_101_01() + { + } + + [Fact] + public void Test_101_02() + { + } + + [Fact] + public void Test_101_03() + { + } + + [Fact] + public void Test_101_04() + { + } + + [Fact] + public void Test_101_05() + { + } + + [Fact] + public void Test_101_06() + { + } + + [Fact] + public void Test_101_07() + { + } + + [Fact] + public void Test_101_08() + { + } + + [Fact] + public void Test_101_09() + { + } + + [Fact] + public void Test_101_10() + { + } + + [Fact] + public void Test_101_11() + { + } + + [Fact] + public void Test_101_12() + { + } + + [Fact] + public void Test_101_13() + { + } + + [Fact] + public void Test_101_14() + { + } + + [Fact] + public void Test_101_15() + { + } + + [Fact] + public void Test_101_16() + { + } + + [Fact] + public void Test_101_17() + { + } + + [Fact] + public void Test_101_18() + { + } + + [Fact] + public void Test_101_19() + { + } + + [Fact] + public void Test_101_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_102 + { + #region PassingTests + [Fact] + public void Test_102_01() + { + } + + [Fact] + public void Test_102_02() + { + } + + [Fact] + public void Test_102_03() + { + } + + [Fact] + public void Test_102_04() + { + } + + [Fact] + public void Test_102_05() + { + } + + [Fact] + public void Test_102_06() + { + } + + [Fact] + public void Test_102_07() + { + } + + [Fact] + public void Test_102_08() + { + } + + [Fact] + public void Test_102_09() + { + } + + [Fact] + public void Test_102_10() + { + } + + [Fact] + public void Test_102_11() + { + } + + [Fact] + public void Test_102_12() + { + } + + [Fact] + public void Test_102_13() + { + } + + [Fact] + public void Test_102_14() + { + } + + [Fact] + public void Test_102_15() + { + } + + [Fact] + public void Test_102_16() + { + } + + [Fact] + public void Test_102_17() + { + } + + [Fact] + public void Test_102_18() + { + } + + [Fact] + public void Test_102_19() + { + } + + [Fact] + public void Test_102_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_103 + { + #region PassingTests + [Fact] + public void Test_103_01() + { + } + + [Fact] + public void Test_103_02() + { + } + + [Fact] + public void Test_103_03() + { + } + + [Fact] + public void Test_103_04() + { + } + + [Fact] + public void Test_103_05() + { + } + + [Fact] + public void Test_103_06() + { + } + + [Fact] + public void Test_103_07() + { + } + + [Fact] + public void Test_103_08() + { + } + + [Fact] + public void Test_103_09() + { + } + + [Fact] + public void Test_103_10() + { + } + + [Fact] + public void Test_103_11() + { + } + + [Fact] + public void Test_103_12() + { + } + + [Fact] + public void Test_103_13() + { + } + + [Fact] + public void Test_103_14() + { + } + + [Fact] + public void Test_103_15() + { + } + + [Fact] + public void Test_103_16() + { + } + + [Fact] + public void Test_103_17() + { + } + + [Fact] + public void Test_103_18() + { + } + + [Fact] + public void Test_103_19() + { + } + + [Fact] + public void Test_103_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_104 + { + #region PassingTests + [Fact] + public void Test_104_01() + { + } + + [Fact] + public void Test_104_02() + { + } + + [Fact] + public void Test_104_03() + { + } + + [Fact] + public void Test_104_04() + { + } + + [Fact] + public void Test_104_05() + { + } + + [Fact] + public void Test_104_06() + { + } + + [Fact] + public void Test_104_07() + { + } + + [Fact] + public void Test_104_08() + { + } + + [Fact] + public void Test_104_09() + { + } + + [Fact] + public void Test_104_10() + { + } + + [Fact] + public void Test_104_11() + { + } + + [Fact] + public void Test_104_12() + { + } + + [Fact] + public void Test_104_13() + { + } + + [Fact] + public void Test_104_14() + { + } + + [Fact] + public void Test_104_15() + { + } + + [Fact] + public void Test_104_16() + { + } + + [Fact] + public void Test_104_17() + { + } + + [Fact] + public void Test_104_18() + { + } + + [Fact] + public void Test_104_19() + { + } + + [Fact] + public void Test_104_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_105 + { + #region PassingTests + [Fact] + public void Test_105_01() + { + } + + [Fact] + public void Test_105_02() + { + } + + [Fact] + public void Test_105_03() + { + } + + [Fact] + public void Test_105_04() + { + } + + [Fact] + public void Test_105_05() + { + } + + [Fact] + public void Test_105_06() + { + } + + [Fact] + public void Test_105_07() + { + } + + [Fact] + public void Test_105_08() + { + } + + [Fact] + public void Test_105_09() + { + } + + [Fact] + public void Test_105_10() + { + } + + [Fact] + public void Test_105_11() + { + } + + [Fact] + public void Test_105_12() + { + } + + [Fact] + public void Test_105_13() + { + } + + [Fact] + public void Test_105_14() + { + } + + [Fact] + public void Test_105_15() + { + } + + [Fact] + public void Test_105_16() + { + } + + [Fact] + public void Test_105_17() + { + } + + [Fact] + public void Test_105_18() + { + } + + [Fact] + public void Test_105_19() + { + } + + [Fact] + public void Test_105_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_106 + { + #region PassingTests + [Fact] + public void Test_106_01() + { + } + + [Fact] + public void Test_106_02() + { + } + + [Fact] + public void Test_106_03() + { + } + + [Fact] + public void Test_106_04() + { + } + + [Fact] + public void Test_106_05() + { + } + + [Fact] + public void Test_106_06() + { + } + + [Fact] + public void Test_106_07() + { + } + + [Fact] + public void Test_106_08() + { + } + + [Fact] + public void Test_106_09() + { + } + + [Fact] + public void Test_106_10() + { + } + + [Fact] + public void Test_106_11() + { + } + + [Fact] + public void Test_106_12() + { + } + + [Fact] + public void Test_106_13() + { + } + + [Fact] + public void Test_106_14() + { + } + + [Fact] + public void Test_106_15() + { + } + + [Fact] + public void Test_106_16() + { + } + + [Fact] + public void Test_106_17() + { + } + + [Fact] + public void Test_106_18() + { + } + + [Fact] + public void Test_106_19() + { + } + + [Fact] + public void Test_106_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_107 + { + #region PassingTests + [Fact] + public void Test_107_01() + { + } + + [Fact] + public void Test_107_02() + { + } + + [Fact] + public void Test_107_03() + { + } + + [Fact] + public void Test_107_04() + { + } + + [Fact] + public void Test_107_05() + { + } + + [Fact] + public void Test_107_06() + { + } + + [Fact] + public void Test_107_07() + { + } + + [Fact] + public void Test_107_08() + { + } + + [Fact] + public void Test_107_09() + { + } + + [Fact] + public void Test_107_10() + { + } + + [Fact] + public void Test_107_11() + { + } + + [Fact] + public void Test_107_12() + { + } + + [Fact] + public void Test_107_13() + { + } + + [Fact] + public void Test_107_14() + { + } + + [Fact] + public void Test_107_15() + { + } + + [Fact] + public void Test_107_16() + { + } + + [Fact] + public void Test_107_17() + { + } + + [Fact] + public void Test_107_18() + { + } + + [Fact] + public void Test_107_19() + { + } + + [Fact] + public void Test_107_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_108 + { + #region PassingTests + [Fact] + public void Test_108_01() + { + } + + [Fact] + public void Test_108_02() + { + } + + [Fact] + public void Test_108_03() + { + } + + [Fact] + public void Test_108_04() + { + } + + [Fact] + public void Test_108_05() + { + } + + [Fact] + public void Test_108_06() + { + } + + [Fact] + public void Test_108_07() + { + } + + [Fact] + public void Test_108_08() + { + } + + [Fact] + public void Test_108_09() + { + } + + [Fact] + public void Test_108_10() + { + } + + [Fact] + public void Test_108_11() + { + } + + [Fact] + public void Test_108_12() + { + } + + [Fact] + public void Test_108_13() + { + } + + [Fact] + public void Test_108_14() + { + } + + [Fact] + public void Test_108_15() + { + } + + [Fact] + public void Test_108_16() + { + } + + [Fact] + public void Test_108_17() + { + } + + [Fact] + public void Test_108_18() + { + } + + [Fact] + public void Test_108_19() + { + } + + [Fact] + public void Test_108_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_109 + { + #region PassingTests + [Fact] + public void Test_109_01() + { + } + + [Fact] + public void Test_109_02() + { + } + + [Fact] + public void Test_109_03() + { + } + + [Fact] + public void Test_109_04() + { + } + + [Fact] + public void Test_109_05() + { + } + + [Fact] + public void Test_109_06() + { + } + + [Fact] + public void Test_109_07() + { + } + + [Fact] + public void Test_109_08() + { + } + + [Fact] + public void Test_109_09() + { + } + + [Fact] + public void Test_109_10() + { + } + + [Fact] + public void Test_109_11() + { + } + + [Fact] + public void Test_109_12() + { + } + + [Fact] + public void Test_109_13() + { + } + + [Fact] + public void Test_109_14() + { + } + + [Fact] + public void Test_109_15() + { + } + + [Fact] + public void Test_109_16() + { + } + + [Fact] + public void Test_109_17() + { + } + + [Fact] + public void Test_109_18() + { + } + + [Fact] + public void Test_109_19() + { + } + + [Fact] + public void Test_109_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_110 + { + #region PassingTests + [Fact] + public void Test_110_01() + { + } + + [Fact] + public void Test_110_02() + { + } + + [Fact] + public void Test_110_03() + { + } + + [Fact] + public void Test_110_04() + { + } + + [Fact] + public void Test_110_05() + { + } + + [Fact] + public void Test_110_06() + { + } + + [Fact] + public void Test_110_07() + { + } + + [Fact] + public void Test_110_08() + { + } + + [Fact] + public void Test_110_09() + { + } + + [Fact] + public void Test_110_10() + { + } + + [Fact] + public void Test_110_11() + { + } + + [Fact] + public void Test_110_12() + { + } + + [Fact] + public void Test_110_13() + { + } + + [Fact] + public void Test_110_14() + { + } + + [Fact] + public void Test_110_15() + { + } + + [Fact] + public void Test_110_16() + { + } + + [Fact] + public void Test_110_17() + { + } + + [Fact] + public void Test_110_18() + { + } + + [Fact] + public void Test_110_19() + { + } + + [Fact] + public void Test_110_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_111 + { + #region PassingTests + [Fact] + public void Test_111_01() + { + } + + [Fact] + public void Test_111_02() + { + } + + [Fact] + public void Test_111_03() + { + } + + [Fact] + public void Test_111_04() + { + } + + [Fact] + public void Test_111_05() + { + } + + [Fact] + public void Test_111_06() + { + } + + [Fact] + public void Test_111_07() + { + } + + [Fact] + public void Test_111_08() + { + } + + [Fact] + public void Test_111_09() + { + } + + [Fact] + public void Test_111_10() + { + } + + [Fact] + public void Test_111_11() + { + } + + [Fact] + public void Test_111_12() + { + } + + [Fact] + public void Test_111_13() + { + } + + [Fact] + public void Test_111_14() + { + } + + [Fact] + public void Test_111_15() + { + } + + [Fact] + public void Test_111_16() + { + } + + [Fact] + public void Test_111_17() + { + } + + [Fact] + public void Test_111_18() + { + } + + [Fact] + public void Test_111_19() + { + } + + [Fact] + public void Test_111_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_112 + { + #region PassingTests + [Fact] + public void Test_112_01() + { + } + + [Fact] + public void Test_112_02() + { + } + + [Fact] + public void Test_112_03() + { + } + + [Fact] + public void Test_112_04() + { + } + + [Fact] + public void Test_112_05() + { + } + + [Fact] + public void Test_112_06() + { + } + + [Fact] + public void Test_112_07() + { + } + + [Fact] + public void Test_112_08() + { + } + + [Fact] + public void Test_112_09() + { + } + + [Fact] + public void Test_112_10() + { + } + + [Fact] + public void Test_112_11() + { + } + + [Fact] + public void Test_112_12() + { + } + + [Fact] + public void Test_112_13() + { + } + + [Fact] + public void Test_112_14() + { + } + + [Fact] + public void Test_112_15() + { + } + + [Fact] + public void Test_112_16() + { + } + + [Fact] + public void Test_112_17() + { + } + + [Fact] + public void Test_112_18() + { + } + + [Fact] + public void Test_112_19() + { + } + + [Fact] + public void Test_112_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_113 + { + #region PassingTests + [Fact] + public void Test_113_01() + { + } + + [Fact] + public void Test_113_02() + { + } + + [Fact] + public void Test_113_03() + { + } + + [Fact] + public void Test_113_04() + { + } + + [Fact] + public void Test_113_05() + { + } + + [Fact] + public void Test_113_06() + { + } + + [Fact] + public void Test_113_07() + { + } + + [Fact] + public void Test_113_08() + { + } + + [Fact] + public void Test_113_09() + { + } + + [Fact] + public void Test_113_10() + { + } + + [Fact] + public void Test_113_11() + { + } + + [Fact] + public void Test_113_12() + { + } + + [Fact] + public void Test_113_13() + { + } + + [Fact] + public void Test_113_14() + { + } + + [Fact] + public void Test_113_15() + { + } + + [Fact] + public void Test_113_16() + { + } + + [Fact] + public void Test_113_17() + { + } + + [Fact] + public void Test_113_18() + { + } + + [Fact] + public void Test_113_19() + { + } + + [Fact] + public void Test_113_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_114 + { + #region PassingTests + [Fact] + public void Test_114_01() + { + } + + [Fact] + public void Test_114_02() + { + } + + [Fact] + public void Test_114_03() + { + } + + [Fact] + public void Test_114_04() + { + } + + [Fact] + public void Test_114_05() + { + } + + [Fact] + public void Test_114_06() + { + } + + [Fact] + public void Test_114_07() + { + } + + [Fact] + public void Test_114_08() + { + } + + [Fact] + public void Test_114_09() + { + } + + [Fact] + public void Test_114_10() + { + } + + [Fact] + public void Test_114_11() + { + } + + [Fact] + public void Test_114_12() + { + } + + [Fact] + public void Test_114_13() + { + } + + [Fact] + public void Test_114_14() + { + } + + [Fact] + public void Test_114_15() + { + } + + [Fact] + public void Test_114_16() + { + } + + [Fact] + public void Test_114_17() + { + } + + [Fact] + public void Test_114_18() + { + } + + [Fact] + public void Test_114_19() + { + } + + [Fact] + public void Test_114_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_115 + { + #region PassingTests + [Fact] + public void Test_115_01() + { + } + + [Fact] + public void Test_115_02() + { + } + + [Fact] + public void Test_115_03() + { + } + + [Fact] + public void Test_115_04() + { + } + + [Fact] + public void Test_115_05() + { + } + + [Fact] + public void Test_115_06() + { + } + + [Fact] + public void Test_115_07() + { + } + + [Fact] + public void Test_115_08() + { + } + + [Fact] + public void Test_115_09() + { + } + + [Fact] + public void Test_115_10() + { + } + + [Fact] + public void Test_115_11() + { + } + + [Fact] + public void Test_115_12() + { + } + + [Fact] + public void Test_115_13() + { + } + + [Fact] + public void Test_115_14() + { + } + + [Fact] + public void Test_115_15() + { + } + + [Fact] + public void Test_115_16() + { + } + + [Fact] + public void Test_115_17() + { + } + + [Fact] + public void Test_115_18() + { + } + + [Fact] + public void Test_115_19() + { + } + + [Fact] + public void Test_115_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_116 + { + #region PassingTests + [Fact] + public void Test_116_01() + { + } + + [Fact] + public void Test_116_02() + { + } + + [Fact] + public void Test_116_03() + { + } + + [Fact] + public void Test_116_04() + { + } + + [Fact] + public void Test_116_05() + { + } + + [Fact] + public void Test_116_06() + { + } + + [Fact] + public void Test_116_07() + { + } + + [Fact] + public void Test_116_08() + { + } + + [Fact] + public void Test_116_09() + { + } + + [Fact] + public void Test_116_10() + { + } + + [Fact] + public void Test_116_11() + { + } + + [Fact] + public void Test_116_12() + { + } + + [Fact] + public void Test_116_13() + { + } + + [Fact] + public void Test_116_14() + { + } + + [Fact] + public void Test_116_15() + { + } + + [Fact] + public void Test_116_16() + { + } + + [Fact] + public void Test_116_17() + { + } + + [Fact] + public void Test_116_18() + { + } + + [Fact] + public void Test_116_19() + { + } + + [Fact] + public void Test_116_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_117 + { + #region PassingTests + [Fact] + public void Test_117_01() + { + } + + [Fact] + public void Test_117_02() + { + } + + [Fact] + public void Test_117_03() + { + } + + [Fact] + public void Test_117_04() + { + } + + [Fact] + public void Test_117_05() + { + } + + [Fact] + public void Test_117_06() + { + } + + [Fact] + public void Test_117_07() + { + } + + [Fact] + public void Test_117_08() + { + } + + [Fact] + public void Test_117_09() + { + } + + [Fact] + public void Test_117_10() + { + } + + [Fact] + public void Test_117_11() + { + } + + [Fact] + public void Test_117_12() + { + } + + [Fact] + public void Test_117_13() + { + } + + [Fact] + public void Test_117_14() + { + } + + [Fact] + public void Test_117_15() + { + } + + [Fact] + public void Test_117_16() + { + } + + [Fact] + public void Test_117_17() + { + } + + [Fact] + public void Test_117_18() + { + } + + [Fact] + public void Test_117_19() + { + } + + [Fact] + public void Test_117_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_118 + { + #region PassingTests + [Fact] + public void Test_118_01() + { + } + + [Fact] + public void Test_118_02() + { + } + + [Fact] + public void Test_118_03() + { + } + + [Fact] + public void Test_118_04() + { + } + + [Fact] + public void Test_118_05() + { + } + + [Fact] + public void Test_118_06() + { + } + + [Fact] + public void Test_118_07() + { + } + + [Fact] + public void Test_118_08() + { + } + + [Fact] + public void Test_118_09() + { + } + + [Fact] + public void Test_118_10() + { + } + + [Fact] + public void Test_118_11() + { + } + + [Fact] + public void Test_118_12() + { + } + + [Fact] + public void Test_118_13() + { + } + + [Fact] + public void Test_118_14() + { + } + + [Fact] + public void Test_118_15() + { + } + + [Fact] + public void Test_118_16() + { + } + + [Fact] + public void Test_118_17() + { + } + + [Fact] + public void Test_118_18() + { + } + + [Fact] + public void Test_118_19() + { + } + + [Fact] + public void Test_118_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_119 + { + #region PassingTests + [Fact] + public void Test_119_01() + { + } + + [Fact] + public void Test_119_02() + { + } + + [Fact] + public void Test_119_03() + { + } + + [Fact] + public void Test_119_04() + { + } + + [Fact] + public void Test_119_05() + { + } + + [Fact] + public void Test_119_06() + { + } + + [Fact] + public void Test_119_07() + { + } + + [Fact] + public void Test_119_08() + { + } + + [Fact] + public void Test_119_09() + { + } + + [Fact] + public void Test_119_10() + { + } + + [Fact] + public void Test_119_11() + { + } + + [Fact] + public void Test_119_12() + { + } + + [Fact] + public void Test_119_13() + { + } + + [Fact] + public void Test_119_14() + { + } + + [Fact] + public void Test_119_15() + { + } + + [Fact] + public void Test_119_16() + { + } + + [Fact] + public void Test_119_17() + { + } + + [Fact] + public void Test_119_18() + { + } + + [Fact] + public void Test_119_19() + { + } + + [Fact] + public void Test_119_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_120 + { + #region PassingTests + [Fact] + public void Test_120_01() + { + } + + [Fact] + public void Test_120_02() + { + } + + [Fact] + public void Test_120_03() + { + } + + [Fact] + public void Test_120_04() + { + } + + [Fact] + public void Test_120_05() + { + } + + [Fact] + public void Test_120_06() + { + } + + [Fact] + public void Test_120_07() + { + } + + [Fact] + public void Test_120_08() + { + } + + [Fact] + public void Test_120_09() + { + } + + [Fact] + public void Test_120_10() + { + } + + [Fact] + public void Test_120_11() + { + } + + [Fact] + public void Test_120_12() + { + } + + [Fact] + public void Test_120_13() + { + } + + [Fact] + public void Test_120_14() + { + } + + [Fact] + public void Test_120_15() + { + } + + [Fact] + public void Test_120_16() + { + } + + [Fact] + public void Test_120_17() + { + } + + [Fact] + public void Test_120_18() + { + } + + [Fact] + public void Test_120_19() + { + } + + [Fact] + public void Test_120_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_121 + { + #region PassingTests + [Fact] + public void Test_121_01() + { + } + + [Fact] + public void Test_121_02() + { + } + + [Fact] + public void Test_121_03() + { + } + + [Fact] + public void Test_121_04() + { + } + + [Fact] + public void Test_121_05() + { + } + + [Fact] + public void Test_121_06() + { + } + + [Fact] + public void Test_121_07() + { + } + + [Fact] + public void Test_121_08() + { + } + + [Fact] + public void Test_121_09() + { + } + + [Fact] + public void Test_121_10() + { + } + + [Fact] + public void Test_121_11() + { + } + + [Fact] + public void Test_121_12() + { + } + + [Fact] + public void Test_121_13() + { + } + + [Fact] + public void Test_121_14() + { + } + + [Fact] + public void Test_121_15() + { + } + + [Fact] + public void Test_121_16() + { + } + + [Fact] + public void Test_121_17() + { + } + + [Fact] + public void Test_121_18() + { + } + + [Fact] + public void Test_121_19() + { + } + + [Fact] + public void Test_121_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_122 + { + #region PassingTests + [Fact] + public void Test_122_01() + { + } + + [Fact] + public void Test_122_02() + { + } + + [Fact] + public void Test_122_03() + { + } + + [Fact] + public void Test_122_04() + { + } + + [Fact] + public void Test_122_05() + { + } + + [Fact] + public void Test_122_06() + { + } + + [Fact] + public void Test_122_07() + { + } + + [Fact] + public void Test_122_08() + { + } + + [Fact] + public void Test_122_09() + { + } + + [Fact] + public void Test_122_10() + { + } + + [Fact] + public void Test_122_11() + { + } + + [Fact] + public void Test_122_12() + { + } + + [Fact] + public void Test_122_13() + { + } + + [Fact] + public void Test_122_14() + { + } + + [Fact] + public void Test_122_15() + { + } + + [Fact] + public void Test_122_16() + { + } + + [Fact] + public void Test_122_17() + { + } + + [Fact] + public void Test_122_18() + { + } + + [Fact] + public void Test_122_19() + { + } + + [Fact] + public void Test_122_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_123 + { + #region PassingTests + [Fact] + public void Test_123_01() + { + } + + [Fact] + public void Test_123_02() + { + } + + [Fact] + public void Test_123_03() + { + } + + [Fact] + public void Test_123_04() + { + } + + [Fact] + public void Test_123_05() + { + } + + [Fact] + public void Test_123_06() + { + } + + [Fact] + public void Test_123_07() + { + } + + [Fact] + public void Test_123_08() + { + } + + [Fact] + public void Test_123_09() + { + } + + [Fact] + public void Test_123_10() + { + } + + [Fact] + public void Test_123_11() + { + } + + [Fact] + public void Test_123_12() + { + } + + [Fact] + public void Test_123_13() + { + } + + [Fact] + public void Test_123_14() + { + } + + [Fact] + public void Test_123_15() + { + } + + [Fact] + public void Test_123_16() + { + } + + [Fact] + public void Test_123_17() + { + } + + [Fact] + public void Test_123_18() + { + } + + [Fact] + public void Test_123_19() + { + } + + [Fact] + public void Test_123_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_124 + { + #region PassingTests + [Fact] + public void Test_124_01() + { + } + + [Fact] + public void Test_124_02() + { + } + + [Fact] + public void Test_124_03() + { + } + + [Fact] + public void Test_124_04() + { + } + + [Fact] + public void Test_124_05() + { + } + + [Fact] + public void Test_124_06() + { + } + + [Fact] + public void Test_124_07() + { + } + + [Fact] + public void Test_124_08() + { + } + + [Fact] + public void Test_124_09() + { + } + + [Fact] + public void Test_124_10() + { + } + + [Fact] + public void Test_124_11() + { + } + + [Fact] + public void Test_124_12() + { + } + + [Fact] + public void Test_124_13() + { + } + + [Fact] + public void Test_124_14() + { + } + + [Fact] + public void Test_124_15() + { + } + + [Fact] + public void Test_124_16() + { + } + + [Fact] + public void Test_124_17() + { + } + + [Fact] + public void Test_124_18() + { + } + + [Fact] + public void Test_124_19() + { + } + + [Fact] + public void Test_124_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_125 + { + #region PassingTests + [Fact] + public void Test_125_01() + { + } + + [Fact] + public void Test_125_02() + { + } + + [Fact] + public void Test_125_03() + { + } + + [Fact] + public void Test_125_04() + { + } + + [Fact] + public void Test_125_05() + { + } + + [Fact] + public void Test_125_06() + { + } + + [Fact] + public void Test_125_07() + { + } + + [Fact] + public void Test_125_08() + { + } + + [Fact] + public void Test_125_09() + { + } + + [Fact] + public void Test_125_10() + { + } + + [Fact] + public void Test_125_11() + { + } + + [Fact] + public void Test_125_12() + { + } + + [Fact] + public void Test_125_13() + { + } + + [Fact] + public void Test_125_14() + { + } + + [Fact] + public void Test_125_15() + { + } + + [Fact] + public void Test_125_16() + { + } + + [Fact] + public void Test_125_17() + { + } + + [Fact] + public void Test_125_18() + { + } + + [Fact] + public void Test_125_19() + { + } + + [Fact] + public void Test_125_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_126 + { + #region PassingTests + [Fact] + public void Test_126_01() + { + } + + [Fact] + public void Test_126_02() + { + } + + [Fact] + public void Test_126_03() + { + } + + [Fact] + public void Test_126_04() + { + } + + [Fact] + public void Test_126_05() + { + } + + [Fact] + public void Test_126_06() + { + } + + [Fact] + public void Test_126_07() + { + } + + [Fact] + public void Test_126_08() + { + } + + [Fact] + public void Test_126_09() + { + } + + [Fact] + public void Test_126_10() + { + } + + [Fact] + public void Test_126_11() + { + } + + [Fact] + public void Test_126_12() + { + } + + [Fact] + public void Test_126_13() + { + } + + [Fact] + public void Test_126_14() + { + } + + [Fact] + public void Test_126_15() + { + } + + [Fact] + public void Test_126_16() + { + } + + [Fact] + public void Test_126_17() + { + } + + [Fact] + public void Test_126_18() + { + } + + [Fact] + public void Test_126_19() + { + } + + [Fact] + public void Test_126_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_127 + { + #region PassingTests + [Fact] + public void Test_127_01() + { + } + + [Fact] + public void Test_127_02() + { + } + + [Fact] + public void Test_127_03() + { + } + + [Fact] + public void Test_127_04() + { + } + + [Fact] + public void Test_127_05() + { + } + + [Fact] + public void Test_127_06() + { + } + + [Fact] + public void Test_127_07() + { + } + + [Fact] + public void Test_127_08() + { + } + + [Fact] + public void Test_127_09() + { + } + + [Fact] + public void Test_127_10() + { + } + + [Fact] + public void Test_127_11() + { + } + + [Fact] + public void Test_127_12() + { + } + + [Fact] + public void Test_127_13() + { + } + + [Fact] + public void Test_127_14() + { + } + + [Fact] + public void Test_127_15() + { + } + + [Fact] + public void Test_127_16() + { + } + + [Fact] + public void Test_127_17() + { + } + + [Fact] + public void Test_127_18() + { + } + + [Fact] + public void Test_127_19() + { + } + + [Fact] + public void Test_127_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_128 + { + #region PassingTests + [Fact] + public void Test_128_01() + { + } + + [Fact] + public void Test_128_02() + { + } + + [Fact] + public void Test_128_03() + { + } + + [Fact] + public void Test_128_04() + { + } + + [Fact] + public void Test_128_05() + { + } + + [Fact] + public void Test_128_06() + { + } + + [Fact] + public void Test_128_07() + { + } + + [Fact] + public void Test_128_08() + { + } + + [Fact] + public void Test_128_09() + { + } + + [Fact] + public void Test_128_10() + { + } + + [Fact] + public void Test_128_11() + { + } + + [Fact] + public void Test_128_12() + { + } + + [Fact] + public void Test_128_13() + { + } + + [Fact] + public void Test_128_14() + { + } + + [Fact] + public void Test_128_15() + { + } + + [Fact] + public void Test_128_16() + { + } + + [Fact] + public void Test_128_17() + { + } + + [Fact] + public void Test_128_18() + { + } + + [Fact] + public void Test_128_19() + { + } + + [Fact] + public void Test_128_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_129 + { + #region PassingTests + [Fact] + public void Test_129_01() + { + } + + [Fact] + public void Test_129_02() + { + } + + [Fact] + public void Test_129_03() + { + } + + [Fact] + public void Test_129_04() + { + } + + [Fact] + public void Test_129_05() + { + } + + [Fact] + public void Test_129_06() + { + } + + [Fact] + public void Test_129_07() + { + } + + [Fact] + public void Test_129_08() + { + } + + [Fact] + public void Test_129_09() + { + } + + [Fact] + public void Test_129_10() + { + } + + [Fact] + public void Test_129_11() + { + } + + [Fact] + public void Test_129_12() + { + } + + [Fact] + public void Test_129_13() + { + } + + [Fact] + public void Test_129_14() + { + } + + [Fact] + public void Test_129_15() + { + } + + [Fact] + public void Test_129_16() + { + } + + [Fact] + public void Test_129_17() + { + } + + [Fact] + public void Test_129_18() + { + } + + [Fact] + public void Test_129_19() + { + } + + [Fact] + public void Test_129_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_130 + { + #region PassingTests + [Fact] + public void Test_130_01() + { + } + + [Fact] + public void Test_130_02() + { + } + + [Fact] + public void Test_130_03() + { + } + + [Fact] + public void Test_130_04() + { + } + + [Fact] + public void Test_130_05() + { + } + + [Fact] + public void Test_130_06() + { + } + + [Fact] + public void Test_130_07() + { + } + + [Fact] + public void Test_130_08() + { + } + + [Fact] + public void Test_130_09() + { + } + + [Fact] + public void Test_130_10() + { + } + + [Fact] + public void Test_130_11() + { + } + + [Fact] + public void Test_130_12() + { + } + + [Fact] + public void Test_130_13() + { + } + + [Fact] + public void Test_130_14() + { + } + + [Fact] + public void Test_130_15() + { + } + + [Fact] + public void Test_130_16() + { + } + + [Fact] + public void Test_130_17() + { + } + + [Fact] + public void Test_130_18() + { + } + + [Fact] + public void Test_130_19() + { + } + + [Fact] + public void Test_130_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_131 + { + #region PassingTests + [Fact] + public void Test_131_01() + { + } + + [Fact] + public void Test_131_02() + { + } + + [Fact] + public void Test_131_03() + { + } + + [Fact] + public void Test_131_04() + { + } + + [Fact] + public void Test_131_05() + { + } + + [Fact] + public void Test_131_06() + { + } + + [Fact] + public void Test_131_07() + { + } + + [Fact] + public void Test_131_08() + { + } + + [Fact] + public void Test_131_09() + { + } + + [Fact] + public void Test_131_10() + { + } + + [Fact] + public void Test_131_11() + { + } + + [Fact] + public void Test_131_12() + { + } + + [Fact] + public void Test_131_13() + { + } + + [Fact] + public void Test_131_14() + { + } + + [Fact] + public void Test_131_15() + { + } + + [Fact] + public void Test_131_16() + { + } + + [Fact] + public void Test_131_17() + { + } + + [Fact] + public void Test_131_18() + { + } + + [Fact] + public void Test_131_19() + { + } + + [Fact] + public void Test_131_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_132 + { + #region PassingTests + [Fact] + public void Test_132_01() + { + } + + [Fact] + public void Test_132_02() + { + } + + [Fact] + public void Test_132_03() + { + } + + [Fact] + public void Test_132_04() + { + } + + [Fact] + public void Test_132_05() + { + } + + [Fact] + public void Test_132_06() + { + } + + [Fact] + public void Test_132_07() + { + } + + [Fact] + public void Test_132_08() + { + } + + [Fact] + public void Test_132_09() + { + } + + [Fact] + public void Test_132_10() + { + } + + [Fact] + public void Test_132_11() + { + } + + [Fact] + public void Test_132_12() + { + } + + [Fact] + public void Test_132_13() + { + } + + [Fact] + public void Test_132_14() + { + } + + [Fact] + public void Test_132_15() + { + } + + [Fact] + public void Test_132_16() + { + } + + [Fact] + public void Test_132_17() + { + } + + [Fact] + public void Test_132_18() + { + } + + [Fact] + public void Test_132_19() + { + } + + [Fact] + public void Test_132_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_133 + { + #region PassingTests + [Fact] + public void Test_133_01() + { + } + + [Fact] + public void Test_133_02() + { + } + + [Fact] + public void Test_133_03() + { + } + + [Fact] + public void Test_133_04() + { + } + + [Fact] + public void Test_133_05() + { + } + + [Fact] + public void Test_133_06() + { + } + + [Fact] + public void Test_133_07() + { + } + + [Fact] + public void Test_133_08() + { + } + + [Fact] + public void Test_133_09() + { + } + + [Fact] + public void Test_133_10() + { + } + + [Fact] + public void Test_133_11() + { + } + + [Fact] + public void Test_133_12() + { + } + + [Fact] + public void Test_133_13() + { + } + + [Fact] + public void Test_133_14() + { + } + + [Fact] + public void Test_133_15() + { + } + + [Fact] + public void Test_133_16() + { + } + + [Fact] + public void Test_133_17() + { + } + + [Fact] + public void Test_133_18() + { + } + + [Fact] + public void Test_133_19() + { + } + + [Fact] + public void Test_133_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_134 + { + #region PassingTests + [Fact] + public void Test_134_01() + { + } + + [Fact] + public void Test_134_02() + { + } + + [Fact] + public void Test_134_03() + { + } + + [Fact] + public void Test_134_04() + { + } + + [Fact] + public void Test_134_05() + { + } + + [Fact] + public void Test_134_06() + { + } + + [Fact] + public void Test_134_07() + { + } + + [Fact] + public void Test_134_08() + { + } + + [Fact] + public void Test_134_09() + { + } + + [Fact] + public void Test_134_10() + { + } + + [Fact] + public void Test_134_11() + { + } + + [Fact] + public void Test_134_12() + { + } + + [Fact] + public void Test_134_13() + { + } + + [Fact] + public void Test_134_14() + { + } + + [Fact] + public void Test_134_15() + { + } + + [Fact] + public void Test_134_16() + { + } + + [Fact] + public void Test_134_17() + { + } + + [Fact] + public void Test_134_18() + { + } + + [Fact] + public void Test_134_19() + { + } + + [Fact] + public void Test_134_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_135 + { + #region PassingTests + [Fact] + public void Test_135_01() + { + } + + [Fact] + public void Test_135_02() + { + } + + [Fact] + public void Test_135_03() + { + } + + [Fact] + public void Test_135_04() + { + } + + [Fact] + public void Test_135_05() + { + } + + [Fact] + public void Test_135_06() + { + } + + [Fact] + public void Test_135_07() + { + } + + [Fact] + public void Test_135_08() + { + } + + [Fact] + public void Test_135_09() + { + } + + [Fact] + public void Test_135_10() + { + } + + [Fact] + public void Test_135_11() + { + } + + [Fact] + public void Test_135_12() + { + } + + [Fact] + public void Test_135_13() + { + } + + [Fact] + public void Test_135_14() + { + } + + [Fact] + public void Test_135_15() + { + } + + [Fact] + public void Test_135_16() + { + } + + [Fact] + public void Test_135_17() + { + } + + [Fact] + public void Test_135_18() + { + } + + [Fact] + public void Test_135_19() + { + } + + [Fact] + public void Test_135_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_136 + { + #region PassingTests + [Fact] + public void Test_136_01() + { + } + + [Fact] + public void Test_136_02() + { + } + + [Fact] + public void Test_136_03() + { + } + + [Fact] + public void Test_136_04() + { + } + + [Fact] + public void Test_136_05() + { + } + + [Fact] + public void Test_136_06() + { + } + + [Fact] + public void Test_136_07() + { + } + + [Fact] + public void Test_136_08() + { + } + + [Fact] + public void Test_136_09() + { + } + + [Fact] + public void Test_136_10() + { + } + + [Fact] + public void Test_136_11() + { + } + + [Fact] + public void Test_136_12() + { + } + + [Fact] + public void Test_136_13() + { + } + + [Fact] + public void Test_136_14() + { + } + + [Fact] + public void Test_136_15() + { + } + + [Fact] + public void Test_136_16() + { + } + + [Fact] + public void Test_136_17() + { + } + + [Fact] + public void Test_136_18() + { + } + + [Fact] + public void Test_136_19() + { + } + + [Fact] + public void Test_136_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_137 + { + #region PassingTests + [Fact] + public void Test_137_01() + { + } + + [Fact] + public void Test_137_02() + { + } + + [Fact] + public void Test_137_03() + { + } + + [Fact] + public void Test_137_04() + { + } + + [Fact] + public void Test_137_05() + { + } + + [Fact] + public void Test_137_06() + { + } + + [Fact] + public void Test_137_07() + { + } + + [Fact] + public void Test_137_08() + { + } + + [Fact] + public void Test_137_09() + { + } + + [Fact] + public void Test_137_10() + { + } + + [Fact] + public void Test_137_11() + { + } + + [Fact] + public void Test_137_12() + { + } + + [Fact] + public void Test_137_13() + { + } + + [Fact] + public void Test_137_14() + { + } + + [Fact] + public void Test_137_15() + { + } + + [Fact] + public void Test_137_16() + { + } + + [Fact] + public void Test_137_17() + { + } + + [Fact] + public void Test_137_18() + { + } + + [Fact] + public void Test_137_19() + { + } + + [Fact] + public void Test_137_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_138 + { + #region PassingTests + [Fact] + public void Test_138_01() + { + } + + [Fact] + public void Test_138_02() + { + } + + [Fact] + public void Test_138_03() + { + } + + [Fact] + public void Test_138_04() + { + } + + [Fact] + public void Test_138_05() + { + } + + [Fact] + public void Test_138_06() + { + } + + [Fact] + public void Test_138_07() + { + } + + [Fact] + public void Test_138_08() + { + } + + [Fact] + public void Test_138_09() + { + } + + [Fact] + public void Test_138_10() + { + } + + [Fact] + public void Test_138_11() + { + } + + [Fact] + public void Test_138_12() + { + } + + [Fact] + public void Test_138_13() + { + } + + [Fact] + public void Test_138_14() + { + } + + [Fact] + public void Test_138_15() + { + } + + [Fact] + public void Test_138_16() + { + } + + [Fact] + public void Test_138_17() + { + } + + [Fact] + public void Test_138_18() + { + } + + [Fact] + public void Test_138_19() + { + } + + [Fact] + public void Test_138_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_139 + { + #region PassingTests + [Fact] + public void Test_139_01() + { + } + + [Fact] + public void Test_139_02() + { + } + + [Fact] + public void Test_139_03() + { + } + + [Fact] + public void Test_139_04() + { + } + + [Fact] + public void Test_139_05() + { + } + + [Fact] + public void Test_139_06() + { + } + + [Fact] + public void Test_139_07() + { + } + + [Fact] + public void Test_139_08() + { + } + + [Fact] + public void Test_139_09() + { + } + + [Fact] + public void Test_139_10() + { + } + + [Fact] + public void Test_139_11() + { + } + + [Fact] + public void Test_139_12() + { + } + + [Fact] + public void Test_139_13() + { + } + + [Fact] + public void Test_139_14() + { + } + + [Fact] + public void Test_139_15() + { + } + + [Fact] + public void Test_139_16() + { + } + + [Fact] + public void Test_139_17() + { + } + + [Fact] + public void Test_139_18() + { + } + + [Fact] + public void Test_139_19() + { + } + + [Fact] + public void Test_139_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_140 + { + #region PassingTests + [Fact] + public void Test_140_01() + { + } + + [Fact] + public void Test_140_02() + { + } + + [Fact] + public void Test_140_03() + { + } + + [Fact] + public void Test_140_04() + { + } + + [Fact] + public void Test_140_05() + { + } + + [Fact] + public void Test_140_06() + { + } + + [Fact] + public void Test_140_07() + { + } + + [Fact] + public void Test_140_08() + { + } + + [Fact] + public void Test_140_09() + { + } + + [Fact] + public void Test_140_10() + { + } + + [Fact] + public void Test_140_11() + { + } + + [Fact] + public void Test_140_12() + { + } + + [Fact] + public void Test_140_13() + { + } + + [Fact] + public void Test_140_14() + { + } + + [Fact] + public void Test_140_15() + { + } + + [Fact] + public void Test_140_16() + { + } + + [Fact] + public void Test_140_17() + { + } + + [Fact] + public void Test_140_18() + { + } + + [Fact] + public void Test_140_19() + { + } + + [Fact] + public void Test_140_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_141 + { + #region PassingTests + [Fact] + public void Test_141_01() + { + } + + [Fact] + public void Test_141_02() + { + } + + [Fact] + public void Test_141_03() + { + } + + [Fact] + public void Test_141_04() + { + } + + [Fact] + public void Test_141_05() + { + } + + [Fact] + public void Test_141_06() + { + } + + [Fact] + public void Test_141_07() + { + } + + [Fact] + public void Test_141_08() + { + } + + [Fact] + public void Test_141_09() + { + } + + [Fact] + public void Test_141_10() + { + } + + [Fact] + public void Test_141_11() + { + } + + [Fact] + public void Test_141_12() + { + } + + [Fact] + public void Test_141_13() + { + } + + [Fact] + public void Test_141_14() + { + } + + [Fact] + public void Test_141_15() + { + } + + [Fact] + public void Test_141_16() + { + } + + [Fact] + public void Test_141_17() + { + } + + [Fact] + public void Test_141_18() + { + } + + [Fact] + public void Test_141_19() + { + } + + [Fact] + public void Test_141_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_142 + { + #region PassingTests + [Fact] + public void Test_142_01() + { + } + + [Fact] + public void Test_142_02() + { + } + + [Fact] + public void Test_142_03() + { + } + + [Fact] + public void Test_142_04() + { + } + + [Fact] + public void Test_142_05() + { + } + + [Fact] + public void Test_142_06() + { + } + + [Fact] + public void Test_142_07() + { + } + + [Fact] + public void Test_142_08() + { + } + + [Fact] + public void Test_142_09() + { + } + + [Fact] + public void Test_142_10() + { + } + + [Fact] + public void Test_142_11() + { + } + + [Fact] + public void Test_142_12() + { + } + + [Fact] + public void Test_142_13() + { + } + + [Fact] + public void Test_142_14() + { + } + + [Fact] + public void Test_142_15() + { + } + + [Fact] + public void Test_142_16() + { + } + + [Fact] + public void Test_142_17() + { + } + + [Fact] + public void Test_142_18() + { + } + + [Fact] + public void Test_142_19() + { + } + + [Fact] + public void Test_142_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_143 + { + #region PassingTests + [Fact] + public void Test_143_01() + { + } + + [Fact] + public void Test_143_02() + { + } + + [Fact] + public void Test_143_03() + { + } + + [Fact] + public void Test_143_04() + { + } + + [Fact] + public void Test_143_05() + { + } + + [Fact] + public void Test_143_06() + { + } + + [Fact] + public void Test_143_07() + { + } + + [Fact] + public void Test_143_08() + { + } + + [Fact] + public void Test_143_09() + { + } + + [Fact] + public void Test_143_10() + { + } + + [Fact] + public void Test_143_11() + { + } + + [Fact] + public void Test_143_12() + { + } + + [Fact] + public void Test_143_13() + { + } + + [Fact] + public void Test_143_14() + { + } + + [Fact] + public void Test_143_15() + { + } + + [Fact] + public void Test_143_16() + { + } + + [Fact] + public void Test_143_17() + { + } + + [Fact] + public void Test_143_18() + { + } + + [Fact] + public void Test_143_19() + { + } + + [Fact] + public void Test_143_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_144 + { + #region PassingTests + [Fact] + public void Test_144_01() + { + } + + [Fact] + public void Test_144_02() + { + } + + [Fact] + public void Test_144_03() + { + } + + [Fact] + public void Test_144_04() + { + } + + [Fact] + public void Test_144_05() + { + } + + [Fact] + public void Test_144_06() + { + } + + [Fact] + public void Test_144_07() + { + } + + [Fact] + public void Test_144_08() + { + } + + [Fact] + public void Test_144_09() + { + } + + [Fact] + public void Test_144_10() + { + } + + [Fact] + public void Test_144_11() + { + } + + [Fact] + public void Test_144_12() + { + } + + [Fact] + public void Test_144_13() + { + } + + [Fact] + public void Test_144_14() + { + } + + [Fact] + public void Test_144_15() + { + } + + [Fact] + public void Test_144_16() + { + } + + [Fact] + public void Test_144_17() + { + } + + [Fact] + public void Test_144_18() + { + } + + [Fact] + public void Test_144_19() + { + } + + [Fact] + public void Test_144_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_145 + { + #region PassingTests + [Fact] + public void Test_145_01() + { + } + + [Fact] + public void Test_145_02() + { + } + + [Fact] + public void Test_145_03() + { + } + + [Fact] + public void Test_145_04() + { + } + + [Fact] + public void Test_145_05() + { + } + + [Fact] + public void Test_145_06() + { + } + + [Fact] + public void Test_145_07() + { + } + + [Fact] + public void Test_145_08() + { + } + + [Fact] + public void Test_145_09() + { + } + + [Fact] + public void Test_145_10() + { + } + + [Fact] + public void Test_145_11() + { + } + + [Fact] + public void Test_145_12() + { + } + + [Fact] + public void Test_145_13() + { + } + + [Fact] + public void Test_145_14() + { + } + + [Fact] + public void Test_145_15() + { + } + + [Fact] + public void Test_145_16() + { + } + + [Fact] + public void Test_145_17() + { + } + + [Fact] + public void Test_145_18() + { + } + + [Fact] + public void Test_145_19() + { + } + + [Fact] + public void Test_145_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_146 + { + #region PassingTests + [Fact] + public void Test_146_01() + { + } + + [Fact] + public void Test_146_02() + { + } + + [Fact] + public void Test_146_03() + { + } + + [Fact] + public void Test_146_04() + { + } + + [Fact] + public void Test_146_05() + { + } + + [Fact] + public void Test_146_06() + { + } + + [Fact] + public void Test_146_07() + { + } + + [Fact] + public void Test_146_08() + { + } + + [Fact] + public void Test_146_09() + { + } + + [Fact] + public void Test_146_10() + { + } + + [Fact] + public void Test_146_11() + { + } + + [Fact] + public void Test_146_12() + { + } + + [Fact] + public void Test_146_13() + { + } + + [Fact] + public void Test_146_14() + { + } + + [Fact] + public void Test_146_15() + { + } + + [Fact] + public void Test_146_16() + { + } + + [Fact] + public void Test_146_17() + { + } + + [Fact] + public void Test_146_18() + { + } + + [Fact] + public void Test_146_19() + { + } + + [Fact] + public void Test_146_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_147 + { + #region PassingTests + [Fact] + public void Test_147_01() + { + } + + [Fact] + public void Test_147_02() + { + } + + [Fact] + public void Test_147_03() + { + } + + [Fact] + public void Test_147_04() + { + } + + [Fact] + public void Test_147_05() + { + } + + [Fact] + public void Test_147_06() + { + } + + [Fact] + public void Test_147_07() + { + } + + [Fact] + public void Test_147_08() + { + } + + [Fact] + public void Test_147_09() + { + } + + [Fact] + public void Test_147_10() + { + } + + [Fact] + public void Test_147_11() + { + } + + [Fact] + public void Test_147_12() + { + } + + [Fact] + public void Test_147_13() + { + } + + [Fact] + public void Test_147_14() + { + } + + [Fact] + public void Test_147_15() + { + } + + [Fact] + public void Test_147_16() + { + } + + [Fact] + public void Test_147_17() + { + } + + [Fact] + public void Test_147_18() + { + } + + [Fact] + public void Test_147_19() + { + } + + [Fact] + public void Test_147_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_148 + { + #region PassingTests + [Fact] + public void Test_148_01() + { + } + + [Fact] + public void Test_148_02() + { + } + + [Fact] + public void Test_148_03() + { + } + + [Fact] + public void Test_148_04() + { + } + + [Fact] + public void Test_148_05() + { + } + + [Fact] + public void Test_148_06() + { + } + + [Fact] + public void Test_148_07() + { + } + + [Fact] + public void Test_148_08() + { + } + + [Fact] + public void Test_148_09() + { + } + + [Fact] + public void Test_148_10() + { + } + + [Fact] + public void Test_148_11() + { + } + + [Fact] + public void Test_148_12() + { + } + + [Fact] + public void Test_148_13() + { + } + + [Fact] + public void Test_148_14() + { + } + + [Fact] + public void Test_148_15() + { + } + + [Fact] + public void Test_148_16() + { + } + + [Fact] + public void Test_148_17() + { + } + + [Fact] + public void Test_148_18() + { + } + + [Fact] + public void Test_148_19() + { + } + + [Fact] + public void Test_148_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_149 + { + #region PassingTests + [Fact] + public void Test_149_01() + { + } + + [Fact] + public void Test_149_02() + { + } + + [Fact] + public void Test_149_03() + { + } + + [Fact] + public void Test_149_04() + { + } + + [Fact] + public void Test_149_05() + { + } + + [Fact] + public void Test_149_06() + { + } + + [Fact] + public void Test_149_07() + { + } + + [Fact] + public void Test_149_08() + { + } + + [Fact] + public void Test_149_09() + { + } + + [Fact] + public void Test_149_10() + { + } + + [Fact] + public void Test_149_11() + { + } + + [Fact] + public void Test_149_12() + { + } + + [Fact] + public void Test_149_13() + { + } + + [Fact] + public void Test_149_14() + { + } + + [Fact] + public void Test_149_15() + { + } + + [Fact] + public void Test_149_16() + { + } + + [Fact] + public void Test_149_17() + { + } + + [Fact] + public void Test_149_18() + { + } + + [Fact] + public void Test_149_19() + { + } + + [Fact] + public void Test_149_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_150 + { + #region PassingTests + [Fact] + public void Test_150_01() + { + } + + [Fact] + public void Test_150_02() + { + } + + [Fact] + public void Test_150_03() + { + } + + [Fact] + public void Test_150_04() + { + } + + [Fact] + public void Test_150_05() + { + } + + [Fact] + public void Test_150_06() + { + } + + [Fact] + public void Test_150_07() + { + } + + [Fact] + public void Test_150_08() + { + } + + [Fact] + public void Test_150_09() + { + } + + [Fact] + public void Test_150_10() + { + } + + [Fact] + public void Test_150_11() + { + } + + [Fact] + public void Test_150_12() + { + } + + [Fact] + public void Test_150_13() + { + } + + [Fact] + public void Test_150_14() + { + } + + [Fact] + public void Test_150_15() + { + } + + [Fact] + public void Test_150_16() + { + } + + [Fact] + public void Test_150_17() + { + } + + [Fact] + public void Test_150_18() + { + } + + [Fact] + public void Test_150_19() + { + } + + [Fact] + public void Test_150_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_151 + { + #region PassingTests + [Fact] + public void Test_151_01() + { + } + + [Fact] + public void Test_151_02() + { + } + + [Fact] + public void Test_151_03() + { + } + + [Fact] + public void Test_151_04() + { + } + + [Fact] + public void Test_151_05() + { + } + + [Fact] + public void Test_151_06() + { + } + + [Fact] + public void Test_151_07() + { + } + + [Fact] + public void Test_151_08() + { + } + + [Fact] + public void Test_151_09() + { + } + + [Fact] + public void Test_151_10() + { + } + + [Fact] + public void Test_151_11() + { + } + + [Fact] + public void Test_151_12() + { + } + + [Fact] + public void Test_151_13() + { + } + + [Fact] + public void Test_151_14() + { + } + + [Fact] + public void Test_151_15() + { + } + + [Fact] + public void Test_151_16() + { + } + + [Fact] + public void Test_151_17() + { + } + + [Fact] + public void Test_151_18() + { + } + + [Fact] + public void Test_151_19() + { + } + + [Fact] + public void Test_151_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_152 + { + #region PassingTests + [Fact] + public void Test_152_01() + { + } + + [Fact] + public void Test_152_02() + { + } + + [Fact] + public void Test_152_03() + { + } + + [Fact] + public void Test_152_04() + { + } + + [Fact] + public void Test_152_05() + { + } + + [Fact] + public void Test_152_06() + { + } + + [Fact] + public void Test_152_07() + { + } + + [Fact] + public void Test_152_08() + { + } + + [Fact] + public void Test_152_09() + { + } + + [Fact] + public void Test_152_10() + { + } + + [Fact] + public void Test_152_11() + { + } + + [Fact] + public void Test_152_12() + { + } + + [Fact] + public void Test_152_13() + { + } + + [Fact] + public void Test_152_14() + { + } + + [Fact] + public void Test_152_15() + { + } + + [Fact] + public void Test_152_16() + { + } + + [Fact] + public void Test_152_17() + { + } + + [Fact] + public void Test_152_18() + { + } + + [Fact] + public void Test_152_19() + { + } + + [Fact] + public void Test_152_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_153 + { + #region PassingTests + [Fact] + public void Test_153_01() + { + } + + [Fact] + public void Test_153_02() + { + } + + [Fact] + public void Test_153_03() + { + } + + [Fact] + public void Test_153_04() + { + } + + [Fact] + public void Test_153_05() + { + } + + [Fact] + public void Test_153_06() + { + } + + [Fact] + public void Test_153_07() + { + } + + [Fact] + public void Test_153_08() + { + } + + [Fact] + public void Test_153_09() + { + } + + [Fact] + public void Test_153_10() + { + } + + [Fact] + public void Test_153_11() + { + } + + [Fact] + public void Test_153_12() + { + } + + [Fact] + public void Test_153_13() + { + } + + [Fact] + public void Test_153_14() + { + } + + [Fact] + public void Test_153_15() + { + } + + [Fact] + public void Test_153_16() + { + } + + [Fact] + public void Test_153_17() + { + } + + [Fact] + public void Test_153_18() + { + } + + [Fact] + public void Test_153_19() + { + } + + [Fact] + public void Test_153_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_154 + { + #region PassingTests + [Fact] + public void Test_154_01() + { + } + + [Fact] + public void Test_154_02() + { + } + + [Fact] + public void Test_154_03() + { + } + + [Fact] + public void Test_154_04() + { + } + + [Fact] + public void Test_154_05() + { + } + + [Fact] + public void Test_154_06() + { + } + + [Fact] + public void Test_154_07() + { + } + + [Fact] + public void Test_154_08() + { + } + + [Fact] + public void Test_154_09() + { + } + + [Fact] + public void Test_154_10() + { + } + + [Fact] + public void Test_154_11() + { + } + + [Fact] + public void Test_154_12() + { + } + + [Fact] + public void Test_154_13() + { + } + + [Fact] + public void Test_154_14() + { + } + + [Fact] + public void Test_154_15() + { + } + + [Fact] + public void Test_154_16() + { + } + + [Fact] + public void Test_154_17() + { + } + + [Fact] + public void Test_154_18() + { + } + + [Fact] + public void Test_154_19() + { + } + + [Fact] + public void Test_154_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_155 + { + #region PassingTests + [Fact] + public void Test_155_01() + { + } + + [Fact] + public void Test_155_02() + { + } + + [Fact] + public void Test_155_03() + { + } + + [Fact] + public void Test_155_04() + { + } + + [Fact] + public void Test_155_05() + { + } + + [Fact] + public void Test_155_06() + { + } + + [Fact] + public void Test_155_07() + { + } + + [Fact] + public void Test_155_08() + { + } + + [Fact] + public void Test_155_09() + { + } + + [Fact] + public void Test_155_10() + { + } + + [Fact] + public void Test_155_11() + { + } + + [Fact] + public void Test_155_12() + { + } + + [Fact] + public void Test_155_13() + { + } + + [Fact] + public void Test_155_14() + { + } + + [Fact] + public void Test_155_15() + { + } + + [Fact] + public void Test_155_16() + { + } + + [Fact] + public void Test_155_17() + { + } + + [Fact] + public void Test_155_18() + { + } + + [Fact] + public void Test_155_19() + { + } + + [Fact] + public void Test_155_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_156 + { + #region PassingTests + [Fact] + public void Test_156_01() + { + } + + [Fact] + public void Test_156_02() + { + } + + [Fact] + public void Test_156_03() + { + } + + [Fact] + public void Test_156_04() + { + } + + [Fact] + public void Test_156_05() + { + } + + [Fact] + public void Test_156_06() + { + } + + [Fact] + public void Test_156_07() + { + } + + [Fact] + public void Test_156_08() + { + } + + [Fact] + public void Test_156_09() + { + } + + [Fact] + public void Test_156_10() + { + } + + [Fact] + public void Test_156_11() + { + } + + [Fact] + public void Test_156_12() + { + } + + [Fact] + public void Test_156_13() + { + } + + [Fact] + public void Test_156_14() + { + } + + [Fact] + public void Test_156_15() + { + } + + [Fact] + public void Test_156_16() + { + } + + [Fact] + public void Test_156_17() + { + } + + [Fact] + public void Test_156_18() + { + } + + [Fact] + public void Test_156_19() + { + } + + [Fact] + public void Test_156_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_157 + { + #region PassingTests + [Fact] + public void Test_157_01() + { + } + + [Fact] + public void Test_157_02() + { + } + + [Fact] + public void Test_157_03() + { + } + + [Fact] + public void Test_157_04() + { + } + + [Fact] + public void Test_157_05() + { + } + + [Fact] + public void Test_157_06() + { + } + + [Fact] + public void Test_157_07() + { + } + + [Fact] + public void Test_157_08() + { + } + + [Fact] + public void Test_157_09() + { + } + + [Fact] + public void Test_157_10() + { + } + + [Fact] + public void Test_157_11() + { + } + + [Fact] + public void Test_157_12() + { + } + + [Fact] + public void Test_157_13() + { + } + + [Fact] + public void Test_157_14() + { + } + + [Fact] + public void Test_157_15() + { + } + + [Fact] + public void Test_157_16() + { + } + + [Fact] + public void Test_157_17() + { + } + + [Fact] + public void Test_157_18() + { + } + + [Fact] + public void Test_157_19() + { + } + + [Fact] + public void Test_157_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_158 + { + #region PassingTests + [Fact] + public void Test_158_01() + { + } + + [Fact] + public void Test_158_02() + { + } + + [Fact] + public void Test_158_03() + { + } + + [Fact] + public void Test_158_04() + { + } + + [Fact] + public void Test_158_05() + { + } + + [Fact] + public void Test_158_06() + { + } + + [Fact] + public void Test_158_07() + { + } + + [Fact] + public void Test_158_08() + { + } + + [Fact] + public void Test_158_09() + { + } + + [Fact] + public void Test_158_10() + { + } + + [Fact] + public void Test_158_11() + { + } + + [Fact] + public void Test_158_12() + { + } + + [Fact] + public void Test_158_13() + { + } + + [Fact] + public void Test_158_14() + { + } + + [Fact] + public void Test_158_15() + { + } + + [Fact] + public void Test_158_16() + { + } + + [Fact] + public void Test_158_17() + { + } + + [Fact] + public void Test_158_18() + { + } + + [Fact] + public void Test_158_19() + { + } + + [Fact] + public void Test_158_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_159 + { + #region PassingTests + [Fact] + public void Test_159_01() + { + } + + [Fact] + public void Test_159_02() + { + } + + [Fact] + public void Test_159_03() + { + } + + [Fact] + public void Test_159_04() + { + } + + [Fact] + public void Test_159_05() + { + } + + [Fact] + public void Test_159_06() + { + } + + [Fact] + public void Test_159_07() + { + } + + [Fact] + public void Test_159_08() + { + } + + [Fact] + public void Test_159_09() + { + } + + [Fact] + public void Test_159_10() + { + } + + [Fact] + public void Test_159_11() + { + } + + [Fact] + public void Test_159_12() + { + } + + [Fact] + public void Test_159_13() + { + } + + [Fact] + public void Test_159_14() + { + } + + [Fact] + public void Test_159_15() + { + } + + [Fact] + public void Test_159_16() + { + } + + [Fact] + public void Test_159_17() + { + } + + [Fact] + public void Test_159_18() + { + } + + [Fact] + public void Test_159_19() + { + } + + [Fact] + public void Test_159_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_160 + { + #region PassingTests + [Fact] + public void Test_160_01() + { + } + + [Fact] + public void Test_160_02() + { + } + + [Fact] + public void Test_160_03() + { + } + + [Fact] + public void Test_160_04() + { + } + + [Fact] + public void Test_160_05() + { + } + + [Fact] + public void Test_160_06() + { + } + + [Fact] + public void Test_160_07() + { + } + + [Fact] + public void Test_160_08() + { + } + + [Fact] + public void Test_160_09() + { + } + + [Fact] + public void Test_160_10() + { + } + + [Fact] + public void Test_160_11() + { + } + + [Fact] + public void Test_160_12() + { + } + + [Fact] + public void Test_160_13() + { + } + + [Fact] + public void Test_160_14() + { + } + + [Fact] + public void Test_160_15() + { + } + + [Fact] + public void Test_160_16() + { + } + + [Fact] + public void Test_160_17() + { + } + + [Fact] + public void Test_160_18() + { + } + + [Fact] + public void Test_160_19() + { + } + + [Fact] + public void Test_160_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_161 + { + #region PassingTests + [Fact] + public void Test_161_01() + { + } + + [Fact] + public void Test_161_02() + { + } + + [Fact] + public void Test_161_03() + { + } + + [Fact] + public void Test_161_04() + { + } + + [Fact] + public void Test_161_05() + { + } + + [Fact] + public void Test_161_06() + { + } + + [Fact] + public void Test_161_07() + { + } + + [Fact] + public void Test_161_08() + { + } + + [Fact] + public void Test_161_09() + { + } + + [Fact] + public void Test_161_10() + { + } + + [Fact] + public void Test_161_11() + { + } + + [Fact] + public void Test_161_12() + { + } + + [Fact] + public void Test_161_13() + { + } + + [Fact] + public void Test_161_14() + { + } + + [Fact] + public void Test_161_15() + { + } + + [Fact] + public void Test_161_16() + { + } + + [Fact] + public void Test_161_17() + { + } + + [Fact] + public void Test_161_18() + { + } + + [Fact] + public void Test_161_19() + { + } + + [Fact] + public void Test_161_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_162 + { + #region PassingTests + [Fact] + public void Test_162_01() + { + } + + [Fact] + public void Test_162_02() + { + } + + [Fact] + public void Test_162_03() + { + } + + [Fact] + public void Test_162_04() + { + } + + [Fact] + public void Test_162_05() + { + } + + [Fact] + public void Test_162_06() + { + } + + [Fact] + public void Test_162_07() + { + } + + [Fact] + public void Test_162_08() + { + } + + [Fact] + public void Test_162_09() + { + } + + [Fact] + public void Test_162_10() + { + } + + [Fact] + public void Test_162_11() + { + } + + [Fact] + public void Test_162_12() + { + } + + [Fact] + public void Test_162_13() + { + } + + [Fact] + public void Test_162_14() + { + } + + [Fact] + public void Test_162_15() + { + } + + [Fact] + public void Test_162_16() + { + } + + [Fact] + public void Test_162_17() + { + } + + [Fact] + public void Test_162_18() + { + } + + [Fact] + public void Test_162_19() + { + } + + [Fact] + public void Test_162_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_163 + { + #region PassingTests + [Fact] + public void Test_163_01() + { + } + + [Fact] + public void Test_163_02() + { + } + + [Fact] + public void Test_163_03() + { + } + + [Fact] + public void Test_163_04() + { + } + + [Fact] + public void Test_163_05() + { + } + + [Fact] + public void Test_163_06() + { + } + + [Fact] + public void Test_163_07() + { + } + + [Fact] + public void Test_163_08() + { + } + + [Fact] + public void Test_163_09() + { + } + + [Fact] + public void Test_163_10() + { + } + + [Fact] + public void Test_163_11() + { + } + + [Fact] + public void Test_163_12() + { + } + + [Fact] + public void Test_163_13() + { + } + + [Fact] + public void Test_163_14() + { + } + + [Fact] + public void Test_163_15() + { + } + + [Fact] + public void Test_163_16() + { + } + + [Fact] + public void Test_163_17() + { + } + + [Fact] + public void Test_163_18() + { + } + + [Fact] + public void Test_163_19() + { + } + + [Fact] + public void Test_163_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_164 + { + #region PassingTests + [Fact] + public void Test_164_01() + { + } + + [Fact] + public void Test_164_02() + { + } + + [Fact] + public void Test_164_03() + { + } + + [Fact] + public void Test_164_04() + { + } + + [Fact] + public void Test_164_05() + { + } + + [Fact] + public void Test_164_06() + { + } + + [Fact] + public void Test_164_07() + { + } + + [Fact] + public void Test_164_08() + { + } + + [Fact] + public void Test_164_09() + { + } + + [Fact] + public void Test_164_10() + { + } + + [Fact] + public void Test_164_11() + { + } + + [Fact] + public void Test_164_12() + { + } + + [Fact] + public void Test_164_13() + { + } + + [Fact] + public void Test_164_14() + { + } + + [Fact] + public void Test_164_15() + { + } + + [Fact] + public void Test_164_16() + { + } + + [Fact] + public void Test_164_17() + { + } + + [Fact] + public void Test_164_18() + { + } + + [Fact] + public void Test_164_19() + { + } + + [Fact] + public void Test_164_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_165 + { + #region PassingTests + [Fact] + public void Test_165_01() + { + } + + [Fact] + public void Test_165_02() + { + } + + [Fact] + public void Test_165_03() + { + } + + [Fact] + public void Test_165_04() + { + } + + [Fact] + public void Test_165_05() + { + } + + [Fact] + public void Test_165_06() + { + } + + [Fact] + public void Test_165_07() + { + } + + [Fact] + public void Test_165_08() + { + } + + [Fact] + public void Test_165_09() + { + } + + [Fact] + public void Test_165_10() + { + } + + [Fact] + public void Test_165_11() + { + } + + [Fact] + public void Test_165_12() + { + } + + [Fact] + public void Test_165_13() + { + } + + [Fact] + public void Test_165_14() + { + } + + [Fact] + public void Test_165_15() + { + } + + [Fact] + public void Test_165_16() + { + } + + [Fact] + public void Test_165_17() + { + } + + [Fact] + public void Test_165_18() + { + } + + [Fact] + public void Test_165_19() + { + } + + [Fact] + public void Test_165_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_166 + { + #region PassingTests + [Fact] + public void Test_166_01() + { + } + + [Fact] + public void Test_166_02() + { + } + + [Fact] + public void Test_166_03() + { + } + + [Fact] + public void Test_166_04() + { + } + + [Fact] + public void Test_166_05() + { + } + + [Fact] + public void Test_166_06() + { + } + + [Fact] + public void Test_166_07() + { + } + + [Fact] + public void Test_166_08() + { + } + + [Fact] + public void Test_166_09() + { + } + + [Fact] + public void Test_166_10() + { + } + + [Fact] + public void Test_166_11() + { + } + + [Fact] + public void Test_166_12() + { + } + + [Fact] + public void Test_166_13() + { + } + + [Fact] + public void Test_166_14() + { + } + + [Fact] + public void Test_166_15() + { + } + + [Fact] + public void Test_166_16() + { + } + + [Fact] + public void Test_166_17() + { + } + + [Fact] + public void Test_166_18() + { + } + + [Fact] + public void Test_166_19() + { + } + + [Fact] + public void Test_166_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_167 + { + #region PassingTests + [Fact] + public void Test_167_01() + { + } + + [Fact] + public void Test_167_02() + { + } + + [Fact] + public void Test_167_03() + { + } + + [Fact] + public void Test_167_04() + { + } + + [Fact] + public void Test_167_05() + { + } + + [Fact] + public void Test_167_06() + { + } + + [Fact] + public void Test_167_07() + { + } + + [Fact] + public void Test_167_08() + { + } + + [Fact] + public void Test_167_09() + { + } + + [Fact] + public void Test_167_10() + { + } + + [Fact] + public void Test_167_11() + { + } + + [Fact] + public void Test_167_12() + { + } + + [Fact] + public void Test_167_13() + { + } + + [Fact] + public void Test_167_14() + { + } + + [Fact] + public void Test_167_15() + { + } + + [Fact] + public void Test_167_16() + { + } + + [Fact] + public void Test_167_17() + { + } + + [Fact] + public void Test_167_18() + { + } + + [Fact] + public void Test_167_19() + { + } + + [Fact] + public void Test_167_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_168 + { + #region PassingTests + [Fact] + public void Test_168_01() + { + } + + [Fact] + public void Test_168_02() + { + } + + [Fact] + public void Test_168_03() + { + } + + [Fact] + public void Test_168_04() + { + } + + [Fact] + public void Test_168_05() + { + } + + [Fact] + public void Test_168_06() + { + } + + [Fact] + public void Test_168_07() + { + } + + [Fact] + public void Test_168_08() + { + } + + [Fact] + public void Test_168_09() + { + } + + [Fact] + public void Test_168_10() + { + } + + [Fact] + public void Test_168_11() + { + } + + [Fact] + public void Test_168_12() + { + } + + [Fact] + public void Test_168_13() + { + } + + [Fact] + public void Test_168_14() + { + } + + [Fact] + public void Test_168_15() + { + } + + [Fact] + public void Test_168_16() + { + } + + [Fact] + public void Test_168_17() + { + } + + [Fact] + public void Test_168_18() + { + } + + [Fact] + public void Test_168_19() + { + } + + [Fact] + public void Test_168_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_169 + { + #region PassingTests + [Fact] + public void Test_169_01() + { + } + + [Fact] + public void Test_169_02() + { + } + + [Fact] + public void Test_169_03() + { + } + + [Fact] + public void Test_169_04() + { + } + + [Fact] + public void Test_169_05() + { + } + + [Fact] + public void Test_169_06() + { + } + + [Fact] + public void Test_169_07() + { + } + + [Fact] + public void Test_169_08() + { + } + + [Fact] + public void Test_169_09() + { + } + + [Fact] + public void Test_169_10() + { + } + + [Fact] + public void Test_169_11() + { + } + + [Fact] + public void Test_169_12() + { + } + + [Fact] + public void Test_169_13() + { + } + + [Fact] + public void Test_169_14() + { + } + + [Fact] + public void Test_169_15() + { + } + + [Fact] + public void Test_169_16() + { + } + + [Fact] + public void Test_169_17() + { + } + + [Fact] + public void Test_169_18() + { + } + + [Fact] + public void Test_169_19() + { + } + + [Fact] + public void Test_169_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_170 + { + #region PassingTests + [Fact] + public void Test_170_01() + { + } + + [Fact] + public void Test_170_02() + { + } + + [Fact] + public void Test_170_03() + { + } + + [Fact] + public void Test_170_04() + { + } + + [Fact] + public void Test_170_05() + { + } + + [Fact] + public void Test_170_06() + { + } + + [Fact] + public void Test_170_07() + { + } + + [Fact] + public void Test_170_08() + { + } + + [Fact] + public void Test_170_09() + { + } + + [Fact] + public void Test_170_10() + { + } + + [Fact] + public void Test_170_11() + { + } + + [Fact] + public void Test_170_12() + { + } + + [Fact] + public void Test_170_13() + { + } + + [Fact] + public void Test_170_14() + { + } + + [Fact] + public void Test_170_15() + { + } + + [Fact] + public void Test_170_16() + { + } + + [Fact] + public void Test_170_17() + { + } + + [Fact] + public void Test_170_18() + { + } + + [Fact] + public void Test_170_19() + { + } + + [Fact] + public void Test_170_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_171 + { + #region PassingTests + [Fact] + public void Test_171_01() + { + } + + [Fact] + public void Test_171_02() + { + } + + [Fact] + public void Test_171_03() + { + } + + [Fact] + public void Test_171_04() + { + } + + [Fact] + public void Test_171_05() + { + } + + [Fact] + public void Test_171_06() + { + } + + [Fact] + public void Test_171_07() + { + } + + [Fact] + public void Test_171_08() + { + } + + [Fact] + public void Test_171_09() + { + } + + [Fact] + public void Test_171_10() + { + } + + [Fact] + public void Test_171_11() + { + } + + [Fact] + public void Test_171_12() + { + } + + [Fact] + public void Test_171_13() + { + } + + [Fact] + public void Test_171_14() + { + } + + [Fact] + public void Test_171_15() + { + } + + [Fact] + public void Test_171_16() + { + } + + [Fact] + public void Test_171_17() + { + } + + [Fact] + public void Test_171_18() + { + } + + [Fact] + public void Test_171_19() + { + } + + [Fact] + public void Test_171_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_172 + { + #region PassingTests + [Fact] + public void Test_172_01() + { + } + + [Fact] + public void Test_172_02() + { + } + + [Fact] + public void Test_172_03() + { + } + + [Fact] + public void Test_172_04() + { + } + + [Fact] + public void Test_172_05() + { + } + + [Fact] + public void Test_172_06() + { + } + + [Fact] + public void Test_172_07() + { + } + + [Fact] + public void Test_172_08() + { + } + + [Fact] + public void Test_172_09() + { + } + + [Fact] + public void Test_172_10() + { + } + + [Fact] + public void Test_172_11() + { + } + + [Fact] + public void Test_172_12() + { + } + + [Fact] + public void Test_172_13() + { + } + + [Fact] + public void Test_172_14() + { + } + + [Fact] + public void Test_172_15() + { + } + + [Fact] + public void Test_172_16() + { + } + + [Fact] + public void Test_172_17() + { + } + + [Fact] + public void Test_172_18() + { + } + + [Fact] + public void Test_172_19() + { + } + + [Fact] + public void Test_172_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_173 + { + #region PassingTests + [Fact] + public void Test_173_01() + { + } + + [Fact] + public void Test_173_02() + { + } + + [Fact] + public void Test_173_03() + { + } + + [Fact] + public void Test_173_04() + { + } + + [Fact] + public void Test_173_05() + { + } + + [Fact] + public void Test_173_06() + { + } + + [Fact] + public void Test_173_07() + { + } + + [Fact] + public void Test_173_08() + { + } + + [Fact] + public void Test_173_09() + { + } + + [Fact] + public void Test_173_10() + { + } + + [Fact] + public void Test_173_11() + { + } + + [Fact] + public void Test_173_12() + { + } + + [Fact] + public void Test_173_13() + { + } + + [Fact] + public void Test_173_14() + { + } + + [Fact] + public void Test_173_15() + { + } + + [Fact] + public void Test_173_16() + { + } + + [Fact] + public void Test_173_17() + { + } + + [Fact] + public void Test_173_18() + { + } + + [Fact] + public void Test_173_19() + { + } + + [Fact] + public void Test_173_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_174 + { + #region PassingTests + [Fact] + public void Test_174_01() + { + } + + [Fact] + public void Test_174_02() + { + } + + [Fact] + public void Test_174_03() + { + } + + [Fact] + public void Test_174_04() + { + } + + [Fact] + public void Test_174_05() + { + } + + [Fact] + public void Test_174_06() + { + } + + [Fact] + public void Test_174_07() + { + } + + [Fact] + public void Test_174_08() + { + } + + [Fact] + public void Test_174_09() + { + } + + [Fact] + public void Test_174_10() + { + } + + [Fact] + public void Test_174_11() + { + } + + [Fact] + public void Test_174_12() + { + } + + [Fact] + public void Test_174_13() + { + } + + [Fact] + public void Test_174_14() + { + } + + [Fact] + public void Test_174_15() + { + } + + [Fact] + public void Test_174_16() + { + } + + [Fact] + public void Test_174_17() + { + } + + [Fact] + public void Test_174_18() + { + } + + [Fact] + public void Test_174_19() + { + } + + [Fact] + public void Test_174_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_175 + { + #region PassingTests + [Fact] + public void Test_175_01() + { + } + + [Fact] + public void Test_175_02() + { + } + + [Fact] + public void Test_175_03() + { + } + + [Fact] + public void Test_175_04() + { + } + + [Fact] + public void Test_175_05() + { + } + + [Fact] + public void Test_175_06() + { + } + + [Fact] + public void Test_175_07() + { + } + + [Fact] + public void Test_175_08() + { + } + + [Fact] + public void Test_175_09() + { + } + + [Fact] + public void Test_175_10() + { + } + + [Fact] + public void Test_175_11() + { + } + + [Fact] + public void Test_175_12() + { + } + + [Fact] + public void Test_175_13() + { + } + + [Fact] + public void Test_175_14() + { + } + + [Fact] + public void Test_175_15() + { + } + + [Fact] + public void Test_175_16() + { + } + + [Fact] + public void Test_175_17() + { + } + + [Fact] + public void Test_175_18() + { + } + + [Fact] + public void Test_175_19() + { + } + + [Fact] + public void Test_175_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_176 + { + #region PassingTests + [Fact] + public void Test_176_01() + { + } + + [Fact] + public void Test_176_02() + { + } + + [Fact] + public void Test_176_03() + { + } + + [Fact] + public void Test_176_04() + { + } + + [Fact] + public void Test_176_05() + { + } + + [Fact] + public void Test_176_06() + { + } + + [Fact] + public void Test_176_07() + { + } + + [Fact] + public void Test_176_08() + { + } + + [Fact] + public void Test_176_09() + { + } + + [Fact] + public void Test_176_10() + { + } + + [Fact] + public void Test_176_11() + { + } + + [Fact] + public void Test_176_12() + { + } + + [Fact] + public void Test_176_13() + { + } + + [Fact] + public void Test_176_14() + { + } + + [Fact] + public void Test_176_15() + { + } + + [Fact] + public void Test_176_16() + { + } + + [Fact] + public void Test_176_17() + { + } + + [Fact] + public void Test_176_18() + { + } + + [Fact] + public void Test_176_19() + { + } + + [Fact] + public void Test_176_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_177 + { + #region PassingTests + [Fact] + public void Test_177_01() + { + } + + [Fact] + public void Test_177_02() + { + } + + [Fact] + public void Test_177_03() + { + } + + [Fact] + public void Test_177_04() + { + } + + [Fact] + public void Test_177_05() + { + } + + [Fact] + public void Test_177_06() + { + } + + [Fact] + public void Test_177_07() + { + } + + [Fact] + public void Test_177_08() + { + } + + [Fact] + public void Test_177_09() + { + } + + [Fact] + public void Test_177_10() + { + } + + [Fact] + public void Test_177_11() + { + } + + [Fact] + public void Test_177_12() + { + } + + [Fact] + public void Test_177_13() + { + } + + [Fact] + public void Test_177_14() + { + } + + [Fact] + public void Test_177_15() + { + } + + [Fact] + public void Test_177_16() + { + } + + [Fact] + public void Test_177_17() + { + } + + [Fact] + public void Test_177_18() + { + } + + [Fact] + public void Test_177_19() + { + } + + [Fact] + public void Test_177_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_178 + { + #region PassingTests + [Fact] + public void Test_178_01() + { + } + + [Fact] + public void Test_178_02() + { + } + + [Fact] + public void Test_178_03() + { + } + + [Fact] + public void Test_178_04() + { + } + + [Fact] + public void Test_178_05() + { + } + + [Fact] + public void Test_178_06() + { + } + + [Fact] + public void Test_178_07() + { + } + + [Fact] + public void Test_178_08() + { + } + + [Fact] + public void Test_178_09() + { + } + + [Fact] + public void Test_178_10() + { + } + + [Fact] + public void Test_178_11() + { + } + + [Fact] + public void Test_178_12() + { + } + + [Fact] + public void Test_178_13() + { + } + + [Fact] + public void Test_178_14() + { + } + + [Fact] + public void Test_178_15() + { + } + + [Fact] + public void Test_178_16() + { + } + + [Fact] + public void Test_178_17() + { + } + + [Fact] + public void Test_178_18() + { + } + + [Fact] + public void Test_178_19() + { + } + + [Fact] + public void Test_178_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_179 + { + #region PassingTests + [Fact] + public void Test_179_01() + { + } + + [Fact] + public void Test_179_02() + { + } + + [Fact] + public void Test_179_03() + { + } + + [Fact] + public void Test_179_04() + { + } + + [Fact] + public void Test_179_05() + { + } + + [Fact] + public void Test_179_06() + { + } + + [Fact] + public void Test_179_07() + { + } + + [Fact] + public void Test_179_08() + { + } + + [Fact] + public void Test_179_09() + { + } + + [Fact] + public void Test_179_10() + { + } + + [Fact] + public void Test_179_11() + { + } + + [Fact] + public void Test_179_12() + { + } + + [Fact] + public void Test_179_13() + { + } + + [Fact] + public void Test_179_14() + { + } + + [Fact] + public void Test_179_15() + { + } + + [Fact] + public void Test_179_16() + { + } + + [Fact] + public void Test_179_17() + { + } + + [Fact] + public void Test_179_18() + { + } + + [Fact] + public void Test_179_19() + { + } + + [Fact] + public void Test_179_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_180 + { + #region PassingTests + [Fact] + public void Test_180_01() + { + } + + [Fact] + public void Test_180_02() + { + } + + [Fact] + public void Test_180_03() + { + } + + [Fact] + public void Test_180_04() + { + } + + [Fact] + public void Test_180_05() + { + } + + [Fact] + public void Test_180_06() + { + } + + [Fact] + public void Test_180_07() + { + } + + [Fact] + public void Test_180_08() + { + } + + [Fact] + public void Test_180_09() + { + } + + [Fact] + public void Test_180_10() + { + } + + [Fact] + public void Test_180_11() + { + } + + [Fact] + public void Test_180_12() + { + } + + [Fact] + public void Test_180_13() + { + } + + [Fact] + public void Test_180_14() + { + } + + [Fact] + public void Test_180_15() + { + } + + [Fact] + public void Test_180_16() + { + } + + [Fact] + public void Test_180_17() + { + } + + [Fact] + public void Test_180_18() + { + } + + [Fact] + public void Test_180_19() + { + } + + [Fact] + public void Test_180_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_181 + { + #region PassingTests + [Fact] + public void Test_181_01() + { + } + + [Fact] + public void Test_181_02() + { + } + + [Fact] + public void Test_181_03() + { + } + + [Fact] + public void Test_181_04() + { + } + + [Fact] + public void Test_181_05() + { + } + + [Fact] + public void Test_181_06() + { + } + + [Fact] + public void Test_181_07() + { + } + + [Fact] + public void Test_181_08() + { + } + + [Fact] + public void Test_181_09() + { + } + + [Fact] + public void Test_181_10() + { + } + + [Fact] + public void Test_181_11() + { + } + + [Fact] + public void Test_181_12() + { + } + + [Fact] + public void Test_181_13() + { + } + + [Fact] + public void Test_181_14() + { + } + + [Fact] + public void Test_181_15() + { + } + + [Fact] + public void Test_181_16() + { + } + + [Fact] + public void Test_181_17() + { + } + + [Fact] + public void Test_181_18() + { + } + + [Fact] + public void Test_181_19() + { + } + + [Fact] + public void Test_181_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_182 + { + #region PassingTests + [Fact] + public void Test_182_01() + { + } + + [Fact] + public void Test_182_02() + { + } + + [Fact] + public void Test_182_03() + { + } + + [Fact] + public void Test_182_04() + { + } + + [Fact] + public void Test_182_05() + { + } + + [Fact] + public void Test_182_06() + { + } + + [Fact] + public void Test_182_07() + { + } + + [Fact] + public void Test_182_08() + { + } + + [Fact] + public void Test_182_09() + { + } + + [Fact] + public void Test_182_10() + { + } + + [Fact] + public void Test_182_11() + { + } + + [Fact] + public void Test_182_12() + { + } + + [Fact] + public void Test_182_13() + { + } + + [Fact] + public void Test_182_14() + { + } + + [Fact] + public void Test_182_15() + { + } + + [Fact] + public void Test_182_16() + { + } + + [Fact] + public void Test_182_17() + { + } + + [Fact] + public void Test_182_18() + { + } + + [Fact] + public void Test_182_19() + { + } + + [Fact] + public void Test_182_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_183 + { + #region PassingTests + [Fact] + public void Test_183_01() + { + } + + [Fact] + public void Test_183_02() + { + } + + [Fact] + public void Test_183_03() + { + } + + [Fact] + public void Test_183_04() + { + } + + [Fact] + public void Test_183_05() + { + } + + [Fact] + public void Test_183_06() + { + } + + [Fact] + public void Test_183_07() + { + } + + [Fact] + public void Test_183_08() + { + } + + [Fact] + public void Test_183_09() + { + } + + [Fact] + public void Test_183_10() + { + } + + [Fact] + public void Test_183_11() + { + } + + [Fact] + public void Test_183_12() + { + } + + [Fact] + public void Test_183_13() + { + } + + [Fact] + public void Test_183_14() + { + } + + [Fact] + public void Test_183_15() + { + } + + [Fact] + public void Test_183_16() + { + } + + [Fact] + public void Test_183_17() + { + } + + [Fact] + public void Test_183_18() + { + } + + [Fact] + public void Test_183_19() + { + } + + [Fact] + public void Test_183_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_184 + { + #region PassingTests + [Fact] + public void Test_184_01() + { + } + + [Fact] + public void Test_184_02() + { + } + + [Fact] + public void Test_184_03() + { + } + + [Fact] + public void Test_184_04() + { + } + + [Fact] + public void Test_184_05() + { + } + + [Fact] + public void Test_184_06() + { + } + + [Fact] + public void Test_184_07() + { + } + + [Fact] + public void Test_184_08() + { + } + + [Fact] + public void Test_184_09() + { + } + + [Fact] + public void Test_184_10() + { + } + + [Fact] + public void Test_184_11() + { + } + + [Fact] + public void Test_184_12() + { + } + + [Fact] + public void Test_184_13() + { + } + + [Fact] + public void Test_184_14() + { + } + + [Fact] + public void Test_184_15() + { + } + + [Fact] + public void Test_184_16() + { + } + + [Fact] + public void Test_184_17() + { + } + + [Fact] + public void Test_184_18() + { + } + + [Fact] + public void Test_184_19() + { + } + + [Fact] + public void Test_184_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_185 + { + #region PassingTests + [Fact] + public void Test_185_01() + { + } + + [Fact] + public void Test_185_02() + { + } + + [Fact] + public void Test_185_03() + { + } + + [Fact] + public void Test_185_04() + { + } + + [Fact] + public void Test_185_05() + { + } + + [Fact] + public void Test_185_06() + { + } + + [Fact] + public void Test_185_07() + { + } + + [Fact] + public void Test_185_08() + { + } + + [Fact] + public void Test_185_09() + { + } + + [Fact] + public void Test_185_10() + { + } + + [Fact] + public void Test_185_11() + { + } + + [Fact] + public void Test_185_12() + { + } + + [Fact] + public void Test_185_13() + { + } + + [Fact] + public void Test_185_14() + { + } + + [Fact] + public void Test_185_15() + { + } + + [Fact] + public void Test_185_16() + { + } + + [Fact] + public void Test_185_17() + { + } + + [Fact] + public void Test_185_18() + { + } + + [Fact] + public void Test_185_19() + { + } + + [Fact] + public void Test_185_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_186 + { + #region PassingTests + [Fact] + public void Test_186_01() + { + } + + [Fact] + public void Test_186_02() + { + } + + [Fact] + public void Test_186_03() + { + } + + [Fact] + public void Test_186_04() + { + } + + [Fact] + public void Test_186_05() + { + } + + [Fact] + public void Test_186_06() + { + } + + [Fact] + public void Test_186_07() + { + } + + [Fact] + public void Test_186_08() + { + } + + [Fact] + public void Test_186_09() + { + } + + [Fact] + public void Test_186_10() + { + } + + [Fact] + public void Test_186_11() + { + } + + [Fact] + public void Test_186_12() + { + } + + [Fact] + public void Test_186_13() + { + } + + [Fact] + public void Test_186_14() + { + } + + [Fact] + public void Test_186_15() + { + } + + [Fact] + public void Test_186_16() + { + } + + [Fact] + public void Test_186_17() + { + } + + [Fact] + public void Test_186_18() + { + } + + [Fact] + public void Test_186_19() + { + } + + [Fact] + public void Test_186_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_187 + { + #region PassingTests + [Fact] + public void Test_187_01() + { + } + + [Fact] + public void Test_187_02() + { + } + + [Fact] + public void Test_187_03() + { + } + + [Fact] + public void Test_187_04() + { + } + + [Fact] + public void Test_187_05() + { + } + + [Fact] + public void Test_187_06() + { + } + + [Fact] + public void Test_187_07() + { + } + + [Fact] + public void Test_187_08() + { + } + + [Fact] + public void Test_187_09() + { + } + + [Fact] + public void Test_187_10() + { + } + + [Fact] + public void Test_187_11() + { + } + + [Fact] + public void Test_187_12() + { + } + + [Fact] + public void Test_187_13() + { + } + + [Fact] + public void Test_187_14() + { + } + + [Fact] + public void Test_187_15() + { + } + + [Fact] + public void Test_187_16() + { + } + + [Fact] + public void Test_187_17() + { + } + + [Fact] + public void Test_187_18() + { + } + + [Fact] + public void Test_187_19() + { + } + + [Fact] + public void Test_187_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_188 + { + #region PassingTests + [Fact] + public void Test_188_01() + { + } + + [Fact] + public void Test_188_02() + { + } + + [Fact] + public void Test_188_03() + { + } + + [Fact] + public void Test_188_04() + { + } + + [Fact] + public void Test_188_05() + { + } + + [Fact] + public void Test_188_06() + { + } + + [Fact] + public void Test_188_07() + { + } + + [Fact] + public void Test_188_08() + { + } + + [Fact] + public void Test_188_09() + { + } + + [Fact] + public void Test_188_10() + { + } + + [Fact] + public void Test_188_11() + { + } + + [Fact] + public void Test_188_12() + { + } + + [Fact] + public void Test_188_13() + { + } + + [Fact] + public void Test_188_14() + { + } + + [Fact] + public void Test_188_15() + { + } + + [Fact] + public void Test_188_16() + { + } + + [Fact] + public void Test_188_17() + { + } + + [Fact] + public void Test_188_18() + { + } + + [Fact] + public void Test_188_19() + { + } + + [Fact] + public void Test_188_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_189 + { + #region PassingTests + [Fact] + public void Test_189_01() + { + } + + [Fact] + public void Test_189_02() + { + } + + [Fact] + public void Test_189_03() + { + } + + [Fact] + public void Test_189_04() + { + } + + [Fact] + public void Test_189_05() + { + } + + [Fact] + public void Test_189_06() + { + } + + [Fact] + public void Test_189_07() + { + } + + [Fact] + public void Test_189_08() + { + } + + [Fact] + public void Test_189_09() + { + } + + [Fact] + public void Test_189_10() + { + } + + [Fact] + public void Test_189_11() + { + } + + [Fact] + public void Test_189_12() + { + } + + [Fact] + public void Test_189_13() + { + } + + [Fact] + public void Test_189_14() + { + } + + [Fact] + public void Test_189_15() + { + } + + [Fact] + public void Test_189_16() + { + } + + [Fact] + public void Test_189_17() + { + } + + [Fact] + public void Test_189_18() + { + } + + [Fact] + public void Test_189_19() + { + } + + [Fact] + public void Test_189_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_190 + { + #region PassingTests + [Fact] + public void Test_190_01() + { + } + + [Fact] + public void Test_190_02() + { + } + + [Fact] + public void Test_190_03() + { + } + + [Fact] + public void Test_190_04() + { + } + + [Fact] + public void Test_190_05() + { + } + + [Fact] + public void Test_190_06() + { + } + + [Fact] + public void Test_190_07() + { + } + + [Fact] + public void Test_190_08() + { + } + + [Fact] + public void Test_190_09() + { + } + + [Fact] + public void Test_190_10() + { + } + + [Fact] + public void Test_190_11() + { + } + + [Fact] + public void Test_190_12() + { + } + + [Fact] + public void Test_190_13() + { + } + + [Fact] + public void Test_190_14() + { + } + + [Fact] + public void Test_190_15() + { + } + + [Fact] + public void Test_190_16() + { + } + + [Fact] + public void Test_190_17() + { + } + + [Fact] + public void Test_190_18() + { + } + + [Fact] + public void Test_190_19() + { + } + + [Fact] + public void Test_190_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_191 + { + #region PassingTests + [Fact] + public void Test_191_01() + { + } + + [Fact] + public void Test_191_02() + { + } + + [Fact] + public void Test_191_03() + { + } + + [Fact] + public void Test_191_04() + { + } + + [Fact] + public void Test_191_05() + { + } + + [Fact] + public void Test_191_06() + { + } + + [Fact] + public void Test_191_07() + { + } + + [Fact] + public void Test_191_08() + { + } + + [Fact] + public void Test_191_09() + { + } + + [Fact] + public void Test_191_10() + { + } + + [Fact] + public void Test_191_11() + { + } + + [Fact] + public void Test_191_12() + { + } + + [Fact] + public void Test_191_13() + { + } + + [Fact] + public void Test_191_14() + { + } + + [Fact] + public void Test_191_15() + { + } + + [Fact] + public void Test_191_16() + { + } + + [Fact] + public void Test_191_17() + { + } + + [Fact] + public void Test_191_18() + { + } + + [Fact] + public void Test_191_19() + { + } + + [Fact] + public void Test_191_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_192 + { + #region PassingTests + [Fact] + public void Test_192_01() + { + } + + [Fact] + public void Test_192_02() + { + } + + [Fact] + public void Test_192_03() + { + } + + [Fact] + public void Test_192_04() + { + } + + [Fact] + public void Test_192_05() + { + } + + [Fact] + public void Test_192_06() + { + } + + [Fact] + public void Test_192_07() + { + } + + [Fact] + public void Test_192_08() + { + } + + [Fact] + public void Test_192_09() + { + } + + [Fact] + public void Test_192_10() + { + } + + [Fact] + public void Test_192_11() + { + } + + [Fact] + public void Test_192_12() + { + } + + [Fact] + public void Test_192_13() + { + } + + [Fact] + public void Test_192_14() + { + } + + [Fact] + public void Test_192_15() + { + } + + [Fact] + public void Test_192_16() + { + } + + [Fact] + public void Test_192_17() + { + } + + [Fact] + public void Test_192_18() + { + } + + [Fact] + public void Test_192_19() + { + } + + [Fact] + public void Test_192_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_193 + { + #region PassingTests + [Fact] + public void Test_193_01() + { + } + + [Fact] + public void Test_193_02() + { + } + + [Fact] + public void Test_193_03() + { + } + + [Fact] + public void Test_193_04() + { + } + + [Fact] + public void Test_193_05() + { + } + + [Fact] + public void Test_193_06() + { + } + + [Fact] + public void Test_193_07() + { + } + + [Fact] + public void Test_193_08() + { + } + + [Fact] + public void Test_193_09() + { + } + + [Fact] + public void Test_193_10() + { + } + + [Fact] + public void Test_193_11() + { + } + + [Fact] + public void Test_193_12() + { + } + + [Fact] + public void Test_193_13() + { + } + + [Fact] + public void Test_193_14() + { + } + + [Fact] + public void Test_193_15() + { + } + + [Fact] + public void Test_193_16() + { + } + + [Fact] + public void Test_193_17() + { + } + + [Fact] + public void Test_193_18() + { + } + + [Fact] + public void Test_193_19() + { + } + + [Fact] + public void Test_193_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_194 + { + #region PassingTests + [Fact] + public void Test_194_01() + { + } + + [Fact] + public void Test_194_02() + { + } + + [Fact] + public void Test_194_03() + { + } + + [Fact] + public void Test_194_04() + { + } + + [Fact] + public void Test_194_05() + { + } + + [Fact] + public void Test_194_06() + { + } + + [Fact] + public void Test_194_07() + { + } + + [Fact] + public void Test_194_08() + { + } + + [Fact] + public void Test_194_09() + { + } + + [Fact] + public void Test_194_10() + { + } + + [Fact] + public void Test_194_11() + { + } + + [Fact] + public void Test_194_12() + { + } + + [Fact] + public void Test_194_13() + { + } + + [Fact] + public void Test_194_14() + { + } + + [Fact] + public void Test_194_15() + { + } + + [Fact] + public void Test_194_16() + { + } + + [Fact] + public void Test_194_17() + { + } + + [Fact] + public void Test_194_18() + { + } + + [Fact] + public void Test_194_19() + { + } + + [Fact] + public void Test_194_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_195 + { + #region PassingTests + [Fact] + public void Test_195_01() + { + } + + [Fact] + public void Test_195_02() + { + } + + [Fact] + public void Test_195_03() + { + } + + [Fact] + public void Test_195_04() + { + } + + [Fact] + public void Test_195_05() + { + } + + [Fact] + public void Test_195_06() + { + } + + [Fact] + public void Test_195_07() + { + } + + [Fact] + public void Test_195_08() + { + } + + [Fact] + public void Test_195_09() + { + } + + [Fact] + public void Test_195_10() + { + } + + [Fact] + public void Test_195_11() + { + } + + [Fact] + public void Test_195_12() + { + } + + [Fact] + public void Test_195_13() + { + } + + [Fact] + public void Test_195_14() + { + } + + [Fact] + public void Test_195_15() + { + } + + [Fact] + public void Test_195_16() + { + } + + [Fact] + public void Test_195_17() + { + } + + [Fact] + public void Test_195_18() + { + } + + [Fact] + public void Test_195_19() + { + } + + [Fact] + public void Test_195_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_196 + { + #region PassingTests + [Fact] + public void Test_196_01() + { + } + + [Fact] + public void Test_196_02() + { + } + + [Fact] + public void Test_196_03() + { + } + + [Fact] + public void Test_196_04() + { + } + + [Fact] + public void Test_196_05() + { + } + + [Fact] + public void Test_196_06() + { + } + + [Fact] + public void Test_196_07() + { + } + + [Fact] + public void Test_196_08() + { + } + + [Fact] + public void Test_196_09() + { + } + + [Fact] + public void Test_196_10() + { + } + + [Fact] + public void Test_196_11() + { + } + + [Fact] + public void Test_196_12() + { + } + + [Fact] + public void Test_196_13() + { + } + + [Fact] + public void Test_196_14() + { + } + + [Fact] + public void Test_196_15() + { + } + + [Fact] + public void Test_196_16() + { + } + + [Fact] + public void Test_196_17() + { + } + + [Fact] + public void Test_196_18() + { + } + + [Fact] + public void Test_196_19() + { + } + + [Fact] + public void Test_196_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_197 + { + #region PassingTests + [Fact] + public void Test_197_01() + { + } + + [Fact] + public void Test_197_02() + { + } + + [Fact] + public void Test_197_03() + { + } + + [Fact] + public void Test_197_04() + { + } + + [Fact] + public void Test_197_05() + { + } + + [Fact] + public void Test_197_06() + { + } + + [Fact] + public void Test_197_07() + { + } + + [Fact] + public void Test_197_08() + { + } + + [Fact] + public void Test_197_09() + { + } + + [Fact] + public void Test_197_10() + { + } + + [Fact] + public void Test_197_11() + { + } + + [Fact] + public void Test_197_12() + { + } + + [Fact] + public void Test_197_13() + { + } + + [Fact] + public void Test_197_14() + { + } + + [Fact] + public void Test_197_15() + { + } + + [Fact] + public void Test_197_16() + { + } + + [Fact] + public void Test_197_17() + { + } + + [Fact] + public void Test_197_18() + { + } + + [Fact] + public void Test_197_19() + { + } + + [Fact] + public void Test_197_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_198 + { + #region PassingTests + [Fact] + public void Test_198_01() + { + } + + [Fact] + public void Test_198_02() + { + } + + [Fact] + public void Test_198_03() + { + } + + [Fact] + public void Test_198_04() + { + } + + [Fact] + public void Test_198_05() + { + } + + [Fact] + public void Test_198_06() + { + } + + [Fact] + public void Test_198_07() + { + } + + [Fact] + public void Test_198_08() + { + } + + [Fact] + public void Test_198_09() + { + } + + [Fact] + public void Test_198_10() + { + } + + [Fact] + public void Test_198_11() + { + } + + [Fact] + public void Test_198_12() + { + } + + [Fact] + public void Test_198_13() + { + } + + [Fact] + public void Test_198_14() + { + } + + [Fact] + public void Test_198_15() + { + } + + [Fact] + public void Test_198_16() + { + } + + [Fact] + public void Test_198_17() + { + } + + [Fact] + public void Test_198_18() + { + } + + [Fact] + public void Test_198_19() + { + } + + [Fact] + public void Test_198_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_199 + { + #region PassingTests + [Fact] + public void Test_199_01() + { + } + + [Fact] + public void Test_199_02() + { + } + + [Fact] + public void Test_199_03() + { + } + + [Fact] + public void Test_199_04() + { + } + + [Fact] + public void Test_199_05() + { + } + + [Fact] + public void Test_199_06() + { + } + + [Fact] + public void Test_199_07() + { + } + + [Fact] + public void Test_199_08() + { + } + + [Fact] + public void Test_199_09() + { + } + + [Fact] + public void Test_199_10() + { + } + + [Fact] + public void Test_199_11() + { + } + + [Fact] + public void Test_199_12() + { + } + + [Fact] + public void Test_199_13() + { + } + + [Fact] + public void Test_199_14() + { + } + + [Fact] + public void Test_199_15() + { + } + + [Fact] + public void Test_199_16() + { + } + + [Fact] + public void Test_199_17() + { + } + + [Fact] + public void Test_199_18() + { + } + + [Fact] + public void Test_199_19() + { + } + + [Fact] + public void Test_199_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_200 + { + #region PassingTests + [Fact] + public void Test_200_01() + { + } + + [Fact] + public void Test_200_02() + { + } + + [Fact] + public void Test_200_03() + { + } + + [Fact] + public void Test_200_04() + { + } + + [Fact] + public void Test_200_05() + { + } + + [Fact] + public void Test_200_06() + { + } + + [Fact] + public void Test_200_07() + { + } + + [Fact] + public void Test_200_08() + { + } + + [Fact] + public void Test_200_09() + { + } + + [Fact] + public void Test_200_10() + { + } + + [Fact] + public void Test_200_11() + { + } + + [Fact] + public void Test_200_12() + { + } + + [Fact] + public void Test_200_13() + { + } + + [Fact] + public void Test_200_14() + { + } + + [Fact] + public void Test_200_15() + { + } + + [Fact] + public void Test_200_16() + { + } + + [Fact] + public void Test_200_17() + { + } + + [Fact] + public void Test_200_18() + { + } + + [Fact] + public void Test_200_19() + { + } + + [Fact] + public void Test_200_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_201 + { + #region PassingTests + [Fact] + public void Test_201_01() + { + } + + [Fact] + public void Test_201_02() + { + } + + [Fact] + public void Test_201_03() + { + } + + [Fact] + public void Test_201_04() + { + } + + [Fact] + public void Test_201_05() + { + } + + [Fact] + public void Test_201_06() + { + } + + [Fact] + public void Test_201_07() + { + } + + [Fact] + public void Test_201_08() + { + } + + [Fact] + public void Test_201_09() + { + } + + [Fact] + public void Test_201_10() + { + } + + [Fact] + public void Test_201_11() + { + } + + [Fact] + public void Test_201_12() + { + } + + [Fact] + public void Test_201_13() + { + } + + [Fact] + public void Test_201_14() + { + } + + [Fact] + public void Test_201_15() + { + } + + [Fact] + public void Test_201_16() + { + } + + [Fact] + public void Test_201_17() + { + } + + [Fact] + public void Test_201_18() + { + } + + [Fact] + public void Test_201_19() + { + } + + [Fact] + public void Test_201_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_202 + { + #region PassingTests + [Fact] + public void Test_202_01() + { + } + + [Fact] + public void Test_202_02() + { + } + + [Fact] + public void Test_202_03() + { + } + + [Fact] + public void Test_202_04() + { + } + + [Fact] + public void Test_202_05() + { + } + + [Fact] + public void Test_202_06() + { + } + + [Fact] + public void Test_202_07() + { + } + + [Fact] + public void Test_202_08() + { + } + + [Fact] + public void Test_202_09() + { + } + + [Fact] + public void Test_202_10() + { + } + + [Fact] + public void Test_202_11() + { + } + + [Fact] + public void Test_202_12() + { + } + + [Fact] + public void Test_202_13() + { + } + + [Fact] + public void Test_202_14() + { + } + + [Fact] + public void Test_202_15() + { + } + + [Fact] + public void Test_202_16() + { + } + + [Fact] + public void Test_202_17() + { + } + + [Fact] + public void Test_202_18() + { + } + + [Fact] + public void Test_202_19() + { + } + + [Fact] + public void Test_202_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_203 + { + #region PassingTests + [Fact] + public void Test_203_01() + { + } + + [Fact] + public void Test_203_02() + { + } + + [Fact] + public void Test_203_03() + { + } + + [Fact] + public void Test_203_04() + { + } + + [Fact] + public void Test_203_05() + { + } + + [Fact] + public void Test_203_06() + { + } + + [Fact] + public void Test_203_07() + { + } + + [Fact] + public void Test_203_08() + { + } + + [Fact] + public void Test_203_09() + { + } + + [Fact] + public void Test_203_10() + { + } + + [Fact] + public void Test_203_11() + { + } + + [Fact] + public void Test_203_12() + { + } + + [Fact] + public void Test_203_13() + { + } + + [Fact] + public void Test_203_14() + { + } + + [Fact] + public void Test_203_15() + { + } + + [Fact] + public void Test_203_16() + { + } + + [Fact] + public void Test_203_17() + { + } + + [Fact] + public void Test_203_18() + { + } + + [Fact] + public void Test_203_19() + { + } + + [Fact] + public void Test_203_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_204 + { + #region PassingTests + [Fact] + public void Test_204_01() + { + } + + [Fact] + public void Test_204_02() + { + } + + [Fact] + public void Test_204_03() + { + } + + [Fact] + public void Test_204_04() + { + } + + [Fact] + public void Test_204_05() + { + } + + [Fact] + public void Test_204_06() + { + } + + [Fact] + public void Test_204_07() + { + } + + [Fact] + public void Test_204_08() + { + } + + [Fact] + public void Test_204_09() + { + } + + [Fact] + public void Test_204_10() + { + } + + [Fact] + public void Test_204_11() + { + } + + [Fact] + public void Test_204_12() + { + } + + [Fact] + public void Test_204_13() + { + } + + [Fact] + public void Test_204_14() + { + } + + [Fact] + public void Test_204_15() + { + } + + [Fact] + public void Test_204_16() + { + } + + [Fact] + public void Test_204_17() + { + } + + [Fact] + public void Test_204_18() + { + } + + [Fact] + public void Test_204_19() + { + } + + [Fact] + public void Test_204_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_205 + { + #region PassingTests + [Fact] + public void Test_205_01() + { + } + + [Fact] + public void Test_205_02() + { + } + + [Fact] + public void Test_205_03() + { + } + + [Fact] + public void Test_205_04() + { + } + + [Fact] + public void Test_205_05() + { + } + + [Fact] + public void Test_205_06() + { + } + + [Fact] + public void Test_205_07() + { + } + + [Fact] + public void Test_205_08() + { + } + + [Fact] + public void Test_205_09() + { + } + + [Fact] + public void Test_205_10() + { + } + + [Fact] + public void Test_205_11() + { + } + + [Fact] + public void Test_205_12() + { + } + + [Fact] + public void Test_205_13() + { + } + + [Fact] + public void Test_205_14() + { + } + + [Fact] + public void Test_205_15() + { + } + + [Fact] + public void Test_205_16() + { + } + + [Fact] + public void Test_205_17() + { + } + + [Fact] + public void Test_205_18() + { + } + + [Fact] + public void Test_205_19() + { + } + + [Fact] + public void Test_205_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_206 + { + #region PassingTests + [Fact] + public void Test_206_01() + { + } + + [Fact] + public void Test_206_02() + { + } + + [Fact] + public void Test_206_03() + { + } + + [Fact] + public void Test_206_04() + { + } + + [Fact] + public void Test_206_05() + { + } + + [Fact] + public void Test_206_06() + { + } + + [Fact] + public void Test_206_07() + { + } + + [Fact] + public void Test_206_08() + { + } + + [Fact] + public void Test_206_09() + { + } + + [Fact] + public void Test_206_10() + { + } + + [Fact] + public void Test_206_11() + { + } + + [Fact] + public void Test_206_12() + { + } + + [Fact] + public void Test_206_13() + { + } + + [Fact] + public void Test_206_14() + { + } + + [Fact] + public void Test_206_15() + { + } + + [Fact] + public void Test_206_16() + { + } + + [Fact] + public void Test_206_17() + { + } + + [Fact] + public void Test_206_18() + { + } + + [Fact] + public void Test_206_19() + { + } + + [Fact] + public void Test_206_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_207 + { + #region PassingTests + [Fact] + public void Test_207_01() + { + } + + [Fact] + public void Test_207_02() + { + } + + [Fact] + public void Test_207_03() + { + } + + [Fact] + public void Test_207_04() + { + } + + [Fact] + public void Test_207_05() + { + } + + [Fact] + public void Test_207_06() + { + } + + [Fact] + public void Test_207_07() + { + } + + [Fact] + public void Test_207_08() + { + } + + [Fact] + public void Test_207_09() + { + } + + [Fact] + public void Test_207_10() + { + } + + [Fact] + public void Test_207_11() + { + } + + [Fact] + public void Test_207_12() + { + } + + [Fact] + public void Test_207_13() + { + } + + [Fact] + public void Test_207_14() + { + } + + [Fact] + public void Test_207_15() + { + } + + [Fact] + public void Test_207_16() + { + } + + [Fact] + public void Test_207_17() + { + } + + [Fact] + public void Test_207_18() + { + } + + [Fact] + public void Test_207_19() + { + } + + [Fact] + public void Test_207_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_208 + { + #region PassingTests + [Fact] + public void Test_208_01() + { + } + + [Fact] + public void Test_208_02() + { + } + + [Fact] + public void Test_208_03() + { + } + + [Fact] + public void Test_208_04() + { + } + + [Fact] + public void Test_208_05() + { + } + + [Fact] + public void Test_208_06() + { + } + + [Fact] + public void Test_208_07() + { + } + + [Fact] + public void Test_208_08() + { + } + + [Fact] + public void Test_208_09() + { + } + + [Fact] + public void Test_208_10() + { + } + + [Fact] + public void Test_208_11() + { + } + + [Fact] + public void Test_208_12() + { + } + + [Fact] + public void Test_208_13() + { + } + + [Fact] + public void Test_208_14() + { + } + + [Fact] + public void Test_208_15() + { + } + + [Fact] + public void Test_208_16() + { + } + + [Fact] + public void Test_208_17() + { + } + + [Fact] + public void Test_208_18() + { + } + + [Fact] + public void Test_208_19() + { + } + + [Fact] + public void Test_208_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_209 + { + #region PassingTests + [Fact] + public void Test_209_01() + { + } + + [Fact] + public void Test_209_02() + { + } + + [Fact] + public void Test_209_03() + { + } + + [Fact] + public void Test_209_04() + { + } + + [Fact] + public void Test_209_05() + { + } + + [Fact] + public void Test_209_06() + { + } + + [Fact] + public void Test_209_07() + { + } + + [Fact] + public void Test_209_08() + { + } + + [Fact] + public void Test_209_09() + { + } + + [Fact] + public void Test_209_10() + { + } + + [Fact] + public void Test_209_11() + { + } + + [Fact] + public void Test_209_12() + { + } + + [Fact] + public void Test_209_13() + { + } + + [Fact] + public void Test_209_14() + { + } + + [Fact] + public void Test_209_15() + { + } + + [Fact] + public void Test_209_16() + { + } + + [Fact] + public void Test_209_17() + { + } + + [Fact] + public void Test_209_18() + { + } + + [Fact] + public void Test_209_19() + { + } + + [Fact] + public void Test_209_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_210 + { + #region PassingTests + [Fact] + public void Test_210_01() + { + } + + [Fact] + public void Test_210_02() + { + } + + [Fact] + public void Test_210_03() + { + } + + [Fact] + public void Test_210_04() + { + } + + [Fact] + public void Test_210_05() + { + } + + [Fact] + public void Test_210_06() + { + } + + [Fact] + public void Test_210_07() + { + } + + [Fact] + public void Test_210_08() + { + } + + [Fact] + public void Test_210_09() + { + } + + [Fact] + public void Test_210_10() + { + } + + [Fact] + public void Test_210_11() + { + } + + [Fact] + public void Test_210_12() + { + } + + [Fact] + public void Test_210_13() + { + } + + [Fact] + public void Test_210_14() + { + } + + [Fact] + public void Test_210_15() + { + } + + [Fact] + public void Test_210_16() + { + } + + [Fact] + public void Test_210_17() + { + } + + [Fact] + public void Test_210_18() + { + } + + [Fact] + public void Test_210_19() + { + } + + [Fact] + public void Test_210_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_211 + { + #region PassingTests + [Fact] + public void Test_211_01() + { + } + + [Fact] + public void Test_211_02() + { + } + + [Fact] + public void Test_211_03() + { + } + + [Fact] + public void Test_211_04() + { + } + + [Fact] + public void Test_211_05() + { + } + + [Fact] + public void Test_211_06() + { + } + + [Fact] + public void Test_211_07() + { + } + + [Fact] + public void Test_211_08() + { + } + + [Fact] + public void Test_211_09() + { + } + + [Fact] + public void Test_211_10() + { + } + + [Fact] + public void Test_211_11() + { + } + + [Fact] + public void Test_211_12() + { + } + + [Fact] + public void Test_211_13() + { + } + + [Fact] + public void Test_211_14() + { + } + + [Fact] + public void Test_211_15() + { + } + + [Fact] + public void Test_211_16() + { + } + + [Fact] + public void Test_211_17() + { + } + + [Fact] + public void Test_211_18() + { + } + + [Fact] + public void Test_211_19() + { + } + + [Fact] + public void Test_211_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_212 + { + #region PassingTests + [Fact] + public void Test_212_01() + { + } + + [Fact] + public void Test_212_02() + { + } + + [Fact] + public void Test_212_03() + { + } + + [Fact] + public void Test_212_04() + { + } + + [Fact] + public void Test_212_05() + { + } + + [Fact] + public void Test_212_06() + { + } + + [Fact] + public void Test_212_07() + { + } + + [Fact] + public void Test_212_08() + { + } + + [Fact] + public void Test_212_09() + { + } + + [Fact] + public void Test_212_10() + { + } + + [Fact] + public void Test_212_11() + { + } + + [Fact] + public void Test_212_12() + { + } + + [Fact] + public void Test_212_13() + { + } + + [Fact] + public void Test_212_14() + { + } + + [Fact] + public void Test_212_15() + { + } + + [Fact] + public void Test_212_16() + { + } + + [Fact] + public void Test_212_17() + { + } + + [Fact] + public void Test_212_18() + { + } + + [Fact] + public void Test_212_19() + { + } + + [Fact] + public void Test_212_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_213 + { + #region PassingTests + [Fact] + public void Test_213_01() + { + } + + [Fact] + public void Test_213_02() + { + } + + [Fact] + public void Test_213_03() + { + } + + [Fact] + public void Test_213_04() + { + } + + [Fact] + public void Test_213_05() + { + } + + [Fact] + public void Test_213_06() + { + } + + [Fact] + public void Test_213_07() + { + } + + [Fact] + public void Test_213_08() + { + } + + [Fact] + public void Test_213_09() + { + } + + [Fact] + public void Test_213_10() + { + } + + [Fact] + public void Test_213_11() + { + } + + [Fact] + public void Test_213_12() + { + } + + [Fact] + public void Test_213_13() + { + } + + [Fact] + public void Test_213_14() + { + } + + [Fact] + public void Test_213_15() + { + } + + [Fact] + public void Test_213_16() + { + } + + [Fact] + public void Test_213_17() + { + } + + [Fact] + public void Test_213_18() + { + } + + [Fact] + public void Test_213_19() + { + } + + [Fact] + public void Test_213_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_214 + { + #region PassingTests + [Fact] + public void Test_214_01() + { + } + + [Fact] + public void Test_214_02() + { + } + + [Fact] + public void Test_214_03() + { + } + + [Fact] + public void Test_214_04() + { + } + + [Fact] + public void Test_214_05() + { + } + + [Fact] + public void Test_214_06() + { + } + + [Fact] + public void Test_214_07() + { + } + + [Fact] + public void Test_214_08() + { + } + + [Fact] + public void Test_214_09() + { + } + + [Fact] + public void Test_214_10() + { + } + + [Fact] + public void Test_214_11() + { + } + + [Fact] + public void Test_214_12() + { + } + + [Fact] + public void Test_214_13() + { + } + + [Fact] + public void Test_214_14() + { + } + + [Fact] + public void Test_214_15() + { + } + + [Fact] + public void Test_214_16() + { + } + + [Fact] + public void Test_214_17() + { + } + + [Fact] + public void Test_214_18() + { + } + + [Fact] + public void Test_214_19() + { + } + + [Fact] + public void Test_214_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_215 + { + #region PassingTests + [Fact] + public void Test_215_01() + { + } + + [Fact] + public void Test_215_02() + { + } + + [Fact] + public void Test_215_03() + { + } + + [Fact] + public void Test_215_04() + { + } + + [Fact] + public void Test_215_05() + { + } + + [Fact] + public void Test_215_06() + { + } + + [Fact] + public void Test_215_07() + { + } + + [Fact] + public void Test_215_08() + { + } + + [Fact] + public void Test_215_09() + { + } + + [Fact] + public void Test_215_10() + { + } + + [Fact] + public void Test_215_11() + { + } + + [Fact] + public void Test_215_12() + { + } + + [Fact] + public void Test_215_13() + { + } + + [Fact] + public void Test_215_14() + { + } + + [Fact] + public void Test_215_15() + { + } + + [Fact] + public void Test_215_16() + { + } + + [Fact] + public void Test_215_17() + { + } + + [Fact] + public void Test_215_18() + { + } + + [Fact] + public void Test_215_19() + { + } + + [Fact] + public void Test_215_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_216 + { + #region PassingTests + [Fact] + public void Test_216_01() + { + } + + [Fact] + public void Test_216_02() + { + } + + [Fact] + public void Test_216_03() + { + } + + [Fact] + public void Test_216_04() + { + } + + [Fact] + public void Test_216_05() + { + } + + [Fact] + public void Test_216_06() + { + } + + [Fact] + public void Test_216_07() + { + } + + [Fact] + public void Test_216_08() + { + } + + [Fact] + public void Test_216_09() + { + } + + [Fact] + public void Test_216_10() + { + } + + [Fact] + public void Test_216_11() + { + } + + [Fact] + public void Test_216_12() + { + } + + [Fact] + public void Test_216_13() + { + } + + [Fact] + public void Test_216_14() + { + } + + [Fact] + public void Test_216_15() + { + } + + [Fact] + public void Test_216_16() + { + } + + [Fact] + public void Test_216_17() + { + } + + [Fact] + public void Test_216_18() + { + } + + [Fact] + public void Test_216_19() + { + } + + [Fact] + public void Test_216_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_217 + { + #region PassingTests + [Fact] + public void Test_217_01() + { + } + + [Fact] + public void Test_217_02() + { + } + + [Fact] + public void Test_217_03() + { + } + + [Fact] + public void Test_217_04() + { + } + + [Fact] + public void Test_217_05() + { + } + + [Fact] + public void Test_217_06() + { + } + + [Fact] + public void Test_217_07() + { + } + + [Fact] + public void Test_217_08() + { + } + + [Fact] + public void Test_217_09() + { + } + + [Fact] + public void Test_217_10() + { + } + + [Fact] + public void Test_217_11() + { + } + + [Fact] + public void Test_217_12() + { + } + + [Fact] + public void Test_217_13() + { + } + + [Fact] + public void Test_217_14() + { + } + + [Fact] + public void Test_217_15() + { + } + + [Fact] + public void Test_217_16() + { + } + + [Fact] + public void Test_217_17() + { + } + + [Fact] + public void Test_217_18() + { + } + + [Fact] + public void Test_217_19() + { + } + + [Fact] + public void Test_217_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_218 + { + #region PassingTests + [Fact] + public void Test_218_01() + { + } + + [Fact] + public void Test_218_02() + { + } + + [Fact] + public void Test_218_03() + { + } + + [Fact] + public void Test_218_04() + { + } + + [Fact] + public void Test_218_05() + { + } + + [Fact] + public void Test_218_06() + { + } + + [Fact] + public void Test_218_07() + { + } + + [Fact] + public void Test_218_08() + { + } + + [Fact] + public void Test_218_09() + { + } + + [Fact] + public void Test_218_10() + { + } + + [Fact] + public void Test_218_11() + { + } + + [Fact] + public void Test_218_12() + { + } + + [Fact] + public void Test_218_13() + { + } + + [Fact] + public void Test_218_14() + { + } + + [Fact] + public void Test_218_15() + { + } + + [Fact] + public void Test_218_16() + { + } + + [Fact] + public void Test_218_17() + { + } + + [Fact] + public void Test_218_18() + { + } + + [Fact] + public void Test_218_19() + { + } + + [Fact] + public void Test_218_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_219 + { + #region PassingTests + [Fact] + public void Test_219_01() + { + } + + [Fact] + public void Test_219_02() + { + } + + [Fact] + public void Test_219_03() + { + } + + [Fact] + public void Test_219_04() + { + } + + [Fact] + public void Test_219_05() + { + } + + [Fact] + public void Test_219_06() + { + } + + [Fact] + public void Test_219_07() + { + } + + [Fact] + public void Test_219_08() + { + } + + [Fact] + public void Test_219_09() + { + } + + [Fact] + public void Test_219_10() + { + } + + [Fact] + public void Test_219_11() + { + } + + [Fact] + public void Test_219_12() + { + } + + [Fact] + public void Test_219_13() + { + } + + [Fact] + public void Test_219_14() + { + } + + [Fact] + public void Test_219_15() + { + } + + [Fact] + public void Test_219_16() + { + } + + [Fact] + public void Test_219_17() + { + } + + [Fact] + public void Test_219_18() + { + } + + [Fact] + public void Test_219_19() + { + } + + [Fact] + public void Test_219_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_220 + { + #region PassingTests + [Fact] + public void Test_220_01() + { + } + + [Fact] + public void Test_220_02() + { + } + + [Fact] + public void Test_220_03() + { + } + + [Fact] + public void Test_220_04() + { + } + + [Fact] + public void Test_220_05() + { + } + + [Fact] + public void Test_220_06() + { + } + + [Fact] + public void Test_220_07() + { + } + + [Fact] + public void Test_220_08() + { + } + + [Fact] + public void Test_220_09() + { + } + + [Fact] + public void Test_220_10() + { + } + + [Fact] + public void Test_220_11() + { + } + + [Fact] + public void Test_220_12() + { + } + + [Fact] + public void Test_220_13() + { + } + + [Fact] + public void Test_220_14() + { + } + + [Fact] + public void Test_220_15() + { + } + + [Fact] + public void Test_220_16() + { + } + + [Fact] + public void Test_220_17() + { + } + + [Fact] + public void Test_220_18() + { + } + + [Fact] + public void Test_220_19() + { + } + + [Fact] + public void Test_220_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_221 + { + #region PassingTests + [Fact] + public void Test_221_01() + { + } + + [Fact] + public void Test_221_02() + { + } + + [Fact] + public void Test_221_03() + { + } + + [Fact] + public void Test_221_04() + { + } + + [Fact] + public void Test_221_05() + { + } + + [Fact] + public void Test_221_06() + { + } + + [Fact] + public void Test_221_07() + { + } + + [Fact] + public void Test_221_08() + { + } + + [Fact] + public void Test_221_09() + { + } + + [Fact] + public void Test_221_10() + { + } + + [Fact] + public void Test_221_11() + { + } + + [Fact] + public void Test_221_12() + { + } + + [Fact] + public void Test_221_13() + { + } + + [Fact] + public void Test_221_14() + { + } + + [Fact] + public void Test_221_15() + { + } + + [Fact] + public void Test_221_16() + { + } + + [Fact] + public void Test_221_17() + { + } + + [Fact] + public void Test_221_18() + { + } + + [Fact] + public void Test_221_19() + { + } + + [Fact] + public void Test_221_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_222 + { + #region PassingTests + [Fact] + public void Test_222_01() + { + } + + [Fact] + public void Test_222_02() + { + } + + [Fact] + public void Test_222_03() + { + } + + [Fact] + public void Test_222_04() + { + } + + [Fact] + public void Test_222_05() + { + } + + [Fact] + public void Test_222_06() + { + } + + [Fact] + public void Test_222_07() + { + } + + [Fact] + public void Test_222_08() + { + } + + [Fact] + public void Test_222_09() + { + } + + [Fact] + public void Test_222_10() + { + } + + [Fact] + public void Test_222_11() + { + } + + [Fact] + public void Test_222_12() + { + } + + [Fact] + public void Test_222_13() + { + } + + [Fact] + public void Test_222_14() + { + } + + [Fact] + public void Test_222_15() + { + } + + [Fact] + public void Test_222_16() + { + } + + [Fact] + public void Test_222_17() + { + } + + [Fact] + public void Test_222_18() + { + } + + [Fact] + public void Test_222_19() + { + } + + [Fact] + public void Test_222_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_223 + { + #region PassingTests + [Fact] + public void Test_223_01() + { + } + + [Fact] + public void Test_223_02() + { + } + + [Fact] + public void Test_223_03() + { + } + + [Fact] + public void Test_223_04() + { + } + + [Fact] + public void Test_223_05() + { + } + + [Fact] + public void Test_223_06() + { + } + + [Fact] + public void Test_223_07() + { + } + + [Fact] + public void Test_223_08() + { + } + + [Fact] + public void Test_223_09() + { + } + + [Fact] + public void Test_223_10() + { + } + + [Fact] + public void Test_223_11() + { + } + + [Fact] + public void Test_223_12() + { + } + + [Fact] + public void Test_223_13() + { + } + + [Fact] + public void Test_223_14() + { + } + + [Fact] + public void Test_223_15() + { + } + + [Fact] + public void Test_223_16() + { + } + + [Fact] + public void Test_223_17() + { + } + + [Fact] + public void Test_223_18() + { + } + + [Fact] + public void Test_223_19() + { + } + + [Fact] + public void Test_223_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_224 + { + #region PassingTests + [Fact] + public void Test_224_01() + { + } + + [Fact] + public void Test_224_02() + { + } + + [Fact] + public void Test_224_03() + { + } + + [Fact] + public void Test_224_04() + { + } + + [Fact] + public void Test_224_05() + { + } + + [Fact] + public void Test_224_06() + { + } + + [Fact] + public void Test_224_07() + { + } + + [Fact] + public void Test_224_08() + { + } + + [Fact] + public void Test_224_09() + { + } + + [Fact] + public void Test_224_10() + { + } + + [Fact] + public void Test_224_11() + { + } + + [Fact] + public void Test_224_12() + { + } + + [Fact] + public void Test_224_13() + { + } + + [Fact] + public void Test_224_14() + { + } + + [Fact] + public void Test_224_15() + { + } + + [Fact] + public void Test_224_16() + { + } + + [Fact] + public void Test_224_17() + { + } + + [Fact] + public void Test_224_18() + { + } + + [Fact] + public void Test_224_19() + { + } + + [Fact] + public void Test_224_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_225 + { + #region PassingTests + [Fact] + public void Test_225_01() + { + } + + [Fact] + public void Test_225_02() + { + } + + [Fact] + public void Test_225_03() + { + } + + [Fact] + public void Test_225_04() + { + } + + [Fact] + public void Test_225_05() + { + } + + [Fact] + public void Test_225_06() + { + } + + [Fact] + public void Test_225_07() + { + } + + [Fact] + public void Test_225_08() + { + } + + [Fact] + public void Test_225_09() + { + } + + [Fact] + public void Test_225_10() + { + } + + [Fact] + public void Test_225_11() + { + } + + [Fact] + public void Test_225_12() + { + } + + [Fact] + public void Test_225_13() + { + } + + [Fact] + public void Test_225_14() + { + } + + [Fact] + public void Test_225_15() + { + } + + [Fact] + public void Test_225_16() + { + } + + [Fact] + public void Test_225_17() + { + } + + [Fact] + public void Test_225_18() + { + } + + [Fact] + public void Test_225_19() + { + } + + [Fact] + public void Test_225_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_226 + { + #region PassingTests + [Fact] + public void Test_226_01() + { + } + + [Fact] + public void Test_226_02() + { + } + + [Fact] + public void Test_226_03() + { + } + + [Fact] + public void Test_226_04() + { + } + + [Fact] + public void Test_226_05() + { + } + + [Fact] + public void Test_226_06() + { + } + + [Fact] + public void Test_226_07() + { + } + + [Fact] + public void Test_226_08() + { + } + + [Fact] + public void Test_226_09() + { + } + + [Fact] + public void Test_226_10() + { + } + + [Fact] + public void Test_226_11() + { + } + + [Fact] + public void Test_226_12() + { + } + + [Fact] + public void Test_226_13() + { + } + + [Fact] + public void Test_226_14() + { + } + + [Fact] + public void Test_226_15() + { + } + + [Fact] + public void Test_226_16() + { + } + + [Fact] + public void Test_226_17() + { + } + + [Fact] + public void Test_226_18() + { + } + + [Fact] + public void Test_226_19() + { + } + + [Fact] + public void Test_226_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_227 + { + #region PassingTests + [Fact] + public void Test_227_01() + { + } + + [Fact] + public void Test_227_02() + { + } + + [Fact] + public void Test_227_03() + { + } + + [Fact] + public void Test_227_04() + { + } + + [Fact] + public void Test_227_05() + { + } + + [Fact] + public void Test_227_06() + { + } + + [Fact] + public void Test_227_07() + { + } + + [Fact] + public void Test_227_08() + { + } + + [Fact] + public void Test_227_09() + { + } + + [Fact] + public void Test_227_10() + { + } + + [Fact] + public void Test_227_11() + { + } + + [Fact] + public void Test_227_12() + { + } + + [Fact] + public void Test_227_13() + { + } + + [Fact] + public void Test_227_14() + { + } + + [Fact] + public void Test_227_15() + { + } + + [Fact] + public void Test_227_16() + { + } + + [Fact] + public void Test_227_17() + { + } + + [Fact] + public void Test_227_18() + { + } + + [Fact] + public void Test_227_19() + { + } + + [Fact] + public void Test_227_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_228 + { + #region PassingTests + [Fact] + public void Test_228_01() + { + } + + [Fact] + public void Test_228_02() + { + } + + [Fact] + public void Test_228_03() + { + } + + [Fact] + public void Test_228_04() + { + } + + [Fact] + public void Test_228_05() + { + } + + [Fact] + public void Test_228_06() + { + } + + [Fact] + public void Test_228_07() + { + } + + [Fact] + public void Test_228_08() + { + } + + [Fact] + public void Test_228_09() + { + } + + [Fact] + public void Test_228_10() + { + } + + [Fact] + public void Test_228_11() + { + } + + [Fact] + public void Test_228_12() + { + } + + [Fact] + public void Test_228_13() + { + } + + [Fact] + public void Test_228_14() + { + } + + [Fact] + public void Test_228_15() + { + } + + [Fact] + public void Test_228_16() + { + } + + [Fact] + public void Test_228_17() + { + } + + [Fact] + public void Test_228_18() + { + } + + [Fact] + public void Test_228_19() + { + } + + [Fact] + public void Test_228_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_229 + { + #region PassingTests + [Fact] + public void Test_229_01() + { + } + + [Fact] + public void Test_229_02() + { + } + + [Fact] + public void Test_229_03() + { + } + + [Fact] + public void Test_229_04() + { + } + + [Fact] + public void Test_229_05() + { + } + + [Fact] + public void Test_229_06() + { + } + + [Fact] + public void Test_229_07() + { + } + + [Fact] + public void Test_229_08() + { + } + + [Fact] + public void Test_229_09() + { + } + + [Fact] + public void Test_229_10() + { + } + + [Fact] + public void Test_229_11() + { + } + + [Fact] + public void Test_229_12() + { + } + + [Fact] + public void Test_229_13() + { + } + + [Fact] + public void Test_229_14() + { + } + + [Fact] + public void Test_229_15() + { + } + + [Fact] + public void Test_229_16() + { + } + + [Fact] + public void Test_229_17() + { + } + + [Fact] + public void Test_229_18() + { + } + + [Fact] + public void Test_229_19() + { + } + + [Fact] + public void Test_229_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_230 + { + #region PassingTests + [Fact] + public void Test_230_01() + { + } + + [Fact] + public void Test_230_02() + { + } + + [Fact] + public void Test_230_03() + { + } + + [Fact] + public void Test_230_04() + { + } + + [Fact] + public void Test_230_05() + { + } + + [Fact] + public void Test_230_06() + { + } + + [Fact] + public void Test_230_07() + { + } + + [Fact] + public void Test_230_08() + { + } + + [Fact] + public void Test_230_09() + { + } + + [Fact] + public void Test_230_10() + { + } + + [Fact] + public void Test_230_11() + { + } + + [Fact] + public void Test_230_12() + { + } + + [Fact] + public void Test_230_13() + { + } + + [Fact] + public void Test_230_14() + { + } + + [Fact] + public void Test_230_15() + { + } + + [Fact] + public void Test_230_16() + { + } + + [Fact] + public void Test_230_17() + { + } + + [Fact] + public void Test_230_18() + { + } + + [Fact] + public void Test_230_19() + { + } + + [Fact] + public void Test_230_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_231 + { + #region PassingTests + [Fact] + public void Test_231_01() + { + } + + [Fact] + public void Test_231_02() + { + } + + [Fact] + public void Test_231_03() + { + } + + [Fact] + public void Test_231_04() + { + } + + [Fact] + public void Test_231_05() + { + } + + [Fact] + public void Test_231_06() + { + } + + [Fact] + public void Test_231_07() + { + } + + [Fact] + public void Test_231_08() + { + } + + [Fact] + public void Test_231_09() + { + } + + [Fact] + public void Test_231_10() + { + } + + [Fact] + public void Test_231_11() + { + } + + [Fact] + public void Test_231_12() + { + } + + [Fact] + public void Test_231_13() + { + } + + [Fact] + public void Test_231_14() + { + } + + [Fact] + public void Test_231_15() + { + } + + [Fact] + public void Test_231_16() + { + } + + [Fact] + public void Test_231_17() + { + } + + [Fact] + public void Test_231_18() + { + } + + [Fact] + public void Test_231_19() + { + } + + [Fact] + public void Test_231_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_232 + { + #region PassingTests + [Fact] + public void Test_232_01() + { + } + + [Fact] + public void Test_232_02() + { + } + + [Fact] + public void Test_232_03() + { + } + + [Fact] + public void Test_232_04() + { + } + + [Fact] + public void Test_232_05() + { + } + + [Fact] + public void Test_232_06() + { + } + + [Fact] + public void Test_232_07() + { + } + + [Fact] + public void Test_232_08() + { + } + + [Fact] + public void Test_232_09() + { + } + + [Fact] + public void Test_232_10() + { + } + + [Fact] + public void Test_232_11() + { + } + + [Fact] + public void Test_232_12() + { + } + + [Fact] + public void Test_232_13() + { + } + + [Fact] + public void Test_232_14() + { + } + + [Fact] + public void Test_232_15() + { + } + + [Fact] + public void Test_232_16() + { + } + + [Fact] + public void Test_232_17() + { + } + + [Fact] + public void Test_232_18() + { + } + + [Fact] + public void Test_232_19() + { + } + + [Fact] + public void Test_232_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_233 + { + #region PassingTests + [Fact] + public void Test_233_01() + { + } + + [Fact] + public void Test_233_02() + { + } + + [Fact] + public void Test_233_03() + { + } + + [Fact] + public void Test_233_04() + { + } + + [Fact] + public void Test_233_05() + { + } + + [Fact] + public void Test_233_06() + { + } + + [Fact] + public void Test_233_07() + { + } + + [Fact] + public void Test_233_08() + { + } + + [Fact] + public void Test_233_09() + { + } + + [Fact] + public void Test_233_10() + { + } + + [Fact] + public void Test_233_11() + { + } + + [Fact] + public void Test_233_12() + { + } + + [Fact] + public void Test_233_13() + { + } + + [Fact] + public void Test_233_14() + { + } + + [Fact] + public void Test_233_15() + { + } + + [Fact] + public void Test_233_16() + { + } + + [Fact] + public void Test_233_17() + { + } + + [Fact] + public void Test_233_18() + { + } + + [Fact] + public void Test_233_19() + { + } + + [Fact] + public void Test_233_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_234 + { + #region PassingTests + [Fact] + public void Test_234_01() + { + } + + [Fact] + public void Test_234_02() + { + } + + [Fact] + public void Test_234_03() + { + } + + [Fact] + public void Test_234_04() + { + } + + [Fact] + public void Test_234_05() + { + } + + [Fact] + public void Test_234_06() + { + } + + [Fact] + public void Test_234_07() + { + } + + [Fact] + public void Test_234_08() + { + } + + [Fact] + public void Test_234_09() + { + } + + [Fact] + public void Test_234_10() + { + } + + [Fact] + public void Test_234_11() + { + } + + [Fact] + public void Test_234_12() + { + } + + [Fact] + public void Test_234_13() + { + } + + [Fact] + public void Test_234_14() + { + } + + [Fact] + public void Test_234_15() + { + } + + [Fact] + public void Test_234_16() + { + } + + [Fact] + public void Test_234_17() + { + } + + [Fact] + public void Test_234_18() + { + } + + [Fact] + public void Test_234_19() + { + } + + [Fact] + public void Test_234_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_235 + { + #region PassingTests + [Fact] + public void Test_235_01() + { + } + + [Fact] + public void Test_235_02() + { + } + + [Fact] + public void Test_235_03() + { + } + + [Fact] + public void Test_235_04() + { + } + + [Fact] + public void Test_235_05() + { + } + + [Fact] + public void Test_235_06() + { + } + + [Fact] + public void Test_235_07() + { + } + + [Fact] + public void Test_235_08() + { + } + + [Fact] + public void Test_235_09() + { + } + + [Fact] + public void Test_235_10() + { + } + + [Fact] + public void Test_235_11() + { + } + + [Fact] + public void Test_235_12() + { + } + + [Fact] + public void Test_235_13() + { + } + + [Fact] + public void Test_235_14() + { + } + + [Fact] + public void Test_235_15() + { + } + + [Fact] + public void Test_235_16() + { + } + + [Fact] + public void Test_235_17() + { + } + + [Fact] + public void Test_235_18() + { + } + + [Fact] + public void Test_235_19() + { + } + + [Fact] + public void Test_235_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_236 + { + #region PassingTests + [Fact] + public void Test_236_01() + { + } + + [Fact] + public void Test_236_02() + { + } + + [Fact] + public void Test_236_03() + { + } + + [Fact] + public void Test_236_04() + { + } + + [Fact] + public void Test_236_05() + { + } + + [Fact] + public void Test_236_06() + { + } + + [Fact] + public void Test_236_07() + { + } + + [Fact] + public void Test_236_08() + { + } + + [Fact] + public void Test_236_09() + { + } + + [Fact] + public void Test_236_10() + { + } + + [Fact] + public void Test_236_11() + { + } + + [Fact] + public void Test_236_12() + { + } + + [Fact] + public void Test_236_13() + { + } + + [Fact] + public void Test_236_14() + { + } + + [Fact] + public void Test_236_15() + { + } + + [Fact] + public void Test_236_16() + { + } + + [Fact] + public void Test_236_17() + { + } + + [Fact] + public void Test_236_18() + { + } + + [Fact] + public void Test_236_19() + { + } + + [Fact] + public void Test_236_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_237 + { + #region PassingTests + [Fact] + public void Test_237_01() + { + } + + [Fact] + public void Test_237_02() + { + } + + [Fact] + public void Test_237_03() + { + } + + [Fact] + public void Test_237_04() + { + } + + [Fact] + public void Test_237_05() + { + } + + [Fact] + public void Test_237_06() + { + } + + [Fact] + public void Test_237_07() + { + } + + [Fact] + public void Test_237_08() + { + } + + [Fact] + public void Test_237_09() + { + } + + [Fact] + public void Test_237_10() + { + } + + [Fact] + public void Test_237_11() + { + } + + [Fact] + public void Test_237_12() + { + } + + [Fact] + public void Test_237_13() + { + } + + [Fact] + public void Test_237_14() + { + } + + [Fact] + public void Test_237_15() + { + } + + [Fact] + public void Test_237_16() + { + } + + [Fact] + public void Test_237_17() + { + } + + [Fact] + public void Test_237_18() + { + } + + [Fact] + public void Test_237_19() + { + } + + [Fact] + public void Test_237_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_238 + { + #region PassingTests + [Fact] + public void Test_238_01() + { + } + + [Fact] + public void Test_238_02() + { + } + + [Fact] + public void Test_238_03() + { + } + + [Fact] + public void Test_238_04() + { + } + + [Fact] + public void Test_238_05() + { + } + + [Fact] + public void Test_238_06() + { + } + + [Fact] + public void Test_238_07() + { + } + + [Fact] + public void Test_238_08() + { + } + + [Fact] + public void Test_238_09() + { + } + + [Fact] + public void Test_238_10() + { + } + + [Fact] + public void Test_238_11() + { + } + + [Fact] + public void Test_238_12() + { + } + + [Fact] + public void Test_238_13() + { + } + + [Fact] + public void Test_238_14() + { + } + + [Fact] + public void Test_238_15() + { + } + + [Fact] + public void Test_238_16() + { + } + + [Fact] + public void Test_238_17() + { + } + + [Fact] + public void Test_238_18() + { + } + + [Fact] + public void Test_238_19() + { + } + + [Fact] + public void Test_238_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_239 + { + #region PassingTests + [Fact] + public void Test_239_01() + { + } + + [Fact] + public void Test_239_02() + { + } + + [Fact] + public void Test_239_03() + { + } + + [Fact] + public void Test_239_04() + { + } + + [Fact] + public void Test_239_05() + { + } + + [Fact] + public void Test_239_06() + { + } + + [Fact] + public void Test_239_07() + { + } + + [Fact] + public void Test_239_08() + { + } + + [Fact] + public void Test_239_09() + { + } + + [Fact] + public void Test_239_10() + { + } + + [Fact] + public void Test_239_11() + { + } + + [Fact] + public void Test_239_12() + { + } + + [Fact] + public void Test_239_13() + { + } + + [Fact] + public void Test_239_14() + { + } + + [Fact] + public void Test_239_15() + { + } + + [Fact] + public void Test_239_16() + { + } + + [Fact] + public void Test_239_17() + { + } + + [Fact] + public void Test_239_18() + { + } + + [Fact] + public void Test_239_19() + { + } + + [Fact] + public void Test_239_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_240 + { + #region PassingTests + [Fact] + public void Test_240_01() + { + } + + [Fact] + public void Test_240_02() + { + } + + [Fact] + public void Test_240_03() + { + } + + [Fact] + public void Test_240_04() + { + } + + [Fact] + public void Test_240_05() + { + } + + [Fact] + public void Test_240_06() + { + } + + [Fact] + public void Test_240_07() + { + } + + [Fact] + public void Test_240_08() + { + } + + [Fact] + public void Test_240_09() + { + } + + [Fact] + public void Test_240_10() + { + } + + [Fact] + public void Test_240_11() + { + } + + [Fact] + public void Test_240_12() + { + } + + [Fact] + public void Test_240_13() + { + } + + [Fact] + public void Test_240_14() + { + } + + [Fact] + public void Test_240_15() + { + } + + [Fact] + public void Test_240_16() + { + } + + [Fact] + public void Test_240_17() + { + } + + [Fact] + public void Test_240_18() + { + } + + [Fact] + public void Test_240_19() + { + } + + [Fact] + public void Test_240_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_241 + { + #region PassingTests + [Fact] + public void Test_241_01() + { + } + + [Fact] + public void Test_241_02() + { + } + + [Fact] + public void Test_241_03() + { + } + + [Fact] + public void Test_241_04() + { + } + + [Fact] + public void Test_241_05() + { + } + + [Fact] + public void Test_241_06() + { + } + + [Fact] + public void Test_241_07() + { + } + + [Fact] + public void Test_241_08() + { + } + + [Fact] + public void Test_241_09() + { + } + + [Fact] + public void Test_241_10() + { + } + + [Fact] + public void Test_241_11() + { + } + + [Fact] + public void Test_241_12() + { + } + + [Fact] + public void Test_241_13() + { + } + + [Fact] + public void Test_241_14() + { + } + + [Fact] + public void Test_241_15() + { + } + + [Fact] + public void Test_241_16() + { + } + + [Fact] + public void Test_241_17() + { + } + + [Fact] + public void Test_241_18() + { + } + + [Fact] + public void Test_241_19() + { + } + + [Fact] + public void Test_241_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_242 + { + #region PassingTests + [Fact] + public void Test_242_01() + { + } + + [Fact] + public void Test_242_02() + { + } + + [Fact] + public void Test_242_03() + { + } + + [Fact] + public void Test_242_04() + { + } + + [Fact] + public void Test_242_05() + { + } + + [Fact] + public void Test_242_06() + { + } + + [Fact] + public void Test_242_07() + { + } + + [Fact] + public void Test_242_08() + { + } + + [Fact] + public void Test_242_09() + { + } + + [Fact] + public void Test_242_10() + { + } + + [Fact] + public void Test_242_11() + { + } + + [Fact] + public void Test_242_12() + { + } + + [Fact] + public void Test_242_13() + { + } + + [Fact] + public void Test_242_14() + { + } + + [Fact] + public void Test_242_15() + { + } + + [Fact] + public void Test_242_16() + { + } + + [Fact] + public void Test_242_17() + { + } + + [Fact] + public void Test_242_18() + { + } + + [Fact] + public void Test_242_19() + { + } + + [Fact] + public void Test_242_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_243 + { + #region PassingTests + [Fact] + public void Test_243_01() + { + } + + [Fact] + public void Test_243_02() + { + } + + [Fact] + public void Test_243_03() + { + } + + [Fact] + public void Test_243_04() + { + } + + [Fact] + public void Test_243_05() + { + } + + [Fact] + public void Test_243_06() + { + } + + [Fact] + public void Test_243_07() + { + } + + [Fact] + public void Test_243_08() + { + } + + [Fact] + public void Test_243_09() + { + } + + [Fact] + public void Test_243_10() + { + } + + [Fact] + public void Test_243_11() + { + } + + [Fact] + public void Test_243_12() + { + } + + [Fact] + public void Test_243_13() + { + } + + [Fact] + public void Test_243_14() + { + } + + [Fact] + public void Test_243_15() + { + } + + [Fact] + public void Test_243_16() + { + } + + [Fact] + public void Test_243_17() + { + } + + [Fact] + public void Test_243_18() + { + } + + [Fact] + public void Test_243_19() + { + } + + [Fact] + public void Test_243_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_244 + { + #region PassingTests + [Fact] + public void Test_244_01() + { + } + + [Fact] + public void Test_244_02() + { + } + + [Fact] + public void Test_244_03() + { + } + + [Fact] + public void Test_244_04() + { + } + + [Fact] + public void Test_244_05() + { + } + + [Fact] + public void Test_244_06() + { + } + + [Fact] + public void Test_244_07() + { + } + + [Fact] + public void Test_244_08() + { + } + + [Fact] + public void Test_244_09() + { + } + + [Fact] + public void Test_244_10() + { + } + + [Fact] + public void Test_244_11() + { + } + + [Fact] + public void Test_244_12() + { + } + + [Fact] + public void Test_244_13() + { + } + + [Fact] + public void Test_244_14() + { + } + + [Fact] + public void Test_244_15() + { + } + + [Fact] + public void Test_244_16() + { + } + + [Fact] + public void Test_244_17() + { + } + + [Fact] + public void Test_244_18() + { + } + + [Fact] + public void Test_244_19() + { + } + + [Fact] + public void Test_244_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_245 + { + #region PassingTests + [Fact] + public void Test_245_01() + { + } + + [Fact] + public void Test_245_02() + { + } + + [Fact] + public void Test_245_03() + { + } + + [Fact] + public void Test_245_04() + { + } + + [Fact] + public void Test_245_05() + { + } + + [Fact] + public void Test_245_06() + { + } + + [Fact] + public void Test_245_07() + { + } + + [Fact] + public void Test_245_08() + { + } + + [Fact] + public void Test_245_09() + { + } + + [Fact] + public void Test_245_10() + { + } + + [Fact] + public void Test_245_11() + { + } + + [Fact] + public void Test_245_12() + { + } + + [Fact] + public void Test_245_13() + { + } + + [Fact] + public void Test_245_14() + { + } + + [Fact] + public void Test_245_15() + { + } + + [Fact] + public void Test_245_16() + { + } + + [Fact] + public void Test_245_17() + { + } + + [Fact] + public void Test_245_18() + { + } + + [Fact] + public void Test_245_19() + { + } + + [Fact] + public void Test_245_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_246 + { + #region PassingTests + [Fact] + public void Test_246_01() + { + } + + [Fact] + public void Test_246_02() + { + } + + [Fact] + public void Test_246_03() + { + } + + [Fact] + public void Test_246_04() + { + } + + [Fact] + public void Test_246_05() + { + } + + [Fact] + public void Test_246_06() + { + } + + [Fact] + public void Test_246_07() + { + } + + [Fact] + public void Test_246_08() + { + } + + [Fact] + public void Test_246_09() + { + } + + [Fact] + public void Test_246_10() + { + } + + [Fact] + public void Test_246_11() + { + } + + [Fact] + public void Test_246_12() + { + } + + [Fact] + public void Test_246_13() + { + } + + [Fact] + public void Test_246_14() + { + } + + [Fact] + public void Test_246_15() + { + } + + [Fact] + public void Test_246_16() + { + } + + [Fact] + public void Test_246_17() + { + } + + [Fact] + public void Test_246_18() + { + } + + [Fact] + public void Test_246_19() + { + } + + [Fact] + public void Test_246_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_247 + { + #region PassingTests + [Fact] + public void Test_247_01() + { + } + + [Fact] + public void Test_247_02() + { + } + + [Fact] + public void Test_247_03() + { + } + + [Fact] + public void Test_247_04() + { + } + + [Fact] + public void Test_247_05() + { + } + + [Fact] + public void Test_247_06() + { + } + + [Fact] + public void Test_247_07() + { + } + + [Fact] + public void Test_247_08() + { + } + + [Fact] + public void Test_247_09() + { + } + + [Fact] + public void Test_247_10() + { + } + + [Fact] + public void Test_247_11() + { + } + + [Fact] + public void Test_247_12() + { + } + + [Fact] + public void Test_247_13() + { + } + + [Fact] + public void Test_247_14() + { + } + + [Fact] + public void Test_247_15() + { + } + + [Fact] + public void Test_247_16() + { + } + + [Fact] + public void Test_247_17() + { + } + + [Fact] + public void Test_247_18() + { + } + + [Fact] + public void Test_247_19() + { + } + + [Fact] + public void Test_247_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_248 + { + #region PassingTests + [Fact] + public void Test_248_01() + { + } + + [Fact] + public void Test_248_02() + { + } + + [Fact] + public void Test_248_03() + { + } + + [Fact] + public void Test_248_04() + { + } + + [Fact] + public void Test_248_05() + { + } + + [Fact] + public void Test_248_06() + { + } + + [Fact] + public void Test_248_07() + { + } + + [Fact] + public void Test_248_08() + { + } + + [Fact] + public void Test_248_09() + { + } + + [Fact] + public void Test_248_10() + { + } + + [Fact] + public void Test_248_11() + { + } + + [Fact] + public void Test_248_12() + { + } + + [Fact] + public void Test_248_13() + { + } + + [Fact] + public void Test_248_14() + { + } + + [Fact] + public void Test_248_15() + { + } + + [Fact] + public void Test_248_16() + { + } + + [Fact] + public void Test_248_17() + { + } + + [Fact] + public void Test_248_18() + { + } + + [Fact] + public void Test_248_19() + { + } + + [Fact] + public void Test_248_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_249 + { + #region PassingTests + [Fact] + public void Test_249_01() + { + } + + [Fact] + public void Test_249_02() + { + } + + [Fact] + public void Test_249_03() + { + } + + [Fact] + public void Test_249_04() + { + } + + [Fact] + public void Test_249_05() + { + } + + [Fact] + public void Test_249_06() + { + } + + [Fact] + public void Test_249_07() + { + } + + [Fact] + public void Test_249_08() + { + } + + [Fact] + public void Test_249_09() + { + } + + [Fact] + public void Test_249_10() + { + } + + [Fact] + public void Test_249_11() + { + } + + [Fact] + public void Test_249_12() + { + } + + [Fact] + public void Test_249_13() + { + } + + [Fact] + public void Test_249_14() + { + } + + [Fact] + public void Test_249_15() + { + } + + [Fact] + public void Test_249_16() + { + } + + [Fact] + public void Test_249_17() + { + } + + [Fact] + public void Test_249_18() + { + } + + [Fact] + public void Test_249_19() + { + } + + [Fact] + public void Test_249_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_250 + { + #region PassingTests + [Fact] + public void Test_250_01() + { + } + + [Fact] + public void Test_250_02() + { + } + + [Fact] + public void Test_250_03() + { + } + + [Fact] + public void Test_250_04() + { + } + + [Fact] + public void Test_250_05() + { + } + + [Fact] + public void Test_250_06() + { + } + + [Fact] + public void Test_250_07() + { + } + + [Fact] + public void Test_250_08() + { + } + + [Fact] + public void Test_250_09() + { + } + + [Fact] + public void Test_250_10() + { + } + + [Fact] + public void Test_250_11() + { + } + + [Fact] + public void Test_250_12() + { + } + + [Fact] + public void Test_250_13() + { + } + + [Fact] + public void Test_250_14() + { + } + + [Fact] + public void Test_250_15() + { + } + + [Fact] + public void Test_250_16() + { + } + + [Fact] + public void Test_250_17() + { + } + + [Fact] + public void Test_250_18() + { + } + + [Fact] + public void Test_250_19() + { + } + + [Fact] + public void Test_250_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_251 + { + #region PassingTests + [Fact] + public void Test_251_01() + { + } + + [Fact] + public void Test_251_02() + { + } + + [Fact] + public void Test_251_03() + { + } + + [Fact] + public void Test_251_04() + { + } + + [Fact] + public void Test_251_05() + { + } + + [Fact] + public void Test_251_06() + { + } + + [Fact] + public void Test_251_07() + { + } + + [Fact] + public void Test_251_08() + { + } + + [Fact] + public void Test_251_09() + { + } + + [Fact] + public void Test_251_10() + { + } + + [Fact] + public void Test_251_11() + { + } + + [Fact] + public void Test_251_12() + { + } + + [Fact] + public void Test_251_13() + { + } + + [Fact] + public void Test_251_14() + { + } + + [Fact] + public void Test_251_15() + { + } + + [Fact] + public void Test_251_16() + { + } + + [Fact] + public void Test_251_17() + { + } + + [Fact] + public void Test_251_18() + { + } + + [Fact] + public void Test_251_19() + { + } + + [Fact] + public void Test_251_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_252 + { + #region PassingTests + [Fact] + public void Test_252_01() + { + } + + [Fact] + public void Test_252_02() + { + } + + [Fact] + public void Test_252_03() + { + } + + [Fact] + public void Test_252_04() + { + } + + [Fact] + public void Test_252_05() + { + } + + [Fact] + public void Test_252_06() + { + } + + [Fact] + public void Test_252_07() + { + } + + [Fact] + public void Test_252_08() + { + } + + [Fact] + public void Test_252_09() + { + } + + [Fact] + public void Test_252_10() + { + } + + [Fact] + public void Test_252_11() + { + } + + [Fact] + public void Test_252_12() + { + } + + [Fact] + public void Test_252_13() + { + } + + [Fact] + public void Test_252_14() + { + } + + [Fact] + public void Test_252_15() + { + } + + [Fact] + public void Test_252_16() + { + } + + [Fact] + public void Test_252_17() + { + } + + [Fact] + public void Test_252_18() + { + } + + [Fact] + public void Test_252_19() + { + } + + [Fact] + public void Test_252_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_253 + { + #region PassingTests + [Fact] + public void Test_253_01() + { + } + + [Fact] + public void Test_253_02() + { + } + + [Fact] + public void Test_253_03() + { + } + + [Fact] + public void Test_253_04() + { + } + + [Fact] + public void Test_253_05() + { + } + + [Fact] + public void Test_253_06() + { + } + + [Fact] + public void Test_253_07() + { + } + + [Fact] + public void Test_253_08() + { + } + + [Fact] + public void Test_253_09() + { + } + + [Fact] + public void Test_253_10() + { + } + + [Fact] + public void Test_253_11() + { + } + + [Fact] + public void Test_253_12() + { + } + + [Fact] + public void Test_253_13() + { + } + + [Fact] + public void Test_253_14() + { + } + + [Fact] + public void Test_253_15() + { + } + + [Fact] + public void Test_253_16() + { + } + + [Fact] + public void Test_253_17() + { + } + + [Fact] + public void Test_253_18() + { + } + + [Fact] + public void Test_253_19() + { + } + + [Fact] + public void Test_253_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_254 + { + #region PassingTests + [Fact] + public void Test_254_01() + { + } + + [Fact] + public void Test_254_02() + { + } + + [Fact] + public void Test_254_03() + { + } + + [Fact] + public void Test_254_04() + { + } + + [Fact] + public void Test_254_05() + { + } + + [Fact] + public void Test_254_06() + { + } + + [Fact] + public void Test_254_07() + { + } + + [Fact] + public void Test_254_08() + { + } + + [Fact] + public void Test_254_09() + { + } + + [Fact] + public void Test_254_10() + { + } + + [Fact] + public void Test_254_11() + { + } + + [Fact] + public void Test_254_12() + { + } + + [Fact] + public void Test_254_13() + { + } + + [Fact] + public void Test_254_14() + { + } + + [Fact] + public void Test_254_15() + { + } + + [Fact] + public void Test_254_16() + { + } + + [Fact] + public void Test_254_17() + { + } + + [Fact] + public void Test_254_18() + { + } + + [Fact] + public void Test_254_19() + { + } + + [Fact] + public void Test_254_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_255 + { + #region PassingTests + [Fact] + public void Test_255_01() + { + } + + [Fact] + public void Test_255_02() + { + } + + [Fact] + public void Test_255_03() + { + } + + [Fact] + public void Test_255_04() + { + } + + [Fact] + public void Test_255_05() + { + } + + [Fact] + public void Test_255_06() + { + } + + [Fact] + public void Test_255_07() + { + } + + [Fact] + public void Test_255_08() + { + } + + [Fact] + public void Test_255_09() + { + } + + [Fact] + public void Test_255_10() + { + } + + [Fact] + public void Test_255_11() + { + } + + [Fact] + public void Test_255_12() + { + } + + [Fact] + public void Test_255_13() + { + } + + [Fact] + public void Test_255_14() + { + } + + [Fact] + public void Test_255_15() + { + } + + [Fact] + public void Test_255_16() + { + } + + [Fact] + public void Test_255_17() + { + } + + [Fact] + public void Test_255_18() + { + } + + [Fact] + public void Test_255_19() + { + } + + [Fact] + public void Test_255_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_256 + { + #region PassingTests + [Fact] + public void Test_256_01() + { + } + + [Fact] + public void Test_256_02() + { + } + + [Fact] + public void Test_256_03() + { + } + + [Fact] + public void Test_256_04() + { + } + + [Fact] + public void Test_256_05() + { + } + + [Fact] + public void Test_256_06() + { + } + + [Fact] + public void Test_256_07() + { + } + + [Fact] + public void Test_256_08() + { + } + + [Fact] + public void Test_256_09() + { + } + + [Fact] + public void Test_256_10() + { + } + + [Fact] + public void Test_256_11() + { + } + + [Fact] + public void Test_256_12() + { + } + + [Fact] + public void Test_256_13() + { + } + + [Fact] + public void Test_256_14() + { + } + + [Fact] + public void Test_256_15() + { + } + + [Fact] + public void Test_256_16() + { + } + + [Fact] + public void Test_256_17() + { + } + + [Fact] + public void Test_256_18() + { + } + + [Fact] + public void Test_256_19() + { + } + + [Fact] + public void Test_256_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_257 + { + #region PassingTests + [Fact] + public void Test_257_01() + { + } + + [Fact] + public void Test_257_02() + { + } + + [Fact] + public void Test_257_03() + { + } + + [Fact] + public void Test_257_04() + { + } + + [Fact] + public void Test_257_05() + { + } + + [Fact] + public void Test_257_06() + { + } + + [Fact] + public void Test_257_07() + { + } + + [Fact] + public void Test_257_08() + { + } + + [Fact] + public void Test_257_09() + { + } + + [Fact] + public void Test_257_10() + { + } + + [Fact] + public void Test_257_11() + { + } + + [Fact] + public void Test_257_12() + { + } + + [Fact] + public void Test_257_13() + { + } + + [Fact] + public void Test_257_14() + { + } + + [Fact] + public void Test_257_15() + { + } + + [Fact] + public void Test_257_16() + { + } + + [Fact] + public void Test_257_17() + { + } + + [Fact] + public void Test_257_18() + { + } + + [Fact] + public void Test_257_19() + { + } + + [Fact] + public void Test_257_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_258 + { + #region PassingTests + [Fact] + public void Test_258_01() + { + } + + [Fact] + public void Test_258_02() + { + } + + [Fact] + public void Test_258_03() + { + } + + [Fact] + public void Test_258_04() + { + } + + [Fact] + public void Test_258_05() + { + } + + [Fact] + public void Test_258_06() + { + } + + [Fact] + public void Test_258_07() + { + } + + [Fact] + public void Test_258_08() + { + } + + [Fact] + public void Test_258_09() + { + } + + [Fact] + public void Test_258_10() + { + } + + [Fact] + public void Test_258_11() + { + } + + [Fact] + public void Test_258_12() + { + } + + [Fact] + public void Test_258_13() + { + } + + [Fact] + public void Test_258_14() + { + } + + [Fact] + public void Test_258_15() + { + } + + [Fact] + public void Test_258_16() + { + } + + [Fact] + public void Test_258_17() + { + } + + [Fact] + public void Test_258_18() + { + } + + [Fact] + public void Test_258_19() + { + } + + [Fact] + public void Test_258_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_259 + { + #region PassingTests + [Fact] + public void Test_259_01() + { + } + + [Fact] + public void Test_259_02() + { + } + + [Fact] + public void Test_259_03() + { + } + + [Fact] + public void Test_259_04() + { + } + + [Fact] + public void Test_259_05() + { + } + + [Fact] + public void Test_259_06() + { + } + + [Fact] + public void Test_259_07() + { + } + + [Fact] + public void Test_259_08() + { + } + + [Fact] + public void Test_259_09() + { + } + + [Fact] + public void Test_259_10() + { + } + + [Fact] + public void Test_259_11() + { + } + + [Fact] + public void Test_259_12() + { + } + + [Fact] + public void Test_259_13() + { + } + + [Fact] + public void Test_259_14() + { + } + + [Fact] + public void Test_259_15() + { + } + + [Fact] + public void Test_259_16() + { + } + + [Fact] + public void Test_259_17() + { + } + + [Fact] + public void Test_259_18() + { + } + + [Fact] + public void Test_259_19() + { + } + + [Fact] + public void Test_259_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_260 + { + #region PassingTests + [Fact] + public void Test_260_01() + { + } + + [Fact] + public void Test_260_02() + { + } + + [Fact] + public void Test_260_03() + { + } + + [Fact] + public void Test_260_04() + { + } + + [Fact] + public void Test_260_05() + { + } + + [Fact] + public void Test_260_06() + { + } + + [Fact] + public void Test_260_07() + { + } + + [Fact] + public void Test_260_08() + { + } + + [Fact] + public void Test_260_09() + { + } + + [Fact] + public void Test_260_10() + { + } + + [Fact] + public void Test_260_11() + { + } + + [Fact] + public void Test_260_12() + { + } + + [Fact] + public void Test_260_13() + { + } + + [Fact] + public void Test_260_14() + { + } + + [Fact] + public void Test_260_15() + { + } + + [Fact] + public void Test_260_16() + { + } + + [Fact] + public void Test_260_17() + { + } + + [Fact] + public void Test_260_18() + { + } + + [Fact] + public void Test_260_19() + { + } + + [Fact] + public void Test_260_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_261 + { + #region PassingTests + [Fact] + public void Test_261_01() + { + } + + [Fact] + public void Test_261_02() + { + } + + [Fact] + public void Test_261_03() + { + } + + [Fact] + public void Test_261_04() + { + } + + [Fact] + public void Test_261_05() + { + } + + [Fact] + public void Test_261_06() + { + } + + [Fact] + public void Test_261_07() + { + } + + [Fact] + public void Test_261_08() + { + } + + [Fact] + public void Test_261_09() + { + } + + [Fact] + public void Test_261_10() + { + } + + [Fact] + public void Test_261_11() + { + } + + [Fact] + public void Test_261_12() + { + } + + [Fact] + public void Test_261_13() + { + } + + [Fact] + public void Test_261_14() + { + } + + [Fact] + public void Test_261_15() + { + } + + [Fact] + public void Test_261_16() + { + } + + [Fact] + public void Test_261_17() + { + } + + [Fact] + public void Test_261_18() + { + } + + [Fact] + public void Test_261_19() + { + } + + [Fact] + public void Test_261_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_262 + { + #region PassingTests + [Fact] + public void Test_262_01() + { + } + + [Fact] + public void Test_262_02() + { + } + + [Fact] + public void Test_262_03() + { + } + + [Fact] + public void Test_262_04() + { + } + + [Fact] + public void Test_262_05() + { + } + + [Fact] + public void Test_262_06() + { + } + + [Fact] + public void Test_262_07() + { + } + + [Fact] + public void Test_262_08() + { + } + + [Fact] + public void Test_262_09() + { + } + + [Fact] + public void Test_262_10() + { + } + + [Fact] + public void Test_262_11() + { + } + + [Fact] + public void Test_262_12() + { + } + + [Fact] + public void Test_262_13() + { + } + + [Fact] + public void Test_262_14() + { + } + + [Fact] + public void Test_262_15() + { + } + + [Fact] + public void Test_262_16() + { + } + + [Fact] + public void Test_262_17() + { + } + + [Fact] + public void Test_262_18() + { + } + + [Fact] + public void Test_262_19() + { + } + + [Fact] + public void Test_262_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_263 + { + #region PassingTests + [Fact] + public void Test_263_01() + { + } + + [Fact] + public void Test_263_02() + { + } + + [Fact] + public void Test_263_03() + { + } + + [Fact] + public void Test_263_04() + { + } + + [Fact] + public void Test_263_05() + { + } + + [Fact] + public void Test_263_06() + { + } + + [Fact] + public void Test_263_07() + { + } + + [Fact] + public void Test_263_08() + { + } + + [Fact] + public void Test_263_09() + { + } + + [Fact] + public void Test_263_10() + { + } + + [Fact] + public void Test_263_11() + { + } + + [Fact] + public void Test_263_12() + { + } + + [Fact] + public void Test_263_13() + { + } + + [Fact] + public void Test_263_14() + { + } + + [Fact] + public void Test_263_15() + { + } + + [Fact] + public void Test_263_16() + { + } + + [Fact] + public void Test_263_17() + { + } + + [Fact] + public void Test_263_18() + { + } + + [Fact] + public void Test_263_19() + { + } + + [Fact] + public void Test_263_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_264 + { + #region PassingTests + [Fact] + public void Test_264_01() + { + } + + [Fact] + public void Test_264_02() + { + } + + [Fact] + public void Test_264_03() + { + } + + [Fact] + public void Test_264_04() + { + } + + [Fact] + public void Test_264_05() + { + } + + [Fact] + public void Test_264_06() + { + } + + [Fact] + public void Test_264_07() + { + } + + [Fact] + public void Test_264_08() + { + } + + [Fact] + public void Test_264_09() + { + } + + [Fact] + public void Test_264_10() + { + } + + [Fact] + public void Test_264_11() + { + } + + [Fact] + public void Test_264_12() + { + } + + [Fact] + public void Test_264_13() + { + } + + [Fact] + public void Test_264_14() + { + } + + [Fact] + public void Test_264_15() + { + } + + [Fact] + public void Test_264_16() + { + } + + [Fact] + public void Test_264_17() + { + } + + [Fact] + public void Test_264_18() + { + } + + [Fact] + public void Test_264_19() + { + } + + [Fact] + public void Test_264_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_265 + { + #region PassingTests + [Fact] + public void Test_265_01() + { + } + + [Fact] + public void Test_265_02() + { + } + + [Fact] + public void Test_265_03() + { + } + + [Fact] + public void Test_265_04() + { + } + + [Fact] + public void Test_265_05() + { + } + + [Fact] + public void Test_265_06() + { + } + + [Fact] + public void Test_265_07() + { + } + + [Fact] + public void Test_265_08() + { + } + + [Fact] + public void Test_265_09() + { + } + + [Fact] + public void Test_265_10() + { + } + + [Fact] + public void Test_265_11() + { + } + + [Fact] + public void Test_265_12() + { + } + + [Fact] + public void Test_265_13() + { + } + + [Fact] + public void Test_265_14() + { + } + + [Fact] + public void Test_265_15() + { + } + + [Fact] + public void Test_265_16() + { + } + + [Fact] + public void Test_265_17() + { + } + + [Fact] + public void Test_265_18() + { + } + + [Fact] + public void Test_265_19() + { + } + + [Fact] + public void Test_265_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_266 + { + #region PassingTests + [Fact] + public void Test_266_01() + { + } + + [Fact] + public void Test_266_02() + { + } + + [Fact] + public void Test_266_03() + { + } + + [Fact] + public void Test_266_04() + { + } + + [Fact] + public void Test_266_05() + { + } + + [Fact] + public void Test_266_06() + { + } + + [Fact] + public void Test_266_07() + { + } + + [Fact] + public void Test_266_08() + { + } + + [Fact] + public void Test_266_09() + { + } + + [Fact] + public void Test_266_10() + { + } + + [Fact] + public void Test_266_11() + { + } + + [Fact] + public void Test_266_12() + { + } + + [Fact] + public void Test_266_13() + { + } + + [Fact] + public void Test_266_14() + { + } + + [Fact] + public void Test_266_15() + { + } + + [Fact] + public void Test_266_16() + { + } + + [Fact] + public void Test_266_17() + { + } + + [Fact] + public void Test_266_18() + { + } + + [Fact] + public void Test_266_19() + { + } + + [Fact] + public void Test_266_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_267 + { + #region PassingTests + [Fact] + public void Test_267_01() + { + } + + [Fact] + public void Test_267_02() + { + } + + [Fact] + public void Test_267_03() + { + } + + [Fact] + public void Test_267_04() + { + } + + [Fact] + public void Test_267_05() + { + } + + [Fact] + public void Test_267_06() + { + } + + [Fact] + public void Test_267_07() + { + } + + [Fact] + public void Test_267_08() + { + } + + [Fact] + public void Test_267_09() + { + } + + [Fact] + public void Test_267_10() + { + } + + [Fact] + public void Test_267_11() + { + } + + [Fact] + public void Test_267_12() + { + } + + [Fact] + public void Test_267_13() + { + } + + [Fact] + public void Test_267_14() + { + } + + [Fact] + public void Test_267_15() + { + } + + [Fact] + public void Test_267_16() + { + } + + [Fact] + public void Test_267_17() + { + } + + [Fact] + public void Test_267_18() + { + } + + [Fact] + public void Test_267_19() + { + } + + [Fact] + public void Test_267_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_268 + { + #region PassingTests + [Fact] + public void Test_268_01() + { + } + + [Fact] + public void Test_268_02() + { + } + + [Fact] + public void Test_268_03() + { + } + + [Fact] + public void Test_268_04() + { + } + + [Fact] + public void Test_268_05() + { + } + + [Fact] + public void Test_268_06() + { + } + + [Fact] + public void Test_268_07() + { + } + + [Fact] + public void Test_268_08() + { + } + + [Fact] + public void Test_268_09() + { + } + + [Fact] + public void Test_268_10() + { + } + + [Fact] + public void Test_268_11() + { + } + + [Fact] + public void Test_268_12() + { + } + + [Fact] + public void Test_268_13() + { + } + + [Fact] + public void Test_268_14() + { + } + + [Fact] + public void Test_268_15() + { + } + + [Fact] + public void Test_268_16() + { + } + + [Fact] + public void Test_268_17() + { + } + + [Fact] + public void Test_268_18() + { + } + + [Fact] + public void Test_268_19() + { + } + + [Fact] + public void Test_268_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_269 + { + #region PassingTests + [Fact] + public void Test_269_01() + { + } + + [Fact] + public void Test_269_02() + { + } + + [Fact] + public void Test_269_03() + { + } + + [Fact] + public void Test_269_04() + { + } + + [Fact] + public void Test_269_05() + { + } + + [Fact] + public void Test_269_06() + { + } + + [Fact] + public void Test_269_07() + { + } + + [Fact] + public void Test_269_08() + { + } + + [Fact] + public void Test_269_09() + { + } + + [Fact] + public void Test_269_10() + { + } + + [Fact] + public void Test_269_11() + { + } + + [Fact] + public void Test_269_12() + { + } + + [Fact] + public void Test_269_13() + { + } + + [Fact] + public void Test_269_14() + { + } + + [Fact] + public void Test_269_15() + { + } + + [Fact] + public void Test_269_16() + { + } + + [Fact] + public void Test_269_17() + { + } + + [Fact] + public void Test_269_18() + { + } + + [Fact] + public void Test_269_19() + { + } + + [Fact] + public void Test_269_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_270 + { + #region PassingTests + [Fact] + public void Test_270_01() + { + } + + [Fact] + public void Test_270_02() + { + } + + [Fact] + public void Test_270_03() + { + } + + [Fact] + public void Test_270_04() + { + } + + [Fact] + public void Test_270_05() + { + } + + [Fact] + public void Test_270_06() + { + } + + [Fact] + public void Test_270_07() + { + } + + [Fact] + public void Test_270_08() + { + } + + [Fact] + public void Test_270_09() + { + } + + [Fact] + public void Test_270_10() + { + } + + [Fact] + public void Test_270_11() + { + } + + [Fact] + public void Test_270_12() + { + } + + [Fact] + public void Test_270_13() + { + } + + [Fact] + public void Test_270_14() + { + } + + [Fact] + public void Test_270_15() + { + } + + [Fact] + public void Test_270_16() + { + } + + [Fact] + public void Test_270_17() + { + } + + [Fact] + public void Test_270_18() + { + } + + [Fact] + public void Test_270_19() + { + } + + [Fact] + public void Test_270_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_271 + { + #region PassingTests + [Fact] + public void Test_271_01() + { + } + + [Fact] + public void Test_271_02() + { + } + + [Fact] + public void Test_271_03() + { + } + + [Fact] + public void Test_271_04() + { + } + + [Fact] + public void Test_271_05() + { + } + + [Fact] + public void Test_271_06() + { + } + + [Fact] + public void Test_271_07() + { + } + + [Fact] + public void Test_271_08() + { + } + + [Fact] + public void Test_271_09() + { + } + + [Fact] + public void Test_271_10() + { + } + + [Fact] + public void Test_271_11() + { + } + + [Fact] + public void Test_271_12() + { + } + + [Fact] + public void Test_271_13() + { + } + + [Fact] + public void Test_271_14() + { + } + + [Fact] + public void Test_271_15() + { + } + + [Fact] + public void Test_271_16() + { + } + + [Fact] + public void Test_271_17() + { + } + + [Fact] + public void Test_271_18() + { + } + + [Fact] + public void Test_271_19() + { + } + + [Fact] + public void Test_271_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_272 + { + #region PassingTests + [Fact] + public void Test_272_01() + { + } + + [Fact] + public void Test_272_02() + { + } + + [Fact] + public void Test_272_03() + { + } + + [Fact] + public void Test_272_04() + { + } + + [Fact] + public void Test_272_05() + { + } + + [Fact] + public void Test_272_06() + { + } + + [Fact] + public void Test_272_07() + { + } + + [Fact] + public void Test_272_08() + { + } + + [Fact] + public void Test_272_09() + { + } + + [Fact] + public void Test_272_10() + { + } + + [Fact] + public void Test_272_11() + { + } + + [Fact] + public void Test_272_12() + { + } + + [Fact] + public void Test_272_13() + { + } + + [Fact] + public void Test_272_14() + { + } + + [Fact] + public void Test_272_15() + { + } + + [Fact] + public void Test_272_16() + { + } + + [Fact] + public void Test_272_17() + { + } + + [Fact] + public void Test_272_18() + { + } + + [Fact] + public void Test_272_19() + { + } + + [Fact] + public void Test_272_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_273 + { + #region PassingTests + [Fact] + public void Test_273_01() + { + } + + [Fact] + public void Test_273_02() + { + } + + [Fact] + public void Test_273_03() + { + } + + [Fact] + public void Test_273_04() + { + } + + [Fact] + public void Test_273_05() + { + } + + [Fact] + public void Test_273_06() + { + } + + [Fact] + public void Test_273_07() + { + } + + [Fact] + public void Test_273_08() + { + } + + [Fact] + public void Test_273_09() + { + } + + [Fact] + public void Test_273_10() + { + } + + [Fact] + public void Test_273_11() + { + } + + [Fact] + public void Test_273_12() + { + } + + [Fact] + public void Test_273_13() + { + } + + [Fact] + public void Test_273_14() + { + } + + [Fact] + public void Test_273_15() + { + } + + [Fact] + public void Test_273_16() + { + } + + [Fact] + public void Test_273_17() + { + } + + [Fact] + public void Test_273_18() + { + } + + [Fact] + public void Test_273_19() + { + } + + [Fact] + public void Test_273_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_274 + { + #region PassingTests + [Fact] + public void Test_274_01() + { + } + + [Fact] + public void Test_274_02() + { + } + + [Fact] + public void Test_274_03() + { + } + + [Fact] + public void Test_274_04() + { + } + + [Fact] + public void Test_274_05() + { + } + + [Fact] + public void Test_274_06() + { + } + + [Fact] + public void Test_274_07() + { + } + + [Fact] + public void Test_274_08() + { + } + + [Fact] + public void Test_274_09() + { + } + + [Fact] + public void Test_274_10() + { + } + + [Fact] + public void Test_274_11() + { + } + + [Fact] + public void Test_274_12() + { + } + + [Fact] + public void Test_274_13() + { + } + + [Fact] + public void Test_274_14() + { + } + + [Fact] + public void Test_274_15() + { + } + + [Fact] + public void Test_274_16() + { + } + + [Fact] + public void Test_274_17() + { + } + + [Fact] + public void Test_274_18() + { + } + + [Fact] + public void Test_274_19() + { + } + + [Fact] + public void Test_274_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_275 + { + #region PassingTests + [Fact] + public void Test_275_01() + { + } + + [Fact] + public void Test_275_02() + { + } + + [Fact] + public void Test_275_03() + { + } + + [Fact] + public void Test_275_04() + { + } + + [Fact] + public void Test_275_05() + { + } + + [Fact] + public void Test_275_06() + { + } + + [Fact] + public void Test_275_07() + { + } + + [Fact] + public void Test_275_08() + { + } + + [Fact] + public void Test_275_09() + { + } + + [Fact] + public void Test_275_10() + { + } + + [Fact] + public void Test_275_11() + { + } + + [Fact] + public void Test_275_12() + { + } + + [Fact] + public void Test_275_13() + { + } + + [Fact] + public void Test_275_14() + { + } + + [Fact] + public void Test_275_15() + { + } + + [Fact] + public void Test_275_16() + { + } + + [Fact] + public void Test_275_17() + { + } + + [Fact] + public void Test_275_18() + { + } + + [Fact] + public void Test_275_19() + { + } + + [Fact] + public void Test_275_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_276 + { + #region PassingTests + [Fact] + public void Test_276_01() + { + } + + [Fact] + public void Test_276_02() + { + } + + [Fact] + public void Test_276_03() + { + } + + [Fact] + public void Test_276_04() + { + } + + [Fact] + public void Test_276_05() + { + } + + [Fact] + public void Test_276_06() + { + } + + [Fact] + public void Test_276_07() + { + } + + [Fact] + public void Test_276_08() + { + } + + [Fact] + public void Test_276_09() + { + } + + [Fact] + public void Test_276_10() + { + } + + [Fact] + public void Test_276_11() + { + } + + [Fact] + public void Test_276_12() + { + } + + [Fact] + public void Test_276_13() + { + } + + [Fact] + public void Test_276_14() + { + } + + [Fact] + public void Test_276_15() + { + } + + [Fact] + public void Test_276_16() + { + } + + [Fact] + public void Test_276_17() + { + } + + [Fact] + public void Test_276_18() + { + } + + [Fact] + public void Test_276_19() + { + } + + [Fact] + public void Test_276_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_277 + { + #region PassingTests + [Fact] + public void Test_277_01() + { + } + + [Fact] + public void Test_277_02() + { + } + + [Fact] + public void Test_277_03() + { + } + + [Fact] + public void Test_277_04() + { + } + + [Fact] + public void Test_277_05() + { + } + + [Fact] + public void Test_277_06() + { + } + + [Fact] + public void Test_277_07() + { + } + + [Fact] + public void Test_277_08() + { + } + + [Fact] + public void Test_277_09() + { + } + + [Fact] + public void Test_277_10() + { + } + + [Fact] + public void Test_277_11() + { + } + + [Fact] + public void Test_277_12() + { + } + + [Fact] + public void Test_277_13() + { + } + + [Fact] + public void Test_277_14() + { + } + + [Fact] + public void Test_277_15() + { + } + + [Fact] + public void Test_277_16() + { + } + + [Fact] + public void Test_277_17() + { + } + + [Fact] + public void Test_277_18() + { + } + + [Fact] + public void Test_277_19() + { + } + + [Fact] + public void Test_277_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_278 + { + #region PassingTests + [Fact] + public void Test_278_01() + { + } + + [Fact] + public void Test_278_02() + { + } + + [Fact] + public void Test_278_03() + { + } + + [Fact] + public void Test_278_04() + { + } + + [Fact] + public void Test_278_05() + { + } + + [Fact] + public void Test_278_06() + { + } + + [Fact] + public void Test_278_07() + { + } + + [Fact] + public void Test_278_08() + { + } + + [Fact] + public void Test_278_09() + { + } + + [Fact] + public void Test_278_10() + { + } + + [Fact] + public void Test_278_11() + { + } + + [Fact] + public void Test_278_12() + { + } + + [Fact] + public void Test_278_13() + { + } + + [Fact] + public void Test_278_14() + { + } + + [Fact] + public void Test_278_15() + { + } + + [Fact] + public void Test_278_16() + { + } + + [Fact] + public void Test_278_17() + { + } + + [Fact] + public void Test_278_18() + { + } + + [Fact] + public void Test_278_19() + { + } + + [Fact] + public void Test_278_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_279 + { + #region PassingTests + [Fact] + public void Test_279_01() + { + } + + [Fact] + public void Test_279_02() + { + } + + [Fact] + public void Test_279_03() + { + } + + [Fact] + public void Test_279_04() + { + } + + [Fact] + public void Test_279_05() + { + } + + [Fact] + public void Test_279_06() + { + } + + [Fact] + public void Test_279_07() + { + } + + [Fact] + public void Test_279_08() + { + } + + [Fact] + public void Test_279_09() + { + } + + [Fact] + public void Test_279_10() + { + } + + [Fact] + public void Test_279_11() + { + } + + [Fact] + public void Test_279_12() + { + } + + [Fact] + public void Test_279_13() + { + } + + [Fact] + public void Test_279_14() + { + } + + [Fact] + public void Test_279_15() + { + } + + [Fact] + public void Test_279_16() + { + } + + [Fact] + public void Test_279_17() + { + } + + [Fact] + public void Test_279_18() + { + } + + [Fact] + public void Test_279_19() + { + } + + [Fact] + public void Test_279_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_280 + { + #region PassingTests + [Fact] + public void Test_280_01() + { + } + + [Fact] + public void Test_280_02() + { + } + + [Fact] + public void Test_280_03() + { + } + + [Fact] + public void Test_280_04() + { + } + + [Fact] + public void Test_280_05() + { + } + + [Fact] + public void Test_280_06() + { + } + + [Fact] + public void Test_280_07() + { + } + + [Fact] + public void Test_280_08() + { + } + + [Fact] + public void Test_280_09() + { + } + + [Fact] + public void Test_280_10() + { + } + + [Fact] + public void Test_280_11() + { + } + + [Fact] + public void Test_280_12() + { + } + + [Fact] + public void Test_280_13() + { + } + + [Fact] + public void Test_280_14() + { + } + + [Fact] + public void Test_280_15() + { + } + + [Fact] + public void Test_280_16() + { + } + + [Fact] + public void Test_280_17() + { + } + + [Fact] + public void Test_280_18() + { + } + + [Fact] + public void Test_280_19() + { + } + + [Fact] + public void Test_280_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_281 + { + #region PassingTests + [Fact] + public void Test_281_01() + { + } + + [Fact] + public void Test_281_02() + { + } + + [Fact] + public void Test_281_03() + { + } + + [Fact] + public void Test_281_04() + { + } + + [Fact] + public void Test_281_05() + { + } + + [Fact] + public void Test_281_06() + { + } + + [Fact] + public void Test_281_07() + { + } + + [Fact] + public void Test_281_08() + { + } + + [Fact] + public void Test_281_09() + { + } + + [Fact] + public void Test_281_10() + { + } + + [Fact] + public void Test_281_11() + { + } + + [Fact] + public void Test_281_12() + { + } + + [Fact] + public void Test_281_13() + { + } + + [Fact] + public void Test_281_14() + { + } + + [Fact] + public void Test_281_15() + { + } + + [Fact] + public void Test_281_16() + { + } + + [Fact] + public void Test_281_17() + { + } + + [Fact] + public void Test_281_18() + { + } + + [Fact] + public void Test_281_19() + { + } + + [Fact] + public void Test_281_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_282 + { + #region PassingTests + [Fact] + public void Test_282_01() + { + } + + [Fact] + public void Test_282_02() + { + } + + [Fact] + public void Test_282_03() + { + } + + [Fact] + public void Test_282_04() + { + } + + [Fact] + public void Test_282_05() + { + } + + [Fact] + public void Test_282_06() + { + } + + [Fact] + public void Test_282_07() + { + } + + [Fact] + public void Test_282_08() + { + } + + [Fact] + public void Test_282_09() + { + } + + [Fact] + public void Test_282_10() + { + } + + [Fact] + public void Test_282_11() + { + } + + [Fact] + public void Test_282_12() + { + } + + [Fact] + public void Test_282_13() + { + } + + [Fact] + public void Test_282_14() + { + } + + [Fact] + public void Test_282_15() + { + } + + [Fact] + public void Test_282_16() + { + } + + [Fact] + public void Test_282_17() + { + } + + [Fact] + public void Test_282_18() + { + } + + [Fact] + public void Test_282_19() + { + } + + [Fact] + public void Test_282_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_283 + { + #region PassingTests + [Fact] + public void Test_283_01() + { + } + + [Fact] + public void Test_283_02() + { + } + + [Fact] + public void Test_283_03() + { + } + + [Fact] + public void Test_283_04() + { + } + + [Fact] + public void Test_283_05() + { + } + + [Fact] + public void Test_283_06() + { + } + + [Fact] + public void Test_283_07() + { + } + + [Fact] + public void Test_283_08() + { + } + + [Fact] + public void Test_283_09() + { + } + + [Fact] + public void Test_283_10() + { + } + + [Fact] + public void Test_283_11() + { + } + + [Fact] + public void Test_283_12() + { + } + + [Fact] + public void Test_283_13() + { + } + + [Fact] + public void Test_283_14() + { + } + + [Fact] + public void Test_283_15() + { + } + + [Fact] + public void Test_283_16() + { + } + + [Fact] + public void Test_283_17() + { + } + + [Fact] + public void Test_283_18() + { + } + + [Fact] + public void Test_283_19() + { + } + + [Fact] + public void Test_283_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_284 + { + #region PassingTests + [Fact] + public void Test_284_01() + { + } + + [Fact] + public void Test_284_02() + { + } + + [Fact] + public void Test_284_03() + { + } + + [Fact] + public void Test_284_04() + { + } + + [Fact] + public void Test_284_05() + { + } + + [Fact] + public void Test_284_06() + { + } + + [Fact] + public void Test_284_07() + { + } + + [Fact] + public void Test_284_08() + { + } + + [Fact] + public void Test_284_09() + { + } + + [Fact] + public void Test_284_10() + { + } + + [Fact] + public void Test_284_11() + { + } + + [Fact] + public void Test_284_12() + { + } + + [Fact] + public void Test_284_13() + { + } + + [Fact] + public void Test_284_14() + { + } + + [Fact] + public void Test_284_15() + { + } + + [Fact] + public void Test_284_16() + { + } + + [Fact] + public void Test_284_17() + { + } + + [Fact] + public void Test_284_18() + { + } + + [Fact] + public void Test_284_19() + { + } + + [Fact] + public void Test_284_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_285 + { + #region PassingTests + [Fact] + public void Test_285_01() + { + } + + [Fact] + public void Test_285_02() + { + } + + [Fact] + public void Test_285_03() + { + } + + [Fact] + public void Test_285_04() + { + } + + [Fact] + public void Test_285_05() + { + } + + [Fact] + public void Test_285_06() + { + } + + [Fact] + public void Test_285_07() + { + } + + [Fact] + public void Test_285_08() + { + } + + [Fact] + public void Test_285_09() + { + } + + [Fact] + public void Test_285_10() + { + } + + [Fact] + public void Test_285_11() + { + } + + [Fact] + public void Test_285_12() + { + } + + [Fact] + public void Test_285_13() + { + } + + [Fact] + public void Test_285_14() + { + } + + [Fact] + public void Test_285_15() + { + } + + [Fact] + public void Test_285_16() + { + } + + [Fact] + public void Test_285_17() + { + } + + [Fact] + public void Test_285_18() + { + } + + [Fact] + public void Test_285_19() + { + } + + [Fact] + public void Test_285_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_286 + { + #region PassingTests + [Fact] + public void Test_286_01() + { + } + + [Fact] + public void Test_286_02() + { + } + + [Fact] + public void Test_286_03() + { + } + + [Fact] + public void Test_286_04() + { + } + + [Fact] + public void Test_286_05() + { + } + + [Fact] + public void Test_286_06() + { + } + + [Fact] + public void Test_286_07() + { + } + + [Fact] + public void Test_286_08() + { + } + + [Fact] + public void Test_286_09() + { + } + + [Fact] + public void Test_286_10() + { + } + + [Fact] + public void Test_286_11() + { + } + + [Fact] + public void Test_286_12() + { + } + + [Fact] + public void Test_286_13() + { + } + + [Fact] + public void Test_286_14() + { + } + + [Fact] + public void Test_286_15() + { + } + + [Fact] + public void Test_286_16() + { + } + + [Fact] + public void Test_286_17() + { + } + + [Fact] + public void Test_286_18() + { + } + + [Fact] + public void Test_286_19() + { + } + + [Fact] + public void Test_286_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_287 + { + #region PassingTests + [Fact] + public void Test_287_01() + { + } + + [Fact] + public void Test_287_02() + { + } + + [Fact] + public void Test_287_03() + { + } + + [Fact] + public void Test_287_04() + { + } + + [Fact] + public void Test_287_05() + { + } + + [Fact] + public void Test_287_06() + { + } + + [Fact] + public void Test_287_07() + { + } + + [Fact] + public void Test_287_08() + { + } + + [Fact] + public void Test_287_09() + { + } + + [Fact] + public void Test_287_10() + { + } + + [Fact] + public void Test_287_11() + { + } + + [Fact] + public void Test_287_12() + { + } + + [Fact] + public void Test_287_13() + { + } + + [Fact] + public void Test_287_14() + { + } + + [Fact] + public void Test_287_15() + { + } + + [Fact] + public void Test_287_16() + { + } + + [Fact] + public void Test_287_17() + { + } + + [Fact] + public void Test_287_18() + { + } + + [Fact] + public void Test_287_19() + { + } + + [Fact] + public void Test_287_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_288 + { + #region PassingTests + [Fact] + public void Test_288_01() + { + } + + [Fact] + public void Test_288_02() + { + } + + [Fact] + public void Test_288_03() + { + } + + [Fact] + public void Test_288_04() + { + } + + [Fact] + public void Test_288_05() + { + } + + [Fact] + public void Test_288_06() + { + } + + [Fact] + public void Test_288_07() + { + } + + [Fact] + public void Test_288_08() + { + } + + [Fact] + public void Test_288_09() + { + } + + [Fact] + public void Test_288_10() + { + } + + [Fact] + public void Test_288_11() + { + } + + [Fact] + public void Test_288_12() + { + } + + [Fact] + public void Test_288_13() + { + } + + [Fact] + public void Test_288_14() + { + } + + [Fact] + public void Test_288_15() + { + } + + [Fact] + public void Test_288_16() + { + } + + [Fact] + public void Test_288_17() + { + } + + [Fact] + public void Test_288_18() + { + } + + [Fact] + public void Test_288_19() + { + } + + [Fact] + public void Test_288_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_289 + { + #region PassingTests + [Fact] + public void Test_289_01() + { + } + + [Fact] + public void Test_289_02() + { + } + + [Fact] + public void Test_289_03() + { + } + + [Fact] + public void Test_289_04() + { + } + + [Fact] + public void Test_289_05() + { + } + + [Fact] + public void Test_289_06() + { + } + + [Fact] + public void Test_289_07() + { + } + + [Fact] + public void Test_289_08() + { + } + + [Fact] + public void Test_289_09() + { + } + + [Fact] + public void Test_289_10() + { + } + + [Fact] + public void Test_289_11() + { + } + + [Fact] + public void Test_289_12() + { + } + + [Fact] + public void Test_289_13() + { + } + + [Fact] + public void Test_289_14() + { + } + + [Fact] + public void Test_289_15() + { + } + + [Fact] + public void Test_289_16() + { + } + + [Fact] + public void Test_289_17() + { + } + + [Fact] + public void Test_289_18() + { + } + + [Fact] + public void Test_289_19() + { + } + + [Fact] + public void Test_289_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_290 + { + #region PassingTests + [Fact] + public void Test_290_01() + { + } + + [Fact] + public void Test_290_02() + { + } + + [Fact] + public void Test_290_03() + { + } + + [Fact] + public void Test_290_04() + { + } + + [Fact] + public void Test_290_05() + { + } + + [Fact] + public void Test_290_06() + { + } + + [Fact] + public void Test_290_07() + { + } + + [Fact] + public void Test_290_08() + { + } + + [Fact] + public void Test_290_09() + { + } + + [Fact] + public void Test_290_10() + { + } + + [Fact] + public void Test_290_11() + { + } + + [Fact] + public void Test_290_12() + { + } + + [Fact] + public void Test_290_13() + { + } + + [Fact] + public void Test_290_14() + { + } + + [Fact] + public void Test_290_15() + { + } + + [Fact] + public void Test_290_16() + { + } + + [Fact] + public void Test_290_17() + { + } + + [Fact] + public void Test_290_18() + { + } + + [Fact] + public void Test_290_19() + { + } + + [Fact] + public void Test_290_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_291 + { + #region PassingTests + [Fact] + public void Test_291_01() + { + } + + [Fact] + public void Test_291_02() + { + } + + [Fact] + public void Test_291_03() + { + } + + [Fact] + public void Test_291_04() + { + } + + [Fact] + public void Test_291_05() + { + } + + [Fact] + public void Test_291_06() + { + } + + [Fact] + public void Test_291_07() + { + } + + [Fact] + public void Test_291_08() + { + } + + [Fact] + public void Test_291_09() + { + } + + [Fact] + public void Test_291_10() + { + } + + [Fact] + public void Test_291_11() + { + } + + [Fact] + public void Test_291_12() + { + } + + [Fact] + public void Test_291_13() + { + } + + [Fact] + public void Test_291_14() + { + } + + [Fact] + public void Test_291_15() + { + } + + [Fact] + public void Test_291_16() + { + } + + [Fact] + public void Test_291_17() + { + } + + [Fact] + public void Test_291_18() + { + } + + [Fact] + public void Test_291_19() + { + } + + [Fact] + public void Test_291_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_292 + { + #region PassingTests + [Fact] + public void Test_292_01() + { + } + + [Fact] + public void Test_292_02() + { + } + + [Fact] + public void Test_292_03() + { + } + + [Fact] + public void Test_292_04() + { + } + + [Fact] + public void Test_292_05() + { + } + + [Fact] + public void Test_292_06() + { + } + + [Fact] + public void Test_292_07() + { + } + + [Fact] + public void Test_292_08() + { + } + + [Fact] + public void Test_292_09() + { + } + + [Fact] + public void Test_292_10() + { + } + + [Fact] + public void Test_292_11() + { + } + + [Fact] + public void Test_292_12() + { + } + + [Fact] + public void Test_292_13() + { + } + + [Fact] + public void Test_292_14() + { + } + + [Fact] + public void Test_292_15() + { + } + + [Fact] + public void Test_292_16() + { + } + + [Fact] + public void Test_292_17() + { + } + + [Fact] + public void Test_292_18() + { + } + + [Fact] + public void Test_292_19() + { + } + + [Fact] + public void Test_292_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_293 + { + #region PassingTests + [Fact] + public void Test_293_01() + { + } + + [Fact] + public void Test_293_02() + { + } + + [Fact] + public void Test_293_03() + { + } + + [Fact] + public void Test_293_04() + { + } + + [Fact] + public void Test_293_05() + { + } + + [Fact] + public void Test_293_06() + { + } + + [Fact] + public void Test_293_07() + { + } + + [Fact] + public void Test_293_08() + { + } + + [Fact] + public void Test_293_09() + { + } + + [Fact] + public void Test_293_10() + { + } + + [Fact] + public void Test_293_11() + { + } + + [Fact] + public void Test_293_12() + { + } + + [Fact] + public void Test_293_13() + { + } + + [Fact] + public void Test_293_14() + { + } + + [Fact] + public void Test_293_15() + { + } + + [Fact] + public void Test_293_16() + { + } + + [Fact] + public void Test_293_17() + { + } + + [Fact] + public void Test_293_18() + { + } + + [Fact] + public void Test_293_19() + { + } + + [Fact] + public void Test_293_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_294 + { + #region PassingTests + [Fact] + public void Test_294_01() + { + } + + [Fact] + public void Test_294_02() + { + } + + [Fact] + public void Test_294_03() + { + } + + [Fact] + public void Test_294_04() + { + } + + [Fact] + public void Test_294_05() + { + } + + [Fact] + public void Test_294_06() + { + } + + [Fact] + public void Test_294_07() + { + } + + [Fact] + public void Test_294_08() + { + } + + [Fact] + public void Test_294_09() + { + } + + [Fact] + public void Test_294_10() + { + } + + [Fact] + public void Test_294_11() + { + } + + [Fact] + public void Test_294_12() + { + } + + [Fact] + public void Test_294_13() + { + } + + [Fact] + public void Test_294_14() + { + } + + [Fact] + public void Test_294_15() + { + } + + [Fact] + public void Test_294_16() + { + } + + [Fact] + public void Test_294_17() + { + } + + [Fact] + public void Test_294_18() + { + } + + [Fact] + public void Test_294_19() + { + } + + [Fact] + public void Test_294_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_295 + { + #region PassingTests + [Fact] + public void Test_295_01() + { + } + + [Fact] + public void Test_295_02() + { + } + + [Fact] + public void Test_295_03() + { + } + + [Fact] + public void Test_295_04() + { + } + + [Fact] + public void Test_295_05() + { + } + + [Fact] + public void Test_295_06() + { + } + + [Fact] + public void Test_295_07() + { + } + + [Fact] + public void Test_295_08() + { + } + + [Fact] + public void Test_295_09() + { + } + + [Fact] + public void Test_295_10() + { + } + + [Fact] + public void Test_295_11() + { + } + + [Fact] + public void Test_295_12() + { + } + + [Fact] + public void Test_295_13() + { + } + + [Fact] + public void Test_295_14() + { + } + + [Fact] + public void Test_295_15() + { + } + + [Fact] + public void Test_295_16() + { + } + + [Fact] + public void Test_295_17() + { + } + + [Fact] + public void Test_295_18() + { + } + + [Fact] + public void Test_295_19() + { + } + + [Fact] + public void Test_295_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_296 + { + #region PassingTests + [Fact] + public void Test_296_01() + { + } + + [Fact] + public void Test_296_02() + { + } + + [Fact] + public void Test_296_03() + { + } + + [Fact] + public void Test_296_04() + { + } + + [Fact] + public void Test_296_05() + { + } + + [Fact] + public void Test_296_06() + { + } + + [Fact] + public void Test_296_07() + { + } + + [Fact] + public void Test_296_08() + { + } + + [Fact] + public void Test_296_09() + { + } + + [Fact] + public void Test_296_10() + { + } + + [Fact] + public void Test_296_11() + { + } + + [Fact] + public void Test_296_12() + { + } + + [Fact] + public void Test_296_13() + { + } + + [Fact] + public void Test_296_14() + { + } + + [Fact] + public void Test_296_15() + { + } + + [Fact] + public void Test_296_16() + { + } + + [Fact] + public void Test_296_17() + { + } + + [Fact] + public void Test_296_18() + { + } + + [Fact] + public void Test_296_19() + { + } + + [Fact] + public void Test_296_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_297 + { + #region PassingTests + [Fact] + public void Test_297_01() + { + } + + [Fact] + public void Test_297_02() + { + } + + [Fact] + public void Test_297_03() + { + } + + [Fact] + public void Test_297_04() + { + } + + [Fact] + public void Test_297_05() + { + } + + [Fact] + public void Test_297_06() + { + } + + [Fact] + public void Test_297_07() + { + } + + [Fact] + public void Test_297_08() + { + } + + [Fact] + public void Test_297_09() + { + } + + [Fact] + public void Test_297_10() + { + } + + [Fact] + public void Test_297_11() + { + } + + [Fact] + public void Test_297_12() + { + } + + [Fact] + public void Test_297_13() + { + } + + [Fact] + public void Test_297_14() + { + } + + [Fact] + public void Test_297_15() + { + } + + [Fact] + public void Test_297_16() + { + } + + [Fact] + public void Test_297_17() + { + } + + [Fact] + public void Test_297_18() + { + } + + [Fact] + public void Test_297_19() + { + } + + [Fact] + public void Test_297_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_298 + { + #region PassingTests + [Fact] + public void Test_298_01() + { + } + + [Fact] + public void Test_298_02() + { + } + + [Fact] + public void Test_298_03() + { + } + + [Fact] + public void Test_298_04() + { + } + + [Fact] + public void Test_298_05() + { + } + + [Fact] + public void Test_298_06() + { + } + + [Fact] + public void Test_298_07() + { + } + + [Fact] + public void Test_298_08() + { + } + + [Fact] + public void Test_298_09() + { + } + + [Fact] + public void Test_298_10() + { + } + + [Fact] + public void Test_298_11() + { + } + + [Fact] + public void Test_298_12() + { + } + + [Fact] + public void Test_298_13() + { + } + + [Fact] + public void Test_298_14() + { + } + + [Fact] + public void Test_298_15() + { + } + + [Fact] + public void Test_298_16() + { + } + + [Fact] + public void Test_298_17() + { + } + + [Fact] + public void Test_298_18() + { + } + + [Fact] + public void Test_298_19() + { + } + + [Fact] + public void Test_298_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_299 + { + #region PassingTests + [Fact] + public void Test_299_01() + { + } + + [Fact] + public void Test_299_02() + { + } + + [Fact] + public void Test_299_03() + { + } + + [Fact] + public void Test_299_04() + { + } + + [Fact] + public void Test_299_05() + { + } + + [Fact] + public void Test_299_06() + { + } + + [Fact] + public void Test_299_07() + { + } + + [Fact] + public void Test_299_08() + { + } + + [Fact] + public void Test_299_09() + { + } + + [Fact] + public void Test_299_10() + { + } + + [Fact] + public void Test_299_11() + { + } + + [Fact] + public void Test_299_12() + { + } + + [Fact] + public void Test_299_13() + { + } + + [Fact] + public void Test_299_14() + { + } + + [Fact] + public void Test_299_15() + { + } + + [Fact] + public void Test_299_16() + { + } + + [Fact] + public void Test_299_17() + { + } + + [Fact] + public void Test_299_18() + { + } + + [Fact] + public void Test_299_19() + { + } + + [Fact] + public void Test_299_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_300 + { + #region PassingTests + [Fact] + public void Test_300_01() + { + } + + [Fact] + public void Test_300_02() + { + } + + [Fact] + public void Test_300_03() + { + } + + [Fact] + public void Test_300_04() + { + } + + [Fact] + public void Test_300_05() + { + } + + [Fact] + public void Test_300_06() + { + } + + [Fact] + public void Test_300_07() + { + } + + [Fact] + public void Test_300_08() + { + } + + [Fact] + public void Test_300_09() + { + } + + [Fact] + public void Test_300_10() + { + } + + [Fact] + public void Test_300_11() + { + } + + [Fact] + public void Test_300_12() + { + } + + [Fact] + public void Test_300_13() + { + } + + [Fact] + public void Test_300_14() + { + } + + [Fact] + public void Test_300_15() + { + } + + [Fact] + public void Test_300_16() + { + } + + [Fact] + public void Test_300_17() + { + } + + [Fact] + public void Test_300_18() + { + } + + [Fact] + public void Test_300_19() + { + } + + [Fact] + public void Test_300_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_301 + { + #region PassingTests + [Fact] + public void Test_301_01() + { + } + + [Fact] + public void Test_301_02() + { + } + + [Fact] + public void Test_301_03() + { + } + + [Fact] + public void Test_301_04() + { + } + + [Fact] + public void Test_301_05() + { + } + + [Fact] + public void Test_301_06() + { + } + + [Fact] + public void Test_301_07() + { + } + + [Fact] + public void Test_301_08() + { + } + + [Fact] + public void Test_301_09() + { + } + + [Fact] + public void Test_301_10() + { + } + + [Fact] + public void Test_301_11() + { + } + + [Fact] + public void Test_301_12() + { + } + + [Fact] + public void Test_301_13() + { + } + + [Fact] + public void Test_301_14() + { + } + + [Fact] + public void Test_301_15() + { + } + + [Fact] + public void Test_301_16() + { + } + + [Fact] + public void Test_301_17() + { + } + + [Fact] + public void Test_301_18() + { + } + + [Fact] + public void Test_301_19() + { + } + + [Fact] + public void Test_301_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_302 + { + #region PassingTests + [Fact] + public void Test_302_01() + { + } + + [Fact] + public void Test_302_02() + { + } + + [Fact] + public void Test_302_03() + { + } + + [Fact] + public void Test_302_04() + { + } + + [Fact] + public void Test_302_05() + { + } + + [Fact] + public void Test_302_06() + { + } + + [Fact] + public void Test_302_07() + { + } + + [Fact] + public void Test_302_08() + { + } + + [Fact] + public void Test_302_09() + { + } + + [Fact] + public void Test_302_10() + { + } + + [Fact] + public void Test_302_11() + { + } + + [Fact] + public void Test_302_12() + { + } + + [Fact] + public void Test_302_13() + { + } + + [Fact] + public void Test_302_14() + { + } + + [Fact] + public void Test_302_15() + { + } + + [Fact] + public void Test_302_16() + { + } + + [Fact] + public void Test_302_17() + { + } + + [Fact] + public void Test_302_18() + { + } + + [Fact] + public void Test_302_19() + { + } + + [Fact] + public void Test_302_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_303 + { + #region PassingTests + [Fact] + public void Test_303_01() + { + } + + [Fact] + public void Test_303_02() + { + } + + [Fact] + public void Test_303_03() + { + } + + [Fact] + public void Test_303_04() + { + } + + [Fact] + public void Test_303_05() + { + } + + [Fact] + public void Test_303_06() + { + } + + [Fact] + public void Test_303_07() + { + } + + [Fact] + public void Test_303_08() + { + } + + [Fact] + public void Test_303_09() + { + } + + [Fact] + public void Test_303_10() + { + } + + [Fact] + public void Test_303_11() + { + } + + [Fact] + public void Test_303_12() + { + } + + [Fact] + public void Test_303_13() + { + } + + [Fact] + public void Test_303_14() + { + } + + [Fact] + public void Test_303_15() + { + } + + [Fact] + public void Test_303_16() + { + } + + [Fact] + public void Test_303_17() + { + } + + [Fact] + public void Test_303_18() + { + } + + [Fact] + public void Test_303_19() + { + } + + [Fact] + public void Test_303_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_304 + { + #region PassingTests + [Fact] + public void Test_304_01() + { + } + + [Fact] + public void Test_304_02() + { + } + + [Fact] + public void Test_304_03() + { + } + + [Fact] + public void Test_304_04() + { + } + + [Fact] + public void Test_304_05() + { + } + + [Fact] + public void Test_304_06() + { + } + + [Fact] + public void Test_304_07() + { + } + + [Fact] + public void Test_304_08() + { + } + + [Fact] + public void Test_304_09() + { + } + + [Fact] + public void Test_304_10() + { + } + + [Fact] + public void Test_304_11() + { + } + + [Fact] + public void Test_304_12() + { + } + + [Fact] + public void Test_304_13() + { + } + + [Fact] + public void Test_304_14() + { + } + + [Fact] + public void Test_304_15() + { + } + + [Fact] + public void Test_304_16() + { + } + + [Fact] + public void Test_304_17() + { + } + + [Fact] + public void Test_304_18() + { + } + + [Fact] + public void Test_304_19() + { + } + + [Fact] + public void Test_304_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_305 + { + #region PassingTests + [Fact] + public void Test_305_01() + { + } + + [Fact] + public void Test_305_02() + { + } + + [Fact] + public void Test_305_03() + { + } + + [Fact] + public void Test_305_04() + { + } + + [Fact] + public void Test_305_05() + { + } + + [Fact] + public void Test_305_06() + { + } + + [Fact] + public void Test_305_07() + { + } + + [Fact] + public void Test_305_08() + { + } + + [Fact] + public void Test_305_09() + { + } + + [Fact] + public void Test_305_10() + { + } + + [Fact] + public void Test_305_11() + { + } + + [Fact] + public void Test_305_12() + { + } + + [Fact] + public void Test_305_13() + { + } + + [Fact] + public void Test_305_14() + { + } + + [Fact] + public void Test_305_15() + { + } + + [Fact] + public void Test_305_16() + { + } + + [Fact] + public void Test_305_17() + { + } + + [Fact] + public void Test_305_18() + { + } + + [Fact] + public void Test_305_19() + { + } + + [Fact] + public void Test_305_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_306 + { + #region PassingTests + [Fact] + public void Test_306_01() + { + } + + [Fact] + public void Test_306_02() + { + } + + [Fact] + public void Test_306_03() + { + } + + [Fact] + public void Test_306_04() + { + } + + [Fact] + public void Test_306_05() + { + } + + [Fact] + public void Test_306_06() + { + } + + [Fact] + public void Test_306_07() + { + } + + [Fact] + public void Test_306_08() + { + } + + [Fact] + public void Test_306_09() + { + } + + [Fact] + public void Test_306_10() + { + } + + [Fact] + public void Test_306_11() + { + } + + [Fact] + public void Test_306_12() + { + } + + [Fact] + public void Test_306_13() + { + } + + [Fact] + public void Test_306_14() + { + } + + [Fact] + public void Test_306_15() + { + } + + [Fact] + public void Test_306_16() + { + } + + [Fact] + public void Test_306_17() + { + } + + [Fact] + public void Test_306_18() + { + } + + [Fact] + public void Test_306_19() + { + } + + [Fact] + public void Test_306_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_307 + { + #region PassingTests + [Fact] + public void Test_307_01() + { + } + + [Fact] + public void Test_307_02() + { + } + + [Fact] + public void Test_307_03() + { + } + + [Fact] + public void Test_307_04() + { + } + + [Fact] + public void Test_307_05() + { + } + + [Fact] + public void Test_307_06() + { + } + + [Fact] + public void Test_307_07() + { + } + + [Fact] + public void Test_307_08() + { + } + + [Fact] + public void Test_307_09() + { + } + + [Fact] + public void Test_307_10() + { + } + + [Fact] + public void Test_307_11() + { + } + + [Fact] + public void Test_307_12() + { + } + + [Fact] + public void Test_307_13() + { + } + + [Fact] + public void Test_307_14() + { + } + + [Fact] + public void Test_307_15() + { + } + + [Fact] + public void Test_307_16() + { + } + + [Fact] + public void Test_307_17() + { + } + + [Fact] + public void Test_307_18() + { + } + + [Fact] + public void Test_307_19() + { + } + + [Fact] + public void Test_307_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_308 + { + #region PassingTests + [Fact] + public void Test_308_01() + { + } + + [Fact] + public void Test_308_02() + { + } + + [Fact] + public void Test_308_03() + { + } + + [Fact] + public void Test_308_04() + { + } + + [Fact] + public void Test_308_05() + { + } + + [Fact] + public void Test_308_06() + { + } + + [Fact] + public void Test_308_07() + { + } + + [Fact] + public void Test_308_08() + { + } + + [Fact] + public void Test_308_09() + { + } + + [Fact] + public void Test_308_10() + { + } + + [Fact] + public void Test_308_11() + { + } + + [Fact] + public void Test_308_12() + { + } + + [Fact] + public void Test_308_13() + { + } + + [Fact] + public void Test_308_14() + { + } + + [Fact] + public void Test_308_15() + { + } + + [Fact] + public void Test_308_16() + { + } + + [Fact] + public void Test_308_17() + { + } + + [Fact] + public void Test_308_18() + { + } + + [Fact] + public void Test_308_19() + { + } + + [Fact] + public void Test_308_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_309 + { + #region PassingTests + [Fact] + public void Test_309_01() + { + } + + [Fact] + public void Test_309_02() + { + } + + [Fact] + public void Test_309_03() + { + } + + [Fact] + public void Test_309_04() + { + } + + [Fact] + public void Test_309_05() + { + } + + [Fact] + public void Test_309_06() + { + } + + [Fact] + public void Test_309_07() + { + } + + [Fact] + public void Test_309_08() + { + } + + [Fact] + public void Test_309_09() + { + } + + [Fact] + public void Test_309_10() + { + } + + [Fact] + public void Test_309_11() + { + } + + [Fact] + public void Test_309_12() + { + } + + [Fact] + public void Test_309_13() + { + } + + [Fact] + public void Test_309_14() + { + } + + [Fact] + public void Test_309_15() + { + } + + [Fact] + public void Test_309_16() + { + } + + [Fact] + public void Test_309_17() + { + } + + [Fact] + public void Test_309_18() + { + } + + [Fact] + public void Test_309_19() + { + } + + [Fact] + public void Test_309_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_310 + { + #region PassingTests + [Fact] + public void Test_310_01() + { + } + + [Fact] + public void Test_310_02() + { + } + + [Fact] + public void Test_310_03() + { + } + + [Fact] + public void Test_310_04() + { + } + + [Fact] + public void Test_310_05() + { + } + + [Fact] + public void Test_310_06() + { + } + + [Fact] + public void Test_310_07() + { + } + + [Fact] + public void Test_310_08() + { + } + + [Fact] + public void Test_310_09() + { + } + + [Fact] + public void Test_310_10() + { + } + + [Fact] + public void Test_310_11() + { + } + + [Fact] + public void Test_310_12() + { + } + + [Fact] + public void Test_310_13() + { + } + + [Fact] + public void Test_310_14() + { + } + + [Fact] + public void Test_310_15() + { + } + + [Fact] + public void Test_310_16() + { + } + + [Fact] + public void Test_310_17() + { + } + + [Fact] + public void Test_310_18() + { + } + + [Fact] + public void Test_310_19() + { + } + + [Fact] + public void Test_310_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_311 + { + #region PassingTests + [Fact] + public void Test_311_01() + { + } + + [Fact] + public void Test_311_02() + { + } + + [Fact] + public void Test_311_03() + { + } + + [Fact] + public void Test_311_04() + { + } + + [Fact] + public void Test_311_05() + { + } + + [Fact] + public void Test_311_06() + { + } + + [Fact] + public void Test_311_07() + { + } + + [Fact] + public void Test_311_08() + { + } + + [Fact] + public void Test_311_09() + { + } + + [Fact] + public void Test_311_10() + { + } + + [Fact] + public void Test_311_11() + { + } + + [Fact] + public void Test_311_12() + { + } + + [Fact] + public void Test_311_13() + { + } + + [Fact] + public void Test_311_14() + { + } + + [Fact] + public void Test_311_15() + { + } + + [Fact] + public void Test_311_16() + { + } + + [Fact] + public void Test_311_17() + { + } + + [Fact] + public void Test_311_18() + { + } + + [Fact] + public void Test_311_19() + { + } + + [Fact] + public void Test_311_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_312 + { + #region PassingTests + [Fact] + public void Test_312_01() + { + } + + [Fact] + public void Test_312_02() + { + } + + [Fact] + public void Test_312_03() + { + } + + [Fact] + public void Test_312_04() + { + } + + [Fact] + public void Test_312_05() + { + } + + [Fact] + public void Test_312_06() + { + } + + [Fact] + public void Test_312_07() + { + } + + [Fact] + public void Test_312_08() + { + } + + [Fact] + public void Test_312_09() + { + } + + [Fact] + public void Test_312_10() + { + } + + [Fact] + public void Test_312_11() + { + } + + [Fact] + public void Test_312_12() + { + } + + [Fact] + public void Test_312_13() + { + } + + [Fact] + public void Test_312_14() + { + } + + [Fact] + public void Test_312_15() + { + } + + [Fact] + public void Test_312_16() + { + } + + [Fact] + public void Test_312_17() + { + } + + [Fact] + public void Test_312_18() + { + } + + [Fact] + public void Test_312_19() + { + } + + [Fact] + public void Test_312_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_313 + { + #region PassingTests + [Fact] + public void Test_313_01() + { + } + + [Fact] + public void Test_313_02() + { + } + + [Fact] + public void Test_313_03() + { + } + + [Fact] + public void Test_313_04() + { + } + + [Fact] + public void Test_313_05() + { + } + + [Fact] + public void Test_313_06() + { + } + + [Fact] + public void Test_313_07() + { + } + + [Fact] + public void Test_313_08() + { + } + + [Fact] + public void Test_313_09() + { + } + + [Fact] + public void Test_313_10() + { + } + + [Fact] + public void Test_313_11() + { + } + + [Fact] + public void Test_313_12() + { + } + + [Fact] + public void Test_313_13() + { + } + + [Fact] + public void Test_313_14() + { + } + + [Fact] + public void Test_313_15() + { + } + + [Fact] + public void Test_313_16() + { + } + + [Fact] + public void Test_313_17() + { + } + + [Fact] + public void Test_313_18() + { + } + + [Fact] + public void Test_313_19() + { + } + + [Fact] + public void Test_313_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_314 + { + #region PassingTests + [Fact] + public void Test_314_01() + { + } + + [Fact] + public void Test_314_02() + { + } + + [Fact] + public void Test_314_03() + { + } + + [Fact] + public void Test_314_04() + { + } + + [Fact] + public void Test_314_05() + { + } + + [Fact] + public void Test_314_06() + { + } + + [Fact] + public void Test_314_07() + { + } + + [Fact] + public void Test_314_08() + { + } + + [Fact] + public void Test_314_09() + { + } + + [Fact] + public void Test_314_10() + { + } + + [Fact] + public void Test_314_11() + { + } + + [Fact] + public void Test_314_12() + { + } + + [Fact] + public void Test_314_13() + { + } + + [Fact] + public void Test_314_14() + { + } + + [Fact] + public void Test_314_15() + { + } + + [Fact] + public void Test_314_16() + { + } + + [Fact] + public void Test_314_17() + { + } + + [Fact] + public void Test_314_18() + { + } + + [Fact] + public void Test_314_19() + { + } + + [Fact] + public void Test_314_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_315 + { + #region PassingTests + [Fact] + public void Test_315_01() + { + } + + [Fact] + public void Test_315_02() + { + } + + [Fact] + public void Test_315_03() + { + } + + [Fact] + public void Test_315_04() + { + } + + [Fact] + public void Test_315_05() + { + } + + [Fact] + public void Test_315_06() + { + } + + [Fact] + public void Test_315_07() + { + } + + [Fact] + public void Test_315_08() + { + } + + [Fact] + public void Test_315_09() + { + } + + [Fact] + public void Test_315_10() + { + } + + [Fact] + public void Test_315_11() + { + } + + [Fact] + public void Test_315_12() + { + } + + [Fact] + public void Test_315_13() + { + } + + [Fact] + public void Test_315_14() + { + } + + [Fact] + public void Test_315_15() + { + } + + [Fact] + public void Test_315_16() + { + } + + [Fact] + public void Test_315_17() + { + } + + [Fact] + public void Test_315_18() + { + } + + [Fact] + public void Test_315_19() + { + } + + [Fact] + public void Test_315_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_316 + { + #region PassingTests + [Fact] + public void Test_316_01() + { + } + + [Fact] + public void Test_316_02() + { + } + + [Fact] + public void Test_316_03() + { + } + + [Fact] + public void Test_316_04() + { + } + + [Fact] + public void Test_316_05() + { + } + + [Fact] + public void Test_316_06() + { + } + + [Fact] + public void Test_316_07() + { + } + + [Fact] + public void Test_316_08() + { + } + + [Fact] + public void Test_316_09() + { + } + + [Fact] + public void Test_316_10() + { + } + + [Fact] + public void Test_316_11() + { + } + + [Fact] + public void Test_316_12() + { + } + + [Fact] + public void Test_316_13() + { + } + + [Fact] + public void Test_316_14() + { + } + + [Fact] + public void Test_316_15() + { + } + + [Fact] + public void Test_316_16() + { + } + + [Fact] + public void Test_316_17() + { + } + + [Fact] + public void Test_316_18() + { + } + + [Fact] + public void Test_316_19() + { + } + + [Fact] + public void Test_316_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_317 + { + #region PassingTests + [Fact] + public void Test_317_01() + { + } + + [Fact] + public void Test_317_02() + { + } + + [Fact] + public void Test_317_03() + { + } + + [Fact] + public void Test_317_04() + { + } + + [Fact] + public void Test_317_05() + { + } + + [Fact] + public void Test_317_06() + { + } + + [Fact] + public void Test_317_07() + { + } + + [Fact] + public void Test_317_08() + { + } + + [Fact] + public void Test_317_09() + { + } + + [Fact] + public void Test_317_10() + { + } + + [Fact] + public void Test_317_11() + { + } + + [Fact] + public void Test_317_12() + { + } + + [Fact] + public void Test_317_13() + { + } + + [Fact] + public void Test_317_14() + { + } + + [Fact] + public void Test_317_15() + { + } + + [Fact] + public void Test_317_16() + { + } + + [Fact] + public void Test_317_17() + { + } + + [Fact] + public void Test_317_18() + { + } + + [Fact] + public void Test_317_19() + { + } + + [Fact] + public void Test_317_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_318 + { + #region PassingTests + [Fact] + public void Test_318_01() + { + } + + [Fact] + public void Test_318_02() + { + } + + [Fact] + public void Test_318_03() + { + } + + [Fact] + public void Test_318_04() + { + } + + [Fact] + public void Test_318_05() + { + } + + [Fact] + public void Test_318_06() + { + } + + [Fact] + public void Test_318_07() + { + } + + [Fact] + public void Test_318_08() + { + } + + [Fact] + public void Test_318_09() + { + } + + [Fact] + public void Test_318_10() + { + } + + [Fact] + public void Test_318_11() + { + } + + [Fact] + public void Test_318_12() + { + } + + [Fact] + public void Test_318_13() + { + } + + [Fact] + public void Test_318_14() + { + } + + [Fact] + public void Test_318_15() + { + } + + [Fact] + public void Test_318_16() + { + } + + [Fact] + public void Test_318_17() + { + } + + [Fact] + public void Test_318_18() + { + } + + [Fact] + public void Test_318_19() + { + } + + [Fact] + public void Test_318_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_319 + { + #region PassingTests + [Fact] + public void Test_319_01() + { + } + + [Fact] + public void Test_319_02() + { + } + + [Fact] + public void Test_319_03() + { + } + + [Fact] + public void Test_319_04() + { + } + + [Fact] + public void Test_319_05() + { + } + + [Fact] + public void Test_319_06() + { + } + + [Fact] + public void Test_319_07() + { + } + + [Fact] + public void Test_319_08() + { + } + + [Fact] + public void Test_319_09() + { + } + + [Fact] + public void Test_319_10() + { + } + + [Fact] + public void Test_319_11() + { + } + + [Fact] + public void Test_319_12() + { + } + + [Fact] + public void Test_319_13() + { + } + + [Fact] + public void Test_319_14() + { + } + + [Fact] + public void Test_319_15() + { + } + + [Fact] + public void Test_319_16() + { + } + + [Fact] + public void Test_319_17() + { + } + + [Fact] + public void Test_319_18() + { + } + + [Fact] + public void Test_319_19() + { + } + + [Fact] + public void Test_319_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_320 + { + #region PassingTests + [Fact] + public void Test_320_01() + { + } + + [Fact] + public void Test_320_02() + { + } + + [Fact] + public void Test_320_03() + { + } + + [Fact] + public void Test_320_04() + { + } + + [Fact] + public void Test_320_05() + { + } + + [Fact] + public void Test_320_06() + { + } + + [Fact] + public void Test_320_07() + { + } + + [Fact] + public void Test_320_08() + { + } + + [Fact] + public void Test_320_09() + { + } + + [Fact] + public void Test_320_10() + { + } + + [Fact] + public void Test_320_11() + { + } + + [Fact] + public void Test_320_12() + { + } + + [Fact] + public void Test_320_13() + { + } + + [Fact] + public void Test_320_14() + { + } + + [Fact] + public void Test_320_15() + { + } + + [Fact] + public void Test_320_16() + { + } + + [Fact] + public void Test_320_17() + { + } + + [Fact] + public void Test_320_18() + { + } + + [Fact] + public void Test_320_19() + { + } + + [Fact] + public void Test_320_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_321 + { + #region PassingTests + [Fact] + public void Test_321_01() + { + } + + [Fact] + public void Test_321_02() + { + } + + [Fact] + public void Test_321_03() + { + } + + [Fact] + public void Test_321_04() + { + } + + [Fact] + public void Test_321_05() + { + } + + [Fact] + public void Test_321_06() + { + } + + [Fact] + public void Test_321_07() + { + } + + [Fact] + public void Test_321_08() + { + } + + [Fact] + public void Test_321_09() + { + } + + [Fact] + public void Test_321_10() + { + } + + [Fact] + public void Test_321_11() + { + } + + [Fact] + public void Test_321_12() + { + } + + [Fact] + public void Test_321_13() + { + } + + [Fact] + public void Test_321_14() + { + } + + [Fact] + public void Test_321_15() + { + } + + [Fact] + public void Test_321_16() + { + } + + [Fact] + public void Test_321_17() + { + } + + [Fact] + public void Test_321_18() + { + } + + [Fact] + public void Test_321_19() + { + } + + [Fact] + public void Test_321_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_322 + { + #region PassingTests + [Fact] + public void Test_322_01() + { + } + + [Fact] + public void Test_322_02() + { + } + + [Fact] + public void Test_322_03() + { + } + + [Fact] + public void Test_322_04() + { + } + + [Fact] + public void Test_322_05() + { + } + + [Fact] + public void Test_322_06() + { + } + + [Fact] + public void Test_322_07() + { + } + + [Fact] + public void Test_322_08() + { + } + + [Fact] + public void Test_322_09() + { + } + + [Fact] + public void Test_322_10() + { + } + + [Fact] + public void Test_322_11() + { + } + + [Fact] + public void Test_322_12() + { + } + + [Fact] + public void Test_322_13() + { + } + + [Fact] + public void Test_322_14() + { + } + + [Fact] + public void Test_322_15() + { + } + + [Fact] + public void Test_322_16() + { + } + + [Fact] + public void Test_322_17() + { + } + + [Fact] + public void Test_322_18() + { + } + + [Fact] + public void Test_322_19() + { + } + + [Fact] + public void Test_322_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_323 + { + #region PassingTests + [Fact] + public void Test_323_01() + { + } + + [Fact] + public void Test_323_02() + { + } + + [Fact] + public void Test_323_03() + { + } + + [Fact] + public void Test_323_04() + { + } + + [Fact] + public void Test_323_05() + { + } + + [Fact] + public void Test_323_06() + { + } + + [Fact] + public void Test_323_07() + { + } + + [Fact] + public void Test_323_08() + { + } + + [Fact] + public void Test_323_09() + { + } + + [Fact] + public void Test_323_10() + { + } + + [Fact] + public void Test_323_11() + { + } + + [Fact] + public void Test_323_12() + { + } + + [Fact] + public void Test_323_13() + { + } + + [Fact] + public void Test_323_14() + { + } + + [Fact] + public void Test_323_15() + { + } + + [Fact] + public void Test_323_16() + { + } + + [Fact] + public void Test_323_17() + { + } + + [Fact] + public void Test_323_18() + { + } + + [Fact] + public void Test_323_19() + { + } + + [Fact] + public void Test_323_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_324 + { + #region PassingTests + [Fact] + public void Test_324_01() + { + } + + [Fact] + public void Test_324_02() + { + } + + [Fact] + public void Test_324_03() + { + } + + [Fact] + public void Test_324_04() + { + } + + [Fact] + public void Test_324_05() + { + } + + [Fact] + public void Test_324_06() + { + } + + [Fact] + public void Test_324_07() + { + } + + [Fact] + public void Test_324_08() + { + } + + [Fact] + public void Test_324_09() + { + } + + [Fact] + public void Test_324_10() + { + } + + [Fact] + public void Test_324_11() + { + } + + [Fact] + public void Test_324_12() + { + } + + [Fact] + public void Test_324_13() + { + } + + [Fact] + public void Test_324_14() + { + } + + [Fact] + public void Test_324_15() + { + } + + [Fact] + public void Test_324_16() + { + } + + [Fact] + public void Test_324_17() + { + } + + [Fact] + public void Test_324_18() + { + } + + [Fact] + public void Test_324_19() + { + } + + [Fact] + public void Test_324_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_325 + { + #region PassingTests + [Fact] + public void Test_325_01() + { + } + + [Fact] + public void Test_325_02() + { + } + + [Fact] + public void Test_325_03() + { + } + + [Fact] + public void Test_325_04() + { + } + + [Fact] + public void Test_325_05() + { + } + + [Fact] + public void Test_325_06() + { + } + + [Fact] + public void Test_325_07() + { + } + + [Fact] + public void Test_325_08() + { + } + + [Fact] + public void Test_325_09() + { + } + + [Fact] + public void Test_325_10() + { + } + + [Fact] + public void Test_325_11() + { + } + + [Fact] + public void Test_325_12() + { + } + + [Fact] + public void Test_325_13() + { + } + + [Fact] + public void Test_325_14() + { + } + + [Fact] + public void Test_325_15() + { + } + + [Fact] + public void Test_325_16() + { + } + + [Fact] + public void Test_325_17() + { + } + + [Fact] + public void Test_325_18() + { + } + + [Fact] + public void Test_325_19() + { + } + + [Fact] + public void Test_325_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_326 + { + #region PassingTests + [Fact] + public void Test_326_01() + { + } + + [Fact] + public void Test_326_02() + { + } + + [Fact] + public void Test_326_03() + { + } + + [Fact] + public void Test_326_04() + { + } + + [Fact] + public void Test_326_05() + { + } + + [Fact] + public void Test_326_06() + { + } + + [Fact] + public void Test_326_07() + { + } + + [Fact] + public void Test_326_08() + { + } + + [Fact] + public void Test_326_09() + { + } + + [Fact] + public void Test_326_10() + { + } + + [Fact] + public void Test_326_11() + { + } + + [Fact] + public void Test_326_12() + { + } + + [Fact] + public void Test_326_13() + { + } + + [Fact] + public void Test_326_14() + { + } + + [Fact] + public void Test_326_15() + { + } + + [Fact] + public void Test_326_16() + { + } + + [Fact] + public void Test_326_17() + { + } + + [Fact] + public void Test_326_18() + { + } + + [Fact] + public void Test_326_19() + { + } + + [Fact] + public void Test_326_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_327 + { + #region PassingTests + [Fact] + public void Test_327_01() + { + } + + [Fact] + public void Test_327_02() + { + } + + [Fact] + public void Test_327_03() + { + } + + [Fact] + public void Test_327_04() + { + } + + [Fact] + public void Test_327_05() + { + } + + [Fact] + public void Test_327_06() + { + } + + [Fact] + public void Test_327_07() + { + } + + [Fact] + public void Test_327_08() + { + } + + [Fact] + public void Test_327_09() + { + } + + [Fact] + public void Test_327_10() + { + } + + [Fact] + public void Test_327_11() + { + } + + [Fact] + public void Test_327_12() + { + } + + [Fact] + public void Test_327_13() + { + } + + [Fact] + public void Test_327_14() + { + } + + [Fact] + public void Test_327_15() + { + } + + [Fact] + public void Test_327_16() + { + } + + [Fact] + public void Test_327_17() + { + } + + [Fact] + public void Test_327_18() + { + } + + [Fact] + public void Test_327_19() + { + } + + [Fact] + public void Test_327_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_328 + { + #region PassingTests + [Fact] + public void Test_328_01() + { + } + + [Fact] + public void Test_328_02() + { + } + + [Fact] + public void Test_328_03() + { + } + + [Fact] + public void Test_328_04() + { + } + + [Fact] + public void Test_328_05() + { + } + + [Fact] + public void Test_328_06() + { + } + + [Fact] + public void Test_328_07() + { + } + + [Fact] + public void Test_328_08() + { + } + + [Fact] + public void Test_328_09() + { + } + + [Fact] + public void Test_328_10() + { + } + + [Fact] + public void Test_328_11() + { + } + + [Fact] + public void Test_328_12() + { + } + + [Fact] + public void Test_328_13() + { + } + + [Fact] + public void Test_328_14() + { + } + + [Fact] + public void Test_328_15() + { + } + + [Fact] + public void Test_328_16() + { + } + + [Fact] + public void Test_328_17() + { + } + + [Fact] + public void Test_328_18() + { + } + + [Fact] + public void Test_328_19() + { + } + + [Fact] + public void Test_328_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_329 + { + #region PassingTests + [Fact] + public void Test_329_01() + { + } + + [Fact] + public void Test_329_02() + { + } + + [Fact] + public void Test_329_03() + { + } + + [Fact] + public void Test_329_04() + { + } + + [Fact] + public void Test_329_05() + { + } + + [Fact] + public void Test_329_06() + { + } + + [Fact] + public void Test_329_07() + { + } + + [Fact] + public void Test_329_08() + { + } + + [Fact] + public void Test_329_09() + { + } + + [Fact] + public void Test_329_10() + { + } + + [Fact] + public void Test_329_11() + { + } + + [Fact] + public void Test_329_12() + { + } + + [Fact] + public void Test_329_13() + { + } + + [Fact] + public void Test_329_14() + { + } + + [Fact] + public void Test_329_15() + { + } + + [Fact] + public void Test_329_16() + { + } + + [Fact] + public void Test_329_17() + { + } + + [Fact] + public void Test_329_18() + { + } + + [Fact] + public void Test_329_19() + { + } + + [Fact] + public void Test_329_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_330 + { + #region PassingTests + [Fact] + public void Test_330_01() + { + } + + [Fact] + public void Test_330_02() + { + } + + [Fact] + public void Test_330_03() + { + } + + [Fact] + public void Test_330_04() + { + } + + [Fact] + public void Test_330_05() + { + } + + [Fact] + public void Test_330_06() + { + } + + [Fact] + public void Test_330_07() + { + } + + [Fact] + public void Test_330_08() + { + } + + [Fact] + public void Test_330_09() + { + } + + [Fact] + public void Test_330_10() + { + } + + [Fact] + public void Test_330_11() + { + } + + [Fact] + public void Test_330_12() + { + } + + [Fact] + public void Test_330_13() + { + } + + [Fact] + public void Test_330_14() + { + } + + [Fact] + public void Test_330_15() + { + } + + [Fact] + public void Test_330_16() + { + } + + [Fact] + public void Test_330_17() + { + } + + [Fact] + public void Test_330_18() + { + } + + [Fact] + public void Test_330_19() + { + } + + [Fact] + public void Test_330_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_331 + { + #region PassingTests + [Fact] + public void Test_331_01() + { + } + + [Fact] + public void Test_331_02() + { + } + + [Fact] + public void Test_331_03() + { + } + + [Fact] + public void Test_331_04() + { + } + + [Fact] + public void Test_331_05() + { + } + + [Fact] + public void Test_331_06() + { + } + + [Fact] + public void Test_331_07() + { + } + + [Fact] + public void Test_331_08() + { + } + + [Fact] + public void Test_331_09() + { + } + + [Fact] + public void Test_331_10() + { + } + + [Fact] + public void Test_331_11() + { + } + + [Fact] + public void Test_331_12() + { + } + + [Fact] + public void Test_331_13() + { + } + + [Fact] + public void Test_331_14() + { + } + + [Fact] + public void Test_331_15() + { + } + + [Fact] + public void Test_331_16() + { + } + + [Fact] + public void Test_331_17() + { + } + + [Fact] + public void Test_331_18() + { + } + + [Fact] + public void Test_331_19() + { + } + + [Fact] + public void Test_331_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_332 + { + #region PassingTests + [Fact] + public void Test_332_01() + { + } + + [Fact] + public void Test_332_02() + { + } + + [Fact] + public void Test_332_03() + { + } + + [Fact] + public void Test_332_04() + { + } + + [Fact] + public void Test_332_05() + { + } + + [Fact] + public void Test_332_06() + { + } + + [Fact] + public void Test_332_07() + { + } + + [Fact] + public void Test_332_08() + { + } + + [Fact] + public void Test_332_09() + { + } + + [Fact] + public void Test_332_10() + { + } + + [Fact] + public void Test_332_11() + { + } + + [Fact] + public void Test_332_12() + { + } + + [Fact] + public void Test_332_13() + { + } + + [Fact] + public void Test_332_14() + { + } + + [Fact] + public void Test_332_15() + { + } + + [Fact] + public void Test_332_16() + { + } + + [Fact] + public void Test_332_17() + { + } + + [Fact] + public void Test_332_18() + { + } + + [Fact] + public void Test_332_19() + { + } + + [Fact] + public void Test_332_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_333 + { + #region PassingTests + [Fact] + public void Test_333_01() + { + } + + [Fact] + public void Test_333_02() + { + } + + [Fact] + public void Test_333_03() + { + } + + [Fact] + public void Test_333_04() + { + } + + [Fact] + public void Test_333_05() + { + } + + [Fact] + public void Test_333_06() + { + } + + [Fact] + public void Test_333_07() + { + } + + [Fact] + public void Test_333_08() + { + } + + [Fact] + public void Test_333_09() + { + } + + [Fact] + public void Test_333_10() + { + } + + [Fact] + public void Test_333_11() + { + } + + [Fact] + public void Test_333_12() + { + } + + [Fact] + public void Test_333_13() + { + } + + [Fact] + public void Test_333_14() + { + } + + [Fact] + public void Test_333_15() + { + } + + [Fact] + public void Test_333_16() + { + } + + [Fact] + public void Test_333_17() + { + } + + [Fact] + public void Test_333_18() + { + } + + [Fact] + public void Test_333_19() + { + } + + [Fact] + public void Test_333_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_334 + { + #region PassingTests + [Fact] + public void Test_334_01() + { + } + + [Fact] + public void Test_334_02() + { + } + + [Fact] + public void Test_334_03() + { + } + + [Fact] + public void Test_334_04() + { + } + + [Fact] + public void Test_334_05() + { + } + + [Fact] + public void Test_334_06() + { + } + + [Fact] + public void Test_334_07() + { + } + + [Fact] + public void Test_334_08() + { + } + + [Fact] + public void Test_334_09() + { + } + + [Fact] + public void Test_334_10() + { + } + + [Fact] + public void Test_334_11() + { + } + + [Fact] + public void Test_334_12() + { + } + + [Fact] + public void Test_334_13() + { + } + + [Fact] + public void Test_334_14() + { + } + + [Fact] + public void Test_334_15() + { + } + + [Fact] + public void Test_334_16() + { + } + + [Fact] + public void Test_334_17() + { + } + + [Fact] + public void Test_334_18() + { + } + + [Fact] + public void Test_334_19() + { + } + + [Fact] + public void Test_334_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_335 + { + #region PassingTests + [Fact] + public void Test_335_01() + { + } + + [Fact] + public void Test_335_02() + { + } + + [Fact] + public void Test_335_03() + { + } + + [Fact] + public void Test_335_04() + { + } + + [Fact] + public void Test_335_05() + { + } + + [Fact] + public void Test_335_06() + { + } + + [Fact] + public void Test_335_07() + { + } + + [Fact] + public void Test_335_08() + { + } + + [Fact] + public void Test_335_09() + { + } + + [Fact] + public void Test_335_10() + { + } + + [Fact] + public void Test_335_11() + { + } + + [Fact] + public void Test_335_12() + { + } + + [Fact] + public void Test_335_13() + { + } + + [Fact] + public void Test_335_14() + { + } + + [Fact] + public void Test_335_15() + { + } + + [Fact] + public void Test_335_16() + { + } + + [Fact] + public void Test_335_17() + { + } + + [Fact] + public void Test_335_18() + { + } + + [Fact] + public void Test_335_19() + { + } + + [Fact] + public void Test_335_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_336 + { + #region PassingTests + [Fact] + public void Test_336_01() + { + } + + [Fact] + public void Test_336_02() + { + } + + [Fact] + public void Test_336_03() + { + } + + [Fact] + public void Test_336_04() + { + } + + [Fact] + public void Test_336_05() + { + } + + [Fact] + public void Test_336_06() + { + } + + [Fact] + public void Test_336_07() + { + } + + [Fact] + public void Test_336_08() + { + } + + [Fact] + public void Test_336_09() + { + } + + [Fact] + public void Test_336_10() + { + } + + [Fact] + public void Test_336_11() + { + } + + [Fact] + public void Test_336_12() + { + } + + [Fact] + public void Test_336_13() + { + } + + [Fact] + public void Test_336_14() + { + } + + [Fact] + public void Test_336_15() + { + } + + [Fact] + public void Test_336_16() + { + } + + [Fact] + public void Test_336_17() + { + } + + [Fact] + public void Test_336_18() + { + } + + [Fact] + public void Test_336_19() + { + } + + [Fact] + public void Test_336_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_337 + { + #region PassingTests + [Fact] + public void Test_337_01() + { + } + + [Fact] + public void Test_337_02() + { + } + + [Fact] + public void Test_337_03() + { + } + + [Fact] + public void Test_337_04() + { + } + + [Fact] + public void Test_337_05() + { + } + + [Fact] + public void Test_337_06() + { + } + + [Fact] + public void Test_337_07() + { + } + + [Fact] + public void Test_337_08() + { + } + + [Fact] + public void Test_337_09() + { + } + + [Fact] + public void Test_337_10() + { + } + + [Fact] + public void Test_337_11() + { + } + + [Fact] + public void Test_337_12() + { + } + + [Fact] + public void Test_337_13() + { + } + + [Fact] + public void Test_337_14() + { + } + + [Fact] + public void Test_337_15() + { + } + + [Fact] + public void Test_337_16() + { + } + + [Fact] + public void Test_337_17() + { + } + + [Fact] + public void Test_337_18() + { + } + + [Fact] + public void Test_337_19() + { + } + + [Fact] + public void Test_337_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_338 + { + #region PassingTests + [Fact] + public void Test_338_01() + { + } + + [Fact] + public void Test_338_02() + { + } + + [Fact] + public void Test_338_03() + { + } + + [Fact] + public void Test_338_04() + { + } + + [Fact] + public void Test_338_05() + { + } + + [Fact] + public void Test_338_06() + { + } + + [Fact] + public void Test_338_07() + { + } + + [Fact] + public void Test_338_08() + { + } + + [Fact] + public void Test_338_09() + { + } + + [Fact] + public void Test_338_10() + { + } + + [Fact] + public void Test_338_11() + { + } + + [Fact] + public void Test_338_12() + { + } + + [Fact] + public void Test_338_13() + { + } + + [Fact] + public void Test_338_14() + { + } + + [Fact] + public void Test_338_15() + { + } + + [Fact] + public void Test_338_16() + { + } + + [Fact] + public void Test_338_17() + { + } + + [Fact] + public void Test_338_18() + { + } + + [Fact] + public void Test_338_19() + { + } + + [Fact] + public void Test_338_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_339 + { + #region PassingTests + [Fact] + public void Test_339_01() + { + } + + [Fact] + public void Test_339_02() + { + } + + [Fact] + public void Test_339_03() + { + } + + [Fact] + public void Test_339_04() + { + } + + [Fact] + public void Test_339_05() + { + } + + [Fact] + public void Test_339_06() + { + } + + [Fact] + public void Test_339_07() + { + } + + [Fact] + public void Test_339_08() + { + } + + [Fact] + public void Test_339_09() + { + } + + [Fact] + public void Test_339_10() + { + } + + [Fact] + public void Test_339_11() + { + } + + [Fact] + public void Test_339_12() + { + } + + [Fact] + public void Test_339_13() + { + } + + [Fact] + public void Test_339_14() + { + } + + [Fact] + public void Test_339_15() + { + } + + [Fact] + public void Test_339_16() + { + } + + [Fact] + public void Test_339_17() + { + } + + [Fact] + public void Test_339_18() + { + } + + [Fact] + public void Test_339_19() + { + } + + [Fact] + public void Test_339_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_340 + { + #region PassingTests + [Fact] + public void Test_340_01() + { + } + + [Fact] + public void Test_340_02() + { + } + + [Fact] + public void Test_340_03() + { + } + + [Fact] + public void Test_340_04() + { + } + + [Fact] + public void Test_340_05() + { + } + + [Fact] + public void Test_340_06() + { + } + + [Fact] + public void Test_340_07() + { + } + + [Fact] + public void Test_340_08() + { + } + + [Fact] + public void Test_340_09() + { + } + + [Fact] + public void Test_340_10() + { + } + + [Fact] + public void Test_340_11() + { + } + + [Fact] + public void Test_340_12() + { + } + + [Fact] + public void Test_340_13() + { + } + + [Fact] + public void Test_340_14() + { + } + + [Fact] + public void Test_340_15() + { + } + + [Fact] + public void Test_340_16() + { + } + + [Fact] + public void Test_340_17() + { + } + + [Fact] + public void Test_340_18() + { + } + + [Fact] + public void Test_340_19() + { + } + + [Fact] + public void Test_340_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_341 + { + #region PassingTests + [Fact] + public void Test_341_01() + { + } + + [Fact] + public void Test_341_02() + { + } + + [Fact] + public void Test_341_03() + { + } + + [Fact] + public void Test_341_04() + { + } + + [Fact] + public void Test_341_05() + { + } + + [Fact] + public void Test_341_06() + { + } + + [Fact] + public void Test_341_07() + { + } + + [Fact] + public void Test_341_08() + { + } + + [Fact] + public void Test_341_09() + { + } + + [Fact] + public void Test_341_10() + { + } + + [Fact] + public void Test_341_11() + { + } + + [Fact] + public void Test_341_12() + { + } + + [Fact] + public void Test_341_13() + { + } + + [Fact] + public void Test_341_14() + { + } + + [Fact] + public void Test_341_15() + { + } + + [Fact] + public void Test_341_16() + { + } + + [Fact] + public void Test_341_17() + { + } + + [Fact] + public void Test_341_18() + { + } + + [Fact] + public void Test_341_19() + { + } + + [Fact] + public void Test_341_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_342 + { + #region PassingTests + [Fact] + public void Test_342_01() + { + } + + [Fact] + public void Test_342_02() + { + } + + [Fact] + public void Test_342_03() + { + } + + [Fact] + public void Test_342_04() + { + } + + [Fact] + public void Test_342_05() + { + } + + [Fact] + public void Test_342_06() + { + } + + [Fact] + public void Test_342_07() + { + } + + [Fact] + public void Test_342_08() + { + } + + [Fact] + public void Test_342_09() + { + } + + [Fact] + public void Test_342_10() + { + } + + [Fact] + public void Test_342_11() + { + } + + [Fact] + public void Test_342_12() + { + } + + [Fact] + public void Test_342_13() + { + } + + [Fact] + public void Test_342_14() + { + } + + [Fact] + public void Test_342_15() + { + } + + [Fact] + public void Test_342_16() + { + } + + [Fact] + public void Test_342_17() + { + } + + [Fact] + public void Test_342_18() + { + } + + [Fact] + public void Test_342_19() + { + } + + [Fact] + public void Test_342_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_343 + { + #region PassingTests + [Fact] + public void Test_343_01() + { + } + + [Fact] + public void Test_343_02() + { + } + + [Fact] + public void Test_343_03() + { + } + + [Fact] + public void Test_343_04() + { + } + + [Fact] + public void Test_343_05() + { + } + + [Fact] + public void Test_343_06() + { + } + + [Fact] + public void Test_343_07() + { + } + + [Fact] + public void Test_343_08() + { + } + + [Fact] + public void Test_343_09() + { + } + + [Fact] + public void Test_343_10() + { + } + + [Fact] + public void Test_343_11() + { + } + + [Fact] + public void Test_343_12() + { + } + + [Fact] + public void Test_343_13() + { + } + + [Fact] + public void Test_343_14() + { + } + + [Fact] + public void Test_343_15() + { + } + + [Fact] + public void Test_343_16() + { + } + + [Fact] + public void Test_343_17() + { + } + + [Fact] + public void Test_343_18() + { + } + + [Fact] + public void Test_343_19() + { + } + + [Fact] + public void Test_343_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_344 + { + #region PassingTests + [Fact] + public void Test_344_01() + { + } + + [Fact] + public void Test_344_02() + { + } + + [Fact] + public void Test_344_03() + { + } + + [Fact] + public void Test_344_04() + { + } + + [Fact] + public void Test_344_05() + { + } + + [Fact] + public void Test_344_06() + { + } + + [Fact] + public void Test_344_07() + { + } + + [Fact] + public void Test_344_08() + { + } + + [Fact] + public void Test_344_09() + { + } + + [Fact] + public void Test_344_10() + { + } + + [Fact] + public void Test_344_11() + { + } + + [Fact] + public void Test_344_12() + { + } + + [Fact] + public void Test_344_13() + { + } + + [Fact] + public void Test_344_14() + { + } + + [Fact] + public void Test_344_15() + { + } + + [Fact] + public void Test_344_16() + { + } + + [Fact] + public void Test_344_17() + { + } + + [Fact] + public void Test_344_18() + { + } + + [Fact] + public void Test_344_19() + { + } + + [Fact] + public void Test_344_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_345 + { + #region PassingTests + [Fact] + public void Test_345_01() + { + } + + [Fact] + public void Test_345_02() + { + } + + [Fact] + public void Test_345_03() + { + } + + [Fact] + public void Test_345_04() + { + } + + [Fact] + public void Test_345_05() + { + } + + [Fact] + public void Test_345_06() + { + } + + [Fact] + public void Test_345_07() + { + } + + [Fact] + public void Test_345_08() + { + } + + [Fact] + public void Test_345_09() + { + } + + [Fact] + public void Test_345_10() + { + } + + [Fact] + public void Test_345_11() + { + } + + [Fact] + public void Test_345_12() + { + } + + [Fact] + public void Test_345_13() + { + } + + [Fact] + public void Test_345_14() + { + } + + [Fact] + public void Test_345_15() + { + } + + [Fact] + public void Test_345_16() + { + } + + [Fact] + public void Test_345_17() + { + } + + [Fact] + public void Test_345_18() + { + } + + [Fact] + public void Test_345_19() + { + } + + [Fact] + public void Test_345_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_346 + { + #region PassingTests + [Fact] + public void Test_346_01() + { + } + + [Fact] + public void Test_346_02() + { + } + + [Fact] + public void Test_346_03() + { + } + + [Fact] + public void Test_346_04() + { + } + + [Fact] + public void Test_346_05() + { + } + + [Fact] + public void Test_346_06() + { + } + + [Fact] + public void Test_346_07() + { + } + + [Fact] + public void Test_346_08() + { + } + + [Fact] + public void Test_346_09() + { + } + + [Fact] + public void Test_346_10() + { + } + + [Fact] + public void Test_346_11() + { + } + + [Fact] + public void Test_346_12() + { + } + + [Fact] + public void Test_346_13() + { + } + + [Fact] + public void Test_346_14() + { + } + + [Fact] + public void Test_346_15() + { + } + + [Fact] + public void Test_346_16() + { + } + + [Fact] + public void Test_346_17() + { + } + + [Fact] + public void Test_346_18() + { + } + + [Fact] + public void Test_346_19() + { + } + + [Fact] + public void Test_346_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_347 + { + #region PassingTests + [Fact] + public void Test_347_01() + { + } + + [Fact] + public void Test_347_02() + { + } + + [Fact] + public void Test_347_03() + { + } + + [Fact] + public void Test_347_04() + { + } + + [Fact] + public void Test_347_05() + { + } + + [Fact] + public void Test_347_06() + { + } + + [Fact] + public void Test_347_07() + { + } + + [Fact] + public void Test_347_08() + { + } + + [Fact] + public void Test_347_09() + { + } + + [Fact] + public void Test_347_10() + { + } + + [Fact] + public void Test_347_11() + { + } + + [Fact] + public void Test_347_12() + { + } + + [Fact] + public void Test_347_13() + { + } + + [Fact] + public void Test_347_14() + { + } + + [Fact] + public void Test_347_15() + { + } + + [Fact] + public void Test_347_16() + { + } + + [Fact] + public void Test_347_17() + { + } + + [Fact] + public void Test_347_18() + { + } + + [Fact] + public void Test_347_19() + { + } + + [Fact] + public void Test_347_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_348 + { + #region PassingTests + [Fact] + public void Test_348_01() + { + } + + [Fact] + public void Test_348_02() + { + } + + [Fact] + public void Test_348_03() + { + } + + [Fact] + public void Test_348_04() + { + } + + [Fact] + public void Test_348_05() + { + } + + [Fact] + public void Test_348_06() + { + } + + [Fact] + public void Test_348_07() + { + } + + [Fact] + public void Test_348_08() + { + } + + [Fact] + public void Test_348_09() + { + } + + [Fact] + public void Test_348_10() + { + } + + [Fact] + public void Test_348_11() + { + } + + [Fact] + public void Test_348_12() + { + } + + [Fact] + public void Test_348_13() + { + } + + [Fact] + public void Test_348_14() + { + } + + [Fact] + public void Test_348_15() + { + } + + [Fact] + public void Test_348_16() + { + } + + [Fact] + public void Test_348_17() + { + } + + [Fact] + public void Test_348_18() + { + } + + [Fact] + public void Test_348_19() + { + } + + [Fact] + public void Test_348_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_349 + { + #region PassingTests + [Fact] + public void Test_349_01() + { + } + + [Fact] + public void Test_349_02() + { + } + + [Fact] + public void Test_349_03() + { + } + + [Fact] + public void Test_349_04() + { + } + + [Fact] + public void Test_349_05() + { + } + + [Fact] + public void Test_349_06() + { + } + + [Fact] + public void Test_349_07() + { + } + + [Fact] + public void Test_349_08() + { + } + + [Fact] + public void Test_349_09() + { + } + + [Fact] + public void Test_349_10() + { + } + + [Fact] + public void Test_349_11() + { + } + + [Fact] + public void Test_349_12() + { + } + + [Fact] + public void Test_349_13() + { + } + + [Fact] + public void Test_349_14() + { + } + + [Fact] + public void Test_349_15() + { + } + + [Fact] + public void Test_349_16() + { + } + + [Fact] + public void Test_349_17() + { + } + + [Fact] + public void Test_349_18() + { + } + + [Fact] + public void Test_349_19() + { + } + + [Fact] + public void Test_349_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_350 + { + #region PassingTests + [Fact] + public void Test_350_01() + { + } + + [Fact] + public void Test_350_02() + { + } + + [Fact] + public void Test_350_03() + { + } + + [Fact] + public void Test_350_04() + { + } + + [Fact] + public void Test_350_05() + { + } + + [Fact] + public void Test_350_06() + { + } + + [Fact] + public void Test_350_07() + { + } + + [Fact] + public void Test_350_08() + { + } + + [Fact] + public void Test_350_09() + { + } + + [Fact] + public void Test_350_10() + { + } + + [Fact] + public void Test_350_11() + { + } + + [Fact] + public void Test_350_12() + { + } + + [Fact] + public void Test_350_13() + { + } + + [Fact] + public void Test_350_14() + { + } + + [Fact] + public void Test_350_15() + { + } + + [Fact] + public void Test_350_16() + { + } + + [Fact] + public void Test_350_17() + { + } + + [Fact] + public void Test_350_18() + { + } + + [Fact] + public void Test_350_19() + { + } + + [Fact] + public void Test_350_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_351 + { + #region PassingTests + [Fact] + public void Test_351_01() + { + } + + [Fact] + public void Test_351_02() + { + } + + [Fact] + public void Test_351_03() + { + } + + [Fact] + public void Test_351_04() + { + } + + [Fact] + public void Test_351_05() + { + } + + [Fact] + public void Test_351_06() + { + } + + [Fact] + public void Test_351_07() + { + } + + [Fact] + public void Test_351_08() + { + } + + [Fact] + public void Test_351_09() + { + } + + [Fact] + public void Test_351_10() + { + } + + [Fact] + public void Test_351_11() + { + } + + [Fact] + public void Test_351_12() + { + } + + [Fact] + public void Test_351_13() + { + } + + [Fact] + public void Test_351_14() + { + } + + [Fact] + public void Test_351_15() + { + } + + [Fact] + public void Test_351_16() + { + } + + [Fact] + public void Test_351_17() + { + } + + [Fact] + public void Test_351_18() + { + } + + [Fact] + public void Test_351_19() + { + } + + [Fact] + public void Test_351_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_352 + { + #region PassingTests + [Fact] + public void Test_352_01() + { + } + + [Fact] + public void Test_352_02() + { + } + + [Fact] + public void Test_352_03() + { + } + + [Fact] + public void Test_352_04() + { + } + + [Fact] + public void Test_352_05() + { + } + + [Fact] + public void Test_352_06() + { + } + + [Fact] + public void Test_352_07() + { + } + + [Fact] + public void Test_352_08() + { + } + + [Fact] + public void Test_352_09() + { + } + + [Fact] + public void Test_352_10() + { + } + + [Fact] + public void Test_352_11() + { + } + + [Fact] + public void Test_352_12() + { + } + + [Fact] + public void Test_352_13() + { + } + + [Fact] + public void Test_352_14() + { + } + + [Fact] + public void Test_352_15() + { + } + + [Fact] + public void Test_352_16() + { + } + + [Fact] + public void Test_352_17() + { + } + + [Fact] + public void Test_352_18() + { + } + + [Fact] + public void Test_352_19() + { + } + + [Fact] + public void Test_352_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_353 + { + #region PassingTests + [Fact] + public void Test_353_01() + { + } + + [Fact] + public void Test_353_02() + { + } + + [Fact] + public void Test_353_03() + { + } + + [Fact] + public void Test_353_04() + { + } + + [Fact] + public void Test_353_05() + { + } + + [Fact] + public void Test_353_06() + { + } + + [Fact] + public void Test_353_07() + { + } + + [Fact] + public void Test_353_08() + { + } + + [Fact] + public void Test_353_09() + { + } + + [Fact] + public void Test_353_10() + { + } + + [Fact] + public void Test_353_11() + { + } + + [Fact] + public void Test_353_12() + { + } + + [Fact] + public void Test_353_13() + { + } + + [Fact] + public void Test_353_14() + { + } + + [Fact] + public void Test_353_15() + { + } + + [Fact] + public void Test_353_16() + { + } + + [Fact] + public void Test_353_17() + { + } + + [Fact] + public void Test_353_18() + { + } + + [Fact] + public void Test_353_19() + { + } + + [Fact] + public void Test_353_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_354 + { + #region PassingTests + [Fact] + public void Test_354_01() + { + } + + [Fact] + public void Test_354_02() + { + } + + [Fact] + public void Test_354_03() + { + } + + [Fact] + public void Test_354_04() + { + } + + [Fact] + public void Test_354_05() + { + } + + [Fact] + public void Test_354_06() + { + } + + [Fact] + public void Test_354_07() + { + } + + [Fact] + public void Test_354_08() + { + } + + [Fact] + public void Test_354_09() + { + } + + [Fact] + public void Test_354_10() + { + } + + [Fact] + public void Test_354_11() + { + } + + [Fact] + public void Test_354_12() + { + } + + [Fact] + public void Test_354_13() + { + } + + [Fact] + public void Test_354_14() + { + } + + [Fact] + public void Test_354_15() + { + } + + [Fact] + public void Test_354_16() + { + } + + [Fact] + public void Test_354_17() + { + } + + [Fact] + public void Test_354_18() + { + } + + [Fact] + public void Test_354_19() + { + } + + [Fact] + public void Test_354_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_355 + { + #region PassingTests + [Fact] + public void Test_355_01() + { + } + + [Fact] + public void Test_355_02() + { + } + + [Fact] + public void Test_355_03() + { + } + + [Fact] + public void Test_355_04() + { + } + + [Fact] + public void Test_355_05() + { + } + + [Fact] + public void Test_355_06() + { + } + + [Fact] + public void Test_355_07() + { + } + + [Fact] + public void Test_355_08() + { + } + + [Fact] + public void Test_355_09() + { + } + + [Fact] + public void Test_355_10() + { + } + + [Fact] + public void Test_355_11() + { + } + + [Fact] + public void Test_355_12() + { + } + + [Fact] + public void Test_355_13() + { + } + + [Fact] + public void Test_355_14() + { + } + + [Fact] + public void Test_355_15() + { + } + + [Fact] + public void Test_355_16() + { + } + + [Fact] + public void Test_355_17() + { + } + + [Fact] + public void Test_355_18() + { + } + + [Fact] + public void Test_355_19() + { + } + + [Fact] + public void Test_355_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_356 + { + #region PassingTests + [Fact] + public void Test_356_01() + { + } + + [Fact] + public void Test_356_02() + { + } + + [Fact] + public void Test_356_03() + { + } + + [Fact] + public void Test_356_04() + { + } + + [Fact] + public void Test_356_05() + { + } + + [Fact] + public void Test_356_06() + { + } + + [Fact] + public void Test_356_07() + { + } + + [Fact] + public void Test_356_08() + { + } + + [Fact] + public void Test_356_09() + { + } + + [Fact] + public void Test_356_10() + { + } + + [Fact] + public void Test_356_11() + { + } + + [Fact] + public void Test_356_12() + { + } + + [Fact] + public void Test_356_13() + { + } + + [Fact] + public void Test_356_14() + { + } + + [Fact] + public void Test_356_15() + { + } + + [Fact] + public void Test_356_16() + { + } + + [Fact] + public void Test_356_17() + { + } + + [Fact] + public void Test_356_18() + { + } + + [Fact] + public void Test_356_19() + { + } + + [Fact] + public void Test_356_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_357 + { + #region PassingTests + [Fact] + public void Test_357_01() + { + } + + [Fact] + public void Test_357_02() + { + } + + [Fact] + public void Test_357_03() + { + } + + [Fact] + public void Test_357_04() + { + } + + [Fact] + public void Test_357_05() + { + } + + [Fact] + public void Test_357_06() + { + } + + [Fact] + public void Test_357_07() + { + } + + [Fact] + public void Test_357_08() + { + } + + [Fact] + public void Test_357_09() + { + } + + [Fact] + public void Test_357_10() + { + } + + [Fact] + public void Test_357_11() + { + } + + [Fact] + public void Test_357_12() + { + } + + [Fact] + public void Test_357_13() + { + } + + [Fact] + public void Test_357_14() + { + } + + [Fact] + public void Test_357_15() + { + } + + [Fact] + public void Test_357_16() + { + } + + [Fact] + public void Test_357_17() + { + } + + [Fact] + public void Test_357_18() + { + } + + [Fact] + public void Test_357_19() + { + } + + [Fact] + public void Test_357_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_358 + { + #region PassingTests + [Fact] + public void Test_358_01() + { + } + + [Fact] + public void Test_358_02() + { + } + + [Fact] + public void Test_358_03() + { + } + + [Fact] + public void Test_358_04() + { + } + + [Fact] + public void Test_358_05() + { + } + + [Fact] + public void Test_358_06() + { + } + + [Fact] + public void Test_358_07() + { + } + + [Fact] + public void Test_358_08() + { + } + + [Fact] + public void Test_358_09() + { + } + + [Fact] + public void Test_358_10() + { + } + + [Fact] + public void Test_358_11() + { + } + + [Fact] + public void Test_358_12() + { + } + + [Fact] + public void Test_358_13() + { + } + + [Fact] + public void Test_358_14() + { + } + + [Fact] + public void Test_358_15() + { + } + + [Fact] + public void Test_358_16() + { + } + + [Fact] + public void Test_358_17() + { + } + + [Fact] + public void Test_358_18() + { + } + + [Fact] + public void Test_358_19() + { + } + + [Fact] + public void Test_358_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_359 + { + #region PassingTests + [Fact] + public void Test_359_01() + { + } + + [Fact] + public void Test_359_02() + { + } + + [Fact] + public void Test_359_03() + { + } + + [Fact] + public void Test_359_04() + { + } + + [Fact] + public void Test_359_05() + { + } + + [Fact] + public void Test_359_06() + { + } + + [Fact] + public void Test_359_07() + { + } + + [Fact] + public void Test_359_08() + { + } + + [Fact] + public void Test_359_09() + { + } + + [Fact] + public void Test_359_10() + { + } + + [Fact] + public void Test_359_11() + { + } + + [Fact] + public void Test_359_12() + { + } + + [Fact] + public void Test_359_13() + { + } + + [Fact] + public void Test_359_14() + { + } + + [Fact] + public void Test_359_15() + { + } + + [Fact] + public void Test_359_16() + { + } + + [Fact] + public void Test_359_17() + { + } + + [Fact] + public void Test_359_18() + { + } + + [Fact] + public void Test_359_19() + { + } + + [Fact] + public void Test_359_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_360 + { + #region PassingTests + [Fact] + public void Test_360_01() + { + } + + [Fact] + public void Test_360_02() + { + } + + [Fact] + public void Test_360_03() + { + } + + [Fact] + public void Test_360_04() + { + } + + [Fact] + public void Test_360_05() + { + } + + [Fact] + public void Test_360_06() + { + } + + [Fact] + public void Test_360_07() + { + } + + [Fact] + public void Test_360_08() + { + } + + [Fact] + public void Test_360_09() + { + } + + [Fact] + public void Test_360_10() + { + } + + [Fact] + public void Test_360_11() + { + } + + [Fact] + public void Test_360_12() + { + } + + [Fact] + public void Test_360_13() + { + } + + [Fact] + public void Test_360_14() + { + } + + [Fact] + public void Test_360_15() + { + } + + [Fact] + public void Test_360_16() + { + } + + [Fact] + public void Test_360_17() + { + } + + [Fact] + public void Test_360_18() + { + } + + [Fact] + public void Test_360_19() + { + } + + [Fact] + public void Test_360_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_361 + { + #region PassingTests + [Fact] + public void Test_361_01() + { + } + + [Fact] + public void Test_361_02() + { + } + + [Fact] + public void Test_361_03() + { + } + + [Fact] + public void Test_361_04() + { + } + + [Fact] + public void Test_361_05() + { + } + + [Fact] + public void Test_361_06() + { + } + + [Fact] + public void Test_361_07() + { + } + + [Fact] + public void Test_361_08() + { + } + + [Fact] + public void Test_361_09() + { + } + + [Fact] + public void Test_361_10() + { + } + + [Fact] + public void Test_361_11() + { + } + + [Fact] + public void Test_361_12() + { + } + + [Fact] + public void Test_361_13() + { + } + + [Fact] + public void Test_361_14() + { + } + + [Fact] + public void Test_361_15() + { + } + + [Fact] + public void Test_361_16() + { + } + + [Fact] + public void Test_361_17() + { + } + + [Fact] + public void Test_361_18() + { + } + + [Fact] + public void Test_361_19() + { + } + + [Fact] + public void Test_361_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_362 + { + #region PassingTests + [Fact] + public void Test_362_01() + { + } + + [Fact] + public void Test_362_02() + { + } + + [Fact] + public void Test_362_03() + { + } + + [Fact] + public void Test_362_04() + { + } + + [Fact] + public void Test_362_05() + { + } + + [Fact] + public void Test_362_06() + { + } + + [Fact] + public void Test_362_07() + { + } + + [Fact] + public void Test_362_08() + { + } + + [Fact] + public void Test_362_09() + { + } + + [Fact] + public void Test_362_10() + { + } + + [Fact] + public void Test_362_11() + { + } + + [Fact] + public void Test_362_12() + { + } + + [Fact] + public void Test_362_13() + { + } + + [Fact] + public void Test_362_14() + { + } + + [Fact] + public void Test_362_15() + { + } + + [Fact] + public void Test_362_16() + { + } + + [Fact] + public void Test_362_17() + { + } + + [Fact] + public void Test_362_18() + { + } + + [Fact] + public void Test_362_19() + { + } + + [Fact] + public void Test_362_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_363 + { + #region PassingTests + [Fact] + public void Test_363_01() + { + } + + [Fact] + public void Test_363_02() + { + } + + [Fact] + public void Test_363_03() + { + } + + [Fact] + public void Test_363_04() + { + } + + [Fact] + public void Test_363_05() + { + } + + [Fact] + public void Test_363_06() + { + } + + [Fact] + public void Test_363_07() + { + } + + [Fact] + public void Test_363_08() + { + } + + [Fact] + public void Test_363_09() + { + } + + [Fact] + public void Test_363_10() + { + } + + [Fact] + public void Test_363_11() + { + } + + [Fact] + public void Test_363_12() + { + } + + [Fact] + public void Test_363_13() + { + } + + [Fact] + public void Test_363_14() + { + } + + [Fact] + public void Test_363_15() + { + } + + [Fact] + public void Test_363_16() + { + } + + [Fact] + public void Test_363_17() + { + } + + [Fact] + public void Test_363_18() + { + } + + [Fact] + public void Test_363_19() + { + } + + [Fact] + public void Test_363_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_364 + { + #region PassingTests + [Fact] + public void Test_364_01() + { + } + + [Fact] + public void Test_364_02() + { + } + + [Fact] + public void Test_364_03() + { + } + + [Fact] + public void Test_364_04() + { + } + + [Fact] + public void Test_364_05() + { + } + + [Fact] + public void Test_364_06() + { + } + + [Fact] + public void Test_364_07() + { + } + + [Fact] + public void Test_364_08() + { + } + + [Fact] + public void Test_364_09() + { + } + + [Fact] + public void Test_364_10() + { + } + + [Fact] + public void Test_364_11() + { + } + + [Fact] + public void Test_364_12() + { + } + + [Fact] + public void Test_364_13() + { + } + + [Fact] + public void Test_364_14() + { + } + + [Fact] + public void Test_364_15() + { + } + + [Fact] + public void Test_364_16() + { + } + + [Fact] + public void Test_364_17() + { + } + + [Fact] + public void Test_364_18() + { + } + + [Fact] + public void Test_364_19() + { + } + + [Fact] + public void Test_364_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_365 + { + #region PassingTests + [Fact] + public void Test_365_01() + { + } + + [Fact] + public void Test_365_02() + { + } + + [Fact] + public void Test_365_03() + { + } + + [Fact] + public void Test_365_04() + { + } + + [Fact] + public void Test_365_05() + { + } + + [Fact] + public void Test_365_06() + { + } + + [Fact] + public void Test_365_07() + { + } + + [Fact] + public void Test_365_08() + { + } + + [Fact] + public void Test_365_09() + { + } + + [Fact] + public void Test_365_10() + { + } + + [Fact] + public void Test_365_11() + { + } + + [Fact] + public void Test_365_12() + { + } + + [Fact] + public void Test_365_13() + { + } + + [Fact] + public void Test_365_14() + { + } + + [Fact] + public void Test_365_15() + { + } + + [Fact] + public void Test_365_16() + { + } + + [Fact] + public void Test_365_17() + { + } + + [Fact] + public void Test_365_18() + { + } + + [Fact] + public void Test_365_19() + { + } + + [Fact] + public void Test_365_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_366 + { + #region PassingTests + [Fact] + public void Test_366_01() + { + } + + [Fact] + public void Test_366_02() + { + } + + [Fact] + public void Test_366_03() + { + } + + [Fact] + public void Test_366_04() + { + } + + [Fact] + public void Test_366_05() + { + } + + [Fact] + public void Test_366_06() + { + } + + [Fact] + public void Test_366_07() + { + } + + [Fact] + public void Test_366_08() + { + } + + [Fact] + public void Test_366_09() + { + } + + [Fact] + public void Test_366_10() + { + } + + [Fact] + public void Test_366_11() + { + } + + [Fact] + public void Test_366_12() + { + } + + [Fact] + public void Test_366_13() + { + } + + [Fact] + public void Test_366_14() + { + } + + [Fact] + public void Test_366_15() + { + } + + [Fact] + public void Test_366_16() + { + } + + [Fact] + public void Test_366_17() + { + } + + [Fact] + public void Test_366_18() + { + } + + [Fact] + public void Test_366_19() + { + } + + [Fact] + public void Test_366_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_367 + { + #region PassingTests + [Fact] + public void Test_367_01() + { + } + + [Fact] + public void Test_367_02() + { + } + + [Fact] + public void Test_367_03() + { + } + + [Fact] + public void Test_367_04() + { + } + + [Fact] + public void Test_367_05() + { + } + + [Fact] + public void Test_367_06() + { + } + + [Fact] + public void Test_367_07() + { + } + + [Fact] + public void Test_367_08() + { + } + + [Fact] + public void Test_367_09() + { + } + + [Fact] + public void Test_367_10() + { + } + + [Fact] + public void Test_367_11() + { + } + + [Fact] + public void Test_367_12() + { + } + + [Fact] + public void Test_367_13() + { + } + + [Fact] + public void Test_367_14() + { + } + + [Fact] + public void Test_367_15() + { + } + + [Fact] + public void Test_367_16() + { + } + + [Fact] + public void Test_367_17() + { + } + + [Fact] + public void Test_367_18() + { + } + + [Fact] + public void Test_367_19() + { + } + + [Fact] + public void Test_367_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_368 + { + #region PassingTests + [Fact] + public void Test_368_01() + { + } + + [Fact] + public void Test_368_02() + { + } + + [Fact] + public void Test_368_03() + { + } + + [Fact] + public void Test_368_04() + { + } + + [Fact] + public void Test_368_05() + { + } + + [Fact] + public void Test_368_06() + { + } + + [Fact] + public void Test_368_07() + { + } + + [Fact] + public void Test_368_08() + { + } + + [Fact] + public void Test_368_09() + { + } + + [Fact] + public void Test_368_10() + { + } + + [Fact] + public void Test_368_11() + { + } + + [Fact] + public void Test_368_12() + { + } + + [Fact] + public void Test_368_13() + { + } + + [Fact] + public void Test_368_14() + { + } + + [Fact] + public void Test_368_15() + { + } + + [Fact] + public void Test_368_16() + { + } + + [Fact] + public void Test_368_17() + { + } + + [Fact] + public void Test_368_18() + { + } + + [Fact] + public void Test_368_19() + { + } + + [Fact] + public void Test_368_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_369 + { + #region PassingTests + [Fact] + public void Test_369_01() + { + } + + [Fact] + public void Test_369_02() + { + } + + [Fact] + public void Test_369_03() + { + } + + [Fact] + public void Test_369_04() + { + } + + [Fact] + public void Test_369_05() + { + } + + [Fact] + public void Test_369_06() + { + } + + [Fact] + public void Test_369_07() + { + } + + [Fact] + public void Test_369_08() + { + } + + [Fact] + public void Test_369_09() + { + } + + [Fact] + public void Test_369_10() + { + } + + [Fact] + public void Test_369_11() + { + } + + [Fact] + public void Test_369_12() + { + } + + [Fact] + public void Test_369_13() + { + } + + [Fact] + public void Test_369_14() + { + } + + [Fact] + public void Test_369_15() + { + } + + [Fact] + public void Test_369_16() + { + } + + [Fact] + public void Test_369_17() + { + } + + [Fact] + public void Test_369_18() + { + } + + [Fact] + public void Test_369_19() + { + } + + [Fact] + public void Test_369_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_370 + { + #region PassingTests + [Fact] + public void Test_370_01() + { + } + + [Fact] + public void Test_370_02() + { + } + + [Fact] + public void Test_370_03() + { + } + + [Fact] + public void Test_370_04() + { + } + + [Fact] + public void Test_370_05() + { + } + + [Fact] + public void Test_370_06() + { + } + + [Fact] + public void Test_370_07() + { + } + + [Fact] + public void Test_370_08() + { + } + + [Fact] + public void Test_370_09() + { + } + + [Fact] + public void Test_370_10() + { + } + + [Fact] + public void Test_370_11() + { + } + + [Fact] + public void Test_370_12() + { + } + + [Fact] + public void Test_370_13() + { + } + + [Fact] + public void Test_370_14() + { + } + + [Fact] + public void Test_370_15() + { + } + + [Fact] + public void Test_370_16() + { + } + + [Fact] + public void Test_370_17() + { + } + + [Fact] + public void Test_370_18() + { + } + + [Fact] + public void Test_370_19() + { + } + + [Fact] + public void Test_370_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_371 + { + #region PassingTests + [Fact] + public void Test_371_01() + { + } + + [Fact] + public void Test_371_02() + { + } + + [Fact] + public void Test_371_03() + { + } + + [Fact] + public void Test_371_04() + { + } + + [Fact] + public void Test_371_05() + { + } + + [Fact] + public void Test_371_06() + { + } + + [Fact] + public void Test_371_07() + { + } + + [Fact] + public void Test_371_08() + { + } + + [Fact] + public void Test_371_09() + { + } + + [Fact] + public void Test_371_10() + { + } + + [Fact] + public void Test_371_11() + { + } + + [Fact] + public void Test_371_12() + { + } + + [Fact] + public void Test_371_13() + { + } + + [Fact] + public void Test_371_14() + { + } + + [Fact] + public void Test_371_15() + { + } + + [Fact] + public void Test_371_16() + { + } + + [Fact] + public void Test_371_17() + { + } + + [Fact] + public void Test_371_18() + { + } + + [Fact] + public void Test_371_19() + { + } + + [Fact] + public void Test_371_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_372 + { + #region PassingTests + [Fact] + public void Test_372_01() + { + } + + [Fact] + public void Test_372_02() + { + } + + [Fact] + public void Test_372_03() + { + } + + [Fact] + public void Test_372_04() + { + } + + [Fact] + public void Test_372_05() + { + } + + [Fact] + public void Test_372_06() + { + } + + [Fact] + public void Test_372_07() + { + } + + [Fact] + public void Test_372_08() + { + } + + [Fact] + public void Test_372_09() + { + } + + [Fact] + public void Test_372_10() + { + } + + [Fact] + public void Test_372_11() + { + } + + [Fact] + public void Test_372_12() + { + } + + [Fact] + public void Test_372_13() + { + } + + [Fact] + public void Test_372_14() + { + } + + [Fact] + public void Test_372_15() + { + } + + [Fact] + public void Test_372_16() + { + } + + [Fact] + public void Test_372_17() + { + } + + [Fact] + public void Test_372_18() + { + } + + [Fact] + public void Test_372_19() + { + } + + [Fact] + public void Test_372_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_373 + { + #region PassingTests + [Fact] + public void Test_373_01() + { + } + + [Fact] + public void Test_373_02() + { + } + + [Fact] + public void Test_373_03() + { + } + + [Fact] + public void Test_373_04() + { + } + + [Fact] + public void Test_373_05() + { + } + + [Fact] + public void Test_373_06() + { + } + + [Fact] + public void Test_373_07() + { + } + + [Fact] + public void Test_373_08() + { + } + + [Fact] + public void Test_373_09() + { + } + + [Fact] + public void Test_373_10() + { + } + + [Fact] + public void Test_373_11() + { + } + + [Fact] + public void Test_373_12() + { + } + + [Fact] + public void Test_373_13() + { + } + + [Fact] + public void Test_373_14() + { + } + + [Fact] + public void Test_373_15() + { + } + + [Fact] + public void Test_373_16() + { + } + + [Fact] + public void Test_373_17() + { + } + + [Fact] + public void Test_373_18() + { + } + + [Fact] + public void Test_373_19() + { + } + + [Fact] + public void Test_373_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_374 + { + #region PassingTests + [Fact] + public void Test_374_01() + { + } + + [Fact] + public void Test_374_02() + { + } + + [Fact] + public void Test_374_03() + { + } + + [Fact] + public void Test_374_04() + { + } + + [Fact] + public void Test_374_05() + { + } + + [Fact] + public void Test_374_06() + { + } + + [Fact] + public void Test_374_07() + { + } + + [Fact] + public void Test_374_08() + { + } + + [Fact] + public void Test_374_09() + { + } + + [Fact] + public void Test_374_10() + { + } + + [Fact] + public void Test_374_11() + { + } + + [Fact] + public void Test_374_12() + { + } + + [Fact] + public void Test_374_13() + { + } + + [Fact] + public void Test_374_14() + { + } + + [Fact] + public void Test_374_15() + { + } + + [Fact] + public void Test_374_16() + { + } + + [Fact] + public void Test_374_17() + { + } + + [Fact] + public void Test_374_18() + { + } + + [Fact] + public void Test_374_19() + { + } + + [Fact] + public void Test_374_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_375 + { + #region PassingTests + [Fact] + public void Test_375_01() + { + } + + [Fact] + public void Test_375_02() + { + } + + [Fact] + public void Test_375_03() + { + } + + [Fact] + public void Test_375_04() + { + } + + [Fact] + public void Test_375_05() + { + } + + [Fact] + public void Test_375_06() + { + } + + [Fact] + public void Test_375_07() + { + } + + [Fact] + public void Test_375_08() + { + } + + [Fact] + public void Test_375_09() + { + } + + [Fact] + public void Test_375_10() + { + } + + [Fact] + public void Test_375_11() + { + } + + [Fact] + public void Test_375_12() + { + } + + [Fact] + public void Test_375_13() + { + } + + [Fact] + public void Test_375_14() + { + } + + [Fact] + public void Test_375_15() + { + } + + [Fact] + public void Test_375_16() + { + } + + [Fact] + public void Test_375_17() + { + } + + [Fact] + public void Test_375_18() + { + } + + [Fact] + public void Test_375_19() + { + } + + [Fact] + public void Test_375_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_376 + { + #region PassingTests + [Fact] + public void Test_376_01() + { + } + + [Fact] + public void Test_376_02() + { + } + + [Fact] + public void Test_376_03() + { + } + + [Fact] + public void Test_376_04() + { + } + + [Fact] + public void Test_376_05() + { + } + + [Fact] + public void Test_376_06() + { + } + + [Fact] + public void Test_376_07() + { + } + + [Fact] + public void Test_376_08() + { + } + + [Fact] + public void Test_376_09() + { + } + + [Fact] + public void Test_376_10() + { + } + + [Fact] + public void Test_376_11() + { + } + + [Fact] + public void Test_376_12() + { + } + + [Fact] + public void Test_376_13() + { + } + + [Fact] + public void Test_376_14() + { + } + + [Fact] + public void Test_376_15() + { + } + + [Fact] + public void Test_376_16() + { + } + + [Fact] + public void Test_376_17() + { + } + + [Fact] + public void Test_376_18() + { + } + + [Fact] + public void Test_376_19() + { + } + + [Fact] + public void Test_376_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_377 + { + #region PassingTests + [Fact] + public void Test_377_01() + { + } + + [Fact] + public void Test_377_02() + { + } + + [Fact] + public void Test_377_03() + { + } + + [Fact] + public void Test_377_04() + { + } + + [Fact] + public void Test_377_05() + { + } + + [Fact] + public void Test_377_06() + { + } + + [Fact] + public void Test_377_07() + { + } + + [Fact] + public void Test_377_08() + { + } + + [Fact] + public void Test_377_09() + { + } + + [Fact] + public void Test_377_10() + { + } + + [Fact] + public void Test_377_11() + { + } + + [Fact] + public void Test_377_12() + { + } + + [Fact] + public void Test_377_13() + { + } + + [Fact] + public void Test_377_14() + { + } + + [Fact] + public void Test_377_15() + { + } + + [Fact] + public void Test_377_16() + { + } + + [Fact] + public void Test_377_17() + { + } + + [Fact] + public void Test_377_18() + { + } + + [Fact] + public void Test_377_19() + { + } + + [Fact] + public void Test_377_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_378 + { + #region PassingTests + [Fact] + public void Test_378_01() + { + } + + [Fact] + public void Test_378_02() + { + } + + [Fact] + public void Test_378_03() + { + } + + [Fact] + public void Test_378_04() + { + } + + [Fact] + public void Test_378_05() + { + } + + [Fact] + public void Test_378_06() + { + } + + [Fact] + public void Test_378_07() + { + } + + [Fact] + public void Test_378_08() + { + } + + [Fact] + public void Test_378_09() + { + } + + [Fact] + public void Test_378_10() + { + } + + [Fact] + public void Test_378_11() + { + } + + [Fact] + public void Test_378_12() + { + } + + [Fact] + public void Test_378_13() + { + } + + [Fact] + public void Test_378_14() + { + } + + [Fact] + public void Test_378_15() + { + } + + [Fact] + public void Test_378_16() + { + } + + [Fact] + public void Test_378_17() + { + } + + [Fact] + public void Test_378_18() + { + } + + [Fact] + public void Test_378_19() + { + } + + [Fact] + public void Test_378_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_379 + { + #region PassingTests + [Fact] + public void Test_379_01() + { + } + + [Fact] + public void Test_379_02() + { + } + + [Fact] + public void Test_379_03() + { + } + + [Fact] + public void Test_379_04() + { + } + + [Fact] + public void Test_379_05() + { + } + + [Fact] + public void Test_379_06() + { + } + + [Fact] + public void Test_379_07() + { + } + + [Fact] + public void Test_379_08() + { + } + + [Fact] + public void Test_379_09() + { + } + + [Fact] + public void Test_379_10() + { + } + + [Fact] + public void Test_379_11() + { + } + + [Fact] + public void Test_379_12() + { + } + + [Fact] + public void Test_379_13() + { + } + + [Fact] + public void Test_379_14() + { + } + + [Fact] + public void Test_379_15() + { + } + + [Fact] + public void Test_379_16() + { + } + + [Fact] + public void Test_379_17() + { + } + + [Fact] + public void Test_379_18() + { + } + + [Fact] + public void Test_379_19() + { + } + + [Fact] + public void Test_379_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_380 + { + #region PassingTests + [Fact] + public void Test_380_01() + { + } + + [Fact] + public void Test_380_02() + { + } + + [Fact] + public void Test_380_03() + { + } + + [Fact] + public void Test_380_04() + { + } + + [Fact] + public void Test_380_05() + { + } + + [Fact] + public void Test_380_06() + { + } + + [Fact] + public void Test_380_07() + { + } + + [Fact] + public void Test_380_08() + { + } + + [Fact] + public void Test_380_09() + { + } + + [Fact] + public void Test_380_10() + { + } + + [Fact] + public void Test_380_11() + { + } + + [Fact] + public void Test_380_12() + { + } + + [Fact] + public void Test_380_13() + { + } + + [Fact] + public void Test_380_14() + { + } + + [Fact] + public void Test_380_15() + { + } + + [Fact] + public void Test_380_16() + { + } + + [Fact] + public void Test_380_17() + { + } + + [Fact] + public void Test_380_18() + { + } + + [Fact] + public void Test_380_19() + { + } + + [Fact] + public void Test_380_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_381 + { + #region PassingTests + [Fact] + public void Test_381_01() + { + } + + [Fact] + public void Test_381_02() + { + } + + [Fact] + public void Test_381_03() + { + } + + [Fact] + public void Test_381_04() + { + } + + [Fact] + public void Test_381_05() + { + } + + [Fact] + public void Test_381_06() + { + } + + [Fact] + public void Test_381_07() + { + } + + [Fact] + public void Test_381_08() + { + } + + [Fact] + public void Test_381_09() + { + } + + [Fact] + public void Test_381_10() + { + } + + [Fact] + public void Test_381_11() + { + } + + [Fact] + public void Test_381_12() + { + } + + [Fact] + public void Test_381_13() + { + } + + [Fact] + public void Test_381_14() + { + } + + [Fact] + public void Test_381_15() + { + } + + [Fact] + public void Test_381_16() + { + } + + [Fact] + public void Test_381_17() + { + } + + [Fact] + public void Test_381_18() + { + } + + [Fact] + public void Test_381_19() + { + } + + [Fact] + public void Test_381_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_382 + { + #region PassingTests + [Fact] + public void Test_382_01() + { + } + + [Fact] + public void Test_382_02() + { + } + + [Fact] + public void Test_382_03() + { + } + + [Fact] + public void Test_382_04() + { + } + + [Fact] + public void Test_382_05() + { + } + + [Fact] + public void Test_382_06() + { + } + + [Fact] + public void Test_382_07() + { + } + + [Fact] + public void Test_382_08() + { + } + + [Fact] + public void Test_382_09() + { + } + + [Fact] + public void Test_382_10() + { + } + + [Fact] + public void Test_382_11() + { + } + + [Fact] + public void Test_382_12() + { + } + + [Fact] + public void Test_382_13() + { + } + + [Fact] + public void Test_382_14() + { + } + + [Fact] + public void Test_382_15() + { + } + + [Fact] + public void Test_382_16() + { + } + + [Fact] + public void Test_382_17() + { + } + + [Fact] + public void Test_382_18() + { + } + + [Fact] + public void Test_382_19() + { + } + + [Fact] + public void Test_382_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_383 + { + #region PassingTests + [Fact] + public void Test_383_01() + { + } + + [Fact] + public void Test_383_02() + { + } + + [Fact] + public void Test_383_03() + { + } + + [Fact] + public void Test_383_04() + { + } + + [Fact] + public void Test_383_05() + { + } + + [Fact] + public void Test_383_06() + { + } + + [Fact] + public void Test_383_07() + { + } + + [Fact] + public void Test_383_08() + { + } + + [Fact] + public void Test_383_09() + { + } + + [Fact] + public void Test_383_10() + { + } + + [Fact] + public void Test_383_11() + { + } + + [Fact] + public void Test_383_12() + { + } + + [Fact] + public void Test_383_13() + { + } + + [Fact] + public void Test_383_14() + { + } + + [Fact] + public void Test_383_15() + { + } + + [Fact] + public void Test_383_16() + { + } + + [Fact] + public void Test_383_17() + { + } + + [Fact] + public void Test_383_18() + { + } + + [Fact] + public void Test_383_19() + { + } + + [Fact] + public void Test_383_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_384 + { + #region PassingTests + [Fact] + public void Test_384_01() + { + } + + [Fact] + public void Test_384_02() + { + } + + [Fact] + public void Test_384_03() + { + } + + [Fact] + public void Test_384_04() + { + } + + [Fact] + public void Test_384_05() + { + } + + [Fact] + public void Test_384_06() + { + } + + [Fact] + public void Test_384_07() + { + } + + [Fact] + public void Test_384_08() + { + } + + [Fact] + public void Test_384_09() + { + } + + [Fact] + public void Test_384_10() + { + } + + [Fact] + public void Test_384_11() + { + } + + [Fact] + public void Test_384_12() + { + } + + [Fact] + public void Test_384_13() + { + } + + [Fact] + public void Test_384_14() + { + } + + [Fact] + public void Test_384_15() + { + } + + [Fact] + public void Test_384_16() + { + } + + [Fact] + public void Test_384_17() + { + } + + [Fact] + public void Test_384_18() + { + } + + [Fact] + public void Test_384_19() + { + } + + [Fact] + public void Test_384_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_385 + { + #region PassingTests + [Fact] + public void Test_385_01() + { + } + + [Fact] + public void Test_385_02() + { + } + + [Fact] + public void Test_385_03() + { + } + + [Fact] + public void Test_385_04() + { + } + + [Fact] + public void Test_385_05() + { + } + + [Fact] + public void Test_385_06() + { + } + + [Fact] + public void Test_385_07() + { + } + + [Fact] + public void Test_385_08() + { + } + + [Fact] + public void Test_385_09() + { + } + + [Fact] + public void Test_385_10() + { + } + + [Fact] + public void Test_385_11() + { + } + + [Fact] + public void Test_385_12() + { + } + + [Fact] + public void Test_385_13() + { + } + + [Fact] + public void Test_385_14() + { + } + + [Fact] + public void Test_385_15() + { + } + + [Fact] + public void Test_385_16() + { + } + + [Fact] + public void Test_385_17() + { + } + + [Fact] + public void Test_385_18() + { + } + + [Fact] + public void Test_385_19() + { + } + + [Fact] + public void Test_385_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_386 + { + #region PassingTests + [Fact] + public void Test_386_01() + { + } + + [Fact] + public void Test_386_02() + { + } + + [Fact] + public void Test_386_03() + { + } + + [Fact] + public void Test_386_04() + { + } + + [Fact] + public void Test_386_05() + { + } + + [Fact] + public void Test_386_06() + { + } + + [Fact] + public void Test_386_07() + { + } + + [Fact] + public void Test_386_08() + { + } + + [Fact] + public void Test_386_09() + { + } + + [Fact] + public void Test_386_10() + { + } + + [Fact] + public void Test_386_11() + { + } + + [Fact] + public void Test_386_12() + { + } + + [Fact] + public void Test_386_13() + { + } + + [Fact] + public void Test_386_14() + { + } + + [Fact] + public void Test_386_15() + { + } + + [Fact] + public void Test_386_16() + { + } + + [Fact] + public void Test_386_17() + { + } + + [Fact] + public void Test_386_18() + { + } + + [Fact] + public void Test_386_19() + { + } + + [Fact] + public void Test_386_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_387 + { + #region PassingTests + [Fact] + public void Test_387_01() + { + } + + [Fact] + public void Test_387_02() + { + } + + [Fact] + public void Test_387_03() + { + } + + [Fact] + public void Test_387_04() + { + } + + [Fact] + public void Test_387_05() + { + } + + [Fact] + public void Test_387_06() + { + } + + [Fact] + public void Test_387_07() + { + } + + [Fact] + public void Test_387_08() + { + } + + [Fact] + public void Test_387_09() + { + } + + [Fact] + public void Test_387_10() + { + } + + [Fact] + public void Test_387_11() + { + } + + [Fact] + public void Test_387_12() + { + } + + [Fact] + public void Test_387_13() + { + } + + [Fact] + public void Test_387_14() + { + } + + [Fact] + public void Test_387_15() + { + } + + [Fact] + public void Test_387_16() + { + } + + [Fact] + public void Test_387_17() + { + } + + [Fact] + public void Test_387_18() + { + } + + [Fact] + public void Test_387_19() + { + } + + [Fact] + public void Test_387_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_388 + { + #region PassingTests + [Fact] + public void Test_388_01() + { + } + + [Fact] + public void Test_388_02() + { + } + + [Fact] + public void Test_388_03() + { + } + + [Fact] + public void Test_388_04() + { + } + + [Fact] + public void Test_388_05() + { + } + + [Fact] + public void Test_388_06() + { + } + + [Fact] + public void Test_388_07() + { + } + + [Fact] + public void Test_388_08() + { + } + + [Fact] + public void Test_388_09() + { + } + + [Fact] + public void Test_388_10() + { + } + + [Fact] + public void Test_388_11() + { + } + + [Fact] + public void Test_388_12() + { + } + + [Fact] + public void Test_388_13() + { + } + + [Fact] + public void Test_388_14() + { + } + + [Fact] + public void Test_388_15() + { + } + + [Fact] + public void Test_388_16() + { + } + + [Fact] + public void Test_388_17() + { + } + + [Fact] + public void Test_388_18() + { + } + + [Fact] + public void Test_388_19() + { + } + + [Fact] + public void Test_388_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_389 + { + #region PassingTests + [Fact] + public void Test_389_01() + { + } + + [Fact] + public void Test_389_02() + { + } + + [Fact] + public void Test_389_03() + { + } + + [Fact] + public void Test_389_04() + { + } + + [Fact] + public void Test_389_05() + { + } + + [Fact] + public void Test_389_06() + { + } + + [Fact] + public void Test_389_07() + { + } + + [Fact] + public void Test_389_08() + { + } + + [Fact] + public void Test_389_09() + { + } + + [Fact] + public void Test_389_10() + { + } + + [Fact] + public void Test_389_11() + { + } + + [Fact] + public void Test_389_12() + { + } + + [Fact] + public void Test_389_13() + { + } + + [Fact] + public void Test_389_14() + { + } + + [Fact] + public void Test_389_15() + { + } + + [Fact] + public void Test_389_16() + { + } + + [Fact] + public void Test_389_17() + { + } + + [Fact] + public void Test_389_18() + { + } + + [Fact] + public void Test_389_19() + { + } + + [Fact] + public void Test_389_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_390 + { + #region PassingTests + [Fact] + public void Test_390_01() + { + } + + [Fact] + public void Test_390_02() + { + } + + [Fact] + public void Test_390_03() + { + } + + [Fact] + public void Test_390_04() + { + } + + [Fact] + public void Test_390_05() + { + } + + [Fact] + public void Test_390_06() + { + } + + [Fact] + public void Test_390_07() + { + } + + [Fact] + public void Test_390_08() + { + } + + [Fact] + public void Test_390_09() + { + } + + [Fact] + public void Test_390_10() + { + } + + [Fact] + public void Test_390_11() + { + } + + [Fact] + public void Test_390_12() + { + } + + [Fact] + public void Test_390_13() + { + } + + [Fact] + public void Test_390_14() + { + } + + [Fact] + public void Test_390_15() + { + } + + [Fact] + public void Test_390_16() + { + } + + [Fact] + public void Test_390_17() + { + } + + [Fact] + public void Test_390_18() + { + } + + [Fact] + public void Test_390_19() + { + } + + [Fact] + public void Test_390_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_391 + { + #region PassingTests + [Fact] + public void Test_391_01() + { + } + + [Fact] + public void Test_391_02() + { + } + + [Fact] + public void Test_391_03() + { + } + + [Fact] + public void Test_391_04() + { + } + + [Fact] + public void Test_391_05() + { + } + + [Fact] + public void Test_391_06() + { + } + + [Fact] + public void Test_391_07() + { + } + + [Fact] + public void Test_391_08() + { + } + + [Fact] + public void Test_391_09() + { + } + + [Fact] + public void Test_391_10() + { + } + + [Fact] + public void Test_391_11() + { + } + + [Fact] + public void Test_391_12() + { + } + + [Fact] + public void Test_391_13() + { + } + + [Fact] + public void Test_391_14() + { + } + + [Fact] + public void Test_391_15() + { + } + + [Fact] + public void Test_391_16() + { + } + + [Fact] + public void Test_391_17() + { + } + + [Fact] + public void Test_391_18() + { + } + + [Fact] + public void Test_391_19() + { + } + + [Fact] + public void Test_391_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_392 + { + #region PassingTests + [Fact] + public void Test_392_01() + { + } + + [Fact] + public void Test_392_02() + { + } + + [Fact] + public void Test_392_03() + { + } + + [Fact] + public void Test_392_04() + { + } + + [Fact] + public void Test_392_05() + { + } + + [Fact] + public void Test_392_06() + { + } + + [Fact] + public void Test_392_07() + { + } + + [Fact] + public void Test_392_08() + { + } + + [Fact] + public void Test_392_09() + { + } + + [Fact] + public void Test_392_10() + { + } + + [Fact] + public void Test_392_11() + { + } + + [Fact] + public void Test_392_12() + { + } + + [Fact] + public void Test_392_13() + { + } + + [Fact] + public void Test_392_14() + { + } + + [Fact] + public void Test_392_15() + { + } + + [Fact] + public void Test_392_16() + { + } + + [Fact] + public void Test_392_17() + { + } + + [Fact] + public void Test_392_18() + { + } + + [Fact] + public void Test_392_19() + { + } + + [Fact] + public void Test_392_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_393 + { + #region PassingTests + [Fact] + public void Test_393_01() + { + } + + [Fact] + public void Test_393_02() + { + } + + [Fact] + public void Test_393_03() + { + } + + [Fact] + public void Test_393_04() + { + } + + [Fact] + public void Test_393_05() + { + } + + [Fact] + public void Test_393_06() + { + } + + [Fact] + public void Test_393_07() + { + } + + [Fact] + public void Test_393_08() + { + } + + [Fact] + public void Test_393_09() + { + } + + [Fact] + public void Test_393_10() + { + } + + [Fact] + public void Test_393_11() + { + } + + [Fact] + public void Test_393_12() + { + } + + [Fact] + public void Test_393_13() + { + } + + [Fact] + public void Test_393_14() + { + } + + [Fact] + public void Test_393_15() + { + } + + [Fact] + public void Test_393_16() + { + } + + [Fact] + public void Test_393_17() + { + } + + [Fact] + public void Test_393_18() + { + } + + [Fact] + public void Test_393_19() + { + } + + [Fact] + public void Test_393_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_394 + { + #region PassingTests + [Fact] + public void Test_394_01() + { + } + + [Fact] + public void Test_394_02() + { + } + + [Fact] + public void Test_394_03() + { + } + + [Fact] + public void Test_394_04() + { + } + + [Fact] + public void Test_394_05() + { + } + + [Fact] + public void Test_394_06() + { + } + + [Fact] + public void Test_394_07() + { + } + + [Fact] + public void Test_394_08() + { + } + + [Fact] + public void Test_394_09() + { + } + + [Fact] + public void Test_394_10() + { + } + + [Fact] + public void Test_394_11() + { + } + + [Fact] + public void Test_394_12() + { + } + + [Fact] + public void Test_394_13() + { + } + + [Fact] + public void Test_394_14() + { + } + + [Fact] + public void Test_394_15() + { + } + + [Fact] + public void Test_394_16() + { + } + + [Fact] + public void Test_394_17() + { + } + + [Fact] + public void Test_394_18() + { + } + + [Fact] + public void Test_394_19() + { + } + + [Fact] + public void Test_394_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_395 + { + #region PassingTests + [Fact] + public void Test_395_01() + { + } + + [Fact] + public void Test_395_02() + { + } + + [Fact] + public void Test_395_03() + { + } + + [Fact] + public void Test_395_04() + { + } + + [Fact] + public void Test_395_05() + { + } + + [Fact] + public void Test_395_06() + { + } + + [Fact] + public void Test_395_07() + { + } + + [Fact] + public void Test_395_08() + { + } + + [Fact] + public void Test_395_09() + { + } + + [Fact] + public void Test_395_10() + { + } + + [Fact] + public void Test_395_11() + { + } + + [Fact] + public void Test_395_12() + { + } + + [Fact] + public void Test_395_13() + { + } + + [Fact] + public void Test_395_14() + { + } + + [Fact] + public void Test_395_15() + { + } + + [Fact] + public void Test_395_16() + { + } + + [Fact] + public void Test_395_17() + { + } + + [Fact] + public void Test_395_18() + { + } + + [Fact] + public void Test_395_19() + { + } + + [Fact] + public void Test_395_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_396 + { + #region PassingTests + [Fact] + public void Test_396_01() + { + } + + [Fact] + public void Test_396_02() + { + } + + [Fact] + public void Test_396_03() + { + } + + [Fact] + public void Test_396_04() + { + } + + [Fact] + public void Test_396_05() + { + } + + [Fact] + public void Test_396_06() + { + } + + [Fact] + public void Test_396_07() + { + } + + [Fact] + public void Test_396_08() + { + } + + [Fact] + public void Test_396_09() + { + } + + [Fact] + public void Test_396_10() + { + } + + [Fact] + public void Test_396_11() + { + } + + [Fact] + public void Test_396_12() + { + } + + [Fact] + public void Test_396_13() + { + } + + [Fact] + public void Test_396_14() + { + } + + [Fact] + public void Test_396_15() + { + } + + [Fact] + public void Test_396_16() + { + } + + [Fact] + public void Test_396_17() + { + } + + [Fact] + public void Test_396_18() + { + } + + [Fact] + public void Test_396_19() + { + } + + [Fact] + public void Test_396_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_397 + { + #region PassingTests + [Fact] + public void Test_397_01() + { + } + + [Fact] + public void Test_397_02() + { + } + + [Fact] + public void Test_397_03() + { + } + + [Fact] + public void Test_397_04() + { + } + + [Fact] + public void Test_397_05() + { + } + + [Fact] + public void Test_397_06() + { + } + + [Fact] + public void Test_397_07() + { + } + + [Fact] + public void Test_397_08() + { + } + + [Fact] + public void Test_397_09() + { + } + + [Fact] + public void Test_397_10() + { + } + + [Fact] + public void Test_397_11() + { + } + + [Fact] + public void Test_397_12() + { + } + + [Fact] + public void Test_397_13() + { + } + + [Fact] + public void Test_397_14() + { + } + + [Fact] + public void Test_397_15() + { + } + + [Fact] + public void Test_397_16() + { + } + + [Fact] + public void Test_397_17() + { + } + + [Fact] + public void Test_397_18() + { + } + + [Fact] + public void Test_397_19() + { + } + + [Fact] + public void Test_397_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_398 + { + #region PassingTests + [Fact] + public void Test_398_01() + { + } + + [Fact] + public void Test_398_02() + { + } + + [Fact] + public void Test_398_03() + { + } + + [Fact] + public void Test_398_04() + { + } + + [Fact] + public void Test_398_05() + { + } + + [Fact] + public void Test_398_06() + { + } + + [Fact] + public void Test_398_07() + { + } + + [Fact] + public void Test_398_08() + { + } + + [Fact] + public void Test_398_09() + { + } + + [Fact] + public void Test_398_10() + { + } + + [Fact] + public void Test_398_11() + { + } + + [Fact] + public void Test_398_12() + { + } + + [Fact] + public void Test_398_13() + { + } + + [Fact] + public void Test_398_14() + { + } + + [Fact] + public void Test_398_15() + { + } + + [Fact] + public void Test_398_16() + { + } + + [Fact] + public void Test_398_17() + { + } + + [Fact] + public void Test_398_18() + { + } + + [Fact] + public void Test_398_19() + { + } + + [Fact] + public void Test_398_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_399 + { + #region PassingTests + [Fact] + public void Test_399_01() + { + } + + [Fact] + public void Test_399_02() + { + } + + [Fact] + public void Test_399_03() + { + } + + [Fact] + public void Test_399_04() + { + } + + [Fact] + public void Test_399_05() + { + } + + [Fact] + public void Test_399_06() + { + } + + [Fact] + public void Test_399_07() + { + } + + [Fact] + public void Test_399_08() + { + } + + [Fact] + public void Test_399_09() + { + } + + [Fact] + public void Test_399_10() + { + } + + [Fact] + public void Test_399_11() + { + } + + [Fact] + public void Test_399_12() + { + } + + [Fact] + public void Test_399_13() + { + } + + [Fact] + public void Test_399_14() + { + } + + [Fact] + public void Test_399_15() + { + } + + [Fact] + public void Test_399_16() + { + } + + [Fact] + public void Test_399_17() + { + } + + [Fact] + public void Test_399_18() + { + } + + [Fact] + public void Test_399_19() + { + } + + [Fact] + public void Test_399_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_400 + { + #region PassingTests + [Fact] + public void Test_400_01() + { + } + + [Fact] + public void Test_400_02() + { + } + + [Fact] + public void Test_400_03() + { + } + + [Fact] + public void Test_400_04() + { + } + + [Fact] + public void Test_400_05() + { + } + + [Fact] + public void Test_400_06() + { + } + + [Fact] + public void Test_400_07() + { + } + + [Fact] + public void Test_400_08() + { + } + + [Fact] + public void Test_400_09() + { + } + + [Fact] + public void Test_400_10() + { + } + + [Fact] + public void Test_400_11() + { + } + + [Fact] + public void Test_400_12() + { + } + + [Fact] + public void Test_400_13() + { + } + + [Fact] + public void Test_400_14() + { + } + + [Fact] + public void Test_400_15() + { + } + + [Fact] + public void Test_400_16() + { + } + + [Fact] + public void Test_400_17() + { + } + + [Fact] + public void Test_400_18() + { + } + + [Fact] + public void Test_400_19() + { + } + + [Fact] + public void Test_400_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_401 + { + #region PassingTests + [Fact] + public void Test_401_01() + { + } + + [Fact] + public void Test_401_02() + { + } + + [Fact] + public void Test_401_03() + { + } + + [Fact] + public void Test_401_04() + { + } + + [Fact] + public void Test_401_05() + { + } + + [Fact] + public void Test_401_06() + { + } + + [Fact] + public void Test_401_07() + { + } + + [Fact] + public void Test_401_08() + { + } + + [Fact] + public void Test_401_09() + { + } + + [Fact] + public void Test_401_10() + { + } + + [Fact] + public void Test_401_11() + { + } + + [Fact] + public void Test_401_12() + { + } + + [Fact] + public void Test_401_13() + { + } + + [Fact] + public void Test_401_14() + { + } + + [Fact] + public void Test_401_15() + { + } + + [Fact] + public void Test_401_16() + { + } + + [Fact] + public void Test_401_17() + { + } + + [Fact] + public void Test_401_18() + { + } + + [Fact] + public void Test_401_19() + { + } + + [Fact] + public void Test_401_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_402 + { + #region PassingTests + [Fact] + public void Test_402_01() + { + } + + [Fact] + public void Test_402_02() + { + } + + [Fact] + public void Test_402_03() + { + } + + [Fact] + public void Test_402_04() + { + } + + [Fact] + public void Test_402_05() + { + } + + [Fact] + public void Test_402_06() + { + } + + [Fact] + public void Test_402_07() + { + } + + [Fact] + public void Test_402_08() + { + } + + [Fact] + public void Test_402_09() + { + } + + [Fact] + public void Test_402_10() + { + } + + [Fact] + public void Test_402_11() + { + } + + [Fact] + public void Test_402_12() + { + } + + [Fact] + public void Test_402_13() + { + } + + [Fact] + public void Test_402_14() + { + } + + [Fact] + public void Test_402_15() + { + } + + [Fact] + public void Test_402_16() + { + } + + [Fact] + public void Test_402_17() + { + } + + [Fact] + public void Test_402_18() + { + } + + [Fact] + public void Test_402_19() + { + } + + [Fact] + public void Test_402_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_403 + { + #region PassingTests + [Fact] + public void Test_403_01() + { + } + + [Fact] + public void Test_403_02() + { + } + + [Fact] + public void Test_403_03() + { + } + + [Fact] + public void Test_403_04() + { + } + + [Fact] + public void Test_403_05() + { + } + + [Fact] + public void Test_403_06() + { + } + + [Fact] + public void Test_403_07() + { + } + + [Fact] + public void Test_403_08() + { + } + + [Fact] + public void Test_403_09() + { + } + + [Fact] + public void Test_403_10() + { + } + + [Fact] + public void Test_403_11() + { + } + + [Fact] + public void Test_403_12() + { + } + + [Fact] + public void Test_403_13() + { + } + + [Fact] + public void Test_403_14() + { + } + + [Fact] + public void Test_403_15() + { + } + + [Fact] + public void Test_403_16() + { + } + + [Fact] + public void Test_403_17() + { + } + + [Fact] + public void Test_403_18() + { + } + + [Fact] + public void Test_403_19() + { + } + + [Fact] + public void Test_403_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_404 + { + #region PassingTests + [Fact] + public void Test_404_01() + { + } + + [Fact] + public void Test_404_02() + { + } + + [Fact] + public void Test_404_03() + { + } + + [Fact] + public void Test_404_04() + { + } + + [Fact] + public void Test_404_05() + { + } + + [Fact] + public void Test_404_06() + { + } + + [Fact] + public void Test_404_07() + { + } + + [Fact] + public void Test_404_08() + { + } + + [Fact] + public void Test_404_09() + { + } + + [Fact] + public void Test_404_10() + { + } + + [Fact] + public void Test_404_11() + { + } + + [Fact] + public void Test_404_12() + { + } + + [Fact] + public void Test_404_13() + { + } + + [Fact] + public void Test_404_14() + { + } + + [Fact] + public void Test_404_15() + { + } + + [Fact] + public void Test_404_16() + { + } + + [Fact] + public void Test_404_17() + { + } + + [Fact] + public void Test_404_18() + { + } + + [Fact] + public void Test_404_19() + { + } + + [Fact] + public void Test_404_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_405 + { + #region PassingTests + [Fact] + public void Test_405_01() + { + } + + [Fact] + public void Test_405_02() + { + } + + [Fact] + public void Test_405_03() + { + } + + [Fact] + public void Test_405_04() + { + } + + [Fact] + public void Test_405_05() + { + } + + [Fact] + public void Test_405_06() + { + } + + [Fact] + public void Test_405_07() + { + } + + [Fact] + public void Test_405_08() + { + } + + [Fact] + public void Test_405_09() + { + } + + [Fact] + public void Test_405_10() + { + } + + [Fact] + public void Test_405_11() + { + } + + [Fact] + public void Test_405_12() + { + } + + [Fact] + public void Test_405_13() + { + } + + [Fact] + public void Test_405_14() + { + } + + [Fact] + public void Test_405_15() + { + } + + [Fact] + public void Test_405_16() + { + } + + [Fact] + public void Test_405_17() + { + } + + [Fact] + public void Test_405_18() + { + } + + [Fact] + public void Test_405_19() + { + } + + [Fact] + public void Test_405_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_406 + { + #region PassingTests + [Fact] + public void Test_406_01() + { + } + + [Fact] + public void Test_406_02() + { + } + + [Fact] + public void Test_406_03() + { + } + + [Fact] + public void Test_406_04() + { + } + + [Fact] + public void Test_406_05() + { + } + + [Fact] + public void Test_406_06() + { + } + + [Fact] + public void Test_406_07() + { + } + + [Fact] + public void Test_406_08() + { + } + + [Fact] + public void Test_406_09() + { + } + + [Fact] + public void Test_406_10() + { + } + + [Fact] + public void Test_406_11() + { + } + + [Fact] + public void Test_406_12() + { + } + + [Fact] + public void Test_406_13() + { + } + + [Fact] + public void Test_406_14() + { + } + + [Fact] + public void Test_406_15() + { + } + + [Fact] + public void Test_406_16() + { + } + + [Fact] + public void Test_406_17() + { + } + + [Fact] + public void Test_406_18() + { + } + + [Fact] + public void Test_406_19() + { + } + + [Fact] + public void Test_406_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_407 + { + #region PassingTests + [Fact] + public void Test_407_01() + { + } + + [Fact] + public void Test_407_02() + { + } + + [Fact] + public void Test_407_03() + { + } + + [Fact] + public void Test_407_04() + { + } + + [Fact] + public void Test_407_05() + { + } + + [Fact] + public void Test_407_06() + { + } + + [Fact] + public void Test_407_07() + { + } + + [Fact] + public void Test_407_08() + { + } + + [Fact] + public void Test_407_09() + { + } + + [Fact] + public void Test_407_10() + { + } + + [Fact] + public void Test_407_11() + { + } + + [Fact] + public void Test_407_12() + { + } + + [Fact] + public void Test_407_13() + { + } + + [Fact] + public void Test_407_14() + { + } + + [Fact] + public void Test_407_15() + { + } + + [Fact] + public void Test_407_16() + { + } + + [Fact] + public void Test_407_17() + { + } + + [Fact] + public void Test_407_18() + { + } + + [Fact] + public void Test_407_19() + { + } + + [Fact] + public void Test_407_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_408 + { + #region PassingTests + [Fact] + public void Test_408_01() + { + } + + [Fact] + public void Test_408_02() + { + } + + [Fact] + public void Test_408_03() + { + } + + [Fact] + public void Test_408_04() + { + } + + [Fact] + public void Test_408_05() + { + } + + [Fact] + public void Test_408_06() + { + } + + [Fact] + public void Test_408_07() + { + } + + [Fact] + public void Test_408_08() + { + } + + [Fact] + public void Test_408_09() + { + } + + [Fact] + public void Test_408_10() + { + } + + [Fact] + public void Test_408_11() + { + } + + [Fact] + public void Test_408_12() + { + } + + [Fact] + public void Test_408_13() + { + } + + [Fact] + public void Test_408_14() + { + } + + [Fact] + public void Test_408_15() + { + } + + [Fact] + public void Test_408_16() + { + } + + [Fact] + public void Test_408_17() + { + } + + [Fact] + public void Test_408_18() + { + } + + [Fact] + public void Test_408_19() + { + } + + [Fact] + public void Test_408_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_409 + { + #region PassingTests + [Fact] + public void Test_409_01() + { + } + + [Fact] + public void Test_409_02() + { + } + + [Fact] + public void Test_409_03() + { + } + + [Fact] + public void Test_409_04() + { + } + + [Fact] + public void Test_409_05() + { + } + + [Fact] + public void Test_409_06() + { + } + + [Fact] + public void Test_409_07() + { + } + + [Fact] + public void Test_409_08() + { + } + + [Fact] + public void Test_409_09() + { + } + + [Fact] + public void Test_409_10() + { + } + + [Fact] + public void Test_409_11() + { + } + + [Fact] + public void Test_409_12() + { + } + + [Fact] + public void Test_409_13() + { + } + + [Fact] + public void Test_409_14() + { + } + + [Fact] + public void Test_409_15() + { + } + + [Fact] + public void Test_409_16() + { + } + + [Fact] + public void Test_409_17() + { + } + + [Fact] + public void Test_409_18() + { + } + + [Fact] + public void Test_409_19() + { + } + + [Fact] + public void Test_409_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_410 + { + #region PassingTests + [Fact] + public void Test_410_01() + { + } + + [Fact] + public void Test_410_02() + { + } + + [Fact] + public void Test_410_03() + { + } + + [Fact] + public void Test_410_04() + { + } + + [Fact] + public void Test_410_05() + { + } + + [Fact] + public void Test_410_06() + { + } + + [Fact] + public void Test_410_07() + { + } + + [Fact] + public void Test_410_08() + { + } + + [Fact] + public void Test_410_09() + { + } + + [Fact] + public void Test_410_10() + { + } + + [Fact] + public void Test_410_11() + { + } + + [Fact] + public void Test_410_12() + { + } + + [Fact] + public void Test_410_13() + { + } + + [Fact] + public void Test_410_14() + { + } + + [Fact] + public void Test_410_15() + { + } + + [Fact] + public void Test_410_16() + { + } + + [Fact] + public void Test_410_17() + { + } + + [Fact] + public void Test_410_18() + { + } + + [Fact] + public void Test_410_19() + { + } + + [Fact] + public void Test_410_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_411 + { + #region PassingTests + [Fact] + public void Test_411_01() + { + } + + [Fact] + public void Test_411_02() + { + } + + [Fact] + public void Test_411_03() + { + } + + [Fact] + public void Test_411_04() + { + } + + [Fact] + public void Test_411_05() + { + } + + [Fact] + public void Test_411_06() + { + } + + [Fact] + public void Test_411_07() + { + } + + [Fact] + public void Test_411_08() + { + } + + [Fact] + public void Test_411_09() + { + } + + [Fact] + public void Test_411_10() + { + } + + [Fact] + public void Test_411_11() + { + } + + [Fact] + public void Test_411_12() + { + } + + [Fact] + public void Test_411_13() + { + } + + [Fact] + public void Test_411_14() + { + } + + [Fact] + public void Test_411_15() + { + } + + [Fact] + public void Test_411_16() + { + } + + [Fact] + public void Test_411_17() + { + } + + [Fact] + public void Test_411_18() + { + } + + [Fact] + public void Test_411_19() + { + } + + [Fact] + public void Test_411_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_412 + { + #region PassingTests + [Fact] + public void Test_412_01() + { + } + + [Fact] + public void Test_412_02() + { + } + + [Fact] + public void Test_412_03() + { + } + + [Fact] + public void Test_412_04() + { + } + + [Fact] + public void Test_412_05() + { + } + + [Fact] + public void Test_412_06() + { + } + + [Fact] + public void Test_412_07() + { + } + + [Fact] + public void Test_412_08() + { + } + + [Fact] + public void Test_412_09() + { + } + + [Fact] + public void Test_412_10() + { + } + + [Fact] + public void Test_412_11() + { + } + + [Fact] + public void Test_412_12() + { + } + + [Fact] + public void Test_412_13() + { + } + + [Fact] + public void Test_412_14() + { + } + + [Fact] + public void Test_412_15() + { + } + + [Fact] + public void Test_412_16() + { + } + + [Fact] + public void Test_412_17() + { + } + + [Fact] + public void Test_412_18() + { + } + + [Fact] + public void Test_412_19() + { + } + + [Fact] + public void Test_412_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_413 + { + #region PassingTests + [Fact] + public void Test_413_01() + { + } + + [Fact] + public void Test_413_02() + { + } + + [Fact] + public void Test_413_03() + { + } + + [Fact] + public void Test_413_04() + { + } + + [Fact] + public void Test_413_05() + { + } + + [Fact] + public void Test_413_06() + { + } + + [Fact] + public void Test_413_07() + { + } + + [Fact] + public void Test_413_08() + { + } + + [Fact] + public void Test_413_09() + { + } + + [Fact] + public void Test_413_10() + { + } + + [Fact] + public void Test_413_11() + { + } + + [Fact] + public void Test_413_12() + { + } + + [Fact] + public void Test_413_13() + { + } + + [Fact] + public void Test_413_14() + { + } + + [Fact] + public void Test_413_15() + { + } + + [Fact] + public void Test_413_16() + { + } + + [Fact] + public void Test_413_17() + { + } + + [Fact] + public void Test_413_18() + { + } + + [Fact] + public void Test_413_19() + { + } + + [Fact] + public void Test_413_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_414 + { + #region PassingTests + [Fact] + public void Test_414_01() + { + } + + [Fact] + public void Test_414_02() + { + } + + [Fact] + public void Test_414_03() + { + } + + [Fact] + public void Test_414_04() + { + } + + [Fact] + public void Test_414_05() + { + } + + [Fact] + public void Test_414_06() + { + } + + [Fact] + public void Test_414_07() + { + } + + [Fact] + public void Test_414_08() + { + } + + [Fact] + public void Test_414_09() + { + } + + [Fact] + public void Test_414_10() + { + } + + [Fact] + public void Test_414_11() + { + } + + [Fact] + public void Test_414_12() + { + } + + [Fact] + public void Test_414_13() + { + } + + [Fact] + public void Test_414_14() + { + } + + [Fact] + public void Test_414_15() + { + } + + [Fact] + public void Test_414_16() + { + } + + [Fact] + public void Test_414_17() + { + } + + [Fact] + public void Test_414_18() + { + } + + [Fact] + public void Test_414_19() + { + } + + [Fact] + public void Test_414_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_415 + { + #region PassingTests + [Fact] + public void Test_415_01() + { + } + + [Fact] + public void Test_415_02() + { + } + + [Fact] + public void Test_415_03() + { + } + + [Fact] + public void Test_415_04() + { + } + + [Fact] + public void Test_415_05() + { + } + + [Fact] + public void Test_415_06() + { + } + + [Fact] + public void Test_415_07() + { + } + + [Fact] + public void Test_415_08() + { + } + + [Fact] + public void Test_415_09() + { + } + + [Fact] + public void Test_415_10() + { + } + + [Fact] + public void Test_415_11() + { + } + + [Fact] + public void Test_415_12() + { + } + + [Fact] + public void Test_415_13() + { + } + + [Fact] + public void Test_415_14() + { + } + + [Fact] + public void Test_415_15() + { + } + + [Fact] + public void Test_415_16() + { + } + + [Fact] + public void Test_415_17() + { + } + + [Fact] + public void Test_415_18() + { + } + + [Fact] + public void Test_415_19() + { + } + + [Fact] + public void Test_415_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_416 + { + #region PassingTests + [Fact] + public void Test_416_01() + { + } + + [Fact] + public void Test_416_02() + { + } + + [Fact] + public void Test_416_03() + { + } + + [Fact] + public void Test_416_04() + { + } + + [Fact] + public void Test_416_05() + { + } + + [Fact] + public void Test_416_06() + { + } + + [Fact] + public void Test_416_07() + { + } + + [Fact] + public void Test_416_08() + { + } + + [Fact] + public void Test_416_09() + { + } + + [Fact] + public void Test_416_10() + { + } + + [Fact] + public void Test_416_11() + { + } + + [Fact] + public void Test_416_12() + { + } + + [Fact] + public void Test_416_13() + { + } + + [Fact] + public void Test_416_14() + { + } + + [Fact] + public void Test_416_15() + { + } + + [Fact] + public void Test_416_16() + { + } + + [Fact] + public void Test_416_17() + { + } + + [Fact] + public void Test_416_18() + { + } + + [Fact] + public void Test_416_19() + { + } + + [Fact] + public void Test_416_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_417 + { + #region PassingTests + [Fact] + public void Test_417_01() + { + } + + [Fact] + public void Test_417_02() + { + } + + [Fact] + public void Test_417_03() + { + } + + [Fact] + public void Test_417_04() + { + } + + [Fact] + public void Test_417_05() + { + } + + [Fact] + public void Test_417_06() + { + } + + [Fact] + public void Test_417_07() + { + } + + [Fact] + public void Test_417_08() + { + } + + [Fact] + public void Test_417_09() + { + } + + [Fact] + public void Test_417_10() + { + } + + [Fact] + public void Test_417_11() + { + } + + [Fact] + public void Test_417_12() + { + } + + [Fact] + public void Test_417_13() + { + } + + [Fact] + public void Test_417_14() + { + } + + [Fact] + public void Test_417_15() + { + } + + [Fact] + public void Test_417_16() + { + } + + [Fact] + public void Test_417_17() + { + } + + [Fact] + public void Test_417_18() + { + } + + [Fact] + public void Test_417_19() + { + } + + [Fact] + public void Test_417_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_418 + { + #region PassingTests + [Fact] + public void Test_418_01() + { + } + + [Fact] + public void Test_418_02() + { + } + + [Fact] + public void Test_418_03() + { + } + + [Fact] + public void Test_418_04() + { + } + + [Fact] + public void Test_418_05() + { + } + + [Fact] + public void Test_418_06() + { + } + + [Fact] + public void Test_418_07() + { + } + + [Fact] + public void Test_418_08() + { + } + + [Fact] + public void Test_418_09() + { + } + + [Fact] + public void Test_418_10() + { + } + + [Fact] + public void Test_418_11() + { + } + + [Fact] + public void Test_418_12() + { + } + + [Fact] + public void Test_418_13() + { + } + + [Fact] + public void Test_418_14() + { + } + + [Fact] + public void Test_418_15() + { + } + + [Fact] + public void Test_418_16() + { + } + + [Fact] + public void Test_418_17() + { + } + + [Fact] + public void Test_418_18() + { + } + + [Fact] + public void Test_418_19() + { + } + + [Fact] + public void Test_418_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_419 + { + #region PassingTests + [Fact] + public void Test_419_01() + { + } + + [Fact] + public void Test_419_02() + { + } + + [Fact] + public void Test_419_03() + { + } + + [Fact] + public void Test_419_04() + { + } + + [Fact] + public void Test_419_05() + { + } + + [Fact] + public void Test_419_06() + { + } + + [Fact] + public void Test_419_07() + { + } + + [Fact] + public void Test_419_08() + { + } + + [Fact] + public void Test_419_09() + { + } + + [Fact] + public void Test_419_10() + { + } + + [Fact] + public void Test_419_11() + { + } + + [Fact] + public void Test_419_12() + { + } + + [Fact] + public void Test_419_13() + { + } + + [Fact] + public void Test_419_14() + { + } + + [Fact] + public void Test_419_15() + { + } + + [Fact] + public void Test_419_16() + { + } + + [Fact] + public void Test_419_17() + { + } + + [Fact] + public void Test_419_18() + { + } + + [Fact] + public void Test_419_19() + { + } + + [Fact] + public void Test_419_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_420 + { + #region PassingTests + [Fact] + public void Test_420_01() + { + } + + [Fact] + public void Test_420_02() + { + } + + [Fact] + public void Test_420_03() + { + } + + [Fact] + public void Test_420_04() + { + } + + [Fact] + public void Test_420_05() + { + } + + [Fact] + public void Test_420_06() + { + } + + [Fact] + public void Test_420_07() + { + } + + [Fact] + public void Test_420_08() + { + } + + [Fact] + public void Test_420_09() + { + } + + [Fact] + public void Test_420_10() + { + } + + [Fact] + public void Test_420_11() + { + } + + [Fact] + public void Test_420_12() + { + } + + [Fact] + public void Test_420_13() + { + } + + [Fact] + public void Test_420_14() + { + } + + [Fact] + public void Test_420_15() + { + } + + [Fact] + public void Test_420_16() + { + } + + [Fact] + public void Test_420_17() + { + } + + [Fact] + public void Test_420_18() + { + } + + [Fact] + public void Test_420_19() + { + } + + [Fact] + public void Test_420_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_421 + { + #region PassingTests + [Fact] + public void Test_421_01() + { + } + + [Fact] + public void Test_421_02() + { + } + + [Fact] + public void Test_421_03() + { + } + + [Fact] + public void Test_421_04() + { + } + + [Fact] + public void Test_421_05() + { + } + + [Fact] + public void Test_421_06() + { + } + + [Fact] + public void Test_421_07() + { + } + + [Fact] + public void Test_421_08() + { + } + + [Fact] + public void Test_421_09() + { + } + + [Fact] + public void Test_421_10() + { + } + + [Fact] + public void Test_421_11() + { + } + + [Fact] + public void Test_421_12() + { + } + + [Fact] + public void Test_421_13() + { + } + + [Fact] + public void Test_421_14() + { + } + + [Fact] + public void Test_421_15() + { + } + + [Fact] + public void Test_421_16() + { + } + + [Fact] + public void Test_421_17() + { + } + + [Fact] + public void Test_421_18() + { + } + + [Fact] + public void Test_421_19() + { + } + + [Fact] + public void Test_421_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_422 + { + #region PassingTests + [Fact] + public void Test_422_01() + { + } + + [Fact] + public void Test_422_02() + { + } + + [Fact] + public void Test_422_03() + { + } + + [Fact] + public void Test_422_04() + { + } + + [Fact] + public void Test_422_05() + { + } + + [Fact] + public void Test_422_06() + { + } + + [Fact] + public void Test_422_07() + { + } + + [Fact] + public void Test_422_08() + { + } + + [Fact] + public void Test_422_09() + { + } + + [Fact] + public void Test_422_10() + { + } + + [Fact] + public void Test_422_11() + { + } + + [Fact] + public void Test_422_12() + { + } + + [Fact] + public void Test_422_13() + { + } + + [Fact] + public void Test_422_14() + { + } + + [Fact] + public void Test_422_15() + { + } + + [Fact] + public void Test_422_16() + { + } + + [Fact] + public void Test_422_17() + { + } + + [Fact] + public void Test_422_18() + { + } + + [Fact] + public void Test_422_19() + { + } + + [Fact] + public void Test_422_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_423 + { + #region PassingTests + [Fact] + public void Test_423_01() + { + } + + [Fact] + public void Test_423_02() + { + } + + [Fact] + public void Test_423_03() + { + } + + [Fact] + public void Test_423_04() + { + } + + [Fact] + public void Test_423_05() + { + } + + [Fact] + public void Test_423_06() + { + } + + [Fact] + public void Test_423_07() + { + } + + [Fact] + public void Test_423_08() + { + } + + [Fact] + public void Test_423_09() + { + } + + [Fact] + public void Test_423_10() + { + } + + [Fact] + public void Test_423_11() + { + } + + [Fact] + public void Test_423_12() + { + } + + [Fact] + public void Test_423_13() + { + } + + [Fact] + public void Test_423_14() + { + } + + [Fact] + public void Test_423_15() + { + } + + [Fact] + public void Test_423_16() + { + } + + [Fact] + public void Test_423_17() + { + } + + [Fact] + public void Test_423_18() + { + } + + [Fact] + public void Test_423_19() + { + } + + [Fact] + public void Test_423_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_424 + { + #region PassingTests + [Fact] + public void Test_424_01() + { + } + + [Fact] + public void Test_424_02() + { + } + + [Fact] + public void Test_424_03() + { + } + + [Fact] + public void Test_424_04() + { + } + + [Fact] + public void Test_424_05() + { + } + + [Fact] + public void Test_424_06() + { + } + + [Fact] + public void Test_424_07() + { + } + + [Fact] + public void Test_424_08() + { + } + + [Fact] + public void Test_424_09() + { + } + + [Fact] + public void Test_424_10() + { + } + + [Fact] + public void Test_424_11() + { + } + + [Fact] + public void Test_424_12() + { + } + + [Fact] + public void Test_424_13() + { + } + + [Fact] + public void Test_424_14() + { + } + + [Fact] + public void Test_424_15() + { + } + + [Fact] + public void Test_424_16() + { + } + + [Fact] + public void Test_424_17() + { + } + + [Fact] + public void Test_424_18() + { + } + + [Fact] + public void Test_424_19() + { + } + + [Fact] + public void Test_424_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_425 + { + #region PassingTests + [Fact] + public void Test_425_01() + { + } + + [Fact] + public void Test_425_02() + { + } + + [Fact] + public void Test_425_03() + { + } + + [Fact] + public void Test_425_04() + { + } + + [Fact] + public void Test_425_05() + { + } + + [Fact] + public void Test_425_06() + { + } + + [Fact] + public void Test_425_07() + { + } + + [Fact] + public void Test_425_08() + { + } + + [Fact] + public void Test_425_09() + { + } + + [Fact] + public void Test_425_10() + { + } + + [Fact] + public void Test_425_11() + { + } + + [Fact] + public void Test_425_12() + { + } + + [Fact] + public void Test_425_13() + { + } + + [Fact] + public void Test_425_14() + { + } + + [Fact] + public void Test_425_15() + { + } + + [Fact] + public void Test_425_16() + { + } + + [Fact] + public void Test_425_17() + { + } + + [Fact] + public void Test_425_18() + { + } + + [Fact] + public void Test_425_19() + { + } + + [Fact] + public void Test_425_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_426 + { + #region PassingTests + [Fact] + public void Test_426_01() + { + } + + [Fact] + public void Test_426_02() + { + } + + [Fact] + public void Test_426_03() + { + } + + [Fact] + public void Test_426_04() + { + } + + [Fact] + public void Test_426_05() + { + } + + [Fact] + public void Test_426_06() + { + } + + [Fact] + public void Test_426_07() + { + } + + [Fact] + public void Test_426_08() + { + } + + [Fact] + public void Test_426_09() + { + } + + [Fact] + public void Test_426_10() + { + } + + [Fact] + public void Test_426_11() + { + } + + [Fact] + public void Test_426_12() + { + } + + [Fact] + public void Test_426_13() + { + } + + [Fact] + public void Test_426_14() + { + } + + [Fact] + public void Test_426_15() + { + } + + [Fact] + public void Test_426_16() + { + } + + [Fact] + public void Test_426_17() + { + } + + [Fact] + public void Test_426_18() + { + } + + [Fact] + public void Test_426_19() + { + } + + [Fact] + public void Test_426_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_427 + { + #region PassingTests + [Fact] + public void Test_427_01() + { + } + + [Fact] + public void Test_427_02() + { + } + + [Fact] + public void Test_427_03() + { + } + + [Fact] + public void Test_427_04() + { + } + + [Fact] + public void Test_427_05() + { + } + + [Fact] + public void Test_427_06() + { + } + + [Fact] + public void Test_427_07() + { + } + + [Fact] + public void Test_427_08() + { + } + + [Fact] + public void Test_427_09() + { + } + + [Fact] + public void Test_427_10() + { + } + + [Fact] + public void Test_427_11() + { + } + + [Fact] + public void Test_427_12() + { + } + + [Fact] + public void Test_427_13() + { + } + + [Fact] + public void Test_427_14() + { + } + + [Fact] + public void Test_427_15() + { + } + + [Fact] + public void Test_427_16() + { + } + + [Fact] + public void Test_427_17() + { + } + + [Fact] + public void Test_427_18() + { + } + + [Fact] + public void Test_427_19() + { + } + + [Fact] + public void Test_427_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_428 + { + #region PassingTests + [Fact] + public void Test_428_01() + { + } + + [Fact] + public void Test_428_02() + { + } + + [Fact] + public void Test_428_03() + { + } + + [Fact] + public void Test_428_04() + { + } + + [Fact] + public void Test_428_05() + { + } + + [Fact] + public void Test_428_06() + { + } + + [Fact] + public void Test_428_07() + { + } + + [Fact] + public void Test_428_08() + { + } + + [Fact] + public void Test_428_09() + { + } + + [Fact] + public void Test_428_10() + { + } + + [Fact] + public void Test_428_11() + { + } + + [Fact] + public void Test_428_12() + { + } + + [Fact] + public void Test_428_13() + { + } + + [Fact] + public void Test_428_14() + { + } + + [Fact] + public void Test_428_15() + { + } + + [Fact] + public void Test_428_16() + { + } + + [Fact] + public void Test_428_17() + { + } + + [Fact] + public void Test_428_18() + { + } + + [Fact] + public void Test_428_19() + { + } + + [Fact] + public void Test_428_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_429 + { + #region PassingTests + [Fact] + public void Test_429_01() + { + } + + [Fact] + public void Test_429_02() + { + } + + [Fact] + public void Test_429_03() + { + } + + [Fact] + public void Test_429_04() + { + } + + [Fact] + public void Test_429_05() + { + } + + [Fact] + public void Test_429_06() + { + } + + [Fact] + public void Test_429_07() + { + } + + [Fact] + public void Test_429_08() + { + } + + [Fact] + public void Test_429_09() + { + } + + [Fact] + public void Test_429_10() + { + } + + [Fact] + public void Test_429_11() + { + } + + [Fact] + public void Test_429_12() + { + } + + [Fact] + public void Test_429_13() + { + } + + [Fact] + public void Test_429_14() + { + } + + [Fact] + public void Test_429_15() + { + } + + [Fact] + public void Test_429_16() + { + } + + [Fact] + public void Test_429_17() + { + } + + [Fact] + public void Test_429_18() + { + } + + [Fact] + public void Test_429_19() + { + } + + [Fact] + public void Test_429_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_430 + { + #region PassingTests + [Fact] + public void Test_430_01() + { + } + + [Fact] + public void Test_430_02() + { + } + + [Fact] + public void Test_430_03() + { + } + + [Fact] + public void Test_430_04() + { + } + + [Fact] + public void Test_430_05() + { + } + + [Fact] + public void Test_430_06() + { + } + + [Fact] + public void Test_430_07() + { + } + + [Fact] + public void Test_430_08() + { + } + + [Fact] + public void Test_430_09() + { + } + + [Fact] + public void Test_430_10() + { + } + + [Fact] + public void Test_430_11() + { + } + + [Fact] + public void Test_430_12() + { + } + + [Fact] + public void Test_430_13() + { + } + + [Fact] + public void Test_430_14() + { + } + + [Fact] + public void Test_430_15() + { + } + + [Fact] + public void Test_430_16() + { + } + + [Fact] + public void Test_430_17() + { + } + + [Fact] + public void Test_430_18() + { + } + + [Fact] + public void Test_430_19() + { + } + + [Fact] + public void Test_430_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_431 + { + #region PassingTests + [Fact] + public void Test_431_01() + { + } + + [Fact] + public void Test_431_02() + { + } + + [Fact] + public void Test_431_03() + { + } + + [Fact] + public void Test_431_04() + { + } + + [Fact] + public void Test_431_05() + { + } + + [Fact] + public void Test_431_06() + { + } + + [Fact] + public void Test_431_07() + { + } + + [Fact] + public void Test_431_08() + { + } + + [Fact] + public void Test_431_09() + { + } + + [Fact] + public void Test_431_10() + { + } + + [Fact] + public void Test_431_11() + { + } + + [Fact] + public void Test_431_12() + { + } + + [Fact] + public void Test_431_13() + { + } + + [Fact] + public void Test_431_14() + { + } + + [Fact] + public void Test_431_15() + { + } + + [Fact] + public void Test_431_16() + { + } + + [Fact] + public void Test_431_17() + { + } + + [Fact] + public void Test_431_18() + { + } + + [Fact] + public void Test_431_19() + { + } + + [Fact] + public void Test_431_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_432 + { + #region PassingTests + [Fact] + public void Test_432_01() + { + } + + [Fact] + public void Test_432_02() + { + } + + [Fact] + public void Test_432_03() + { + } + + [Fact] + public void Test_432_04() + { + } + + [Fact] + public void Test_432_05() + { + } + + [Fact] + public void Test_432_06() + { + } + + [Fact] + public void Test_432_07() + { + } + + [Fact] + public void Test_432_08() + { + } + + [Fact] + public void Test_432_09() + { + } + + [Fact] + public void Test_432_10() + { + } + + [Fact] + public void Test_432_11() + { + } + + [Fact] + public void Test_432_12() + { + } + + [Fact] + public void Test_432_13() + { + } + + [Fact] + public void Test_432_14() + { + } + + [Fact] + public void Test_432_15() + { + } + + [Fact] + public void Test_432_16() + { + } + + [Fact] + public void Test_432_17() + { + } + + [Fact] + public void Test_432_18() + { + } + + [Fact] + public void Test_432_19() + { + } + + [Fact] + public void Test_432_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_433 + { + #region PassingTests + [Fact] + public void Test_433_01() + { + } + + [Fact] + public void Test_433_02() + { + } + + [Fact] + public void Test_433_03() + { + } + + [Fact] + public void Test_433_04() + { + } + + [Fact] + public void Test_433_05() + { + } + + [Fact] + public void Test_433_06() + { + } + + [Fact] + public void Test_433_07() + { + } + + [Fact] + public void Test_433_08() + { + } + + [Fact] + public void Test_433_09() + { + } + + [Fact] + public void Test_433_10() + { + } + + [Fact] + public void Test_433_11() + { + } + + [Fact] + public void Test_433_12() + { + } + + [Fact] + public void Test_433_13() + { + } + + [Fact] + public void Test_433_14() + { + } + + [Fact] + public void Test_433_15() + { + } + + [Fact] + public void Test_433_16() + { + } + + [Fact] + public void Test_433_17() + { + } + + [Fact] + public void Test_433_18() + { + } + + [Fact] + public void Test_433_19() + { + } + + [Fact] + public void Test_433_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_434 + { + #region PassingTests + [Fact] + public void Test_434_01() + { + } + + [Fact] + public void Test_434_02() + { + } + + [Fact] + public void Test_434_03() + { + } + + [Fact] + public void Test_434_04() + { + } + + [Fact] + public void Test_434_05() + { + } + + [Fact] + public void Test_434_06() + { + } + + [Fact] + public void Test_434_07() + { + } + + [Fact] + public void Test_434_08() + { + } + + [Fact] + public void Test_434_09() + { + } + + [Fact] + public void Test_434_10() + { + } + + [Fact] + public void Test_434_11() + { + } + + [Fact] + public void Test_434_12() + { + } + + [Fact] + public void Test_434_13() + { + } + + [Fact] + public void Test_434_14() + { + } + + [Fact] + public void Test_434_15() + { + } + + [Fact] + public void Test_434_16() + { + } + + [Fact] + public void Test_434_17() + { + } + + [Fact] + public void Test_434_18() + { + } + + [Fact] + public void Test_434_19() + { + } + + [Fact] + public void Test_434_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_435 + { + #region PassingTests + [Fact] + public void Test_435_01() + { + } + + [Fact] + public void Test_435_02() + { + } + + [Fact] + public void Test_435_03() + { + } + + [Fact] + public void Test_435_04() + { + } + + [Fact] + public void Test_435_05() + { + } + + [Fact] + public void Test_435_06() + { + } + + [Fact] + public void Test_435_07() + { + } + + [Fact] + public void Test_435_08() + { + } + + [Fact] + public void Test_435_09() + { + } + + [Fact] + public void Test_435_10() + { + } + + [Fact] + public void Test_435_11() + { + } + + [Fact] + public void Test_435_12() + { + } + + [Fact] + public void Test_435_13() + { + } + + [Fact] + public void Test_435_14() + { + } + + [Fact] + public void Test_435_15() + { + } + + [Fact] + public void Test_435_16() + { + } + + [Fact] + public void Test_435_17() + { + } + + [Fact] + public void Test_435_18() + { + } + + [Fact] + public void Test_435_19() + { + } + + [Fact] + public void Test_435_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_436 + { + #region PassingTests + [Fact] + public void Test_436_01() + { + } + + [Fact] + public void Test_436_02() + { + } + + [Fact] + public void Test_436_03() + { + } + + [Fact] + public void Test_436_04() + { + } + + [Fact] + public void Test_436_05() + { + } + + [Fact] + public void Test_436_06() + { + } + + [Fact] + public void Test_436_07() + { + } + + [Fact] + public void Test_436_08() + { + } + + [Fact] + public void Test_436_09() + { + } + + [Fact] + public void Test_436_10() + { + } + + [Fact] + public void Test_436_11() + { + } + + [Fact] + public void Test_436_12() + { + } + + [Fact] + public void Test_436_13() + { + } + + [Fact] + public void Test_436_14() + { + } + + [Fact] + public void Test_436_15() + { + } + + [Fact] + public void Test_436_16() + { + } + + [Fact] + public void Test_436_17() + { + } + + [Fact] + public void Test_436_18() + { + } + + [Fact] + public void Test_436_19() + { + } + + [Fact] + public void Test_436_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_437 + { + #region PassingTests + [Fact] + public void Test_437_01() + { + } + + [Fact] + public void Test_437_02() + { + } + + [Fact] + public void Test_437_03() + { + } + + [Fact] + public void Test_437_04() + { + } + + [Fact] + public void Test_437_05() + { + } + + [Fact] + public void Test_437_06() + { + } + + [Fact] + public void Test_437_07() + { + } + + [Fact] + public void Test_437_08() + { + } + + [Fact] + public void Test_437_09() + { + } + + [Fact] + public void Test_437_10() + { + } + + [Fact] + public void Test_437_11() + { + } + + [Fact] + public void Test_437_12() + { + } + + [Fact] + public void Test_437_13() + { + } + + [Fact] + public void Test_437_14() + { + } + + [Fact] + public void Test_437_15() + { + } + + [Fact] + public void Test_437_16() + { + } + + [Fact] + public void Test_437_17() + { + } + + [Fact] + public void Test_437_18() + { + } + + [Fact] + public void Test_437_19() + { + } + + [Fact] + public void Test_437_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_438 + { + #region PassingTests + [Fact] + public void Test_438_01() + { + } + + [Fact] + public void Test_438_02() + { + } + + [Fact] + public void Test_438_03() + { + } + + [Fact] + public void Test_438_04() + { + } + + [Fact] + public void Test_438_05() + { + } + + [Fact] + public void Test_438_06() + { + } + + [Fact] + public void Test_438_07() + { + } + + [Fact] + public void Test_438_08() + { + } + + [Fact] + public void Test_438_09() + { + } + + [Fact] + public void Test_438_10() + { + } + + [Fact] + public void Test_438_11() + { + } + + [Fact] + public void Test_438_12() + { + } + + [Fact] + public void Test_438_13() + { + } + + [Fact] + public void Test_438_14() + { + } + + [Fact] + public void Test_438_15() + { + } + + [Fact] + public void Test_438_16() + { + } + + [Fact] + public void Test_438_17() + { + } + + [Fact] + public void Test_438_18() + { + } + + [Fact] + public void Test_438_19() + { + } + + [Fact] + public void Test_438_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_439 + { + #region PassingTests + [Fact] + public void Test_439_01() + { + } + + [Fact] + public void Test_439_02() + { + } + + [Fact] + public void Test_439_03() + { + } + + [Fact] + public void Test_439_04() + { + } + + [Fact] + public void Test_439_05() + { + } + + [Fact] + public void Test_439_06() + { + } + + [Fact] + public void Test_439_07() + { + } + + [Fact] + public void Test_439_08() + { + } + + [Fact] + public void Test_439_09() + { + } + + [Fact] + public void Test_439_10() + { + } + + [Fact] + public void Test_439_11() + { + } + + [Fact] + public void Test_439_12() + { + } + + [Fact] + public void Test_439_13() + { + } + + [Fact] + public void Test_439_14() + { + } + + [Fact] + public void Test_439_15() + { + } + + [Fact] + public void Test_439_16() + { + } + + [Fact] + public void Test_439_17() + { + } + + [Fact] + public void Test_439_18() + { + } + + [Fact] + public void Test_439_19() + { + } + + [Fact] + public void Test_439_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_440 + { + #region PassingTests + [Fact] + public void Test_440_01() + { + } + + [Fact] + public void Test_440_02() + { + } + + [Fact] + public void Test_440_03() + { + } + + [Fact] + public void Test_440_04() + { + } + + [Fact] + public void Test_440_05() + { + } + + [Fact] + public void Test_440_06() + { + } + + [Fact] + public void Test_440_07() + { + } + + [Fact] + public void Test_440_08() + { + } + + [Fact] + public void Test_440_09() + { + } + + [Fact] + public void Test_440_10() + { + } + + [Fact] + public void Test_440_11() + { + } + + [Fact] + public void Test_440_12() + { + } + + [Fact] + public void Test_440_13() + { + } + + [Fact] + public void Test_440_14() + { + } + + [Fact] + public void Test_440_15() + { + } + + [Fact] + public void Test_440_16() + { + } + + [Fact] + public void Test_440_17() + { + } + + [Fact] + public void Test_440_18() + { + } + + [Fact] + public void Test_440_19() + { + } + + [Fact] + public void Test_440_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_441 + { + #region PassingTests + [Fact] + public void Test_441_01() + { + } + + [Fact] + public void Test_441_02() + { + } + + [Fact] + public void Test_441_03() + { + } + + [Fact] + public void Test_441_04() + { + } + + [Fact] + public void Test_441_05() + { + } + + [Fact] + public void Test_441_06() + { + } + + [Fact] + public void Test_441_07() + { + } + + [Fact] + public void Test_441_08() + { + } + + [Fact] + public void Test_441_09() + { + } + + [Fact] + public void Test_441_10() + { + } + + [Fact] + public void Test_441_11() + { + } + + [Fact] + public void Test_441_12() + { + } + + [Fact] + public void Test_441_13() + { + } + + [Fact] + public void Test_441_14() + { + } + + [Fact] + public void Test_441_15() + { + } + + [Fact] + public void Test_441_16() + { + } + + [Fact] + public void Test_441_17() + { + } + + [Fact] + public void Test_441_18() + { + } + + [Fact] + public void Test_441_19() + { + } + + [Fact] + public void Test_441_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_442 + { + #region PassingTests + [Fact] + public void Test_442_01() + { + } + + [Fact] + public void Test_442_02() + { + } + + [Fact] + public void Test_442_03() + { + } + + [Fact] + public void Test_442_04() + { + } + + [Fact] + public void Test_442_05() + { + } + + [Fact] + public void Test_442_06() + { + } + + [Fact] + public void Test_442_07() + { + } + + [Fact] + public void Test_442_08() + { + } + + [Fact] + public void Test_442_09() + { + } + + [Fact] + public void Test_442_10() + { + } + + [Fact] + public void Test_442_11() + { + } + + [Fact] + public void Test_442_12() + { + } + + [Fact] + public void Test_442_13() + { + } + + [Fact] + public void Test_442_14() + { + } + + [Fact] + public void Test_442_15() + { + } + + [Fact] + public void Test_442_16() + { + } + + [Fact] + public void Test_442_17() + { + } + + [Fact] + public void Test_442_18() + { + } + + [Fact] + public void Test_442_19() + { + } + + [Fact] + public void Test_442_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_443 + { + #region PassingTests + [Fact] + public void Test_443_01() + { + } + + [Fact] + public void Test_443_02() + { + } + + [Fact] + public void Test_443_03() + { + } + + [Fact] + public void Test_443_04() + { + } + + [Fact] + public void Test_443_05() + { + } + + [Fact] + public void Test_443_06() + { + } + + [Fact] + public void Test_443_07() + { + } + + [Fact] + public void Test_443_08() + { + } + + [Fact] + public void Test_443_09() + { + } + + [Fact] + public void Test_443_10() + { + } + + [Fact] + public void Test_443_11() + { + } + + [Fact] + public void Test_443_12() + { + } + + [Fact] + public void Test_443_13() + { + } + + [Fact] + public void Test_443_14() + { + } + + [Fact] + public void Test_443_15() + { + } + + [Fact] + public void Test_443_16() + { + } + + [Fact] + public void Test_443_17() + { + } + + [Fact] + public void Test_443_18() + { + } + + [Fact] + public void Test_443_19() + { + } + + [Fact] + public void Test_443_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_444 + { + #region PassingTests + [Fact] + public void Test_444_01() + { + } + + [Fact] + public void Test_444_02() + { + } + + [Fact] + public void Test_444_03() + { + } + + [Fact] + public void Test_444_04() + { + } + + [Fact] + public void Test_444_05() + { + } + + [Fact] + public void Test_444_06() + { + } + + [Fact] + public void Test_444_07() + { + } + + [Fact] + public void Test_444_08() + { + } + + [Fact] + public void Test_444_09() + { + } + + [Fact] + public void Test_444_10() + { + } + + [Fact] + public void Test_444_11() + { + } + + [Fact] + public void Test_444_12() + { + } + + [Fact] + public void Test_444_13() + { + } + + [Fact] + public void Test_444_14() + { + } + + [Fact] + public void Test_444_15() + { + } + + [Fact] + public void Test_444_16() + { + } + + [Fact] + public void Test_444_17() + { + } + + [Fact] + public void Test_444_18() + { + } + + [Fact] + public void Test_444_19() + { + } + + [Fact] + public void Test_444_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_445 + { + #region PassingTests + [Fact] + public void Test_445_01() + { + } + + [Fact] + public void Test_445_02() + { + } + + [Fact] + public void Test_445_03() + { + } + + [Fact] + public void Test_445_04() + { + } + + [Fact] + public void Test_445_05() + { + } + + [Fact] + public void Test_445_06() + { + } + + [Fact] + public void Test_445_07() + { + } + + [Fact] + public void Test_445_08() + { + } + + [Fact] + public void Test_445_09() + { + } + + [Fact] + public void Test_445_10() + { + } + + [Fact] + public void Test_445_11() + { + } + + [Fact] + public void Test_445_12() + { + } + + [Fact] + public void Test_445_13() + { + } + + [Fact] + public void Test_445_14() + { + } + + [Fact] + public void Test_445_15() + { + } + + [Fact] + public void Test_445_16() + { + } + + [Fact] + public void Test_445_17() + { + } + + [Fact] + public void Test_445_18() + { + } + + [Fact] + public void Test_445_19() + { + } + + [Fact] + public void Test_445_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_446 + { + #region PassingTests + [Fact] + public void Test_446_01() + { + } + + [Fact] + public void Test_446_02() + { + } + + [Fact] + public void Test_446_03() + { + } + + [Fact] + public void Test_446_04() + { + } + + [Fact] + public void Test_446_05() + { + } + + [Fact] + public void Test_446_06() + { + } + + [Fact] + public void Test_446_07() + { + } + + [Fact] + public void Test_446_08() + { + } + + [Fact] + public void Test_446_09() + { + } + + [Fact] + public void Test_446_10() + { + } + + [Fact] + public void Test_446_11() + { + } + + [Fact] + public void Test_446_12() + { + } + + [Fact] + public void Test_446_13() + { + } + + [Fact] + public void Test_446_14() + { + } + + [Fact] + public void Test_446_15() + { + } + + [Fact] + public void Test_446_16() + { + } + + [Fact] + public void Test_446_17() + { + } + + [Fact] + public void Test_446_18() + { + } + + [Fact] + public void Test_446_19() + { + } + + [Fact] + public void Test_446_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_447 + { + #region PassingTests + [Fact] + public void Test_447_01() + { + } + + [Fact] + public void Test_447_02() + { + } + + [Fact] + public void Test_447_03() + { + } + + [Fact] + public void Test_447_04() + { + } + + [Fact] + public void Test_447_05() + { + } + + [Fact] + public void Test_447_06() + { + } + + [Fact] + public void Test_447_07() + { + } + + [Fact] + public void Test_447_08() + { + } + + [Fact] + public void Test_447_09() + { + } + + [Fact] + public void Test_447_10() + { + } + + [Fact] + public void Test_447_11() + { + } + + [Fact] + public void Test_447_12() + { + } + + [Fact] + public void Test_447_13() + { + } + + [Fact] + public void Test_447_14() + { + } + + [Fact] + public void Test_447_15() + { + } + + [Fact] + public void Test_447_16() + { + } + + [Fact] + public void Test_447_17() + { + } + + [Fact] + public void Test_447_18() + { + } + + [Fact] + public void Test_447_19() + { + } + + [Fact] + public void Test_447_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_448 + { + #region PassingTests + [Fact] + public void Test_448_01() + { + } + + [Fact] + public void Test_448_02() + { + } + + [Fact] + public void Test_448_03() + { + } + + [Fact] + public void Test_448_04() + { + } + + [Fact] + public void Test_448_05() + { + } + + [Fact] + public void Test_448_06() + { + } + + [Fact] + public void Test_448_07() + { + } + + [Fact] + public void Test_448_08() + { + } + + [Fact] + public void Test_448_09() + { + } + + [Fact] + public void Test_448_10() + { + } + + [Fact] + public void Test_448_11() + { + } + + [Fact] + public void Test_448_12() + { + } + + [Fact] + public void Test_448_13() + { + } + + [Fact] + public void Test_448_14() + { + } + + [Fact] + public void Test_448_15() + { + } + + [Fact] + public void Test_448_16() + { + } + + [Fact] + public void Test_448_17() + { + } + + [Fact] + public void Test_448_18() + { + } + + [Fact] + public void Test_448_19() + { + } + + [Fact] + public void Test_448_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_449 + { + #region PassingTests + [Fact] + public void Test_449_01() + { + } + + [Fact] + public void Test_449_02() + { + } + + [Fact] + public void Test_449_03() + { + } + + [Fact] + public void Test_449_04() + { + } + + [Fact] + public void Test_449_05() + { + } + + [Fact] + public void Test_449_06() + { + } + + [Fact] + public void Test_449_07() + { + } + + [Fact] + public void Test_449_08() + { + } + + [Fact] + public void Test_449_09() + { + } + + [Fact] + public void Test_449_10() + { + } + + [Fact] + public void Test_449_11() + { + } + + [Fact] + public void Test_449_12() + { + } + + [Fact] + public void Test_449_13() + { + } + + [Fact] + public void Test_449_14() + { + } + + [Fact] + public void Test_449_15() + { + } + + [Fact] + public void Test_449_16() + { + } + + [Fact] + public void Test_449_17() + { + } + + [Fact] + public void Test_449_18() + { + } + + [Fact] + public void Test_449_19() + { + } + + [Fact] + public void Test_449_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_450 + { + #region PassingTests + [Fact] + public void Test_450_01() + { + } + + [Fact] + public void Test_450_02() + { + } + + [Fact] + public void Test_450_03() + { + } + + [Fact] + public void Test_450_04() + { + } + + [Fact] + public void Test_450_05() + { + } + + [Fact] + public void Test_450_06() + { + } + + [Fact] + public void Test_450_07() + { + } + + [Fact] + public void Test_450_08() + { + } + + [Fact] + public void Test_450_09() + { + } + + [Fact] + public void Test_450_10() + { + } + + [Fact] + public void Test_450_11() + { + } + + [Fact] + public void Test_450_12() + { + } + + [Fact] + public void Test_450_13() + { + } + + [Fact] + public void Test_450_14() + { + } + + [Fact] + public void Test_450_15() + { + } + + [Fact] + public void Test_450_16() + { + } + + [Fact] + public void Test_450_17() + { + } + + [Fact] + public void Test_450_18() + { + } + + [Fact] + public void Test_450_19() + { + } + + [Fact] + public void Test_450_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_451 + { + #region PassingTests + [Fact] + public void Test_451_01() + { + } + + [Fact] + public void Test_451_02() + { + } + + [Fact] + public void Test_451_03() + { + } + + [Fact] + public void Test_451_04() + { + } + + [Fact] + public void Test_451_05() + { + } + + [Fact] + public void Test_451_06() + { + } + + [Fact] + public void Test_451_07() + { + } + + [Fact] + public void Test_451_08() + { + } + + [Fact] + public void Test_451_09() + { + } + + [Fact] + public void Test_451_10() + { + } + + [Fact] + public void Test_451_11() + { + } + + [Fact] + public void Test_451_12() + { + } + + [Fact] + public void Test_451_13() + { + } + + [Fact] + public void Test_451_14() + { + } + + [Fact] + public void Test_451_15() + { + } + + [Fact] + public void Test_451_16() + { + } + + [Fact] + public void Test_451_17() + { + } + + [Fact] + public void Test_451_18() + { + } + + [Fact] + public void Test_451_19() + { + } + + [Fact] + public void Test_451_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_452 + { + #region PassingTests + [Fact] + public void Test_452_01() + { + } + + [Fact] + public void Test_452_02() + { + } + + [Fact] + public void Test_452_03() + { + } + + [Fact] + public void Test_452_04() + { + } + + [Fact] + public void Test_452_05() + { + } + + [Fact] + public void Test_452_06() + { + } + + [Fact] + public void Test_452_07() + { + } + + [Fact] + public void Test_452_08() + { + } + + [Fact] + public void Test_452_09() + { + } + + [Fact] + public void Test_452_10() + { + } + + [Fact] + public void Test_452_11() + { + } + + [Fact] + public void Test_452_12() + { + } + + [Fact] + public void Test_452_13() + { + } + + [Fact] + public void Test_452_14() + { + } + + [Fact] + public void Test_452_15() + { + } + + [Fact] + public void Test_452_16() + { + } + + [Fact] + public void Test_452_17() + { + } + + [Fact] + public void Test_452_18() + { + } + + [Fact] + public void Test_452_19() + { + } + + [Fact] + public void Test_452_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_453 + { + #region PassingTests + [Fact] + public void Test_453_01() + { + } + + [Fact] + public void Test_453_02() + { + } + + [Fact] + public void Test_453_03() + { + } + + [Fact] + public void Test_453_04() + { + } + + [Fact] + public void Test_453_05() + { + } + + [Fact] + public void Test_453_06() + { + } + + [Fact] + public void Test_453_07() + { + } + + [Fact] + public void Test_453_08() + { + } + + [Fact] + public void Test_453_09() + { + } + + [Fact] + public void Test_453_10() + { + } + + [Fact] + public void Test_453_11() + { + } + + [Fact] + public void Test_453_12() + { + } + + [Fact] + public void Test_453_13() + { + } + + [Fact] + public void Test_453_14() + { + } + + [Fact] + public void Test_453_15() + { + } + + [Fact] + public void Test_453_16() + { + } + + [Fact] + public void Test_453_17() + { + } + + [Fact] + public void Test_453_18() + { + } + + [Fact] + public void Test_453_19() + { + } + + [Fact] + public void Test_453_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_454 + { + #region PassingTests + [Fact] + public void Test_454_01() + { + } + + [Fact] + public void Test_454_02() + { + } + + [Fact] + public void Test_454_03() + { + } + + [Fact] + public void Test_454_04() + { + } + + [Fact] + public void Test_454_05() + { + } + + [Fact] + public void Test_454_06() + { + } + + [Fact] + public void Test_454_07() + { + } + + [Fact] + public void Test_454_08() + { + } + + [Fact] + public void Test_454_09() + { + } + + [Fact] + public void Test_454_10() + { + } + + [Fact] + public void Test_454_11() + { + } + + [Fact] + public void Test_454_12() + { + } + + [Fact] + public void Test_454_13() + { + } + + [Fact] + public void Test_454_14() + { + } + + [Fact] + public void Test_454_15() + { + } + + [Fact] + public void Test_454_16() + { + } + + [Fact] + public void Test_454_17() + { + } + + [Fact] + public void Test_454_18() + { + } + + [Fact] + public void Test_454_19() + { + } + + [Fact] + public void Test_454_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_455 + { + #region PassingTests + [Fact] + public void Test_455_01() + { + } + + [Fact] + public void Test_455_02() + { + } + + [Fact] + public void Test_455_03() + { + } + + [Fact] + public void Test_455_04() + { + } + + [Fact] + public void Test_455_05() + { + } + + [Fact] + public void Test_455_06() + { + } + + [Fact] + public void Test_455_07() + { + } + + [Fact] + public void Test_455_08() + { + } + + [Fact] + public void Test_455_09() + { + } + + [Fact] + public void Test_455_10() + { + } + + [Fact] + public void Test_455_11() + { + } + + [Fact] + public void Test_455_12() + { + } + + [Fact] + public void Test_455_13() + { + } + + [Fact] + public void Test_455_14() + { + } + + [Fact] + public void Test_455_15() + { + } + + [Fact] + public void Test_455_16() + { + } + + [Fact] + public void Test_455_17() + { + } + + [Fact] + public void Test_455_18() + { + } + + [Fact] + public void Test_455_19() + { + } + + [Fact] + public void Test_455_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_456 + { + #region PassingTests + [Fact] + public void Test_456_01() + { + } + + [Fact] + public void Test_456_02() + { + } + + [Fact] + public void Test_456_03() + { + } + + [Fact] + public void Test_456_04() + { + } + + [Fact] + public void Test_456_05() + { + } + + [Fact] + public void Test_456_06() + { + } + + [Fact] + public void Test_456_07() + { + } + + [Fact] + public void Test_456_08() + { + } + + [Fact] + public void Test_456_09() + { + } + + [Fact] + public void Test_456_10() + { + } + + [Fact] + public void Test_456_11() + { + } + + [Fact] + public void Test_456_12() + { + } + + [Fact] + public void Test_456_13() + { + } + + [Fact] + public void Test_456_14() + { + } + + [Fact] + public void Test_456_15() + { + } + + [Fact] + public void Test_456_16() + { + } + + [Fact] + public void Test_456_17() + { + } + + [Fact] + public void Test_456_18() + { + } + + [Fact] + public void Test_456_19() + { + } + + [Fact] + public void Test_456_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_457 + { + #region PassingTests + [Fact] + public void Test_457_01() + { + } + + [Fact] + public void Test_457_02() + { + } + + [Fact] + public void Test_457_03() + { + } + + [Fact] + public void Test_457_04() + { + } + + [Fact] + public void Test_457_05() + { + } + + [Fact] + public void Test_457_06() + { + } + + [Fact] + public void Test_457_07() + { + } + + [Fact] + public void Test_457_08() + { + } + + [Fact] + public void Test_457_09() + { + } + + [Fact] + public void Test_457_10() + { + } + + [Fact] + public void Test_457_11() + { + } + + [Fact] + public void Test_457_12() + { + } + + [Fact] + public void Test_457_13() + { + } + + [Fact] + public void Test_457_14() + { + } + + [Fact] + public void Test_457_15() + { + } + + [Fact] + public void Test_457_16() + { + } + + [Fact] + public void Test_457_17() + { + } + + [Fact] + public void Test_457_18() + { + } + + [Fact] + public void Test_457_19() + { + } + + [Fact] + public void Test_457_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_458 + { + #region PassingTests + [Fact] + public void Test_458_01() + { + } + + [Fact] + public void Test_458_02() + { + } + + [Fact] + public void Test_458_03() + { + } + + [Fact] + public void Test_458_04() + { + } + + [Fact] + public void Test_458_05() + { + } + + [Fact] + public void Test_458_06() + { + } + + [Fact] + public void Test_458_07() + { + } + + [Fact] + public void Test_458_08() + { + } + + [Fact] + public void Test_458_09() + { + } + + [Fact] + public void Test_458_10() + { + } + + [Fact] + public void Test_458_11() + { + } + + [Fact] + public void Test_458_12() + { + } + + [Fact] + public void Test_458_13() + { + } + + [Fact] + public void Test_458_14() + { + } + + [Fact] + public void Test_458_15() + { + } + + [Fact] + public void Test_458_16() + { + } + + [Fact] + public void Test_458_17() + { + } + + [Fact] + public void Test_458_18() + { + } + + [Fact] + public void Test_458_19() + { + } + + [Fact] + public void Test_458_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_459 + { + #region PassingTests + [Fact] + public void Test_459_01() + { + } + + [Fact] + public void Test_459_02() + { + } + + [Fact] + public void Test_459_03() + { + } + + [Fact] + public void Test_459_04() + { + } + + [Fact] + public void Test_459_05() + { + } + + [Fact] + public void Test_459_06() + { + } + + [Fact] + public void Test_459_07() + { + } + + [Fact] + public void Test_459_08() + { + } + + [Fact] + public void Test_459_09() + { + } + + [Fact] + public void Test_459_10() + { + } + + [Fact] + public void Test_459_11() + { + } + + [Fact] + public void Test_459_12() + { + } + + [Fact] + public void Test_459_13() + { + } + + [Fact] + public void Test_459_14() + { + } + + [Fact] + public void Test_459_15() + { + } + + [Fact] + public void Test_459_16() + { + } + + [Fact] + public void Test_459_17() + { + } + + [Fact] + public void Test_459_18() + { + } + + [Fact] + public void Test_459_19() + { + } + + [Fact] + public void Test_459_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_460 + { + #region PassingTests + [Fact] + public void Test_460_01() + { + } + + [Fact] + public void Test_460_02() + { + } + + [Fact] + public void Test_460_03() + { + } + + [Fact] + public void Test_460_04() + { + } + + [Fact] + public void Test_460_05() + { + } + + [Fact] + public void Test_460_06() + { + } + + [Fact] + public void Test_460_07() + { + } + + [Fact] + public void Test_460_08() + { + } + + [Fact] + public void Test_460_09() + { + } + + [Fact] + public void Test_460_10() + { + } + + [Fact] + public void Test_460_11() + { + } + + [Fact] + public void Test_460_12() + { + } + + [Fact] + public void Test_460_13() + { + } + + [Fact] + public void Test_460_14() + { + } + + [Fact] + public void Test_460_15() + { + } + + [Fact] + public void Test_460_16() + { + } + + [Fact] + public void Test_460_17() + { + } + + [Fact] + public void Test_460_18() + { + } + + [Fact] + public void Test_460_19() + { + } + + [Fact] + public void Test_460_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_461 + { + #region PassingTests + [Fact] + public void Test_461_01() + { + } + + [Fact] + public void Test_461_02() + { + } + + [Fact] + public void Test_461_03() + { + } + + [Fact] + public void Test_461_04() + { + } + + [Fact] + public void Test_461_05() + { + } + + [Fact] + public void Test_461_06() + { + } + + [Fact] + public void Test_461_07() + { + } + + [Fact] + public void Test_461_08() + { + } + + [Fact] + public void Test_461_09() + { + } + + [Fact] + public void Test_461_10() + { + } + + [Fact] + public void Test_461_11() + { + } + + [Fact] + public void Test_461_12() + { + } + + [Fact] + public void Test_461_13() + { + } + + [Fact] + public void Test_461_14() + { + } + + [Fact] + public void Test_461_15() + { + } + + [Fact] + public void Test_461_16() + { + } + + [Fact] + public void Test_461_17() + { + } + + [Fact] + public void Test_461_18() + { + } + + [Fact] + public void Test_461_19() + { + } + + [Fact] + public void Test_461_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_462 + { + #region PassingTests + [Fact] + public void Test_462_01() + { + } + + [Fact] + public void Test_462_02() + { + } + + [Fact] + public void Test_462_03() + { + } + + [Fact] + public void Test_462_04() + { + } + + [Fact] + public void Test_462_05() + { + } + + [Fact] + public void Test_462_06() + { + } + + [Fact] + public void Test_462_07() + { + } + + [Fact] + public void Test_462_08() + { + } + + [Fact] + public void Test_462_09() + { + } + + [Fact] + public void Test_462_10() + { + } + + [Fact] + public void Test_462_11() + { + } + + [Fact] + public void Test_462_12() + { + } + + [Fact] + public void Test_462_13() + { + } + + [Fact] + public void Test_462_14() + { + } + + [Fact] + public void Test_462_15() + { + } + + [Fact] + public void Test_462_16() + { + } + + [Fact] + public void Test_462_17() + { + } + + [Fact] + public void Test_462_18() + { + } + + [Fact] + public void Test_462_19() + { + } + + [Fact] + public void Test_462_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_463 + { + #region PassingTests + [Fact] + public void Test_463_01() + { + } + + [Fact] + public void Test_463_02() + { + } + + [Fact] + public void Test_463_03() + { + } + + [Fact] + public void Test_463_04() + { + } + + [Fact] + public void Test_463_05() + { + } + + [Fact] + public void Test_463_06() + { + } + + [Fact] + public void Test_463_07() + { + } + + [Fact] + public void Test_463_08() + { + } + + [Fact] + public void Test_463_09() + { + } + + [Fact] + public void Test_463_10() + { + } + + [Fact] + public void Test_463_11() + { + } + + [Fact] + public void Test_463_12() + { + } + + [Fact] + public void Test_463_13() + { + } + + [Fact] + public void Test_463_14() + { + } + + [Fact] + public void Test_463_15() + { + } + + [Fact] + public void Test_463_16() + { + } + + [Fact] + public void Test_463_17() + { + } + + [Fact] + public void Test_463_18() + { + } + + [Fact] + public void Test_463_19() + { + } + + [Fact] + public void Test_463_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_464 + { + #region PassingTests + [Fact] + public void Test_464_01() + { + } + + [Fact] + public void Test_464_02() + { + } + + [Fact] + public void Test_464_03() + { + } + + [Fact] + public void Test_464_04() + { + } + + [Fact] + public void Test_464_05() + { + } + + [Fact] + public void Test_464_06() + { + } + + [Fact] + public void Test_464_07() + { + } + + [Fact] + public void Test_464_08() + { + } + + [Fact] + public void Test_464_09() + { + } + + [Fact] + public void Test_464_10() + { + } + + [Fact] + public void Test_464_11() + { + } + + [Fact] + public void Test_464_12() + { + } + + [Fact] + public void Test_464_13() + { + } + + [Fact] + public void Test_464_14() + { + } + + [Fact] + public void Test_464_15() + { + } + + [Fact] + public void Test_464_16() + { + } + + [Fact] + public void Test_464_17() + { + } + + [Fact] + public void Test_464_18() + { + } + + [Fact] + public void Test_464_19() + { + } + + [Fact] + public void Test_464_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_465 + { + #region PassingTests + [Fact] + public void Test_465_01() + { + } + + [Fact] + public void Test_465_02() + { + } + + [Fact] + public void Test_465_03() + { + } + + [Fact] + public void Test_465_04() + { + } + + [Fact] + public void Test_465_05() + { + } + + [Fact] + public void Test_465_06() + { + } + + [Fact] + public void Test_465_07() + { + } + + [Fact] + public void Test_465_08() + { + } + + [Fact] + public void Test_465_09() + { + } + + [Fact] + public void Test_465_10() + { + } + + [Fact] + public void Test_465_11() + { + } + + [Fact] + public void Test_465_12() + { + } + + [Fact] + public void Test_465_13() + { + } + + [Fact] + public void Test_465_14() + { + } + + [Fact] + public void Test_465_15() + { + } + + [Fact] + public void Test_465_16() + { + } + + [Fact] + public void Test_465_17() + { + } + + [Fact] + public void Test_465_18() + { + } + + [Fact] + public void Test_465_19() + { + } + + [Fact] + public void Test_465_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_466 + { + #region PassingTests + [Fact] + public void Test_466_01() + { + } + + [Fact] + public void Test_466_02() + { + } + + [Fact] + public void Test_466_03() + { + } + + [Fact] + public void Test_466_04() + { + } + + [Fact] + public void Test_466_05() + { + } + + [Fact] + public void Test_466_06() + { + } + + [Fact] + public void Test_466_07() + { + } + + [Fact] + public void Test_466_08() + { + } + + [Fact] + public void Test_466_09() + { + } + + [Fact] + public void Test_466_10() + { + } + + [Fact] + public void Test_466_11() + { + } + + [Fact] + public void Test_466_12() + { + } + + [Fact] + public void Test_466_13() + { + } + + [Fact] + public void Test_466_14() + { + } + + [Fact] + public void Test_466_15() + { + } + + [Fact] + public void Test_466_16() + { + } + + [Fact] + public void Test_466_17() + { + } + + [Fact] + public void Test_466_18() + { + } + + [Fact] + public void Test_466_19() + { + } + + [Fact] + public void Test_466_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_467 + { + #region PassingTests + [Fact] + public void Test_467_01() + { + } + + [Fact] + public void Test_467_02() + { + } + + [Fact] + public void Test_467_03() + { + } + + [Fact] + public void Test_467_04() + { + } + + [Fact] + public void Test_467_05() + { + } + + [Fact] + public void Test_467_06() + { + } + + [Fact] + public void Test_467_07() + { + } + + [Fact] + public void Test_467_08() + { + } + + [Fact] + public void Test_467_09() + { + } + + [Fact] + public void Test_467_10() + { + } + + [Fact] + public void Test_467_11() + { + } + + [Fact] + public void Test_467_12() + { + } + + [Fact] + public void Test_467_13() + { + } + + [Fact] + public void Test_467_14() + { + } + + [Fact] + public void Test_467_15() + { + } + + [Fact] + public void Test_467_16() + { + } + + [Fact] + public void Test_467_17() + { + } + + [Fact] + public void Test_467_18() + { + } + + [Fact] + public void Test_467_19() + { + } + + [Fact] + public void Test_467_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_468 + { + #region PassingTests + [Fact] + public void Test_468_01() + { + } + + [Fact] + public void Test_468_02() + { + } + + [Fact] + public void Test_468_03() + { + } + + [Fact] + public void Test_468_04() + { + } + + [Fact] + public void Test_468_05() + { + } + + [Fact] + public void Test_468_06() + { + } + + [Fact] + public void Test_468_07() + { + } + + [Fact] + public void Test_468_08() + { + } + + [Fact] + public void Test_468_09() + { + } + + [Fact] + public void Test_468_10() + { + } + + [Fact] + public void Test_468_11() + { + } + + [Fact] + public void Test_468_12() + { + } + + [Fact] + public void Test_468_13() + { + } + + [Fact] + public void Test_468_14() + { + } + + [Fact] + public void Test_468_15() + { + } + + [Fact] + public void Test_468_16() + { + } + + [Fact] + public void Test_468_17() + { + } + + [Fact] + public void Test_468_18() + { + } + + [Fact] + public void Test_468_19() + { + } + + [Fact] + public void Test_468_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_469 + { + #region PassingTests + [Fact] + public void Test_469_01() + { + } + + [Fact] + public void Test_469_02() + { + } + + [Fact] + public void Test_469_03() + { + } + + [Fact] + public void Test_469_04() + { + } + + [Fact] + public void Test_469_05() + { + } + + [Fact] + public void Test_469_06() + { + } + + [Fact] + public void Test_469_07() + { + } + + [Fact] + public void Test_469_08() + { + } + + [Fact] + public void Test_469_09() + { + } + + [Fact] + public void Test_469_10() + { + } + + [Fact] + public void Test_469_11() + { + } + + [Fact] + public void Test_469_12() + { + } + + [Fact] + public void Test_469_13() + { + } + + [Fact] + public void Test_469_14() + { + } + + [Fact] + public void Test_469_15() + { + } + + [Fact] + public void Test_469_16() + { + } + + [Fact] + public void Test_469_17() + { + } + + [Fact] + public void Test_469_18() + { + } + + [Fact] + public void Test_469_19() + { + } + + [Fact] + public void Test_469_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_470 + { + #region PassingTests + [Fact] + public void Test_470_01() + { + } + + [Fact] + public void Test_470_02() + { + } + + [Fact] + public void Test_470_03() + { + } + + [Fact] + public void Test_470_04() + { + } + + [Fact] + public void Test_470_05() + { + } + + [Fact] + public void Test_470_06() + { + } + + [Fact] + public void Test_470_07() + { + } + + [Fact] + public void Test_470_08() + { + } + + [Fact] + public void Test_470_09() + { + } + + [Fact] + public void Test_470_10() + { + } + + [Fact] + public void Test_470_11() + { + } + + [Fact] + public void Test_470_12() + { + } + + [Fact] + public void Test_470_13() + { + } + + [Fact] + public void Test_470_14() + { + } + + [Fact] + public void Test_470_15() + { + } + + [Fact] + public void Test_470_16() + { + } + + [Fact] + public void Test_470_17() + { + } + + [Fact] + public void Test_470_18() + { + } + + [Fact] + public void Test_470_19() + { + } + + [Fact] + public void Test_470_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_471 + { + #region PassingTests + [Fact] + public void Test_471_01() + { + } + + [Fact] + public void Test_471_02() + { + } + + [Fact] + public void Test_471_03() + { + } + + [Fact] + public void Test_471_04() + { + } + + [Fact] + public void Test_471_05() + { + } + + [Fact] + public void Test_471_06() + { + } + + [Fact] + public void Test_471_07() + { + } + + [Fact] + public void Test_471_08() + { + } + + [Fact] + public void Test_471_09() + { + } + + [Fact] + public void Test_471_10() + { + } + + [Fact] + public void Test_471_11() + { + } + + [Fact] + public void Test_471_12() + { + } + + [Fact] + public void Test_471_13() + { + } + + [Fact] + public void Test_471_14() + { + } + + [Fact] + public void Test_471_15() + { + } + + [Fact] + public void Test_471_16() + { + } + + [Fact] + public void Test_471_17() + { + } + + [Fact] + public void Test_471_18() + { + } + + [Fact] + public void Test_471_19() + { + } + + [Fact] + public void Test_471_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_472 + { + #region PassingTests + [Fact] + public void Test_472_01() + { + } + + [Fact] + public void Test_472_02() + { + } + + [Fact] + public void Test_472_03() + { + } + + [Fact] + public void Test_472_04() + { + } + + [Fact] + public void Test_472_05() + { + } + + [Fact] + public void Test_472_06() + { + } + + [Fact] + public void Test_472_07() + { + } + + [Fact] + public void Test_472_08() + { + } + + [Fact] + public void Test_472_09() + { + } + + [Fact] + public void Test_472_10() + { + } + + [Fact] + public void Test_472_11() + { + } + + [Fact] + public void Test_472_12() + { + } + + [Fact] + public void Test_472_13() + { + } + + [Fact] + public void Test_472_14() + { + } + + [Fact] + public void Test_472_15() + { + } + + [Fact] + public void Test_472_16() + { + } + + [Fact] + public void Test_472_17() + { + } + + [Fact] + public void Test_472_18() + { + } + + [Fact] + public void Test_472_19() + { + } + + [Fact] + public void Test_472_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_473 + { + #region PassingTests + [Fact] + public void Test_473_01() + { + } + + [Fact] + public void Test_473_02() + { + } + + [Fact] + public void Test_473_03() + { + } + + [Fact] + public void Test_473_04() + { + } + + [Fact] + public void Test_473_05() + { + } + + [Fact] + public void Test_473_06() + { + } + + [Fact] + public void Test_473_07() + { + } + + [Fact] + public void Test_473_08() + { + } + + [Fact] + public void Test_473_09() + { + } + + [Fact] + public void Test_473_10() + { + } + + [Fact] + public void Test_473_11() + { + } + + [Fact] + public void Test_473_12() + { + } + + [Fact] + public void Test_473_13() + { + } + + [Fact] + public void Test_473_14() + { + } + + [Fact] + public void Test_473_15() + { + } + + [Fact] + public void Test_473_16() + { + } + + [Fact] + public void Test_473_17() + { + } + + [Fact] + public void Test_473_18() + { + } + + [Fact] + public void Test_473_19() + { + } + + [Fact] + public void Test_473_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_474 + { + #region PassingTests + [Fact] + public void Test_474_01() + { + } + + [Fact] + public void Test_474_02() + { + } + + [Fact] + public void Test_474_03() + { + } + + [Fact] + public void Test_474_04() + { + } + + [Fact] + public void Test_474_05() + { + } + + [Fact] + public void Test_474_06() + { + } + + [Fact] + public void Test_474_07() + { + } + + [Fact] + public void Test_474_08() + { + } + + [Fact] + public void Test_474_09() + { + } + + [Fact] + public void Test_474_10() + { + } + + [Fact] + public void Test_474_11() + { + } + + [Fact] + public void Test_474_12() + { + } + + [Fact] + public void Test_474_13() + { + } + + [Fact] + public void Test_474_14() + { + } + + [Fact] + public void Test_474_15() + { + } + + [Fact] + public void Test_474_16() + { + } + + [Fact] + public void Test_474_17() + { + } + + [Fact] + public void Test_474_18() + { + } + + [Fact] + public void Test_474_19() + { + } + + [Fact] + public void Test_474_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_475 + { + #region PassingTests + [Fact] + public void Test_475_01() + { + } + + [Fact] + public void Test_475_02() + { + } + + [Fact] + public void Test_475_03() + { + } + + [Fact] + public void Test_475_04() + { + } + + [Fact] + public void Test_475_05() + { + } + + [Fact] + public void Test_475_06() + { + } + + [Fact] + public void Test_475_07() + { + } + + [Fact] + public void Test_475_08() + { + } + + [Fact] + public void Test_475_09() + { + } + + [Fact] + public void Test_475_10() + { + } + + [Fact] + public void Test_475_11() + { + } + + [Fact] + public void Test_475_12() + { + } + + [Fact] + public void Test_475_13() + { + } + + [Fact] + public void Test_475_14() + { + } + + [Fact] + public void Test_475_15() + { + } + + [Fact] + public void Test_475_16() + { + } + + [Fact] + public void Test_475_17() + { + } + + [Fact] + public void Test_475_18() + { + } + + [Fact] + public void Test_475_19() + { + } + + [Fact] + public void Test_475_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_476 + { + #region PassingTests + [Fact] + public void Test_476_01() + { + } + + [Fact] + public void Test_476_02() + { + } + + [Fact] + public void Test_476_03() + { + } + + [Fact] + public void Test_476_04() + { + } + + [Fact] + public void Test_476_05() + { + } + + [Fact] + public void Test_476_06() + { + } + + [Fact] + public void Test_476_07() + { + } + + [Fact] + public void Test_476_08() + { + } + + [Fact] + public void Test_476_09() + { + } + + [Fact] + public void Test_476_10() + { + } + + [Fact] + public void Test_476_11() + { + } + + [Fact] + public void Test_476_12() + { + } + + [Fact] + public void Test_476_13() + { + } + + [Fact] + public void Test_476_14() + { + } + + [Fact] + public void Test_476_15() + { + } + + [Fact] + public void Test_476_16() + { + } + + [Fact] + public void Test_476_17() + { + } + + [Fact] + public void Test_476_18() + { + } + + [Fact] + public void Test_476_19() + { + } + + [Fact] + public void Test_476_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_477 + { + #region PassingTests + [Fact] + public void Test_477_01() + { + } + + [Fact] + public void Test_477_02() + { + } + + [Fact] + public void Test_477_03() + { + } + + [Fact] + public void Test_477_04() + { + } + + [Fact] + public void Test_477_05() + { + } + + [Fact] + public void Test_477_06() + { + } + + [Fact] + public void Test_477_07() + { + } + + [Fact] + public void Test_477_08() + { + } + + [Fact] + public void Test_477_09() + { + } + + [Fact] + public void Test_477_10() + { + } + + [Fact] + public void Test_477_11() + { + } + + [Fact] + public void Test_477_12() + { + } + + [Fact] + public void Test_477_13() + { + } + + [Fact] + public void Test_477_14() + { + } + + [Fact] + public void Test_477_15() + { + } + + [Fact] + public void Test_477_16() + { + } + + [Fact] + public void Test_477_17() + { + } + + [Fact] + public void Test_477_18() + { + } + + [Fact] + public void Test_477_19() + { + } + + [Fact] + public void Test_477_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_478 + { + #region PassingTests + [Fact] + public void Test_478_01() + { + } + + [Fact] + public void Test_478_02() + { + } + + [Fact] + public void Test_478_03() + { + } + + [Fact] + public void Test_478_04() + { + } + + [Fact] + public void Test_478_05() + { + } + + [Fact] + public void Test_478_06() + { + } + + [Fact] + public void Test_478_07() + { + } + + [Fact] + public void Test_478_08() + { + } + + [Fact] + public void Test_478_09() + { + } + + [Fact] + public void Test_478_10() + { + } + + [Fact] + public void Test_478_11() + { + } + + [Fact] + public void Test_478_12() + { + } + + [Fact] + public void Test_478_13() + { + } + + [Fact] + public void Test_478_14() + { + } + + [Fact] + public void Test_478_15() + { + } + + [Fact] + public void Test_478_16() + { + } + + [Fact] + public void Test_478_17() + { + } + + [Fact] + public void Test_478_18() + { + } + + [Fact] + public void Test_478_19() + { + } + + [Fact] + public void Test_478_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_479 + { + #region PassingTests + [Fact] + public void Test_479_01() + { + } + + [Fact] + public void Test_479_02() + { + } + + [Fact] + public void Test_479_03() + { + } + + [Fact] + public void Test_479_04() + { + } + + [Fact] + public void Test_479_05() + { + } + + [Fact] + public void Test_479_06() + { + } + + [Fact] + public void Test_479_07() + { + } + + [Fact] + public void Test_479_08() + { + } + + [Fact] + public void Test_479_09() + { + } + + [Fact] + public void Test_479_10() + { + } + + [Fact] + public void Test_479_11() + { + } + + [Fact] + public void Test_479_12() + { + } + + [Fact] + public void Test_479_13() + { + } + + [Fact] + public void Test_479_14() + { + } + + [Fact] + public void Test_479_15() + { + } + + [Fact] + public void Test_479_16() + { + } + + [Fact] + public void Test_479_17() + { + } + + [Fact] + public void Test_479_18() + { + } + + [Fact] + public void Test_479_19() + { + } + + [Fact] + public void Test_479_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_480 + { + #region PassingTests + [Fact] + public void Test_480_01() + { + } + + [Fact] + public void Test_480_02() + { + } + + [Fact] + public void Test_480_03() + { + } + + [Fact] + public void Test_480_04() + { + } + + [Fact] + public void Test_480_05() + { + } + + [Fact] + public void Test_480_06() + { + } + + [Fact] + public void Test_480_07() + { + } + + [Fact] + public void Test_480_08() + { + } + + [Fact] + public void Test_480_09() + { + } + + [Fact] + public void Test_480_10() + { + } + + [Fact] + public void Test_480_11() + { + } + + [Fact] + public void Test_480_12() + { + } + + [Fact] + public void Test_480_13() + { + } + + [Fact] + public void Test_480_14() + { + } + + [Fact] + public void Test_480_15() + { + } + + [Fact] + public void Test_480_16() + { + } + + [Fact] + public void Test_480_17() + { + } + + [Fact] + public void Test_480_18() + { + } + + [Fact] + public void Test_480_19() + { + } + + [Fact] + public void Test_480_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_481 + { + #region PassingTests + [Fact] + public void Test_481_01() + { + } + + [Fact] + public void Test_481_02() + { + } + + [Fact] + public void Test_481_03() + { + } + + [Fact] + public void Test_481_04() + { + } + + [Fact] + public void Test_481_05() + { + } + + [Fact] + public void Test_481_06() + { + } + + [Fact] + public void Test_481_07() + { + } + + [Fact] + public void Test_481_08() + { + } + + [Fact] + public void Test_481_09() + { + } + + [Fact] + public void Test_481_10() + { + } + + [Fact] + public void Test_481_11() + { + } + + [Fact] + public void Test_481_12() + { + } + + [Fact] + public void Test_481_13() + { + } + + [Fact] + public void Test_481_14() + { + } + + [Fact] + public void Test_481_15() + { + } + + [Fact] + public void Test_481_16() + { + } + + [Fact] + public void Test_481_17() + { + } + + [Fact] + public void Test_481_18() + { + } + + [Fact] + public void Test_481_19() + { + } + + [Fact] + public void Test_481_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_482 + { + #region PassingTests + [Fact] + public void Test_482_01() + { + } + + [Fact] + public void Test_482_02() + { + } + + [Fact] + public void Test_482_03() + { + } + + [Fact] + public void Test_482_04() + { + } + + [Fact] + public void Test_482_05() + { + } + + [Fact] + public void Test_482_06() + { + } + + [Fact] + public void Test_482_07() + { + } + + [Fact] + public void Test_482_08() + { + } + + [Fact] + public void Test_482_09() + { + } + + [Fact] + public void Test_482_10() + { + } + + [Fact] + public void Test_482_11() + { + } + + [Fact] + public void Test_482_12() + { + } + + [Fact] + public void Test_482_13() + { + } + + [Fact] + public void Test_482_14() + { + } + + [Fact] + public void Test_482_15() + { + } + + [Fact] + public void Test_482_16() + { + } + + [Fact] + public void Test_482_17() + { + } + + [Fact] + public void Test_482_18() + { + } + + [Fact] + public void Test_482_19() + { + } + + [Fact] + public void Test_482_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_483 + { + #region PassingTests + [Fact] + public void Test_483_01() + { + } + + [Fact] + public void Test_483_02() + { + } + + [Fact] + public void Test_483_03() + { + } + + [Fact] + public void Test_483_04() + { + } + + [Fact] + public void Test_483_05() + { + } + + [Fact] + public void Test_483_06() + { + } + + [Fact] + public void Test_483_07() + { + } + + [Fact] + public void Test_483_08() + { + } + + [Fact] + public void Test_483_09() + { + } + + [Fact] + public void Test_483_10() + { + } + + [Fact] + public void Test_483_11() + { + } + + [Fact] + public void Test_483_12() + { + } + + [Fact] + public void Test_483_13() + { + } + + [Fact] + public void Test_483_14() + { + } + + [Fact] + public void Test_483_15() + { + } + + [Fact] + public void Test_483_16() + { + } + + [Fact] + public void Test_483_17() + { + } + + [Fact] + public void Test_483_18() + { + } + + [Fact] + public void Test_483_19() + { + } + + [Fact] + public void Test_483_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_484 + { + #region PassingTests + [Fact] + public void Test_484_01() + { + } + + [Fact] + public void Test_484_02() + { + } + + [Fact] + public void Test_484_03() + { + } + + [Fact] + public void Test_484_04() + { + } + + [Fact] + public void Test_484_05() + { + } + + [Fact] + public void Test_484_06() + { + } + + [Fact] + public void Test_484_07() + { + } + + [Fact] + public void Test_484_08() + { + } + + [Fact] + public void Test_484_09() + { + } + + [Fact] + public void Test_484_10() + { + } + + [Fact] + public void Test_484_11() + { + } + + [Fact] + public void Test_484_12() + { + } + + [Fact] + public void Test_484_13() + { + } + + [Fact] + public void Test_484_14() + { + } + + [Fact] + public void Test_484_15() + { + } + + [Fact] + public void Test_484_16() + { + } + + [Fact] + public void Test_484_17() + { + } + + [Fact] + public void Test_484_18() + { + } + + [Fact] + public void Test_484_19() + { + } + + [Fact] + public void Test_484_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_485 + { + #region PassingTests + [Fact] + public void Test_485_01() + { + } + + [Fact] + public void Test_485_02() + { + } + + [Fact] + public void Test_485_03() + { + } + + [Fact] + public void Test_485_04() + { + } + + [Fact] + public void Test_485_05() + { + } + + [Fact] + public void Test_485_06() + { + } + + [Fact] + public void Test_485_07() + { + } + + [Fact] + public void Test_485_08() + { + } + + [Fact] + public void Test_485_09() + { + } + + [Fact] + public void Test_485_10() + { + } + + [Fact] + public void Test_485_11() + { + } + + [Fact] + public void Test_485_12() + { + } + + [Fact] + public void Test_485_13() + { + } + + [Fact] + public void Test_485_14() + { + } + + [Fact] + public void Test_485_15() + { + } + + [Fact] + public void Test_485_16() + { + } + + [Fact] + public void Test_485_17() + { + } + + [Fact] + public void Test_485_18() + { + } + + [Fact] + public void Test_485_19() + { + } + + [Fact] + public void Test_485_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_486 + { + #region PassingTests + [Fact] + public void Test_486_01() + { + } + + [Fact] + public void Test_486_02() + { + } + + [Fact] + public void Test_486_03() + { + } + + [Fact] + public void Test_486_04() + { + } + + [Fact] + public void Test_486_05() + { + } + + [Fact] + public void Test_486_06() + { + } + + [Fact] + public void Test_486_07() + { + } + + [Fact] + public void Test_486_08() + { + } + + [Fact] + public void Test_486_09() + { + } + + [Fact] + public void Test_486_10() + { + } + + [Fact] + public void Test_486_11() + { + } + + [Fact] + public void Test_486_12() + { + } + + [Fact] + public void Test_486_13() + { + } + + [Fact] + public void Test_486_14() + { + } + + [Fact] + public void Test_486_15() + { + } + + [Fact] + public void Test_486_16() + { + } + + [Fact] + public void Test_486_17() + { + } + + [Fact] + public void Test_486_18() + { + } + + [Fact] + public void Test_486_19() + { + } + + [Fact] + public void Test_486_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_487 + { + #region PassingTests + [Fact] + public void Test_487_01() + { + } + + [Fact] + public void Test_487_02() + { + } + + [Fact] + public void Test_487_03() + { + } + + [Fact] + public void Test_487_04() + { + } + + [Fact] + public void Test_487_05() + { + } + + [Fact] + public void Test_487_06() + { + } + + [Fact] + public void Test_487_07() + { + } + + [Fact] + public void Test_487_08() + { + } + + [Fact] + public void Test_487_09() + { + } + + [Fact] + public void Test_487_10() + { + } + + [Fact] + public void Test_487_11() + { + } + + [Fact] + public void Test_487_12() + { + } + + [Fact] + public void Test_487_13() + { + } + + [Fact] + public void Test_487_14() + { + } + + [Fact] + public void Test_487_15() + { + } + + [Fact] + public void Test_487_16() + { + } + + [Fact] + public void Test_487_17() + { + } + + [Fact] + public void Test_487_18() + { + } + + [Fact] + public void Test_487_19() + { + } + + [Fact] + public void Test_487_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_488 + { + #region PassingTests + [Fact] + public void Test_488_01() + { + } + + [Fact] + public void Test_488_02() + { + } + + [Fact] + public void Test_488_03() + { + } + + [Fact] + public void Test_488_04() + { + } + + [Fact] + public void Test_488_05() + { + } + + [Fact] + public void Test_488_06() + { + } + + [Fact] + public void Test_488_07() + { + } + + [Fact] + public void Test_488_08() + { + } + + [Fact] + public void Test_488_09() + { + } + + [Fact] + public void Test_488_10() + { + } + + [Fact] + public void Test_488_11() + { + } + + [Fact] + public void Test_488_12() + { + } + + [Fact] + public void Test_488_13() + { + } + + [Fact] + public void Test_488_14() + { + } + + [Fact] + public void Test_488_15() + { + } + + [Fact] + public void Test_488_16() + { + } + + [Fact] + public void Test_488_17() + { + } + + [Fact] + public void Test_488_18() + { + } + + [Fact] + public void Test_488_19() + { + } + + [Fact] + public void Test_488_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_489 + { + #region PassingTests + [Fact] + public void Test_489_01() + { + } + + [Fact] + public void Test_489_02() + { + } + + [Fact] + public void Test_489_03() + { + } + + [Fact] + public void Test_489_04() + { + } + + [Fact] + public void Test_489_05() + { + } + + [Fact] + public void Test_489_06() + { + } + + [Fact] + public void Test_489_07() + { + } + + [Fact] + public void Test_489_08() + { + } + + [Fact] + public void Test_489_09() + { + } + + [Fact] + public void Test_489_10() + { + } + + [Fact] + public void Test_489_11() + { + } + + [Fact] + public void Test_489_12() + { + } + + [Fact] + public void Test_489_13() + { + } + + [Fact] + public void Test_489_14() + { + } + + [Fact] + public void Test_489_15() + { + } + + [Fact] + public void Test_489_16() + { + } + + [Fact] + public void Test_489_17() + { + } + + [Fact] + public void Test_489_18() + { + } + + [Fact] + public void Test_489_19() + { + } + + [Fact] + public void Test_489_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_490 + { + #region PassingTests + [Fact] + public void Test_490_01() + { + } + + [Fact] + public void Test_490_02() + { + } + + [Fact] + public void Test_490_03() + { + } + + [Fact] + public void Test_490_04() + { + } + + [Fact] + public void Test_490_05() + { + } + + [Fact] + public void Test_490_06() + { + } + + [Fact] + public void Test_490_07() + { + } + + [Fact] + public void Test_490_08() + { + } + + [Fact] + public void Test_490_09() + { + } + + [Fact] + public void Test_490_10() + { + } + + [Fact] + public void Test_490_11() + { + } + + [Fact] + public void Test_490_12() + { + } + + [Fact] + public void Test_490_13() + { + } + + [Fact] + public void Test_490_14() + { + } + + [Fact] + public void Test_490_15() + { + } + + [Fact] + public void Test_490_16() + { + } + + [Fact] + public void Test_490_17() + { + } + + [Fact] + public void Test_490_18() + { + } + + [Fact] + public void Test_490_19() + { + } + + [Fact] + public void Test_490_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_491 + { + #region PassingTests + [Fact] + public void Test_491_01() + { + } + + [Fact] + public void Test_491_02() + { + } + + [Fact] + public void Test_491_03() + { + } + + [Fact] + public void Test_491_04() + { + } + + [Fact] + public void Test_491_05() + { + } + + [Fact] + public void Test_491_06() + { + } + + [Fact] + public void Test_491_07() + { + } + + [Fact] + public void Test_491_08() + { + } + + [Fact] + public void Test_491_09() + { + } + + [Fact] + public void Test_491_10() + { + } + + [Fact] + public void Test_491_11() + { + } + + [Fact] + public void Test_491_12() + { + } + + [Fact] + public void Test_491_13() + { + } + + [Fact] + public void Test_491_14() + { + } + + [Fact] + public void Test_491_15() + { + } + + [Fact] + public void Test_491_16() + { + } + + [Fact] + public void Test_491_17() + { + } + + [Fact] + public void Test_491_18() + { + } + + [Fact] + public void Test_491_19() + { + } + + [Fact] + public void Test_491_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_492 + { + #region PassingTests + [Fact] + public void Test_492_01() + { + } + + [Fact] + public void Test_492_02() + { + } + + [Fact] + public void Test_492_03() + { + } + + [Fact] + public void Test_492_04() + { + } + + [Fact] + public void Test_492_05() + { + } + + [Fact] + public void Test_492_06() + { + } + + [Fact] + public void Test_492_07() + { + } + + [Fact] + public void Test_492_08() + { + } + + [Fact] + public void Test_492_09() + { + } + + [Fact] + public void Test_492_10() + { + } + + [Fact] + public void Test_492_11() + { + } + + [Fact] + public void Test_492_12() + { + } + + [Fact] + public void Test_492_13() + { + } + + [Fact] + public void Test_492_14() + { + } + + [Fact] + public void Test_492_15() + { + } + + [Fact] + public void Test_492_16() + { + } + + [Fact] + public void Test_492_17() + { + } + + [Fact] + public void Test_492_18() + { + } + + [Fact] + public void Test_492_19() + { + } + + [Fact] + public void Test_492_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_493 + { + #region PassingTests + [Fact] + public void Test_493_01() + { + } + + [Fact] + public void Test_493_02() + { + } + + [Fact] + public void Test_493_03() + { + } + + [Fact] + public void Test_493_04() + { + } + + [Fact] + public void Test_493_05() + { + } + + [Fact] + public void Test_493_06() + { + } + + [Fact] + public void Test_493_07() + { + } + + [Fact] + public void Test_493_08() + { + } + + [Fact] + public void Test_493_09() + { + } + + [Fact] + public void Test_493_10() + { + } + + [Fact] + public void Test_493_11() + { + } + + [Fact] + public void Test_493_12() + { + } + + [Fact] + public void Test_493_13() + { + } + + [Fact] + public void Test_493_14() + { + } + + [Fact] + public void Test_493_15() + { + } + + [Fact] + public void Test_493_16() + { + } + + [Fact] + public void Test_493_17() + { + } + + [Fact] + public void Test_493_18() + { + } + + [Fact] + public void Test_493_19() + { + } + + [Fact] + public void Test_493_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_494 + { + #region PassingTests + [Fact] + public void Test_494_01() + { + } + + [Fact] + public void Test_494_02() + { + } + + [Fact] + public void Test_494_03() + { + } + + [Fact] + public void Test_494_04() + { + } + + [Fact] + public void Test_494_05() + { + } + + [Fact] + public void Test_494_06() + { + } + + [Fact] + public void Test_494_07() + { + } + + [Fact] + public void Test_494_08() + { + } + + [Fact] + public void Test_494_09() + { + } + + [Fact] + public void Test_494_10() + { + } + + [Fact] + public void Test_494_11() + { + } + + [Fact] + public void Test_494_12() + { + } + + [Fact] + public void Test_494_13() + { + } + + [Fact] + public void Test_494_14() + { + } + + [Fact] + public void Test_494_15() + { + } + + [Fact] + public void Test_494_16() + { + } + + [Fact] + public void Test_494_17() + { + } + + [Fact] + public void Test_494_18() + { + } + + [Fact] + public void Test_494_19() + { + } + + [Fact] + public void Test_494_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_495 + { + #region PassingTests + [Fact] + public void Test_495_01() + { + } + + [Fact] + public void Test_495_02() + { + } + + [Fact] + public void Test_495_03() + { + } + + [Fact] + public void Test_495_04() + { + } + + [Fact] + public void Test_495_05() + { + } + + [Fact] + public void Test_495_06() + { + } + + [Fact] + public void Test_495_07() + { + } + + [Fact] + public void Test_495_08() + { + } + + [Fact] + public void Test_495_09() + { + } + + [Fact] + public void Test_495_10() + { + } + + [Fact] + public void Test_495_11() + { + } + + [Fact] + public void Test_495_12() + { + } + + [Fact] + public void Test_495_13() + { + } + + [Fact] + public void Test_495_14() + { + } + + [Fact] + public void Test_495_15() + { + } + + [Fact] + public void Test_495_16() + { + } + + [Fact] + public void Test_495_17() + { + } + + [Fact] + public void Test_495_18() + { + } + + [Fact] + public void Test_495_19() + { + } + + [Fact] + public void Test_495_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_496 + { + #region PassingTests + [Fact] + public void Test_496_01() + { + } + + [Fact] + public void Test_496_02() + { + } + + [Fact] + public void Test_496_03() + { + } + + [Fact] + public void Test_496_04() + { + } + + [Fact] + public void Test_496_05() + { + } + + [Fact] + public void Test_496_06() + { + } + + [Fact] + public void Test_496_07() + { + } + + [Fact] + public void Test_496_08() + { + } + + [Fact] + public void Test_496_09() + { + } + + [Fact] + public void Test_496_10() + { + } + + [Fact] + public void Test_496_11() + { + } + + [Fact] + public void Test_496_12() + { + } + + [Fact] + public void Test_496_13() + { + } + + [Fact] + public void Test_496_14() + { + } + + [Fact] + public void Test_496_15() + { + } + + [Fact] + public void Test_496_16() + { + } + + [Fact] + public void Test_496_17() + { + } + + [Fact] + public void Test_496_18() + { + } + + [Fact] + public void Test_496_19() + { + } + + [Fact] + public void Test_496_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_497 + { + #region PassingTests + [Fact] + public void Test_497_01() + { + } + + [Fact] + public void Test_497_02() + { + } + + [Fact] + public void Test_497_03() + { + } + + [Fact] + public void Test_497_04() + { + } + + [Fact] + public void Test_497_05() + { + } + + [Fact] + public void Test_497_06() + { + } + + [Fact] + public void Test_497_07() + { + } + + [Fact] + public void Test_497_08() + { + } + + [Fact] + public void Test_497_09() + { + } + + [Fact] + public void Test_497_10() + { + } + + [Fact] + public void Test_497_11() + { + } + + [Fact] + public void Test_497_12() + { + } + + [Fact] + public void Test_497_13() + { + } + + [Fact] + public void Test_497_14() + { + } + + [Fact] + public void Test_497_15() + { + } + + [Fact] + public void Test_497_16() + { + } + + [Fact] + public void Test_497_17() + { + } + + [Fact] + public void Test_497_18() + { + } + + [Fact] + public void Test_497_19() + { + } + + [Fact] + public void Test_497_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_498 + { + #region PassingTests + [Fact] + public void Test_498_01() + { + } + + [Fact] + public void Test_498_02() + { + } + + [Fact] + public void Test_498_03() + { + } + + [Fact] + public void Test_498_04() + { + } + + [Fact] + public void Test_498_05() + { + } + + [Fact] + public void Test_498_06() + { + } + + [Fact] + public void Test_498_07() + { + } + + [Fact] + public void Test_498_08() + { + } + + [Fact] + public void Test_498_09() + { + } + + [Fact] + public void Test_498_10() + { + } + + [Fact] + public void Test_498_11() + { + } + + [Fact] + public void Test_498_12() + { + } + + [Fact] + public void Test_498_13() + { + } + + [Fact] + public void Test_498_14() + { + } + + [Fact] + public void Test_498_15() + { + } + + [Fact] + public void Test_498_16() + { + } + + [Fact] + public void Test_498_17() + { + } + + [Fact] + public void Test_498_18() + { + } + + [Fact] + public void Test_498_19() + { + } + + [Fact] + public void Test_498_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_499 + { + #region PassingTests + [Fact] + public void Test_499_01() + { + } + + [Fact] + public void Test_499_02() + { + } + + [Fact] + public void Test_499_03() + { + } + + [Fact] + public void Test_499_04() + { + } + + [Fact] + public void Test_499_05() + { + } + + [Fact] + public void Test_499_06() + { + } + + [Fact] + public void Test_499_07() + { + } + + [Fact] + public void Test_499_08() + { + } + + [Fact] + public void Test_499_09() + { + } + + [Fact] + public void Test_499_10() + { + } + + [Fact] + public void Test_499_11() + { + } + + [Fact] + public void Test_499_12() + { + } + + [Fact] + public void Test_499_13() + { + } + + [Fact] + public void Test_499_14() + { + } + + [Fact] + public void Test_499_15() + { + } + + [Fact] + public void Test_499_16() + { + } + + [Fact] + public void Test_499_17() + { + } + + [Fact] + public void Test_499_18() + { + } + + [Fact] + public void Test_499_19() + { + } + + [Fact] + public void Test_499_20() + { + } + + #endregion + + #region FailingTests + #endregion + } + public class TestClass_500 + { + #region PassingTests + [Fact] + public void Test_500_01() + { + } + + [Fact] + public void Test_500_02() + { + } + + [Fact] + public void Test_500_03() + { + } + + [Fact] + public void Test_500_04() + { + } + + [Fact] + public void Test_500_05() + { + } + + [Fact] + public void Test_500_06() + { + } + + [Fact] + public void Test_500_07() + { + } + + [Fact] + public void Test_500_08() + { + } + + [Fact] + public void Test_500_09() + { + } + + [Fact] + public void Test_500_10() + { + } + + [Fact] + public void Test_500_11() + { + } + + [Fact] + public void Test_500_12() + { + } + + [Fact] + public void Test_500_13() + { + } + + [Fact] + public void Test_500_14() + { + } + + [Fact] + public void Test_500_15() + { + } + + [Fact] + public void Test_500_16() + { + } + + [Fact] + public void Test_500_17() + { + } + + [Fact] + public void Test_500_18() + { + } + + [Fact] + public void Test_500_19() + { + } + + [Fact] + public void Test_500_20() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/XUnit10kPassing/XunitTests.tt b/test/TestAssets/performance/XUnit10kPassing/XunitTests.tt new file mode 100644 index 0000000000..a4fe823b4d --- /dev/null +++ b/test/TestAssets/performance/XUnit10kPassing/XunitTests.tt @@ -0,0 +1,55 @@ +using Xunit; + +namespace Tests +{ +<# + int classes = 500; + int passedTests = 20; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/performance/XUnit1Passing/XUnit1Passing.csproj b/test/TestAssets/performance/XUnit1Passing/XUnit1Passing.csproj new file mode 100644 index 0000000000..393eb3be00 --- /dev/null +++ b/test/TestAssets/performance/XUnit1Passing/XUnit1Passing.csproj @@ -0,0 +1,32 @@ + + + + net9.0;net48 + false + + + + + + + + + + + TextTemplatingFileGenerator + XunitTests.cs + + + + + + + + + + True + True + XunitTests.tt + + + diff --git a/test/TestAssets/performance/XUnit1Passing/XunitTests.cs b/test/TestAssets/performance/XUnit1Passing/XunitTests.cs new file mode 100644 index 0000000000..9bf5fb783a --- /dev/null +++ b/test/TestAssets/performance/XUnit1Passing/XunitTests.cs @@ -0,0 +1,18 @@ +using Xunit; + +namespace Tests +{ + public class TestClass_01 + { + #region PassingTests + [Fact] + public void Test_01_01() + { + } + + #endregion + + #region FailingTests + #endregion + } +} diff --git a/test/TestAssets/performance/XUnit1Passing/XunitTests.tt b/test/TestAssets/performance/XUnit1Passing/XunitTests.tt new file mode 100644 index 0000000000..97f62aefa6 --- /dev/null +++ b/test/TestAssets/performance/XUnit1Passing/XunitTests.tt @@ -0,0 +1,55 @@ +using Xunit; + +namespace Tests +{ +<# + int classes = 1; + int passedTests = 1; + int failedTests = 0; + String padding = "00"; + + String testmethodprefix = "Test_"; +#> +<# + for(int c=1;c<=classes;c++) + { + String className = "TestClass_" + c.ToString(padding); +#> + public class <#=className#> + { + #region PassingTests +<# + for(int t=1;t<=passedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + } + +<# + } +#> + #endregion + + #region FailingTests +<# + for(int t=1;t<=failedTests;t++) + { + String methodName= testmethodprefix + c.ToString(padding) + "_" + t.ToString(padding); +#> + [Fact] + public void <#=methodName#>() + { + Assert.Fail(); + } +<# + } +#> + #endregion + } +<# + } +#> +} diff --git a/test/TestAssets/problematic-child/Program.cs b/test/TestAssets/problematic-child/Program.cs index 882c6972b4..9fd5fc8786 100644 --- a/test/TestAssets/problematic-child/Program.cs +++ b/test/TestAssets/problematic-child/Program.cs @@ -1,11 +1,16 @@ -using System; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; using System.Diagnostics; +using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.InteropServices; -using System.Threading; +#pragma warning disable IDE1006 // Naming Styles namespace problematic_child +#pragma warning restore IDE1006 // Naming Styles { class Program { @@ -13,12 +18,12 @@ static void Main(string[] args) { if (args.Length > 0) { - var val = int.Parse(args[0]); + var val = int.Parse(args[0], CultureInfo.InvariantCulture); if (val > 0) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - Process.Start(Process.GetCurrentProcess().MainModule.FileName, (val - 1).ToString()); + Process.Start(Process.GetCurrentProcess().MainModule.FileName, (val - 1).ToString(CultureInfo.InvariantCulture)); } else { diff --git a/test/TestAssets/problematic-child/problematic-child.csproj b/test/TestAssets/problematic-child/problematic-child.csproj index 7b87f7f0c3..f00b791029 100644 --- a/test/TestAssets/problematic-child/problematic-child.csproj +++ b/test/TestAssets/problematic-child/problematic-child.csproj @@ -1,15 +1,12 @@ - ..\..\..\ true true - - - + - net5.0 + net8.0;net9.0 Exe problematic_child @@ -17,5 +14,5 @@ - + diff --git a/test/TestAssets/timeout/UnitTest1.cs b/test/TestAssets/timeout/UnitTest1.cs index 22cf1b532a..609ccd7e0a 100644 --- a/test/TestAssets/timeout/UnitTest1.cs +++ b/test/TestAssets/timeout/UnitTest1.cs @@ -1,7 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System.Threading; +#pragma warning disable IDE1006 // Naming Styles namespace timeout +#pragma warning restore IDE1006 // Naming Styles { [TestClass] public class UnitTest1 diff --git a/test/TestAssets/timeout/timeout.csproj b/test/TestAssets/timeout/timeout.csproj index 2ec2b2ff9d..8af7af2b2a 100644 --- a/test/TestAssets/timeout/timeout.csproj +++ b/test/TestAssets/timeout/timeout.csproj @@ -1,26 +1,20 @@ - - + + - ..\..\..\ true true - - - - - net452;net461;net472;net48;netcoreapp2.1;netcoreapp3.1;net5.0 - netcoreapp3.1 - false + + $(NetFrameworkMinimum);net472;net48;$(NetCoreAppMinimum);net8.0;net9.0 false - - - - + + + + - + diff --git a/test/TranslationLayer.UnitTests/ConsoleParametersTests.cs b/test/TranslationLayer.UnitTests/ConsoleParametersTests.cs index f99796731c..eeb1dcc17c 100644 --- a/test/TranslationLayer.UnitTests/ConsoleParametersTests.cs +++ b/test/TranslationLayer.UnitTests/ConsoleParametersTests.cs @@ -1,38 +1,38 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests -{ - using System.Diagnostics; +using System.Diagnostics; + +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; +namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests; - [TestClass] - public class ConsoleParametersTests +[TestClass] +public class ConsoleParametersTests +{ + [TestMethod] + public void LogFilePathShouldEnsureDoubleQuote() { - [TestMethod] - public void LogFilePathShouldEnsureDoubleQuote() - { - var moqFileHelper = new Mock(); - moqFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + var moqFileHelper = new Mock(); + moqFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - var sut = new ConsoleParameters(moqFileHelper.Object); + var sut = new ConsoleParameters(moqFileHelper.Object); - sut.LogFilePath = "c:\\users\\file location\\o.txt"; + sut.LogFilePath = "c:\\users\\file location\\o.txt"; - string result = sut.LogFilePath; + string result = sut.LogFilePath; - Assert.IsTrue(result.StartsWith("\"")); - } + Assert.IsTrue(result.StartsWith("\"")); + } - [TestMethod] - public void TraceLevelShouldHaveVerboseAsDefaultValue() - { - var consoleParameters = new ConsoleParameters(new FileHelper()); - Assert.AreEqual(consoleParameters.TraceLevel, TraceLevel.Verbose); - } + [TestMethod] + public void TraceLevelShouldHaveVerboseAsDefaultValue() + { + var consoleParameters = new ConsoleParameters(new FileHelper()); + Assert.AreEqual(consoleParameters.TraceLevel, TraceLevel.Verbose); } } diff --git a/test/TranslationLayer.UnitTests/DiscoveryEventsHandleConverterTests.cs b/test/TranslationLayer.UnitTests/DiscoveryEventsHandleConverterTests.cs index b53aa25f89..78301f4901 100644 --- a/test/TranslationLayer.UnitTests/DiscoveryEventsHandleConverterTests.cs +++ b/test/TranslationLayer.UnitTests/DiscoveryEventsHandleConverterTests.cs @@ -1,70 +1,68 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using System; -namespace TranslationLayer.UnitTests -{ - using System; +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; - using Moq; +namespace TranslationLayer.UnitTests; - [TestClass] - public class DiscoveryEventsHandleConverterTests +[TestClass] +public class DiscoveryEventsHandleConverterTests +{ + private readonly Mock _mockTestdiscoveryEventsHandler; + public DiscoveryEventsHandleConverterTests() { - private Mock mockTestdiscoveryEventsHandler; - public DiscoveryEventsHandleConverterTests() - { - this.mockTestdiscoveryEventsHandler = new Mock(); - } + _mockTestdiscoveryEventsHandler = new Mock(); + } - [TestMethod] - public void ConstructorShouldThrowArgumentExceptionIfTestDiscoveryEventHandlerIsNull() - { - Assert.ThrowsException( () => new DiscoveryEventsHandleConverter(null)); - } + [TestMethod] + public void ConstructorShouldThrowArgumentExceptionIfTestDiscoveryEventHandlerIsNull() + { + Assert.ThrowsException(() => new DiscoveryEventsHandleConverter(null!)); + } - [TestMethod] - public void HandleDiscoveryCompleteShouldCallTestDiscoveryHandler1Method() - { - var discoveryEventsHandler = new DiscoveryEventsHandleConverter(this.mockTestdiscoveryEventsHandler.Object); + [TestMethod] + public void HandleDiscoveryCompleteShouldCallTestDiscoveryHandler1Method() + { + var discoveryEventsHandler = new DiscoveryEventsHandleConverter(_mockTestdiscoveryEventsHandler.Object); - discoveryEventsHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(-1, false), null); - this.mockTestdiscoveryEventsHandler.Verify(o => o.HandleDiscoveryComplete(-1, null, false), Times.Once); - } + discoveryEventsHandler.HandleDiscoveryComplete(new DiscoveryCompleteEventArgs(-1, false), null); + _mockTestdiscoveryEventsHandler.Verify(o => o.HandleDiscoveryComplete(-1, null, false), Times.Once); + } - [TestMethod] - public void HandleDiscoveryTestsShouldCallTestDiscoveryHandler1Method() - { - var discoveryEventsHandler = new DiscoveryEventsHandleConverter(this.mockTestdiscoveryEventsHandler.Object); + [TestMethod] + public void HandleDiscoveryTestsShouldCallTestDiscoveryHandler1Method() + { + var discoveryEventsHandler = new DiscoveryEventsHandleConverter(_mockTestdiscoveryEventsHandler.Object); - discoveryEventsHandler.HandleDiscoveredTests(null); + discoveryEventsHandler.HandleDiscoveredTests(null); - this.mockTestdiscoveryEventsHandler.Verify(o => o.HandleDiscoveredTests(null), Times.Once); - } + _mockTestdiscoveryEventsHandler.Verify(o => o.HandleDiscoveredTests(null), Times.Once); + } - [TestMethod] - public void HandleRawMessageShouldCallTestDiscoveryHandler1Method() - { - var discoveryEventsHandler = new DiscoveryEventsHandleConverter(this.mockTestdiscoveryEventsHandler.Object); + [TestMethod] + public void HandleRawMessageShouldCallTestDiscoveryHandler1Method() + { + var discoveryEventsHandler = new DiscoveryEventsHandleConverter(_mockTestdiscoveryEventsHandler.Object); - discoveryEventsHandler.HandleRawMessage("DummyMessage"); + discoveryEventsHandler.HandleRawMessage("DummyMessage"); - this.mockTestdiscoveryEventsHandler.Verify(o => o.HandleRawMessage("DummyMessage"), Times.Once); - } + _mockTestdiscoveryEventsHandler.Verify(o => o.HandleRawMessage("DummyMessage"), Times.Once); + } - [TestMethod] - public void HandleLogMessageShouldCallTestDiscoveryHandler1Method() - { - var discoveryEventsHandler = new DiscoveryEventsHandleConverter(this.mockTestdiscoveryEventsHandler.Object); + [TestMethod] + public void HandleLogMessageShouldCallTestDiscoveryHandler1Method() + { + var discoveryEventsHandler = new DiscoveryEventsHandleConverter(_mockTestdiscoveryEventsHandler.Object); - discoveryEventsHandler.HandleLogMessage(TestMessageLevel.Warning, "DummyMessage"); + discoveryEventsHandler.HandleLogMessage(TestMessageLevel.Warning, "DummyMessage"); - this.mockTestdiscoveryEventsHandler.Verify(o => o.HandleLogMessage(TestMessageLevel.Warning, "DummyMessage"), Times.Once); - } + _mockTestdiscoveryEventsHandler.Verify(o => o.HandleLogMessage(TestMessageLevel.Warning, "DummyMessage"), Times.Once); } } diff --git a/test/TranslationLayer.UnitTests/Program.cs b/test/TranslationLayer.UnitTests/Program.cs deleted file mode 100644 index cb4dfb25dc..0000000000 --- a/test/TranslationLayer.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/TranslationLayer.UnitTests/Properties/AssemblyInfo.cs b/test/TranslationLayer.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index ae5b7d41b5..0000000000 --- a/test/TranslationLayer.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("7da16d44-71ea-436f-a201-573861dc21ea")] diff --git a/test/TranslationLayer.UnitTests/TestSessionTests.cs b/test/TranslationLayer.UnitTests/TestSessionTests.cs index 01989a2f6a..5b2220d1bc 100644 --- a/test/TranslationLayer.UnitTests/TestSessionTests.cs +++ b/test/TranslationLayer.UnitTests/TestSessionTests.cs @@ -1,587 +1,749 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.VsTestConsole.TranslationLayer; +using Microsoft.VisualStudio.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests; + +[TestClass] +[Obsolete("This API is not final yet and is subject to changes.", false)] +public class TestSessionTests { - using System; - using System.Collections.Generic; - using System.Threading.Tasks; - - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public class TestSessionTests - { - private readonly string testSettings = "TestSettings"; - private readonly List testSources = new List { "Hello", "World" }; - private readonly List testCases = new List - { - new TestCase("a.b.c", new Uri("d://uri"), "a.dll"), - new TestCase("d.e.f", new Uri("g://uri"), "d.dll") - }; - - private TestSessionInfo testSessionInfo; - private ITestSession testSession; - private Mock mockTestSessionEventsHandler; - private Mock mockVsTestConsoleWrapper; - - [TestInitialize] - public void TestInitialize() - { - this.testSessionInfo = new TestSessionInfo(); - this.mockTestSessionEventsHandler = new Mock(); - this.mockVsTestConsoleWrapper = new Mock(); - - this.testSession = new TestSession( - this.testSessionInfo, - this.mockTestSessionEventsHandler.Object, - this.mockVsTestConsoleWrapper.Object); - } - - #region ITestSession - [TestMethod] - public void AbortTestRunShouldCallConsoleWrapperAbortTestRun() - { - this.testSession.AbortTestRun(); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.AbortTestRun(), - Times.Once); - } - - [TestMethod] - public void CancelDiscoveryShouldCallConsoleWrapperCancelDiscovery() - { - this.testSession.CancelDiscovery(); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.CancelDiscovery(), - Times.Once); - } - - [TestMethod] - public void CancelTestRunShouldCallConsoleWrapperCancelTestRun() - { - this.testSession.CancelTestRun(); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.CancelTestRun(), - Times.Once); - } - - [TestMethod] - public void DiscoverTestsShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments1() - { - this.testSession.DiscoverTests( - this.testSources, - this.testSettings, - new Mock().Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.DiscoverTests( - this.testSources, - this.testSettings, - null, - this.testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void DiscoverTestsShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestDiscoveryEventsHandler = new Mock(); - - this.testSession.DiscoverTests( - this.testSources, - this.testSettings, + private readonly string _testSettings = "TestSettings"; + private readonly List _testSources = ["Hello", "World"]; + private readonly List _testCases = + [ + new TestCase("a.b.c", new Uri("d://uri"), "a.dll"), + new TestCase("d.e.f", new Uri("g://uri"), "d.dll") + ]; + + private readonly TestSessionInfo _testSessionInfo; + private readonly ITestSession _testSession; + private readonly Mock _mockTestSessionEventsHandler; + private readonly Mock _mockVsTestConsoleWrapper; + + public TestSessionTests() + { + _testSessionInfo = new TestSessionInfo(); + _mockTestSessionEventsHandler = new Mock(); + _mockVsTestConsoleWrapper = new Mock(); + + _testSession = new TestSession( + _testSessionInfo, + _mockTestSessionEventsHandler.Object, + _mockVsTestConsoleWrapper.Object); + } + + #region ITestSession + [TestMethod] + public void AbortTestRunShouldCallConsoleWrapperAbortTestRun() + { + _testSession.AbortTestRun(); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.AbortTestRun(), + Times.Once); + } + + [TestMethod] + public void CancelDiscoveryShouldCallConsoleWrapperCancelDiscovery() + { + _testSession.CancelDiscovery(); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.CancelDiscovery(), + Times.Once); + } + + [TestMethod] + public void CancelTestRunShouldCallConsoleWrapperCancelTestRun() + { + _testSession.CancelTestRun(); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.CancelTestRun(), + Times.Once); + } + + [TestMethod] + public void DiscoverTestsShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments1() + { + _testSession.DiscoverTests( + _testSources, + _testSettings, + new Mock().Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.DiscoverTests( + _testSources, + _testSettings, + null, + _testSessionInfo, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void DiscoverTestsShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestDiscoveryEventsHandler = new Mock(); + + _testSession.DiscoverTests( + _testSources, + _testSettings, + testPlatformOptions, + mockTestDiscoveryEventsHandler.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.DiscoverTests( + _testSources, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestDiscoveryEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + + _testSession.RunTests( + _testSources, + _testSettings, + mockTestRunEventsHandler.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTests( + _testSources, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + + _testSession.RunTests( + _testSources, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTests( + _testSources, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + + _testSession.RunTests( + _testCases, + _testSettings, + mockTestRunEventsHandler.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTests( + _testCases, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + + _testSession.RunTests( + _testCases, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTests( + _testCases, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArgumentsAndTelemetryHandler() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var telemetryEventsHandler = new Mock(); + + _testSession.RunTests( + _testCases, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object, + telemetryEventsHandler.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTests( + _testCases, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + telemetryEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + _testSession.RunTestsWithCustomTestHost( + _testSources, + _testSettings, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHost( + _testSources, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + _testSession.RunTestsWithCustomTestHost( + _testSources, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHost( + _testSources, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + _testSession.RunTestsWithCustomTestHost( + _testCases, + _testSettings, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHost( + _testCases, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + _testSession.RunTestsWithCustomTestHost( + _testCases, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHost( + _testCases, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArgumentsAndTelemetryHandler() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + var telemetryEventsHandler = new Mock(); + + _testSession.RunTestsWithCustomTestHost( + _testCases, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object, + telemetryEventsHandler.Object, + mockTestHostLauncher.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHost( + _testCases, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + telemetryEventsHandler.Object, + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public void StopTestSessionWithNoArgsShouldCallConsoleWrapperStopTestSessionWithCorrectArguments() + { + _testSession.StopTestSession(); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.StopTestSession( + _testSessionInfo, + null, + _mockTestSessionEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public void StopTestSessionWithOneArgShouldCallConsoleWrapperStopTestSessionWithCorrectArguments() + { + var mockTestSessionEventsHandler2 = new Mock(); + + _testSession.StopTestSession(mockTestSessionEventsHandler2.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.StopTestSession( + _testSessionInfo, + null, + mockTestSessionEventsHandler2.Object), + Times.Once); + } + + [TestMethod] + public void StopTestSessionWithTwoArgsShouldCallConsoleWrapperStopTestSessionWithCorrectArguments() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestSessionEventsHandler2 = new Mock(); + + _testSession.StopTestSession(testPlatformOptions, mockTestSessionEventsHandler2.Object); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.StopTestSession( + _testSessionInfo, + testPlatformOptions, + mockTestSessionEventsHandler2.Object), + Times.Once); + } + #endregion + + #region ITestSessionAsync + [TestMethod] + public async Task DiscoverTestsAsyncShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments1() + { + await _testSession.DiscoverTestsAsync( + _testSources, + _testSettings, + new Mock().Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.DiscoverTestsAsync( + _testSources, + _testSettings, + null, + _testSessionInfo, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task DiscoverTestsAsyncShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestDiscoveryEventsHandler = new Mock(); + + await _testSession.DiscoverTestsAsync( + _testSources, + _testSettings, + testPlatformOptions, + mockTestDiscoveryEventsHandler.Object) + .ConfigureAwait(false); ; + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.DiscoverTestsAsync( + _testSources, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestDiscoveryEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + + await _testSession.RunTestsAsync( + _testSources, + _testSettings, + mockTestRunEventsHandler.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsAsync( + _testSources, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + + await _testSession.RunTestsAsync( + _testSources, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsAsync( + _testSources, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + + await _testSession.RunTestsAsync( + _testCases, + _testSettings, + mockTestRunEventsHandler.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsAsync( + _testCases, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + + await _testSession.RunTestsAsync( + _testCases, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object) + .ConfigureAwait(false); ; + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsAsync( + _testCases, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArgumentsWithTelemetryHandler() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var telemetryEventsHandler = new Mock(); + + await _testSession.RunTestsAsync( + _testCases, + _testSettings, + testPlatformOptions, + mockTestRunEventsHandler.Object, + telemetryEventsHandler.Object) + .ConfigureAwait(false); ; + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsAsync( + _testCases, + _testSettings, + testPlatformOptions, + _testSessionInfo, + mockTestRunEventsHandler.Object, + telemetryEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + await _testSession.RunTestsWithCustomTestHostAsync( + _testSources, + _testSettings, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHostAsync( + _testSources, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + await _testSession.RunTestsWithCustomTestHostAsync( + _testSources, + _testSettings, testPlatformOptions, - mockTestDiscoveryEventsHandler.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.DiscoverTests( - this.testSources, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestDiscoveryEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - - this.testSession.RunTests( - this.testSources, - this.testSettings, - mockTestRunEventsHandler.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTests( - this.testSources, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - - this.testSession.RunTests( - this.testSources, - this.testSettings, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHostAsync( + _testSources, + _testSettings, testPlatformOptions, - mockTestRunEventsHandler.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTests( - this.testSources, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - - this.testSession.RunTests( - this.testCases, - this.testSettings, - mockTestRunEventsHandler.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTests( - this.testCases, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - - this.testSession.RunTests( - this.testCases, - this.testSettings, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() + { + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + await _testSession.RunTestsWithCustomTestHostAsync( + _testCases, + _testSettings, + mockTestRunEventsHandler.Object, + mockTestHostLauncher.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHostAsync( + _testCases, + _testSettings, + null, + _testSessionInfo, + mockTestRunEventsHandler.Object, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + + await _testSession.RunTestsWithCustomTestHostAsync( + _testCases, + _testSettings, testPlatformOptions, - mockTestRunEventsHandler.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTests( - this.testCases, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - this.testSession.RunTestsWithCustomTestHost( - this.testSources, - this.testSettings, mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHost( - this.testSources, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - this.testSession.RunTestsWithCustomTestHost( - this.testSources, - this.testSettings, + mockTestHostLauncher.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHostAsync( + _testCases, + _testSettings, testPlatformOptions, + _testSessionInfo, mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHost( - this.testSources, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - this.testSession.RunTestsWithCustomTestHost( - this.testCases, - this.testSettings, + It.IsAny(), + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public async Task RunTestsAsyncWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArgumentsWithTelemetryHandler() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestRunEventsHandler = new Mock(); + var mockTestHostLauncher = new Mock(); + var telemetryEventsHandler = new Mock(); + + await _testSession.RunTestsWithCustomTestHostAsync( + _testCases, + _testSettings, + testPlatformOptions, mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHost( - this.testCases, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public void RunTestsWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - this.testSession.RunTestsWithCustomTestHost( - this.testCases, - this.testSettings, + telemetryEventsHandler.Object, + mockTestHostLauncher.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.RunTestsWithCustomTestHostAsync( + _testCases, + _testSettings, testPlatformOptions, + _testSessionInfo, mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHost( - this.testCases, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public void StopTestSessionShouldCallConsoleWrapperStopTestSessionWithCorrectArguments1() - { - this.testSession.StopTestSession(); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.StopTestSession( - this.testSessionInfo, - this.mockTestSessionEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public void StopTestSessionShouldCallConsoleWrapperStopTestSessionWithCorrectArguments2() - { - var mockTestSessionEventsHandler2 = new Mock(); - - this.testSession.StopTestSession(mockTestSessionEventsHandler2.Object); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.StopTestSession( - this.testSessionInfo, - mockTestSessionEventsHandler2.Object), - Times.Once); - } - #endregion - - #region ITestSessionAsync - [TestMethod] - public async Task DiscoverTestsAsyncShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments1() - { - await this.testSession.DiscoverTestsAsync( - this.testSources, - this.testSettings, - new Mock().Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.DiscoverTestsAsync( - this.testSources, - this.testSettings, - null, - this.testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task DiscoverTestsAsyncShouldCallConsoleWrapperDiscoverTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestDiscoveryEventsHandler = new Mock(); - - await this.testSession.DiscoverTestsAsync( - this.testSources, - this.testSettings, - testPlatformOptions, - mockTestDiscoveryEventsHandler.Object) - .ConfigureAwait(false); ; - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.DiscoverTestsAsync( - this.testSources, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestDiscoveryEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - - await this.testSession.RunTestsAsync( - this.testSources, - this.testSettings, - mockTestRunEventsHandler.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsAsync( - this.testSources, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - - await this.testSession.RunTestsAsync( - this.testSources, - this.testSettings, - testPlatformOptions, - mockTestRunEventsHandler.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsAsync( - this.testSources, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - - await this.testSession.RunTestsAsync( - this.testCases, - this.testSettings, - mockTestRunEventsHandler.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsAsync( - this.testCases, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithTestCasesShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - - await this.testSession.RunTestsAsync( - this.testCases, - this.testSettings, - testPlatformOptions, - mockTestRunEventsHandler.Object) - .ConfigureAwait(false); ; - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsAsync( - this.testCases, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - await this.testSession.RunTestsWithCustomTestHostAsync( - this.testSources, - this.testSettings, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHostAsync( - this.testSources, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - await this.testSession.RunTestsWithCustomTestHostAsync( - this.testSources, - this.testSettings, - testPlatformOptions, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHostAsync( - this.testSources, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments1() - { - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - await this.testSession.RunTestsWithCustomTestHostAsync( - this.testCases, - this.testSettings, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHostAsync( - this.testCases, - this.testSettings, - null, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithTestCasesAndCustomTesthostShouldCallConsoleWrapperRunTestsWithCorrectArguments2() - { - var testPlatformOptions = new TestPlatformOptions(); - var mockTestRunEventsHandler = new Mock(); - var mockTestHostLauncher = new Mock(); - - await this.testSession.RunTestsWithCustomTestHostAsync( - this.testCases, - this.testSettings, - testPlatformOptions, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.RunTestsWithCustomTestHostAsync( - this.testCases, - this.testSettings, - testPlatformOptions, - this.testSessionInfo, - mockTestRunEventsHandler.Object, - mockTestHostLauncher.Object), - Times.Once); - } - - [TestMethod] - public async Task StopTestSessionAsyncShouldCallConsoleWrapperStopTestSessionWithCorrectArguments1() - { - await this.testSession.StopTestSessionAsync().ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.StopTestSessionAsync( - this.testSessionInfo, - this.mockTestSessionEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task StopTestSessionAsyncShouldCallConsoleWrapperStopTestSessionWithCorrectArguments2() - { - var mockTestSessionEventsHandler2 = new Mock(); - - await this.testSession.StopTestSessionAsync( - mockTestSessionEventsHandler2.Object) - .ConfigureAwait(false); - - this.mockVsTestConsoleWrapper.Verify( - vtcw => vtcw.StopTestSessionAsync( - this.testSessionInfo, - mockTestSessionEventsHandler2.Object), - Times.Once); - } - #endregion + telemetryEventsHandler.Object, + mockTestHostLauncher.Object), + Times.Once); + } + + [TestMethod] + public async Task StopTestSessionAsyncWithNoArgsShouldCallConsoleWrapperStopTestSessionWithCorrectArguments() + { + await _testSession.StopTestSessionAsync().ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.StopTestSessionAsync( + _testSessionInfo, + null, + _mockTestSessionEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public async Task StopTestSessionAsyncWithOneArgShouldCallConsoleWrapperStopTestSessionWithCorrectArguments() + { + var mockTestSessionEventsHandler2 = new Mock(); + + await _testSession.StopTestSessionAsync( + mockTestSessionEventsHandler2.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.StopTestSessionAsync( + _testSessionInfo, + null, + mockTestSessionEventsHandler2.Object), + Times.Once); + } + + [TestMethod] + public async Task StopTestSessionAsyncWithTwoArgsShouldCallConsoleWrapperStopTestSessionWithCorrectArguments() + { + var testPlatformOptions = new TestPlatformOptions(); + var mockTestSessionEventsHandler2 = new Mock(); + + await _testSession.StopTestSessionAsync( + testPlatformOptions, + mockTestSessionEventsHandler2.Object) + .ConfigureAwait(false); + + _mockVsTestConsoleWrapper.Verify( + vtcw => vtcw.StopTestSessionAsync( + _testSessionInfo, + testPlatformOptions, + mockTestSessionEventsHandler2.Object), + Times.Once); } + #endregion } diff --git a/test/TranslationLayer.UnitTests/TranslationLayer.UnitTests.csproj b/test/TranslationLayer.UnitTests/TranslationLayer.UnitTests.csproj index bebc846f8b..ed7d4d359d 100644 --- a/test/TranslationLayer.UnitTests/TranslationLayer.UnitTests.csproj +++ b/test/TranslationLayer.UnitTests/TranslationLayer.UnitTests.csproj @@ -1,27 +1,19 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe TranslationLayer.UnitTests - - - - - - - + diff --git a/test/TranslationLayer.UnitTests/VsTestConsoleRequestSenderTests.cs b/test/TranslationLayer.UnitTests/VsTestConsoleRequestSenderTests.cs index c07b2698b8..b2d496d208 100644 --- a/test/TranslationLayer.UnitTests/VsTestConsoleRequestSenderTests.cs +++ b/test/TranslationLayer.UnitTests/VsTestConsoleRequestSenderTests.cs @@ -1,2566 +1,2889 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using Newtonsoft.Json.Linq; + +using Payloads = Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; +using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; + +namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests; + +[TestClass] +public class VsTestConsoleRequestSenderTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Net; - using System.Threading; - using System.Threading.Tasks; + private readonly ITranslationLayerRequestSender _requestSender; + private readonly Mock _mockCommunicationManager; + private readonly int _waitTimeout = 2000; + private readonly int _protocolVersion = 7; + private readonly IDataSerializer _serializer = JsonDataSerializer.Instance; + private readonly Mock _telemetryHandler; + + public VsTestConsoleRequestSenderTests() + { + _mockCommunicationManager = new Mock(); + _requestSender = new VsTestConsoleRequestSender( + _mockCommunicationManager.Object, + JsonDataSerializer.Instance, + new Mock().Object); + _telemetryHandler = new Mock(); + } - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; + #region Communication Tests + + [TestMethod] + public void InitializeCommunicationShouldSucceed() + { + InitializeCommunication(); - using Moq; + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); + _mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Exactly(2)); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once); + } - using Newtonsoft.Json.Linq; + [TestMethod] + public async Task InitializeCommunicationAsyncShouldSucceed() + { + await InitializeCommunicationAsync(); - using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult; - using Payloads = Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Exactly(2)); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once); + } - [TestClass] - public class VsTestConsoleRequestSenderTests + [TestMethod] + public void InitializeCommunicationShouldReturnInvalidPortNumberIfHostServerFails() { - private readonly ITranslationLayerRequestSender requestSender; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Throws(new Exception("Fail")); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)); - private readonly Mock mockCommunicationManager; + var portOutput = _requestSender.InitializeCommunication(); + Assert.IsTrue(portOutput < 0, "Negative port number must be returned if Hosting Server fails."); - private readonly int WaitTimeout = 2000; + var connectionSuccess = _requestSender.WaitForRequestHandlerConnection(_waitTimeout); + Assert.IsFalse(connectionSuccess, "Connection must fail as server failed to host."); - private int protocolVersion = 5; - private IDataSerializer serializer = JsonDataSerializer.Instance; + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Never); + _mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Never); + _mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Never); + } - public VsTestConsoleRequestSenderTests() - { - this.mockCommunicationManager = new Mock(); - this.requestSender = new VsTestConsoleRequestSender( - this.mockCommunicationManager.Object, - JsonDataSerializer.Instance, - new Mock().Object); - } + [TestMethod] + public async Task InitializeCommunicationAsyncShouldReturnInvalidPortNumberIfHostServerFails() + { + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Throws(new Exception("Fail")); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)); - #region Communication Tests + var portOutput = await _requestSender.InitializeCommunicationAsync(_waitTimeout); + Assert.IsTrue(portOutput < 0, "Negative port number must be returned if Hosting Server fails."); - [TestMethod] - public void InitializeCommunicationShouldSucceed() - { - this.InitializeCommunication(); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Never); + _mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Never); + } - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Exactly(2)); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once); - } + [TestMethod] + public void InitializeCommunicationShouldFailConnectionIfMessageReceiveFailed() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) + .Callback((int timeout) => Task.Delay(200).Wait()); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Throws(new Exception("Fail")); + + var portOutput = _requestSender.InitializeCommunication(); + + // Hosting server didn't server, so port number should still be valid + Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); + + // Connection must not succeed as handshake failed + var connectionSuccess = _requestSender.WaitForRequestHandlerConnection(_waitTimeout); + Assert.IsFalse(connectionSuccess, "Connection must fail if handshake failed."); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); + } - [TestMethod] - public async Task InitializeCommunicationAsyncShouldSucceed() - { - await this.InitializeCommunicationAsync(); + [TestMethod] + public async Task InitializeCommunicationAsyncShouldFailConnectionIfMessageReceiveFailed() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).ThrowsAsync(new Exception("Fail")); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Exactly(2)); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once); - } + var portOutput = await _requestSender.InitializeCommunicationAsync(_waitTimeout); - [TestMethod] - public void InitializeCommunicationShouldReturnInvalidPortNumberIfHostServerFails() - { - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Throws(new Exception("Fail")); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)); + // Connection must not succeed as handshake failed + Assert.AreEqual(-1, portOutput, "Connection must fail if handshake failed."); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + } - var portOutput = this.requestSender.InitializeCommunication(); - Assert.IsTrue(portOutput < 0, "Negative port number must be returned if Hosting Server fails."); + [TestMethod] + public void InitializeCommunicationShouldFailConnectionIfSessionConnectedDidNotComeFirst() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) + .Callback((int timeout) => Task.Delay(200).Wait()); - var connectionSuccess = this.requestSender.WaitForRequestHandlerConnection(this.WaitTimeout); - Assert.IsFalse(connectionSuccess, "Connection must fail as server failed to host."); + var discoveryMessage = new Message() { MessageType = MessageType.StartDiscovery }; - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Never); - this.mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Never); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Never); - } + _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(discoveryMessage); - [TestMethod] - public async Task InitializeCommunicationAsyncShouldReturnInvalidPortNumberIfHostServerFails() - { - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Throws(new Exception("Fail")); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)); + var portOutput = _requestSender.InitializeCommunication(); + Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); + var connectionSuccess = _requestSender.WaitForRequestHandlerConnection(_waitTimeout); + Assert.IsFalse(connectionSuccess, "Connection must fail if version check failed."); - var portOutput = await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - Assert.IsTrue(portOutput < 0, "Negative port number must be returned if Hosting Server fails."); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Never); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Never); - } + _mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); - [TestMethod] - public void InitializeCommunicationShouldFailConnectionIfMessageReceiveFailed() - { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) - .Callback((int timeout) => Task.Delay(200).Wait()); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Throws(new Exception("Fail")); + _mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Never); + } - var portOutput = this.requestSender.InitializeCommunication(); + [TestMethod] + public async Task InitializeCommunicationAsyncShouldFailConnectionIfSessionConnectedDidNotComeFirst() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - // Hosting server didn't server, so port number should still be valid - Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); + var discoveryMessage = new Message() { MessageType = MessageType.StartDiscovery }; - // Connection must not succeed as handshake failed - var connectionSuccess = this.requestSender.WaitForRequestHandlerConnection(this.WaitTimeout); - Assert.IsFalse(connectionSuccess, "Connection must fail if handshake failed."); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); - } + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryMessage)); - [TestMethod] - public async Task InitializeCommunicationAsyncShouldFailConnectionIfMessageReceiveFailed() - { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).ThrowsAsync(new Exception("Fail")); + var portOutput = await _requestSender.InitializeCommunicationAsync(_waitTimeout); + Assert.AreEqual(-1, portOutput, "Connection must fail if version check failed."); - var portOutput = await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - // Connection must not succeed as handshake failed - Assert.AreEqual(-1, portOutput, "Connection must fail if handshake failed."); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - } + _mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Never); + } - [TestMethod] - public void InitializeCommunicationShouldFailConnectionIfSessionConnectedDidNotComeFirst() - { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) - .Callback((int timeout) => Task.Delay(200).Wait()); + [TestMethod] + public void InitializeCommunicationShouldFailConnectionIfSendMessageFailed() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) + .Callback((int timeout) => Task.Delay(200).Wait()); - var discoveryMessage = new Message() { MessageType = MessageType.StartDiscovery }; + var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(discoveryMessage); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(sessionConnected); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion)).Throws(new Exception("Fail")); - var portOutput = this.requestSender.InitializeCommunication(); - Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); - var connectionSuccess = this.requestSender.WaitForRequestHandlerConnection(this.WaitTimeout); - Assert.IsFalse(connectionSuccess, "Connection must fail if version check failed."); + var portOutput = _requestSender.InitializeCommunication(); + Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); + var connectionSuccess = _requestSender.WaitForRequestHandlerConnection(_waitTimeout); + Assert.IsFalse(connectionSuccess, "Connection must fail if version check failed."); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Never); - } + _mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once); + } - [TestMethod] - public async Task InitializeCommunicationAsyncShouldFailConnectionIfSessionConnectedDidNotComeFirst() - { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + [TestMethod] + public async Task InitializeCommunicationAsyncShouldFailConnectionIfSendMessageFailed() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + + var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(sessionConnected)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion)).Throws(new Exception("Fail")); + + var portOutput = await _requestSender.InitializeCommunicationAsync(_waitTimeout); + Assert.AreEqual(-1, portOutput, "Connection must fail if version check failed."); - var discoveryMessage = new Message() { MessageType = MessageType.StartDiscovery }; + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryMessage)); + _mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Once); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once); + } - var portOutput = await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - Assert.AreEqual(-1, portOutput, "Connection must fail if version check failed."); + [TestMethod] + public void InitializeCommunicationShouldFailConnectionIfProtocolIsNotCompatible() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) + .Callback((int timeout) => Task.Delay(200).Wait()); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Never); - } + var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; - [TestMethod] - public void InitializeCommunicationShouldFailConnectionIfSendMessageFailed() + // Give wrong version + var protocolError = new Message() { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) - .Callback((int timeout) => Task.Delay(200).Wait()); + MessageType = MessageType.ProtocolError, + Payload = null + }; - var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + Action changedMessage = + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(protocolError); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(sessionConnected); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion)).Throws(new Exception("Fail")); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(sessionConnected); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck)).Callback(changedMessage); - var portOutput = this.requestSender.InitializeCommunication(); - Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); - var connectionSuccess = this.requestSender.WaitForRequestHandlerConnection(this.WaitTimeout); - Assert.IsFalse(connectionSuccess, "Connection must fail if version check failed."); + var portOutput = _requestSender.InitializeCommunication(); + Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); + var connectionSuccess = _requestSender.WaitForRequestHandlerConnection(_waitTimeout); + Assert.IsFalse(connectionSuccess, "Connection must fail if version check failed."); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); + _mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once); - } + _mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Exactly(2)); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once); + } - [TestMethod] - public async Task InitializeCommunicationAsyncShouldFailConnectionIfSendMessageFailed() + [TestMethod] + public async Task InitializeCommunicationAsyncShouldFailConnectionIfProtocolIsNotCompatible() + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + + var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + + // Give wrong version + var protocolError = new Message() { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + MessageType = MessageType.ProtocolError, + Payload = null + }; - var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + Action changedMessage = + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(protocolError)); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(sessionConnected)); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion)).Throws(new Exception("Fail")); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(sessionConnected)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck)).Callback(changedMessage); - var portOutput = await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - Assert.AreEqual(-1, portOutput, "Connection must fail if version check failed."); + var portOutput = await _requestSender.InitializeCommunicationAsync(_waitTimeout); + Assert.AreEqual(-1, portOutput, "Connection must fail if version check failed."); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + _mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); + _mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + + _mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Exactly(2)); + _mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, _protocolVersion), Times.Once); + } - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once); - } + #endregion + + #region Discovery Tests + + [TestMethod] + public void DiscoverTestsShouldCompleteWithZeroTests() + { + InitializeCommunication(); - [TestMethod] - public void InitializeCommunicationShouldFailConnectionIfProtocolIsNotCompatible() + var mockHandler = new Mock(); + + var payload = new DiscoveryCompletePayload() { TotalTests = 0, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = new Message() { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + MessageType = MessageType.DiscoveryComplete, + Payload = JToken.FromObject(payload) + }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); - this.mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) - .Callback((int timeout) => Task.Delay(200).Wait()); + _requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Never, "DiscoveredTests must not be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - // Give wrong version - var protocolError = new Message() - { - MessageType = MessageType.ProtocolError, - Payload = null - }; + [TestMethod] + public async Task DiscoverTestsAsyncShouldCompleteWithZeroTests() + { + await InitializeCommunicationAsync(); - Action changedMessage = - () => { this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(protocolError); }; + var mockHandler = new Mock(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(sessionConnected); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck)).Callback(changedMessage); + var payload = new DiscoveryCompletePayload() { TotalTests = 0, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = new Message() + { + MessageType = MessageType.DiscoveryComplete, + Payload = JToken.FromObject(payload) + }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); - var portOutput = this.requestSender.InitializeCommunication(); - Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); - var connectionSuccess = this.requestSender.WaitForRequestHandlerConnection(this.WaitTimeout); - Assert.IsFalse(connectionSuccess, "Connection must fail if version check failed."); + await _requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Never, "DiscoveredTests must not be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - this.mockCommunicationManager.Verify(cm => cm.WaitForClientConnection(Timeout.Infinite), Times.Once); + [TestMethod] + public void DiscoverTestsShouldCompleteWithSingleTest() + { + InitializeCommunication(); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessage(), Times.Exactly(2)); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once); - } + var mockHandler = new Mock(); - [TestMethod] - public async Task InitializeCommunicationAsyncShouldFailConnectionIfProtocolIsNotCompatible() + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testCaseList = new List() { testCase }; + var testsFound = new Message() { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + MessageType = MessageType.TestCasesFound, + Payload = JToken.FromObject(testCaseList) + }; - var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = new Message() + { + MessageType = MessageType.DiscoveryComplete, + Payload = JToken.FromObject(payload) + }; - // Give wrong version - var protocolError = new Message() - { - MessageType = MessageType.ProtocolError, - Payload = null - }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); - Action changedMessage = - () => { this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(protocolError)); }; + _requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(sessionConnected)); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck)).Callback(changedMessage); + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - var portOutput = await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - Assert.AreEqual(-1, portOutput, "Connection must fail if version check failed."); + [TestMethod] + public async Task DiscoverTestsAsyncShouldCompleteWithSingleTest() + { + await InitializeCommunicationAsync(); - this.mockCommunicationManager.Verify(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0)), Times.Once); - this.mockCommunicationManager.Verify(cm => cm.AcceptClientAsync(), Times.Once); + var mockHandler = new Mock(); - this.mockCommunicationManager.Verify(cm => cm.ReceiveMessageAsync(It.IsAny()), Times.Exactly(2)); - this.mockCommunicationManager.Verify(cm => cm.SendMessage(MessageType.VersionCheck, this.protocolVersion), Times.Once); - } + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testCaseList = new List() { testCase }; + var testsFound = new Message() + { + MessageType = MessageType.TestCasesFound, + Payload = JToken.FromObject(testCaseList) + }; - #endregion + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = new Message() + { + MessageType = MessageType.DiscoveryComplete, + Payload = JToken.FromObject(payload) + }; - #region Discovery Tests + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); - [TestMethod] - public void DiscoverTestsShouldCompleteWithZeroTests() - { - this.InitializeCommunication(); + await _requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - var mockHandler = new Mock(); + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - var payload = new DiscoveryCompletePayload() { TotalTests = 0, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = new Message() - { - MessageType = MessageType.DiscoveryComplete, - Payload = JToken.FromObject(payload) - }; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); + [TestMethod] + public void DiscoverTestsShouldCompleteWithSingleFullyDiscoveredSource() + { + InitializeCommunication(); + + var mockHandler = new Mock(); - this.requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + List sources = ["1.dll"]; - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Never, "DiscoveredTests must not be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + var testCase = new TestCase("hello", new Uri("world://how"), source: sources[0]); + var testsFound = new Message() + { + MessageType = MessageType.TestCasesFound, + Payload = JToken.FromObject(new List { testCase }) + }; - [TestMethod] - public async Task DiscoverTestsAsyncShouldCompleteWithZeroTests() + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false, FullyDiscoveredSources = sources }; + var discoveryComplete = new Message() { - await this.InitializeCommunicationAsync(); + MessageType = MessageType.DiscoveryComplete, + Payload = JToken.FromObject(payload) + }; - var mockHandler = new Mock(); + DiscoveryCompleteEventArgs? receivedDiscoveryCompleteEventArgs = null; - var payload = new DiscoveryCompletePayload() { TotalTests = 0, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = new Message() - { - MessageType = MessageType.DiscoveryComplete, - Payload = JToken.FromObject(payload) - }; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())) + .Callback(() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); - await this.requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object); + mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) + .Callback((DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable tests) => receivedDiscoveryCompleteEventArgs = discoveryCompleteEventArgs); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Never, "DiscoveredTests must not be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + _requestSender.DiscoverTests(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + Assert.IsNotNull(receivedDiscoveryCompleteEventArgs!.FullyDiscoveredSources); + Assert.AreEqual(1, receivedDiscoveryCompleteEventArgs.FullyDiscoveredSources.Count); + } - [TestMethod] - public void DiscoverTestsShouldCompleteWithSingleTest() + [TestMethod] + public void DiscoverTestsShouldCompleteWithCorrectAbortedValuesIfAbortingWasRequested() + { + // Arrange + InitializeCommunication(); + + var mockHandler = new Mock(); + + List sources = ["1.dll"]; + + var testCase = new TestCase("hello", new Uri("world://how"), source: sources[0]); + var testsFound = new Message() { - this.InitializeCommunication(); + MessageType = MessageType.TestCasesFound, + Payload = JToken.FromObject(new List() { testCase }) + }; - var mockHandler = new Mock(); + var payload = new DiscoveryCompletePayload() { TotalTests = -1, LastDiscoveredTests = null, IsAborted = true, FullyDiscoveredSources = sources }; + var discoveryComplete = new Message() + { + MessageType = MessageType.DiscoveryComplete, + Payload = JToken.FromObject(payload) + }; - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testCaseList = new List() { testCase }; - var testsFound = new Message() - { - MessageType = MessageType.TestCasesFound, - Payload = JToken.FromObject(testCaseList) - }; + DiscoveryCompleteEventArgs? receivedDiscoveryCompleteEventArgs = null; - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = new Message() - { - MessageType = MessageType.DiscoveryComplete, - Payload = JToken.FromObject(payload) - }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())) + .Callback(() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); - mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); + mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) + .Callback((DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable tests) => receivedDiscoveryCompleteEventArgs = discoveryCompleteEventArgs); - this.requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + // Act + _requestSender.DiscoverTests(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + _requestSender.CancelDiscovery(); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + // Assert + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + Assert.IsNotNull(receivedDiscoveryCompleteEventArgs!.FullyDiscoveredSources); + Assert.AreEqual(1, receivedDiscoveryCompleteEventArgs.FullyDiscoveredSources.Count); + Assert.AreEqual(-1, receivedDiscoveryCompleteEventArgs.TotalCount); + Assert.AreEqual(true, receivedDiscoveryCompleteEventArgs.IsAborted); + } - [TestMethod] - public async Task DiscoverTestsAsyncShouldCompleteWithSingleTest() - { - await this.InitializeCommunicationAsync(); + [TestMethod] + public void DiscoverTestsShouldReportBackTestsWithTraitsInTestsFoundMessage() + { + InitializeCommunication(); - var mockHandler = new Mock(); + var mockHandler = new Mock(); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testCaseList = new List() { testCase }; - var testsFound = new Message() - { - MessageType = MessageType.TestCasesFound, - Payload = JToken.FromObject(testCaseList) - }; + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = new Message() - { - MessageType = MessageType.DiscoveryComplete, - Payload = JToken.FromObject(payload) - }; + List? receivedTestCases = null; + var testCaseList = new List() { testCase }; + var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); - mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); - await this.requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())) + .Callback( + (IEnumerable tests) => + { + receivedTestCases = tests?.ToList(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); + }); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + _requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - [TestMethod] - public void DiscoverTestsShouldReportBackTestsWithTraitsInTestsFoundMessage() - { - this.InitializeCommunication(); + Assert.IsNotNull(receivedTestCases); + Assert.AreEqual(1, receivedTestCases.Count); - var mockHandler = new Mock(); + // Verify that the traits are passed through properly. + var traits = receivedTestCases.ToArray()[0].Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + [TestMethod] + public async Task DiscoverTestsAsyncShouldReportBackTestsWithTraitsInTestsFoundMessage() + { + await InitializeCommunicationAsync(); - List receivedTestCases = null; - var testCaseList = new List() { testCase }; - var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); + var mockHandler = new Mock(); - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); - mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())) - .Callback( - (IEnumerable tests) => - { - receivedTestCases = tests?.ToList(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult((discoveryComplete))); - }); + List? receivedTestCases = null; + var testCaseList = new List() { testCase }; + var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); - this.requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); - Assert.IsNotNull(receivedTestCases); - Assert.AreEqual(1, receivedTestCases.Count); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())) + .Callback( + (IEnumerable? tests) => + { + receivedTestCases = tests?.ToList(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); + }); - // Verify that the traits are passed through properly. - var traits = receivedTestCases.ToArray()[0].Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + await _requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - [TestMethod] - public async Task DiscoverTestsAsyncShouldReportBackTestsWithTraitsInTestsFoundMessage() - { - await this.InitializeCommunicationAsync(); + Assert.IsNotNull(receivedTestCases); + Assert.AreEqual(1, receivedTestCases.Count); - var mockHandler = new Mock(); + // Verify that the traits are passed through properly. + var traits = receivedTestCases.ToArray()[0].Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + [TestMethod] + public void DiscoverTestsShouldReportBackTestsWithTraitsInDiscoveryCompleteMessage() + { + InitializeCommunication(); - List receivedTestCases = null; - var testCaseList = new List() { testCase }; - var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); + var mockHandler = new Mock(); - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); - mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())) - .Callback( - (IEnumerable tests) => - { - receivedTestCases = tests?.ToList(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult((discoveryComplete))); - }); + List? receivedTestCases = null; + var testCaseList = new List() { testCase }; - await this.requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = testCaseList, IsAborted = false }; + var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); - Assert.IsNotNull(receivedTestCases); - Assert.AreEqual(1, receivedTestCases.Count); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); + mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) + .Callback( + (DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable tests) => receivedTestCases = tests?.ToList()); - // Verify that the traits are passed through properly. - var traits = receivedTestCases.ToArray()[0].Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + _requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - [TestMethod] - public void DiscoverTestsShouldReportBackTestsWithTraitsInDiscoveryCompleteMessage() - { - this.InitializeCommunication(); + Assert.IsNotNull(receivedTestCases); + Assert.AreEqual(1, receivedTestCases.Count); - var mockHandler = new Mock(); + // Verify that the traits are passed through properly. + var traits = receivedTestCases.ToArray()[0].Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + [TestMethod] + public async Task DiscoverTestsAsyncShouldReportBackTestsWithTraitsInDiscoveryCompleteMessage() + { + await InitializeCommunicationAsync(); - List receivedTestCases = null; - var testCaseList = new List() { testCase }; + var mockHandler = new Mock(); - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = testCaseList, IsAborted = false }; - var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); - mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) - .Callback( - (DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable tests) => - { - receivedTestCases = tests?.ToList(); - }); + List? receivedTestCases = null; + var testCaseList = new List() { testCase }; - this.requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = testCaseList, IsAborted = false }; + var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); - Assert.IsNotNull(receivedTestCases); - Assert.AreEqual(1, receivedTestCases.Count); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); + mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) + .Callback( + (DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable tests) => receivedTestCases = tests?.ToList()); - // Verify that the traits are passed through properly. - var traits = receivedTestCases.ToArray()[0].Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + await _requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - [TestMethod] - public async Task DiscoverTestsAsyncShouldReportBackTestsWithTraitsInDiscoveryCompleteMessage() - { - await this.InitializeCommunicationAsync(); + Assert.IsNotNull(receivedTestCases); + Assert.AreEqual(1, receivedTestCases.Count); + + // Verify that the traits are passed through properly. + var traits = receivedTestCases.ToArray()[0].Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var mockHandler = new Mock(); + [TestMethod] + public void DiscoverTestsShouldCompleteWithTestMessage() + { + InitializeCommunication(); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + var mockHandler = new Mock(); - List receivedTestCases = null; - var testCaseList = new List() { testCase }; + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testCaseList = new List() { testCase }; + var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = testCaseList, IsAborted = false }; - var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete)); - mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), It.IsAny>())) - .Callback( - (DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable tests) => - { - receivedTestCases = tests?.ToList(); - }); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - await this.requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message))); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); - Assert.IsNotNull(receivedTestCases); - Assert.AreEqual(1, receivedTestCases.Count); + _requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - // Verify that the traits are passed through properly. - var traits = receivedTestCases.ToArray()[0].Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); + } - [TestMethod] - public void DiscoverTestsShouldCompleteWithTestMessage() - { - this.InitializeCommunication(); + [TestMethod] + public async Task DiscoverTestsAsyncShouldCompleteWithTestMessage() + { + await InitializeCommunicationAsync(); - var mockHandler = new Mock(); + var mockHandler = new Mock(); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testCaseList = new List() { testCase }; - var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testCaseList = new List() { testCase }; + var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); + var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; + var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); - mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message))); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); + mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message))); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); - this.requestSender.DiscoverTests(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + await _requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); - } + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); + } - [TestMethod] - public async Task DiscoverTestsAsyncShouldCompleteWithTestMessage() - { - await this.InitializeCommunicationAsync(); + [TestMethod] + public void DiscoverTestsShouldAbortOnExceptionInSendMessage() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.StartDiscovery, payload)).Throws(new IOException()); - var mockHandler = new Mock(); + _requestSender.DiscoverTests(sources, null, new TestPlatformOptions(), null, mockHandler.Object); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testCaseList = new List() { testCase }; - var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); + _mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); + } - var payload = new DiscoveryCompletePayload() { TotalTests = 1, LastDiscoveredTests = null, IsAborted = false }; - var discoveryComplete = CreateMessage(MessageType.DiscoveryComplete, payload); + [TestMethod] + public async Task DiscoverTestsAsyncShouldAbortOnExceptionInSendMessage() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.StartDiscovery, payload)).Throws(new IOException()); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + await _requestSender.DiscoverTestsAsync(sources, null, new TestPlatformOptions(), null, mockHandler.Object); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsFound)); - mockHandler.Setup(mh => mh.HandleDiscoveredTests(It.IsAny>())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message))); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(discoveryComplete))); + mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); + _mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); + } - await this.requestSender.DiscoverTestsAsync(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + [TestMethod] + public void DiscoverTestsShouldLogErrorWhenProcessExited() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; + var manualEvent = new ManualResetEvent(false); + + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testCaseList = new List() { testCase }; + var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); + _requestSender.InitializeCommunication(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Callback( + (CancellationToken c) => + { + Task.Run(() => _requestSender.OnProcessExited(), c).Wait(c); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleDiscoveredTests(It.IsAny>()), Times.Once, "DiscoveredTests must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); - } + Assert.IsTrue(c.IsCancellationRequested); + }).Returns(Task.FromResult((Message?)null)); - [TestMethod] - public void DiscoverTestsShouldAbortOnExceptionInSendMessage() - { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.StartDiscovery, payload)).Throws(new IOException()); + mockHandler.Setup(mh => mh.HandleDiscoveryComplete(It.IsAny(), null)).Callback(() => manualEvent.Set()); - this.requestSender.DiscoverTests(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + _requestSender.DiscoverTests(sources, null, new TestPlatformOptions(), null, mockHandler.Object); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); - this.mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); - } + manualEvent.WaitOne(); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - [TestMethod] - public async Task DiscoverTestsAsyncShouldAbortOnExceptionInSendMessage() - { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.StartDiscovery, payload)).Throws(new IOException()); + [TestMethod] + public async Task DiscoverTestsAsyncShouldLogErrorWhenProcessExited() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; + + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testCaseList = new List() { testCase }; + var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); + await _requestSender.InitializeCommunicationAsync(_waitTimeout); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Callback( + (CancellationToken c) => + { + Task.Run(() => _requestSender.OnProcessExited(), c).Wait(c); - await this.requestSender.DiscoverTestsAsync(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + Assert.IsTrue(c.IsCancellationRequested); + }).Returns(Task.FromResult((Message?)null)); - mockHandler.Verify(mh => mh.HandleDiscoveryComplete(It.IsAny(), null), Times.Once, "Discovery Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); - this.mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); - } + await _requestSender.DiscoverTestsAsync(sources, null, new TestPlatformOptions(), null, mockHandler.Object); - [TestMethod] - public void DiscoverTestsShouldLogErrorWhenProcessExited() - { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; - var manualEvent = new ManualResetEvent(false); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testCaseList = new List() { testCase }; - var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); - this.requestSender.InitializeCommunication(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Callback( - (CancellationToken c) => - { - Task.Run(() => this.requestSender.OnProcessExited()).Wait(); + #endregion - Assert.IsTrue(c.IsCancellationRequested); - }).Returns(Task.FromResult((Message)null)); + #region RunTests - mockHandler.Setup(mh => mh.HandleDiscoveryComplete( It.IsAny(), null)).Callback(() => manualEvent.Set()); + [TestMethod] + public void StartTestRunShouldCompleteWithZeroTests() + { + InitializeCommunication(); - this.requestSender.DiscoverTests(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + var mockHandler = new Mock(); + var telemetryMockHandler = new Mock(); - manualEvent.WaitOne(); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - [TestMethod] - public async Task DiscoverTestsAsyncShouldLogErrorWhenProcessExited() + var payload = new TestRunCompletePayload() { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var payload = new DiscoveryRequestPayload { Sources = sources, RunSettings = null }; + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testCaseList = new List() { testCase }; - var testsFound = CreateMessage(MessageType.TestCasesFound, testCaseList); - await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Callback( - (CancellationToken c) => - { - Task.Run(() => this.requestSender.OnProcessExited()).Wait(); + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - Assert.IsTrue(c.IsCancellationRequested); - }).Returns(Task.FromResult((Message)null)); + _requestSender.StartTestRun(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, telemetryMockHandler.Object); - await this.requestSender.DiscoverTestsAsync(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + [TestMethod] + public async Task StartTestRunAsyncShouldCompleteWithZeroTests() + { + await InitializeCommunicationAsync(); - #endregion + var mockHandler = new Mock(); + var telemetryMockHandler = new Mock(); - #region RunTests + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - [TestMethod] - public void StartTestRunShouldCompleteWithZeroTests() + var payload = new TestRunCompletePayload() { - this.InitializeCommunication(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; - var mockHandler = new Mock(); + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + await _requestSender.StartTestRunAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, telemetryMockHandler.Object); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } + + [TestMethod] + public void StartTestRunShouldCompleteWithSingleTestAndMessage() + { + InitializeCommunication(); + + var mockHandler = new Mock(); + var telemetryMockHandler = new Mock(); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - this.requestSender.StartTestRun(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + var testsChangedArgs = new TestRunChangedEventArgs(null, + new List() { testResult }, null); - [TestMethod] - public async Task StartTestRunAsyncShouldCompleteWithZeroTests() + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + + var payload = new TestRunCompletePayload() { - await this.InitializeCommunicationAsync(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); - var payload = new TestRunCompletePayload() + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - await this.requestSender.StartTestRunAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object); + _requestSender.StartTestRun(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, telemetryMockHandler.Object); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + } - [TestMethod] - public void StartTestRunShouldCompleteWithSingleTestAndMessage() - { - this.InitializeCommunication(); + [TestMethod] + public void StartTestRunShouldCompleteWithSingleTestAndTelemetryMessage() + { + InitializeCommunication(); - var mockHandler = new Mock(); + var mockHandler = new Mock(); + var telemetryMockHandler = new Mock(); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - var testsChangedArgs = new TestRunChangedEventArgs(null, - new List() { testResult }, null); + var testsChangedArgs = new TestRunChangedEventArgs(null, + new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - var payload = new TestRunCompletePayload() + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + + var mpayload = new TelemetryEvent("aaa", new Dictionary()); + var message = CreateMessage(MessageType.TelemetryEventMessage, mpayload); + + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); + + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + telemetryMockHandler.Setup(mh => mh.HandleTelemetryEvent(It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + _requestSender.StartTestRun(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, telemetryMockHandler.Object); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + telemetryMockHandler.Verify(mh => mh.HandleTelemetryEvent(It.IsAny()), Times.Once, "TestMessage event must be called"); + } - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + [TestMethod] + public async Task StartTestRunAsyncShouldCompleteWithSingleTestAndMessage() + { + await InitializeCommunicationAsync(); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var mockHandler = new Mock(); - this.requestSender.StartTestRun(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - } + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - [TestMethod] - public async Task StartTestRunAsyncShouldCompleteWithSingleTestAndMessage() - { - await this.InitializeCommunicationAsync(); + var testsChangedArgs = new TestRunChangedEventArgs(null, + new List() { testResult }, null); - var mockHandler = new Mock(); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var testsChangedArgs = new TestRunChangedEventArgs(null, - new List() { testResult }, null); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); - var payload = new TestRunCompletePayload() + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + await _requestSender.StartTestRunAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, _telemetryHandler.Object); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + } - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + [TestMethod] + public async Task StartTestRunAsyncShouldCompleteWithSingleTestAndTelemetryMessage() + { + await InitializeCommunicationAsync(); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var mockHandler = new Mock(); + + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; + + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - await this.requestSender.StartTestRunAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object); + var testsChangedArgs = new TestRunChangedEventArgs(null, + new List() { testResult }, null); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - } + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public void StartTestRunShouldNotThrowIfTestPlatformOptionsIsNull() + var payload = new TestRunCompletePayload() { - // Arrange. - var sources = new List() { "1.dll" }; - TestRunRequestPayload receivedRequest = null; + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; - var mockHandler = new Mock(); + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - this.SetupMockCommunicationForRunRequest(mockHandler); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, It.IsAny(), It.IsAny())). - Callback((string msg, object requestpayload, int protocol) => { receivedRequest = (TestRunRequestPayload)requestpayload; }); + var mpayload = new TelemetryEvent("aaa", new Dictionary()); + var message = CreateMessage(MessageType.TelemetryEventMessage, mpayload); - // Act. - this.requestSender.StartTestRun(sources, null, null, null, mockHandler.Object); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); - // Assert. - Assert.IsNotNull(receivedRequest); - CollectionAssert.AreEqual(sources, receivedRequest.Sources); - Assert.IsNull(receivedRequest.TestPlatformOptions, "The run request message should include a null test case filter"); - } + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => + { + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - [TestMethod] - public void StartTestRunShouldIncludeFilterInRequestPayload() - { - // Arrange. - var sources = new List() { "1.dll" }; - var filter = "GivingCampaign"; - TestRunRequestPayload receivedRequest = null; + _telemetryHandler.Setup(mh => mh.HandleTelemetryEvent(It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mockHandler = new Mock(); + await _requestSender.StartTestRunAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, _telemetryHandler.Object); - this.SetupMockCommunicationForRunRequest(mockHandler); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, It.IsAny(), It.IsAny())). - Callback((string msg, object requestpayload, int protocol) => { receivedRequest = (TestRunRequestPayload)requestpayload; }); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + _telemetryHandler.Verify(mh => mh.HandleTelemetryEvent(It.IsAny()), Times.Once, "TestMessage event must be called"); + } - // Act. - this.requestSender.StartTestRun(sources, null, new TestPlatformOptions() { TestCaseFilter = filter }, null, mockHandler.Object); + [TestMethod] + public void StartTestRunShouldNotThrowIfTestPlatformOptionsIsNull() + { + // Arrange. + var sources = new List() { "1.dll" }; + TestRunRequestPayload? receivedRequest = null; - // Assert. - Assert.IsNotNull(receivedRequest); - CollectionAssert.AreEqual(sources, receivedRequest.Sources); - Assert.AreEqual(filter, receivedRequest.TestPlatformOptions.TestCaseFilter, "The run request message should include test case filter"); - } + var mockHandler = new Mock(); - [TestMethod] - public void StartTestRunWithCustomHostShouldComplete() - { - this.InitializeCommunication(); + SetupMockCommunicationForRunRequest(); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, It.IsAny(), It.IsAny())). + Callback((string msg, object requestpayload, int protocol) => receivedRequest = (TestRunRequestPayload)requestpayload); - var mockHandler = new Mock(); + // Act. + _requestSender.StartTestRun(sources, null, null, null, mockHandler.Object, _telemetryHandler.Object); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + // Assert. + Assert.IsNotNull(receivedRequest); + CollectionAssert.AreEqual(sources, receivedRequest.Sources); + Assert.IsNull(receivedRequest.TestPlatformOptions, "The run request message should include a null test case filter"); + } - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + [TestMethod] + public void StartTestRunShouldIncludeFilterInRequestPayload() + { + // Arrange. + var sources = new List() { "1.dll" }; + var filter = "GivingCampaign"; + TestRunRequestPayload? receivedRequest = null; - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + var mockHandler = new Mock(); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + SetupMockCommunicationForRunRequest(); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, It.IsAny(), It.IsAny())). + Callback((string msg, object requestpayload, int protocol) => receivedRequest = (TestRunRequestPayload)requestpayload); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + // Act. + _requestSender.StartTestRun(sources, null, new TestPlatformOptions() { TestCaseFilter = filter }, null, mockHandler.Object, _telemetryHandler.Object); - var runprocessInfoPayload = new Message() - { - MessageType = MessageType.CustomTestHostLaunch, - Payload = JToken.FromObject(new TestProcessStartInfo()) - }; + // Assert. + Assert.IsNotNull(receivedRequest); + CollectionAssert.AreEqual(sources, receivedRequest.Sources); + Assert.AreEqual(filter, receivedRequest.TestPlatformOptions!.TestCaseFilter, "The run request message should include test case filter"); + } + [TestMethod] + public void StartTestRunWithCustomHostShouldComplete() + { + InitializeCommunication(); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - var mockLauncher = new Mock(); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback - (() => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - this.requestSender.StartTestRunWithCustomHost(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, mockLauncher.Object); + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); - } + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - [TestMethod] - public async Task StartTestRunAsyncWithCustomHostShouldComplete() + var runprocessInfoPayload = new Message() { - await this.InitializeCommunicationAsync(); + MessageType = MessageType.CustomTestHostLaunch, + Payload = JToken.FromObject(new TestProcessStartInfo()) + }; - var mockHandler = new Mock(); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => + { + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + var mockLauncher = new Mock(); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback + (() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + _requestSender.StartTestRunWithCustomHost(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - var runprocessInfoPayload = new Message() - { - MessageType = MessageType.CustomTestHostLaunch, - Payload = JToken.FromObject(new TestProcessStartInfo()) - }; + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); + } + [TestMethod] + public async Task StartTestRunAsyncWithCustomHostShouldComplete() + { + await InitializeCommunicationAsync(); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - var mockLauncher = new Mock(); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback - (() => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - await this.requestSender.StartTestRunWithCustomHostAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, mockLauncher.Object); + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); - } + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - [TestMethod] - public void StartTestRunWithCustomHostShouldNotAbortAndSendErrorToVstestConsoleInErrorScenario() + var runprocessInfoPayload = new Message() { - this.InitializeCommunication(); + MessageType = MessageType.CustomTestHostLaunch, + Payload = JToken.FromObject(new TestProcessStartInfo()) + }; - var mockHandler = new Mock(); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => + { + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + var mockLauncher = new Mock(); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback + (() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + await _requestSender.StartTestRunWithCustomHostAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - Message runprocessInfoPayload = new VersionedMessage() - { - MessageType = MessageType.CustomTestHostLaunch, - Payload = JToken.FromObject(new TestProcessStartInfo()) - }; + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); + } - var mockLauncher = new Mock(); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Throws(new Exception("BadError")); + [TestMethod] + public void StartTestRunWithCustomHostShouldNotAbortAndSendErrorToVstestConsoleInErrorScenario() + { + InitializeCommunication(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); + var mockHandler = new Mock(); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny(), this.protocolVersion)). - Callback(() => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - this.requestSender.StartTestRunWithCustomHost(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, mockLauncher.Object); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - } + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public async Task StartTestRunAsyncWithCustomHostShouldNotAbortAndSendErrorToVstestConsoleInErrorScenario() + var payload = new TestRunCompletePayload() { - await this.InitializeCommunicationAsync(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + Message runprocessInfoPayload = new VersionedMessage() + { + MessageType = MessageType.CustomTestHostLaunch, + Payload = JToken.FromObject(new TestProcessStartInfo()) + }; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var mockLauncher = new Mock(); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Throws(new Exception("BadError")); - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny(), _protocolVersion)). + Callback(() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + _requestSender.StartTestRunWithCustomHost(new List() { "1.dll" }, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - Message runprocessInfoPayload = new VersionedMessage() - { - MessageType = MessageType.CustomTestHostLaunch, - Payload = JToken.FromObject(new TestProcessStartInfo()) - }; + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + } - var mockLauncher = new Mock(); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Throws(new Exception("BadError")); + [TestMethod] + public async Task StartTestRunAsyncWithCustomHostShouldNotAbortAndSendErrorToVstestConsoleInErrorScenario() + { + await InitializeCommunicationAsync(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); + var mockHandler = new Mock(); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny(), this.protocolVersion)). - Callback(() => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - await this.requestSender.StartTestRunWithCustomHostAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, mockLauncher.Object); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - } + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public void StartTestRunWithCustomHostShouldNotThrowIfTestPlatformOptionsIsNull() + var payload = new TestRunCompletePayload() { - // Arrange. - var sources = new List() { "1.dll" }; - TestRunRequestPayload receivedRequest = null; + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - this.SetupMockCommunicationForRunRequest(mockHandler); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.GetTestRunnerProcessStartInfoForRunAll, It.IsAny(), It.IsAny())). - Callback((string msg, object requestpayload, int protocol) => { receivedRequest = (TestRunRequestPayload)requestpayload; }); + Message runprocessInfoPayload = new VersionedMessage() + { + MessageType = MessageType.CustomTestHostLaunch, + Payload = JToken.FromObject(new TestProcessStartInfo()) + }; - // Act. - this.requestSender.StartTestRunWithCustomHost(sources, null, null, null, mockHandler.Object, new Mock().Object); + var mockLauncher = new Mock(); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Throws(new Exception("BadError")); - // Assert. - Assert.IsNotNull(receivedRequest); - CollectionAssert.AreEqual(sources, receivedRequest.Sources); - Assert.IsNull(receivedRequest.TestPlatformOptions, "The run request message should include a null test case filter"); - } + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - [TestMethod] - public void StartTestRunWithCustomHostShouldIncludeFilterInRequestPayload() - { - // Arrange. - var sources = new List() { "1.dll" }; - var filter = "GivingCampaign"; - TestRunRequestPayload receivedRequest = null; + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny(), _protocolVersion)). + Callback(() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mockHandler = new Mock(); + await _requestSender.StartTestRunWithCustomHostAsync(new List() { "1.dll" }, null, null, null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - this.SetupMockCommunicationForRunRequest(mockHandler); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.GetTestRunnerProcessStartInfoForRunAll, It.IsAny(), It.IsAny())). - Callback((string msg, object requestpayload, int protocol) => { receivedRequest = (TestRunRequestPayload)requestpayload; }); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + } - // Act. - this.requestSender.StartTestRunWithCustomHost(sources, null, new TestPlatformOptions() { TestCaseFilter = filter }, null, mockHandler.Object, new Mock().Object); + [TestMethod] + public void StartTestRunWithCustomHostShouldNotThrowIfTestPlatformOptionsIsNull() + { + // Arrange. + var sources = new List() { "1.dll" }; + TestRunRequestPayload? receivedRequest = null; - // Assert. - Assert.IsNotNull(receivedRequest); - CollectionAssert.AreEqual(sources, receivedRequest.Sources); - Assert.AreEqual(filter, receivedRequest.TestPlatformOptions.TestCaseFilter, "The run request message should include test case filter"); - } + var mockHandler = new Mock(); - [TestMethod] - public void StartTestRunWithSelectedTestsShouldCompleteWithZeroTests() - { - this.InitializeCommunication(); + SetupMockCommunicationForRunRequest(); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.GetTestRunnerProcessStartInfoForRunAll, It.IsAny(), It.IsAny())). + Callback((string msg, object requestpayload, int protocol) => receivedRequest = (TestRunRequestPayload)requestpayload); - var mockHandler = new Mock(); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + // Act. + _requestSender.StartTestRunWithCustomHost(sources, null, null, null, mockHandler.Object, _telemetryHandler.Object, new Mock().Object); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + // Assert. + Assert.IsNotNull(receivedRequest); + CollectionAssert.AreEqual(sources, receivedRequest.Sources); + Assert.IsNull(receivedRequest.TestPlatformOptions, "The run request message should include a null test case filter"); + } - this.requestSender.StartTestRun(new List(), null, new TestPlatformOptions(), null, mockHandler.Object); + [TestMethod] + public void StartTestRunWithCustomHostShouldIncludeFilterInRequestPayload() + { + // Arrange. + var sources = new List() { "1.dll" }; + var filter = "GivingCampaign"; + TestRunRequestPayload? receivedRequest = null; - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + var mockHandler = new Mock(); - [TestMethod] - public async Task StartTestRunAsyncWithSelectedTestsShouldCompleteWithZeroTests() - { - await this.InitializeCommunicationAsync(); + SetupMockCommunicationForRunRequest(); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.GetTestRunnerProcessStartInfoForRunAll, It.IsAny(), It.IsAny())). + Callback((string msg, object requestpayload, int protocol) => receivedRequest = (TestRunRequestPayload)requestpayload); - var mockHandler = new Mock(); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + // Act. + _requestSender.StartTestRunWithCustomHost(sources, null, new TestPlatformOptions() { TestCaseFilter = filter }, null, mockHandler.Object, _telemetryHandler.Object, new Mock().Object); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + // Assert. + Assert.IsNotNull(receivedRequest); + CollectionAssert.AreEqual(sources, receivedRequest.Sources); + Assert.AreEqual(filter, receivedRequest.TestPlatformOptions!.TestCaseFilter, "The run request message should include test case filter"); + } - await this.requestSender.StartTestRunAsync(new List(), null, new TestPlatformOptions(), null, mockHandler.Object); + [TestMethod] + public void StartTestRunWithSelectedTestsShouldCompleteWithZeroTests() + { + InitializeCommunication(); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + var mockHandler = new Mock(); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - [TestMethod] - public void StartTestRunWithSelectedTestsShouldCompleteWithSingleTestAndMessage() + var payload = new TestRunCompletePayload() { - this.InitializeCommunication(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - var mockHandler = new Mock(); + _requestSender.StartTestRun(new List(), null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - var testCaseList = new List() { testCase }; + [TestMethod] + public async Task StartTestRunAsyncWithSelectedTestsShouldCompleteWithZeroTests() + { + await InitializeCommunicationAsync(); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var mockHandler = new Mock(); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + await _requestSender.StartTestRunAsync(new List(), null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); + + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Never, "RunChangedArgs must not be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + [TestMethod] + public void StartTestRunWithSelectedTestsShouldCompleteWithSingleTestAndMessage() + { + InitializeCommunication(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); + var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var testCaseList = new List() { testCase }; - this.requestSender.StartTestRun(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - } + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public async Task StartTestRunAsyncWithSelectedTestsShouldCompleteWithSingleTestAndMessage() + var payload = new TestRunCompletePayload() { - await this.InitializeCommunicationAsync(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); - var testCaseList = new List() { testCase }; + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => + { + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + _requestSender.StartTestRun(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + } - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + [TestMethod] + public async Task StartTestRunAsyncWithSelectedTestsShouldCompleteWithSingleTestAndMessage() + { + await InitializeCommunicationAsync(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); + var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var testCaseList = new List() { testCase }; - await this.requestSender.StartTestRunAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - } + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public void StartTestRunWithSelectedTestsHavingTraitsShouldReturnTestRunCompleteWithTraitsIntact() + var payload = new TestRunCompletePayload() { - this.InitializeCommunication(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload)); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => + { + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var testCaseList = new List() { testCase }; + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - TestRunChangedEventArgs receivedChangeEventArgs = null; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, new List { testResult }, null); + await _requestSender.StartTestRunAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + } - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + [TestMethod] + public void StartTestRunWithSelectedTestsHavingTraitsShouldReturnTestRunCompleteWithTraitsIntact() + { + InitializeCommunication(); + + var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - (TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedChangeEventArgs = stats; - }); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - this.requestSender.StartTestRun(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - Assert.IsNotNull(receivedChangeEventArgs); - Assert.IsTrue(receivedChangeEventArgs.NewTestResults.Any()); + var testCaseList = new List() { testCase }; - // Verify that the traits are passed through properly. - var traits = receivedChangeEventArgs.NewTestResults.ToArray()[0].TestCase.Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + TestRunChangedEventArgs? receivedChangeEventArgs = null; + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, new List { testResult }, null); - [TestMethod] - public async Task StartTestRunAsyncWithSelectedTestsHavingTraitsShouldReturnTestRunCompleteWithTraitsIntact() + var payload = new TestRunCompletePayload() { - await this.InitializeCommunicationAsync(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + mockHandler.Setup(mh => mh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + (TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedChangeEventArgs = stats); - var testResult = new TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + _requestSender.StartTestRun(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var testCaseList = new List() { testCase }; + Assert.IsNotNull(receivedChangeEventArgs); + Assert.IsTrue(receivedChangeEventArgs.NewTestResults!.Any()); - TestRunChangedEventArgs receivedChangeEventArgs = null; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, new List { testResult }, null); + // Verify that the traits are passed through properly. + var traits = receivedChangeEventArgs.NewTestResults!.ToArray()[0].TestCase.Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + [TestMethod] + public async Task StartTestRunAsyncWithSelectedTestsHavingTraitsShouldReturnTestRunCompleteWithTraitsIntact() + { + await InitializeCommunicationAsync(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleTestRunComplete( - It.IsAny(), - It.IsAny(), - It.IsAny>(), - It.IsAny>())) - .Callback( - (TestRunCompleteEventArgs complete, - TestRunChangedEventArgs stats, - ICollection attachments, - ICollection executorUris) => - { - receivedChangeEventArgs = stats; - }); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - await this.requestSender.StartTestRunAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - Assert.IsNotNull(receivedChangeEventArgs); - Assert.IsTrue(receivedChangeEventArgs.NewTestResults.Any()); + var testCaseList = new List() { testCase }; - // Verify that the traits are passed through properly. - var traits = receivedChangeEventArgs.NewTestResults.ToArray()[0].TestCase.Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + TestRunChangedEventArgs? receivedChangeEventArgs = null; + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, new List { testResult }, null); - [TestMethod] - public void StartTestRunWithSelectedTestsHavingTraitsShouldReturnTestRunStatsWithTraitsIntact() + var payload = new TestRunCompletePayload() { - this.InitializeCommunication(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var mockHandler = new Mock(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + mockHandler.Setup(mh => mh.HandleTestRunComplete( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny>())) + .Callback( + (TestRunCompleteEventArgs complete, + TestRunChangedEventArgs stats, + ICollection attachments, + ICollection executorUris) => receivedChangeEventArgs = stats); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + await _requestSender.StartTestRunAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var testCaseList = new List() { testCase }; + Assert.IsNotNull(receivedChangeEventArgs); + Assert.IsTrue(receivedChangeEventArgs.NewTestResults!.Any()); - TestRunChangedEventArgs receivedChangeEventArgs = null; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + // Verify that the traits are passed through properly. + var traits = receivedChangeEventArgs.NewTestResults!.ToArray()[0].TestCase.Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var testsChangedArgs = new TestRunChangedEventArgs( - null, - new List() { testResult }, - null); - var testsRunStatsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + [TestMethod] + public void StartTestRunWithSelectedTestsHavingTraitsShouldReturnTestRunStatsWithTraitsIntact() + { + InitializeCommunication(); - var testRunCompletepayload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, testRunCompletepayload); + var mockHandler = new Mock(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsRunStatsPayload)); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange( - It.IsAny())) - .Callback( - (TestRunChangedEventArgs stats) => - { - receivedChangeEventArgs = stats; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - this.requestSender.StartTestRun(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object); + var testCaseList = new List() { testCase }; - Assert.IsNotNull(receivedChangeEventArgs); - Assert.IsTrue(receivedChangeEventArgs.NewTestResults.Any()); + TestRunChangedEventArgs? receivedChangeEventArgs = null; + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - // Verify that the traits are passed through properly. - var traits = receivedChangeEventArgs.NewTestResults.ToArray()[0].TestCase.Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + var testsChangedArgs = new TestRunChangedEventArgs( + null, + new List() { testResult }, + null); + var testsRunStatsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public async Task StartTestRunAsyncWithSelectedTestsHavingTraitsShouldReturnTestRunStatsWithTraitsIntact() + var testRunCompletePayload = new TestRunCompletePayload { - await this.InitializeCommunicationAsync(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, testRunCompletePayload); - var mockHandler = new Mock(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsRunStatsPayload)); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - testCase.Traits.Add(new Trait("a", "b")); + mockHandler.Setup(mh => mh.HandleTestRunStatsChange( + It.IsAny())) + .Callback( + (TestRunChangedEventArgs stats) => + { + receivedChangeEventArgs = stats; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + }); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + _requestSender.StartTestRun(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var testCaseList = new List() { testCase }; + Assert.IsNotNull(receivedChangeEventArgs); + Assert.IsTrue(receivedChangeEventArgs.NewTestResults!.Any()); - TestRunChangedEventArgs receivedChangeEventArgs = null; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + // Verify that the traits are passed through properly. + var traits = receivedChangeEventArgs.NewTestResults!.ToArray()[0].TestCase.Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var testsChangedArgs = new TestRunChangedEventArgs( - null, - new List() { testResult }, - null); - var testsRunStatsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + [TestMethod] + public async Task StartTestRunAsyncWithSelectedTestsHavingTraitsShouldReturnTestRunStatsWithTraitsIntact() + { + await InitializeCommunicationAsync(); - var testRunCompletepayload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, testRunCompletepayload); + var mockHandler = new Mock(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsRunStatsPayload)); + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + testCase.Traits.Add(new Trait("a", "b")); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange( - It.IsAny())) - .Callback( - (TestRunChangedEventArgs stats) => - { - receivedChangeEventArgs = stats; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - await this.requestSender.StartTestRunAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object); + var testCaseList = new List() { testCase }; - Assert.IsNotNull(receivedChangeEventArgs); - Assert.IsTrue(receivedChangeEventArgs.NewTestResults.Any()); + TestRunChangedEventArgs? receivedChangeEventArgs = null; + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - // Verify that the traits are passed through properly. - var traits = receivedChangeEventArgs.NewTestResults.ToArray()[0].TestCase.Traits; - Assert.IsNotNull(traits); - Assert.AreEqual("a", traits.ToArray()[0].Name); - Assert.AreEqual("b", traits.ToArray()[0].Value); - } + var testsChangedArgs = new TestRunChangedEventArgs( + null, + new List() { testResult }, + null); + var testsRunStatsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - [TestMethod] - public void StartTestRunWithCustomHostWithSelectedTestsComplete() + var testRunCompletePayload = new TestRunCompletePayload() { - this.InitializeCommunication(); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, testRunCompletePayload); - var mockHandler = new Mock(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsRunStatsPayload)); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + mockHandler.Setup(mh => mh.HandleTestRunStatsChange( + It.IsAny())) + .Callback( + (TestRunChangedEventArgs stats) => + { + receivedChangeEventArgs = stats; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + }); - var testCaseList = new List() { testCase }; + await _requestSender.StartTestRunAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + Assert.IsNotNull(receivedChangeEventArgs); + Assert.IsTrue(receivedChangeEventArgs.NewTestResults!.Any()); - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + // Verify that the traits are passed through properly. + var traits = receivedChangeEventArgs.NewTestResults!.ToArray()[0].TestCase.Traits; + Assert.IsNotNull(traits); + Assert.AreEqual("a", traits.ToArray()[0].Name); + Assert.AreEqual("b", traits.ToArray()[0].Value); + } - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + [TestMethod] + public void StartTestRunWithCustomHostWithSelectedTestsComplete() + { + InitializeCommunication(); + + var mockHandler = new Mock(); + + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; + + var testCaseList = new List() { testCase }; + + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - var payload = new TestRunCompletePayload() + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); + var runprocessInfoPayload = CreateMessage(MessageType.CustomTestHostLaunch, new TestProcessStartInfo()); + + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); - var runprocessInfoPayload = CreateMessage(MessageType.CustomTestHostLaunch, new TestProcessStartInfo()); + var mockLauncher = new Mock(); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback + (() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + _requestSender.StartTestRunWithCustomHost(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - var mockLauncher = new Mock(); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback - (() => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); + } - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); + [TestMethod] + public async Task StartTestRunWithCustomHostAsyncWithSelectedTestsShouldComplete() + { + await InitializeCommunicationAsync(); - this.requestSender.StartTestRunWithCustomHost(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, mockLauncher.Object); + var mockHandler = new Mock(); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); - } + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - [TestMethod] - public async Task StartTestRunWithCustomHostAsyncWithSelectedTestsShouldComplete() - { - await this.InitializeCommunicationAsync(); + var testCaseList = new List() { testCase }; - var mockHandler = new Mock(); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); - var testCaseList = new List() { testCase }; + var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; - var testsChangedArgs = new TestRunChangedEventArgs(null, new List() { testResult }, null); + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - var testsPayload = CreateMessage(MessageType.TestRunStatsChange, testsChangedArgs); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); + var runprocessInfoPayload = CreateMessage(MessageType.CustomTestHostLaunch, new TestProcessStartInfo()); - var payload = new TestRunCompletePayload() + mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( + (testRunChangedArgs) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults!.Any(), "TestResults must be passed properly"); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + }); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete))); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); - var runprocessInfoPayload = CreateMessage(MessageType.CustomTestHostLaunch, new TestProcessStartInfo()); + var mockLauncher = new Mock(); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback + (() => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); - mockHandler.Setup(mh => mh.HandleTestRunStatsChange(It.IsAny())).Callback( - (testRunChangedArgs) => - { - Assert.IsTrue(testRunChangedArgs.NewTestResults != null && testsChangedArgs.NewTestResults.Any(), "TestResults must be passed properly"); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - }); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - }); + await _requestSender.StartTestRunWithCustomHostAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - var mockLauncher = new Mock(); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())).Callback - (() => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(testsPayload))); - - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runprocessInfoPayload)); - - await this.requestSender.StartTestRunWithCustomHostAsync(testCaseList, null, new TestPlatformOptions(), null, mockHandler.Object, mockLauncher.Object); - - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), - It.IsAny(), null, null), Times.Once, "Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); - mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); - } - - [TestMethod] - public void StartTestRunWithCustomHostInParallelShouldCallCustomHostMultipleTimes() - { - var mockLauncher = new Mock(); - var mockHandler = new Mock(); - IEnumerable sources = new List { "1.dll" }; - var p1 = new TestProcessStartInfo() { FileName = "X" }; - var p2 = new TestProcessStartInfo() { FileName = "Y" }; - var message1 = CreateMessage(MessageType.CustomTestHostLaunch, p1); - var message2 = CreateMessage(MessageType.CustomTestHostLaunch, p2); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var completepayload = new TestRunCompletePayload() + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), + It.IsAny(), null, null), Times.Once, "Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunStatsChange(It.IsAny()), Times.Once, "RunChangedArgs must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Once, "TestMessage event must be called"); + mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Once, "Custom TestHostLauncher must be called"); + } + + [TestMethod] + public void StartTestRunWithCustomHostInParallelShouldCallCustomHostMultipleTimes() + { + var mockLauncher = new Mock(); + var mockHandler = new Mock(); + IEnumerable sources = new List { "1.dll" }; + var p1 = new TestProcessStartInfo() { FileName = "X" }; + var p2 = new TestProcessStartInfo() { FileName = "Y" }; + var message1 = CreateMessage(MessageType.CustomTestHostLaunch, p1); + var message2 = CreateMessage(MessageType.CustomTestHostLaunch, p2); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var completePayload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = null, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, completePayload); + + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message1)); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())) + .Callback((startInfo) => { - ExecutorUris = null, - LastRunTests = null, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, completepayload); - - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message1)); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())) - .Callback((startInfo) => + if (startInfo.FileName!.Equals(p1.FileName)) { - if (startInfo.FileName.Equals(p1.FileName)) - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message2)); - } - else if (startInfo.FileName.Equals(p2.FileName)) - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - } - }); - this.requestSender.InitializeCommunication(); - this.requestSender.StartTestRunWithCustomHost(sources, null, new TestPlatformOptions(), null, mockHandler.Object, mockLauncher.Object); - - mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Exactly(2)); - } - - [TestMethod] - public async Task StartTestRunWithCustomHostAsyncInParallelShouldCallCustomHostMultipleTimes() - { - var mockLauncher = new Mock(); - var mockHandler = new Mock(); - IEnumerable sources = new List { "1.dll" }; - var p1 = new TestProcessStartInfo() { FileName = "X" }; - var p2 = new TestProcessStartInfo() { FileName = "Y" }; - var message1 = CreateMessage(MessageType.CustomTestHostLaunch, p1); - var message2 = CreateMessage(MessageType.CustomTestHostLaunch, p2); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var completepayload = new TestRunCompletePayload() + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message2)); + } + else if (startInfo.FileName.Equals(p2.FileName)) + { + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + } + }); + _requestSender.InitializeCommunication(); + _requestSender.StartTestRunWithCustomHost(sources, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); + + mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Exactly(2)); + } + + [TestMethod] + public async Task StartTestRunWithCustomHostAsyncInParallelShouldCallCustomHostMultipleTimes() + { + var mockLauncher = new Mock(); + var mockHandler = new Mock(); + IEnumerable sources = new List { "1.dll" }; + var p1 = new TestProcessStartInfo() { FileName = "X" }; + var p2 = new TestProcessStartInfo() { FileName = "Y" }; + var message1 = CreateMessage(MessageType.CustomTestHostLaunch, p1); + var message2 = CreateMessage(MessageType.CustomTestHostLaunch, p2); + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var completePayload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = null, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, completePayload); + + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message1)); + mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())) + .Callback((startInfo) => { - ExecutorUris = null, - LastRunTests = null, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - var runComplete = CreateMessage(MessageType.ExecutionComplete, completepayload); - - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message1)); - mockLauncher.Setup(ml => ml.LaunchTestHost(It.IsAny())) - .Callback((startInfo) => + if (startInfo.FileName!.Equals(p1.FileName)) { - if (startInfo.FileName.Equals(p1.FileName)) - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message2)); - } - else if (startInfo.FileName.Equals(p2.FileName)) - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - } - }); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message2)); + } + else if (startInfo.FileName.Equals(p2.FileName)) + { + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + } + }); - await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - await this.requestSender.StartTestRunWithCustomHostAsync(sources, null, null, null, mockHandler.Object, mockLauncher.Object); + await _requestSender.InitializeCommunicationAsync(_waitTimeout); + await _requestSender.StartTestRunWithCustomHostAsync(sources, null, null, null, mockHandler.Object, _telemetryHandler.Object, mockLauncher.Object); - mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Exactly(2)); - } + mockLauncher.Verify(ml => ml.LaunchTestHost(It.IsAny()), Times.Exactly(2)); + } - [TestMethod] - public void StartTestRunShouldAbortOnExceptionInSendMessage() - { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var payload = new TestRunRequestPayload { Sources = sources, RunSettings = null }; - var exception = new IOException(); + [TestMethod] + public void StartTestRunShouldAbortOnExceptionInSendMessage() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var payload = new TestRunRequestPayload { Sources = sources, RunSettings = null }; + var exception = new IOException(); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, payload, this.protocolVersion)).Throws(exception); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, payload, _protocolVersion)).Throws(exception); - this.requestSender.StartTestRun(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + _requestSender.StartTestRun(sources, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once, "Test Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); - this.mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); - } + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once, "Test Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); + _mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); + } - [TestMethod] - public async Task StartTestRunAsyncShouldAbortOnExceptionInSendMessage() - { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var payload = new TestRunRequestPayload { Sources = sources, RunSettings = null }; - var exception = new IOException(); + [TestMethod] + public async Task StartTestRunAsyncShouldAbortOnExceptionInSendMessage() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var payload = new TestRunRequestPayload { Sources = sources, RunSettings = null }; + var exception = new IOException(); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, payload, this.protocolVersion)).Throws(exception); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAllSourcesWithDefaultHost, payload, _protocolVersion)).Throws(exception); - await this.requestSender.StartTestRunAsync(sources, null, null, null, mockHandler.Object); + await _requestSender.StartTestRunAsync(sources, null, null, null, mockHandler.Object, _telemetryHandler.Object); - mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once, "Test Run Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); - this.mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); - } + mockHandler.Verify(mh => mh.HandleTestRunComplete(It.IsAny(), null, null, null), Times.Once, "Test Run Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); + _mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); + } - [TestMethod] - public void StartTestRunShouldLogErrorOnProcessExited() - { - var mockHandler = new Mock(); - var manualEvent = new ManualResetEvent(false); - var sources = new List { "1.dll" }; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - var payload = new TestRunCompletePayload() + [TestMethod] + public void StartTestRunShouldLogErrorOnProcessExited() + { + var mockHandler = new Mock(); + var manualEvent = new ManualResetEvent(false); + var sources = new List { "1.dll" }; + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + _requestSender.InitializeCommunication(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Callback((CancellationToken c) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - this.requestSender.InitializeCommunication(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Callback((CancellationToken c) => - { - Task.Run(() => this.requestSender.OnProcessExited()).Wait(); + Task.Run(() => _requestSender.OnProcessExited(), c).Wait(c); - Assert.IsTrue(c.IsCancellationRequested); - }).Returns(Task.FromResult((Message)null)); + Assert.IsTrue(c.IsCancellationRequested); + }).Returns(Task.FromResult((Message?)null)); - mockHandler.Setup(mh => mh.HandleTestRunComplete(It.IsAny(), null, null, null)).Callback(() => manualEvent.Set()); + mockHandler.Setup(mh => mh.HandleTestRunComplete(It.IsAny(), null, null, null)).Callback(() => manualEvent.Set()); - this.requestSender.StartTestRun(sources, null, new TestPlatformOptions(), null, mockHandler.Object); + _requestSender.StartTestRun(sources, null, new TestPlatformOptions(), null, mockHandler.Object, _telemetryHandler.Object); - manualEvent.WaitOne(); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + manualEvent.WaitOne(); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - [TestMethod] - public async Task StartTestRunAsyncShouldLogErrorOnProcessExited() - { - var mockHandler = new Mock(); - var sources = new List { "1.dll" }; - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); - var payload = new TestRunCompletePayload() + [TestMethod] + public async Task StartTestRunAsyncShouldLogErrorOnProcessExited() + { + var mockHandler = new Mock(); + var sources = new List { "1.dll" }; + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var payload = new TestRunCompletePayload() + { + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; + await _requestSender.InitializeCommunicationAsync(_waitTimeout); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Callback((CancellationToken c) => { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; - await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Callback((CancellationToken c) => - { - Task.Run(() => this.requestSender.OnProcessExited()).Wait(); + Task.Run(() => _requestSender.OnProcessExited(), c).Wait(c); + + Assert.IsTrue(c.IsCancellationRequested); + }).Returns(Task.FromResult((Message?)null)); - Assert.IsTrue(c.IsCancellationRequested); - }).Returns(Task.FromResult((Message)null)); + await _requestSender.StartTestRunAsync(sources, null, null, null, mockHandler.Object, _telemetryHandler.Object); - await this.requestSender.StartTestRunAsync(sources, null, null, null, mockHandler.Object); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); + } - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once); - } + #endregion - #endregion + #region Attachments Processing Tests - #region Attachments Processing Tests + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithZeroAttachments() + { + await InitializeCommunicationAsync(); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithZeroAttachments() + var mockHandler = new Mock(); + + var payload = new TestRunAttachmentsProcessingCompletePayload() { - await this.InitializeCommunicationAsync(); + AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(false, null), + Attachments = Array.Empty() + }; - var mockHandler = new Mock(); + var attachmentsProcessingComplete = new Message() + { + MessageType = MessageType.TestRunAttachmentsProcessingComplete, + Payload = JToken.FromObject(payload) + }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny())).Callback((string _, object o) => + { + Assert.AreEqual(Constants.EmptyRunSettings, ((TestRunAttachmentsProcessingPayload)o).RunSettings); + Assert.AreEqual(1, ((TestRunAttachmentsProcessingPayload)o).InvokedDataCollectors!.Count()); + }); - var payload = new TestRunAttachmentsProcessingCompletePayload() - { - AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(false, null), - Attachments = new AttachmentSet[0] - }; + await _requestSender.ProcessTestRunAttachmentsAsync( + new List { new(new Uri("http://www.bing.com"), "a") }, + new List() { new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) }, + Constants.EmptyRunSettings, + true, + mockHandler.Object, + CancellationToken.None); - var attachmentsProcessingComplete = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingComplete, - Payload = JToken.FromObject(payload) - }; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.Is(a => !a.IsCanceled && a.Error == null), It.Is>(a => a.Count == 0)), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "a") }, true, mockHandler.Object, CancellationToken.None); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithOneAttachment() + { + await InitializeCommunicationAsync(); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.Is(a => !a.IsCanceled && a.Error == null), It.Is>(a => a.Count == 0)), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + var mockHandler = new Mock(); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithOneAttachment() + var payload = new TestRunAttachmentsProcessingCompletePayload() + { + AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(true, new Exception("msg")), + Attachments = new List { new(new Uri("http://www.bing.com"), "out") } + }; + var attachmentsProcessingComplete = new Message() { - await this.InitializeCommunicationAsync(); + MessageType = MessageType.TestRunAttachmentsProcessingComplete, + Payload = JToken.FromObject(payload) + }; - var mockHandler = new Mock(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny())).Callback((string _, object o) => + { + Assert.AreEqual(Constants.EmptyRunSettings, ((TestRunAttachmentsProcessingPayload)o).RunSettings); + Assert.AreEqual(1, ((TestRunAttachmentsProcessingPayload)o).InvokedDataCollectors!.Count()); + }); - var payload = new TestRunAttachmentsProcessingCompletePayload() - { - AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(true, new Exception("msg")), - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") } - }; - var attachmentsProcessingComplete = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingComplete, - Payload = JToken.FromObject(payload) - }; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + await _requestSender.ProcessTestRunAttachmentsAsync( + new List { new(new Uri("http://www.bing.com"), "a") }, + new List() { new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) }, + Constants.EmptyRunSettings, + true, + mockHandler.Object, + CancellationToken.None); - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "a") }, true, mockHandler.Object, CancellationToken.None); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.Is(a => a.IsCanceled && a.Error != null), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); + } + + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithOneAttachmentAndTestMessage() + { + await InitializeCommunicationAsync(); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.Is(a => a.IsCanceled && a.Error != null), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny()), Times.Never, "TestMessage event must not be called"); - } + var mockHandler = new Mock(); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithOneAttachmentAndTestMessage() + var payload = new TestRunAttachmentsProcessingCompletePayload() { - await this.InitializeCommunicationAsync(); + AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(false, null), + Attachments = new List { new(new Uri("http://www.bing.com"), "out") } + }; - var mockHandler = new Mock(); + var attachmentsProcessingComplete = new Message() + { + MessageType = MessageType.TestRunAttachmentsProcessingComplete, + Payload = JToken.FromObject(payload) + }; - var payload = new TestRunAttachmentsProcessingCompletePayload() - { - AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(false, null), - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") } - }; + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var attachmentsProcessingComplete = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingComplete, - Payload = JToken.FromObject(payload) - }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny())).Callback((string _, object o) => + { + Assert.AreEqual(Constants.EmptyRunSettings, ((TestRunAttachmentsProcessingPayload)o).RunSettings); + Assert.AreEqual(1, ((TestRunAttachmentsProcessingPayload)o).InvokedDataCollectors!.Count()); + }); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete))); - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + await _requestSender.ProcessTestRunAttachmentsAsync( + new List { new(new Uri("http://www.bing.com"), "a") }, + new List() { new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) }, + Constants.EmptyRunSettings, + false, + mockHandler.Object, + CancellationToken.None); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete))); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); + } - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "a") }, false, mockHandler.Object, CancellationToken.None); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithOneAttachmentAndProgressMessage() + { + await InitializeCommunicationAsync(); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); - } + var mockHandler = new Mock(); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldCompleteWithOneAttachmentAndProgressMessage() + var completePayload = new TestRunAttachmentsProcessingCompletePayload() { - await this.InitializeCommunicationAsync(); + AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(false, null), + Attachments = new List { new(new Uri("http://www.bing.com"), "out") } + }; - var mockHandler = new Mock(); + var attachmentsProcessingComplete = new Message() + { + MessageType = MessageType.TestRunAttachmentsProcessingComplete, + Payload = JToken.FromObject(completePayload) + }; - var completePayload = new TestRunAttachmentsProcessingCompletePayload() - { - AttachmentsProcessingCompleteEventArgs = new TestRunAttachmentsProcessingCompleteEventArgs(false, null), - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") } - }; + var progressPayload = new TestRunAttachmentsProcessingProgressPayload() + { + AttachmentsProcessingProgressEventArgs = new TestRunAttachmentsProcessingProgressEventArgs(1, new[] { new Uri("http://www.bing.com/") }, 50, 2) + }; - var attachmentsProcessingComplete = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingComplete, - Payload = JToken.FromObject(completePayload) - }; + var attachmentsProcessingProgress = new Message() + { + MessageType = MessageType.TestRunAttachmentsProcessingProgress, + Payload = JToken.FromObject(progressPayload) + }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingProgress)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny())).Callback((string _, object o) => + { + Assert.AreEqual(Constants.EmptyRunSettings, ((TestRunAttachmentsProcessingPayload)o).RunSettings); + Assert.AreEqual(1, ((TestRunAttachmentsProcessingPayload)o).InvokedDataCollectors!.Count()); + }); - var progressPayload = new TestRunAttachmentsProcessingProgressPayload() - { - AttachmentsProcessingProgressEventArgs = new TestRunAttachmentsProcessingProgressEventArgs(1, new[] { new Uri("http://www.bing.com/") }, 50, 2) - }; + mockHandler.Setup(mh => mh.HandleTestRunAttachmentsProcessingProgress(It.IsAny())).Callback( + () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete))); - var attachmentsProcessingProgress = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingProgress, - Payload = JToken.FromObject(progressPayload) - }; - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingProgress)); + await _requestSender.ProcessTestRunAttachmentsAsync( + new List { new(new Uri("http://www.bing.com"), "a") }, + new List() { new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) }, + Constants.EmptyRunSettings, + false, + mockHandler.Object, + CancellationToken.None); - mockHandler.Setup(mh => mh.HandleTestRunAttachmentsProcessingProgress(It.IsAny())).Callback( - () => this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete))); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingProgress(It.Is(a => a.CurrentAttachmentProcessorIndex == 1 && a.CurrentAttachmentProcessorUris.First() == new Uri("http://www.bing.com/") && a.CurrentAttachmentProcessorProgress == 50 && a.AttachmentProcessorsCount == 2)), Times.Once, "Attachments processing Progress must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Never); + } - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "a") }, false, mockHandler.Object, CancellationToken.None); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldSendCancelMessageIfCancellationTokenCancelled() + { + await InitializeCommunicationAsync(); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel), Times.Never); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingProgress(It.Is(a => a.CurrentAttachmentProcessorIndex == 1 && a.CurrentAttachmentProcessorUris.First() == new Uri("http://www.bing.com/") && a.CurrentAttachmentProcessorProgress == 50 && a.AttachmentProcessorsCount == 2)), Times.Once, "Attachments processing Progress must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Never); - } + var cts = new CancellationTokenSource(); - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldSendCancelMessageIfCancellationTokenCancelled() - { - await this.InitializeCommunicationAsync(); + var mockHandler = new Mock(); - var cts = new CancellationTokenSource(); + var payload = new TestRunAttachmentsProcessingCompletePayload() + { + Attachments = new List { new(new Uri("http://www.bing.com"), "out") } + }; + var attachmentsProcessingComplete = new Message() + { + MessageType = MessageType.TestRunAttachmentsProcessingComplete, + Payload = JToken.FromObject(payload) + }; - var mockHandler = new Mock(); + var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; + var message = CreateMessage(MessageType.TestMessage, mpayload); - var payload = new TestRunAttachmentsProcessingCompletePayload() - { - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") } - }; - var attachmentsProcessingComplete = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingComplete, - Payload = JToken.FromObject(payload) - }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny())).Callback((string _, object o) => + { + Assert.AreEqual(Constants.EmptyRunSettings, ((TestRunAttachmentsProcessingPayload)o).RunSettings); + Assert.AreEqual(1, ((TestRunAttachmentsProcessingPayload)o).InvokedDataCollectors!.Count()); + }); + mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback(() => + { + cts.Cancel(); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + }); + + await _requestSender.ProcessTestRunAttachmentsAsync( + new List { new(new Uri("http://www.bing.com"), "a") }, + new List() { new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) }, + Constants.EmptyRunSettings, + false, + mockHandler.Object, + cts.Token); + + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel)); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); + } - var mpayload = new TestMessagePayload() { MessageLevel = TestMessageLevel.Informational, Message = "Hello" }; - var message = CreateMessage(MessageType.TestMessage, mpayload); + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldSendCancelMessageIfCancellationTokenCancelledAtTheBeginning() + { + await InitializeCommunicationAsync(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(message)); - mockHandler.Setup(mh => mh.HandleLogMessage(It.IsAny(), It.IsAny())).Callback(() => - { - cts.Cancel(); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); - }); + var cts = new CancellationTokenSource(); + cts.Cancel(); - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "a") }, false, mockHandler.Object, cts.Token); + var mockHandler = new Mock(); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel)); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Once, "TestMessage event must be called"); - } + var payload = new TestRunAttachmentsProcessingCompletePayload() + { + Attachments = new List { new(new Uri("http://www.bing.com"), "out") } + }; + var attachmentsProcessingComplete = new Message() + { + MessageType = MessageType.TestRunAttachmentsProcessingComplete, + Payload = JToken.FromObject(payload) + }; - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldSendCancelMessageIfCancellationTokenCancelledAtTheBeginning() + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(It.IsAny(), It.IsAny())).Callback((string _, object o) => { - await this.InitializeCommunicationAsync(); + Assert.AreEqual(Constants.EmptyRunSettings, ((TestRunAttachmentsProcessingPayload)o).RunSettings); + Assert.AreEqual(1, ((TestRunAttachmentsProcessingPayload)o).InvokedDataCollectors!.Count()); + }); - var cts = new CancellationTokenSource(); - cts.Cancel(); + await _requestSender.ProcessTestRunAttachmentsAsync( + new List { new(new Uri("http://www.bing.com"), "a") }, + new List() { new(new Uri("datacollector://sample"), "sample", typeof(string).AssemblyQualifiedName!, typeof(string).Assembly.Location, false) }, + Constants.EmptyRunSettings, + true, + mockHandler.Object, + cts.Token); - var mockHandler = new Mock(); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); + _mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel)); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Never, "TestMessage event must be called"); + } - var payload = new TestRunAttachmentsProcessingCompletePayload() - { - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") } - }; - var attachmentsProcessingComplete = new Message() - { - MessageType = MessageType.TestRunAttachmentsProcessingComplete, - Payload = JToken.FromObject(payload) - }; + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldAbortOnExceptionInSendMessage() + { + var mockHandler = new Mock(); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())).Throws(new IOException()); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(attachmentsProcessingComplete)); + await _requestSender.ProcessTestRunAttachmentsAsync(new List { new(new Uri("http://www.bing.com"), "out") }, new List(), Constants.EmptyRunSettings, false, mockHandler.Object, CancellationToken.None); - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "a") }, true, mockHandler.Object, cts.Token); + mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.Is(a => !a.IsCanceled && a.Error is IOException), null), Times.Once, "Attachments Processing Complete must be called"); + mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); + _mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); + } - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())); - mockCommunicationManager.Verify(c => c.SendMessage(MessageType.TestRunAttachmentsProcessingCancel)); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.IsAny(), It.Is>(a => a.Count == 1)), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Informational, "Hello"), Times.Never, "TestMessage event must be called"); - } + #endregion - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldAbortOnExceptionInSendMessage() - { - var mockHandler = new Mock(); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.TestRunAttachmentsProcessingStart, It.IsAny())).Throws(new IOException()); + #region Sessions API + private const int MinimumProtocolVersionWithTestSessionSupport = 5; + private const int TesthostPid = 5000; - await this.requestSender.ProcessTestRunAttachmentsAsync(new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") }, false, mockHandler.Object, CancellationToken.None); + [TestMethod] + public void StartTestSessionShouldFailIfWrongProtocolVersionIsNegotiated() + { + InitializeCommunication(MinimumProtocolVersionWithTestSessionSupport - 1); - mockHandler.Verify(mh => mh.HandleTestRunAttachmentsProcessingComplete(It.Is(a => !a.IsCanceled && a.Error is IOException), null), Times.Once, "Attachments Processing Complete must be called"); - mockHandler.Verify(mh => mh.HandleLogMessage(TestMessageLevel.Error, It.IsAny()), Times.Once, "TestMessage event must be called"); - this.mockCommunicationManager.Verify(cm => cm.StopServer(), Times.Never); - } + var mockHandler = new Mock(); + mockHandler.Setup( + mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNull(eventArgs.TestSessionInfo); + Assert.IsNull(eventArgs.Metrics); + }); - #endregion + Assert.IsNull(_requestSender.StartTestSession( + new List() { "DummyTestAssembly.dll" }, + string.Empty, + null, + mockHandler.Object, + null)); - #region Sessions API - private const int MinimumProtocolVersionWithTestSessionSupport = 5; - private const int TesthostPid = 5000; + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } - [TestMethod] - public void StartTestSessionShouldFailIfWrongProtocolVersionIsNegotiated() - { - this.InitializeCommunication(MinimumProtocolVersionWithTestSessionSupport - 1); + [TestMethod] + public async Task StartTestSessionAsyncShouldFailIfWrongProtocolVersionIsNegotiated() + { + await InitializeCommunicationAsync(MinimumProtocolVersionWithTestSessionSupport - 1).ConfigureAwait(false); - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); + var mockHandler = new Mock(); + mockHandler.Setup( + mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNull(eventArgs.TestSessionInfo); + Assert.IsNull(eventArgs.Metrics); + }); + + Assert.IsNull(await _requestSender.StartTestSessionAsync( + new List() { "DummyTestAssembly.dll" }, + string.Empty, + null, + mockHandler.Object, + null).ConfigureAwait(false)); - Assert.IsNull(this.requestSender.StartTestSession( + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void StartTestSessionShouldSucceed() + { + InitializeCommunication(); + + var testSessionInfo = new TestSessionInfo(); + var metrics = new Dictionary(); + metrics.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); + + var mockHandler = new Mock(); + mockHandler.Setup(mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + }); + + var ackPayload = new Payloads.StartTestSessionAckPayload() + { + EventArgs = new() + { + TestSessionInfo = testSessionInfo, + Metrics = metrics + } + }; + var message = CreateMessage( + MessageType.StartTestSessionCallback, + ackPayload); + + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSession, + It.IsAny(), + _protocolVersion)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(message)); + + Assert.AreEqual( + testSessionInfo, + _requestSender.StartTestSession( new List() { "DummyTestAssembly.dll" }, string.Empty, null, mockHandler.Object, null)); + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(null), Times.Once); - } + [TestMethod] + public async Task StartTestSessionAsyncShouldSucceed() + { + await InitializeCommunicationAsync().ConfigureAwait(false); - [TestMethod] - public async Task StartTestSessionAsyncShouldFailIfWrongProtocolVersionIsNegotiated() - { - await this.InitializeCommunicationAsync(MinimumProtocolVersionWithTestSessionSupport - 1).ConfigureAwait(false); + var testSessionInfo = new TestSessionInfo(); + var metrics = new Dictionary(); + metrics.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); + var mockHandler = new Mock(); + mockHandler.Setup(mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + }); - Assert.IsNull(await this.requestSender.StartTestSessionAsync( + var ackPayload = new Payloads.StartTestSessionAckPayload() + { + EventArgs = new() + { + TestSessionInfo = testSessionInfo, + Metrics = metrics + } + }; + var message = CreateMessage( + MessageType.StartTestSessionCallback, + ackPayload); + + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSession, + It.IsAny(), + _protocolVersion)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(message)); + + Assert.AreEqual( + testSessionInfo, + await _requestSender.StartTestSessionAsync( new List() { "DummyTestAssembly.dll" }, string.Empty, null, mockHandler.Object, null).ConfigureAwait(false)); + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(null), Times.Once); - } - - [TestMethod] - public void StartTestSessionShouldSucceed() - { - this.InitializeCommunication(); + [TestMethod] + public void StartTestSessionWithTesthostLauncherShouldSucceed() + { + InitializeCommunication(); - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); + // Setup + var testSessionInfo = new TestSessionInfo(); + var metrics = new Dictionary(); + metrics.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); - var testSessionInfo = new TestSessionInfo(); - var ackPayload = new Payloads.StartTestSessionAckPayload() - { - TestSessionInfo = testSessionInfo - }; - var message = this.CreateMessage( - MessageType.StartTestSessionCallback, - ackPayload); - - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSession, - It.IsAny(), - this.protocolVersion)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(message)); - - Assert.AreEqual( - testSessionInfo, - this.requestSender.StartTestSession( - new List() { "DummyTestAssembly.dll" }, - string.Empty, - null, - mockHandler.Object, - null)); - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(testSessionInfo), Times.Once); - } - - [TestMethod] - public async Task StartTestSessionAsyncShouldSucceed() - { - await this.InitializeCommunicationAsync().ConfigureAwait(false); - - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); - - var testSessionInfo = new TestSessionInfo(); - var ackPayload = new Payloads.StartTestSessionAckPayload() + var mockHandler = new Mock(); + mockHandler.Setup(mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => { - TestSessionInfo = testSessionInfo - }; - var message = this.CreateMessage( - MessageType.StartTestSessionCallback, - ackPayload); - - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSession, - It.IsAny(), - this.protocolVersion)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(message)); - - Assert.AreEqual( - testSessionInfo, - await this.requestSender.StartTestSessionAsync( - new List() { "DummyTestAssembly.dll" }, - string.Empty, - null, - mockHandler.Object, - null).ConfigureAwait(false)); - } - - [TestMethod] - public void StartTestSessionWithTesthostLauncherShouldSucceed() - { - this.InitializeCommunication(); - - // Setup - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); - var mockTesthostLauncher = new Mock(); - mockTesthostLauncher.Setup(tl => tl.LaunchTestHost(It.IsAny())).Returns(TesthostPid); - - var launchInfo = new TestProcessStartInfo(); - var launchMessage = this.CreateMessage( - MessageType.CustomTestHostLaunch, - launchInfo); - - var testSessionInfo = new TestSessionInfo(); - var ackPayload = new Payloads.StartTestSessionAckPayload() - { - TestSessionInfo = testSessionInfo - }; - var ackMessage = this.CreateMessage( - MessageType.StartTestSessionCallback, - ackPayload); + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + }); + var mockTesthostLauncher = new Mock(); + mockTesthostLauncher.Setup(tl => tl.LaunchTestHost(It.IsAny())).Returns(TesthostPid); - Action reconfigureAction = () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(ackMessage)); - }; - - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSession, - It.IsAny(), - this.protocolVersion)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.CustomTestHostLaunchCallback, - It.IsAny(), - this.protocolVersion)) - .Callback((string messageType, object payload, int version) => - { - Assert.AreEqual(((CustomHostLaunchAckPayload)payload).HostProcessId, TesthostPid); - }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(launchMessage)) - .Callback(reconfigureAction); - - // Act - Assert.AreEqual( - testSessionInfo, - this.requestSender.StartTestSession( - new List() { "DummyTestAssembly.dll" }, - string.Empty, - null, - mockHandler.Object, - mockTesthostLauncher.Object)); - - // Verify - mockTesthostLauncher.Verify(tl => tl.LaunchTestHost(It.IsAny()), Times.Once); - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(testSessionInfo), Times.Once); - } - - [TestMethod] - public async Task StartTestSessionAsyncWithTesthostLauncherShouldSucceed() - { - await this.InitializeCommunicationAsync().ConfigureAwait(false); - - // Setup - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); - var mockTesthostLauncher = new Mock(); - mockTesthostLauncher.Setup(tl => tl.LaunchTestHost(It.IsAny())).Returns(TesthostPid); - - var launchInfo = new TestProcessStartInfo(); - var launchMessage = this.CreateMessage( - MessageType.CustomTestHostLaunch, - launchInfo); - - var testSessionInfo = new TestSessionInfo(); - var ackPayload = new Payloads.StartTestSessionAckPayload() + var launchInfo = new TestProcessStartInfo(); + var launchMessage = CreateMessage( + MessageType.CustomTestHostLaunch, + launchInfo); + + var ackPayload = new Payloads.StartTestSessionAckPayload() + { + EventArgs = new() { - TestSessionInfo = testSessionInfo - }; - var ackMessage = this.CreateMessage( - MessageType.StartTestSessionCallback, - ackPayload); + TestSessionInfo = testSessionInfo, + Metrics = metrics + } + }; + var ackMessage = CreateMessage( + MessageType.StartTestSessionCallback, + ackPayload); + + Action reconfigureAction = () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(ackMessage)); + + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSession, + It.IsAny(), + _protocolVersion)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.CustomTestHostLaunchCallback, + It.IsAny(), + _protocolVersion)) + .Callback((string messageType, object payload, int version) => Assert.AreEqual(((CustomHostLaunchAckPayload)payload).HostProcessId, TesthostPid)); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(launchMessage)) + .Callback(reconfigureAction); + + // Act + Assert.AreEqual( + testSessionInfo, + _requestSender.StartTestSession( + new List() { "DummyTestAssembly.dll" }, + string.Empty, + null, + mockHandler.Object, + mockTesthostLauncher.Object)); + + // Verify + mockTesthostLauncher.Verify(tl => tl.LaunchTestHost(It.IsAny()), Times.Once); + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task StartTestSessionAsyncWithTesthostLauncherShouldSucceed() + { + await InitializeCommunicationAsync().ConfigureAwait(false); + + // Setup + var testSessionInfo = new TestSessionInfo(); + var metrics = new Dictionary(); + metrics.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); - Action reconfigureAction = () => + var mockHandler = new Mock(); + mockHandler.Setup(mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(ackMessage)); - }; - - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSession, - It.IsAny(), - this.protocolVersion)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.CustomTestHostLaunchCallback, - It.IsAny(), - this.protocolVersion)) - .Callback((string messageType, object payload, int version) => - { - Assert.AreEqual(((CustomHostLaunchAckPayload)payload).HostProcessId, TesthostPid); - }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(launchMessage)) - .Callback(reconfigureAction); - - // Act - Assert.AreEqual( - testSessionInfo, - await this.requestSender.StartTestSessionAsync( - new List() { "DummyTestAssembly.dll" }, - string.Empty, - null, - mockHandler.Object, - mockTesthostLauncher.Object).ConfigureAwait(false)); - - // Verify - mockTesthostLauncher.Verify(tl => tl.LaunchTestHost(It.IsAny()), Times.Once); - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(testSessionInfo), Times.Once); - } - - [TestMethod] - public void StartTestSessionWithTesthostLauncherAttachingToProcessShouldSucceed() - { - this.InitializeCommunication(); - - // Setup - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); - var mockTesthostLauncher = new Mock(); - mockTesthostLauncher.Setup(tl => tl.AttachDebuggerToProcess(TesthostPid)).Returns(true); - - var launchMessage = this.CreateMessage( - MessageType.EditorAttachDebugger, - TesthostPid); - - var testSessionInfo = new TestSessionInfo(); - var ackPayload = new Payloads.StartTestSessionAckPayload() + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + }); + var mockTesthostLauncher = new Mock(); + mockTesthostLauncher.Setup(tl => tl.LaunchTestHost(It.IsAny())).Returns(TesthostPid); + + var launchInfo = new TestProcessStartInfo(); + var launchMessage = CreateMessage( + MessageType.CustomTestHostLaunch, + launchInfo); + + var ackPayload = new Payloads.StartTestSessionAckPayload() + { + EventArgs = new() { - TestSessionInfo = testSessionInfo - }; - var ackMessage = this.CreateMessage( - MessageType.StartTestSessionCallback, - ackPayload); + TestSessionInfo = testSessionInfo, + Metrics = metrics + } + }; + var ackMessage = CreateMessage( + MessageType.StartTestSessionCallback, + ackPayload); + + Action reconfigureAction = () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(ackMessage)); + + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSession, + It.IsAny(), + _protocolVersion)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.CustomTestHostLaunchCallback, + It.IsAny(), + _protocolVersion)) + .Callback((string messageType, object payload, int version) => Assert.AreEqual(((CustomHostLaunchAckPayload)payload).HostProcessId, TesthostPid)); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(launchMessage)) + .Callback(reconfigureAction); + + // Act + Assert.AreEqual( + testSessionInfo, + await _requestSender.StartTestSessionAsync( + new List() { "DummyTestAssembly.dll" }, + string.Empty, + null, + mockHandler.Object, + mockTesthostLauncher.Object).ConfigureAwait(false)); + + // Verify + mockTesthostLauncher.Verify(tl => tl.LaunchTestHost(It.IsAny()), Times.Once); + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } - Action reconfigureAction = () => + [TestMethod] + public void StartTestSessionWithTesthostLauncherAttachingToProcessShouldSucceed() + { + InitializeCommunication(); + + // Setup + var testSessionInfo = new TestSessionInfo(); + var metrics = new Dictionary(); + metrics.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); + + var mockHandler = new Mock(); + mockHandler.Setup(mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(ackMessage)); - }; - - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSession, - It.IsAny(), - this.protocolVersion)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.EditorAttachDebuggerCallback, - It.IsAny(), - this.protocolVersion)) - .Callback((string messageType, object payload, int version) => - { - Assert.IsTrue(((EditorAttachDebuggerAckPayload)payload).Attached); - }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(launchMessage)) - .Callback(reconfigureAction); - - // Act - Assert.AreEqual( - testSessionInfo, - this.requestSender.StartTestSession( - new List() { "DummyTestAssembly.dll" }, - string.Empty, - null, - mockHandler.Object, - mockTesthostLauncher.Object)); - - // Verify - mockTesthostLauncher.Verify(tl => tl.AttachDebuggerToProcess(TesthostPid), Times.Once); - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(testSessionInfo), Times.Once); - } - - [TestMethod] - public async Task StartTestSessionAsyncWithTesthostLauncherAttachingToProcessShouldSucceed() - { - await this.InitializeCommunicationAsync().ConfigureAwait(false); - - // Setup - var mockHandler = new Mock(); - mockHandler.Setup(mh => mh.HandleStartTestSessionComplete(It.IsAny())).Callback(() => { }); - var mockTesthostLauncher = new Mock(); - mockTesthostLauncher.Setup(tl => tl.AttachDebuggerToProcess(TesthostPid)).Returns(true); - - var launchMessage = this.CreateMessage( - MessageType.EditorAttachDebugger, - TesthostPid); - - var testSessionInfo = new TestSessionInfo(); - var ackPayload = new Payloads.StartTestSessionAckPayload() + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + }); + var mockTesthostLauncher = new Mock(); + mockTesthostLauncher.Setup(tl => tl.AttachDebuggerToProcess(TesthostPid)).Returns(true); + + var launchMessage = CreateMessage( + MessageType.EditorAttachDebugger, + TesthostPid); + + var ackPayload = new Payloads.StartTestSessionAckPayload() + { + EventArgs = new() { - TestSessionInfo = testSessionInfo - }; - var ackMessage = this.CreateMessage( - MessageType.StartTestSessionCallback, - ackPayload); + TestSessionInfo = testSessionInfo, + Metrics = metrics + } + }; + var ackMessage = CreateMessage( + MessageType.StartTestSessionCallback, + ackPayload); + + Action reconfigureAction = () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(ackMessage)); + + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSession, + It.IsAny(), + _protocolVersion)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.EditorAttachDebuggerCallback, + It.IsAny(), + _protocolVersion)) + .Callback((string messageType, object payload, int version) => Assert.IsTrue(((EditorAttachDebuggerAckPayload)payload).Attached)); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(launchMessage)) + .Callback(reconfigureAction); + + // Act + Assert.AreEqual( + testSessionInfo, + _requestSender.StartTestSession( + new List() { "DummyTestAssembly.dll" }, + string.Empty, + null, + mockHandler.Object, + mockTesthostLauncher.Object)); + + // Verify + mockTesthostLauncher.Verify(tl => tl.AttachDebuggerToProcess(TesthostPid), Times.Once); + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete( + It.IsAny()), + Times.Once); + } - Action reconfigureAction = () => + [TestMethod] + public async Task StartTestSessionAsyncWithTesthostLauncherAttachingToProcessShouldSucceed() + { + await InitializeCommunicationAsync().ConfigureAwait(false); + + // Setup + var testSessionInfo = new TestSessionInfo(); + var metrics = new Dictionary(); + metrics.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); + + var mockHandler = new Mock(); + mockHandler.Setup(mh => mh.HandleStartTestSessionComplete( + It.IsAny())) + .Callback((StartTestSessionCompleteEventArgs eventArgs) => { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(ackMessage)); - }; - - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.StartTestSession, - It.IsAny(), - this.protocolVersion)).Callback(() => { }); - this.mockCommunicationManager.Setup(cm => cm.SendMessage( - MessageType.EditorAttachDebuggerCallback, - It.IsAny(), - this.protocolVersion)) - .Callback((string messageType, object payload, int version) => - { - Assert.IsTrue(((EditorAttachDebuggerAckPayload)payload).Attached); - }); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) - .Returns(Task.FromResult(launchMessage)) - .Callback(reconfigureAction); - - // Act - Assert.AreEqual( - testSessionInfo, - await this.requestSender.StartTestSessionAsync( - new List() { "DummyTestAssembly.dll" }, - string.Empty, - null, - mockHandler.Object, - mockTesthostLauncher.Object).ConfigureAwait(false)); - - // Verify - mockTesthostLauncher.Verify(tl => tl.AttachDebuggerToProcess(TesthostPid), Times.Once); - mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(testSessionInfo), Times.Once); - } - #endregion - - #region Private Methods - - /// - /// Serialize and Deserialize message as it would happen for real. - /// - /// - /// - /// - /// - private Message CreateMessage(string messageType, T payload) - { - return this.serializer.DeserializeMessage(this.serializer.SerializePayload(messageType, payload, this.protocolVersion)); - } - - private void InitializeCommunication() - { - this.InitializeCommunication(this.protocolVersion); - } - - private void InitializeCommunication(int protocolVersion) - { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - - this.mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) - .Callback((int timeout) => Task.Delay(200).Wait()); - - var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; - var versionCheck = new Message() { MessageType = MessageType.VersionCheck, Payload = protocolVersion }; - - Action changedMessage = () => + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + }); + var mockTesthostLauncher = new Mock(); + mockTesthostLauncher.Setup(tl => tl.AttachDebuggerToProcess(It.IsAny(), It.IsAny())).Returns(true); + + var launchMessage = CreateMessage( + MessageType.EditorAttachDebugger, + TesthostPid); + + var ackPayload = new Payloads.StartTestSessionAckPayload() + { + EventArgs = new() { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(versionCheck); - }; + TestSessionInfo = testSessionInfo, + Metrics = metrics + } + }; + var ackMessage = CreateMessage( + MessageType.StartTestSessionCallback, + ackPayload); + + Action reconfigureAction = () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(ackMessage)); + + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.StartTestSession, + It.IsAny(), + _protocolVersion)).Callback(() => { }); + _mockCommunicationManager.Setup(cm => cm.SendMessage( + MessageType.EditorAttachDebuggerCallback, + It.IsAny(), + _protocolVersion)) + .Callback((string messageType, object payload, int version) => Assert.IsTrue(((EditorAttachDebuggerAckPayload)payload).Attached)); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())) + .Returns(Task.FromResult(launchMessage)) + .Callback(reconfigureAction); + + // Act + Assert.AreEqual( + testSessionInfo, + await _requestSender.StartTestSessionAsync( + new List() { "DummyTestAssembly.dll" }, + string.Empty, + null, + mockHandler.Object, + mockTesthostLauncher.Object).ConfigureAwait(false)); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(sessionConnected); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, It.IsAny())).Callback(changedMessage); + // Verify + mockTesthostLauncher.Verify(tl => tl.AttachDebuggerToProcess(It.Is(i => i.ProcessId == TesthostPid), It.IsAny()), Times.Once); + mockHandler.Verify(mh => mh.HandleStartTestSessionComplete(It.IsAny()), Times.Once); + } + #endregion + + #region Private Methods + + /// + /// Serialize and Deserialize message as it would happen for real. + /// + /// + /// + /// + /// + private Message CreateMessage(string messageType, T payload) + { + return _serializer.DeserializeMessage(_serializer.SerializePayload(messageType, payload, _protocolVersion)); + } - var portOutput = this.requestSender.InitializeCommunication(); - Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); - var connectionSuccess = this.requestSender.WaitForRequestHandlerConnection(this.WaitTimeout); - Assert.IsTrue(connectionSuccess, "Connection must succeed."); - } + private void InitializeCommunication() + { + InitializeCommunication(_protocolVersion); + } - private void SetupMockCommunicationForRunRequest(Mock mockHandler) - { - this.InitializeCommunication(); + private void InitializeCommunication(int protocolVersion) + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); - var testResult = new VisualStudio.TestPlatform.ObjectModel.TestResult(testCase); - testResult.Outcome = TestOutcome.Passed; + _mockCommunicationManager.Setup(cm => cm.WaitForClientConnection(Timeout.Infinite)) + .Callback((int timeout) => Task.Delay(200).Wait()); - var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, TimeSpan.FromMilliseconds(1)); - var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + var versionCheck = new Message() { MessageType = MessageType.VersionCheck, Payload = protocolVersion }; - var payload = new TestRunCompletePayload() - { - ExecutorUris = null, - LastRunTests = dummyLastRunArgs, - RunAttachments = null, - TestRunCompleteArgs = dummyCompleteArgs - }; + Action changedMessage = () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(versionCheck); - var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); + _mockCommunicationManager.Setup(cm => cm.ReceiveMessage()).Returns(sessionConnected); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, It.IsAny())).Callback(changedMessage); - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); - } + var portOutput = _requestSender.InitializeCommunication(); + Assert.AreEqual(dummyPortInput, portOutput, "Port number must return without changes."); + var connectionSuccess = _requestSender.WaitForRequestHandlerConnection(_waitTimeout); + Assert.IsTrue(connectionSuccess, "Connection must succeed."); + } - private async Task InitializeCommunicationAsync() - { - await this.InitializeCommunicationAsync(this.protocolVersion); - } + private void SetupMockCommunicationForRunRequest() + { + InitializeCommunication(); + + var testCase = new TestCase("hello", new Uri("world://how"), "1.dll"); + var testResult = new TestResult(testCase); + testResult.Outcome = TestOutcome.Passed; - private async Task InitializeCommunicationAsync(int protocolVersion) + var dummyCompleteArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, TimeSpan.FromMilliseconds(1)); + var dummyLastRunArgs = new TestRunChangedEventArgs(null, null, null); + + var payload = new TestRunCompletePayload() { - var dummyPortInput = 123; - this.mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); - this.mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); + ExecutorUris = null, + LastRunTests = dummyLastRunArgs, + RunAttachments = null, + TestRunCompleteArgs = dummyCompleteArgs + }; - var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; - var versionCheck = new Message() { MessageType = MessageType.VersionCheck, Payload = protocolVersion }; + var runComplete = CreateMessage(MessageType.ExecutionComplete, payload); - Action changedMessage = () => - { - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(versionCheck)); - }; + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(runComplete)); + } - this.mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(sessionConnected)); - this.mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, It.IsAny())).Callback(changedMessage); + private async Task InitializeCommunicationAsync() + { + await InitializeCommunicationAsync(_protocolVersion); + } + + private async Task InitializeCommunicationAsync(int protocolVersion) + { + var dummyPortInput = 123; + _mockCommunicationManager.Setup(cm => cm.HostServer(new IPEndPoint(IPAddress.Loopback, 0))).Returns(new IPEndPoint(IPAddress.Loopback, dummyPortInput)); + _mockCommunicationManager.Setup(cm => cm.AcceptClientAsync()).Returns(Task.FromResult(false)).Callback(() => { }); - var portOutput = await this.requestSender.InitializeCommunicationAsync(this.WaitTimeout); - Assert.AreEqual(dummyPortInput, portOutput, "Connection must succeed."); - } + var sessionConnected = new Message() { MessageType = MessageType.SessionConnected }; + var versionCheck = new Message() { MessageType = MessageType.VersionCheck, Payload = protocolVersion }; - #endregion + Action changedMessage = () => _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(versionCheck)); + + _mockCommunicationManager.Setup(cm => cm.ReceiveMessageAsync(It.IsAny())).Returns(Task.FromResult(sessionConnected)); + _mockCommunicationManager.Setup(cm => cm.SendMessage(MessageType.VersionCheck, It.IsAny())).Callback(changedMessage); + + var portOutput = await _requestSender.InitializeCommunicationAsync(_waitTimeout); + Assert.AreEqual(dummyPortInput, portOutput, "Connection must succeed."); } + + #endregion } diff --git a/test/TranslationLayer.UnitTests/VsTestConsoleWrapperAsyncTests.cs b/test/TranslationLayer.UnitTests/VsTestConsoleWrapperAsyncTests.cs deleted file mode 100644 index a4a85627f9..0000000000 --- a/test/TranslationLayer.UnitTests/VsTestConsoleWrapperAsyncTests.cs +++ /dev/null @@ -1,589 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests -{ - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class VsTestConsoleWrapperAsyncTests - { - private IVsTestConsoleWrapper consoleWrapper; - - private Mock mockProcessManager; - - private Mock mockRequestSender; - - private Mock mockProcessHelper; - - private readonly List testSources = new List { "Hello", "World" }; - - private readonly List testCases = new List - { - new TestCase("a.b.c", new Uri("d://uri"), "a.dll"), - new TestCase("d.e.f", new Uri("g://uri"), "d.dll") - }; - - private ConsoleParameters consoleParameters; - - [TestInitialize] - public void TestInitialize() - { - this.consoleParameters = new ConsoleParameters(); - - this.mockRequestSender = new Mock(); - this.mockProcessManager = new Mock(); - this.mockProcessHelper = new Mock(); - this.consoleWrapper = new VsTestConsoleWrapper( - this.mockRequestSender.Object, - this.mockProcessManager.Object, - this.consoleParameters, - new Mock().Object, - this.mockProcessHelper.Object); - - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(100); - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(100)); - } - - [TestMethod] - public async Task StartSessionAsyncShouldStartVsTestConsoleWithCorrectArguments() - { - var inputPort = 123; - int expectedParentProcessId = System.Diagnostics.Process.GetCurrentProcess().Id; - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(inputPort)); - - await this.consoleWrapper.StartSessionAsync(); - - Assert.AreEqual(expectedParentProcessId, this.consoleParameters.ParentProcessId, "Parent process Id must be set"); - Assert.AreEqual(inputPort, this.consoleParameters.PortNumber, "Port number must be set"); - - this.mockProcessManager.Verify(pm => pm.StartProcess(this.consoleParameters), Times.Once); - } - - [TestMethod] - public void StartSessionAsyncShouldThrowExceptionOnBadPort() - { - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(-1)); - - Assert.ThrowsExceptionAsync(async () => await this.consoleWrapper.StartSessionAsync()); - } - - [TestMethod] - public async Task StartSessionShouldCallWhenProcessNotInitializedAsync() - { - this.mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(false); - - // To call private method EnsureInitialize call InitializeExtensions - await this.consoleWrapper.InitializeExtensionsAsync(new[] { "path/to/adapter" }); - - this.mockProcessManager.Verify(pm => pm.StartProcess(It.IsAny())); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public async Task StartTestSessionAsyncShouldCallRequestSenderWithCorrectArguments1() - { - var testSessionInfo = new TestSessionInfo(); - var mockEventsHandler = new Mock(); - - this.mockRequestSender.Setup( - rs => rs.StartTestSessionAsync( - this.testSources, - null, - null, - mockEventsHandler.Object, - null)) - .Returns(Task.FromResult(testSessionInfo)); - - Assert.AreEqual( - (await this.consoleWrapper.StartTestSessionAsync( - this.testSources, - null, - mockEventsHandler.Object).ConfigureAwait(false)).TestSessionInfo, - testSessionInfo); - - this.mockRequestSender.Verify( - rs => rs.StartTestSessionAsync( - this.testSources, - null, - null, - mockEventsHandler.Object, - null), - Times.Once); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public async Task StartTestSessionAsyncShouldCallRequestSenderWithCorrectArguments2() - { - var testSessionInfo = new TestSessionInfo(); - var testPlatformOptions = new TestPlatformOptions(); - var mockEventsHandler = new Mock(); - - this.mockRequestSender.Setup( - rs => rs.StartTestSessionAsync( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - null)) - .Returns(Task.FromResult(testSessionInfo)); - - Assert.AreEqual( - (await this.consoleWrapper.StartTestSessionAsync( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object).ConfigureAwait(false)).TestSessionInfo, - testSessionInfo); - - this.mockRequestSender.Verify( - rs => rs.StartTestSessionAsync( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - null), - Times.Once); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public async Task StartTestSessionAsyncShouldCallRequestSenderWithCorrectArguments3() - { - var testSessionInfo = new TestSessionInfo(); - var testPlatformOptions = new TestPlatformOptions(); - var mockEventsHandler = new Mock(); - var mockTesthostLauncher = new Mock(); - - this.mockRequestSender.Setup( - rs => rs.StartTestSessionAsync( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - mockTesthostLauncher.Object)) - .Returns(Task.FromResult(testSessionInfo)); - - Assert.AreEqual( - (await this.consoleWrapper.StartTestSessionAsync( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - mockTesthostLauncher.Object).ConfigureAwait(false)).TestSessionInfo, - testSessionInfo); - - this.mockRequestSender.Verify( - rs => rs.StartTestSessionAsync( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - mockTesthostLauncher.Object), - Times.Once); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public async Task StopTestSessionAsyncShouldCallRequestSenderWithCorrectArguments() - { - var testSessionInfo = new TestSessionInfo(); - var mockEventsHandler = new Mock(); - - this.mockRequestSender.Setup( - rs => rs.StopTestSessionAsync( - It.IsAny(), - It.IsAny())) - .Returns(Task.FromResult(true)); - - Assert.IsTrue( - await this.consoleWrapper.StopTestSessionAsync( - testSessionInfo, - mockEventsHandler.Object).ConfigureAwait(false)); - - this.mockRequestSender.Verify( - rs => rs.StopTestSessionAsync( - testSessionInfo, - mockEventsHandler.Object), - Times.Once); - } - - [TestMethod] - public async Task InitializeExtensionsAsyncShouldCachePathToExtensions() - { - var pathToExtensions = new[] { "path/to/adapter" }; - this.mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(true); - - await this.consoleWrapper.InitializeExtensionsAsync(pathToExtensions); - - this.mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(false); - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(100)); - - await this.consoleWrapper.InitializeExtensionsAsync(pathToExtensions); - - this.mockRequestSender.Verify(rs => rs.InitializeExtensions(pathToExtensions), Times.Exactly(3)); - } - - [TestMethod] - public void ProcessExitedEventShouldSetOnProcessExit() - { - this.mockProcessManager.Raise(pm => pm.ProcessExited += null, EventArgs.Empty); - - this.mockRequestSender.Verify(rs => rs.OnProcessExited(), Times.Once); - } - - [TestMethod] - public async Task InitializeExtensionsAsyncShouldSucceed() - { - var pathToAdditionalExtensions = new List { "Hello", "World" }; - - await this.consoleWrapper.InitializeExtensionsAsync(pathToAdditionalExtensions); - - this.mockRequestSender.Verify(rs => rs.InitializeExtensions(pathToAdditionalExtensions), Times.Once); - } - - [TestMethod] - public void InitializeExtensionsAsyncShouldThrowExceptionOnBadConnection() - { - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(-1)); - - Assert.ThrowsExceptionAsync(async () => await this.consoleWrapper.InitializeExtensionsAsync(new List { "Hello", "World" })); - this.mockRequestSender.Verify(rs => rs.InitializeExtensions(It.IsAny>()), Times.Never); - } - - [TestMethod] - public async Task DiscoverTestsAsyncShouldSucceed() - { - await this.consoleWrapper.DiscoverTestsAsync(this.testSources, null, new TestPlatformOptions(), new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.DiscoverTestsAsync(this.testSources, null, It.IsAny(), null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task DiscoverTestsAsyncShouldPassTestDiscoveryHandler2IfTestDiscoveryHandler1IsInput() - { - await this.consoleWrapper.DiscoverTestsAsync(this.testSources, null, new TestPlatformOptions(), new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.DiscoverTestsAsync(this.testSources, null, It.IsAny(), null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task DiscoverTestsAndNullOptionsAsyncShouldSucceedOnNullOptions() - { - await this.consoleWrapper.DiscoverTestsAsync(this.testSources, null, null, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.DiscoverTestsAsync(this.testSources, null, null, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task DiscoverTestsAndOptionsAsyncShouldSucceedOnOptions() - { - var options = new TestPlatformOptions(); - await this.consoleWrapper.DiscoverTestsAsync(this.testSources, null, options, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.DiscoverTestsAsync(this.testSources, null, options, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void DiscoverTestsAsyncShouldThrowExceptionOnBadConnection() - { - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(-1)); - - Assert.ThrowsExceptionAsync(async () => await this.consoleWrapper.DiscoverTestsAsync(new List { "Hello", "World" }, null, new TestPlatformOptions(), new Mock().Object)); - this.mockRequestSender.Verify(rs => rs.DiscoverTestsAsync(It.IsAny>(), It.IsAny(), It.IsAny(), null, It.IsAny()), Times.Never); - } - - [TestMethod] - public async Task DiscoverTestsShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - - await this.consoleWrapper.DiscoverTestsAsync( - this.testSources, - null, - null, - testSessionInfo, - new Mock().Object) - .ConfigureAwait(false); - - this.mockRequestSender.Verify( - rs => rs.DiscoverTestsAsync( - this.testSources, - null, - null, - testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesShouldSucceed() - { - await this.consoleWrapper.RunTestsAsync(this.testSources, "RunSettings", new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunAsync(this.testSources, "RunSettings", null, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndNullOptionsShouldSucceedOnNullOptions() - { - await this.consoleWrapper.RunTestsAsync(this.testSources, "RunSettings", null, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunAsync(this.testSources, "RunSettings", null, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndOptionsShouldSucceedOnOptions() - { - var options = new TestPlatformOptions(); - await this.consoleWrapper.RunTestsAsync(this.testSources, "RunSettings", options, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunAsync(this.testSources, "RunSettings", options, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - await this.consoleWrapper.RunTestsAsync( - this.testSources, - "RunSettings", - options, - testSessionInfo, - new Mock().Object) - .ConfigureAwait(false); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunAsync( - this.testSources, - "RunSettings", - options, - testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndCustomHostShouldSucceed() - { - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testSources, - "RunSettings", - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHostAsync(this.testSources, "RunSettings", null, null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndOptionsUsingCustomHostShouldSucceedOnNullOptions() - { - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testSources, - "RunSettings", - null, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHostAsync(this.testSources, "RunSettings", null, null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesOnOptionsUsingCustomHostShouldSucceedOnOptions() - { - var options = new TestPlatformOptions(); - - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testSources, - "RunSettings", - options, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHostAsync(this.testSources, "RunSettings", options, null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSourcesAndACustomHostShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testSources, - "RunSettings", - options, - testSessionInfo, - new Mock().Object, - new Mock().Object) - .ConfigureAwait(false); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunWithCustomHostAsync( - this.testSources, - "RunSettings", - options, - testSessionInfo, - It.IsAny(), - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsShouldSucceed() - { - await this.consoleWrapper.RunTestsAsync(this.testCases, "RunSettings", new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunAsync(this.testCases, "RunSettings", It.IsAny(), null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsAndOptionsShouldSucceedOnNullOptions() - { - await this.consoleWrapper.RunTestsAsync(this.testCases, "RunSettings", null, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunAsync(this.testCases, "RunSettings", null, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsAndOptionsShouldSucceedOnOptions() - { - var options = new TestPlatformOptions(); - - await this.consoleWrapper.RunTestsAsync(this.testCases, "RunSettings", options, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunAsync(this.testCases, "RunSettings", options, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - - await this.consoleWrapper.RunTestsAsync( - this.testCases, - "RunSettings", - options, - testSessionInfo, - new Mock().Object) - .ConfigureAwait(false); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunAsync( - this.testCases, - "RunSettings", - options, - testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsAndCustomLauncherShouldSucceed() - { - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testCases, - "RunSettings", - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHostAsync(this.testCases, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsAndOptionsUsingCustomLauncherShouldSucceedOnNullOptions() - { - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testCases, - "RunSettings", - null, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHostAsync(this.testCases, "RunSettings", null, null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsAndOptionsUsingCustomLauncherShouldSucceedOnOptions() - { - var options = new TestPlatformOptions(); - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testCases, - "RunSettings", - options, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHostAsync(this.testCases, "RunSettings", options, null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public async Task RunTestsAsyncWithSelectedTestsAndACustomHostShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - - await this.consoleWrapper.RunTestsWithCustomTestHostAsync( - this.testCases, - "RunSettings", - options, - testSessionInfo, - new Mock().Object, - new Mock().Object) - .ConfigureAwait(false); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunWithCustomHostAsync( - this.testCases, - "RunSettings", - options, - testSessionInfo, - It.IsAny(), - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldSucceed() - { - var attachments = new Collection(); - var cancellationToken = new CancellationToken(); - - await this.consoleWrapper.ProcessTestRunAttachmentsAsync( - attachments, - null, - true, - true, - new Mock().Object, - cancellationToken); - - this.mockRequestSender.Verify(rs => rs.ProcessTestRunAttachmentsAsync(attachments, true, It.IsAny(), cancellationToken)); - } - - [TestMethod] - public void EndSessionShouldSucceed() - { - this.consoleWrapper.EndSession(); - - this.mockRequestSender.Verify(rs => rs.EndSession(), Times.Once); - this.mockRequestSender.Verify(rs => rs.Close(), Times.Once); - } - } -} diff --git a/test/TranslationLayer.UnitTests/VsTestConsoleWrapperTests.cs b/test/TranslationLayer.UnitTests/VsTestConsoleWrapperTests.cs index 2c4f86e188..e3ba446662 100644 --- a/test/TranslationLayer.UnitTests/VsTestConsoleWrapperTests.cs +++ b/test/TranslationLayer.UnitTests/VsTestConsoleWrapperTests.cs @@ -1,584 +1,701 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.VsTestConsole.TranslationLayer; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests; + +[TestClass] +public class VsTestConsoleWrapperTests { - using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Diagnostics; - using System.Threading; - using System.Threading.Tasks; - - [TestClass] - public class VsTestConsoleWrapperTests - { - private IVsTestConsoleWrapper consoleWrapper; - - private Mock mockProcessManager; - - private Mock mockProcessHelper; - - private Mock mockRequestSender; - - private readonly List testSources = new List { "Hello", "World" }; - - private readonly List testCases = new List - { - new TestCase("a.b.c", new Uri("d://uri"), "a.dll"), - new TestCase("d.e.f", new Uri("g://uri"), "d.dll") - }; - - private ConsoleParameters consoleParameters; - - [TestInitialize] - public void TestInitialize() - { - this.consoleParameters = new ConsoleParameters(); - - this.mockRequestSender = new Mock(); - this.mockProcessManager = new Mock(); - this.mockProcessHelper = new Mock(); - this.consoleWrapper = new VsTestConsoleWrapper( - this.mockRequestSender.Object, - this.mockProcessManager.Object, - this.consoleParameters, - new Mock().Object, - this.mockProcessHelper.Object); - - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(100); - this.mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(100)); - } - - [TestMethod] - public void StartSessionShouldStartVsTestConsoleWithCorrectArguments() - { - var inputPort = 123; - int expectedParentProcessId = System.Diagnostics.Process.GetCurrentProcess().Id; - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(inputPort); - - this.consoleWrapper.StartSession(); - - Assert.AreEqual(expectedParentProcessId, this.consoleParameters.ParentProcessId, "Parent process Id must be set"); - Assert.AreEqual(inputPort, this.consoleParameters.PortNumber, "Port number must be set"); - Assert.AreEqual(TraceLevel.Verbose, this.consoleParameters.TraceLevel, "Default value of trace level should be verbose."); - - this.mockProcessManager.Verify(pm => pm.StartProcess(this.consoleParameters), Times.Once); - } - - [TestMethod] - public void StartSessionShouldThrowExceptionOnBadPort() - { - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(-1); - - Assert.ThrowsException(() => this.consoleWrapper.StartSession()); - } - - [TestMethod] - public void StartSessionShouldCallWhenProcessNotInitialized() - { - this.mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(false); - - // To call private method EnsureInitialize call InitializeExtensions - this.consoleWrapper.InitializeExtensions(new[] { "path/to/adapter" }); - - this.mockProcessManager.Verify(pm => pm.StartProcess(It.IsAny())); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public void StartTestSessionShouldCallRequestSenderWithCorrectArguments1() - { - var testSessionInfo = new TestSessionInfo(); - var mockEventsHandler = new Mock(); - - this.mockRequestSender.Setup( + private readonly IVsTestConsoleWrapper _consoleWrapper; + private readonly Mock _mockProcessManager; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockRequestSender; + private readonly List _testSources = ["Hello", "World"]; + private readonly List _testCases = + [ + new TestCase("a.b.c", new Uri("d://uri"), "a.dll"), + new TestCase("d.e.f", new Uri("g://uri"), "d.dll") + ]; + private readonly ConsoleParameters _consoleParameters; + private readonly Mock _telemetryEventsHandler; + + public VsTestConsoleWrapperTests() + { + _consoleParameters = new ConsoleParameters(); + + _mockRequestSender = new Mock(); + _mockProcessManager = new Mock(); + _mockProcessHelper = new Mock(); + _consoleWrapper = new VsTestConsoleWrapper( + _mockRequestSender.Object, + _mockProcessManager.Object, + _consoleParameters, + new Mock().Object, + _mockProcessHelper.Object); + _telemetryEventsHandler = new Mock(); + + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(100); + _mockRequestSender.Setup(rs => rs.InitializeCommunicationAsync(It.IsAny())).Returns(Task.FromResult(100)); + } + + [TestMethod] + public void StartSessionShouldStartVsTestConsoleWithCorrectArguments() + { + var inputPort = 123; +#if NET5_0_OR_GREATER + var expectedParentProcessId = Environment.ProcessId; +#else + int expectedParentProcessId; + using (var p = Process.GetCurrentProcess()) + expectedParentProcessId = p.Id; +#endif + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(inputPort); + + _consoleWrapper.StartSession(); + + Assert.AreEqual(expectedParentProcessId, _consoleParameters.ParentProcessId, "Parent process Id must be set"); + Assert.AreEqual(inputPort, _consoleParameters.PortNumber, "Port number must be set"); + Assert.AreEqual(TraceLevel.Verbose, _consoleParameters.TraceLevel, "Default value of trace level should be verbose."); + + _mockProcessManager.Verify(pm => pm.StartProcess(_consoleParameters), Times.Once); + } + + [TestMethod] + public void StartSessionShouldThrowExceptionOnBadPort() + { + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(-1); + + Assert.ThrowsException(() => _consoleWrapper.StartSession()); + } + + [TestMethod] + public void StartSessionShouldCallWhenProcessNotInitialized() + { + _mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(false); + + // To call private method EnsureInitialize call InitializeExtensions + _consoleWrapper.InitializeExtensions(new[] { "path/to/adapter" }); + + _mockProcessManager.Verify(pm => pm.StartProcess(It.IsAny())); + } + + [TestMethod] + [Obsolete("This API is not final yet and is subject to changes.", false)] + public void StartTestSessionShouldCallRequestSenderWithCorrectArguments1() + { + var testSessionInfo = new TestSessionInfo(); + var mockEventsHandler = new Mock(); + + _mockRequestSender.Setup( rs => rs.StartTestSession( - this.testSources, + _testSources, null, null, mockEventsHandler.Object, null)) - .Returns(testSessionInfo); + .Returns(testSessionInfo); - Assert.AreEqual( - this.consoleWrapper.StartTestSession( - this.testSources, - null, - mockEventsHandler.Object).TestSessionInfo, - testSessionInfo); + Assert.AreEqual( + _consoleWrapper.StartTestSession( + _testSources, + null, + mockEventsHandler.Object)?.TestSessionInfo, + testSessionInfo); - this.mockRequestSender.Verify( - rs => rs.StartTestSession( - this.testSources, - null, - null, - mockEventsHandler.Object, - null), - Times.Once); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public void StartTestSessionShouldCallRequestSenderWithCorrectArguments2() - { - var testSessionInfo = new TestSessionInfo(); - var testPlatformOptions = new TestPlatformOptions(); - var mockEventsHandler = new Mock(); - - this.mockRequestSender.Setup( + _mockRequestSender.Verify( + rs => rs.StartTestSession( + _testSources, + null, + null, + mockEventsHandler.Object, + null), + Times.Once); + } + + [TestMethod] + [Obsolete("This API is not final yet and is subject to changes.", false)] + public void StartTestSessionShouldCallRequestSenderWithCorrectArguments2() + { + var testSessionInfo = new TestSessionInfo(); + var testPlatformOptions = new TestPlatformOptions(); + var mockEventsHandler = new Mock(); + + _mockRequestSender.Setup( rs => rs.StartTestSession( - this.testSources, + _testSources, null, testPlatformOptions, mockEventsHandler.Object, null)) - .Returns(testSessionInfo); + .Returns(testSessionInfo); - Assert.AreEqual( - this.consoleWrapper.StartTestSession( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object).TestSessionInfo, - testSessionInfo); + Assert.AreEqual( + _consoleWrapper.StartTestSession( + _testSources, + null, + testPlatformOptions, + mockEventsHandler.Object)?.TestSessionInfo, + testSessionInfo); - this.mockRequestSender.Verify( - rs => rs.StartTestSession( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - null), - Times.Once); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public void StartTestSessionShouldCallRequestSenderWithCorrectArguments3() - { - var testSessionInfo = new TestSessionInfo(); - var testPlatformOptions = new TestPlatformOptions(); - var mockEventsHandler = new Mock(); - var mockTesthostLauncher = new Mock(); - - this.mockRequestSender.Setup( + _mockRequestSender.Verify( + rs => rs.StartTestSession( + _testSources, + null, + testPlatformOptions, + mockEventsHandler.Object, + null), + Times.Once); + } + + [TestMethod] + [Obsolete("This API is not final yet and is subject to changes.", false)] + public void StartTestSessionShouldCallRequestSenderWithCorrectArguments3() + { + var testSessionInfo = new TestSessionInfo(); + var testPlatformOptions = new TestPlatformOptions(); + var mockEventsHandler = new Mock(); + var mockTesthostLauncher = new Mock(); + + _mockRequestSender.Setup( rs => rs.StartTestSession( - this.testSources, + _testSources, null, testPlatformOptions, mockEventsHandler.Object, mockTesthostLauncher.Object)) - .Returns(testSessionInfo); + .Returns(testSessionInfo); - Assert.AreEqual( - this.consoleWrapper.StartTestSession( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - mockTesthostLauncher.Object).TestSessionInfo, - testSessionInfo); + Assert.AreEqual( + _consoleWrapper.StartTestSession( + _testSources, + null, + testPlatformOptions, + mockEventsHandler.Object, + mockTesthostLauncher.Object)?.TestSessionInfo, + testSessionInfo); + + _mockRequestSender.Verify( + rs => rs.StartTestSession( + _testSources, + null, + testPlatformOptions, + mockEventsHandler.Object, + mockTesthostLauncher.Object), + Times.Once); + } - this.mockRequestSender.Verify( - rs => rs.StartTestSession( - this.testSources, - null, - testPlatformOptions, - mockEventsHandler.Object, - mockTesthostLauncher.Object), - Times.Once); - } - - [TestMethod] - [Obsolete("This API is not final yet and is subject to changes.", false)] - public void StopTestSessionShouldCallRequestSenderWithCorrectArguments() - { - var testSessionInfo = new TestSessionInfo(); - var mockEventsHandler = new Mock(); - - this.mockRequestSender.Setup( + [TestMethod] + [Obsolete("This API is not final yet and is subject to changes.", false)] + public void StopTestSessionShouldCallRequestSenderWithCorrectArguments() + { + var testSessionInfo = new TestSessionInfo(); + var testPlatformOptions = new TestPlatformOptions(); + var mockEventsHandler = new Mock(); + + _mockRequestSender.Setup( rs => rs.StopTestSession( It.IsAny(), + It.IsAny(), It.IsAny())) - .Returns(true); - - Assert.IsTrue( - this.consoleWrapper.StopTestSession( - testSessionInfo, - mockEventsHandler.Object)); + .Returns(true); - this.mockRequestSender.Verify( - rs => rs.StopTestSession( - testSessionInfo, - mockEventsHandler.Object), - Times.Once); - } + Assert.IsTrue( + _consoleWrapper.StopTestSession( + testSessionInfo, + testPlatformOptions, + mockEventsHandler.Object)); - [TestMethod] - public void InitializeExtensionsShouldCachePathToExtensions() - { - var pathToExtensions = new[] { "path/to/adapter" }; - this.mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(true); + _mockRequestSender.Verify( + rs => rs.StopTestSession( + testSessionInfo, + testPlatformOptions, + mockEventsHandler.Object), + Times.Once); + } - this.consoleWrapper.InitializeExtensions(pathToExtensions); + [TestMethod] + public void InitializeExtensionsShouldCachePathToExtensions() + { + var pathToExtensions = new[] { "path/to/adapter" }; + _mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(true); - this.mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(false); - this.mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(100); + _consoleWrapper.InitializeExtensions(pathToExtensions); - this.consoleWrapper.InitializeExtensions(pathToExtensions); + _mockProcessManager.Setup(pm => pm.IsProcessInitialized()).Returns(false); + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(100); - this.mockRequestSender.Verify(rs => rs.InitializeExtensions(pathToExtensions), Times.Exactly(3)); - } + _consoleWrapper.InitializeExtensions(pathToExtensions); - [TestMethod] - public void ProcessExitedEventShouldSetOnProcessExit() - { - this.mockProcessManager.Raise(pm => pm.ProcessExited += null, EventArgs.Empty); + _mockRequestSender.Verify(rs => rs.InitializeExtensions(pathToExtensions), Times.Exactly(3)); + } - this.mockRequestSender.Verify(rs => rs.OnProcessExited(), Times.Once); - } + [TestMethod] + public void ProcessExitedEventShouldSetOnProcessExit() + { + _mockProcessManager.Raise(pm => pm.ProcessExited += null, EventArgs.Empty); - [TestMethod] - public void InitializeExtensionsShouldSucceed() - { - var pathToAdditionalExtensions = new List { "Hello", "World" }; + _mockRequestSender.Verify(rs => rs.OnProcessExited(), Times.Once); + } - this.consoleWrapper.InitializeExtensions(pathToAdditionalExtensions); + [TestMethod] + public void InitializeExtensionsShouldSucceed() + { + var pathToAdditionalExtensions = new List { "Hello", "World" }; - this.mockRequestSender.Verify(rs => rs.InitializeExtensions(pathToAdditionalExtensions), Times.Once); - } + _consoleWrapper.InitializeExtensions(pathToAdditionalExtensions); - [TestMethod] - public void InitializeExtensionsShouldThrowExceptionOnBadConnection() - { - this.mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("DummyProcess"); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(false); + _mockRequestSender.Verify(rs => rs.InitializeExtensions(pathToAdditionalExtensions), Times.Once); + } - var exception = Assert.ThrowsException(() => this.consoleWrapper.InitializeExtensions(new List { "Hello", "World" })); - Assert.AreEqual("DummyProcess process failed to connect to vstest.console process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.", exception.Message); - this.mockRequestSender.Verify(rs => rs.InitializeExtensions(It.IsAny>()), Times.Never); - } + [TestMethod] + public void InitializeExtensionsShouldThrowExceptionOnBadConnection() + { + _mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("DummyProcess"); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(false); - [TestMethod] - public void DiscoverTestsShouldSucceed() - { - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - this.consoleWrapper.DiscoverTests(this.testSources, null, options, new Mock().Object); + var exception = Assert.ThrowsException(() => _consoleWrapper.InitializeExtensions(new List { "Hello", "World" })); + Assert.AreEqual("DummyProcess process failed to connect to vstest.console process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.", exception.Message); + _mockRequestSender.Verify(rs => rs.InitializeExtensions(It.IsAny>()), Times.Never); + } - this.mockRequestSender.Verify(rs => rs.DiscoverTests(this.testSources, null, options, null, It.IsAny()), Times.Once); - } + [TestMethod] + public void DiscoverTestsShouldSucceed() + { + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.DiscoverTests(_testSources, null, options, new Mock().Object); - [TestMethod] - public void DiscoverTestsShouldPassOnNullOptions() - { - this.consoleWrapper.DiscoverTests(this.testSources, null, null, new Mock().Object); + _mockRequestSender.Verify(rs => rs.DiscoverTests(_testSources, null, options, null, It.IsAny()), Times.Once); + } - this.mockRequestSender.Verify(rs => rs.DiscoverTests(this.testSources, null, null, null, It.IsAny()), Times.Once); - } + [TestMethod] + public void DiscoverTestsShouldPassOnNullOptions() + { + _consoleWrapper.DiscoverTests(_testSources, null, null, new Mock().Object); - [TestMethod] - public void DiscoverTestsShouldCallTestDiscoveryHandler2IfTestDiscoveryHandler1IsUsed() - { - this.consoleWrapper.DiscoverTests(this.testSources, null, new Mock().Object); + _mockRequestSender.Verify(rs => rs.DiscoverTests(_testSources, null, null, null, It.IsAny()), Times.Once); + } - this.mockRequestSender.Verify(rs => rs.DiscoverTests(this.testSources, null, null, null, It.IsAny()), Times.Once); - } + [TestMethod] + public void DiscoverTestsShouldCallTestDiscoveryHandler2IfTestDiscoveryHandler1IsUsed() + { + _consoleWrapper.DiscoverTests(_testSources, null, new Mock().Object); - [TestMethod] - public void DiscoverTestsShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); + _mockRequestSender.Verify(rs => rs.DiscoverTests(_testSources, null, null, null, It.IsAny()), Times.Once); + } - this.consoleWrapper.DiscoverTests( - this.testSources, + [TestMethod] + public void DiscoverTestsShouldSucceedWhenUsingSessions() + { + var testSessionInfo = new TestSessionInfo(); + + _consoleWrapper.DiscoverTests( + _testSources, + null, + null, + testSessionInfo, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.DiscoverTests( + _testSources, null, null, testSessionInfo, - new Mock().Object); + It.IsAny()), + Times.Once); + } - this.mockRequestSender.Verify( - rs => rs.DiscoverTests( - this.testSources, - null, - null, - testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void DiscoverTestsShouldThrowExceptionOnBadConnection() - { - this.mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("DummyProcess"); - this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(false); - - var exception = Assert.ThrowsException(() => this.consoleWrapper.DiscoverTests(new List { "Hello", "World" }, null, null, new Mock().Object)); - Assert.AreEqual("DummyProcess process failed to connect to vstest.console process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.", exception.Message); - this.mockRequestSender.Verify(rs => rs.DiscoverTests(It.IsAny>(), It.IsAny(), null, null, It.IsAny()), Times.Never); - } - - [TestMethod] - public void RunTestsWithSourcesShouldSucceed() - { - this.consoleWrapper.RunTests(this.testSources, "RunSettings", new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRun(this.testSources, "RunSettings", It.IsAny(), null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndNullOptionsShouldPassOnNullOptions() - { - this.consoleWrapper.RunTests( - this.testSources, - "RunSettings", - null, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRun(this.testSources, "RunSettings", null, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndOptionsShouldPassOnOptions() - { - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - this.consoleWrapper.RunTests( - this.testSources, - "RunSettings", - options, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRun(this.testSources, "RunSettings", options, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - this.consoleWrapper.RunTests( - this.testSources, + [TestMethod] + public void DiscoverTestsShouldThrowExceptionOnBadConnection() + { + _mockProcessHelper.Setup(x => x.GetCurrentProcessFileName()).Returns("DummyProcess"); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(false); + + var exception = Assert.ThrowsException(() => _consoleWrapper.DiscoverTests(new List { "Hello", "World" }, null, null, new Mock().Object)); + Assert.AreEqual("DummyProcess process failed to connect to vstest.console process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.", exception.Message); + _mockRequestSender.Verify(rs => rs.DiscoverTests(It.IsAny>(), It.IsAny(), null, null, It.IsAny()), Times.Never); + } + + [TestMethod] + public void RunTestsWithSourcesShouldSucceed() + { + _consoleWrapper.RunTests(_testSources, "RunSettings", new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRun(_testSources, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndNullOptionsShouldPassOnNullOptions() + { + _consoleWrapper.RunTests( + _testSources, + "RunSettings", + null, + new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRun(_testSources, "RunSettings", null, null, It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndOptionsShouldPassOnOptions() + { + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.RunTests( + _testSources, + "RunSettings", + options, + new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRun(_testSources, "RunSettings", options, null, It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesShouldSucceedWhenUsingSessions() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.RunTests( + _testSources, + "RunSettings", + options, + testSessionInfo, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRun( + _testSources, "RunSettings", options, testSessionInfo, - new Mock().Object); - - this.mockRequestSender.Verify( - rs => rs.StartTestRun( - this.testSources, - "RunSettings", - options, - testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndCustomHostShouldSucceed() - { - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testSources, - "RunSettings", - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(this.testSources, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndOptionsUsingACustomHostShouldPassOnOptions() - { - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testSources, - "RunSettings", - options, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunWithCustomHost( - this.testSources, - "RunSettings", - options, - null, - It.IsAny(), - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSourcesAndACustomHostShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testSources, + It.IsAny(), + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesShouldSucceedWhenUsingSessionsAndTelemetryHandler() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + + _consoleWrapper.RunTests( + _testSources, + "RunSettings", + options, + testSessionInfo, + new Mock().Object, + _telemetryEventsHandler.Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRun( + _testSources, "RunSettings", options, testSessionInfo, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunWithCustomHost( - this.testSources, - "RunSettings", - options, - testSessionInfo, - It.IsAny(), - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSelectedTestsShouldSucceed() - { - this.consoleWrapper.RunTests(this.testCases, "RunSettings", new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRun(this.testCases, "RunSettings", It.IsAny(), null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSelectedTestsAndNullOptionsShouldPassOnNullOptions() - { - this.consoleWrapper.RunTests(this.testCases, "RunSettings", null, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRun(this.testCases, "RunSettings", null, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSelectedTestsAndOptionsShouldPassOnOptions() - { - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - - this.consoleWrapper.RunTests(this.testCases, "RunSettings", options, new Mock().Object); - - this.mockRequestSender.Verify(rs => rs.StartTestRun(this.testCases, "RunSettings", options, null, It.IsAny()), Times.Once); - } - - [TestMethod] - public void RunTestsWithSelectedTestsShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - - this.consoleWrapper.RunTests( - this.testCases, + It.IsAny(), + _telemetryEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndCustomHostShouldSucceed() + { + _consoleWrapper.RunTestsWithCustomTestHost( + _testSources, + "RunSettings", + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(_testSources, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndOptionsUsingACustomHostShouldPassOnOptions() + { + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.RunTestsWithCustomTestHost( + _testSources, + "RunSettings", + options, + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRunWithCustomHost( + _testSources, + "RunSettings", + options, + null, + It.IsAny(), + It.IsAny(), + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndACustomHostShouldSucceedWhenUsingSessions() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.RunTestsWithCustomTestHost( + _testSources, + "RunSettings", + options, + testSessionInfo, + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRunWithCustomHost( + _testSources, "RunSettings", options, testSessionInfo, - new Mock().Object); - - this.mockRequestSender.Verify( - rs => rs.StartTestRun( - this.testCases, - "RunSettings", - options, - testSessionInfo, - It.IsAny()), - Times.Once); - } - - [TestMethod] - public void RunTestsWithSelectedTestsAndCustomLauncherShouldSucceed() - { - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testCases, + It.IsAny(), + It.IsAny(), + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSourcesAndACustomHostShouldSucceedWhenUsingSessionsWithTelemetryHandler() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.RunTestsWithCustomTestHost( + _testSources, + "RunSettings", + options, + testSessionInfo, + new Mock().Object, + _telemetryEventsHandler.Object, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRunWithCustomHost( + _testSources, "RunSettings", - new Mock().Object, - new Mock().Object); + options, + testSessionInfo, + It.IsAny(), + _telemetryEventsHandler.Object, + It.IsAny()), + Times.Once); + } - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(this.testCases, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny()), Times.Once); - } + [TestMethod] + public void RunTestsWithSelectedTestsShouldSucceed() + { + _consoleWrapper.RunTests(_testCases, "RunSettings", new Mock().Object); - [TestMethod] - public void RunTestsWithSelectedTestsAndNullOptionsUsingACustomHostShouldPassOnNullOptions() - { - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testCases, - "RunSettings", - null, - new Mock().Object, - new Mock().Object); + _mockRequestSender.Verify(rs => rs.StartTestRun(_testCases, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSelectedTestsAndNullOptionsShouldPassOnNullOptions() + { + _consoleWrapper.RunTests(_testCases, "RunSettings", null, new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRun(_testCases, "RunSettings", null, null, It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSelectedTestsAndOptionsShouldPassOnOptions() + { + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(this.testCases, "RunSettings", null, null, It.IsAny(), It.IsAny()), Times.Once); - } + _consoleWrapper.RunTests(_testCases, "RunSettings", options, new Mock().Object); - [TestMethod] - public void RunTestsWithSelectedTestsAndOptionsUsingACustomHostShouldPassOnOptions() - { - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _mockRequestSender.Verify(rs => rs.StartTestRun(_testCases, "RunSettings", options, null, It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSelectedTestsShouldSucceedWhenUsingSessions() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + + _consoleWrapper.RunTests( + _testCases, + "RunSettings", + options, + testSessionInfo, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRun( + _testCases, + "RunSettings", + options, + testSessionInfo, + It.IsAny(), + It.IsAny()), + Times.Once); + } - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testCases, + [TestMethod] + public void RunTestsWithSelectedTestsShouldSucceedWhenUsingSessionsWithTelemetryHandler() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + + _consoleWrapper.RunTests( + _testCases, + "RunSettings", + options, + testSessionInfo, + new Mock().Object, + _telemetryEventsHandler.Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRun( + _testCases, "RunSettings", options, - new Mock().Object, - new Mock().Object); + testSessionInfo, + It.IsAny(), + _telemetryEventsHandler.Object), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSelectedTestsAndCustomLauncherShouldSucceed() + { + _consoleWrapper.RunTestsWithCustomTestHost( + _testCases, + "RunSettings", + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(_testCases, "RunSettings", It.IsAny(), null, It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } + + [TestMethod] + public void RunTestsWithSelectedTestsAndNullOptionsUsingACustomHostShouldPassOnNullOptions() + { + _consoleWrapper.RunTestsWithCustomTestHost( + _testCases, + "RunSettings", + null, + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(_testCases, "RunSettings", null, null, It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } - this.mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(this.testCases, "RunSettings", options, null, It.IsAny(), It.IsAny()), Times.Once); - } + [TestMethod] + public void RunTestsWithSelectedTestsAndOptionsUsingACustomHostShouldPassOnOptions() + { + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; - [TestMethod] - public void RunTestsWithSelectedTestsAndACustomHostShouldSucceedWhenUsingSessions() - { - var testSessionInfo = new TestSessionInfo(); - var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + _consoleWrapper.RunTestsWithCustomTestHost( + _testCases, + "RunSettings", + options, + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify(rs => rs.StartTestRunWithCustomHost(_testCases, "RunSettings", options, null, It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } - this.consoleWrapper.RunTestsWithCustomTestHost( - this.testCases, + [TestMethod] + public void RunTestsWithSelectedTestsAndACustomHostShouldSucceedWhenUsingSessions() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + + _consoleWrapper.RunTestsWithCustomTestHost( + _testCases, + "RunSettings", + options, + testSessionInfo, + new Mock().Object, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRunWithCustomHost( + _testCases, "RunSettings", options, testSessionInfo, - new Mock().Object, - new Mock().Object); - - this.mockRequestSender.Verify( - rs => rs.StartTestRunWithCustomHost( - this.testCases, - "RunSettings", - options, - testSessionInfo, - It.IsAny(), - It.IsAny()), - Times.Once); - } - - [TestMethod] - public async Task ProcessTestRunAttachmentsAsyncShouldSucceed() - { - var attachments = new Collection(); - var cancellationToken = new CancellationToken(); - - await this.consoleWrapper.ProcessTestRunAttachmentsAsync( - attachments, - null, - true, - true, - new Mock().Object, - cancellationToken); - - this.mockRequestSender.Verify(rs => rs.ProcessTestRunAttachmentsAsync(attachments, true, It.IsAny(), cancellationToken)); - } - - [TestMethod] - public void EndSessionShouldSucceed() - { - this.consoleWrapper.EndSession(); - - this.mockRequestSender.Verify(rs => rs.EndSession(), Times.Once); - this.mockRequestSender.Verify(rs => rs.Close(), Times.Once); - this.mockProcessManager.Verify(x => x.ShutdownProcess(), Times.Once); - } + It.IsAny(), + It.IsAny(), + It.IsAny()), + Times.Once); + } + + [TestMethod] + public void RunTestsWithSelectedTestsAndACustomHostShouldSucceedWhenUsingSessionsWithTelemetryHandler() + { + var testSessionInfo = new TestSessionInfo(); + var options = new TestPlatformOptions() { TestCaseFilter = "PacMan" }; + + _consoleWrapper.RunTestsWithCustomTestHost( + _testCases, + "RunSettings", + options, + testSessionInfo, + new Mock().Object, + _telemetryEventsHandler.Object, + new Mock().Object); + + _mockRequestSender.Verify( + rs => rs.StartTestRunWithCustomHost( + _testCases, + "RunSettings", + options, + testSessionInfo, + It.IsAny(), + _telemetryEventsHandler.Object, + It.IsAny()), + Times.Once); + } + + [TestMethod] + public async Task ProcessTestRunAttachmentsAsyncShouldSucceed() + { + var attachments = new Collection(); + var invokedDataCollectors = new Collection(); + var cancellationToken = new CancellationToken(); + + await _consoleWrapper.ProcessTestRunAttachmentsAsync( + attachments, + invokedDataCollectors, + Constants.EmptyRunSettings, + true, + true, + new Mock().Object, + cancellationToken); + + _mockRequestSender.Verify(rs => rs.ProcessTestRunAttachmentsAsync(attachments, invokedDataCollectors, Constants.EmptyRunSettings, true, It.IsAny(), cancellationToken)); + } + + [TestMethod] + public void EndSessionShouldSucceed() + { + _consoleWrapper.EndSession(); + + _mockRequestSender.Verify(rs => rs.EndSession(), Times.Once); + _mockRequestSender.Verify(rs => rs.Close(), Times.Once); + _mockProcessManager.Verify(x => x.ShutdownProcess(), Times.Once); } } diff --git a/test/coverlet.collector/CoverletInProcDataCollector.cs b/test/coverlet.collector/CoverletInProcDataCollector.cs index 191acf0fe2..e7d60b76e1 100644 --- a/test/coverlet.collector/CoverletInProcDataCollector.cs +++ b/test/coverlet.collector/CoverletInProcDataCollector.cs @@ -1,46 +1,41 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using System.Reflection; using System; using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector.InProcDataCollector; using Microsoft.VisualStudio.TestPlatform.ObjectModel.InProcDataCollector; -[assembly: AssemblyKeyFile("key.snk")] -[assembly: AssemblyVersion("9.9.9.9")] +namespace Coverlet.Collector.DataCollection; -namespace Coverlet.Collector.DataCollection +// This class MUST have the same full name as +// https://github.com/tonerdo/coverlet/blob/master/src/coverlet.collector/InProcDataCollection/CoverletInProcDataCollector.cs +// to mimic real behavior +public class CoverletInProcDataCollector : InProcDataCollection { - // This class MUST have the same full name as - // https://github.com/tonerdo/coverlet/blob/master/src/coverlet.collector/InProcDataCollection/CoverletInProcDataCollector.cs - // to mimic real behavior - public class CoverletInProcDataCollector : InProcDataCollection + public void Initialize(IDataCollectionSink dataCollectionSink) { - public void Initialize(IDataCollectionSink dataCollectionSink) - { - throw new NotImplementedException(); - } - - public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) - { - throw new NotImplementedException(); - } - - public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) - { - throw new NotImplementedException(); - } - - public void TestSessionEnd(TestSessionEndArgs testSessionEndArgs) - { - throw new NotImplementedException(); - } - - public void TestSessionStart(TestSessionStartArgs testSessionStartArgs) - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); + } + + public void TestCaseEnd(TestCaseEndArgs testCaseEndArgs) + { + throw new NotImplementedException(); + } + + public void TestCaseStart(TestCaseStartArgs testCaseStartArgs) + { + throw new NotImplementedException(); + } + + public void TestSessionEnd(TestSessionEndArgs testSessionEndArgs) + { + throw new NotImplementedException(); + } + + public void TestSessionStart(TestSessionStartArgs testSessionStartArgs) + { + throw new NotImplementedException(); } } diff --git a/test/coverlet.collector/coverlet.collector.csproj b/test/coverlet.collector/coverlet.collector.csproj index 97574d9587..169286672b 100644 --- a/test/coverlet.collector/coverlet.collector.csproj +++ b/test/coverlet.collector/coverlet.collector.csproj @@ -1,10 +1,9 @@ - + - netcoreapp2.1;net451 - netcoreapp3.1 - false - false + net9.0;net48 false + + 9.9.9.9 diff --git a/test/coverlet.collector/key.snk b/test/coverlet.collector/key.snk deleted file mode 100644 index 16bbaafe56..0000000000 Binary files a/test/coverlet.collector/key.snk and /dev/null differ diff --git a/test/datacollector.PlatformTests/CommunicationLayerIntegrationTests.cs b/test/datacollector.PlatformTests/CommunicationLayerIntegrationTests.cs index 974ab32c6f..27b26d83c5 100644 --- a/test/datacollector.PlatformTests/CommunicationLayerIntegrationTests.cs +++ b/test/datacollector.PlatformTests/CommunicationLayerIntegrationTests.cs @@ -1,107 +1,100 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.DataCollector.PlatformTests +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.DataCollector.PlatformTests; + +[TestClass] +[Ignore] // Tests are flaky +public class CommunicationLayerIntegrationTests { - using System.Collections.Generic; - using System.Diagnostics; - using System.Reflection; - - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection; - using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - [Ignore] // Tests are flaky - public class CommunicationLayerIntegrationTests + private readonly string _defaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + private readonly Mock _mockTestMessageEventHandler; + private readonly string _dataCollectorSettings, _runSettings; + private readonly IDataCollectionLauncher _dataCollectionLauncher; + private readonly IProcessHelper _processHelper; + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly List _testSources; + + public CommunicationLayerIntegrationTests() { - private string defaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - private Mock mockTestMessageEventHandler; - private string dataCollectorSettings, runSettings; - private IDataCollectionLauncher dataCollectionLauncher; - private IProcessHelper processHelper; - private Mock mockRequestData; - private Mock mockMetricsCollection; - private List testSources; - - public CommunicationLayerIntegrationTests() - { - this.mockTestMessageEventHandler = new Mock(); - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object); - this.dataCollectorSettings = string.Format("", typeof(CustomDataCollector).AssemblyQualifiedName, typeof(CustomDataCollector).GetTypeInfo().Assembly.Location); - this.runSettings = string.Format(this.defaultRunSettings, this.dataCollectorSettings); - this.testSources = new List() { "testsource1.dll" }; - this.processHelper = new ProcessHelper(); - this.dataCollectionLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(this.processHelper, this.runSettings); - } - - [TestMethod] - public void BeforeTestRunStartShouldGetEnviornmentVariables() - { - var dataCollectionRequestSender = new DataCollectionRequestSender(); - - using (var proxyDataCollectionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, this.runSettings, this.testSources, dataCollectionRequestSender, this.processHelper, this.dataCollectionLauncher)) - { - proxyDataCollectionManager.Initialize(); - - var result = proxyDataCollectionManager.BeforeTestRunStart(true, true, this.mockTestMessageEventHandler.Object); - - Assert.AreEqual(1, result.EnvironmentVariables.Count); - } - } - - [TestMethod] - public void AfterTestRunShouldSendGetAttachments() - { - var dataCollectionRequestSender = new DataCollectionRequestSender(); - - using (var proxyDataCollectionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, this.runSettings, this.testSources, dataCollectionRequestSender, this.processHelper, this.dataCollectionLauncher)) - { - proxyDataCollectionManager.Initialize(); - - proxyDataCollectionManager.BeforeTestRunStart(true, true, this.mockTestMessageEventHandler.Object); - - var attachments = proxyDataCollectionManager.AfterTestRunEnd(false, this.mockTestMessageEventHandler.Object); - - Assert.AreEqual("CustomDataCollector", attachments[0].DisplayName); - Assert.AreEqual("my://custom/datacollector", attachments[0].Uri.ToString()); - Assert.IsTrue(attachments[0].Attachments[0].Uri.ToString().Contains("filename.txt")); - } - } - - [TestMethod] - public void AfterTestRunShouldHandleSocketFailureGracefully() - { - var socketCommManager = new SocketCommunicationManager(); - var dataCollectionRequestSender = new DataCollectionRequestSender(socketCommManager, JsonDataSerializer.Instance); - var dataCollectionLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(this.processHelper, this.runSettings); - - using (var proxyDataCollectionManager = new ProxyDataCollectionManager(this.mockRequestData.Object, this.runSettings, this.testSources, dataCollectionRequestSender, this.processHelper, dataCollectionLauncher)) - { - proxyDataCollectionManager.Initialize(); - proxyDataCollectionManager.BeforeTestRunStart(true, true, this.mockTestMessageEventHandler.Object); - - var result = Process.GetProcessById(dataCollectionLauncher.DataCollectorProcessId); - Assert.IsNotNull(result); - - socketCommManager.StopClient(); - - var attachments = proxyDataCollectionManager.AfterTestRunEnd(false, this.mockTestMessageEventHandler.Object); - - Assert.IsNull(attachments); - - // Give time to datacollector process to exit. - Assert.IsTrue(result.WaitForExit(500)); - } - } + _mockTestMessageEventHandler = new Mock(); + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); + _dataCollectorSettings = string.Format(CultureInfo.InvariantCulture, "", typeof(CustomDataCollector).AssemblyQualifiedName, typeof(CustomDataCollector).Assembly.Location); + _runSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, _dataCollectorSettings); + _testSources = new List() { "testsource1.dll" }; + _processHelper = new ProcessHelper(); + _dataCollectionLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(_processHelper, _runSettings); } -} \ No newline at end of file + + [TestMethod] + public void BeforeTestRunStartShouldGetEnvironmentVariables() + { + var dataCollectionRequestSender = new DataCollectionRequestSender(); + + using var proxyDataCollectionManager = new ProxyDataCollectionManager(_mockRequestData.Object, _runSettings, _testSources, dataCollectionRequestSender, _processHelper, _dataCollectionLauncher); + proxyDataCollectionManager.Initialize(); + + var result = proxyDataCollectionManager.BeforeTestRunStart(true, true, _mockTestMessageEventHandler.Object); + + Assert.AreEqual(1, result.EnvironmentVariables?.Count); + } + + [TestMethod] + public void AfterTestRunShouldSendGetAttachments() + { + var dataCollectionRequestSender = new DataCollectionRequestSender(); + + using var proxyDataCollectionManager = new ProxyDataCollectionManager(_mockRequestData.Object, _runSettings, _testSources, dataCollectionRequestSender, _processHelper, _dataCollectionLauncher); + proxyDataCollectionManager.Initialize(); + + proxyDataCollectionManager.BeforeTestRunStart(true, true, _mockTestMessageEventHandler.Object); + + var dataCollectionResult = proxyDataCollectionManager.AfterTestRunEnd(false, _mockTestMessageEventHandler.Object); + + Assert.AreEqual("CustomDataCollector", dataCollectionResult.Attachments![0].DisplayName); + Assert.AreEqual("my://custom/datacollector", dataCollectionResult.Attachments[0].Uri.ToString()); + Assert.IsTrue(dataCollectionResult.Attachments[0].Attachments[0].Uri.ToString().Contains("filename.txt")); + } + + [TestMethod] + public void AfterTestRunShouldHandleSocketFailureGracefully() + { + var socketCommManager = new SocketCommunicationManager(); + var dataCollectionRequestSender = new DataCollectionRequestSender(socketCommManager, JsonDataSerializer.Instance); + var dataCollectionLauncher = DataCollectionLauncherFactory.GetDataCollectorLauncher(_processHelper, _runSettings); + + using var proxyDataCollectionManager = new ProxyDataCollectionManager(_mockRequestData.Object, _runSettings, _testSources, dataCollectionRequestSender, _processHelper, dataCollectionLauncher); + proxyDataCollectionManager.Initialize(); + proxyDataCollectionManager.BeforeTestRunStart(true, true, _mockTestMessageEventHandler.Object); + + var result = Process.GetProcessById(dataCollectionLauncher.DataCollectorProcessId); + Assert.IsNotNull(result); + + socketCommManager.StopClient(); + + var attachments = proxyDataCollectionManager.AfterTestRunEnd(false, _mockTestMessageEventHandler.Object); + + Assert.IsNull(attachments); + + // Give time to datacollector process to exit. + Assert.IsTrue(result.WaitForExit(500)); + } +} diff --git a/test/datacollector.PlatformTests/CustomDataCollector.cs b/test/datacollector.PlatformTests/CustomDataCollector.cs index 4a335e363c..ba92b75b62 100644 --- a/test/datacollector.PlatformTests/CustomDataCollector.cs +++ b/test/datacollector.PlatformTests/CustomDataCollector.cs @@ -1,57 +1,55 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.DataCollector.PlatformTests +using System.Collections.Generic; +using System.IO; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; + +namespace Microsoft.VisualStudio.TestPlatform.DataCollector.PlatformTests; + +[DataCollectorFriendlyName("CustomDataCollector")] +[DataCollectorTypeUri("my://custom/datacollector")] +public class CustomDataCollector : ObjectModel.DataCollection.DataCollector, ITestExecutionEnvironmentSpecifier { - using System; - using System.Collections.Generic; - using System.IO; - using System.Xml; + private DataCollectionSink? _dataCollectionSink; + private DataCollectionEnvironmentContext? _context; + private DataCollectionLogger? _logger; + + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + _dataCollectionSink = dataSink; + _context = environmentContext; + _logger = logger; + events.SessionStart += SessionStarted_Handler; + events.SessionEnd += SessionEnded_Handler; + } - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; + private void SessionStarted_Handler(object? sender, SessionStartEventArgs args) + { + var filename = Path.Combine(Path.GetTempPath(), "filename.txt"); + File.WriteAllText(filename, string.Empty); + _dataCollectionSink!.SendFileAsync(_context!.SessionDataCollectionContext, filename, true); + _logger!.LogWarning(_context.SessionDataCollectionContext, "SessionEnded"); + } + + private void SessionEnded_Handler(object? sender, SessionEndEventArgs args) + { + //logger.LogError(this.context.SessionDataCollectionContext, new Exception("my exception")); + //logger.LogWarning(this.context.SessionDataCollectionContext, "my arning"); + //logger.LogException(context.SessionDataCollectionContext, new Exception("abc"), DataCollectorMessageLevel.Error); + + _logger!.LogWarning(_context!.SessionDataCollectionContext, "SessionEnded"); + } - [DataCollectorFriendlyName("CustomDataCollector")] - [DataCollectorTypeUri("my://custom/datacollector")] - public class CustomDataCollector : DataCollector, ITestExecutionEnvironmentSpecifier + public IEnumerable> GetTestExecutionEnvironmentVariables() { - private DataCollectionSink dataCollectionSink; - private DataCollectionEnvironmentContext context; - private DataCollectionLogger logger; - - public override void Initialize( - System.Xml.XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - events.SessionStart += new EventHandler(this.SessionStarted_Handler); - events.SessionEnd += new EventHandler(this.SessionEnded_Handler); - this.dataCollectionSink = dataSink; - this.context = environmentContext; - this.logger = logger; - } - - private void SessionStarted_Handler(object sender, SessionStartEventArgs args) - { - var filename = Path.Combine(Path.GetTempPath(), "filename.txt"); - File.WriteAllText(filename, string.Empty); - this.dataCollectionSink.SendFileAsync(context.SessionDataCollectionContext, filename, true); - this.logger.LogWarning(this.context.SessionDataCollectionContext, "SessionEnded"); - } - - private void SessionEnded_Handler(object sender, SessionEndEventArgs args) - { - //logger.LogError(this.context.SessionDataCollectionContext, new Exception("my exception")); - //logger.LogWarning(this.context.SessionDataCollectionContext, "my arning"); - //logger.LogException(context.SessionDataCollectionContext, new Exception("abc"), DataCollectorMessageLevel.Error); - - this.logger.LogWarning(this.context.SessionDataCollectionContext, "SessionEnded"); - } - - public IEnumerable> GetTestExecutionEnvironmentVariables() - { - return new List> { new KeyValuePair("key", "value") }; - } + return new List> { new("key", "value") }; } } diff --git a/test/datacollector.PlatformTests/Program.cs b/test/datacollector.PlatformTests/Program.cs deleted file mode 100644 index 2ff9995413..0000000000 --- a/test/datacollector.PlatformTests/Program.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.VisualStudio.TestPlatform.DataCollector.ComponentTests -{ - /// - /// Main entry point for the command line runner. - /// - public static class Program - { - public static void Main(string[] args) - { - } - } -} diff --git a/test/datacollector.PlatformTests/datacollector.PlatformTests.csproj b/test/datacollector.PlatformTests/datacollector.PlatformTests.csproj index 025c98867e..c55879c711 100644 --- a/test/datacollector.PlatformTests/datacollector.PlatformTests.csproj +++ b/test/datacollector.PlatformTests/datacollector.PlatformTests.csproj @@ -1,31 +1,22 @@ - + - ..\..\ true true - + Microsoft.VisualStudio.TestPlatform.DataCollector.PlatformTests - netcoreapp2.1;net472 - netcoreapp3.1 - Exe + net9.0;net48 + Exe datacollector.PlatformTests - + PreserveNewest - - - - - - - diff --git a/test/datacollector.UnitTests/DataCollectionAttachmentManagerTests.cs b/test/datacollector.UnitTests/DataCollectionAttachmentManagerTests.cs index 3a5ead9182..76f16762b3 100644 --- a/test/datacollector.UnitTests/DataCollectionAttachmentManagerTests.cs +++ b/test/datacollector.UnitTests/DataCollectionAttachmentManagerTests.cs @@ -1,296 +1,339 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class DataCollectionAttachmentManagerTests { - using System; - using System.ComponentModel; - using System.IO; - using System.Threading; + private const int Timeout = 10 * 60 * 1000; + private readonly DataCollectionAttachmentManager _attachmentManager; + private readonly Mock _messageSink; + private readonly SessionId _sessionId; + private static readonly string TempDirectoryPath = Path.GetTempPath(); - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; + public DataCollectionAttachmentManagerTests() + { + _attachmentManager = new DataCollectionAttachmentManager(); + _messageSink = new Mock(); + var guid = Guid.NewGuid(); + _sessionId = new SessionId(guid); + } - using Moq; + [TestCleanup] + public void Cleanup() + { + File.Delete(Path.Combine(TempDirectoryPath, "filename.txt")); + File.Delete(Path.Combine(TempDirectoryPath, "filename1.txt")); + } - [TestClass] - public class DataCollectionAttachmentManagerTests + [TestMethod] + public void ParallelAccessShouldNotBreak() { - private const int Timeout = 10 * 60 * 1000; - private DataCollectionAttachmentManager attachmentManager; - private Mock messageSink; - private SessionId sessionId; - private static readonly string TempDirectoryPath = Path.GetTempPath(); + string outputDirectory = Path.Combine(TempDirectoryPath, Guid.NewGuid().ToString()); + var dataCollectorSessionId = new SessionId(Guid.NewGuid()); - public DataCollectionAttachmentManagerTests() + try { - this.attachmentManager = new DataCollectionAttachmentManager(); - this.messageSink = new Mock(); - var guid = Guid.NewGuid(); - this.sessionId = new SessionId(guid); - } + _attachmentManager.Initialize(dataCollectorSessionId, outputDirectory, _messageSink.Object); - [TestCleanup] - public void Cleanup() - { - File.Delete(Path.Combine(TempDirectoryPath, "filename.txt")); - File.Delete(Path.Combine(TempDirectoryPath, "filename1.txt")); - } + CancellationTokenSource cts = new(TimeSpan.FromSeconds(3)); + List parallelTasks = new(); + int totalTasks = 3; - [TestMethod] - public void InitializeShouldThrowExceptionIfSessionIdIsNull() - { - Assert.ThrowsException(() => + // 3 tasks are enough to break bugged code + for (int i = 0; i < totalTasks; i++) { - this.attachmentManager.Initialize((SessionId)null, string.Empty, this.messageSink.Object); - }); - } + parallelTasks.Add(Task.Run(() => + { + while (true) + { + if (cts.IsCancellationRequested) + { + break; + } + _ = TestCaseEvent($"test_{Guid.NewGuid()}"); + } + })); + } - [TestMethod] - public void InitializeShouldThrowExceptionIfMessageSinkIsNull() + Task.WaitAll(parallelTasks.ToArray()); + } + finally { - Assert.ThrowsException(() => + if (Directory.Exists(outputDirectory)) { - this.attachmentManager.Initialize(this.sessionId, string.Empty, null); - }); + Directory.Delete(outputDirectory, true); + } } - [TestMethod] - public void InitializeShouldSetDefaultPathIfOutputDirectoryPathIsNull() + List TestCaseEvent(string uri) { - this.attachmentManager.Initialize(this.sessionId, string.Empty, this.messageSink.Object); - - Assert.AreEqual(this.attachmentManager.SessionOutputDirectory, Path.Combine(Path.GetTempPath(), "TestResults", this.sessionId.Id.ToString())); + var testCaseCtx = new DataCollectionContext(dataCollectorSessionId, new TestExecId(Guid.NewGuid())); + string path = Path.Combine(outputDirectory, Guid.NewGuid().ToString()); + File.WriteAllText(path, "test"); + _attachmentManager.AddAttachment(new FileTransferInformation(testCaseCtx, path, true), null, new Uri($"//{uri}"), $"{uri}"); + return _attachmentManager.GetAttachments(testCaseCtx); } + } - [TestMethod] - public void InitializeShouldSetCorrectGuidAndOutputPath() - { - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + [TestMethod] + public void InitializeShouldThrowExceptionIfSessionIdIsNull() + { + Assert.ThrowsException(() => _attachmentManager.Initialize(null!, string.Empty, _messageSink.Object)); + } - Assert.AreEqual(Path.Combine(TempDirectoryPath, this.sessionId.Id.ToString()), this.attachmentManager.SessionOutputDirectory); - } + [TestMethod] + public void InitializeShouldThrowExceptionIfMessageSinkIsNull() + { + Assert.ThrowsException(() => _attachmentManager.Initialize(_sessionId, string.Empty, null!)); + } - [TestMethod] - public void AddAttachmentShouldNotAddNewFileTransferIfSessionIsNotConfigured() - { - var filename = "filename.txt"; - File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); + [TestMethod] + public void InitializeShouldSetDefaultPathIfOutputDirectoryPathIsNull() + { + _attachmentManager.Initialize(_sessionId, string.Empty, _messageSink.Object); - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); + Assert.AreEqual(_attachmentManager.SessionOutputDirectory, Path.Combine(Path.GetTempPath(), "TestResults", _sessionId.Id.ToString())); + } - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); + [TestMethod] + public void InitializeShouldSetCorrectGuidAndOutputPath() + { + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, null, uri, friendlyName); + Assert.AreEqual(Path.Combine(TempDirectoryPath, _sessionId.Id.ToString()), _attachmentManager.SessionOutputDirectory); + } - Assert.AreEqual(0, this.attachmentManager.AttachmentSets.Count); - } + [TestMethod] + public void AddAttachmentShouldNotAddNewFileTransferIfSessionIsNotConfigured() + { + var filename = "filename.txt"; + File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); - [TestMethod] - public void AddAttachmentShouldAddNewFileTransferAndCopyFileToOutputDirectoryIfDeleteFileIsFalse() - { - var filename = "filename.txt"; - File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + _attachmentManager.AddAttachment(dataCollectorDataMessage, null, uri, friendlyName); - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); + Assert.AreEqual(0, _attachmentManager.AttachmentSets.Count); + } - EventWaitHandle waitHandle = new AutoResetEvent(false); - var handler = new AsyncCompletedEventHandler((a, e) => { waitHandle.Set(); }); - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); + [TestMethod] + public void AddAttachmentShouldAddNewFileTransferAndCopyFileToOutputDirectoryIfDeleteFileIsFalse() + { + var filename = "filename.txt"; + File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - // Wait for file operations to complete - waitHandle.WaitOne(Timeout); + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); - Assert.IsTrue(File.Exists(Path.Combine(TempDirectoryPath, filename))); - Assert.IsTrue(File.Exists(Path.Combine(TempDirectoryPath, this.sessionId.Id.ToString(), filename))); - Assert.AreEqual(1, this.attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); - } + EventWaitHandle waitHandle = new AutoResetEvent(false); + var handler = new AsyncCompletedEventHandler((a, e) => waitHandle.Set()); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); - [TestMethod] - public void AddAttachmentsShouldAddFilesCorrespondingToDifferentDataCollectors() - { - var filename = "filename.txt"; - var filename1 = "filename1.txt"; - File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); - File.WriteAllText(Path.Combine(TempDirectoryPath, filename1), string.Empty); - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + _attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); - var uri1 = new Uri("datacollector://Company/Product/Version1"); + // Wait for file operations to complete + waitHandle.WaitOne(Timeout); - EventWaitHandle waitHandle = new AutoResetEvent(false); - var handler = new AsyncCompletedEventHandler((a, e) => { waitHandle.Set(); }); - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); + Assert.IsTrue(File.Exists(Path.Combine(TempDirectoryPath, filename))); + Assert.IsTrue(File.Exists(Path.Combine(TempDirectoryPath, _sessionId.Id.ToString(), filename))); + Assert.AreEqual(1, _attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); + } - this.attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); + [TestMethod] + public void AddAttachmentsShouldAddFilesCorrespondingToDifferentDataCollectors() + { + var filename = "filename.txt"; + var filename1 = "filename1.txt"; + File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); + File.WriteAllText(Path.Combine(TempDirectoryPath, filename1), string.Empty); - // Wait for file operations to complete - waitHandle.WaitOne(Timeout); + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - waitHandle.Reset(); - dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename1), false); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri1, friendlyName); + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); + var uri1 = new Uri("datacollector://Company/Product/Version1"); - // Wait for file operations to complete - waitHandle.WaitOne(Timeout); + EventWaitHandle waitHandle = new AutoResetEvent(false); + var handler = new AsyncCompletedEventHandler((a, e) => waitHandle.Set()); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); - Assert.AreEqual(1, this.attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); - Assert.AreEqual(1, this.attachmentManager.AttachmentSets[datacollectioncontext][uri1].Attachments.Count); - } + _attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - [TestMethod] - public void AddAttachmentShouldAddNewFileTransferAndMoveFileToOutputDirectoryIfDeleteFileIsTrue() - { - var filename = "filename1.txt"; - File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); + // Wait for file operations to complete + waitHandle.WaitOne(Timeout); + waitHandle.Reset(); + dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename1), false); + _attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri1, friendlyName); - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + // Wait for file operations to complete + waitHandle.WaitOne(Timeout); - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); + Assert.AreEqual(1, _attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); + Assert.AreEqual(1, _attachmentManager.AttachmentSets[datacollectioncontext][uri1].Attachments.Count); + } - var waitHandle = new AutoResetEvent(false); - var handler = new AsyncCompletedEventHandler((a, e) => { waitHandle.Set(); }); - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), true); + [TestMethod] + public void AddAttachmentShouldAddNewFileTransferAndMoveFileToOutputDirectoryIfDeleteFileIsTrue() + { + var filename = "filename1.txt"; + File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - // Wait for file operations to complete - waitHandle.WaitOne(Timeout); + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - Assert.AreEqual(1, this.attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); - Assert.IsTrue(File.Exists(Path.Combine(TempDirectoryPath, this.sessionId.Id.ToString(), filename))); - Assert.IsFalse(File.Exists(Path.Combine(TempDirectoryPath, filename))); - } + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); - [TestMethod] - public void AddAttachmentShouldAddMultipleAttachmentsForSameDC() - { - var filename = "filename.txt"; - var filename1 = "filename1.txt"; - File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); - File.WriteAllText(Path.Combine(TempDirectoryPath, filename1), string.Empty); + var waitHandle = new AutoResetEvent(false); + var handler = new AsyncCompletedEventHandler((a, e) => waitHandle.Set()); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), true); + + _attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + // Wait for file operations to complete + waitHandle.WaitOne(Timeout); - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); + Assert.AreEqual(1, _attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); + Assert.IsTrue(File.Exists(Path.Combine(TempDirectoryPath, _sessionId.Id.ToString(), filename))); + Assert.IsFalse(File.Exists(Path.Combine(TempDirectoryPath, filename))); + } - EventWaitHandle waitHandle = new AutoResetEvent(false); - var handler = new AsyncCompletedEventHandler((a, e) => { waitHandle.Set(); }); - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); + [TestMethod] + public void AddAttachmentShouldAddMultipleAttachmentsForSameDc() + { + var filename = "filename.txt"; + var filename1 = "filename1.txt"; + File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); + File.WriteAllText(Path.Combine(TempDirectoryPath, filename1), string.Empty); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - // Wait for file operations to complete - waitHandle.WaitOne(Timeout); + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); - waitHandle.Reset(); - dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename1), false); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); + EventWaitHandle waitHandle = new AutoResetEvent(false); + var handler = new AsyncCompletedEventHandler((a, e) => waitHandle.Set()); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), false); - // Wait for file operations to complete - waitHandle.WaitOne(Timeout); + _attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - Assert.AreEqual(2, this.attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); - } + // Wait for file operations to complete + waitHandle.WaitOne(Timeout); - [TestMethod] - public void AddAttachmentShouldNotAddNewFileTransferIfNullIsPassed() - { - Assert.ThrowsException(() => - { - this.attachmentManager.AddAttachment(null, null, null, null); - }); - } + waitHandle.Reset(); + dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename1), false); + _attachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - [TestMethod] - public void GetAttachmentsShouldReturnAllAttachmets() - { - var filename = "filename1.txt"; - File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); + // Wait for file operations to complete + waitHandle.WaitOne(Timeout); + + Assert.AreEqual(2, _attachmentManager.AttachmentSets[datacollectioncontext][uri].Attachments.Count); + } - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + [TestMethod] + public void AddAttachmentShouldNotAddNewFileTransferIfNullIsPassed() + { + Assert.ThrowsException(() => _attachmentManager.AddAttachment(null!, null, null!, null!)); + } - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); + [TestMethod] + public void GetAttachmentsShouldReturnAllAttachments() + { + var filename = "filename1.txt"; + File.WriteAllText(Path.Combine(TempDirectoryPath, filename), string.Empty); - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), true); + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - this.attachmentManager.AddAttachment(dataCollectorDataMessage, null, uri, friendlyName); + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); - Assert.AreEqual(1, this.attachmentManager.AttachmentSets.Count); - var result = this.attachmentManager.GetAttachments(datacollectioncontext); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, Path.Combine(TempDirectoryPath, filename), true); - Assert.AreEqual(0, this.attachmentManager.AttachmentSets.Count); - Assert.AreEqual(1, result.Count); - Assert.AreEqual(friendlyName, result[0].DisplayName); - Assert.AreEqual(uri, result[0].Uri); - Assert.AreEqual(1, result[0].Attachments.Count); - } + _attachmentManager.AddAttachment(dataCollectorDataMessage, null, uri, friendlyName); - [TestMethod] - public void GetAttachmentsShouldNotReutrnAnyDataWhenActiveFileTransferAreNotPresent() - { - this.attachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); + Assert.AreEqual(1, _attachmentManager.AttachmentSets.Count); + var result = _attachmentManager.GetAttachments(datacollectioncontext); - var datacollectioncontext = new DataCollectionContext(this.sessionId); + Assert.AreEqual(0, _attachmentManager.AttachmentSets.Count); + Assert.AreEqual(1, result.Count); + Assert.AreEqual(friendlyName, result[0].DisplayName); + Assert.AreEqual(uri, result[0].Uri); + Assert.AreEqual(1, result[0].Attachments.Count); + } - var result = this.attachmentManager.GetAttachments(datacollectioncontext); - Assert.AreEqual(0, result.Count); - } + [TestMethod] + public void GetAttachmentsShouldNotReturnAnyDataWhenActiveFileTransferAreNotPresent() + { + _attachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); - [TestMethod] - public void GetAttachmentsShouldNotReturnAttachmentsAfterCancelled() - { - var fileHelper = new Mock(); - var testableAttachmentManager = new TestableDataCollectionAttachmentManager(fileHelper.Object); - var attachmentPath = Path.Combine(TempDirectoryPath, "filename.txt"); - File.WriteAllText(attachmentPath, string.Empty); - var datacollectioncontext = new DataCollectionContext(this.sessionId); - var friendlyName = "TestDataCollector"; - var uri = new Uri("datacollector://Company/Product/Version"); - var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, attachmentPath, true); - var waitHandle = new AutoResetEvent(false); - var handler = new AsyncCompletedEventHandler((a, e) => { Assert.Fail("Handler shouldn't be called since operation is canceled."); }); - - // We cancel the operation in the actual operation. This ensures the follow up task to is never called, attachments - // are not added. - Action cancelAddAttachment = () => testableAttachmentManager.Cancel(); - fileHelper.Setup(fh => fh.MoveFile(It.IsAny(), It.IsAny())).Callback(cancelAddAttachment); - testableAttachmentManager.Initialize(this.sessionId, TempDirectoryPath, this.messageSink.Object); - testableAttachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); - - // Wait for the attachment transfer tasks to complete - var result = testableAttachmentManager.GetAttachments(datacollectioncontext); - Assert.AreEqual(0, result[0].Attachments.Count); - } + var datacollectioncontext = new DataCollectionContext(_sessionId); + + var result = _attachmentManager.GetAttachments(datacollectioncontext); + Assert.AreEqual(0, result.Count); + } - private class TestableDataCollectionAttachmentManager : DataCollectionAttachmentManager + [TestMethod] + public void GetAttachmentsShouldNotReturnAttachmentsAfterCancelled() + { + var fileHelper = new Mock(); + var testableAttachmentManager = new TestableDataCollectionAttachmentManager(fileHelper.Object); + var attachmentPath = Path.Combine(TempDirectoryPath, "filename.txt"); + File.WriteAllText(attachmentPath, string.Empty); + var datacollectioncontext = new DataCollectionContext(_sessionId); + var friendlyName = "TestDataCollector"; + var uri = new Uri("datacollector://Company/Product/Version"); + var dataCollectorDataMessage = new FileTransferInformation(datacollectioncontext, attachmentPath, true); + var waitHandle = new AutoResetEvent(false); + var handler = new AsyncCompletedEventHandler((a, e) => Assert.Fail("Handler shouldn't be called since operation is canceled.")); + + // We cancel the operation in the actual operation. This ensures the follow up task to is never called, attachments + // are not added. + Action cancelAddAttachment = () => testableAttachmentManager.Cancel(); + fileHelper.Setup(fh => fh.MoveFile(It.IsAny(), It.IsAny())).Callback(cancelAddAttachment); + testableAttachmentManager.Initialize(_sessionId, TempDirectoryPath, _messageSink.Object); + testableAttachmentManager.AddAttachment(dataCollectorDataMessage, handler, uri, friendlyName); + + // Wait for the attachment transfer tasks to complete + var result = testableAttachmentManager.GetAttachments(datacollectioncontext); + Assert.AreEqual(0, result[0].Attachments.Count); + } + + private class TestableDataCollectionAttachmentManager : DataCollectionAttachmentManager + { + public TestableDataCollectionAttachmentManager(IFileHelper fileHelper) + : base(fileHelper) { - public TestableDataCollectionAttachmentManager(IFileHelper fileHelper) - : base(fileHelper) - { - } } } -} \ No newline at end of file +} diff --git a/test/datacollector.UnitTests/DataCollectionEnvironmentVariableTests.cs b/test/datacollector.UnitTests/DataCollectionEnvironmentVariableTests.cs index baece1333a..9f3a0c881d 100644 --- a/test/datacollector.UnitTests/DataCollectionEnvironmentVariableTests.cs +++ b/test/datacollector.UnitTests/DataCollectionEnvironmentVariableTests.cs @@ -1,45 +1,44 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class DataCollectionEnvironmentVariableTests { - using System; - using System.Collections.Generic; + [TestMethod] + public void ConstructorShouldThrowExceptionIfKeyValueIsNull() + { + Assert.ThrowsException( + () => + { + var envvariable = new DataCollectionEnvironmentVariable(default, null!); + }); + } - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void FirstDataCollectorThatRequestedShouldReturnTheFirstdataCollectorRequestingThatEnvVariable() + { + var envValPair = new KeyValuePair("key", "value"); + var envvariable = new DataCollectionEnvironmentVariable(envValPair, "datacollector"); + envvariable.AddRequestingDataCollector("datacollector1"); + + Assert.AreEqual("datacollector", envvariable.FirstDataCollectorThatRequested); + } - [TestClass] - public class DataCollectionEnvironmentVariableTests + [TestMethod] + public void FirstDataCollectorThatRequestedShouldSetNameAndValue() { - [TestMethod] - public void ConstructorShouldThrowExceptionIfKeyValueIsNull() - { - Assert.ThrowsException( - () => - { - var envvariable = new DataCollectionEnvironmentVariable(default, null); - }); - } - - [TestMethod] - public void FirstDataCollectorThatRequestedShouldReturnTheFirstdataCollectorRequestingThatEnvVariable() - { - var envValPair = new KeyValuePair("key", "value"); - var envvariable = new DataCollectionEnvironmentVariable(envValPair, "datacollector"); - envvariable.AddRequestingDataCollector("datacollector1"); - - Assert.AreEqual("datacollector", envvariable.FirstDataCollectorThatRequested); - } - - [TestMethod] - public void FirstDataCollectorThatRequestedShouldSetNameAndValue() - { - var envValPair = new KeyValuePair("key", "value"); - var envvariable = new DataCollectionEnvironmentVariable(envValPair, "datacollector"); - envvariable.AddRequestingDataCollector("datacollector1"); - - Assert.AreEqual("key", envvariable.Name); - Assert.AreEqual("value", envvariable.Value); - } + var envValPair = new KeyValuePair("key", "value"); + var envvariable = new DataCollectionEnvironmentVariable(envValPair, "datacollector"); + envvariable.AddRequestingDataCollector("datacollector1"); + + Assert.AreEqual("key", envvariable.Name); + Assert.AreEqual("value", envvariable.Value); } } diff --git a/test/datacollector.UnitTests/DataCollectionManagerTests.cs b/test/datacollector.UnitTests/DataCollectionManagerTests.cs index 26828281eb..7cf8a2a93a 100644 --- a/test/datacollector.UnitTests/DataCollectionManagerTests.cs +++ b/test/datacollector.UnitTests/DataCollectionManagerTests.cs @@ -1,570 +1,593 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class DataCollectionManagerTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using System.Xml; - - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class DataCollectionManagerTests - { - private DataCollectionManager dataCollectionManager; - private string defaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - private string defaultDataCollectionSettings = ""; - private string dataCollectorSettings; - private string friendlyName; - private string uri; - private Mock mockMessageSink; - private Mock mockDataCollector; - private Mock mockCodeCoverageDataCollector; - private List> envVarList; - private List> codeCoverageEnvVarList; - private Mock mockDataCollectionAttachmentManager; - private Mock mockDataCollectionTelemetryManager; - - public DataCollectionManagerTests() - { - this.friendlyName = "CustomDataCollector"; - this.uri = "my://custom/datacollector"; - this.envVarList = new List>(); - this.codeCoverageEnvVarList = new List>(); - this.mockDataCollector = new Mock(); - this.mockDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(this.envVarList); - this.mockCodeCoverageDataCollector = new Mock(); - this.mockCodeCoverageDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(this.codeCoverageEnvVarList); - this.dataCollectorSettings = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, this.friendlyName, this.uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - this.mockMessageSink = new Mock(); - this.mockDataCollectionAttachmentManager = new Mock(); - this.mockDataCollectionAttachmentManager.SetReturnsDefault>(new List()); - this.mockDataCollectionTelemetryManager = new Mock(); - - this.dataCollectionManager = new TestableDataCollectionManager(this.mockDataCollectionAttachmentManager.Object, this.mockMessageSink.Object, this.mockDataCollector.Object, this.mockCodeCoverageDataCollector.Object, this.mockDataCollectionTelemetryManager.Object); - } + private readonly DataCollectionManager _dataCollectionManager; + private readonly string _defaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; + private readonly string _defaultDataCollectionSettings = ""; + private string _dataCollectorSettings; + private readonly string _friendlyName; + private readonly string _uri; + private readonly Mock _mockMessageSink; + private readonly Mock _mockDataCollector; + private readonly Mock _mockCodeCoverageDataCollector; + private readonly List> _envVarList; + private readonly List> _codeCoverageEnvVarList; + private readonly Mock _mockDataCollectionAttachmentManager; + private readonly Mock _mockDataCollectionTelemetryManager; + private readonly Mock _mockTelemetryReporter; + + public DataCollectionManagerTests() + { + _friendlyName = "CustomDataCollector"; + _uri = "my://custom/datacollector"; + _envVarList = new List>(); + _codeCoverageEnvVarList = new List>(); + _mockDataCollector = new Mock(); + _mockDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(_envVarList); + _mockCodeCoverageDataCollector = new Mock(); + _mockCodeCoverageDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(_codeCoverageEnvVarList); + _dataCollectorSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + _mockMessageSink = new Mock(); + _mockDataCollectionAttachmentManager = new Mock(); + _mockDataCollectionAttachmentManager.SetReturnsDefault(new List()); + _mockDataCollectionTelemetryManager = new Mock(); + _mockTelemetryReporter = new Mock(); + + _dataCollectionManager = new TestableDataCollectionManager(_mockDataCollectionAttachmentManager.Object, _mockMessageSink.Object, _mockDataCollector.Object, _mockCodeCoverageDataCollector.Object, _mockDataCollectionTelemetryManager.Object, _mockTelemetryReporter.Object); + } - [TestMethod] - public void InitializeDataCollectorsShouldThrowExceptionIfSettingsXmlIsNull() - { - Assert.ThrowsException(() => - { - this.dataCollectionManager.InitializeDataCollectors(null); - }); - } + [TestMethod] + public void InitializeDataCollectorsShouldThrowExceptionIfSettingsXmlIsNull() + { + Assert.ThrowsException(() => _dataCollectionManager.InitializeDataCollectors(null!)); + } - [TestMethod] - public void InitializeDataCollectorsShouldReturnEmptyDictionaryIfDataCollectorsAreNotConfigured() - { - var runSettings = string.Format(this.defaultRunSettings, string.Empty); - this.dataCollectionManager.InitializeDataCollectors(runSettings); + [TestMethod] + public void InitializeDataCollectorsShouldReturnEmptyDictionaryIfDataCollectorsAreNotConfigured() + { + var runSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Empty); + _dataCollectionManager.InitializeDataCollectors(runSettings); - Assert.AreEqual(0, this.dataCollectionManager.RunDataCollectors.Count); - } + Assert.AreEqual(0, _dataCollectionManager.RunDataCollectors.Count); + } - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollector() - { - var dataCollectorSettings = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettings); + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollector() + { + var dataCollectorSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettings); - Assert.IsTrue(this.dataCollectionManager.RunDataCollectors.ContainsKey(this.mockDataCollector.Object.GetType())); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + Assert.IsTrue(_dataCollectionManager.RunDataCollectors.ContainsKey(_mockDataCollector.Object.GetType())); + Assert.AreEqual(typeof(AttachmentProcessorDataCollector2), _dataCollectionManager.RunDataCollectors[_mockDataCollector.Object.GetType()].DataCollectorConfig.AttachmentsProcessorType); + Assert.IsTrue(_dataCollectionManager.RunDataCollectors[_mockDataCollector.Object.GetType()].DataCollectorConfig.Metadata.Contains(true)); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } - [TestMethod] - public void InitializeShouldNotAddDataCollectorIfItIsDisabled() - { - var dataCollectorSettingsDisabled = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, "enabled=\"false\"")); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsDisabled); + [TestMethod] + public void InitializeShouldNotAddDataCollectorIfItIsDisabled() + { + var dataCollectorSettingsDisabled = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, "enabled=\"false\"")); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsDisabled); - Assert.AreEqual(0, this.dataCollectionManager.RunDataCollectors.Count); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - } + Assert.AreEqual(0, _dataCollectionManager.RunDataCollectors.Count); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); + } - [TestMethod] - public void InitializeShouldAddDataCollectorIfItIsEnabled() - { - var dataCollectorSettingsEnabled = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, "enabled=\"true\"")); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsEnabled); + [TestMethod] + public void InitializeShouldAddDataCollectorIfItIsEnabled() + { + var dataCollectorSettingsEnabled = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, "enabled=\"true\"")); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsEnabled); - Assert.IsTrue(this.dataCollectionManager.RunDataCollectors.ContainsKey(this.mockDataCollector.Object.GetType())); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + Assert.IsTrue(_dataCollectionManager.RunDataCollectors.ContainsKey(_mockDataCollector.Object.GetType())); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + _mockDataCollector.Verify(x => x.Initialize(_mockTelemetryReporter.Object), Times.Once); + } - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsNotCorrectAndUriIsCorrect() - { - var dataCollectorSettingsWithWrongFriendlyName = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, "anyFriendlyName", uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithWrongFriendlyName); + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsNotCorrectAndUriIsCorrect() + { + var dataCollectorSettingsWithWrongFriendlyName = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, "anyFriendlyName", _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithWrongFriendlyName); - Assert.AreEqual(1, this.dataCollectionManager.RunDataCollectors.Count); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + Assert.AreEqual(1, _dataCollectionManager.RunDataCollectors.Count); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + _mockDataCollector.Verify(x => x.Initialize(_mockTelemetryReporter.Object), Times.Once); + } - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsCorrectAndUriIsNotCorrect() - { - var dataCollectorSettingsWithWrongUri = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, "my://custom/WrongDatacollector", this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithWrongUri); + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsCorrectAndUriIsNotCorrect() + { + var dataCollectorSettingsWithWrongUri = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, "my://custom/WrongDatacollector", _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithWrongUri); - Assert.AreEqual(1, this.dataCollectionManager.RunDataCollectors.Count); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + Assert.AreEqual(1, _dataCollectionManager.RunDataCollectors.Count); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + _mockDataCollector.Verify(x => x.Initialize(_mockTelemetryReporter.Object), Times.Once); + } - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsCorrectAndUriIsNull() - { - var dataCollectorSettingsWithNullUri = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, string.Empty, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty).Replace("uri=\"\"", string.Empty)); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithNullUri); + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsNullAndUriIsCorrect() + { + var dataCollectorSettingsWithNullFriendlyName = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, string.Empty, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty).Replace("friendlyName=\"\"", string.Empty)); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithNullFriendlyName); - Assert.AreEqual(0, this.dataCollectionManager.RunDataCollectors.Count); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - } + Assert.AreEqual(1, _dataCollectionManager.RunDataCollectors.Count); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + _mockDataCollector.Verify(x => x.Initialize(_mockTelemetryReporter.Object), Times.Once); + } - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsNullAndUriIsCorrect() - { - var dataCollectorSettingsWithNullFriendlyName = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, string.Empty, uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty).Replace("friendlyName=\"\"", string.Empty)); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithNullFriendlyName); + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsCorrectAndUriIsEmpty() + { + var dataCollectorSettingsWithEmptyUri = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, string.Empty, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + Assert.ThrowsException(() => _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithEmptyUri)); + } - Assert.AreEqual(1, this.dataCollectionManager.RunDataCollectors.Count); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsEmptyAndUriIsCorrect() + { + var dataCollectorSettingsWithEmptyFriendlyName = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, string.Empty, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + Assert.ThrowsException(() => _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithEmptyFriendlyName)); + } - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsCorrectAndUriIsEmpty() - { - var dataCollectorSettingsWithEmptyUri = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, string.Empty, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - Assert.ThrowsException(() => this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithEmptyUri)); - } + [TestMethod] + public void InitializeDataCollectorsShouldNotLoadDataCollectorIfFriendlyNameIsNotCorrectAndUriIsNotCorrect() + { + var dataCollectorSettingsWithWrongFriendlyNameAndWrongUri = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, "anyFriendlyName", "datacollector://data", _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithWrongFriendlyNameAndWrongUri); - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorIfFriendlyNameIsEmptyAndUriIsCorrect() - { - var dataCollectorSettingsWithEmptyFriendlyName = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, friendlyName, string.Empty, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - Assert.ThrowsException(() => this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithEmptyFriendlyName)); - } + Assert.AreEqual(0, _dataCollectionManager.RunDataCollectors.Count); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); + } - [TestMethod] - public void InitializeDataCollectorsShouldNotLoadDataCollectorIfFriendlyNameIsNotCorrectAndUriIsNotCorrect() - { - var dataCollectorSettingsWithWrongFriendlyNameAndWrongUri = string.Format(this.defaultRunSettings, string.Format(this.defaultDataCollectionSettings, "anyFriendlyName", "datacollector://data", this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - this.dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithWrongFriendlyNameAndWrongUri); + [TestMethod] + public void InitializeDataCollectorsShouldNotAddSameDataCollectorMoreThanOnce() + { + var datacollecterSettings = string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, "CustomDataCollector", "my://custom/datacollector", _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, "enabled =\"true\""); + var runSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, datacollecterSettings + datacollecterSettings); - Assert.AreEqual(0, this.dataCollectionManager.RunDataCollectors.Count); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - } + _dataCollectionManager.InitializeDataCollectors(runSettings); - [TestMethod] - public void InitializeDataCollectorsShouldNotAddSameDataCollectorMoreThanOnce() - { - var datacollecterSettings = string.Format(this.defaultDataCollectionSettings, "CustomDataCollector", "my://custom/datacollector", this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, "enabled =\"true\""); - var runSettings = string.Format(this.defaultRunSettings, datacollecterSettings + datacollecterSettings); + Assert.IsTrue(_dataCollectionManager.RunDataCollectors.ContainsKey(_mockDataCollector.Object.GetType())); + _mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } - this.dataCollectionManager.InitializeDataCollectors(runSettings); + [TestMethod] + public void InitializeDataCollectorsShouldLoadDataCollectorAndReturnEnvironmentVariables() + { + _envVarList.Add(new KeyValuePair("key", "value")); - Assert.IsTrue(this.dataCollectionManager.RunDataCollectors.ContainsKey(this.mockDataCollector.Object.GetType())); - this.mockDataCollector.Verify(x => x.Initialize(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } + var result = _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void InitializeDataCollectorsShouldLoadDataCollectorAndReturnEnvironmentVariables() - { - this.envVarList.Add(new KeyValuePair("key", "value")); + Assert.AreEqual("value", result["key"]); - var result = this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.IsAny(), "key", "value")); + } - Assert.AreEqual("value", result["key"]); + [TestMethod] + public void InitializeDataCollectorsShouldLogExceptionToMessageSinkIfInitializationFails() + { + _mockDataCollector.Setup( + x => + x.Initialize( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())).Throws(); + + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + + Assert.AreEqual(0, _dataCollectionManager.RunDataCollectors.Count); + _mockMessageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once); + } - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.IsAny(), "key", "value")); - } + [TestMethod] + public void InitializeDataCollectorsShouldLogExceptionToMessageSinkIfSetEnvironmentVariableFails() + { + _mockDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Throws(); - [TestMethod] - public void InitializeDataCollectorsShouldLogExceptionToMessageSinkIfInitializationFails() - { - this.mockDataCollector.Setup( - x => - x.Initialize( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny())).Throws(); - - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - - Assert.AreEqual(0, this.dataCollectionManager.RunDataCollectors.Count); - this.mockMessageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once); - } + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void InitializeDataCollectorsShouldLogExceptionToMessageSinkIfSetEnvironmentVariableFails() - { - this.mockDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Throws(); + Assert.AreEqual(0, _dataCollectionManager.RunDataCollectors.Count); + _mockMessageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once); + } - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + [TestMethod] + public void InitializeDataCollectorsShouldReturnFirstEnvironmentVariableIfMoreThanOneVariablesWithSameKeyIsSpecified() + { + _envVarList.Add(new KeyValuePair("key", "value")); + _envVarList.Add(new KeyValuePair("key", "value1")); - Assert.AreEqual(0, this.dataCollectionManager.RunDataCollectors.Count); - this.mockMessageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once); - } + var result = _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void InitializeDataCollectorsShouldReturnFirstEnvironmentVariableIfMoreThanOneVariablesWithSameKeyIsSpecified() - { - this.envVarList.Add(new KeyValuePair("key", "value")); - this.envVarList.Add(new KeyValuePair("key", "value1")); + Assert.AreEqual("value", result["key"]); - var result = this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.IsAny(), "key", "value")); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableConflict(It.IsAny(), "key", "value1", "value")); + } - Assert.AreEqual("value", result["key"]); + [TestMethod] + public void InitializeDataCollectorsShouldReturnOtherThanCodeCoverageEnvironmentVariableIfMoreThanOneVariablesWithSameKeyIsSpecified() + { + _envVarList.Add(new KeyValuePair("cor_profiler", "clrie")); + _envVarList.Add(new KeyValuePair("same_key", "same_value")); + _codeCoverageEnvVarList.Add(new KeyValuePair("cor_profiler", "direct")); + _codeCoverageEnvVarList.Add(new KeyValuePair("clrie_profiler_vanguard", "path")); + _codeCoverageEnvVarList.Add(new KeyValuePair("same_key", "same_value")); + + _dataCollectorSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, + string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, "Code Coverage", "my://custom/ccdatacollector", _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty) + + string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, _friendlyName, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty)); + + var result = _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + + Assert.AreEqual(3, result.Count); + Assert.AreEqual("clrie", result["cor_profiler"]); + Assert.AreEqual("path", result["clrie_profiler_vanguard"]); + Assert.AreEqual("same_value", result["same_key"]); + + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.Is(i => i.DataCollectorConfig.FriendlyName == _friendlyName), "cor_profiler", "clrie")); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableConflict(It.Is(i => i.DataCollectorConfig.FriendlyName == "Code Coverage"), "cor_profiler", "direct", "clrie")); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.Is(i => i.DataCollectorConfig.FriendlyName == "Code Coverage"), "clrie_profiler_vanguard", "path")); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.Is(i => i.DataCollectorConfig.FriendlyName == _friendlyName), "same_key", "same_value")); + _mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableConflict(It.Is(i => i.DataCollectorConfig.FriendlyName == "Code Coverage"), "same_key", "same_value", "same_value")); + } - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.IsAny(), "key", "value")); - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableConflict(It.IsAny(), "key", "value1", "value")); - } + [TestMethod] + public void SessionStartedShouldReturnFalseIfDataCollectionIsNotConfiguredInRunSettings() + { + var runSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Empty); + _dataCollectionManager.InitializeDataCollectors(runSettings); - [TestMethod] - public void InitializeDataCollectorsShouldReturnOtherThanCodeCoverageEnvironmentVariableIfMoreThanOneVariablesWithSameKeyIsSpecified() - { - this.envVarList.Add(new KeyValuePair("cor_profiler", "clrie")); - this.envVarList.Add(new KeyValuePair("same_key", "same_value")); - this.codeCoverageEnvVarList.Add(new KeyValuePair("cor_profiler", "direct")); - this.codeCoverageEnvVarList.Add(new KeyValuePair("clrie_profiler_vanguard", "path")); - this.codeCoverageEnvVarList.Add(new KeyValuePair("same_key", "same_value")); - - this.dataCollectorSettings = string.Format(this.defaultRunSettings, - string.Format(this.defaultDataCollectionSettings, "Code Coverage", "my://custom/ccdatacollector", this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty) + - string.Format(this.defaultDataCollectionSettings, this.friendlyName, this.uri, this.mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).GetTypeInfo().Assembly.Location, string.Empty)); - - var result = this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - - Assert.AreEqual(3, result.Count); - Assert.AreEqual("clrie", result["cor_profiler"]); - Assert.AreEqual("path", result["clrie_profiler_vanguard"]); - Assert.AreEqual("same_value", result["same_key"]); - - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.Is(i => i.DataCollectorConfig.FriendlyName == this.friendlyName), "cor_profiler", "clrie")); - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableConflict(It.Is(i => i.DataCollectorConfig.FriendlyName == "Code Coverage"), "cor_profiler", "direct", "clrie")); - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.Is(i => i.DataCollectorConfig.FriendlyName == "Code Coverage"), "clrie_profiler_vanguard", "path")); - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableAddition(It.Is(i => i.DataCollectorConfig.FriendlyName == this.friendlyName), "same_key", "same_value")); - this.mockDataCollectionTelemetryManager.Verify(tm => tm.RecordEnvironmentVariableConflict(It.Is(i => i.DataCollectorConfig.FriendlyName == "Code Coverage"), "same_key", "same_value", "same_value")); - } + var sessionStartEventArgs = new SessionStartEventArgs(); + var result = _dataCollectionManager.SessionStarted(sessionStartEventArgs); - [TestMethod] - public void SessionStartedShouldReturnFalseIfDataCollectionIsNotConfiguredInRunSettings() - { - var runSettings = string.Format(this.defaultRunSettings, string.Empty); - this.dataCollectionManager.InitializeDataCollectors(runSettings); + Assert.IsFalse(result); + } - var sessionStartEventArgs = new SessionStartEventArgs(); - var result = this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + [TestMethod] + public void SessionStartedShouldSendEventToDataCollector() + { + var isStartInvoked = false; + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.SessionStart += (sender, eventArgs) => isStartInvoked = true); - Assert.IsFalse(result); - } + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void SessionStartedShouldSendEventToDataCollector() - { - var isStartInvoked = false; - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => - { - b.SessionStart += (sender, eventArgs) => isStartInvoked = true; - }); + var sessionStartEventArgs = new SessionStartEventArgs(); + var areTestCaseEventsSubscribed = _dataCollectionManager.SessionStarted(sessionStartEventArgs); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + Assert.IsTrue(isStartInvoked); + Assert.IsFalse(areTestCaseEventsSubscribed); + } - var sessionStartEventArgs = new SessionStartEventArgs(); - var areTestCaseEventsSubscribed = this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + [TestMethod] + public void SessionStartedShouldReturnTrueIfTestCaseStartIsSubscribed() + { + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.TestCaseStart += (sender, eventArgs) => { }); - Assert.IsTrue(isStartInvoked); - Assert.IsFalse(areTestCaseEventsSubscribed); - } + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void SessionStartedShouldReturnTrueIfTestCaseStartIsSubscribed() - { - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => - { - b.TestCaseStart += (sender, eventArgs) => { }; - }); + var sessionStartEventArgs = new SessionStartEventArgs(); + var areTestCaseEventsSubscribed = _dataCollectionManager.SessionStarted(sessionStartEventArgs); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + Assert.IsTrue(areTestCaseEventsSubscribed); + } - var sessionStartEventArgs = new SessionStartEventArgs(); - var areTestCaseEventsSubscribed = this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + [TestMethod] + public void SessionStartedShouldContinueDataCollectionIfExceptionIsThrownWhileSendingEventsToDataCollector() + { + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.SessionStart += (sender, eventArgs) => throw new Exception()); - Assert.IsTrue(areTestCaseEventsSubscribed); - } + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void SessionStaretedShouldContinueDataCollectionIfExceptionIsThrownWhileSendingEventsToDataCollector() - { - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => - { - b.SessionStart += (sender, eventArgs) => throw new Exception(); - }); - - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + var sessionStartEventArgs = new SessionStartEventArgs(); + var result = _dataCollectionManager.SessionStarted(sessionStartEventArgs); - var sessionStartEventArgs = new SessionStartEventArgs(); - var result = this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + Assert.IsFalse(result); + } - Assert.IsFalse(result); - } + [TestMethod] + public void SessionStartedShouldReturnFalseIfDataCollectorsAreNotInitialized() + { + var sessionStartEventArgs = new SessionStartEventArgs(); + var result = _dataCollectionManager.SessionStarted(sessionStartEventArgs); - [TestMethod] - public void SessionStartedShouldReturnFalseIfDataCollectorsAreNotInitialized() - { - var sessionStartEventArgs = new SessionStartEventArgs(); - var result = this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + Assert.IsFalse(result); + } - Assert.IsFalse(result); - } + [TestMethod] + public void SessionStartedShouldHaveCorrectSessionContext() + { + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - [TestMethod] - public void SessionStartedShouldHaveCorrectSessionContext() - { - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + var sessionStartEventArgs = new SessionStartEventArgs(); - var sessionStartEventArgs = new SessionStartEventArgs(); + Assert.AreEqual(new SessionId(Guid.Empty), sessionStartEventArgs.Context.SessionId); - Assert.AreEqual(new SessionId(Guid.Empty), sessionStartEventArgs.Context.SessionId); + _dataCollectionManager.SessionStarted(sessionStartEventArgs); - this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + Assert.AreNotEqual(new SessionId(Guid.Empty), sessionStartEventArgs.Context.SessionId); + } - Assert.AreNotEqual(new SessionId(Guid.Empty), sessionStartEventArgs.Context.SessionId); - } + [TestMethod] + public void SessionEndedShouldReturnEmptyCollectionIfDataCollectionIsNotEnabled() + { + var runSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Empty); + _dataCollectionManager.InitializeDataCollectors(runSettings); - [TestMethod] - public void SessionEndedShouldReturnEmptyCollectionIfDataCollectionIsNotEnabled() - { - var runSettings = string.Format(this.defaultRunSettings, string.Empty); - this.dataCollectionManager.InitializeDataCollectors(runSettings); + var result = _dataCollectionManager.SessionEnded(); - var result = this.dataCollectionManager.SessionEnded(); + Assert.AreEqual(0, result.Count); + } - Assert.AreEqual(0, result.Count); - } + [TestMethod] + public void GetInvokedDataCollectorsShouldReturnDataCollector() + { + var dataCollectorSettingsWithNullFriendlyName = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, string.Format(CultureInfo.InvariantCulture, _defaultDataCollectionSettings, string.Empty, _uri, _mockDataCollector.Object.GetType().AssemblyQualifiedName, typeof(DataCollectionManagerTests).Assembly.Location, string.Empty).Replace("friendlyName=\"\"", string.Empty)); + _dataCollectionManager.InitializeDataCollectors(dataCollectorSettingsWithNullFriendlyName); + var invokedDataCollector = _dataCollectionManager.GetInvokedDataCollectors(); + Assert.AreEqual(1, invokedDataCollector.Count); + Assert.IsTrue(invokedDataCollector[0].HasAttachmentProcessor); + } - [TestMethod] - public void SessionEndedShouldReturnAttachments() - { - var attachment = new AttachmentSet(new Uri("my://custom/datacollector"), "CustomDataCollector"); - attachment.Attachments.Add(new UriDataAttachment(new Uri("my://filename.txt"), "filename.txt")); + [TestMethod] + public void SessionEndedShouldReturnAttachments() + { + var attachment = new AttachmentSet(new Uri("my://custom/datacollector"), "CustomDataCollector"); + attachment.Attachments.Add(new UriDataAttachment(new Uri("my://filename.txt"), "filename.txt")); - this.mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny())).Returns(new List() { attachment }); + _mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny())).Returns([attachment]); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - var sessionStartEventArgs = new SessionStartEventArgs(); - this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + var sessionStartEventArgs = new SessionStartEventArgs(); + _dataCollectionManager.SessionStarted(sessionStartEventArgs); - var result = this.dataCollectionManager.SessionEnded(); + var result = _dataCollectionManager.SessionEnded(); - Assert.IsTrue(result[0].Attachments[0].Uri.ToString().Contains("filename.txt")); - } + Assert.IsTrue(result[0].Attachments[0].Uri.ToString().Contains("filename.txt")); + } - [TestMethod] - public void SessionEndedShouldNotReturnAttachmentsIfExceptionIsThrownWhileGettingAttachments() - { - this.mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny())).Throws(); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); + [TestMethod] + public void SessionEndedShouldNotReturnAttachmentsIfExceptionIsThrownWhileGettingAttachments() + { + _mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny())).Throws(); + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); - var result = this.dataCollectionManager.SessionEnded(); + var result = _dataCollectionManager.SessionEnded(); - Assert.AreEqual(0, result.Count); - } + Assert.AreEqual(0, result.Count); + } - [TestMethod] - public void SessionEndedShouldContinueDataCollectionIfExceptionIsThrownWhileSendingSessionEndEventToDataCollector() - { - var attachment = new AttachmentSet(new Uri("my://custom/datacollector"), "CustomDataCollector"); - attachment.Attachments.Add(new UriDataAttachment(new Uri("my://filename.txt"), "filename.txt")); + [TestMethod] + public void SessionEndedShouldContinueDataCollectionIfExceptionIsThrownWhileSendingSessionEndEventToDataCollector() + { + var attachment = new AttachmentSet(new Uri("my://custom/datacollector"), "CustomDataCollector"); + attachment.Attachments.Add(new UriDataAttachment(new Uri("my://filename.txt"), "filename.txt")); - this.mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny())).Returns(new List() { attachment }); + _mockDataCollectionAttachmentManager.Setup(x => x.GetAttachments(It.IsAny())).Returns([attachment]); - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) + => b.SessionEnd += (sender, ev) => { - b.SessionEnd += (sender, ev) => - { - c.SendFileAsync(e.SessionDataCollectionContext, "filename.txt", true); - throw new Exception(); - }; + c.SendFileAsync(e.SessionDataCollectionContext, "filename.txt", true); + throw new Exception(); }); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - var sessionStartEventArgs = new SessionStartEventArgs(); - this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + var sessionStartEventArgs = new SessionStartEventArgs(); + _dataCollectionManager.SessionStarted(sessionStartEventArgs); - var result = this.dataCollectionManager.SessionEnded(); + var result = _dataCollectionManager.SessionEnded(); - Assert.AreEqual(1, result.Count); - } + Assert.AreEqual(1, result.Count); + } - [TestMethod] - public void SessionEndedShouldCancelProcessingAttachmentRequestsIfSessionIsCancelled() - { - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - var sessionStartEventArgs = new SessionStartEventArgs(); - this.dataCollectionManager.SessionStarted(sessionStartEventArgs); + [TestMethod] + public void SessionEndedShouldCancelProcessingAttachmentRequestsIfSessionIsCancelled() + { + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + var sessionStartEventArgs = new SessionStartEventArgs(); + _dataCollectionManager.SessionStarted(sessionStartEventArgs); - var result = this.dataCollectionManager.SessionEnded(true); + var result = _dataCollectionManager.SessionEnded(true); - this.mockDataCollectionAttachmentManager.Verify(x => x.Cancel(), Times.Once); - } + _mockDataCollectionAttachmentManager.Verify(x => x.Cancel(), Times.Once); + } - #region TestCaseEventsTest + #region TestCaseEventsTest - [TestMethod] - public void TestCaseStartedShouldSendEventToDataCollector() - { - var isStartInvoked = false; - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => { b.TestCaseStart += (sender, eventArgs) => isStartInvoked = true; }); + [TestMethod] + public void TestCaseStartedShouldSendEventToDataCollector() + { + var isStartInvoked = false; + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.TestCaseStart += (sender, eventArgs) => isStartInvoked = true); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - var args = new TestCaseStartEventArgs(new TestCase()); - this.dataCollectionManager.TestCaseStarted(args); + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + var args = new TestCaseStartEventArgs(new TestCase()); + _dataCollectionManager.TestCaseStarted(args); - Assert.IsTrue(isStartInvoked); - } + Assert.IsTrue(isStartInvoked); + } - [TestMethod] - public void TestCaseStartedShouldNotSendEventToDataCollectorIfDataColletionIsNotEnbled() - { - var isStartInvoked = false; - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => { b.TestCaseStart += (sender, eventArgs) => isStartInvoked = true; }); + [TestMethod] + public void TestCaseStartedShouldNotSendEventToDataCollectorIfDataColletionIsNotEnbled() + { + var isStartInvoked = false; + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.TestCaseStart += (sender, eventArgs) => isStartInvoked = true); - var args = new TestCaseStartEventArgs(new TestCase()); - this.dataCollectionManager.TestCaseStarted(args); + var args = new TestCaseStartEventArgs(new TestCase()); + _dataCollectionManager.TestCaseStarted(args); - Assert.IsFalse(isStartInvoked); - } + Assert.IsFalse(isStartInvoked); + } - [TestMethod] - public void TestCaseEndedShouldSendEventToDataCollector() - { - var isEndInvoked = false; - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => { b.TestCaseEnd += (sender, eventArgs) => isEndInvoked = true; }); + [TestMethod] + public void TestCaseEndedShouldSendEventToDataCollector() + { + var isEndInvoked = false; + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.TestCaseEnd += (sender, eventArgs) => isEndInvoked = true); - this.dataCollectionManager.InitializeDataCollectors(this.dataCollectorSettings); - var args = new TestCaseEndEventArgs(); - args.TestElement = new TestCase(); - this.dataCollectionManager.TestCaseEnded(args); + _dataCollectionManager.InitializeDataCollectors(_dataCollectorSettings); + var args = new TestCaseEndEventArgs(); + args.TestElement = new TestCase(); + _dataCollectionManager.TestCaseEnded(args); - Assert.IsTrue(isEndInvoked); - } + Assert.IsTrue(isEndInvoked); + } - [TestMethod] - public void TestCaseEndedShouldNotSendEventToDataCollectorIfDataColletionIsNotEnbled() - { - var isEndInvoked = false; - var runSettings = string.Format(this.defaultRunSettings, this.dataCollectorSettings); - this.SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => - { - b.TestCaseEnd += (sender, eventArgs) => isEndInvoked = true; - }); + [TestMethod] + public void TestCaseEndedShouldNotSendEventToDataCollectorIfDataCollectionIsNotEnbled() + { + var isEndInvoked = false; + var runSettings = string.Format(CultureInfo.InvariantCulture, _defaultRunSettings, _dataCollectorSettings); + SetupMockDataCollector((XmlElement a, DataCollectionEvents b, DataCollectionSink c, DataCollectionLogger d, DataCollectionEnvironmentContext e) => b.TestCaseEnd += (sender, eventArgs) => isEndInvoked = true); - var args = new TestCaseEndEventArgs(); - Assert.IsFalse(isEndInvoked); - } + var args = new TestCaseEndEventArgs(); + Assert.IsFalse(isEndInvoked); + } - private void SetupMockDataCollector(Action callback) - { - this.mockDataCollector.Setup( - x => - x.Initialize( - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny(), - It.IsAny())).Callback((a, b, c, d, e) => - { - callback.Invoke(a, b, c, d, e); - }); - } + private void SetupMockDataCollector(Action callback) + { + _mockDataCollector.Setup( + x => + x.Initialize( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())).Callback(callback.Invoke); + } + + #endregion +} + +internal class TestableDataCollectionManager : DataCollectionManager +{ + private readonly ObjectModel.DataCollection.DataCollector? _dataCollector; + private readonly ObjectModel.DataCollection.DataCollector? _ccDataCollector; - #endregion + public TestableDataCollectionManager(IDataCollectionAttachmentManager datacollectionAttachmentManager, IMessageSink messageSink, + ObjectModel.DataCollection.DataCollector dataCollector, ObjectModel.DataCollection.DataCollector ccDataCollector, + IDataCollectionTelemetryManager dataCollectionTelemetryManager, ITelemetryReporter telemetryReporter) : this(datacollectionAttachmentManager, messageSink, dataCollectionTelemetryManager, telemetryReporter) + { + _dataCollector = dataCollector; + _ccDataCollector = ccDataCollector; } - internal class TestableDataCollectionManager : DataCollectionManager + internal TestableDataCollectionManager(IDataCollectionAttachmentManager datacollectionAttachmentManager, IMessageSink messageSink, + IDataCollectionTelemetryManager dataCollectionTelemetryManager, ITelemetryReporter telemetryReporter) : base(datacollectionAttachmentManager, messageSink, dataCollectionTelemetryManager, telemetryReporter) { - DataCollector dataCollector; - DataCollector ccDataCollector; + } - public TestableDataCollectionManager(IDataCollectionAttachmentManager datacollectionAttachmentManager, IMessageSink messageSink, DataCollector dataCollector, DataCollector ccDataCollector, IDataCollectionTelemetryManager dataCollectionTelemetryManager) : this(datacollectionAttachmentManager, messageSink, dataCollectionTelemetryManager) + protected override bool TryGetUriFromFriendlyName(string? friendlyName, out string dataCollectorUri) + { + if (friendlyName!.Equals("CustomDataCollector")) + { + dataCollectorUri = "my://custom/datacollector"; + return true; + } + else if (friendlyName.Equals("Code Coverage")) { - this.dataCollector = dataCollector; - this.ccDataCollector = ccDataCollector; + dataCollectorUri = "my://custom/ccdatacollector"; + return true; } + else + { + dataCollectorUri = string.Empty; + return false; + } + } + + protected override bool IsUriValid(string? uri) + { + return string.Equals(uri, "my://custom/datacollector") || string.Equals(uri, "my://custom/ccdatacollector"); + } - internal TestableDataCollectionManager(IDataCollectionAttachmentManager datacollectionAttachmentManager, IMessageSink messageSink, IDataCollectionTelemetryManager dataCollectionTelemetryManager) : base(datacollectionAttachmentManager, messageSink, dataCollectionTelemetryManager) + protected override ObjectModel.DataCollection.DataCollector TryGetTestExtension(string extensionUri) + { + if (extensionUri.Equals("my://custom/datacollector")) { + return _dataCollector!; } - protected override bool TryGetUriFromFriendlyName(string friendlyName, out string dataCollectorUri) + if (extensionUri.Equals("my://custom/ccdatacollector")) { - if (friendlyName.Equals("CustomDataCollector")) - { - dataCollectorUri = "my://custom/datacollector"; - return true; - } - else if (friendlyName.Equals("Code Coverage")) - { - dataCollectorUri = "my://custom/ccdatacollector"; - return true; - } - else - { - dataCollectorUri = string.Empty; - return false; - } + return _ccDataCollector!; } - protected override bool IsUriValid(string uri) + return null!; + } + + protected override DataCollectorConfig? TryGetDataCollectorConfig(string extensionUri) + { + if (extensionUri.Equals("my://custom/datacollector")) { - if (uri.Equals("my://custom/datacollector") || uri.Equals("my://custom/ccdatacollector")) - { - return true; - } - else - { - return false; - } + var dc = new DataCollectorConfig(_dataCollector!.GetType()); + dc.FilePath = Path.GetTempFileName(); + return dc; } - protected override DataCollector TryGetTestExtension(string extensionUri) + if (extensionUri.Equals("my://custom/ccdatacollector")) { - if (extensionUri.Equals("my://custom/datacollector")) - { - return dataCollector; - } + var dc = new DataCollectorConfig(_ccDataCollector!.GetType()); + dc.FilePath = Path.GetTempFileName(); + return dc; + } - if (extensionUri.Equals("my://custom/ccdatacollector")) - { - return ccDataCollector; - } + return null; + } +} - return null; - } +[DataCollectorFriendlyName("CustomDataCollector")] +[DataCollectorTypeUri("my://custom/datacollector")] +[DataCollectorAttachmentProcessor(typeof(AttachmentProcessorDataCollector2))] +public abstract class DataCollector2 : ObjectModel.DataCollection.DataCollector, ITelemetryInitializer +{ + public virtual void Initialize(ITelemetryReporter telemetryReporter) + { } +} + +[DataCollectorFriendlyName("Code Coverage")] +[DataCollectorTypeUri("my://custom/ccdatacollector")] +public abstract class CodeCoverageDataCollector : ObjectModel.DataCollection.DataCollector +{ +} + +public class AttachmentProcessorDataCollector2 : IDataCollectorAttachmentProcessor +{ + public bool SupportsIncrementalProcessing => throw new NotImplementedException(); - [DataCollectorFriendlyName("CustomDataCollector")] - [DataCollectorTypeUri("my://custom/datacollector")] - public abstract class DataCollector2 : DataCollector + public IEnumerable GetExtensionUris() { + throw new NotImplementedException(); } - [DataCollectorFriendlyName("Code Coverage")] - [DataCollectorTypeUri("my://custom/ccdatacollector")] - public abstract class CodeCoverageDataCollector : DataCollector + public Task> ProcessAttachmentSetsAsync(XmlElement configurationElement, ICollection attachments, IProgress progressReporter, IMessageLogger logger, CancellationToken cancellationToken) { + throw new NotImplementedException(); } } diff --git a/test/datacollector.UnitTests/DataCollectionTelemetryManagerTests.cs b/test/datacollector.UnitTests/DataCollectionTelemetryManagerTests.cs index a0fbdb3bd2..580284b8a2 100644 --- a/test/datacollector.UnitTests/DataCollectionTelemetryManagerTests.cs +++ b/test/datacollector.UnitTests/DataCollectionTelemetryManagerTests.cs @@ -1,228 +1,234 @@ -using Microsoft.VisualStudio.TestPlatform.Common.DataCollector; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector; using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollectorUnitTests; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; using Microsoft.VisualStudio.TestTools.UnitTesting; + using Moq; -using System; -using System.Collections.Generic; -namespace Microsoft.VisualStudio.TestPlatform.DataCollector.UnitTests +namespace Microsoft.VisualStudio.TestPlatform.DataCollector.UnitTests; + +[TestClass] +public class DataCollectionTelemetryManagerTests { - [TestClass] - public class DataCollectionTelemetryManagerTests + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly DataCollectionTelemetryManager _telemetryManager; + private readonly DataCollectorInformation _dataCollectorInformation; + + public DataCollectionTelemetryManagerTests() { - private readonly Mock mockRequestData; - private readonly Mock mockMetricsCollection; - private readonly DataCollectionTelemetryManager telemetryManager; - private readonly DataCollectorInformation dataCollectorInformation; + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockRequestData.Setup(m => m.MetricsCollection).Returns(_mockMetricsCollection.Object); - public DataCollectionTelemetryManagerTests() - { - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - this.mockRequestData.Setup(m => m.MetricsCollection).Returns(this.mockMetricsCollection.Object); - - var dataCollectorMock = new Mock(); - var evnVariablesMock = dataCollectorMock.As(); - evnVariablesMock.Setup(a => a.GetTestExecutionEnvironmentVariables()).Returns(new KeyValuePair[] - { - new KeyValuePair("MicrosoftInstrumentationEngine_ConfigPath32_VanguardInstrumentationProfiler", "path1"), - new KeyValuePair("MicrosoftInstrumentationEngine_ConfigPath64_VanguardInstrumentationProfiler", "path2") - }); - - this.dataCollectorInformation = new DataCollectorInformation( - dataCollectorMock.Object, - null, - new DataCollectorConfig(typeof(CustomDataCollector)), - null, - new Mock().Object, - new TestPlatformDataCollectionEvents(), - new Mock().Object, - string.Empty); - - this.telemetryManager = new DataCollectionTelemetryManager(this.mockRequestData.Object); - } - - [TestMethod] - public void RecordEnvironmentVariableAddition_ShouldDoNothing_IfNotProfilerVariable() + var dataCollectorMock = new Mock(); + var evnVariablesMock = dataCollectorMock.As(); + evnVariablesMock.Setup(a => a.GetTestExecutionEnvironmentVariables()).Returns(new KeyValuePair[] { - // act - this.telemetryManager.RecordEnvironmentVariableAddition(this.dataCollectorInformation, "key", "value"); + new("MicrosoftInstrumentationEngine_ConfigPath32_VanguardInstrumentationProfiler", "path1"), + new("MicrosoftInstrumentationEngine_ConfigPath64_VanguardInstrumentationProfiler", "path2") + }); + + _dataCollectorInformation = new DataCollectorInformation( + dataCollectorMock.Object, + null, + new DataCollectorConfig(typeof(CustomDataCollector)), + null, + new Mock().Object, + new TestPlatformDataCollectionEvents(), + new Mock().Object, + string.Empty); + + _telemetryManager = new DataCollectionTelemetryManager(_mockRequestData.Object); + } - // assert - this.mockMetricsCollection.Verify(c => c.Add(It.IsAny(), It.IsAny()), Times.Never); - } + [TestMethod] + public void RecordEnvironmentVariableAddition_ShouldDoNothing_IfNotProfilerVariable() + { + // act + _telemetryManager.RecordEnvironmentVariableAddition(_dataCollectorInformation, "key", "value"); - [TestMethod] - public void RecordEnvironmentVariableConflict_ShouldDoNothing_IfNotProfilerVariable_ValuesSame() - { - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "key", "value", "value"); + // assert + _mockMetricsCollection.Verify(c => c.Add(It.IsAny(), It.IsAny()), Times.Never); + } - // assert - this.mockMetricsCollection.Verify(c => c.Add(It.IsAny(), It.IsAny()), Times.Never); - } + [TestMethod] + public void RecordEnvironmentVariableConflict_ShouldDoNothing_IfNotProfilerVariable_ValuesSame() + { + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "key", "value", "value"); - [TestMethod] - public void RecordEnvironmentVariableConflict_ShouldDoNothing_IfNotProfilerVariable_ValuesDifferent() - { - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "key", "value", "othervalue"); - - // assert - this.mockMetricsCollection.Verify(c => c.Add(It.IsAny(), It.IsAny()), Times.Never); - } - - [TestMethod] - [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] - public void RecordEnvironmentVariableAddition_ShouldCollectTelemetry_IfCorProfilerVariable(string profilerGuid, string profilerName) - { - // act - this.telemetryManager.RecordEnvironmentVariableAddition(this.dataCollectorInformation, "COR_PROFILER", profilerGuid); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); - } - - [TestMethod] - [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] - public void RecordEnvironmentVariableAddition_ShouldCollectTelemetry_IfCoreClrProfilerVariable(string profilerGuid, string profilerName) - { - // act - this.telemetryManager.RecordEnvironmentVariableAddition(this.dataCollectorInformation, "CORECLR_PROFILER", profilerGuid); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); - } - - [TestMethod] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] - public void RecordEnvironmentVariableConflict_ShouldCollectOverwrittenTelemetry_IfCorProfilerVariable(string existingProfilerGuid, string profilerGuid, string expectedOverwrittenProfiler) - { - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "COR_PROFILER", profilerGuid, existingProfilerGuid); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", $"{Guid.Parse(existingProfilerGuid)}(overwritten:{expectedOverwrittenProfiler})"), Times.Once); - } - - [TestMethod] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] - public void RecordEnvironmentVariableConflict_ShouldCollectOverwrittenTelemetry_IfCoreClrProfilerVariable(string existingProfilerGuid, string profilerGuid, string expectedOverwrittenProfiler) - { - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "CORECLR_PROFILER", profilerGuid, existingProfilerGuid); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", $"{Guid.Parse(existingProfilerGuid)}(overwritten:{expectedOverwrittenProfiler})"), Times.Once); - } - - [TestMethod] - [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}")] - [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}")] - [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}")] - [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}")] - [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}")] - [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}")] - [DataRow("AAAAAAAAAAAAA")] - public void RecordEnvironmentVariableConflict_ShouldCollectClrIeTelemetry_IfCorProfilerVariableAndCollectorSpecifiesClrIeProfile(string profilerGuid) - { - // arrange - this.dataCollectorInformation.SetTestExecutionEnvironmentVariables(); - - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "COR_PROFILER", profilerGuid, "{324F817A-7420-4E6D-B3C1-143FBED6D855}"); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", "324f817a-7420-4e6d-b3c1-143fbed6d855"), Times.Once); - } - - [TestMethod] - [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}")] - [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}")] - [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}")] - [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}")] - [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}")] - [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}")] - [DataRow("AAAAAAAAAAAAA")] - public void RecordEnvironmentVariableConflict_ShouldCollectClrIeTelemetry_IfCoreClrProfilerVariableAndCollectorSpecifiesClrIeProfile(string profilerGuid) - { - // arrange - this.dataCollectorInformation.SetTestExecutionEnvironmentVariables(); - - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "CORECLR_PROFILER", profilerGuid, "{324F817A-7420-4E6D-B3C1-143FBED6D855}"); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", "324f817a-7420-4e6d-b3c1-143fbed6d855"), Times.Once); - } - - [TestMethod] - [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] - public void RecordEnvironmentVariableConflict_ShouldCollectTelemetry_IfCorProfilerVariableAndBothValuesSame(string profilerGuid, string profilerName) - { - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "COR_PROFILER", profilerGuid, profilerGuid.ToLower()); - - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); - } - - [TestMethod] - [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] - [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] - [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] - [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] - public void RecordEnvironmentVariableConflict_ShouldCollectTelemetry_IfCoreClrProfilerVariableAndBothValuesSame(string profilerGuid, string profilerName) - { - // act - this.telemetryManager.RecordEnvironmentVariableConflict(this.dataCollectorInformation, "CORECLR_PROFILER", profilerGuid, profilerGuid.ToUpper()); + // assert + _mockMetricsCollection.Verify(c => c.Add(It.IsAny(), It.IsAny()), Times.Never); + } + + [TestMethod] + public void RecordEnvironmentVariableConflict_ShouldDoNothing_IfNotProfilerVariable_ValuesDifferent() + { + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "key", "value", "othervalue"); + + // assert + _mockMetricsCollection.Verify(c => c.Add(It.IsAny(), It.IsAny()), Times.Never); + } + + [TestMethod] + [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] + public void RecordEnvironmentVariableAddition_ShouldCollectTelemetry_IfCorProfilerVariable(string profilerGuid, string profilerName) + { + // act + _telemetryManager.RecordEnvironmentVariableAddition(_dataCollectorInformation, "COR_PROFILER", profilerGuid); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); + } + + [TestMethod] + [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] + public void RecordEnvironmentVariableAddition_ShouldCollectTelemetry_IfCoreClrProfilerVariable(string profilerGuid, string profilerName) + { + // act + _telemetryManager.RecordEnvironmentVariableAddition(_dataCollectorInformation, "CORECLR_PROFILER", profilerGuid); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); + } + + [TestMethod] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] + public void RecordEnvironmentVariableConflict_ShouldCollectOverwrittenTelemetry_IfCorProfilerVariable(string existingProfilerGuid, string profilerGuid, string expectedOverwrittenProfiler) + { + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "COR_PROFILER", profilerGuid, existingProfilerGuid); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", $"{Guid.Parse(existingProfilerGuid)}(overwritten:{expectedOverwrittenProfiler})"), Times.Once); + } + + [TestMethod] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{0f8fad5b-d9cb-469f-a165-70867728950e}", "{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] + public void RecordEnvironmentVariableConflict_ShouldCollectOverwrittenTelemetry_IfCoreClrProfilerVariable(string existingProfilerGuid, string profilerGuid, string expectedOverwrittenProfiler) + { + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "CORECLR_PROFILER", profilerGuid, existingProfilerGuid); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", $"{Guid.Parse(existingProfilerGuid)}(overwritten:{expectedOverwrittenProfiler})"), Times.Once); + } + + [TestMethod] + [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}")] + [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}")] + [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}")] + [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}")] + [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}")] + [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}")] + [DataRow("AAAAAAAAAAAAA")] + public void RecordEnvironmentVariableConflict_ShouldCollectClrIeTelemetry_IfCorProfilerVariableAndCollectorSpecifiesClrIeProfile(string profilerGuid) + { + // arrange + _dataCollectorInformation.SetTestExecutionEnvironmentVariables(); + + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "COR_PROFILER", profilerGuid, "{324F817A-7420-4E6D-B3C1-143FBED6D855}"); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", "324f817a-7420-4e6d-b3c1-143fbed6d855"), Times.Once); + } + + [TestMethod] + [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}")] + [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}")] + [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}")] + [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}")] + [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}")] + [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}")] + [DataRow("AAAAAAAAAAAAA")] + public void RecordEnvironmentVariableConflict_ShouldCollectClrIeTelemetry_IfCoreClrProfilerVariableAndCollectorSpecifiesClrIeProfile(string profilerGuid) + { + // arrange + _dataCollectorInformation.SetTestExecutionEnvironmentVariables(); + + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "CORECLR_PROFILER", profilerGuid, "{324F817A-7420-4E6D-B3C1-143FBED6D855}"); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", "324f817a-7420-4e6d-b3c1-143fbed6d855"), Times.Once); + } + + [TestMethod] + [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] + public void RecordEnvironmentVariableConflict_ShouldCollectTelemetry_IfCorProfilerVariableAndBothValuesSame(string profilerGuid, string profilerName) + { + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "COR_PROFILER", profilerGuid, profilerGuid.ToLower(CultureInfo.InvariantCulture)); + + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CorProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); + } + + [TestMethod] + [DataRow("{E5F256DC-7959-4DD6-8E4F-C11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324F817A-7420-4E6D-B3C1-143FBED6D855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317ae81-bcd8-47b7-aaa1-a28062e41c71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71}", "aaaaaaaa-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("{E5F256DC-7959-4DD6-8E4F-c11150AB28E0}", "e5f256dc-7959-4dd6-8e4f-c11150ab28e0")] + [DataRow("{324f817a-7420-4e6d-b3c1-143fbEd6d855}", "324f817a-7420-4e6d-b3c1-143fbed6d855")] + [DataRow("{9317AE81-bcd8-47b7-AAA1-A28062E41C71}", "9317ae81-bcd8-47b7-aaa1-a28062e41c71")] + [DataRow("AAAAAAAAAAAAA", "00000000-0000-0000-0000-000000000000")] + public void RecordEnvironmentVariableConflict_ShouldCollectTelemetry_IfCoreClrProfilerVariableAndBothValuesSame(string profilerGuid, string profilerName) + { + // act + _telemetryManager.RecordEnvironmentVariableConflict(_dataCollectorInformation, "CORECLR_PROFILER", profilerGuid, profilerGuid.ToUpper(CultureInfo.InvariantCulture)); - // assert - this.mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); - } + // assert + _mockMetricsCollection.Verify(c => c.Add($"VS.TestPlatform.DataCollector.CoreClrProfiler.{_dataCollectorInformation.DataCollectorConfig.TypeUri}", profilerName), Times.Once); } } diff --git a/test/datacollector.UnitTests/DataCollectorConfigTests.cs b/test/datacollector.UnitTests/DataCollectorConfigTests.cs index 17b6e466df..05ff4fdbfe 100644 --- a/test/datacollector.UnitTests/DataCollectorConfigTests.cs +++ b/test/datacollector.UnitTests/DataCollectorConfigTests.cs @@ -1,56 +1,53 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollectorUnitTests; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class DataCollectorConfigTests { - using System; + [TestMethod] + public void ConstructorShouldSetCorrectFriendlyNameAndUri() + { + var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollector)); + + Assert.AreEqual("CustomDataCollector", dataCollectorConfig.FriendlyName); + Assert.AreEqual("my://custom/datacollector", dataCollectorConfig.TypeUri!.ToString()); + } + + [TestMethod] + public void ConstructorShouldThrowExceptionIfTypeIsNull() + { + Assert.ThrowsException( + () => new DataCollectorConfig(null!)); + } - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void ConstructorShouldNotThrowExceptionIfUriIsNotSpecifiedInDataCollector() + { + var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollectorWithoutUri)); + Assert.AreEqual("CustomDataCollector", dataCollectorConfig.FriendlyName); + Assert.IsNull(dataCollectorConfig.TypeUri); + } + + [TestMethod] + public void ConstructorShouldNotThrowExceptionIfFriendlyNameIsEmpty() + { + var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollectorWithEmptyFriendlyName)); + Assert.AreEqual("", dataCollectorConfig.FriendlyName); + Assert.AreEqual("my://custom/datacollector", dataCollectorConfig.TypeUri!.ToString()); + } - [TestClass] - public class DataCollectorConfigTests + [TestMethod] + public void ConstructorShouldNotThrowExceptionIfFriendlyNameIsNotSpecified() { - [TestMethod] - public void ConstructorShouldSetCorrectFriendlyNameAndUri() - { - var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollector)); - - Assert.AreEqual("CustomDataCollector", dataCollectorConfig.FriendlyName); - Assert.AreEqual("my://custom/datacollector", dataCollectorConfig.TypeUri.ToString()); - } - - [TestMethod] - public void ConstructorShouldThrowExceptionIfTypeIsNull() - { - Assert.ThrowsException( - () => - { - new DataCollectorConfig(null); - }); - } - - [TestMethod] - public void ConstructorShouldNotThrowExceptionIfUriIsNotSpecifiedInDataCollector() - { - var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollectorWithoutUri)); - Assert.AreEqual("CustomDataCollector", dataCollectorConfig.FriendlyName); - Assert.IsNull(dataCollectorConfig.TypeUri); - } - - [TestMethod] - public void ConstructorShouldNotThrowExceptionIfFriendlyNameIsEmpty() - { - var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollectorWithEmptyFriendlyName)); - Assert.AreEqual("", dataCollectorConfig.FriendlyName); - Assert.AreEqual("my://custom/datacollector", dataCollectorConfig.TypeUri.ToString()); - } - - [TestMethod] - public void ConstructorShouldNotThrowExceptionIfFriendlyNameIsNotSpecified() - { - var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollectorWithoutFriendlyName)); - Assert.AreEqual("", dataCollectorConfig.FriendlyName); - Assert.AreEqual("my://custom/datacollector", dataCollectorConfig.TypeUri.ToString()); - } + var dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollectorWithoutFriendlyName)); + Assert.AreEqual("", dataCollectorConfig.FriendlyName); + Assert.AreEqual("my://custom/datacollector", dataCollectorConfig.TypeUri!.ToString()); } } diff --git a/test/datacollector.UnitTests/DataCollectorInformationTests.cs b/test/datacollector.UnitTests/DataCollectorInformationTests.cs index f79b91a1b4..0d9101dea9 100644 --- a/test/datacollector.UnitTests/DataCollectorInformationTests.cs +++ b/test/datacollector.UnitTests/DataCollectorInformationTests.cs @@ -1,64 +1,67 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests -{ - using System; - using System.Collections.Generic; - using System.Linq; +using System.Collections.Generic; +using System.Linq; - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollectorUnitTests; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using Moq.Protected; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Moq; +using Moq.Protected; - [TestClass] - public class DataCollectorInformationTests - { - private DataCollectorInformation dataCollectorInfo; +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class DataCollectorInformationTests +{ + private readonly DataCollectorInformation _dataCollectorInfo; + + private readonly List> _envVarList; - private List> envVarList; + private readonly Mock _mockDataCollector; - private Mock mockDataCollector; + private readonly Mock _telemetryReporter; - public DataCollectorInformationTests() - { - this.envVarList = new List>(); - this.mockDataCollector = new Mock(); - this.mockDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(this.envVarList); - this.mockDataCollector.Protected().Setup("Dispose", true); - var mockMessageSink = new Mock(); - this.dataCollectorInfo = new DataCollectorInformation( - this.mockDataCollector.Object, - null, - new DataCollectorConfig(typeof(CustomDataCollector)), - null, - new Mock().Object, - new TestPlatformDataCollectionEvents(), - mockMessageSink.Object, - string.Empty); - } + public DataCollectorInformationTests() + { + _envVarList = new List>(); + _mockDataCollector = new Mock(); + _mockDataCollector.As().Setup(x => x.GetTestExecutionEnvironmentVariables()).Returns(_envVarList); + _mockDataCollector.Protected().Setup("Dispose", false, true); + var mockMessageSink = new Mock(); + _dataCollectorInfo = new DataCollectorInformation( + _mockDataCollector.Object, + null, + new DataCollectorConfig(typeof(CustomDataCollector)), + null, + new Mock().Object, + new TestPlatformDataCollectionEvents(), + mockMessageSink.Object, + string.Empty); + _telemetryReporter = new Mock(); + } - [TestMethod] - public void InitializeDataCollectorShouldInitializeDataCollector() - { - this.envVarList.Add(new KeyValuePair("key", "value")); + [TestMethod] + public void InitializeDataCollectorShouldInitializeDataCollector() + { + _envVarList.Add(new KeyValuePair("key", "value")); - this.dataCollectorInfo.InitializeDataCollector(); - this.dataCollectorInfo.SetTestExecutionEnvironmentVariables(); + _dataCollectorInfo.InitializeDataCollector(_telemetryReporter.Object); + _dataCollectorInfo.SetTestExecutionEnvironmentVariables(); - CollectionAssert.AreEqual(this.envVarList, this.dataCollectorInfo.TestExecutionEnvironmentVariables.ToList()); - } + CollectionAssert.AreEqual(_envVarList, _dataCollectorInfo.TestExecutionEnvironmentVariables!.ToList()); + } - [TestMethod] - public void DisposeShouldInvokeDisposeOfDatacollector() - { - this.dataCollectorInfo.InitializeDataCollector(); - this.dataCollectorInfo.DisposeDataCollector(); + [TestMethod] + public void DisposeShouldInvokeDisposeOfDatacollector() + { + _dataCollectorInfo.InitializeDataCollector(_telemetryReporter.Object); + _dataCollectorInfo.DisposeDataCollector(); - this.mockDataCollector.Protected().Verify("Dispose", Times.Once(), true); - } + _mockDataCollector.Protected().Verify("Dispose", Times.Once(), false, true); } } diff --git a/test/datacollector.UnitTests/DataCollectorMainTests.cs b/test/datacollector.UnitTests/DataCollectorMainTests.cs index f25a3b8c05..59103a2949 100644 --- a/test/datacollector.UnitTests/DataCollectorMainTests.cs +++ b/test/datacollector.UnitTests/DataCollectorMainTests.cs @@ -1,118 +1,192 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; +using System.Diagnostics; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.DataCollector; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; + +using Moq; +using System.Globalization; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class DataCollectorMainTests { - using System; - using System.Diagnostics; - - using CommunicationUtilities.DataCollection.Interfaces; - using CoreUtilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using PlatformAbstractions.Interfaces; - using TestPlatform.DataCollector; - - [TestClass] - public class DataCollectorMainTests + private readonly string[] _args = ["--port", "1025", "--parentprocessid", "100", "--diag", "abc.txt", "--tracelevel", "3"]; + private readonly string[] _argsWithEmptyDiagArg = ["--port", "1025", "--parentprocessid", "100", "--diag", "", "--tracelevel", "3"]; + private readonly string[] _argsWithInvalidTraceLevel = ["--port", "1025", "--parentprocessid", "100", "--diag", "abc.txt", "--tracelevel", "5"]; + + private static readonly string TimeoutErrorMessage = + "datacollector process failed to connect to vstest.console process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockEnvironment; + private readonly Mock _mockDataCollectionRequestHandler; + private readonly DataCollectorMain _dataCollectorMain; + + public DataCollectorMainTests() + { + _mockProcessHelper = new Mock(); + _mockEnvironment = new Mock(); + _mockDataCollectionRequestHandler = new Mock(); + _dataCollectorMain = new DataCollectorMain(_mockProcessHelper.Object, _mockEnvironment.Object, _mockDataCollectionRequestHandler.Object, new()); + _mockDataCollectionRequestHandler.Setup(rh => rh.WaitForRequestSenderConnection(It.IsAny())).Returns(true); + } + + [TestCleanup] + public void CleanUp() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, ""); + } + + [TestMethod] + public void RunShouldTimeoutBasedOnEnvVariable() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "10"); + _dataCollectorMain.Run(_args); + _mockDataCollectionRequestHandler.Verify(rh => rh.WaitForRequestSenderConnection(10 * 1000)); + } + + [TestMethod] + public void RunShouldTimeoutBasedDefaultValueIfEnvVariableNotSet() + { + _dataCollectorMain.Run(_args); + + _mockDataCollectionRequestHandler.Verify(rh => rh.WaitForRequestSenderConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)); + } + + [TestMethod] + public void RunShouldInitializeTraceWithTraceLevelOffIfDiagArgIsEmpty() { - private readonly string[] args = {"--port", "1025", "--parentprocessid", "100", "--diag", "abc.txt", "--tracelevel", "3" }; - private readonly string[] argsWithEmptyDiagArg = { "--port", "1025", "--parentprocessid", "100", "--diag", "", "--tracelevel", "3" }; - private readonly string[] argsWithInvalidTraceLevel = { "--port", "1025", "--parentprocessid", "100", "--diag", "abc.txt", "--tracelevel", "5" }; - - private static readonly string TimoutErrorMessage = - "datacollector process failed to connect to vstest.console process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; - private Mock mockProcessHelper; - private Mock mockEnvironment; - private Mock mockDataCollectionRequestHandler; - private DataCollectorMain dataCollectorMain; - - public DataCollectorMainTests() - { - this.mockProcessHelper = new Mock(); - this.mockEnvironment = new Mock(); - this.mockDataCollectionRequestHandler = new Mock(); - this.dataCollectorMain = new DataCollectorMain(this.mockProcessHelper.Object, this.mockEnvironment.Object, this.mockDataCollectionRequestHandler.Object); - this.mockDataCollectionRequestHandler.Setup(rh => rh.WaitForRequestSenderConnection(It.IsAny())).Returns(true); - } - - [TestCleanup] - public void CleanUp() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, ""); - } - - [TestMethod] - public void RunShouldTimeoutBasedOnEnvVariable() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, "10"); - this.dataCollectorMain.Run(args); - this.mockDataCollectionRequestHandler.Verify(rh => rh.WaitForRequestSenderConnection(10 * 1000)); - } - - [TestMethod] - public void RunShouldTimeoutBasedDefaulValueIfEnvVariableNotSet() - { - this.dataCollectorMain.Run(args); - - this.mockDataCollectionRequestHandler.Verify(rh => rh.WaitForRequestSenderConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)); - } - - [TestMethod] - public void RunShouldInitializeTraceWithTraceLevelOffIfDiagArgIsEmpty() - { - // Setting EqtTrace.TraceLevel to a value other than info. + // Setting EqtTrace.TraceLevel to a value other than info. #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Verbose; + EqtTrace.TraceLevel = TraceLevel.Verbose; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; + EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; #endif - // Action - this.dataCollectorMain.Run(argsWithEmptyDiagArg); // Passing tracelevel as info and diag file path is empty. + // Action + _dataCollectorMain.Run(_argsWithEmptyDiagArg); // Passing tracelevel as info and diag file path is empty. - // Verify - Assert.AreEqual(TraceLevel.Off, (TraceLevel)EqtTrace.TraceLevel); - } + // Verify + Assert.AreEqual(TraceLevel.Off, (TraceLevel)EqtTrace.TraceLevel); + } - [TestMethod] - public void RunShouldInitializeTraceWithVerboseTraceLevelIfInvalidTraceLevelPassed() - { - // Setting EqtTrace.TraceLevel to a value other than info. + [TestMethod] + public void RunShouldInitializeTraceWithVerboseTraceLevelIfInvalidTraceLevelPassed() + { + // Setting EqtTrace.TraceLevel to a value other than info. #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Info; + EqtTrace.TraceLevel = TraceLevel.Info; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Info; + EqtTrace.TraceLevel = PlatformTraceLevel.Info; #endif - // Action - this.dataCollectorMain.Run(argsWithInvalidTraceLevel); + // Action + _dataCollectorMain.Run(_argsWithInvalidTraceLevel); - // Verify - Assert.AreEqual(TraceLevel.Verbose, (TraceLevel)EqtTrace.TraceLevel); - } + // Verify + Assert.AreEqual(TraceLevel.Verbose, (TraceLevel)EqtTrace.TraceLevel); + } - [TestMethod] - public void RunShouldInitializeTraceWithCorrectVerboseTraceLevel() - { - // Setting EqtTrace.TraceLevel to a value other than info. + [TestMethod] + public void RunShouldInitializeTraceWithCorrectVerboseTraceLevel() + { + // Setting EqtTrace.TraceLevel to a value other than info. #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Verbose; + EqtTrace.TraceLevel = TraceLevel.Verbose; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; + EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; #endif - // Action - this.dataCollectorMain.Run(args); // Trace level is set as info in args. - - // Verify - Assert.AreEqual(TraceLevel.Info, (TraceLevel)EqtTrace.TraceLevel); - } - - [TestMethod] - public void RunShouldThrowIfTimeoutOccured() - { - this.mockDataCollectionRequestHandler.Setup(rh => rh.WaitForRequestSenderConnection(It.IsAny())).Returns(false); - var message = Assert.ThrowsException(() => this.dataCollectorMain.Run(args)).Message; - Assert.AreEqual(DataCollectorMainTests.TimoutErrorMessage, message); - } + // Action + _dataCollectorMain.Run(_args); // Trace level is set as info in args. + + // Verify + Assert.AreEqual(TraceLevel.Info, (TraceLevel)EqtTrace.TraceLevel); + } + + [TestMethod] + public void RunShouldThrowIfTimeoutOccured() + { + _mockDataCollectionRequestHandler.Setup(rh => rh.WaitForRequestSenderConnection(It.IsAny())).Returns(false); + var message = Assert.ThrowsException(() => _dataCollectorMain.Run(_args)).Message; + Assert.AreEqual(TimeoutErrorMessage, message); + } + + [TestMethod] + public void RunWhenCliUiLanguageIsSetChangesCultureAndFlowsOverride() + { + // Arrange + var culture = new CultureInfo("fr-fr"); + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE")).Returns(culture.Name); + + bool threadCultureWasSet = false; + var dataCollectorMain = new DataCollectorMain(_mockProcessHelper.Object, _mockEnvironment.Object, _mockDataCollectionRequestHandler.Object, + new(envVarMock.Object, lang => threadCultureWasSet = lang.Equals(culture))); + + // Act + dataCollectorMain.Run(_args); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("VSLANG", culture.LCID.ToString(CultureInfo.InvariantCulture)), Times.Once); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void RunWhenVsLangIsSetChangesCultureAndFlowsOverride() + { + // Arrange + var culture = new CultureInfo("fr-fr"); + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable("VSLANG")).Returns(culture.LCID.ToString(CultureInfo.InvariantCulture)); + + bool threadCultureWasSet = false; + var dataCollectorMain = new DataCollectorMain(_mockProcessHelper.Object, _mockEnvironment.Object, _mockDataCollectionRequestHandler.Object, + new(envVarMock.Object, lang => threadCultureWasSet = lang.Equals(culture))); + + // Act + dataCollectorMain.Run(_args); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Exactly(2)); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + envVarMock.Verify(x => x.SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", culture.Name), Times.Once); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void RunWhenNoCultureEnvVarSetDoesNotChangeCultureNorFlowsOverride() + { + // Arrange + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable(It.IsAny())).Returns(default(string)); + + bool threadCultureWasSet = false; + var dataCollectorMain = new DataCollectorMain(_mockProcessHelper.Object, _mockEnvironment.Object, _mockDataCollectionRequestHandler.Object, + new(envVarMock.Object, lang => threadCultureWasSet = true)); + + // Act + dataCollectorMain.Run(_args); + + // Assert + Assert.IsFalse(threadCultureWasSet, "DefaultThreadCurrentUICulture was set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("VSLANG", It.IsAny()), Times.Never); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", It.IsAny()), Times.Never); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Never); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", It.IsAny()), Times.Never); } } diff --git a/test/datacollector.UnitTests/DummyDataCollectors.cs b/test/datacollector.UnitTests/DummyDataCollectors.cs index 3b8e7858b5..614631d156 100644 --- a/test/datacollector.UnitTests/DummyDataCollectors.cs +++ b/test/datacollector.UnitTests/DummyDataCollectors.cs @@ -1,77 +1,72 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests -{ - using System.Collections.Generic; - using System.Xml; +using System.Collections.Generic; +using System.Xml; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - [DataCollectorFriendlyName("CustomDataCollector")] - [DataCollectorTypeUri("my://custom/datacollector")] - public class CustomDataCollector : DataCollector, ITestExecutionEnvironmentSpecifier - { - public DataCollectionEnvironmentContext DataCollectionEnvironmentContext { get; set; } +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollectorUnitTests; - public DataCollectionSink DataSink { get; set; } +[DataCollectorFriendlyName("CustomDataCollector")] +[DataCollectorTypeUri("my://custom/datacollector")] +public class CustomDataCollector : ObjectModel.DataCollection.DataCollector, ITestExecutionEnvironmentSpecifier +{ + public DataCollectionEnvironmentContext? DataCollectionEnvironmentContext { get; set; } - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - } + public DataCollectionSink? DataSink { get; set; } - public IEnumerable> GetTestExecutionEnvironmentVariables() - { - return default; - } + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) + { + } - protected override void Dispose(bool disposing) - { - } + public IEnumerable> GetTestExecutionEnvironmentVariables() + { + return default!; } +} - [DataCollectorFriendlyName("CustomDataCollector")] - public class CustomDataCollectorWithoutUri : DataCollector +[DataCollectorFriendlyName("CustomDataCollector")] +public class CustomDataCollectorWithoutUri : ObjectModel.DataCollection.DataCollector +{ + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - } } +} - [DataCollectorTypeUri("my://custom/datacollector")] - public class CustomDataCollectorWithoutFriendlyName : DataCollector +[DataCollectorTypeUri("my://custom/datacollector")] +public class CustomDataCollectorWithoutFriendlyName : ObjectModel.DataCollection.DataCollector +{ + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - } } +} - [DataCollectorFriendlyName("")] - [DataCollectorTypeUri("my://custom/datacollector")] - public class CustomDataCollectorWithEmptyFriendlyName : DataCollector +[DataCollectorFriendlyName("")] +[DataCollectorTypeUri("my://custom/datacollector")] +public class CustomDataCollectorWithEmptyFriendlyName : ObjectModel.DataCollection.DataCollector +{ + public override void Initialize( + XmlElement? configurationElement, + DataCollectionEvents events, + DataCollectionSink dataSink, + DataCollectionLogger logger, + DataCollectionEnvironmentContext? environmentContext) { - public override void Initialize( - XmlElement configurationElement, - DataCollectionEvents events, - DataCollectionSink dataSink, - DataCollectionLogger logger, - DataCollectionEnvironmentContext environmentContext) - { - } } -} \ No newline at end of file +} diff --git a/test/datacollector.UnitTests/Program.cs b/test/datacollector.UnitTests/Program.cs deleted file mode 100644 index 7f39953476..0000000000 --- a/test/datacollector.UnitTests/Program.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests -{ - /// - /// Main entry point for the command line runner. - /// - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/datacollector.UnitTests/Properties/AssemblyInfo.cs b/test/datacollector.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index fb892d21e1..0000000000 --- a/test/datacollector.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("datacollector.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("00aa21f3-31e4-4748-ac0b-c4eadb41ca24")] diff --git a/test/datacollector.UnitTests/TestPlatformDataCollectionEventsTests.cs b/test/datacollector.UnitTests/TestPlatformDataCollectionEventsTests.cs index 1ee6ba7980..13b56f7cf5 100644 --- a/test/datacollector.UnitTests/TestPlatformDataCollectionEventsTests.cs +++ b/test/datacollector.UnitTests/TestPlatformDataCollectionEventsTests.cs @@ -1,161 +1,157 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class TestPlatformDataCollectionEventsTests { - using System; - using System.Collections.Generic; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class TestPlatformDataCollectionEventsTests + private readonly TestPlatformDataCollectionEvents _events; + + private DataCollectionContext? _context; + private bool _isEventRaised; + + public TestPlatformDataCollectionEventsTests() + { + _events = new TestPlatformDataCollectionEvents(); + } + + [TestMethod] + public void RaiseEventsShouldThrowExceptionIfEventArgsIsNull() + { + Assert.ThrowsException(() => _events.RaiseEvent(null!)); + } + + [TestMethod] + public void RaiseEventsShouldRaiseEventsIfSessionStartEventArgsIsPassed() + { + _isEventRaised = false; + var testCase = new TestCase(); + _context = new DataCollectionContext(testCase); + + _events.SessionStart += SessionStartMessageHandler; + var eventArgs = new SessionStartEventArgs(_context, new Dictionary()); + _events.RaiseEvent(eventArgs); + + Assert.IsTrue(_isEventRaised); + } + + [TestMethod] + public void RaiseEventsShouldNotRaiseEventsIfEventIsNotRegistered() + { + _isEventRaised = false; + var testCase = new TestCase(); + _context = new DataCollectionContext(testCase); + + var eventArgs = new SessionStartEventArgs(_context, new Dictionary()); + _events.RaiseEvent(eventArgs); + + Assert.IsFalse(_isEventRaised); + } + + [TestMethod] + public void RaiseEventsShouldNotRaiseEventsIfEventIsUnRegistered() + { + _isEventRaised = false; + var testCase = new TestCase(); + _context = new DataCollectionContext(testCase); + + _events.SessionStart += SessionStartMessageHandler; + _events.SessionStart -= SessionStartMessageHandler; + var eventArgs = new SessionStartEventArgs(_context, new Dictionary()); + _events.RaiseEvent(eventArgs); + + Assert.IsFalse(_isEventRaised); + } + + [TestMethod] + public void RaiseEventsShouldRaiseEventsIfSessionEndEventArgsIsPassed() + { + _isEventRaised = false; + var testCase = new TestCase(); + _context = new DataCollectionContext(testCase); + + _events.SessionEnd += SessionEndMessageHandler; + var eventArgs = new SessionEndEventArgs(_context); + _events.RaiseEvent(eventArgs); + + Assert.IsTrue(_isEventRaised); + } + + [TestMethod] + public void RaiseEventsShouldRaiseEventsIfTestCaseStartEventArgsIsPassed() + { + _isEventRaised = false; + var testCase = new TestCase(); + _context = new DataCollectionContext(testCase); + + _events.TestCaseStart += TestCaseStartMessageHandler; + var eventArgs = new TestCaseStartEventArgs(_context, testCase); + _events.RaiseEvent(eventArgs); + + Assert.IsTrue(_isEventRaised); + } + + [TestMethod] + public void RaiseEventsShouldRaiseEventsIfTestCaseEndEventArgsIsPassed() + { + _isEventRaised = false; + var testCase = new TestCase(); + _context = new DataCollectionContext(testCase); + + _events.TestCaseEnd += TestCaseEndMessageHandler; + var eventArgs = new TestCaseEndEventArgs(_context, testCase, TestOutcome.Passed); + _events.RaiseEvent(eventArgs); + + Assert.IsTrue(_isEventRaised); + } + + [TestMethod] + public void AreTestCaseEventsSubscribedShouldReturnTrueIfTestCaseStartIsSubscribed() + { + _events.TestCaseStart += TestCaseStartMessageHandler; + + Assert.IsTrue(_events.AreTestCaseEventsSubscribed()); + } + + [TestMethod] + public void AreTestCaseEventsSubscribedShouldReturnTrueIfTestCaseEndIsSubscribed() + { + _events.TestCaseEnd += TestCaseEndMessageHandler; + + Assert.IsTrue(_events.AreTestCaseEventsSubscribed()); + } + + [TestMethod] + public void AreTestCaseEventsSubscribedShouldFalseIfTestCaseEventsAreNotSubscribed() + { + Assert.IsFalse(_events.AreTestCaseEventsSubscribed()); + } + + private void SessionStartMessageHandler(object? sender, SessionStartEventArgs e) + { + _isEventRaised = true; + } + + private void SessionEndMessageHandler(object? sender, SessionEndEventArgs e) + { + _isEventRaised = true; + } + + private void TestCaseStartMessageHandler(object? sender, TestCaseStartEventArgs e) + { + _isEventRaised = true; + } + + private void TestCaseEndMessageHandler(object? sender, TestCaseEndEventArgs e) { - private TestPlatformDataCollectionEvents events; - - private DataCollectionContext context; - - private bool isEventRaised; - - public TestPlatformDataCollectionEventsTests() - { - this.events = new TestPlatformDataCollectionEvents(); - } - - [TestMethod] - public void RaiseEventsShouldThrowExceptionIfEventArgsIsNull() - { - Assert.ThrowsException(() => - { - this.events.RaiseEvent(null); - }); - } - - [TestMethod] - public void RaiseEventsShouldRaiseEventsIfSessionStartEventArgsIsPassed() - { - this.isEventRaised = false; - var testCase = new TestCase(); - this.context = new DataCollectionContext(testCase); - - this.events.SessionStart += this.SessionStartMessageHandler; - var eventArgs = new SessionStartEventArgs(this.context, new Dictionary()); - this.events.RaiseEvent(eventArgs); - - Assert.IsTrue(this.isEventRaised); - } - - [TestMethod] - public void RaiseEventsShouldNotRaiseEventsIfEventIsNotRegisterd() - { - this.isEventRaised = false; - var testCase = new TestCase(); - this.context = new DataCollectionContext(testCase); - - var eventArgs = new SessionStartEventArgs(this.context, new Dictionary()); - this.events.RaiseEvent(eventArgs); - - Assert.IsFalse(this.isEventRaised); - } - - [TestMethod] - public void RaiseEventsShouldNotRaiseEventsIfEventIsUnRegisterd() - { - this.isEventRaised = false; - var testCase = new TestCase(); - this.context = new DataCollectionContext(testCase); - - this.events.SessionStart += this.SessionStartMessageHandler; - this.events.SessionStart -= this.SessionStartMessageHandler; - var eventArgs = new SessionStartEventArgs(this.context, new Dictionary()); - this.events.RaiseEvent(eventArgs); - - Assert.IsFalse(this.isEventRaised); - } - - [TestMethod] - public void RaiseEventsShouldRaiseEventsIfSessionEndEventArgsIsPassed() - { - this.isEventRaised = false; - var testCase = new TestCase(); - this.context = new DataCollectionContext(testCase); - - this.events.SessionEnd += this.SessionEndMessageHandler; - var eventArgs = new SessionEndEventArgs(this.context); - this.events.RaiseEvent(eventArgs); - - Assert.IsTrue(this.isEventRaised); - } - - [TestMethod] - public void RaiseEventsShouldRaiseEventsIfTestCaseStartEventArgsIsPassed() - { - this.isEventRaised = false; - var testCase = new TestCase(); - this.context = new DataCollectionContext(testCase); - - this.events.TestCaseStart += this.TestCaseStartMessageHandler; - var eventArgs = new TestCaseStartEventArgs(this.context, testCase); - this.events.RaiseEvent(eventArgs); - - Assert.IsTrue(this.isEventRaised); - } - - [TestMethod] - public void RaiseEventsShouldRaiseEventsIfTestCaseEndEventArgsIsPassed() - { - this.isEventRaised = false; - var testCase = new TestCase(); - this.context = new DataCollectionContext(testCase); - - this.events.TestCaseEnd += this.TestCaseEndMessageHandler; - var eventArgs = new TestCaseEndEventArgs(this.context, testCase, TestOutcome.Passed); - this.events.RaiseEvent(eventArgs); - - Assert.IsTrue(this.isEventRaised); - } - - [TestMethod] - public void AreTestCaseEventsSubscribedShouldReturnTrueIfTestCaseStartIsSubscribed() - { - this.events.TestCaseStart += this.TestCaseStartMessageHandler; - - Assert.IsTrue(this.events.AreTestCaseEventsSubscribed()); - } - - [TestMethod] - public void AreTestCaseEventsSubscribedShouldReturnTrueIfTestCaseEndIsSubscribed() - { - this.events.TestCaseEnd += this.TestCaseEndMessageHandler; - - Assert.IsTrue(this.events.AreTestCaseEventsSubscribed()); - } - - [TestMethod] - public void AreTestCaseEventsSubscribedShouldFalseIfTestCaseEventsAreNotSubscribed() - { - Assert.IsFalse(this.events.AreTestCaseEventsSubscribed()); - } - - private void SessionStartMessageHandler(object sender, SessionStartEventArgs e) - { - this.isEventRaised = true; - } - - private void SessionEndMessageHandler(object sender, SessionEndEventArgs e) - { - this.isEventRaised = true; - } - - private void TestCaseStartMessageHandler(object sender, TestCaseStartEventArgs e) - { - this.isEventRaised = true; - } - - private void TestCaseEndMessageHandler(object sender, TestCaseEndEventArgs e) - { - this.isEventRaised = true; - } + _isEventRaised = true; } } diff --git a/test/datacollector.UnitTests/TestPlatformDataCollectionLoggerTests.cs b/test/datacollector.UnitTests/TestPlatformDataCollectionLoggerTests.cs index 7c744c1b54..dd6e706cd5 100644 --- a/test/datacollector.UnitTests/TestPlatformDataCollectionLoggerTests.cs +++ b/test/datacollector.UnitTests/TestPlatformDataCollectionLoggerTests.cs @@ -1,105 +1,84 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests +using System; + +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollectorUnitTests; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; + +[TestClass] +public class TestPlatformDataCollectionLoggerTests { - using System; + private readonly TestPlatformDataCollectionLogger _logger; + private readonly Mock _messageSink; + private readonly DataCollectorConfig _dataCollectorConfig; + private readonly DataCollectionContext _context; + + public TestPlatformDataCollectionLoggerTests() + { + _messageSink = new Mock(); + _dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollector)); + _logger = new TestPlatformDataCollectionLogger(_messageSink.Object, _dataCollectorConfig); + + var guid = Guid.NewGuid(); + var sessionId = new SessionId(guid); + _context = new DataCollectionContext(sessionId); + } + + [TestMethod] + public void LogErrorShouldThrowExceptionIfContextIsNull() + { + Assert.ThrowsException(() => _logger.LogError(null!, string.Empty)); + + Assert.ThrowsException(() => _logger.LogError(null!, new Exception())); + + Assert.ThrowsException(() => _logger.LogError(null!, string.Empty, new Exception())); + } - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void LogErrorShouldThrowExceptionIfTextIsNull() + { + Assert.ThrowsException(() => _logger.LogError(_context, (string)null!)); - using Moq; + Assert.ThrowsException(() => _logger.LogError(_context, null!, new Exception())); + } - [TestClass] - public class TestPlatformDataCollectionLoggerTests + [TestMethod] + public void LogErrorShouldThrowExceptionIfExceptionIsNull() { - private TestPlatformDataCollectionLogger logger; - private Mock messageSink; - private DataCollectorConfig dataCollectorConfig; - private DataCollectionContext context; - - public TestPlatformDataCollectionLoggerTests() - { - this.messageSink = new Mock(); - this.dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollector)); - this.logger = new TestPlatformDataCollectionLogger(this.messageSink.Object, this.dataCollectorConfig); - - var guid = Guid.NewGuid(); - var sessionId = new SessionId(guid); - this.context = new DataCollectionContext(sessionId); - } - - [TestMethod] - public void LogErrorShouldThrowExceptionIfContextIsNull() - { - Assert.ThrowsException(() => - { - this.logger.LogError(null, string.Empty); - }); - - Assert.ThrowsException(() => - { - this.logger.LogError(null, new Exception()); - }); - - Assert.ThrowsException(() => - { - this.logger.LogError(null, string.Empty, new Exception()); - }); - } - - [TestMethod] - public void LogErrorShouldThrowExceptionIfTextIsNull() - { - Assert.ThrowsException(() => - { - this.logger.LogError(this.context, (string)null); - }); - - Assert.ThrowsException(() => - { - this.logger.LogError(this.context, null, new Exception()); - }); - } - - [TestMethod] - public void LogErrorShouldThrowExceptionIfExceptionIsNull() - { - Assert.ThrowsException(() => - { - this.logger.LogError(this.context, (Exception)null); - }); - - Assert.ThrowsException(() => - { - this.logger.LogError(this.context, string.Empty, (Exception)null); - }); - } - - [TestMethod] - public void LogErrorShouldSendMessageToMessageSink() - { - var text = "customtext"; - this.logger.LogError(this.context, text); - - this.messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once()); - - this.logger.LogError(this.context, new Exception(text)); - this.messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Exactly(2)); - - this.logger.LogError(this.context, text, new Exception(text)); - this.messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Exactly(3)); - } - - [TestMethod] - public void LogWarningShouldSendMessageToMessageSink() - { - var text = "customtext"; - this.logger.LogWarning(this.context, text); - - this.messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once()); - } + Assert.ThrowsException(() => _logger.LogError(_context, (Exception?)null!)); + + Assert.ThrowsException(() => _logger.LogError(_context, string.Empty, null!)); + } + + [TestMethod] + public void LogErrorShouldSendMessageToMessageSink() + { + var text = "customtext"; + _logger.LogError(_context, text); + + _messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once()); + + _logger.LogError(_context, new Exception(text)); + _messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Exactly(2)); + + _logger.LogError(_context, text, new Exception(text)); + _messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Exactly(3)); + } + + [TestMethod] + public void LogWarningShouldSendMessageToMessageSink() + { + var text = "customtext"; + _logger.LogWarning(_context, text); + + _messageSink.Verify(x => x.SendMessage(It.IsAny()), Times.Once()); } } diff --git a/test/datacollector.UnitTests/TestPlatformDataCollectionSinkTests.cs b/test/datacollector.UnitTests/TestPlatformDataCollectionSinkTests.cs index 9522d1b4bd..11f6c3fe23 100644 --- a/test/datacollector.UnitTests/TestPlatformDataCollectionSinkTests.cs +++ b/test/datacollector.UnitTests/TestPlatformDataCollectionSinkTests.cs @@ -1,128 +1,123 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests -{ - using System; - using System.ComponentModel; - using System.IO; - - using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.ComponentModel; +using System.IO; - using Moq; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.DataCollectorUnitTests; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class TestPlatformDataCollectionSinkTests - { - private Mock attachmentManager; +using Moq; - private DataCollectorConfig dataCollectorConfig; +namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.UnitTests; - private TestPlatformDataCollectionSink dataCollectionSink; +[TestClass] +public class TestPlatformDataCollectionSinkTests +{ + private readonly Mock _attachmentManager; + private readonly DataCollectorConfig _dataCollectorConfig; + private static readonly string TempDirectoryPath = Path.GetTempPath(); - private bool isEventHandlerInvoked = false; - private static readonly string TempDirectoryPath = Path.GetTempPath(); + private TestPlatformDataCollectionSink _dataCollectionSink; + private bool _isEventHandlerInvoked; - public TestPlatformDataCollectionSinkTests() - { - this.attachmentManager = new Mock(); - this.dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollector)); - this.dataCollectionSink = new TestPlatformDataCollectionSink(this.attachmentManager.Object, this.dataCollectorConfig); - this.isEventHandlerInvoked = false; - } + public TestPlatformDataCollectionSinkTests() + { + _attachmentManager = new Mock(); + _dataCollectorConfig = new DataCollectorConfig(typeof(CustomDataCollector)); + _dataCollectionSink = new TestPlatformDataCollectionSink(_attachmentManager.Object, _dataCollectorConfig); + _isEventHandlerInvoked = false; + } - [TestCleanup] - public void Cleanup() - { - File.Delete(Path.Combine(TempDirectoryPath, "filename.txt")); - } + [TestCleanup] + public void Cleanup() + { + File.Delete(Path.Combine(TempDirectoryPath, "filename.txt")); + } - [TestMethod] - public void SendFileAsyncShouldThrowExceptionIfFileTransferInformationIsNull() - { - Assert.ThrowsException(() => - { - this.dataCollectionSink.SendFileAsync(default); - }); - } + [TestMethod] + public void SendFileAsyncShouldThrowExceptionIfFileTransferInformationIsNull() + { + Assert.ThrowsException(() => _dataCollectionSink.SendFileAsync(default!)); + } - [TestMethod] - public void SendFileAsyncShouldInvokeAttachmentManagerWithValidFileTransferInfo() - { - var filename = Path.Combine(TempDirectoryPath, "filename.txt"); - File.WriteAllText(filename, string.Empty); + [TestMethod] + public void SendFileAsyncShouldInvokeAttachmentManagerWithValidFileTransferInfo() + { + var filename = Path.Combine(TempDirectoryPath, "filename.txt"); + File.WriteAllText(filename, string.Empty); - var guid = Guid.NewGuid(); - var sessionId = new SessionId(guid); - var context = new DataCollectionContext(sessionId); + var guid = Guid.NewGuid(); + var sessionId = new SessionId(guid); + var context = new DataCollectionContext(sessionId); - var fileTransferInfo = new FileTransferInformation(context, filename, false); + var fileTransferInfo = new FileTransferInformation(context, filename, false); - this.dataCollectionSink.SendFileAsync(fileTransferInfo); + _dataCollectionSink.SendFileAsync(fileTransferInfo); - this.attachmentManager.Verify(x => x.AddAttachment(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); - } + _attachmentManager.Verify(x => x.AddAttachment(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); + } - [TestMethod] - public void SendFileAsyncShouldInvokeSendFileCompletedIfRegistered() - { - var filename = Path.Combine(TempDirectoryPath, "filename.txt"); - File.WriteAllText(filename, string.Empty); + [TestMethod] + public void SendFileAsyncShouldInvokeSendFileCompletedIfRegistered() + { + var filename = Path.Combine(TempDirectoryPath, "filename.txt"); + File.WriteAllText(filename, string.Empty); - var guid = Guid.NewGuid(); - var sessionId = new SessionId(guid); - var context = new DataCollectionContext(sessionId); + var guid = Guid.NewGuid(); + var sessionId = new SessionId(guid); + var context = new DataCollectionContext(sessionId); - var fileTransferInfo = new FileTransferInformation(context, filename, false); + var fileTransferInfo = new FileTransferInformation(context, filename, false); - var attachmentManager = new DataCollectionAttachmentManager(); - attachmentManager.Initialize(sessionId, TempDirectoryPath, new Mock().Object); + var attachmentManager = new DataCollectionAttachmentManager(); + attachmentManager.Initialize(sessionId, TempDirectoryPath, new Mock().Object); - this.dataCollectionSink = new TestPlatformDataCollectionSink(attachmentManager, this.dataCollectorConfig); - this.dataCollectionSink.SendFileCompleted += SendFileCompleted_Handler; - this.dataCollectionSink.SendFileAsync(fileTransferInfo); + _dataCollectionSink = new TestPlatformDataCollectionSink(attachmentManager, _dataCollectorConfig); + _dataCollectionSink.SendFileCompleted += SendFileCompleted_Handler; + _dataCollectionSink.SendFileAsync(fileTransferInfo); - var result = attachmentManager.GetAttachments(context); + var result = attachmentManager.GetAttachments(context); - Assert.IsNotNull(result); - Assert.IsTrue(this.isEventHandlerInvoked); - } + Assert.IsNotNull(result); + Assert.IsTrue(_isEventHandlerInvoked); + } - [TestMethod] - public void SendFileAsyncShouldInvokeAttachmentManagerWithValidFileTransferInfoOverLoaded1() - { - var filename = Path.Combine(TempDirectoryPath, "filename.txt"); - File.WriteAllText(filename, string.Empty); + [TestMethod] + public void SendFileAsyncShouldInvokeAttachmentManagerWithValidFileTransferInfoOverLoaded1() + { + var filename = Path.Combine(TempDirectoryPath, "filename.txt"); + File.WriteAllText(filename, string.Empty); - var guid = Guid.NewGuid(); - var sessionId = new SessionId(guid); - var context = new DataCollectionContext(sessionId); + var guid = Guid.NewGuid(); + var sessionId = new SessionId(guid); + var context = new DataCollectionContext(sessionId); - this.dataCollectionSink.SendFileAsync(context, filename, false); + _dataCollectionSink.SendFileAsync(context, filename, false); - this.attachmentManager.Verify(x => x.AddAttachment(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); - } + _attachmentManager.Verify(x => x.AddAttachment(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); + } - [TestMethod] - public void SendFileAsyncShouldInvokeAttachmentManagerWithValidFileTransferInfoOverLoaded2() - { - var filename = Path.Combine(TempDirectoryPath, "filename.txt"); - File.WriteAllText(filename, string.Empty); + [TestMethod] + public void SendFileAsyncShouldInvokeAttachmentManagerWithValidFileTransferInfoOverLoaded2() + { + var filename = Path.Combine(TempDirectoryPath, "filename.txt"); + File.WriteAllText(filename, string.Empty); - var guid = Guid.NewGuid(); - var sessionId = new SessionId(guid); - var context = new DataCollectionContext(sessionId); + var guid = Guid.NewGuid(); + var sessionId = new SessionId(guid); + var context = new DataCollectionContext(sessionId); - this.dataCollectionSink.SendFileAsync(context, filename, string.Empty, false); + _dataCollectionSink.SendFileAsync(context, filename, string.Empty, false); - this.attachmentManager.Verify(x => x.AddAttachment(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); - } + _attachmentManager.Verify(x => x.AddAttachment(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); + } - void SendFileCompleted_Handler(object sender, AsyncCompletedEventArgs e) - { - this.isEventHandlerInvoked = true; - } + void SendFileCompleted_Handler(object? sender, AsyncCompletedEventArgs e) + { + _isEventHandlerInvoked = true; } -} \ No newline at end of file +} diff --git a/test/datacollector.UnitTests/datacollector.UnitTests.csproj b/test/datacollector.UnitTests/datacollector.UnitTests.csproj index 8837003249..1d8cc619ae 100644 --- a/test/datacollector.UnitTests/datacollector.UnitTests.csproj +++ b/test/datacollector.UnitTests/datacollector.UnitTests.csproj @@ -1,28 +1,19 @@ - + - ..\..\ true true - + Microsoft.VisualStudio.TestPlatform.DataCollector.UnitTests - Exe - netcoreapp2.1;net472 - netcoreapp3.1 + Exe + net9.0;net48 datacollector.UnitTests - - - - - - - diff --git a/test/testhost.UnitTests/AppDomainEngineInvokerTests.cs b/test/testhost.UnitTests/AppDomainEngineInvokerTests.cs index 4d75b7ec9c..81b1b9da2c 100644 --- a/test/testhost.UnitTests/AppDomainEngineInvokerTests.cs +++ b/test/testhost.UnitTests/AppDomainEngineInvokerTests.cs @@ -1,24 +1,25 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace testhost.UnitTests -{ #if NETFRAMEWORK - using Microsoft.VisualStudio.TestPlatform.TestHost; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using System.IO; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - using System.Xml.Linq; - using System.Text; - - [TestClass] - public class AppDomainEngineInvokerTests - { - private const string XmlNamespace = "urn:schemas-microsoft-com:asm.v1"; - private const string testHostConfigXml = @" + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml.Linq; + +using Microsoft.VisualStudio.TestPlatform.TestHost; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace testhost.UnitTests; + +[TestClass] +public class AppDomainEngineInvokerTests +{ + private const string XmlNamespace = "urn:schemas-microsoft-com:asm.v1"; + private const string TestHostConfigXml = @" @@ -43,86 +44,86 @@ public class AppDomainEngineInvokerTests "; - [TestMethod] - public void AppDomainEngineInvokerShouldCreateNewAppDomain() - { - var tempFile = Path.GetTempFileName(); - var appDomainInvoker = new TestableEngineInvoker(tempFile); + [TestMethod] + public void AppDomainEngineInvokerShouldCreateNewAppDomain() + { + var tempFile = Path.GetTempFileName(); + var appDomainInvoker = new TestableEngineInvoker(tempFile); - Assert.IsNotNull(appDomainInvoker.NewAppDomain, "New AppDomain must be created."); - Assert.IsNotNull(appDomainInvoker.ActualInvoker, "Invoker must be created."); - Assert.AreNotEqual(AppDomain.CurrentDomain.FriendlyName, appDomainInvoker.NewAppDomain.FriendlyName, - "New AppDomain must be different from default one."); - } + Assert.IsNotNull(appDomainInvoker.NewAppDomain, "New AppDomain must be created."); + Assert.IsNotNull(appDomainInvoker.ActualInvoker, "Invoker must be created."); + Assert.AreNotEqual(AppDomain.CurrentDomain.FriendlyName, appDomainInvoker.NewAppDomain.FriendlyName, + "New AppDomain must be different from default one."); + } - [TestMethod] - public void AppDomainEngineInvokerShouldInvokeEngineInNewDomainAndUseTestHostConfigFile() - { - var tempFile = Path.GetTempFileName(); - var appDomainInvoker = new TestableEngineInvoker(tempFile); + [TestMethod] + public void AppDomainEngineInvokerShouldInvokeEngineInNewDomainAndUseTestHostConfigFile() + { + var tempFile = Path.GetTempFileName(); + var appDomainInvoker = new TestableEngineInvoker(tempFile); - var newAppDomain = appDomainInvoker.NewAppDomain; + var newAppDomain = appDomainInvoker.NewAppDomain; - Assert.IsNotNull(newAppDomain, "New AppDomain must be created."); - Assert.IsNotNull(appDomainInvoker.ActualInvoker, "Invoker must be created."); - Assert.AreNotEqual(AppDomain.CurrentDomain.FriendlyName, - (appDomainInvoker.ActualInvoker as MockEngineInvoker).DomainFriendlyName, - "Engine must be invoked in new domain."); + Assert.IsNotNull(newAppDomain, "New AppDomain must be created."); + Assert.IsNotNull(appDomainInvoker.ActualInvoker, "Invoker must be created."); + Assert.AreNotEqual(AppDomain.CurrentDomain.FriendlyName, + (appDomainInvoker.ActualInvoker as MockEngineInvoker)?.DomainFriendlyName, + "Engine must be invoked in new domain."); - Assert.AreEqual(newAppDomain.SetupInformation.ConfigurationFile, AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, - "TestHost config file must be used in the absence of user config file."); - } + Assert.AreEqual(newAppDomain.SetupInformation.ConfigurationFile, AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, + "TestHost config file must be used in the absence of user config file."); + } - [TestMethod] - public void AppDomainEngineInvokerShouldUseTestHostStartupConfigAndRuntimeAfterMerging() - { - string appConfig = @" + [TestMethod] + public void AppDomainEngineInvokerShouldUseTestHostStartupConfigAndRuntimeAfterMerging() + { + string appConfig = @" "; - var doc = TestableEngineInvoker.MergeConfigXmls(appConfig, testHostConfigXml); + var doc = TestableEngineInvoker.MergeConfigXmls(appConfig, TestHostConfigXml); - var startupElements = doc.Descendants("startup"); + var startupElements = doc.Descendants("startup"); - Assert.AreEqual(1, startupElements.Count(), "Merged config must have only one 'startup' element"); + Assert.AreEqual(1, startupElements.Count(), "Merged config must have only one 'startup' element"); - var supportedRuntimeXml = startupElements.First().Descendants("supportedRuntime").FirstOrDefault()?.ToString(); - Assert.AreEqual(@"", supportedRuntimeXml, - "TestHost Supported Runtime must be used on merging"); + var supportedRuntimeXml = startupElements.First().Descendants("supportedRuntime").FirstOrDefault()?.ToString(); + Assert.AreEqual(@"", supportedRuntimeXml, + "TestHost Supported Runtime must be used on merging"); - var runtimeEle = doc.Descendants("runtime").FirstOrDefault(); - Assert.IsNotNull(runtimeEle, "Runtime element must be present"); + var runtimeEle = doc.Descendants("runtime").FirstOrDefault(); + Assert.IsNotNull(runtimeEle, "Runtime element must be present"); - var legacyUnhandledEleExpectedXml = @""; + var legacyUnhandledEleExpectedXml = @""; - Assert.AreEqual(legacyUnhandledEleExpectedXml, runtimeEle.Descendants("legacyUnhandledExceptionPolicy").First()?.ToString(), - "legacyUnhandledExceptionPolicy element must be of the TestHost one."); + Assert.AreEqual(legacyUnhandledEleExpectedXml, runtimeEle.Descendants("legacyUnhandledExceptionPolicy").First()?.ToString(), + "legacyUnhandledExceptionPolicy element must be of the TestHost one."); - Assert.IsFalse(runtimeEle.ToString().Contains("probing"), "Probing element of TestHost must not be present."); + Assert.IsFalse(runtimeEle.ToString().Contains("probing"), "Probing element of TestHost must not be present."); - var assemblyBindingXName = XName.Get("assemblyBinding", XmlNamespace); - var mergedDocAssemblyBindingNodes = runtimeEle.Descendants(assemblyBindingXName); - Assert.AreEqual(1, mergedDocAssemblyBindingNodes.Count(), "AssemblyRedirect of TestHost must be present."); + var assemblyBindingXName = XName.Get("assemblyBinding", XmlNamespace); + var mergedDocAssemblyBindingNodes = runtimeEle.Descendants(assemblyBindingXName); + Assert.AreEqual(1, mergedDocAssemblyBindingNodes.Count(), "AssemblyRedirect of TestHost must be present."); - var dependentAssemblyXName = XName.Get("dependentAssembly", XmlNamespace); - var dependentAssemblyNodes = mergedDocAssemblyBindingNodes.First().Descendants(dependentAssemblyXName); - Assert.AreEqual(1, dependentAssemblyNodes.Count(), "AssemblyRedirect of TestHost must be present."); - Assert.IsTrue(dependentAssemblyNodes.First().ToString().Contains("Microsoft.VisualStudio.TestPlatform.ObjectModel"), "Correct AssemblyRedirect must be present."); + var dependentAssemblyXName = XName.Get("dependentAssembly", XmlNamespace); + var dependentAssemblyNodes = mergedDocAssemblyBindingNodes.First().Descendants(dependentAssemblyXName); + Assert.AreEqual(1, dependentAssemblyNodes.Count(), "AssemblyRedirect of TestHost must be present."); + Assert.IsTrue(dependentAssemblyNodes.First().ToString().Contains("Microsoft.VisualStudio.TestPlatform.ObjectModel"), "Correct AssemblyRedirect must be present."); - var diagEle = doc.Descendants("system.diagnostics").FirstOrDefault(); - var appSettingsEle = doc.Descendants("appSettings").FirstOrDefault(); + var diagEle = doc.Descendants("system.diagnostics").FirstOrDefault(); + var appSettingsEle = doc.Descendants("appSettings").FirstOrDefault(); - Assert.IsNull(diagEle, "No Diagnostics element must be present as user config does not have it."); - Assert.IsNull(appSettingsEle, "No AppSettings element must be present as user config does not have it."); - } + Assert.IsNull(diagEle, "No Diagnostics element must be present as user config does not have it."); + Assert.IsNull(appSettingsEle, "No AppSettings element must be present as user config does not have it."); + } - [TestMethod] - public void AppDomainEngineInvokerShouldOnlyMergeAssemblyRedirectionsFromTestHost() - { - string appConfig = @" + [TestMethod] + public void AppDomainEngineInvokerShouldOnlyMergeAssemblyRedirectionsFromTestHost() + { + string appConfig = @" @@ -135,39 +136,39 @@ public void AppDomainEngineInvokerShouldOnlyMergeAssemblyRedirectionsFromTestHos "; - var doc = TestableEngineInvoker.MergeConfigXmls(appConfig, testHostConfigXml); + var doc = TestableEngineInvoker.MergeConfigXmls(appConfig, TestHostConfigXml); - var runtimeEle = doc.Descendants("runtime").FirstOrDefault(); + var runtimeEle = doc.Descendants("runtime").FirstOrDefault(); - Assert.AreEqual(0, runtimeEle.Descendants("legacyUnhandledExceptionPolicy").Count(), "legacyUnhandledExceptionPolicy element must NOT be present."); + Assert.AreEqual(0, runtimeEle.Descendants("legacyUnhandledExceptionPolicy").Count(), "legacyUnhandledExceptionPolicy element must NOT be present."); - var probingXName = XName.Get("probing", XmlNamespace); - var probingEleNodes = runtimeEle.Descendants(probingXName); - Assert.AreEqual(1, probingEleNodes.Count(), "Only one Probing element of UserConfig must be present."); - Assert.AreEqual(@"", probingEleNodes.First().ToString(), "Probing element must be correct."); + var probingXName = XName.Get("probing", XmlNamespace); + var probingEleNodes = runtimeEle.Descendants(probingXName); + Assert.AreEqual(1, probingEleNodes.Count(), "Only one Probing element of UserConfig must be present."); + Assert.AreEqual(@"", probingEleNodes.First().ToString(), "Probing element must be correct."); - var assemblyBindingXName = XName.Get("assemblyBinding", XmlNamespace); - var mergedDocAssemblyBindingNodes = runtimeEle.Descendants(assemblyBindingXName); - Assert.AreEqual(1, mergedDocAssemblyBindingNodes.Count(), "AssemblyBinding Ele must be present."); + var assemblyBindingXName = XName.Get("assemblyBinding", XmlNamespace); + var mergedDocAssemblyBindingNodes = runtimeEle.Descendants(assemblyBindingXName); + Assert.AreEqual(1, mergedDocAssemblyBindingNodes.Count(), "AssemblyBinding Ele must be present."); - var dependentAssemblyXName = XName.Get("dependentAssembly", XmlNamespace); - var dependentAssemblyNodes = mergedDocAssemblyBindingNodes.First().Descendants(dependentAssemblyXName); - Assert.AreEqual(2, dependentAssemblyNodes.Count(), "AssemblyBinding of TestHost must be present."); + var dependentAssemblyXName = XName.Get("dependentAssembly", XmlNamespace); + var dependentAssemblyNodes = mergedDocAssemblyBindingNodes.First().Descendants(dependentAssemblyXName); + Assert.AreEqual(2, dependentAssemblyNodes.Count(), "AssemblyBinding of TestHost must be present."); - Assert.IsTrue(dependentAssemblyNodes.ElementAt(0).ToString().Contains("Microsoft.VisualStudio.UnitTests"), "First AssemblyRedirect must be of UserConfig."); - Assert.IsTrue(dependentAssemblyNodes.ElementAt(1).ToString().Contains("Microsoft.VisualStudio.TestPlatform.ObjectModel"), "Second AssemblyRedirect must be from TestHost Node."); + Assert.IsTrue(dependentAssemblyNodes.ElementAt(0).ToString().Contains("Microsoft.VisualStudio.UnitTests"), "First AssemblyRedirect must be of UserConfig."); + Assert.IsTrue(dependentAssemblyNodes.ElementAt(1).ToString().Contains("Microsoft.VisualStudio.TestPlatform.ObjectModel"), "Second AssemblyRedirect must be from TestHost Node."); - var diagEle = doc.Descendants("system.diagnostics").FirstOrDefault(); - var appSettingsEle = doc.Descendants("appSettings").FirstOrDefault(); + var diagEle = doc.Descendants("system.diagnostics").FirstOrDefault(); + var appSettingsEle = doc.Descendants("appSettings").FirstOrDefault(); - Assert.IsNull(diagEle, "No Diagnostics element must be present as user config does not have it."); - Assert.IsNull(appSettingsEle, "No AppSettings element must be present as user config does not have it."); - } + Assert.IsNull(diagEle, "No Diagnostics element must be present as user config does not have it."); + Assert.IsNull(appSettingsEle, "No AppSettings element must be present as user config does not have it."); + } - [TestMethod] - public void AppDomainEngineInvokerShouldUseDiagAndAppSettingsElementsUnMergedFromUserConfig() - { - string appConfig = @" + [TestMethod] + public void AppDomainEngineInvokerShouldUseDiagAndAppSettingsElementsUnMergedFromUserConfig() + { + string appConfig = @" @@ -179,52 +180,51 @@ public void AppDomainEngineInvokerShouldUseDiagAndAppSettingsElementsUnMergedFro "; - var doc = TestableEngineInvoker.MergeConfigXmls(appConfig,testHostConfigXml); + var doc = TestableEngineInvoker.MergeConfigXmls(appConfig, TestHostConfigXml); - var diagEle = doc.Descendants("system.diagnostics").FirstOrDefault(); - var appSettingsEle = doc.Descendants("appSettings").FirstOrDefault(); + var diagEle = doc.Descendants("system.diagnostics").FirstOrDefault(); + var appSettingsEle = doc.Descendants("appSettings").FirstOrDefault(); - Assert.IsNotNull(diagEle, "Diagnostics element must be retained from user config."); - Assert.IsNotNull(appSettingsEle, "AppSettings element must be retained from user config."); + Assert.IsNotNull(diagEle, "Diagnostics element must be retained from user config."); + Assert.IsNotNull(appSettingsEle, "AppSettings element must be retained from user config."); - var diagAddNodes = diagEle.Descendants("add"); - Assert.AreEqual(1, diagAddNodes.Count(), "Only switches from user config should be present."); - Assert.AreEqual(@"", diagAddNodes.First().ToString(), - "Correct Switch must be merged."); + var diagAddNodes = diagEle.Descendants("add"); + Assert.AreEqual(1, diagAddNodes.Count(), "Only switches from user config should be present."); + Assert.AreEqual(@"", diagAddNodes.First().ToString(), + "Correct Switch must be merged."); - var appSettingsAddNodes = appSettingsEle.Descendants("add"); - Assert.AreEqual(1, appSettingsAddNodes.Count(), "Only switches from user config should be present."); - Assert.AreEqual(@"", appSettingsAddNodes.First().ToString(), - "Correct Switch must be merged."); + var appSettingsAddNodes = appSettingsEle.Descendants("add"); + Assert.AreEqual(1, appSettingsAddNodes.Count(), "Only switches from user config should be present."); + Assert.AreEqual(@"", appSettingsAddNodes.First().ToString(), + "Correct Switch must be merged."); + } + + private class TestableEngineInvoker : AppDomainEngineInvoker + { + public TestableEngineInvoker(string testSourcePath) : base(testSourcePath) + { } - private class TestableEngineInvoker : AppDomainEngineInvoker + public static XDocument MergeConfigXmls(string userConfigText, string testHostConfigText) { - public TestableEngineInvoker(string testSourcePath) : base(testSourcePath) - { - } + return MergeApplicationConfigFiles( + XDocument.Load(new MemoryStream(Encoding.UTF8.GetBytes(userConfigText))), + XDocument.Load(new MemoryStream(Encoding.UTF8.GetBytes(testHostConfigText)))); + } - public static XDocument MergeConfigXmls(string userConfigText, string testHostConfigText) - { - return MergeApplicationConfigFiles( - XDocument.Load(new MemoryStream(Encoding.UTF8.GetBytes(userConfigText))), - XDocument.Load(new MemoryStream(Encoding.UTF8.GetBytes(testHostConfigText)))); - } + public AppDomain NewAppDomain => _appDomain; - public AppDomain NewAppDomain => this.appDomain; + public IEngineInvoker ActualInvoker => _actualInvoker; + } - public IEngineInvoker ActualInvoker => this.actualInvoker; - } + private class MockEngineInvoker : MarshalByRefObject, IEngineInvoker + { + public string DomainFriendlyName { get; private set; } = ""; - private class MockEngineInvoker : MarshalByRefObject, IEngineInvoker + public void Invoke(IDictionary argsDictionary) { - public string DomainFriendlyName { get; private set; } - - public void Invoke(IDictionary argsDictionary) - { - this.DomainFriendlyName = AppDomain.CurrentDomain.FriendlyName; - } + DomainFriendlyName = AppDomain.CurrentDomain.FriendlyName; } } +} #endif -} \ No newline at end of file diff --git a/test/testhost.UnitTests/DefaultEngineInvokerTests.cs b/test/testhost.UnitTests/DefaultEngineInvokerTests.cs index 34fb8c9a31..ce72b43937 100644 --- a/test/testhost.UnitTests/DefaultEngineInvokerTests.cs +++ b/test/testhost.UnitTests/DefaultEngineInvokerTests.cs @@ -1,137 +1,136 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace testhost.UnitTests +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.TestHost; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace testhost.UnitTests; + +[TestClass] +public class DefaultEngineInvokerTests { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.TestHost; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - using CommunicationUtilitiesResources = - Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Resources.Resources; - using CoreUtilitiesConstants = Microsoft.VisualStudio.TestPlatform.CoreUtilities.Constants; - - [TestClass] - public class DefaultEngineInvokerTests + private const int ParentProcessId = 27524; + private static readonly IDictionary ArgsDictionary = new Dictionary { - private const int ParentProcessId = 27524; - private static readonly IDictionary argsDictionary = new Dictionary - { - { "--port", "21291" }, - { "--endpoint", "127.0.0.1:021291" }, - { "--role", "client"}, - { "--parentprocessid", ParentProcessId.ToString() }, - { "--diag", "temp.txt"}, - { "--tracelevel", "3"}, - { "--telemetryoptedin", "false"}, - { "--datacollectionport", "21290"} - }; - private static readonly string TimoutErrorMessage = - "testhost process failed to connect to datacollector process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; - - private Mock mockTestRequestHandler; - private Mock mockDataCollectionTestCaseEventSender; - private Mock mockProcssHelper; - private DefaultEngineInvoker engineInvoker; - - public DefaultEngineInvokerTests() - { - this.mockDataCollectionTestCaseEventSender = new Mock(); - this.mockTestRequestHandler = new Mock(); - this.mockProcssHelper = new Mock(); - this.engineInvoker = new DefaultEngineInvoker( - this.mockTestRequestHandler.Object, - this.mockDataCollectionTestCaseEventSender.Object, - this.mockProcssHelper.Object); - this.mockTestRequestHandler.Setup(h => h.WaitForRequestSenderConnection(It.IsAny())).Returns(true); - this.mockDataCollectionTestCaseEventSender.Setup(s => s.WaitForRequestSenderConnection(It.IsAny())).Returns(true); - } + { "--port", "21291" }, + { "--endpoint", "127.0.0.1:021291" }, + { "--role", "client"}, + { "--parentprocessid", ParentProcessId.ToString(CultureInfo.InvariantCulture) }, + { "--diag", "temp.txt"}, + { "--tracelevel", "3"}, + { "--telemetryoptedin", "false"}, + { "--datacollectionport", "21290"} + }; + private static readonly string TimeoutErrorMessage = + "testhost process failed to connect to datacollector process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout."; + + private readonly Mock _mockTestRequestHandler; + private readonly Mock _mockDataCollectionTestCaseEventSender; + private readonly Mock _mockProcessHelper; + private readonly DefaultEngineInvoker _engineInvoker; + + public DefaultEngineInvokerTests() + { + _mockDataCollectionTestCaseEventSender = new Mock(); + _mockTestRequestHandler = new Mock(); + _mockProcessHelper = new Mock(); + _engineInvoker = new DefaultEngineInvoker( + _mockTestRequestHandler.Object, + _mockDataCollectionTestCaseEventSender.Object, + _mockProcessHelper.Object); + _mockTestRequestHandler.Setup(h => h.WaitForRequestSenderConnection(It.IsAny())).Returns(true); + _mockDataCollectionTestCaseEventSender.Setup(s => s.WaitForRequestSenderConnection(It.IsAny())).Returns(true); + } - [TestCleanup] - public void Cleanup() - { - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); - } + [TestCleanup] + public void Cleanup() + { + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, string.Empty); + } - [TestMethod] - public void InvokeShouldWaitForDefaultTimeoutIfNoEnvVariableSetDuringDataCollectorConnection() - { - this.engineInvoker.Invoke(argsDictionary); + [TestMethod] + public void InvokeShouldWaitForDefaultTimeoutIfNoEnvVariableSetDuringDataCollectorConnection() + { + _engineInvoker.Invoke(ArgsDictionary); - this.mockDataCollectionTestCaseEventSender.Verify(s => s.WaitForRequestSenderConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)); - } + _mockDataCollectionTestCaseEventSender.Verify(s => s.WaitForRequestSenderConnection(EnvironmentHelper.DefaultConnectionTimeout * 1000)); + } - [TestMethod] - public void InvokeShouldWaitBasedOnTimeoutEnvVariableDuringDataCollectorConnection() - { - var timeout = 10; - Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, timeout.ToString()); - this.engineInvoker.Invoke(argsDictionary); + [TestMethod] + public void InvokeShouldWaitBasedOnTimeoutEnvVariableDuringDataCollectorConnection() + { + var timeout = 10; + Environment.SetEnvironmentVariable(EnvironmentHelper.VstestConnectionTimeout, timeout.ToString(CultureInfo.InvariantCulture)); + _engineInvoker.Invoke(ArgsDictionary); - this.mockDataCollectionTestCaseEventSender.Verify(s => s.WaitForRequestSenderConnection(timeout * 1000)); - } + _mockDataCollectionTestCaseEventSender.Verify(s => s.WaitForRequestSenderConnection(timeout * 1000)); + } - [TestMethod] - public void InvokeShouldThrowExceptionIfDataCollectorConnection() - { - this.mockDataCollectionTestCaseEventSender.Setup(s => s.WaitForRequestSenderConnection(It.IsAny())).Returns(false); - var message = Assert.ThrowsException(() => this.engineInvoker.Invoke(argsDictionary)).Message; + [TestMethod] + public void InvokeShouldThrowExceptionIfDataCollectorConnection() + { + _mockDataCollectionTestCaseEventSender.Setup(s => s.WaitForRequestSenderConnection(It.IsAny())).Returns(false); + var message = Assert.ThrowsException(() => _engineInvoker.Invoke(ArgsDictionary)).Message; - Assert.AreEqual(message, DefaultEngineInvokerTests.TimoutErrorMessage); - } + Assert.AreEqual(message, TimeoutErrorMessage); + } - [TestMethod] - public void InvokeShouldSetParentProcessExistCallback() - { - this.engineInvoker.Invoke(argsDictionary); + [TestMethod] + public void InvokeShouldSetParentProcessExistCallback() + { + _engineInvoker.Invoke(ArgsDictionary); - this.mockProcssHelper.Verify(h => h.SetExitCallback(ParentProcessId, It.IsAny>())); - } + _mockProcessHelper.Verify(h => h.SetExitCallback(ParentProcessId, It.IsAny>())); + } - [TestMethod] - public void InvokeShouldInitializeTraceWithCorrectTraceLevel() - { - // Setting EqtTrace.TraceLevel to a value other than info. + [TestMethod] + public void InvokeShouldInitializeTraceWithCorrectTraceLevel() + { + // Setting EqtTrace.TraceLevel to a value other than info. #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Verbose; + EqtTrace.TraceLevel = TraceLevel.Verbose; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; + EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; #endif - this.engineInvoker.Invoke(argsDictionary); + _engineInvoker.Invoke(ArgsDictionary); - // Verify - Assert.AreEqual(TraceLevel.Info, (TraceLevel)EqtTrace.TraceLevel); - } + // Verify + Assert.AreEqual(TraceLevel.Info, (TraceLevel)EqtTrace.TraceLevel); + } - [TestMethod] - public void InvokeShouldInitializeTraceWithVerboseTraceLevelIfInvalidTraceLevelPassed() - { - // Setting EqtTrace.TraceLevel to a value other than info. + [TestMethod] + public void InvokeShouldInitializeTraceWithVerboseTraceLevelIfInvalidTraceLevelPassed() + { + // Setting EqtTrace.TraceLevel to a value other than info. #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Warning; + EqtTrace.TraceLevel = TraceLevel.Warning; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Warning; + EqtTrace.TraceLevel = PlatformTraceLevel.Warning; #endif - try - { - argsDictionary["--tracelevel"] = "5"; // int value which is not defined in TraceLevel. - this.engineInvoker.Invoke(argsDictionary); - } - finally{ - argsDictionary["--tracelevel"] = "3"; // Setting to default value of 3. - } - - // Verify - Assert.AreEqual(TraceLevel.Verbose, (TraceLevel)EqtTrace.TraceLevel); + try + { + ArgsDictionary["--tracelevel"] = "5"; // int value which is not defined in TraceLevel. + _engineInvoker.Invoke(ArgsDictionary); + } + finally + { + ArgsDictionary["--tracelevel"] = "3"; // Setting to default value of 3. } + + // Verify + Assert.AreEqual(TraceLevel.Verbose, (TraceLevel)EqtTrace.TraceLevel); } } diff --git a/test/testhost.UnitTests/DummyTests.cs b/test/testhost.UnitTests/DummyTests.cs index d7d43bd873..e241f2c1f4 100644 --- a/test/testhost.UnitTests/DummyTests.cs +++ b/test/testhost.UnitTests/DummyTests.cs @@ -1,19 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace testhost.UnitTests -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace testhost.UnitTests; - [TestClass] - public class DummyTests +[TestClass] +public class DummyTests +{ + /// + /// This test is added as at least one test is required for dotnet core tfm for test scripts to succeed. + /// + [TestMethod] + public void DummyUnitTest() { - /// - /// This test is added as at least one test is required for dotnet core tfm for test scripts to succeed. - /// - [TestMethod] - public void DummyUnitTest() - { - } } } diff --git a/test/testhost.UnitTests/GlobalSuppressions.cs b/test/testhost.UnitTests/GlobalSuppressions.cs new file mode 100644 index 0000000000..3294d71d53 --- /dev/null +++ b/test/testhost.UnitTests/GlobalSuppressions.cs @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "namespace", Target = "~N:testhost.UnitTests")] diff --git a/test/testhost.UnitTests/Program.cs b/test/testhost.UnitTests/Program.cs deleted file mode 100644 index f51a7b7fe2..0000000000 --- a/test/testhost.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace testhost.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/testhost.UnitTests/Properties/AssemblyInfo.cs b/test/testhost.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index d62a61680b..0000000000 --- a/test/testhost.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("testhost.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("124dd88e-5283-4737-8395-d7c1facbfbb9")] diff --git a/test/testhost.UnitTests/TestHostTraceListenerTests.cs b/test/testhost.UnitTests/TestHostTraceListenerTests.cs index fa070f1e59..ef2624f54a 100644 --- a/test/testhost.UnitTests/TestHostTraceListenerTests.cs +++ b/test/testhost.UnitTests/TestHostTraceListenerTests.cs @@ -1,159 +1,161 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -// define trace and debug to trigger the Debug.Assert calls even when we build in Release +// define trace and debug to trigger the TPDebug.Assert calls even when we build in Release #define DEBUG -namespace testhost.UnitTests -{ #if NETCOREAPP - using Microsoft.VisualStudio.TestPlatform.TestHost; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System.Collections.Generic; - using System.Diagnostics; - [TestClass] - public class TestHostTraceListenerTests - { - TraceListener[] listeners; +using System.Collections.Generic; +using System.Diagnostics; - [TestInitialize()] - public void Initialize() - { - this.listeners = new TraceListener[Trace.Listeners.Count]; - Trace.Listeners.CopyTo(this.listeners, 0); - // not using the TestHostTraceListener.Setup method here - // because that detects only default trace listeners and there won't - // be any when this is in production, so this would end up testing against - // an older version of the trace listener - Trace.Listeners.Clear(); - Trace.Listeners.Add(new TestHostTraceListener()); - } +using Microsoft.VisualStudio.TestPlatform.TestHost; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestCleanup()] - public void Cleanup() { - Trace.Listeners.Clear(); - foreach(var listener in this.listeners) - { - Trace.Listeners.Add(listener); - } - } +namespace testhost.UnitTests; - [TestMethod] - [ExpectedException(typeof(DebugAssertException))] - public void DebugAssertThrowsDebugAssertException() - { - Debug.Assert(false); - } +[TestClass] +public class TestHostTraceListenerTests +{ + private readonly TraceListener[] _listeners; - [TestMethod] - [ExpectedException(typeof(DebugAssertException))] - public void DebugFailThrowsDebugAssertException() - { - Debug.Fail("fail"); - } + public TestHostTraceListenerTests() + { + _listeners = new TraceListener[Trace.Listeners.Count]; + Trace.Listeners.CopyTo(_listeners, 0); + // not using the TestHostTraceListener.Setup method here + // because that detects only default trace listeners and there won't + // be any when this is in production, so this would end up testing against + // an older version of the trace listener + Trace.Listeners.Clear(); + Trace.Listeners.Add(new TestHostTraceListener()); + } - [TestMethod] - [ExpectedException(typeof(DebugAssertException))] - public void TraceAssertThrowsDebugAssertException() + [TestCleanup] + public void Cleanup() + { + Trace.Listeners.Clear(); + foreach (var listener in _listeners) { - Trace.Assert(false); + Trace.Listeners.Add(listener); } + } - [TestMethod] - [ExpectedException(typeof(DebugAssertException))] - public void TraceFailThrowsDebugAssertException() - { - Trace.Fail("fail"); - } + [TestMethod] + [ExpectedException(typeof(DebugAssertException))] + public void DebugAssertThrowsDebugAssertException() + { + Debug.Assert(false); + } - [TestMethod] - public void TraceWriteDoesNotFailTheTest() - { - Trace.Write("hello"); - } + [TestMethod] + [ExpectedException(typeof(DebugAssertException))] + public void DebugFailThrowsDebugAssertException() + { + Debug.Fail("fail"); + } - [TestMethod] - public void TraceWriteLineDoesNotFailTheTest() - { - Trace.WriteLine("hello"); - } + [TestMethod] + [ExpectedException(typeof(DebugAssertException))] + public void TraceAssertThrowsDebugAssertException() + { + Trace.Assert(false); + } - [TestMethod] - public void DebugWriteDoesNotFailTheTest() - { - Debug.Write("hello"); - } + [TestMethod] + [ExpectedException(typeof(DebugAssertException))] + public void TraceFailThrowsDebugAssertException() + { + Trace.Fail("fail"); + } - [TestMethod] - public void DebugWriteLineDoesNotFailTheTest() - { - Debug.WriteLine("hello"); - } + [TestMethod] + public void TraceWriteDoesNotFailTheTest() + { + Trace.Write("hello"); } - [TestClass] - public class TestHostTraceListenerRegistrationTests + [TestMethod] + public void TraceWriteLineDoesNotFailTheTest() { - TraceListener[] listeners; + Trace.WriteLine("hello"); + } - [TestInitialize()] - public void Initialize() - { - this.listeners = new TraceListener[Trace.Listeners.Count]; - Trace.Listeners.CopyTo(this.listeners, 0); - } + [TestMethod] + public void DebugWriteDoesNotFailTheTest() + { + Debug.Write("hello"); + } - [TestCleanup()] - public void Cleanup() - { - Trace.Listeners.Clear(); - foreach (var listener in this.listeners) - { - Trace.Listeners.Add(listener); - } - } + [TestMethod] + public void DebugWriteLineDoesNotFailTheTest() + { + Debug.WriteLine("hello"); + } +} + +[TestClass] +public class TestHostTraceListenerRegistrationTests +{ + private readonly TraceListener[] _listeners; + + public TestHostTraceListenerRegistrationTests() + { + _listeners = new TraceListener[Trace.Listeners.Count]; + Trace.Listeners.CopyTo(_listeners, 0); + } - [TestMethod] - public void SetupReplacesDefaultTraceListener() + [TestCleanup] + public void Cleanup() + { + Trace.Listeners.Clear(); + foreach (var listener in _listeners) { - Trace.Listeners.Clear(); - Trace.Listeners.Add(new DefaultTraceListener()); - TestHostTraceListener.Setup(); - - // this is what will happen in the majority of cases, there will be a single - // trace listener that will be the default trace listener and we will replace it - // with ours - Assert.IsInstanceOfType(Trace.Listeners[0], typeof(TestHostTraceListener)); + Trace.Listeners.Add(listener); } + } - [TestMethod] - public void SetupKeepsNonDefaultTraceListeners() + [TestMethod] + public void SetupReplacesDefaultTraceListener() + { + Trace.Listeners.Clear(); + Trace.Listeners.Add(new DefaultTraceListener()); + TestHostTraceListener.Setup(); + + // this is what will happen in the majority of cases, there will be a single + // trace listener that will be the default trace listener and we will replace it + // with ours + Assert.IsInstanceOfType(Trace.Listeners[0], typeof(TestHostTraceListener)); + } + + [TestMethod] + public void SetupKeepsNonDefaultTraceListeners() + { + Trace.Listeners.Clear(); + Trace.Listeners.Add(new DummyTraceListener()); + Trace.Listeners.Add(new DefaultTraceListener()); + Trace.Listeners.Add(new DummyTraceListener()); + TestHostTraceListener.Setup(); + + Assert.IsInstanceOfType(Trace.Listeners[0], typeof(DummyTraceListener)); + Assert.IsInstanceOfType(Trace.Listeners[1], typeof(TestHostTraceListener)); + Assert.IsInstanceOfType(Trace.Listeners[2], typeof(DummyTraceListener)); + } + + private class DummyTraceListener : TraceListener + { + public List Lines { get; } = new(); + + public override void Write(string? message) { - Trace.Listeners.Clear(); - Trace.Listeners.Add(new DummyTraceListener()); - Trace.Listeners.Add(new DefaultTraceListener()); - Trace.Listeners.Add(new DummyTraceListener()); - TestHostTraceListener.Setup(); - - Assert.IsInstanceOfType(Trace.Listeners[0], typeof(DummyTraceListener)); - Assert.IsInstanceOfType(Trace.Listeners[1], typeof(TestHostTraceListener)); - Assert.IsInstanceOfType(Trace.Listeners[2], typeof(DummyTraceListener)); + Lines.Add(message); } - private class DummyTraceListener : TraceListener + public override void WriteLine(string? message) { - public List Lines { get; } = new List(); - public override void Write(string message) - { - Lines.Add(message); - } - - public override void WriteLine(string message) - { - Lines.Add(message); - } + Lines.Add(message); } } -#endif } + +#endif diff --git a/test/testhost.UnitTests/UnitTestClientTests.cs b/test/testhost.UnitTests/UnitTestClientTests.cs index 840e526daa..e3c43ac440 100644 --- a/test/testhost.UnitTests/UnitTestClientTests.cs +++ b/test/testhost.UnitTests/UnitTestClientTests.cs @@ -1,44 +1,116 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.TestExecutor.Tests +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.TestHost; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.TestExecutor.Tests; + +[TestClass] +public class UnitTestClientTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; + [TestMethod] + public void SplitArgumentsShouldHonorDoubleQuotes() + { + var expected = new string[] { "--port", "8080", "--endpoint", "127.0.0.1:8020", "--diag", "\"abc txt\"" }; + var argument = "--port 8080 --endpoint 127.0.0.1:8020 --diag \"abc txt\""; + string[] argsArr = UnitTestClient.SplitArguments(argument); + + Assert.AreEqual(6, argsArr.Length); + CollectionAssert.AreEqual(argsArr, expected); + } + + [TestMethod] + public void SplitArgumentsShouldHonorSingleQuotes() + { + var expected = new string[] { "--port", "8080", "--endpoint", "127.0.0.1:8020", "--diag", "\'abc txt\'" }; + var argument = "--port 8080 --endpoint 127.0.0.1:8020 --diag \'abc txt\'"; + string[] argsArr = UnitTestClient.SplitArguments(argument); + + Assert.AreEqual(6, argsArr.Length); + CollectionAssert.AreEqual(expected, argsArr); + } + + [TestMethod] + public void SplitArgumentsShouldSplitAtSpacesOutsideOfQuotes() + { + var expected = new string[] { "--port", "8080", "--endpoint", "127.0.0.1:8020", "--diag", "abc", "txt" }; + var argument = "--port 8080 --endpoint 127.0.0.1:8020 --diag abc txt"; + string[] argsArr = UnitTestClient.SplitArguments(argument); + + Assert.AreEqual(7, argsArr.Length); + CollectionAssert.AreEqual(expected, argsArr); + } - [TestClass] - public class UnitTestClientTests + [TestMethod] + public void RunWhenCliUiLanguageIsSetChangesCultureAndFlowsOverride() { - [TestMethod] - public void SplitArgumentsShouldHonorDoubleQuotes() - { - var expected = new string[] { "--port", "8080", "--endpoint", "127.0.0.1:8020", "--diag", "\"abc txt\"" }; - var argument = "--port 8080 --endpoint 127.0.0.1:8020 --diag \"abc txt\""; - string[] argsArr = UnitTestClient.SplitArguments(argument); - - Assert.AreEqual(6, argsArr.Length); - CollectionAssert.AreEqual(argsArr, expected); - } - - [TestMethod] - public void SplitArgumentsShouldHonorSingleQuotes() - { - var expected = new string[] { "--port", "8080", "--endpoint", "127.0.0.1:8020", "--diag", "\'abc txt\'" }; - var argument = "--port 8080 --endpoint 127.0.0.1:8020 --diag \'abc txt\'"; - string[] argsArr = UnitTestClient.SplitArguments(argument); - - Assert.AreEqual(6, argsArr.Length); - CollectionAssert.AreEqual(expected, argsArr); - } - - [TestMethod] - public void SplitArgumentsShouldSplitAtSpacesOutsideOfQuotes() - { - var expected = new string[] { "--port", "8080", "--endpoint", "127.0.0.1:8020", "--diag", "abc", "txt" }; - var argument = "--port 8080 --endpoint 127.0.0.1:8020 --diag abc txt"; - string[] argsArr = UnitTestClient.SplitArguments(argument); - - Assert.AreEqual(7, argsArr.Length); - CollectionAssert.AreEqual(expected, argsArr); - } + // Arrange + var culture = new CultureInfo("fr-fr"); + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE")).Returns(culture.Name); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + Assert.ThrowsException(() => Program.Run(null, new(envVarMock.Object, lang => threadCultureWasSet = lang.Equals(culture)))); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("VSLANG", culture.LCID.ToString(CultureInfo.InvariantCulture)), Times.Once); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void RunWhenVsLangIsSetChangesCultureAndFlowsOverride() + { + // Arrange + var culture = new CultureInfo("fr-fr"); + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable("VSLANG")).Returns(culture.LCID.ToString(CultureInfo.InvariantCulture)); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + Assert.ThrowsException(() => Program.Run(null, new(envVarMock.Object, lang => threadCultureWasSet = lang.Equals(culture)))); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Exactly(2)); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + envVarMock.Verify(x => x.SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", culture.Name), Times.Once); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void RunWhenNoCultureEnvVarSetDoesNotChangeCultureNorFlowsOverride() + { + // Arrange + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable(It.IsAny())).Returns(default(string)); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + Assert.ThrowsException(() => Program.Run(null, new(envVarMock.Object, lang => threadCultureWasSet = true))); + + // Assert + Assert.IsFalse(threadCultureWasSet, "DefaultThreadCurrentUICulture was set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("VSLANG", It.IsAny()), Times.Never); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", It.IsAny()), Times.Never); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Never); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", It.IsAny()), Times.Never); } } diff --git a/test/testhost.UnitTests/testhost.UnitTests.csproj b/test/testhost.UnitTests/testhost.UnitTests.csproj index 48525ba029..fd26e4ce51 100644 --- a/test/testhost.UnitTests/testhost.UnitTests.csproj +++ b/test/testhost.UnitTests/testhost.UnitTests.csproj @@ -1,24 +1,18 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe testhost.UnitTests - x64 + x64 - - - - - - + + - + diff --git a/test/vstest.ProgrammerTests/BasicRunAndDiscovery.cs b/test/vstest.ProgrammerTests/BasicRunAndDiscovery.cs new file mode 100644 index 0000000000..79f3926154 --- /dev/null +++ b/test/vstest.ProgrammerTests/BasicRunAndDiscovery.cs @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using FluentAssertions; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; + +using vstest.ProgrammerTests.Fakes; +using Intent; +using System.Diagnostics.CodeAnalysis; + +#pragma warning disable IDE1006 // Naming Styles +namespace vstest.ProgrammerTests; +#pragma warning restore IDE1006 // Naming Styles + +// Tests are run by Intent library that is executed from our Program.Main. To debug press F5 in VS, and maybe mark just a single test with [Only]. +// To just run, press Ctrl+F5 to run without debugging. It will use short timeout for abort in case something is wrong with your test. + +public class BasicRunAndDiscovery +{ + [Test(@" + Given a test assembly with 108 tests. + + When we run tests. + + Then all 108 tests are executed. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task A() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) + .WithArchitecture(Architecture.X64) + .WithTestCount(108, 10) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost1Process.Exit()) + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + fixture.AddTestHostFixtures(testhost1); + + var testRequestManager = fixture.BuildTestRequestManager(); + + // -- act + var testRunRequestPayload = new TestRunRequestPayload + { + Sources = new List { mstest1Dll.Path }, + + RunSettings = $"" + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.RunTests(testRunRequestPayload, testHostLauncher: null, fixture.TestRunEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + fixture.ExecutedTests.Should().HaveCount(mstest1Dll.TestCount); + } + + [Test(@" + Given multple test assemblies that use the same target framework. + + When we run tests. + + Then all tests from all assemblies are run. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task B() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) + .WithArchitecture(Architecture.X64) + .WithTestCount(108, 10) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost1Process.Exit()) + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net5) + .WithArchitecture(Architecture.X64) + .WithTestCount(50, 8) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, f => f.Process.Exit()) + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + // -- act + var testRunRequestPayload = new TestRunRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + + RunSettings = $"" + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.RunTests(testRunRequestPayload, testHostLauncher: null, fixture.TestRunEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + fixture.ExecutedTests.Should().HaveCount(mstest1Dll.TestCount + mstest2Dll.TestCount); + } +} + +// Test and improvmement ideas: +// TODO: passing null runsettings does not fail fast, instead it fails in Fakes settings code +// TODO: passing empty string fails in the xml parser code +// TODO: passing null sources and null testcases does not fail fast +// TODO: Just calling Exit, Close won't stop the run, we will keep waiting for test run to complete, I think in real life when we exit then Disconnected will be called on the vstest.console side, leading to abort flow. +//.StartTestExecutionWithSources(new FakeMessage(MessageType.TestMessage, new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "Loading type failed." }), afterAction: f => { /*f.Process.Exit();*/ f.FakeCommunicationEndpoint.Disconnect(); }) diff --git a/test/vstest.ProgrammerTests/Fakes/ActionRecord.cs b/test/vstest.ProgrammerTests/Fakes/ActionRecord.cs new file mode 100644 index 0000000000..dede5a031a --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/ActionRecord.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +/// +/// Contains information about something that happened, e.g. when a runtime provider resolve was called. +/// +/// +internal class ActionRecord +{ + public T Value { get; } + public string StackTrace { get; } + public ActionRecord(T value) + { + StackTrace = Environment.StackTrace; + Value = value; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/DebugOptions.cs b/test/vstest.ProgrammerTests/Fakes/DebugOptions.cs new file mode 100644 index 0000000000..9e461e0093 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/DebugOptions.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#pragma warning disable IDE1006 // Naming Styles +// For some reason only this occurence of vstest is flagged in build, and no other. +namespace vstest.ProgrammerTests.Fakes; +#pragma warning restore IDE1006 // Naming Styles + +internal class DebugOptions +{ + public const int DefaultTimeout = 5; + // TODO: This setting is actually quite pointless, because I cannot come up with + // a useful way to abort quickly enough when debugger is attached and I am just running my tests (pressing F5) + // but at the same time not abort when I am in the middle of debugging some behavior. Maybe looking at debugger, + // and asking it if any breakpoints were hit / are set. But that is difficult. + // + // So normally I press F5 to investigate, but Ctrl+F5 (run without debugger), to run tests. + public const int DefaultDebugTimeout = 30 * 60; + public const bool DefaultBreakOnAbort = true; + public int Timeout { get; init; } = DefaultTimeout; + public int DebugTimeout { get; init; } = DefaultDebugTimeout; + public bool BreakOnAbort { get; init; } = DefaultBreakOnAbort; +} diff --git a/test/vstest.ProgrammerTests/Fakes/EventRecord.cs b/test/vstest.ProgrammerTests/Fakes/EventRecord.cs new file mode 100644 index 0000000000..0bfcd03776 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/EventRecord.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal class EventRecord +{ + public object? Sender { get; } + + public T Data { get; } + + public EventRecord(object? sender, T data) + { + Sender = sender; + Data = data; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeAssemblyMetadataProvider.cs b/test/vstest.ProgrammerTests/Fakes/FakeAssemblyMetadataProvider.cs new file mode 100644 index 0000000000..cf1c4dfbb3 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeAssemblyMetadataProvider.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Runtime.Versioning; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeAssemblyMetadataProvider : IAssemblyMetadataProvider +{ + public FakeFileHelper FakeFileHelper { get; } + + public FakeErrorAggregator FakeErrorAggregator { get; } + + public FakeAssemblyMetadataProvider(FakeFileHelper fakeFileHelper, FakeErrorAggregator fakeErrorAggregator) + { + FakeFileHelper = fakeFileHelper; + FakeErrorAggregator = fakeErrorAggregator; + } + + public Architecture GetArchitecture(string filePath) + { + var file = FakeFileHelper.GetFakeFile(filePath); + return file.Architecture; + } + + public FrameworkName GetFrameworkName(string filePath) + { + var file = FakeFileHelper.GetFakeFile(filePath); + return file.FrameworkName; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeCommunicationChannel.cs b/test/vstest.ProgrammerTests/Fakes/FakeCommunicationChannel.cs new file mode 100644 index 0000000000..5c2ad3c86a --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeCommunicationChannel.cs @@ -0,0 +1,222 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Concurrent; +using System.Diagnostics; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal abstract class FakeCommunicationChannel : ICommunicationChannel +{ + public FakeCommunicationChannel(int id) + { + Id = id; + } + + public int Id { get; } + public CancellationTokenSource CancellationTokenSource { get; } = new(); + public BlockingCollection InQueue { get; } = new(); + public BlockingCollection OutQueue { get; } = new(); + + /// + /// True if we encountered unexpected message (e.g. unknown message, message out of order) or when we sent all our prepared responses, and there were still more requests coming. + /// + public bool Faulted { get; protected set; } + + TrackableEvent ICommunicationChannel.MessageReceived => throw new NotImplementedException(); + + #region ICommunicationChannel + // The naming for ICommunicationChannel is a bit confusing when this is implemented in-process. + // Normally one side in one process would have one end of the communication channel, + // and would use Send to pass message to another process. The other side would get notified + // about new data by NotifyDataAvailable, read the data there, and send them to other consumers + // using MessageReceived event. These consumers would then call Send, the channel and post the data + // to the other process. The other process would recieve the data and be notified by MessageReceived. + // + // But when we are in the same process, one side sends data using Send. We recieve them here by reading + // them from the queue (NotifyDataAvailable is not used, because we monitor the queue directly here, instead of + // in communication manager). And then we reply back to the sender, by invoking MessageReceived. + + public event EventHandler? MessageReceived; + + public void Dispose() + { + CancellationTokenSource.Cancel(); + InQueue.CompleteAdding(); + OutQueue.CompleteAdding(); + } + + public Task NotifyDataAvailable() + { + // This is used only by communication manager. vstest.console does not use communication manager. + throw new NotImplementedException(); + } + + public Task Send(string data) + { + InQueue.Add(data); + return Task.CompletedTask; + } + #endregion + + public void OnMessageReceived(object sender, MessageReceivedEventArgs eventArgs) + { + // This is still a race condition. In real code we solve this via SafeInvoke that does null check + // and catches the exception. In this code I prefer doing it this way, to see if it is fragile. + MessageReceived?.Invoke(this, eventArgs); + } + + public Task NotifyDataAvailable(CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } +} + +internal class FakeCommunicationChannel : FakeCommunicationChannel, ICommunicationChannel +{ + + /// + /// Queue of MessageType of the incoming request, and the response that will be sent back. + /// + public Queue> NextResponses { get; } = new(); + public FakeErrorAggregator FakeErrorAggregator { get; } + public FakeMessage? PendingMessage { get; private set; } + public TContext? Context { get; private set; } + public List> ProcessedMessages { get; } = new(); + public Task? ProcessIncomingMessagesTask { get; private set; } + public Task? ProcessOutgoingMessagesTask { get; private set; } + + public FakeCommunicationChannel(List> responses, FakeErrorAggregator fakeErrorAggregator, int id) : base(id) + { + FakeErrorAggregator = fakeErrorAggregator; + responses.ForEach(NextResponses.Enqueue); + } + + public void Start(TContext context) + { + Context = context; + ProcessIncomingMessagesTask = Task.Run(() => ProcessIncomingMessages(context), CancellationTokenSource.Token); + ProcessOutgoingMessagesTask = Task.Run(ProcessOutgoingMessages, CancellationTokenSource.Token); + } + + private void ProcessOutgoingMessages() + { + var token = CancellationTokenSource.Token; + while (!token.IsCancellationRequested) + { + try + { + // TODO: better name for the property? This is message that we are currently trying to send. + PendingMessage = OutQueue.Take(token); + OnMessageReceived(this, new MessageReceivedEventArgs { Data = PendingMessage.SerializedMessage }); + PendingMessage = null; + } + catch (OperationCanceledException) { } + catch (Exception ex) + { + FakeErrorAggregator.Add(ex); + } + } + } + + private void ProcessIncomingMessages(TContext context) + { + var token = CancellationTokenSource.Token; + while (!token.IsCancellationRequested) + { + try + { + var rawMessage = InQueue.Take(token); + var requestMessage = JsonDataSerializer.Instance.DeserializeMessage(rawMessage); + + if (Faulted) + { + // We already failed, when there are more requests coming, just save them and respond with error. We want to avoid + // a situation where server ignores our error message and responds with another request, for which we accidentally + // have the right answer in queue. + // + // E.g. We have VersionCheck, TestRunStart prepared, and server sends: VersionCheck, TestInitialize, TestRunStart. + // The first request has a valid response. The next TestInitialize does not have a valid response and errors out, + // but the server ignores it, and sends TestRunStart, which would normally have a prepared response, and lead to + // possibly overlooking the error response to TestInitialize. + // + // With this check in place we will not respond to TestRunStart with success, but with error. + // TODO: Better way to map MessageType and the payload type. + // TODO: simpler way to report error, and add it to the error aggregator + var errorMessage = $"FakeCommunicationChannel: FakeCommunicationChannel: Got message {requestMessage.MessageType}. But a message that was unexptected was received previously and the channel is now faulted. Review {nameof(ProcessedMessages)}, and {nameof(NextResponses)}."; + var exception = new Exception(errorMessage); + FakeErrorAggregator.Add(exception); + var errorResponse = new FakeMessage(MessageType.TestMessage, new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = errorMessage }); + ProcessedMessages.Add(new RequestResponsePair(requestMessage, errorResponse)); + Faulted = true; + OutQueue.Add(errorResponse); + } + + // Just peek at it so we can keep the message on the the queue in case of error. + if (!NextResponses.TryPeek(out var nextResponsePair)) + { + // If there are no more prepared responses then return protocol error. + var errorMessage = $"FakeCommunicationChannel: Got message {requestMessage.MessageType}, but no more requests were expected, because there are no more responses in {nameof(NextResponses)}."; + var exception = new Exception(errorMessage); + FakeErrorAggregator.Add(exception); + var errorResponse = new FakeMessage(MessageType.ProtocolError, new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = errorMessage }); + ProcessedMessages.Add(new RequestResponsePair(requestMessage, errorResponse)); + Faulted = true; + OutQueue.Add(errorResponse); + } + else if (nextResponsePair.Request != requestMessage.MessageType) + { + // If the incoming message does not match what we expected return protocol error. The lsat message will remain in the + // NextResponses queue. + var errorMessage = $"FakeCommunicationChannel: Excpected message {nextResponsePair.Request} but got {requestMessage.MessageType}."; + var exception = new Exception(errorMessage); + FakeErrorAggregator.Add(exception); + var errorResponse = new FakeMessage(MessageType.ProtocolError, new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = errorMessage }); + ProcessedMessages.Add(new RequestResponsePair(requestMessage, errorResponse)); + Faulted = true; + OutQueue.Add(errorResponse); + } + else + { + var responsePair = NextResponses.Dequeue(); + if (responsePair.Debug && Debugger.IsAttached) + { + // We are about to send an interesting message + Debugger.Break(); + } + + responsePair.BeforeAction?.Invoke(context); + var responses = responsePair.Responses; + ProcessedMessages.Add(new RequestResponsePair(requestMessage, responses, false)); + + foreach (var response in responses) + { + // If we created a pair with NoResponse message, we won't send that back to the server. + if (response != FakeMessage.NoResponse) + { + OutQueue.Add(response); + } + } + + responsePair.AfterAction?.Invoke(context); + } + } + catch (OperationCanceledException) { } + catch (Exception ex) + { + FakeErrorAggregator.Add(ex); + } + } + } + + public override string? ToString() + { + return NextResponses.Peek()?.ToString(); + } +} + diff --git a/test/vstest.ProgrammerTests/Fakes/FakeCommunicationEndpoint.cs b/test/vstest.ProgrammerTests/Fakes/FakeCommunicationEndpoint.cs new file mode 100644 index 0000000000..5ad2ec958c --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeCommunicationEndpoint.cs @@ -0,0 +1,79 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeCommunicationEndpoint : ICommunicationEndPoint +{ + private bool _stopped; + + public FakeCommunicationEndpoint(FakeCommunicationChannel fakeCommunicationChannel, FakeErrorAggregator fakeErrorAggregator) + { + Channel = fakeCommunicationChannel; + FakeErrorAggregator = fakeErrorAggregator; + TestHostConnectionInfo = new TestHostConnectionInfo + { + Endpoint = $"127.0.0.1:{fakeCommunicationChannel.Id}", + Role = ConnectionRole.Client, + Transport = Transport.Sockets, + }; + } + + public FakeErrorAggregator FakeErrorAggregator { get; } + public FakeCommunicationChannel Channel { get; } + public TestHostConnectionInfo TestHostConnectionInfo { get; } + + /// + /// Notify the caller that we disconnected, this happens if process exits unexpectedly and leads to abort flow. + /// In success case use Stop instead, to just "close" the channel, because the other side already disconnected from us + /// and told us to tear down. + /// + public void Disconnect() + { + Disconnected?.Invoke(this, new DisconnectedEventArgs()); + _stopped = true; + } + + #region ICommunicationEndPoint + + public event EventHandler? Connected; + public event EventHandler? Disconnected; + + public string Start(string endPoint) + { + // In normal run this endpoint can be a client or a server. When we are a client we will get an address and a port and + // we will try to connect to it. + // If we are a server, we will get an address and port 0, which means we should figure out a port that is free + // and return the address and port back to the caller. + // + // In our fake scenario we know the "port" from the get go, we set it to an id that was given to the testhost + // because that is currently the only way for us to check if we are connecting to the expected fake testhost + // that has a list of canned responses, which must correlate with the requests. So e.g. if we get request for mstest1.dll + // we should return the responses we have prepared for mstest1.dll, and not for mstest2.dll. + // + // We use the port number because the rest of the IP address is validated. We force sockets and IP usage in multiple places, + // so we cannot just past the dll path (or something similar) as the endpoint name, because the other side will check if that is + // a valid IP address and port. + if (endPoint != TestHostConnectionInfo.Endpoint) + { + throw new InvalidOperationException($"Expected to connect to {endPoint} but instead got channel with {TestHostConnectionInfo.Endpoint}."); + } + Connected?.SafeInvoke(this, new ConnectedEventArgs(Channel), "FakeCommunicationEndpoint.Start"); + return endPoint; + } + + public void Stop() + { + if (!_stopped) + { + // Do not allow stop to be called multiple times, because it will end up calling us back and stack overflows. + _stopped = true; + } + } + + #endregion +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeDataCollectorAttachmentsProcessorsFactory.cs b/test/vstest.ProgrammerTests/Fakes/FakeDataCollectorAttachmentsProcessorsFactory.cs new file mode 100644 index 0000000000..8a5f923382 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeDataCollectorAttachmentsProcessorsFactory.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeDataCollectorAttachmentsProcessorsFactory : IDataCollectorAttachmentsProcessorsFactory +{ + public FakeDataCollectorAttachmentsProcessorsFactory(FakeErrorAggregator fakeErrorAggregator) + { + FakeErrorAggregator = fakeErrorAggregator; + } + + public FakeErrorAggregator FakeErrorAggregator { get; } + + public DataCollectorAttachmentProcessor[] Create(InvokedDataCollector[]? invokedDataCollectors, IMessageLogger logger) + { + throw new NotImplementedException(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeDiscoveryEventsRegistrar.cs b/test/vstest.ProgrammerTests/Fakes/FakeDiscoveryEventsRegistrar.cs new file mode 100644 index 0000000000..2b22bf9b40 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeDiscoveryEventsRegistrar.cs @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestDiscoveryEventsRegistrar : ITestDiscoveryEventsRegistrar +{ + private readonly FakeErrorAggregator _fakeErrorAggregator; + + public List AllEvents { get; } = new(); + public List LoggedWarnings { get; } = new(); + public List> DiscoveryCompleteEvents { get; } = new(); + public List> DiscoveredTestsEvents { get; } = new(); + public List> DiscoveryStartEvents { get; } = new(); + public List> DiscoveryMessageEvents { get; } = new(); + + public FakeTestDiscoveryEventsRegistrar(FakeErrorAggregator fakeErrorAggregator) + { + _fakeErrorAggregator = fakeErrorAggregator; + } + + public void LogWarning(string message) + { + AllEvents.Add(message); + LoggedWarnings.Add(message); + } + + public void RegisterDiscoveryEvents(IDiscoveryRequest discoveryRequest) + { + discoveryRequest.OnDiscoveryMessage += OnDiscoveryMessage; + discoveryRequest.OnDiscoveryStart += OnDiscoveryStart; + discoveryRequest.OnDiscoveredTests += OnDiscoveredTests; + discoveryRequest.OnDiscoveryComplete += OnDiscoveryComplete; + } + + public void UnregisterDiscoveryEvents(IDiscoveryRequest discoveryRequest) + { + discoveryRequest.OnDiscoveryMessage -= OnDiscoveryMessage; + discoveryRequest.OnDiscoveryStart -= OnDiscoveryStart; + discoveryRequest.OnDiscoveredTests -= OnDiscoveredTests; + discoveryRequest.OnDiscoveryComplete -= OnDiscoveryComplete; + } + + private void OnDiscoveryComplete(object? sender, DiscoveryCompleteEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + DiscoveryCompleteEvents.Add(eventRecord); + } + + private void OnDiscoveredTests(object? sender, DiscoveredTestsEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + DiscoveredTestsEvents.Add(eventRecord); + } + + private void OnDiscoveryStart(object? sender, DiscoveryStartEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + DiscoveryStartEvents.Add(eventRecord); + } + + private void OnDiscoveryMessage(object? sender, TestRunMessageEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + DiscoveryMessageEvents.Add(eventRecord); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeEnvironment.cs b/test/vstest.ProgrammerTests/Fakes/FakeEnvironment.cs new file mode 100644 index 0000000000..415c42f5b9 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeEnvironment.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeEnvironment : IEnvironment +{ + private readonly IEnvironment _environment = new PlatformEnvironment(); + + public PlatformArchitecture Architecture => _environment.Architecture; + + public PlatformOperatingSystem OperatingSystem => _environment.OperatingSystem; + + public string OperatingSystemVersion => _environment.OperatingSystemVersion; + + public int ProcessorCount => _environment.ProcessorCount; + + public void Exit(int exitcode) => _environment.Exit(exitcode); + + public int GetCurrentManagedThreadId() => _environment.GetCurrentManagedThreadId(); +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeErrorAggregator.cs b/test/vstest.ProgrammerTests/Fakes/FakeErrorAggregator.cs new file mode 100644 index 0000000000..25d04fc094 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeErrorAggregator.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeErrorAggregator +{ + public List Errors { get; } = new(); + + public void Add(object error) + { + Errors.Add(error); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeFile.cs b/test/vstest.ProgrammerTests/Fakes/FakeFile.cs new file mode 100644 index 0000000000..e9764eab4b --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeFile.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeFile +{ + public string Path { get; } + + public FakeFile(string path) + { + Path = path; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeFileHelper.cs b/test/vstest.ProgrammerTests/Fakes/FakeFileHelper.cs new file mode 100644 index 0000000000..5629c248ab --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeFileHelper.cs @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeFileHelper : IFileHelper +{ + public FakeFileHelper(FakeErrorAggregator fakeErrorAggregator) + { + FakeErrorAggregator = fakeErrorAggregator; + } + + public List Files { get; } = new(); + public FakeErrorAggregator FakeErrorAggregator { get; } + + public void CopyFile(string sourcePath, string destinationPath) + { + throw new NotImplementedException(); + } + + public DirectoryInfo CreateDirectory(string path) + { + throw new NotImplementedException(); + } + + public void Delete(string path) + { + throw new NotImplementedException(); + } + + public void DeleteDirectory(string directoryPath, bool recursive) + { + throw new NotImplementedException(); + } + + public void DeleteEmptyDirectroy(string directoryPath) + { + throw new NotImplementedException(); + } + + public bool DirectoryExists(string? path) + { + TPDebug.Assert(path is not null, "path is null"); + // TODO: Check if any file has the directory in name. This will improve. + var directoryExists = Files.Select(f => Path.GetDirectoryName(f.Path)).Any(p => p != null && p.StartsWith(path!)); + return directoryExists; + } + + public IEnumerable EnumerateFiles(string directory, SearchOption searchOption, params string[]? endsWithSearchPatterns) + { + Func predicate = searchOption == SearchOption.TopDirectoryOnly + ? (f, dir) => Path.GetDirectoryName(f.Path) == dir + : (f, dir) => Path.GetDirectoryName(f.Path)!.Contains(dir); + + var files = Files.Where(f => predicate(f, directory)).Select(f => f.Path).ToList(); + return files; + } + + public bool Exists(string? path) + { + throw new NotImplementedException(); + } + + public string GetCurrentDirectory() + { + throw new NotImplementedException(); + } + + public FileAttributes GetFileAttributes(string path) + { + throw new NotImplementedException(); + } + + public long GetFileLength(string path) + { + throw new NotImplementedException(); + } + + public string[] GetFiles(string path, string searchPattern, SearchOption searchOption) + { + throw new NotImplementedException(); + } + + public Version GetFileVersion(string path) + { + throw new NotImplementedException(); + } + + public string GetFullPath(string path) + { + throw new NotImplementedException(); + } + + public Stream GetStream(string filePath, FileMode mode, FileAccess access = FileAccess.ReadWrite) + { + throw new NotImplementedException(); + } + + public Stream GetStream(string filePath, FileMode mode, FileAccess access, FileShare share) + { + throw new NotImplementedException(); + } + + public string GetTempPath() + { + throw new NotImplementedException(); + } + + public void MoveFile(string sourcePath, string destinationPath) + { + throw new NotImplementedException(); + } + + public void WriteAllTextToFile(string filePath, string content) + { + throw new NotImplementedException(); + } + + internal void AddFakeFile(T file) where T : FakeFile + { + if (Files.Any(f => f.Path.Equals(file.Path, StringComparison.OrdinalIgnoreCase))) + { + throw new InvalidOperationException($"Fake file '{file.Path}' already exists."); + } + + Files.Add(file); + } + + internal T GetFakeFile(string path) where T : FakeFile + { + var matchingFiles = Files.Where(f => f.Path == path).ToList(); + if (matchingFiles.Count == 0) + throw new FileNotFoundException($"Fake file {path}, was not found. Check if file was previously added to FakeFileHelper."); + + // TODO: The public collection of files should probably be made readonly / immutable, and internally be made a concurrent dictionary, because it does not make + // sense to have more than 1 file object with the same name, and we check for that in AddFakeFile anyway. + if (matchingFiles.Count > 1) + throw new InvalidOperationException($"Fake file {path}, exists more than once. Are you modifying the Files collection in FakeFileHelper manually?"); + + var file = matchingFiles.Single(); + if (file is not T result) + throw new InvalidOperationException($"Fake file {path}, was supposed to be a {typeof(T)}, but was {file.GetType()}."); + + return result; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeMessage.cs b/test/vstest.ProgrammerTests/Fakes/FakeMessage.cs new file mode 100644 index 0000000000..03a0d9c077 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeMessage.cs @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; + +namespace vstest.ProgrammerTests.Fakes; + +/// +/// Marker for Fake message so we can put put all FakeMessages into one collection, without making it too wide. +/// +internal abstract class FakeMessage +{ + /// + /// The message serialized using the default JsonDataSerializer. + /// + // TODO: Is there a better way to ensure that is is not null, we will always set it in the inherited types, but it would be nice to have warning if we did not. + // And adding constructor makes it difficult to use the serializer, especially if we wanted to the serializer dynamic and not a static instance. + public string SerializedMessage { get; init; } = string.Empty; + + /// + /// + /// + public static FakeMessage NoResponse { get; } = new FakeMessage("NoResponse", 0); +} + +/// +/// A class like Message / VersionedMessage that is easier to create and review during debugging. +/// +internal sealed class FakeMessage : FakeMessage +{ + public FakeMessage(string messageType, T payload, int version = 0) + { + MessageType = messageType; + Payload = payload; + Version = version; + SerializedMessage = JsonDataSerializer.Instance.SerializePayload(MessageType, payload, version); + } + + /// + /// Message identifier, usually coming from the MessageType class. + /// + public string MessageType { get; } + + /// + /// The payload that this message is holding. + /// + public T Payload { get; } + + /// + /// Version of the message to allow the internal serializer to choose the correct serialization strategy. + /// + public int Version { get; } + + public override string ToString() + { + return $"{MessageType} {{{Payload}}}"; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeMetricsPublisher.cs b/test/vstest.ProgrammerTests/Fakes/FakeMetricsPublisher.cs new file mode 100644 index 0000000000..373c9cbc97 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeMetricsPublisher.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeMetricsPublisher : IMetricsPublisher +{ + public FakeMetricsPublisher(FakeErrorAggregator fakeErrorAggregator) + { + FakeErrorAggregator = fakeErrorAggregator; + } + + public FakeErrorAggregator FakeErrorAggregator { get; } + + public void Dispose() + { + // do nothing + } + + public void PublishMetrics(string eventName, IDictionary metrics) + { + // TODO: does nothing but probably should + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeOutput.cs b/test/vstest.ProgrammerTests/Fakes/FakeOutput.cs new file mode 100644 index 0000000000..cfbbb41b2f --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeOutput.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Text; + +using Microsoft.VisualStudio.TestPlatform.Utilities; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeOutput : IOutput +{ + public List Messages { get; } = new(); + public StringBuilder CurrentLine { get; } = new(); + public List Lines { get; } = new(); + + public void Write(string? message, OutputLevel level) + { + Messages.Add(new OutputMessage(message, level, isNewLine: false)); + CurrentLine.Append(message); + } + + public void WriteLine(string? message, OutputLevel level) + { + Lines.Add(CurrentLine + message); + CurrentLine.Clear(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeProcess.cs b/test/vstest.ProgrammerTests/Fakes/FakeProcess.cs new file mode 100644 index 0000000000..adce51bfc4 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeProcess.cs @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeProcess +{ + public int Id { get; internal set; } + public string Name { get; init; } + public string Path { get; } + public string? Arguments { get; set; } + public string WorkingDirectory { get; } + public IDictionary EnvironmentVariables { get; } + // TODO: Throw if already set + public Action? ErrorCallback { get; set; } + // TODO: Throw if already set + public Action? ExitCallback { get; set; } + // TODO: Throw if already set + public Action? OutputCallback { get; set; } + public PlatformArchitecture Architecture { get; init; } = PlatformArchitecture.X64; + public FakeErrorAggregator FakeErrorAggregator { get; } + public string? ErrorOutput { get; init; } + public int ExitCode { get; init; } = -1; + public bool Started { get; private set; } + public bool Exited { get; private set; } + public TestProcessStartInfo TestProcessStartInfo { get; internal set; } + + public FakeProcess(FakeErrorAggregator fakeErrorAggregator, string path, string? arguments = null, string? workingDirectory = null, IDictionary? environmentVariables = null, Action? errorCallback = null, Action? exitCallBack = null, Action? outputCallback = null) + { + FakeErrorAggregator = fakeErrorAggregator; + Path = path; + Name = System.IO.Path.GetFileName(path); + Arguments = arguments; + WorkingDirectory = workingDirectory ?? System.IO.Path.GetDirectoryName(path) ?? throw new InvalidOperationException($"Path {path} does not have a parent directory."); + EnvironmentVariables = environmentVariables ?? new Dictionary(); + ErrorCallback = errorCallback; + ExitCallback = exitCallBack; + OutputCallback = outputCallback; + + TestProcessStartInfo = new TestProcessStartInfo() + { + FileName = Path, + Arguments = Arguments, + WorkingDirectory = WorkingDirectory, + EnvironmentVariables = EnvironmentVariables, + // TODO: is this even used anywhere + CustomProperties = new Dictionary(), + }; + } + + internal static FakeProcess? EnsureFakeProcess(object? process) + { + return process as FakeProcess; + } + + internal void SetId(int id) + { + if (Id != 0) + throw new InvalidOperationException($"Cannot set Id to {id} for fake process {Name}, {Id}, because it was already set."); + + Id = id; + } + + internal void Start() + { + if (Started) + throw new InvalidOperationException($"Cannot start process {Name} - {Id} because it was already started before."); + + Started = true; + } + + internal void Exit() + { + if (!Started) + throw new InvalidOperationException($"Cannot exit process {Name} - {Id} because it was not started before."); + + // We want to call the exit callback just once. This is behavior inherent to being a real process, + // that also exits only once. + var exited = Exited; + Exited = true; + if (!exited && ExitCallback != null) + { + ExitCallback(this); + } + } + + public override string ToString() + { + var state = !Started + ? "not started" + : !Exited + ? "running" + : "exited"; + return $"{(Id != default ? Id : "")} {Name ?? ""} {state}"; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeProcessHelper.cs b/test/vstest.ProgrammerTests/Fakes/FakeProcessHelper.cs new file mode 100644 index 0000000000..4729970c96 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeProcessHelper.cs @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeProcessHelper : IProcessHelper +{ + // starting from 100 for no particular reason + // I want to avoid processId 0 and 1 as they are + // "reserved" on Windows (0) and Linux (both 0 and 1) + private static readonly SequentialId IdSource = new(100); + + public FakeProcess CurrentProcess { get; } + public List Processes { get; } = new(); + + public FakeErrorAggregator FakeErrorAggregator { get; } + + public FakeProcessHelper(FakeErrorAggregator fakeErrorAggregator, FakeProcess currentProcess) + { + FakeErrorAggregator = fakeErrorAggregator; + CurrentProcess = currentProcess; + AddFakeProcess(currentProcess); + } + + public void AddFakeProcess(FakeProcess process) + { + var id = IdSource.Next(); + process.SetId(id); + Processes.Add(process); + } + + public PlatformArchitecture GetCurrentProcessArchitecture() + { + return CurrentProcess.Architecture; + } + + public string GetCurrentProcessFileName() + { + return CurrentProcess.Path; + } + + public int GetCurrentProcessId() + { + return CurrentProcess.Id; + } + + public string GetCurrentProcessLocation() + { + // TODO: how is this different from Path + throw new NotImplementedException(); + } + + public string GetNativeDllDirectory() + { + throw new NotImplementedException(); + } + + public IntPtr GetProcessHandle(int processId) + { + throw new NotImplementedException(); + } + + public int GetProcessId(object? process) + { + var fakeProcess = FakeProcess.EnsureFakeProcess(process); + return fakeProcess?.Id ?? -1; + } + + public string GetProcessName(int processId) + { + var process = Processes.Single(p => p.Id == processId); + return process.Name; + } + + public string GetTestEngineDirectory() + { + throw new NotImplementedException(); + } + + public object LaunchProcess(string processPath, string? arguments, string? workingDirectory, IDictionary? environmentVariables, Action? errorCallback, Action? exitCallBack, Action? outputCallback) + { + // TODO: Throw if setting says we can't start new processes; + var process = new FakeProcess(FakeErrorAggregator, processPath, arguments, workingDirectory, environmentVariables, errorCallback, exitCallBack, outputCallback); + Processes.Add(process); + process.Start(); + + return process; + } + + public void SetExitCallback(int processId, Action? callbackAction) + { + // TODO: implement? + } + + public void TerminateProcess(object? process) + { + if (process is FakeProcess fakeProcess) + fakeProcess.Exit(); + } + + public bool TryGetExitCode(object? process, out int exitCode) + { + exitCode = (process as FakeProcess)?.ExitCode ?? -1; + return true; + } + + public void WaitForProcessExit(object? process) + { + // todo: implement for timeouts? + } + + internal void StartFakeProcess(FakeProcess process) + { + // TODO: mark the process as started. Do not add a new process if it did not exist. + if (!Processes.Contains(process)) + throw new InvalidOperationException($"Cannot start process {process.Name} - {process.Id} because it was not found in the list of known fake processes."); + + process.Start(); + } + + public PlatformArchitecture GetProcessArchitecture(int processId) + { + throw new NotImplementedException(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestBatchBuilder.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestBatchBuilder.cs new file mode 100644 index 0000000000..e3c40d179a --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestBatchBuilder.cs @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestBatchBuilder +{ + public int TotalCount { get; private set; } + public TimeSpan Duration { get; private set; } + public int BatchSize { get; private set; } + public static List> Empty => new(); + public string? Source { get; private set; } + + public FakeTestBatchBuilder() + { + } + + /// + /// Total test count in all batches. + /// + internal FakeTestBatchBuilder WithTotalCount(int count) + { + TotalCount = count; + return this; + } + + internal FakeTestBatchBuilder WithDuration(TimeSpan duration) + { + + // TODO: add min duration and max duration, and distribution, if timing becomes relevant + // TODO: and replay rate, if we actually want to simulate stuff like really executing the tests + Duration = duration; + return this; + } + + /// + /// Splits the tests to batches of this size when reporting them back. + /// + /// + /// + internal FakeTestBatchBuilder WithBatchSize(int batchSize) + { + BatchSize = batchSize; + return this; + } + + /// + /// Sets the dll path (source) to be the provided value. + /// + /// + /// + internal FakeTestBatchBuilder WithDllPath(string path) + { + Source = path; + return this; + } + + internal List> Build() + { + if (BatchSize == 0 && TotalCount != 0) + throw new InvalidOperationException("Batch size cannot be 0, unless TotalCount is also 0. Splitting non-zero amount of tests into 0 sized batches does not make sense."); + + if (TotalCount == 0) + return Empty; + + var numberOfBatches = Math.DivRem(TotalCount, BatchSize, out int remainder); + + var source = Source ?? "DummySourceFileName"; + // TODO: Add adapter uri + // TODO: set duration + var batches = Enumerable.Range(0, numberOfBatches) + .Select(batchNumber => Enumerable.Range(0, BatchSize) + .Select((index) => new TestResult(new TestCase($"Test{batchNumber}-{index}", new Uri("some://uri"), source))).ToList()).ToList(); + + if (remainder > 0) + { + var reminderBatch = Enumerable.Range(0, remainder) + .Select((index) => new TestResult(new TestCase($"Test{numberOfBatches + 1}-{index}", new Uri("some://uri"), source))).ToList(); + + batches.Add(reminderBatch); + } + + return batches; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestDllBuilder.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestDllBuilder.cs new file mode 100644 index 0000000000..a8703938ec --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestDllBuilder.cs @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Runtime.Versioning; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestDllBuilder +{ + private string _path = @$"X:\fake\mstest_{Guid.NewGuid()}.dll"; + private FrameworkName _framework = KnownFrameworkNames.Net5; + private Architecture _architecture = Architecture.X64; + private List>? _testBatches; + + internal FakeTestDllBuilder WithFramework(FrameworkName framework) + { + _framework = framework; + return this; + } + + internal FakeTestDllBuilder WithPath(string path) + { + _path = path; + return this; + } + + internal FakeTestDllBuilder WithArchitecture(Architecture architecture) + { + _architecture = architecture; + return this; + } + + /// + /// Use this together with TestBatchBuilder, or use WithTestCount to get basic test batch. + /// + /// + /// + internal FakeTestDllBuilder WithTestBatches(List> testBatches) + { + _testBatches = testBatches; + return this; + } + + /// + /// Use this to get basic test batch, or use WithTestBatches together with TestBatchBuilder, to get a custom batch. + /// + /// + internal FakeTestDllBuilder WithTestCount(int totalCount, int? batchSize = null) + { + _testBatches = new FakeTestBatchBuilder() + .WithDllPath(_path) + .WithTotalCount(totalCount) + .WithBatchSize(batchSize ?? totalCount) + .Build(); + + return this; + } + + internal FakeTestDllFile Build() + { + _testBatches ??= new FakeTestBatchBuilder() + .WithDllPath(_path) + .WithTotalCount(10) + .WithBatchSize(5) + .Build(); + return new FakeTestDllFile(_path, _framework, _architecture, _testBatches); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestDllFile.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestDllFile.cs new file mode 100644 index 0000000000..34379cfbe7 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestDllFile.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Runtime.Versioning; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestDllFile : FakeFile +{ + public FrameworkName FrameworkName { get; } + public Architecture Architecture { get; } + public List> TestResultBatches { get; } + public int TestCount { get; } + public int BatchCount { get; } + + public FakeTestDllFile(string path, FrameworkName frameworkName, Architecture architecture, List> testResultBatches) : base(path) + { + FrameworkName = frameworkName; + Architecture = architecture; + TestResultBatches = testResultBatches; + + TestCount = testResultBatches.SelectMany(tr => tr).Count(); + BatchCount = testResultBatches.Count; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestExtensionManager.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestExtensionManager.cs new file mode 100644 index 0000000000..812522fe74 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestExtensionManager.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestExtensionManager : ITestExtensionManager +{ + public void ClearExtensions() + { + throw new NotImplementedException(); + } + + public void UseAdditionalExtensions(IEnumerable? pathToAdditionalExtensions, bool skipExtensionFilters) + { + throw new NotImplementedException(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestHost.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestHost.cs new file mode 100644 index 0000000000..5be76c1006 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestHost.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestHostFixture : IDisposable +{ + public int Id { get; } + public List Dlls { get; } + public FakeTestRuntimeProvider FakeTestRuntimeProvider { get; } + public FakeCommunicationEndpoint FakeCommunicationEndpoint { get; } + public FakeCommunicationChannel FakeCommunicationChannel { get; } + public List> Responses { get; } + public FakeProcess Process { get; internal set; } + + public FakeTestHostFixture( + int id, List dlls, + FakeTestRuntimeProvider fakeTestRuntimeProvider, + FakeCommunicationEndpoint fakeCommunicationEndpoint, + FakeCommunicationChannel fakeCommunicationChannel, + FakeProcess process, + List> responses) + { + Id = id; + Dlls = dlls; + FakeTestRuntimeProvider = fakeTestRuntimeProvider; + FakeCommunicationEndpoint = fakeCommunicationEndpoint; + FakeCommunicationChannel = fakeCommunicationChannel; + Process = process; + Responses = responses; + + // The channel will pass back this whole fixture as context for every processed request so we can + // refer back to any part of testhost in message responses. E.g. to abort the channel, or exit + // testhost before or after answering. + fakeCommunicationChannel.Start(this); + } + + public void Dispose() + { + try { FakeCommunicationChannel.Dispose(); } catch (ObjectDisposedException) { } + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestHostBuilder.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestHostBuilder.cs new file mode 100644 index 0000000000..bd7c8c525b --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestHostBuilder.cs @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +# if DEBUG +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +# endif + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestHostFixtureBuilder +{ + // This will be also used as a port number, don't start from 0 + // it skips some paths in the real code, because port 0 has special meaning. + private static readonly SequentialId Id = new(1000); + + private readonly Fixture _fixture; + + // TODO: this would correctly be any test holding container, but let's not get ahead of myself. + private readonly List _dlls = new(); + private FakeProcess? _process; + private List>? _responses; + + public FakeTestHostFixtureBuilder(Fixture fixture) + { + _fixture = fixture; + } + + internal FakeTestHostFixtureBuilder WithTestDll(FakeTestDllFile dll) + { + _dlls.Add(dll); + return this; + } + + internal FakeTestHostFixture Build() + { + + if (_responses == null) + throw new InvalidOperationException("Add some reponses to the testhost by using WithResponses."); + + if (_process == null) + throw new InvalidOperationException("Add some process to the testhost by using WithProcess."); + + var id = Id.Next(); + var fakeCommunicationChannel = new FakeCommunicationChannel(_responses, _fixture.ErrorAggregator, id); + var fakeCommunicationEndpoint = new FakeCommunicationEndpoint(fakeCommunicationChannel, _fixture.ErrorAggregator); + var fakeTestRuntimeProvider = new FakeTestRuntimeProvider(_fixture.ProcessHelper, _process, _fixture.FileHelper, _dlls, fakeCommunicationEndpoint, _fixture.ErrorAggregator); + +#if DEBUG + // This registers the endpoint so we can look it up later using the address, the Id from here is propagated to + // testhost connection info, and is used as port in 127.0.0.1:, address so we can lookup the correct channel. + TestServiceLocator.Register(fakeCommunicationEndpoint.TestHostConnectionInfo.Endpoint, fakeCommunicationEndpoint); +# endif + + return new FakeTestHostFixture(id, _dlls, fakeTestRuntimeProvider, fakeCommunicationEndpoint, fakeCommunicationChannel, _process, _responses); + } + + internal FakeTestHostFixtureBuilder WithProcess(FakeProcess process) + { + _process = process; + return this; + } + + internal FakeTestHostFixtureBuilder WithResponses(List> responses) + { + _responses = responses; + return this; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestHostLauncher.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestHostLauncher.cs new file mode 100644 index 0000000000..d2277612e7 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestHostLauncher.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestHostLauncher : ITestHostLauncher +{ + private readonly FakeProcessHelper _fakeProcessHelper; + + public FakeTestHostLauncher(FakeProcessHelper fakeProcessHelper, bool isDebug = false) + { + IsDebug = isDebug; + _fakeProcessHelper = fakeProcessHelper; + } + + public bool IsDebug { get; } + + public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo) + { + throw new NotImplementedException(); + } + + public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestHostResponsesBuilder.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestHostResponsesBuilder.cs new file mode 100644 index 0000000000..bfb459fc84 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestHostResponsesBuilder.cs @@ -0,0 +1,181 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; + +namespace vstest.ProgrammerTests.Fakes; + +/// +/// Builds a list of RequestResponse pairs, with the provided values. Each method is a name of incoming message type. +/// The order in which the builder methods are called determines the order or responses. +/// +internal class FakeTestHostResponsesBuilder +{ + private readonly List> _responses = new(); + + /// + /// For VersionCheck message it responds with VersionCheck response that has the given version. + /// + /// + /// + internal FakeTestHostResponsesBuilder VersionCheck(int version) + { + AddPairWithValue(MessageType.VersionCheck, version); + return this; + } + + /// + /// For VersionCheck message it responds with the given FakeMessage. + /// + /// Message to respond with, or FakeMessage.NoResponse to not respond. + /// + internal FakeTestHostResponsesBuilder VersionCheck(FakeMessage message) + { + AddPairWithFakeMessage(MessageType.VersionCheck, message); + return this; + } + + /// + /// For VersionCheck message it does the given before action and responds with the given FakeMessage and then does the given after action. + /// Use FakeMessage.NoResponse to not respond. + /// + /// + internal FakeTestHostResponsesBuilder VersionCheck(FakeMessage message, Action? beforeAction = null, Action? afterAction = null) + { + AddPairWithFakeMessage(MessageType.VersionCheck, message, beforeAction, afterAction); + return this; + } + + internal FakeTestHostResponsesBuilder ExecutionInitialize(FakeMessage message) + { + AddPairWithFakeMessage(MessageType.ExecutionInitialize, message); + return this; + } + + internal FakeTestHostResponsesBuilder StartTestExecutionWithSources(FakeMessage message, Action? beforeAction = null, Action? afterAction = null) + { + AddPairWithFakeMessage(MessageType.StartTestExecutionWithSources, message, beforeAction, afterAction); + return this; + } + + internal FakeTestHostResponsesBuilder StartTestExecutionWithSources(List> testResultBatches) + { + ValidateArg.NotNull(testResultBatches, nameof(testResultBatches)); + + List messages; + if (testResultBatches.Count != 0) + { + // this will create as many test stats changes messages, as there are batches -1 + // the last batch will be sent as test run complete event + + // TODO: make the stats agree with the tests below + List changeMessages = testResultBatches.Take(testResultBatches.Count - 1).Select(batch => + new FakeMessage(MessageType.TestRunStatsChange, + new TestRunChangedEventArgs(new TestRunStatistics(new Dictionary { [TestOutcome.Passed] = batch.Count }), batch, new List()) + )).ToList(); + + // TODO: This is finicky because the statistics processor expects the dictionary to not be null + FakeMessage completedMessage = new FakeMessage(MessageType.ExecutionComplete, new TestRunCompletePayload + { + // TODO: make the stats agree with the tests below + TestRunCompleteArgs = new TestRunCompleteEventArgs(new TestRunStatistics(new Dictionary { [TestOutcome.Passed] = 1 }), false, false, null, new System.Collections.ObjectModel.Collection(), TimeSpan.Zero), + LastRunTests = new TestRunChangedEventArgs(new TestRunStatistics(new Dictionary { [TestOutcome.Passed] = 1 }), testResultBatches.Last(), new List()), + }); + messages = changeMessages.Concat(new[] { completedMessage }).ToList(); + } + else + { + var completedMessage = new FakeMessage(MessageType.ExecutionComplete, new TestRunCompletePayload + { + TestRunCompleteArgs = new TestRunCompleteEventArgs(new TestRunStatistics(new Dictionary { [TestOutcome.Passed] = 0 }), false, false, null, new System.Collections.ObjectModel.Collection(), TimeSpan.Zero), + LastRunTests = new TestRunChangedEventArgs(new TestRunStatistics(new Dictionary { [TestOutcome.Passed] = 0 }), new List(), new List()), + }); + + messages = completedMessage.AsList(); + } + + + AddPairWithMultipleFakeMessages(MessageType.StartTestExecutionWithSources, messages); + return this; + } + + + internal FakeTestHostResponsesBuilder SessionEnd(FakeMessage fakeMessage) + { + AddPairWithFakeMessage(MessageType.SessionEnd, fakeMessage); + return this; + } + + internal FakeTestHostResponsesBuilder SessionEnd(FakeMessage message, Action? beforeAction = null, Action? afterAction = null) + { + AddPairWithFakeMessage(MessageType.SessionEnd, message, beforeAction, afterAction); + return this; + } + + private void AddPairWithValue(string messageType, T value, Action? beforeAction = null, Action? afterAction = null) + { + AddPairWithFakeMessage(messageType, new FakeMessage(messageType, value), beforeAction, afterAction); + } + + private void AddPairWithFakeMessage(string messageType, FakeMessage message, Action? beforeAction = null, Action? afterAction = null) + { + AddPairWithMultipleFakeMessages(messageType, new[] { message }, beforeAction, afterAction); + } + + private void AddPairWithMultipleFakeMessages(string messageType, IEnumerable messages, Action? beforeAction = null, Action? afterAction = null) + { + _responses.Add(new RequestResponsePair(messageType, messages, beforeAction, afterAction)); + } + + internal List> Build() + { + return _responses; + } + + internal FakeTestHostResponsesBuilder DiscoveryInitialize(FakeMessage fakeMessage) + { + AddPairWithFakeMessage(MessageType.DiscoveryInitialize, fakeMessage); + return this; + } + + internal FakeTestHostResponsesBuilder StartDiscovery(List> testResultBatches) + { + // Discovery returns back test cases, not test results, but it is easier to take test results, because + // we have a builder that can be re-used for both test run and test discovery. + + List messages; + if (testResultBatches.Count != 0) + { + // this will create as many test stats changes messages, as there are batches -1 + // the last batch will be sent as test run complete event + + // see TestRequestSender.OnDiscoveryMessageReceived to see how the vstest.console receives the data + List changeMessages = testResultBatches.Take(testResultBatches.Count - 1) + .Select(batch => new FakeMessage>(MessageType.TestCasesFound, batch.Select(testResult => testResult.TestCase).ToList())) + .ToList(); + + // TODO: if we send this incorrectly the handler just continues, check logs if we can understand it from there. We should at least write a warning. + // because otherwise it hangs. + FakeMessage completedMessage = new FakeMessage(MessageType.DiscoveryComplete, new DiscoveryCompletePayload + { + LastDiscoveredTests = testResultBatches.Last().Select(testResult => testResult.TestCase).ToList(), + }); + messages = changeMessages.Concat(new[] { completedMessage }).ToList(); + } + else + { + FakeMessage completedMessage = new FakeMessage(MessageType.DiscoveryComplete, new DiscoveryCompletePayload + { + LastDiscoveredTests = new List(), + }); + + messages = completedMessage.AsList(); + } + + AddPairWithMultipleFakeMessages(MessageType.StartDiscovery, messages); + + return this; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestPlatformEventSource.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestPlatformEventSource.cs new file mode 100644 index 0000000000..62c3ff8580 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestPlatformEventSource.cs @@ -0,0 +1,236 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestPlatformEventSource : ITestPlatformEventSource +{ + public FakeTestPlatformEventSource(FakeErrorAggregator fakeErrorAggregator) + { + FakeErrorAggregator = fakeErrorAggregator; + } + + public FakeErrorAggregator FakeErrorAggregator { get; } + + public void AdapterDiscoveryStart(string executorUri) + { + // do nothing + } + + public void AdapterDiscoveryStop(long numberOfTests) + { + // do nothing + } + + public void AdapterExecutionStart(string executorUri) + { + // do nothing + } + + public void AdapterExecutionStop(long numberOfTests) + { + // do nothing + } + + public void AdapterSearchStart() + { + // do nothing + } + + public void AdapterSearchStop() + { + // do nothing + } + + public void DataCollectionStart(string dataCollectorUri) + { + // do nothing + } + + public void DataCollectionStop() + { + // do nothing + } + + public void DiscoveryRequestStart() + { + // do nothing + } + + public void DiscoveryRequestStop() + { + // do nothing + } + + public void DiscoveryStart() + { + // do nothing + } + + public void DiscoveryStop(long numberOfTests) + { + // do nothing + } + + public void ExecutionRequestStart() + { + // do nothing + } + + public void ExecutionRequestStop() + { + // do nothing + } + + public void ExecutionStart() + { + // do nothing + } + + public void ExecutionStop(long numberOfTests) + { + // do nothing + } + + public void MetricsDisposeStart() + { + // do nothing + } + + public void MetricsDisposeStop() + { + // do nothing + } + + public void StartTestSessionStart() + { + // do nothing + } + + public void StartTestSessionStop() + { + // do nothing + } + + public void StopTestSessionStart() + { + // do nothing + } + + public void StopTestSessionStop() + { + // do nothing + } + + public void TestHostAppDomainCreationStart() + { + // do nothing + } + + public void TestHostAppDomainCreationStop() + { + // do nothing + } + + public void TestHostStart() + { + // do nothing + } + + public void TestHostStop() + { + // do nothing + } + + public void TestRunAttachmentsProcessingRequestStart() + { + // do nothing + } + + public void TestRunAttachmentsProcessingRequestStop() + { + // do nothing + } + + public void TestRunAttachmentsProcessingStart(long numberOfAttachments) + { + // do nothing + } + + public void TestRunAttachmentsProcessingStop(long numberOfAttachments) + { + // do nothing + } + + public void TranslationLayerDiscoveryStart() + { + // do nothing + } + + public void TranslationLayerDiscoveryStop() + { + // do nothing + } + + public void TranslationLayerExecutionStart(long customTestHost, long sourcesCount, long testCasesCount, string runSettings) + { + // do nothing + } + + public void TranslationLayerExecutionStop() + { + // do nothing + } + + public void TranslationLayerInitializeStart() + { + // do nothing + } + + public void TranslationLayerInitializeStop() + { + // do nothing + } + + public void TranslationLayerStartTestSessionStart() + { + // do nothing + } + + public void TranslationLayerStartTestSessionStop() + { + // do nothing + } + + public void TranslationLayerStopTestSessionStart() + { + // do nothing + } + + public void TranslationLayerStopTestSessionStop() + { + // do nothing + } + + public void TranslationLayerTestRunAttachmentsProcessingStart() + { + // do nothing + } + + public void TranslationLayerTestRunAttachmentsProcessingStop() + { + // do nothing + } + + public void VsTestConsoleStart() + { + // do nothing + } + + public void VsTestConsoleStop() + { + // do nothing + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestRunEventsRegistrar.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestRunEventsRegistrar.cs new file mode 100644 index 0000000000..b6d7571b79 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestRunEventsRegistrar.cs @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestRunEventsRegistrar : ITestRunEventsRegistrar +{ + public Guid Id { get; } = Guid.NewGuid(); + public FakeTestRunEventsRegistrar(FakeErrorAggregator fakeErrorAggregator) + { + FakeErrorAggregator = fakeErrorAggregator; + } + + public List AllEvents { get; } = new(); + public List LoggedWarnings { get; } = new(); + public List> RunCompleteEvents { get; } = new(); + public List> RunStartEvents { get; } = new(); + public List> RunChangedEvents { get; } = new(); + public List> RawMessageEvents { get; } = new(); + public List> RunMessageEvents { get; } = new(); + public FakeErrorAggregator FakeErrorAggregator { get; } + + public void LogWarning(string message) + { + AllEvents.Add(message); + LoggedWarnings.Add(message); + } + + public void RegisterTestRunEvents(ITestRunRequest testRunRequest) + { + testRunRequest.TestRunMessage += OnTestRunMessage; + testRunRequest.OnRawMessageReceived += OnRawMessage; + testRunRequest.OnRunStart += OnRunStart; + testRunRequest.OnRunStatsChange += OnRunStatsChange; + testRunRequest.OnRunCompletion += OnRunCompletion; + } + + public void UnregisterTestRunEvents(ITestRunRequest testRunRequest) + { + testRunRequest.TestRunMessage -= OnTestRunMessage; + testRunRequest.OnRawMessageReceived -= OnRawMessage; + testRunRequest.OnRunStart -= OnRunStart; + testRunRequest.OnRunStatsChange -= OnRunStatsChange; + testRunRequest.OnRunCompletion -= OnRunCompletion; + } + + private void OnRunCompletion(object? sender, TestRunCompleteEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + RunCompleteEvents.Add(eventRecord); + } + + private void OnRunStart(object? sender, TestRunStartEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + RunStartEvents.Add(eventRecord); + } + + private void OnRunStatsChange(object? sender, TestRunChangedEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + RunChangedEvents.Add(eventRecord); + } + + private void OnRawMessage(object? sender, string e) + { + var eventRecord = new EventRecord(sender, e); + AllEvents.Add(eventRecord); + RawMessageEvents.Add(eventRecord); + } + + private void OnTestRunMessage(object? sender, TestRunMessageEventArgs e) + { + var eventRecord = new EventRecord(sender, e); + if (e.Level == TestMessageLevel.Error) + { + FakeErrorAggregator.Errors.Add(eventRecord); + } + AllEvents.Add(eventRecord); + RunMessageEvents.Add(eventRecord); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestRuntimeProvider.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestRuntimeProvider.cs new file mode 100644 index 0000000000..266095e8f9 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestRuntimeProvider.cs @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestRuntimeProvider : ITestRuntimeProvider +{ + public FakeProcessHelper FakeProcessHelper { get; } + public FakeCommunicationEndpoint FakeCommunicationEndpoint { get; } + public FakeCommunicationChannel FakeCommunicationChannel { get; } + public FakeErrorAggregator FakeErrorAggregator { get; } + public FakeProcess TestHostProcess { get; private set; } + public FakeFileHelper FileHelper { get; } + public List TestDlls { get; } + + // TODO: make this configurable? + public bool Shared => false; + + public event EventHandler? HostLaunched; + public event EventHandler? HostExited; + + public FakeTestRuntimeProvider(FakeProcessHelper fakeProcessHelper, FakeProcess fakeTestHostProcess, FakeFileHelper fakeFileHelper, List fakeTestDlls, FakeCommunicationEndpoint fakeCommunicationEndpoint, FakeErrorAggregator fakeErrorAggregator) + { + FakeProcessHelper = fakeProcessHelper; + TestHostProcess = fakeTestHostProcess; + FileHelper = fakeFileHelper; + TestDlls = fakeTestDlls; + FakeCommunicationEndpoint = fakeCommunicationEndpoint; + FakeCommunicationChannel = fakeCommunicationEndpoint.Channel; + FakeErrorAggregator = fakeErrorAggregator; + + var architectures = fakeTestDlls.Select(dll => dll.Architecture).Distinct().ToList(); + var frameworks = fakeTestDlls.Select(dll => dll.FrameworkName).Distinct().ToList(); + + if (architectures.Count > 1) + throw new InvalidOperationException($"The provided dlls have more than 1 architecture {architectures.JoinByComma()}. Fake TestRuntimeProvider cannot have dlls with mulitple architectures, because real testhost process can also run just with a single architecture."); + + if (frameworks.Count > 1) + throw new InvalidOperationException($"The provided dlls have more than 1 target framework {frameworks.JoinByComma()}. Fake TestRuntimeProvider cannot have dlls with mulitple target framework, because real testhost process can also run just a single target framework."); + + fakeTestDlls.ForEach(FileHelper.AddFakeFile); + + fakeProcessHelper.AddFakeProcess(fakeTestHostProcess); + TestHostProcess.ExitCallback = p => + { + // TODO: Validate the process we are passed is actually the same as TestHostProcess + // TODO: Validate we already started the process. + var process = (FakeProcess)p; + // TODO: When we exit, eventually there are no subscribers, maybe we should review if we don't lose the error output sometimes, in unnecessary way + HostExited?.Invoke(this, new HostProviderEventArgs(process.ErrorOutput!, process.ExitCode, process.Id)); + }; + } + + public bool CanExecuteCurrentRunConfiguration(string? runsettingsXml) + { + // x86 + // Framework40 + + return true; + } + + public Task CleanTestHostAsync(CancellationToken cancellationToken) + { + if (TestHostProcess == null) + throw new InvalidOperationException("Cannot clean testhost, no testhost process was started"); + FakeProcessHelper.TerminateProcess(TestHostProcess); + return Task.CompletedTask; + } + + public TestHostConnectionInfo GetTestHostConnectionInfo() + { + return FakeCommunicationEndpoint.TestHostConnectionInfo; + } + + public TestProcessStartInfo GetTestHostProcessStartInfo(IEnumerable sources, IDictionary? environmentVariables, TestRunnerConnectionInfo connectionInfo) + { + // TODO: do we need to do more here? How to link testhost to the fake one we "start"? + return TestHostProcess.TestProcessStartInfo; + } + + public IEnumerable GetTestPlatformExtensions(IEnumerable sources, IEnumerable extensions) + { + // send extensions so we send InitializeExecutionMessage + return new[] { @"c:\temp\extension.dll" }; + } + + public IEnumerable GetTestSources(IEnumerable sources) + { + // gives testhost opportunity to translate sources to something else, + // e.g. in uwp the main exe is returned, rather than the dlls that dlls that are tested + return sources; + } + + public void Initialize(IMessageLogger? logger, string runsettingsXml) + { + // TODO: this is called twice, is that okay? + // TODO: and also by HandlePartialRunComplete after the test run has completed and we aborted because the client disconnected + + // do nothing + } + + public Task LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken) + { + if (TestHostProcess.TestProcessStartInfo.FileName != testHostStartInfo.FileName) + throw new InvalidOperationException($"Tried to start a different process than the one associated with this provider: File name is {testHostStartInfo.FileName} is not the same as the fake process associated with this provider {TestHostProcess.TestProcessStartInfo.FileName}."); + + FakeProcessHelper.StartFakeProcess(TestHostProcess); + HostLaunched?.Invoke(this, new HostProviderEventArgs("Fake testhost launched", 0, TestHostProcess.Id)); + + return Task.FromResult(true); + } + + public void SetCustomLauncher(ITestHostLauncher customLauncher) + { + throw new NotImplementedException(); + } + + public override string ToString() + { + return $"{nameof(FakeTestRuntimeProvider)} - ({TestHostProcess.ToString() ?? ""}) - {FakeCommunicationChannel}"; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestRuntimeProviderManager.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestRuntimeProviderManager.cs new file mode 100644 index 0000000000..acf11b261f --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestRuntimeProviderManager.cs @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.Common.Hosting; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestRuntimeProviderManager : ITestRuntimeProviderManager +{ + public FakeTestRuntimeProviderManager(FakeErrorAggregator fakeErrorAggregator) + { + FakeErrorAggregator = fakeErrorAggregator; + } + + public List TestRuntimeProviders { get; } = new(); + public Queue TestRuntimeProvidersByOrder { get; } = new(); + public List> UsedTestRuntimeProviders { get; } = new(); + + public FakeErrorAggregator FakeErrorAggregator { get; } + + public void AddTestRuntimeProviders(params FakeTestRuntimeProvider[] runtimeProviders) + { + TestRuntimeProviders.AddRange(runtimeProviders); + + // In cases where we don't have multi tfm run, we will be asked for + // a provider with multiple sources. In that case we don't know exactly which one to provide + // so we need to go by order. We also do this resolve twice for each source in parallel run + // because we first need to know if the provider is shared. So we add to the queue twice. + // This is brittle, but there is no way around this :( + foreach (var provider in runtimeProviders) + { + TestRuntimeProvidersByOrder.Enqueue(provider); + TestRuntimeProvidersByOrder.Enqueue(provider); + } + } + + public ITestRuntimeProvider? GetTestHostManagerByRunConfiguration(string? _, List? sources) + { + var allMatchingProviders = TestRuntimeProviders + .Where(r => r.TestDlls.Select(dll => dll.Path) + .Any(path => sources?.Contains(path) == true)) + .ToList(); + + if (allMatchingProviders.Count == 0) + { + throw new InvalidOperationException($"There are no FakeTestRuntimeProviders associated with any of the incoming sources, make sure your testhost fixture has at least one dll: {sources?.JoinByComma()}"); + } + + if (allMatchingProviders.Count > 1) + { + // This is a single tfm run, or multiple dlls in the run have the same tfm. We need to provide + // providers by order. + if (!TestRuntimeProvidersByOrder.TryDequeue(out var provider)) + { + throw new InvalidOperationException("There are no more FakeTestRuntimeProviders to be provided."); + } + + UsedTestRuntimeProviders.Add(new ActionRecord(provider)); + return provider; + } + + var single = allMatchingProviders.Single(); + UsedTestRuntimeProviders.Add(new ActionRecord(single)); + return single; + } + + public ITestRuntimeProvider GetTestHostManagerByUri(string hostUri) + { + throw new NotImplementedException(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FakeTestSessionEventsHandler.cs b/test/vstest.ProgrammerTests/Fakes/FakeTestSessionEventsHandler.cs new file mode 100644 index 0000000000..616c6aa966 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FakeTestSessionEventsHandler.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal class FakeTestSessionEventsHandler : ITestSessionEventsHandler +{ + private readonly FakeErrorAggregator _fakeErrorAggregator; + + public FakeTestSessionEventsHandler(FakeErrorAggregator fakeErrorAggregator) + { + _fakeErrorAggregator = fakeErrorAggregator; + } + + public List AllEvents { get; } = new(); + public List LoggedMessages { get; } = new(); + public List RawMessages { get; } = new(); + public List StartTestSessionCompleteEvents { get; } = new(); + public List StopTestSessionCompleteEvents { get; } = new(); + + public void HandleLogMessage(TestMessageLevel level, string? message) + { + var msg = new TestMessage(level, message); + AllEvents.Add(msg); + LoggedMessages.Add(msg); + } + + public void HandleRawMessage(string rawMessage) + { + AllEvents.Add(rawMessage); + RawMessages.Add(rawMessage); + } + + public void HandleStartTestSessionComplete(StartTestSessionCompleteEventArgs? eventArgs) + { + AllEvents.Add(eventArgs); + StartTestSessionCompleteEvents.Add(eventArgs); + } + + public void HandleStopTestSessionComplete(StopTestSessionCompleteEventArgs? eventArgs) + { + AllEvents.Add(eventArgs); + StopTestSessionCompleteEvents.Add(eventArgs); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/Fixture.cs b/test/vstest.ProgrammerTests/Fakes/Fixture.cs new file mode 100644 index 0000000000..15ad1213f5 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/Fixture.cs @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using FluentAssertions; + +using Microsoft.VisualStudio.TestPlatform.Client; +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.TestRunAttachmentsProcessing; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.Utilities; + +namespace vstest.ProgrammerTests.Fakes; + +internal class Fixture : IDisposable +{ + private readonly List _disposables = new(); + + public FakeErrorAggregator ErrorAggregator { get; } = new(); + public FakeProcessHelper ProcessHelper { get; } + public string LogName { get; } + public FakeProcess CurrentProcess { get; } + public FakeFileHelper FileHelper { get; } + public FakeTestRuntimeProviderManager TestRuntimeProviderManager { get; } + public FakeTestRunEventsRegistrar TestRunEventsRegistrar { get; } + public FakeEnvironment Environment { get; } + public FakeTestDiscoveryEventsRegistrar TestDiscoveryEventsRegistrar { get; } + public TestEngine? TestEngine { get; private set; } + public TestPlatform? TestPlatform { get; private set; } + public TestRunResultAggregator? TestRunResultAggregator { get; private set; } + public FakeTestPlatformEventSource? TestPlatformEventSource { get; private set; } + public FakeAssemblyMetadataProvider? AssemblyMetadataProvider { get; private set; } + public InferHelper? InferHelper { get; private set; } + public FakeDataCollectorAttachmentsProcessorsFactory? DataCollectorAttachmentsProcessorsFactory { get; private set; } + public TestRunAttachmentsProcessingManager? TestRunAttachmentsProcessingManager { get; private set; } + public TestRequestManager? TestRequestManager { get; private set; } + public ProtocolConfig ProtocolConfig { get; internal set; } + + public List ExecutedTests => TestRunEventsRegistrar.RunChangedEvents.SelectMany(er => er.Data.NewTestResults!).ToList(); + public List DiscoveredTests => TestDiscoveryEventsRegistrar.DiscoveredTestsEvents.SelectMany(er => er.Data.DiscoveredTestCases!).ToList(); + + public List LoggedWarnings => TestRunEventsRegistrar.LoggedWarnings.Concat(TestDiscoveryEventsRegistrar.LoggedWarnings).ToList(); + + public FakeTestSessionEventsHandler TestSessionEventsHandler { get; } + + public Fixture(FixtureOptions? fixtureOptions = null) + { + // This type is compiled only in DEBUG, and won't exist otherwise. +#if DEBUG + // We need to use static class to find the communication endpoint, this clears all the registrations of previous tests. + TestServiceLocator.Clear(); +#else + // This fools compiler into not being able to tell that the the rest of the code is unreachable. + var a = true; + if (a) + { + throw new InvalidOperationException("Tests cannot run in Release mode, because TestServiceLocator is compiled only for Debug, and so the tests will fail to setup channel and will hang."); + } +#endif + +#pragma warning disable CS0618 // Type or member is obsolete (to prevent use outside of test context) + FeatureFlag.Reset(); + fixtureOptions?.FeatureFlags?.ToList().ForEach(flag => ((FeatureFlag)FeatureFlag.Instance).SetFlag(flag.Key, flag.Value)); +#pragma warning restore CS0618 // Type or member is obsolete + + // This makes the run a bit slower, but at least we get info in the output window. We probably should add a mode where we don't + // use a file to write the output. Just trace listener. That would also be useful for UWP I think. + LogName = Path.GetTempPath() + $"/log_{Guid.NewGuid()}.txt"; + //EqtTrace.InitializeVerboseTrace(LogName); + + CurrentProcess = new FakeProcess(ErrorAggregator, @"X:\fake\vstest.console.exe"); + ProcessHelper = new FakeProcessHelper(ErrorAggregator, CurrentProcess); + FileHelper = new FakeFileHelper(ErrorAggregator); + TestRuntimeProviderManager = new FakeTestRuntimeProviderManager(ErrorAggregator); + TestRunEventsRegistrar = new FakeTestRunEventsRegistrar(ErrorAggregator); + Environment = new FakeEnvironment(); + TestDiscoveryEventsRegistrar = new FakeTestDiscoveryEventsRegistrar(ErrorAggregator); + TestSessionEventsHandler = new FakeTestSessionEventsHandler(ErrorAggregator); + ProtocolConfig = new ProtocolConfig(); + } + + public void Dispose() + { + foreach (var disposable in _disposables) + { + try { disposable.Dispose(); } catch (ObjectDisposedException) { } + } + } + + internal void AddTestHostFixtures(params FakeTestHostFixture[] testhosts) + { + _disposables.AddRange(testhosts); + var providers = testhosts.Select(t => t.FakeTestRuntimeProvider).ToArray(); + TestRuntimeProviderManager.AddTestRuntimeProviders(providers); + } + + internal TestRequestManagerTestHelper BuildTestRequestManager( + int? timeout = DebugOptions.DefaultTimeout, + int? debugTimeout = DebugOptions.DefaultDebugTimeout, + bool? breakOnAbort = DebugOptions.DefaultBreakOnAbort) + { + if (!TestRuntimeProviderManager.TestRuntimeProviders.Any()) + throw new InvalidOperationException("There are runtime providers registered for FakeTestRuntimeProviderManager."); + + + TestEngine = new TestEngine(TestRuntimeProviderManager, ProcessHelper, Environment); + TestPlatform = new TestPlatform(TestEngine, FileHelper, TestRuntimeProviderManager); + + TestRunResultAggregator = new TestRunResultAggregator(); + TestPlatformEventSource = new FakeTestPlatformEventSource(ErrorAggregator); + + AssemblyMetadataProvider = new FakeAssemblyMetadataProvider(FileHelper, ErrorAggregator); + InferHelper = new InferHelper(AssemblyMetadataProvider); + + // This is most likely not the correctl place where to cut this off, plugin cache is probably the better place, + // but it is not injected, and I don't want to investigate this now. + DataCollectorAttachmentsProcessorsFactory = new FakeDataCollectorAttachmentsProcessorsFactory(ErrorAggregator); + TestRunAttachmentsProcessingManager = new TestRunAttachmentsProcessingManager(TestPlatformEventSource, DataCollectorAttachmentsProcessorsFactory); + + Task fakeMetricsPublisherTask = Task.FromResult(new FakeMetricsPublisher(ErrorAggregator)); + + var commandLineOptions = new CommandLineOptions + { + // We are acting like we are running under IDE. This is done because some settings are trying to grab the + // value from the pre-parsed settings in command line options. And some are looking at the actual run settings. + // Ultimately we should have a single point of truth for both scenarios, but now it is easier to just provide + // runsettings to the request. + IsDesignMode = true, + }; + TestRequestManager testRequestManager = new( + commandLineOptions, + TestPlatform, + TestRunResultAggregator, + TestPlatformEventSource, + InferHelper, + fakeMetricsPublisherTask, + ProcessHelper, + TestRunAttachmentsProcessingManager, + Environment, + new EnvironmentVariableHelper()); + + TestRequestManager = testRequestManager; + + return new TestRequestManagerTestHelper(ErrorAggregator, testRequestManager, new DebugOptions + { + Timeout = timeout ?? DebugOptions.DefaultTimeout, + DebugTimeout = debugTimeout ?? DebugOptions.DefaultDebugTimeout, + BreakOnAbort = breakOnAbort ?? DebugOptions.DefaultBreakOnAbort, + }); + } + + internal void AssertNoErrors() + { + ErrorAggregator.Errors.Should().BeEmpty(); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/FixtureOptions.cs b/test/vstest.ProgrammerTests/Fakes/FixtureOptions.cs new file mode 100644 index 0000000000..215c3649a6 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/FixtureOptions.cs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal class FixtureOptions +{ + public Dictionary? FeatureFlags { get; init; } +} diff --git a/test/vstest.ProgrammerTests/Fakes/KnownFrameworkNames.cs b/test/vstest.ProgrammerTests/Fakes/KnownFrameworkNames.cs new file mode 100644 index 0000000000..c600193212 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/KnownFrameworkNames.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Runtime.Versioning; + +namespace vstest.ProgrammerTests.Fakes; + +internal static class KnownFrameworkNames +{ + public static FrameworkName Netcoreapp1 = new(KnownFrameworkStrings.Netcoreapp1); + public static FrameworkName Netcoreapp2 = new(KnownFrameworkStrings.Netcoreapp2); + public static FrameworkName Netcoreapp21 = new(KnownFrameworkStrings.Netcoreapp21); + public static FrameworkName Netcoreapp3 = new(KnownFrameworkStrings.Netcoreapp3); + public static FrameworkName Netcoreapp31 = new(KnownFrameworkStrings.Netcoreapp31); + public static FrameworkName Net5 = new(KnownFrameworkStrings.Net5); + public static FrameworkName Net6 = new(KnownFrameworkStrings.Net6); + public static FrameworkName Net7 = new(KnownFrameworkStrings.Net7); + public static FrameworkName Net462 = new(KnownFrameworkStrings.Net462); + public static FrameworkName Net47 = new(KnownFrameworkStrings.Net47); + public static FrameworkName Net471 = new(KnownFrameworkStrings.Net471); + public static FrameworkName Net472 = new(KnownFrameworkStrings.Net472); + public static FrameworkName Net48 = new(KnownFrameworkStrings.Net48); +} diff --git a/test/vstest.ProgrammerTests/Fakes/KnownFrameworkStrings.cs b/test/vstest.ProgrammerTests/Fakes/KnownFrameworkStrings.cs new file mode 100644 index 0000000000..cece400c9b --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/KnownFrameworkStrings.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal static class KnownFrameworkStrings +{ + public static string NetCore(int major, int minor = 0) => $".NETCoreApp,Version=v{major}.{minor}"; + private static string NetFramework(int major, int minor, int patch = 0) => $".NETFramework,Version=v{major}.{minor}{(patch != 0 ? $".{patch}" : null)}"; + + public static string Netcoreapp1 = NetCore(1); + public static string Netcoreapp2 = NetCore(2); + public static string Netcoreapp21 = NetCore(2, 1); + public static string Netcoreapp3 = NetCore(3); + public static string Netcoreapp31 = NetCore(3, 1); + public static string Net5 = NetCore(5); + public static string Net6 = NetCore(6); + public static string Net7 = NetCore(7); + + public static string Net462 = NetFramework(4, 6, 2); + public static string Net47 = NetFramework(4, 7); + public static string Net471 = NetFramework(4, 7, 1); + public static string Net472 = NetFramework(4, 7, 2); + public static string Net48 = NetFramework(4, 8); +} diff --git a/test/vstest.ProgrammerTests/Fakes/OutputMessage.cs b/test/vstest.ProgrammerTests/Fakes/OutputMessage.cs new file mode 100644 index 0000000000..694539e202 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/OutputMessage.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.Utilities; + +namespace vstest.ProgrammerTests.Fakes; + +internal class OutputMessage +{ + public OutputMessage(string? message, OutputLevel level, bool isNewLine) + { + Message = message; + Level = level; + IsNewLine = isNewLine; + } + + public string? Message { get; } + public OutputLevel Level { get; } + public bool IsNewLine { get; } +} diff --git a/test/vstest.ProgrammerTests/Fakes/RequestResponsePair.cs b/test/vstest.ProgrammerTests/Fakes/RequestResponsePair.cs new file mode 100644 index 0000000000..a62e514130 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/RequestResponsePair.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal class RequestResponsePair where TRequest : class +{ + public RequestResponsePair(TRequest request, TResponse response, bool debug = false) + { + Request = request; + Responses = new List { response }; + Debug = debug; + } + + public RequestResponsePair(TRequest request, IEnumerable responses, bool debug = false) + { + Request = request; + Responses = responses.ToList(); + Debug = debug; + } + + public RequestResponsePair(TRequest request, IEnumerable responses, Action? beforeAction = null, Action? afterAction = null, bool debug = false) + { + Request = request; + Responses = responses.ToList(); + BeforeAction = beforeAction; + AfterAction = afterAction; + Debug = debug; + } + + public TRequest Request { get; } + + // TODO: make this Expression< so we can get some info about what this is doing when looking directly at this instance + public Action? BeforeAction { get; } + public Action? AfterAction { get; } + public List Responses { get; } + public bool Debug { get; } + + public override string ToString() + { + return $"\u2193{Request} \u2191{Responses.FirstOrDefault()}"; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/SequentialId.cs b/test/vstest.ProgrammerTests/Fakes/SequentialId.cs new file mode 100644 index 0000000000..815245110b --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/SequentialId.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +/// +/// A sequential Id that starts from 0 or a given number. Put this in a static field in your class, and call Next to get the next Id. +/// +internal class SequentialId +{ + private int _id; + + public SequentialId() : this(0) + { + } + + public SequentialId(int firstId) + { + _id = firstId; + } + + public int Next() + { + return Interlocked.Increment(ref _id); + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/StringExtensions.cs b/test/vstest.ProgrammerTests/Fakes/StringExtensions.cs new file mode 100644 index 0000000000..8d33f23acb --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/StringExtensions.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace vstest.ProgrammerTests.Fakes; + +internal static class EnumerableExtensions +{ + public static string JoinByComma(this IEnumerable value) + { + return value.JoinBy(", "); + } + + public static string JoinBy(this IEnumerable value, string delimiter) + { + return string.Join(delimiter, value.Select(v => v?.ToString())); + } + + public static List AsList(this T value) + { + return [value]; + } +} diff --git a/test/vstest.ProgrammerTests/Fakes/TestMessage.cs b/test/vstest.ProgrammerTests/Fakes/TestMessage.cs new file mode 100644 index 0000000000..926fbfb485 --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/TestMessage.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.ProgrammerTests.Fakes; + +internal class TestMessage +{ + public TestMessage(TestMessageLevel level, string? message) + { + Level = level; + Message = message; + } + + public TestMessageLevel Level { get; } + public string? Message { get; } +} diff --git a/test/vstest.ProgrammerTests/Fakes/TestRequestManagerHelper.cs b/test/vstest.ProgrammerTests/Fakes/TestRequestManagerHelper.cs new file mode 100644 index 0000000000..76e5d165fb --- /dev/null +++ b/test/vstest.ProgrammerTests/Fakes/TestRequestManagerHelper.cs @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Diagnostics; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; + +#pragma warning disable IDE1006 // Naming Styles +namespace vstest.ProgrammerTests.Fakes; +#pragma warning restore IDE1006 // Naming Styles + +internal class TestRequestManagerTestHelper +{ + private readonly FakeErrorAggregator _errorAggregator; + private readonly TestRequestManager _testRequestManager; + private readonly DebugOptions _debugOptions; + + public TestRequestManagerTestHelper(FakeErrorAggregator errorAggregator, TestRequestManager testRequestManager, DebugOptions debugOptions) + { + _errorAggregator = errorAggregator; + _testRequestManager = testRequestManager; + _debugOptions = debugOptions; + } + + public async Task ExecuteWithAbort(Action testRequestManagerAction) + { + // We make sure the test is running for the timeout time at max and then we try to abort + // if we aborted we write the error to aggregator + + // Start tasks that waits until it is the right time to call abort + // and continue to starting the method. If that method finishes running on time we cancel this + // wait and don't abort. Otherwise we call abort to start our abort flow. + // + // This abort does not guarantee that we won't hang. If our abort flow is broken then we will + // remain hanging. To have that guarantee it needs to be handled by failfast, or something else that will hang dump us. + // Or a simple timer that kill the process after a given timeout, like a simplified blame hang dumper. + var cancelAbort = new CancellationTokenSource(); + var abortOnTimeout = Task.Run(async () => + { + // Wait until timeout or until we are cancelled. + try + { + await Task.Delay(TimeSpan.FromSeconds(Debugger.IsAttached ? _debugOptions.DebugTimeout : _debugOptions.Timeout), cancelAbort.Token); + + if (Debugger.IsAttached && _debugOptions.BreakOnAbort) + { + var errors = _errorAggregator.Errors; + // we will abort because we are hanging, look at errors and at concurrent stacks to see where we are hanging. + Debugger.Break(); + } + _errorAggregator.Add(new Exception("errr we aborted")); + _testRequestManager.AbortTestRun(); + } + catch (TaskCanceledException) + { + } + }); + + testRequestManagerAction(_testRequestManager); + + cancelAbort.Cancel(); + if (!abortOnTimeout.IsCanceled) + { + await abortOnTimeout; + } + } +} diff --git a/test/vstest.ProgrammerTests/GlobalSuppressions.cs b/test/vstest.ProgrammerTests/GlobalSuppressions.cs new file mode 100644 index 0000000000..6d786bba6c --- /dev/null +++ b/test/vstest.ProgrammerTests/GlobalSuppressions.cs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Consider changing namespaces later", Scope = "namespace", Target = "~N:vstest.ProgrammerTests")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Consider changing namespaces later", Scope = "namespace", Target = "~N:vstest.ProgrammerTests.Fakes")] diff --git a/test/vstest.ProgrammerTests/MultiTFMRunAndDiscovery.cs b/test/vstest.ProgrammerTests/MultiTFMRunAndDiscovery.cs new file mode 100644 index 0000000000..36c9822d57 --- /dev/null +++ b/test/vstest.ProgrammerTests/MultiTFMRunAndDiscovery.cs @@ -0,0 +1,680 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Intent; +using FluentAssertions; +using vstest.ProgrammerTests.Fakes; + +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; +using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities; +using System.Reflection; +using System.Diagnostics.CodeAnalysis; + +namespace vstest.ProgrammerTests; + +public class MultiTFM +{ + public class MultiTFMDiscovery + { + [Test(@" + Given two test assemblies that have the same architecture + but have different target frameworks. + + When we run test discovery. + + Then two testhosts should be started that target the same framework as each assembly. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task A() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(11, 5) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .DiscoveryInitialize(FakeMessage.NoResponse) + .StartDiscovery(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, afterAction: _ => testhost1Process.Exit()) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + // -- + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net48) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(21, 5) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .DiscoveryInitialize(FakeMessage.NoResponse) + .StartDiscovery(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost2Process.Exit()) + // We actually do get asked to terminate multiple times. In the second host only. + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + mstest1Dll.FrameworkName.Should().NotBe(mstest2Dll.FrameworkName); + + // -- act + var testDiscoveryPayload = new DiscoveryRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + RunSettings = $"" + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.DiscoverTests(testDiscoveryPayload, fixture.TestDiscoveryEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + // We figure out the framework for each assembly so there should be no incompatibility warnings + fixture.LoggedWarnings.Should().NotContainMatch("Test run detected DLL(s) which would use different framework*"); + + fixture.ProcessHelper.Processes.Where(p => p.Started).Should().HaveCount(2); + var startWithSources1 = testhost1.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartDiscovery); + var startWithSources1Text = startWithSources1.Request.GetRawMessage(); + // We sent mstest1.dll. + startWithSources1Text.Should().Contain("mstest1.dll"); + // And we sent net5 as the target framework, because that is the framework of mstest1.dll. + startWithSources1Text.Should().Contain(KnownFrameworkStrings.Net5); + + var startWithSources2 = testhost2.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartDiscovery); + var startWithSources2Text = startWithSources2.Request.GetRawMessage(); + // We sent mstest2.dll. + startWithSources2Text.Should().Contain("mstest2.dll"); + // And we sent net48 as the target framework, because that is the framework of mstest2.dll. + startWithSources2Text.Should().Contain(mstest2Dll.FrameworkName.ToString()); + + fixture.DiscoveredTests.Should().HaveCount(mstest1Dll.TestCount + mstest2Dll.TestCount); + } + + [Test(@" + Given two test assemblies that have the same architecture + but have different target frameworks. + + When we run test discovery + and provide runsettings that define the desired target framework. + + Then two testhosts should be started that target the framework chosen by runsettings. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task B() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(11, 5) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .DiscoveryInitialize(FakeMessage.NoResponse) + .StartDiscovery(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, afterAction: _ => testhost1Process.Exit()) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + // -- + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net6) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(21, 5) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .DiscoveryInitialize(FakeMessage.NoResponse) + .StartDiscovery(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost2Process.Exit()) + // We actually do get asked to terminate multiple times. In the second host only. + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + mstest1Dll.FrameworkName.Should().NotBe(mstest2Dll.FrameworkName); + + // -- act + var testDiscoveryPayload = new DiscoveryRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + RunSettings = $"{KnownFrameworkStrings.Net7}" + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.DiscoverTests(testDiscoveryPayload, fixture.TestDiscoveryEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + // Runsettings will force NET7, so we should get a warning. + fixture.LoggedWarnings.Should().ContainMatch("Test run detected DLL(s) which would use different framework*"); + + fixture.ProcessHelper.Processes.Where(p => p.Started).Should().HaveCount(2); + var startWithSources1 = testhost1.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartDiscovery); + var startWithSources1Text = startWithSources1.Request.GetRawMessage(); + // We sent mstest1.dll and net7 because that is what we have in settings. + startWithSources1Text.Should().Contain("mstest1.dll"); + startWithSources1Text.Should().Contain(KnownFrameworkStrings.Net7); + + var startWithSources2 = testhost2.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartDiscovery); + var startWithSources2Text = startWithSources2.Request.GetRawMessage(); + // We sent mstest2.dll and net7 because that is what we have in settings. + startWithSources2Text.Should().Contain("mstest2.dll"); + startWithSources2Text.Should().Contain(KnownFrameworkStrings.Net7); + + fixture.DiscoveredTests.Should().HaveCount(mstest1Dll.TestCount + mstest2Dll.TestCount); + } + } + + public class MultiTFMExecution + { + [Test(@" + Given two test assemblies that have the same architecture + but have different target frameworks. + + When we execute tests. + + Then two testhosts should be started that target the same framework as each assembly. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task C() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(11, 5) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, afterAction: _ => testhost1Process.Exit()) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + // -- + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net6) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(21, 5) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost2Process.Exit()) + // We actually do get asked to terminate multiple times. In the second host only. + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + mstest1Dll.FrameworkName.Should().NotBe(mstest2Dll.FrameworkName); + + // -- act + var testRunRequestPayload = new TestRunRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + RunSettings = $"" + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.RunTests(testRunRequestPayload, testHostLauncher: null, fixture.TestRunEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + // We figure out the framework for each assembly so there should be no incompatibility warnings + fixture.LoggedWarnings.Should().NotContainMatch("Test run detected DLL(s) which would use different framework*"); + + fixture.ProcessHelper.Processes.Where(p => p.Started).Should().HaveCount(2); + var startWithSources1 = testhost1.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources1Text = startWithSources1.Request.GetRawMessage(); + // We sent mstest1.dll. + startWithSources1Text.Should().Contain("mstest1.dll"); + // And we sent net5 as the target framework, because that is the framework of mstest1.dll. + startWithSources1Text.Should().Contain(KnownFrameworkStrings.Net5); + + var startWithSources2 = testhost2.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources2Text = startWithSources2.Request.GetRawMessage(); + // We sent mstest2.dll. + startWithSources2Text.Should().Contain("mstest2.dll"); + // And we sent net48 as the target framework, because that is the framework of mstest2.dll. + startWithSources2Text.Should().Contain(KnownFrameworkStrings.Net6); + + fixture.ExecutedTests.Should().HaveCount(mstest1Dll.TestCount + mstest2Dll.TestCount); + } + + [Test(@" + Given two test assemblies that have the same architecture + but have different target frameworks. + + When we execute tests + and provide runsettings that define the desired target framework. + + Then two testhosts should be started that target the framework chosen by runsettings. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task D() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(11, 5) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, afterAction: _ => testhost1Process.Exit()) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + // -- + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net6) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(21, 5) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost2Process.Exit()) + // We actually do get asked to terminate multiple times. In the second host only. + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + mstest1Dll.FrameworkName.Should().NotBe(mstest2Dll.FrameworkName); + + // -- act + var testRunRequestPayload = new TestRunRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + RunSettings = $"{KnownFrameworkStrings.Net7}" + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.RunTests(testRunRequestPayload, testHostLauncher: null, fixture.TestRunEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + // We specify net7 which is not compatible with either, so we should get warnings + fixture.LoggedWarnings.Should().ContainMatch("Test run detected DLL(s) which would use different framework*"); + + fixture.ProcessHelper.Processes.Where(p => p.Started).Should().HaveCount(2); + var startWithSources1 = testhost1.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources1Text = startWithSources1.Request.GetRawMessage(); + // We sent mstest1.dll. + startWithSources1Text.Should().Contain("mstest1.dll"); + startWithSources1Text.Should().Contain(KnownFrameworkStrings.Net7); + + var startWithSources2 = testhost2.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources2Text = startWithSources2.Request.GetRawMessage(); + // We sent mstest2.dll. + startWithSources2Text.Should().Contain("mstest2.dll"); + startWithSources2Text.Should().Contain(KnownFrameworkStrings.Net7); + + fixture.ExecutedTests.Should().HaveCount(mstest1Dll.TestCount + mstest2Dll.TestCount); + } + } + + public class MultiTFMTestSessions + { + + [Test(@" + Given two test assemblies that have the same architecture + but have different target frameworks. + + When we execute tests + and provide runsettings that define the desired target framework. + + Then two testhosts should be started that target the framework chosen by runsettings. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task E() + { + // -- arrange + using var fixture = new Fixture(); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(11, 5) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, afterAction: _ => testhost1Process.Exit()) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + // -- + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net6) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(21, 5) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost2Process.Exit()) + // We actually do get asked to terminate multiple times. In the second host only. + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + mstest1Dll.FrameworkName.Should().NotBe(mstest2Dll.FrameworkName); + + // -- act + + var startTestSessionPayload = new StartTestSessionPayload + { + // We need to have a parallel run, otherwise we will create just a single proxy, + // because 1 is the maximum number of proxies to start for non-parallel run. + RunSettings = "0", + Sources = new[] { mstest1Dll.Path, mstest2Dll.Path } + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.StartTestSession(startTestSessionPayload, testHostLauncher: null, fixture.TestSessionEventsHandler, fixture.ProtocolConfig)); + + // You need to pass this on, otherwise it will ignore the test session that you just started. This is a by product of being able to start multiple test sessions. + var testSessionInfo = fixture.TestSessionEventsHandler.StartTestSessionCompleteEvents.Single()!.TestSessionInfo; + + var testRunRequestPayload = new TestRunRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + RunSettings = $"0", + TestSessionInfo = testSessionInfo, + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.RunTests(testRunRequestPayload, testHostLauncher: null, fixture.TestRunEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + // We figure out the framework for each assembly so there should be no incompatibility warnings + fixture.LoggedWarnings.Should().NotContainMatch("Test run detected DLL(s) which would use different framework*"); + + fixture.ProcessHelper.Processes.Where(p => p.Started).Should().HaveCount(2); + var startWithSources1 = testhost1.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources1Text = startWithSources1.Request.GetRawMessage(); + // We sent mstest1.dll. + startWithSources1Text.Should().Contain("mstest1.dll"); + startWithSources1Text.Should().Contain(mstest1Dll.FrameworkName.ToString()); + + var startWithSources2 = testhost2.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources2Text = startWithSources2.Request.GetRawMessage(); + // We sent mstest2.dll. + startWithSources2Text.Should().Contain("mstest2.dll"); + startWithSources2Text.Should().Contain(mstest2Dll.FrameworkName.ToString()); + + fixture.ExecutedTests.Should().HaveCount(mstest1Dll.TestCount + mstest2Dll.TestCount); + } + } +} + +public class MultiTFMRunAndDiscoveryCompatibilityMode +{ + [Test(@" + Given two test assemblies that have the same architecture + but have different target frameworks. + + When DISABLE_MULTI_TFM_RUN is set + and we execute tests. + + Then two testhosts are both started for the same TFM. + ")] + [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Specific test needs to be non-static")] + public async Task E() + { + // -- arrange + using var fixture = new Fixture( + new FixtureOptions + { + FeatureFlags = new Dictionary + { + [FeatureFlag.VSTEST_DISABLE_MULTI_TFM_RUN] = true + } + } + ); + + var mstest1Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest1.dll") + .WithFramework(KnownFrameworkNames.Net5) // <--- + .WithArchitecture(Architecture.X64) + .WithTestCount(2) + .Build(); + + var testhost1Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost1.exe"); + + var runTests1 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest1Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, afterAction: _ => testhost1Process.Exit()) + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost1 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest1Dll) + .WithProcess(testhost1Process) + .WithResponses(runTests1) + .Build(); + + // -- + + var mstest2Dll = new FakeTestDllBuilder() + .WithPath(@"X:\fake\mstest2.dll") + .WithFramework(KnownFrameworkNames.Net48) // <--- + .WithArchitecture(Architecture.X64) + // In reality, the dll would fail to load, and no tests would run from this dll, + // we simulate that by making it have 0 tests. + .WithTestCount(0) + .Build(); + + var testhost2Process = new FakeProcess(fixture.ErrorAggregator, @"X:\fake\testhost2.exe"); + + var runTests2 = new FakeTestHostResponsesBuilder() + .VersionCheck(5) + .ExecutionInitialize(FakeMessage.NoResponse) + .StartTestExecutionWithSources(mstest2Dll.TestResultBatches) + .SessionEnd(FakeMessage.NoResponse, _ => testhost2Process.Exit()) + .SessionEnd(FakeMessage.NoResponse) + .Build(); + + var testhost2 = new FakeTestHostFixtureBuilder(fixture) + .WithTestDll(mstest2Dll) + .WithProcess(testhost2Process) + .WithResponses(runTests2) + .Build(); + + fixture.AddTestHostFixtures(testhost1, testhost2); + + var testRequestManager = fixture.BuildTestRequestManager(); + + mstest1Dll.FrameworkName.Should().NotBe(mstest2Dll.FrameworkName); + + // -- act + var testRunRequestPayload = new TestRunRequestPayload + { + Sources = new List { mstest1Dll.Path, mstest2Dll.Path }, + RunSettings = $"", + }; + + await testRequestManager.ExecuteWithAbort(tm => tm.RunTests(testRunRequestPayload, testHostLauncher: null, fixture.TestRunEventsRegistrar, fixture.ProtocolConfig)); + + // -- assert + fixture.AssertNoErrors(); + // We unify the frameworks to netcoreapp1.0 (because the vstest.console dll we are loading is built for netcoreapp and prefers netcoreapp), and because the + // behavior is to choose the common oldest framework. We then log warning about incompatible sources. + fixture.LoggedWarnings.Should().ContainMatch($"Test run detected DLL(s) which would use different framework and platform versions*{KnownFrameworkNames.Netcoreapp1}*"); + + // We started both testhosts, even thought we know one of them is incompatible. + fixture.ProcessHelper.Processes.Where(p => p.Started).Should().HaveCount(2); + var startWithSources1 = testhost1.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources1Text = startWithSources1.Request.GetRawMessage(); + // We sent mstest1.dll + startWithSources1Text.Should().Contain("mstest1.dll"); + // And we sent netcoreapp1.0 as the target framework, because that is the common fallback + startWithSources1Text.Should().Contain(KnownFrameworkStrings.Netcoreapp1); + + var startWithSources2 = testhost2.FakeCommunicationChannel.ProcessedMessages.Single(m => m.Request.MessageType == MessageType.StartTestExecutionWithSources); + var startWithSources2Text = startWithSources2.Request.GetRawMessage(); + // We sent mstest2.dll + startWithSources2Text.Should().Contain("mstest2.dll"); + // And we sent netcoreapp1.0 as the target framework, because that is the common fallback, even though the source is not compatible with it + startWithSources2Text.Should().Contain(KnownFrameworkStrings.Netcoreapp1); + + fixture.ExecutedTests.Should().HaveCount(mstest1Dll.TestCount); + } +} + +internal static class MessageExtensions +{ + private static MethodInfo? s_messageProperty; + + internal static string GetRawMessage(this Message request) + { + if (s_messageProperty == null) + { + s_messageProperty = request.GetType().GetProperty("RawMessage")!.GetGetMethod(); + } + + return (string)s_messageProperty!.Invoke(request, [])!; + } +} + +// Test and improvmement ideas: +// TODO: passing null runsettings does not fail fast, instead it fails in Fakes settings code +// TODO: passing empty string fails in the xml parser code +// TODO: passing null sources and null testcases does not fail fast +// TODO: Just calling Exit, Close won't stop the run, we will keep waiting for test run to complete, I think in real life when we exit then Disconnected will be called on the vstest.console side, leading to abort flow. +//.StartTestExecutionWithSources(new FakeMessage(MessageType.TestMessage, new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = "Loading type failed." }), afterAction: f => { /*f.Process.Exit();*/ f.FakeCommunicationEndpoint.Disconnect(); }) diff --git a/test/vstest.ProgrammerTests/Program.cs b/test/vstest.ProgrammerTests/Program.cs new file mode 100644 index 0000000000..f6d0f025be --- /dev/null +++ b/test/vstest.ProgrammerTests/Program.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Reflection; + +namespace vstest.ProgrammerTests; + +internal class Program +{ + static void Main() + { + Intent.Console.Program.Main([Assembly.GetExecutingAssembly().Location]); + } +} diff --git a/test/vstest.ProgrammerTests/Properties/launchSettings.json b/test/vstest.ProgrammerTests/Properties/launchSettings.json new file mode 100644 index 0000000000..7425c62a46 --- /dev/null +++ b/test/vstest.ProgrammerTests/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "WSL": { + "commandName": "WSL2", + "distributionName": "" + }, + "vstest.ProgrammerTests": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/test/vstest.ProgrammerTests/vstest.ProgrammerTests.csproj b/test/vstest.ProgrammerTests/vstest.ProgrammerTests.csproj new file mode 100644 index 0000000000..8239cfe76f --- /dev/null +++ b/test/vstest.ProgrammerTests/vstest.ProgrammerTests.csproj @@ -0,0 +1,35 @@ + + + + false + false + + + + enable + true + net8.0 + Exe + + + + + + + + + true + + + true + + + + + + + + + + + diff --git a/test/vstest.console.PlatformTests/AssemblyMetadataProviderTests.cs b/test/vstest.console.PlatformTests/AssemblyMetadataProviderTests.cs deleted file mode 100644 index e479237fa8..0000000000 --- a/test/vstest.console.PlatformTests/AssemblyMetadataProviderTests.cs +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.PlatformTests -{ - using System; - using System.Diagnostics; - using System.IO; - using Microsoft.TestPlatform.TestUtilities; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using Utilities.Helpers; - using Utilities.Helpers.Interfaces; - - [TestClass] - public class AssemblyMetadataProviderTests : IntegrationTestBase - { - private const int ExpectedTimeForFindingArchForDotNetAssembly = 15; // In milliseconds. - private const string PerfAssertMessageFormat = "Expected Elapsed Time: {0} ms, Actual Elapsed Time: {1} ms"; - - private IAssemblyMetadataProvider assemblyMetadataProvider; - - private Mock fileHelperMock; - - private FileHelper fileHelper; - - private bool isManagedAssemblyArchitectureTest; - - public AssemblyMetadataProviderTests() - { - this.fileHelper = new FileHelper(); - this.fileHelperMock = new Mock(); - this.isManagedAssemblyArchitectureTest = false; - this.assemblyMetadataProvider = new AssemblyMetadataProvider(this.fileHelperMock.Object); - - this.fileHelperMock.Setup(f => - f.GetStream(It.IsAny(), FileMode.Open, FileAccess.Read)) - .Returns((filePath, mode, access) => this.fileHelper.GetStream(filePath, mode, access)); - } - - [TestCleanup] - public void Cleanup() - { - if (!this.isManagedAssemblyArchitectureTest) - { - this.fileHelperMock.Verify( - f => f.GetStream(It.IsAny(), FileMode.Open, FileAccess.Read), Times.Once); - } - } - - [TestMethod] - [DataRow("net451")] - [DataRow("netcoreapp2.1")] - public void GetArchitectureShouldReturnCorrentArchForx64Assembly(string framework) - { - this.TestDotnetAssemblyArch("SimpleTestProject3", framework, Architecture.X64, expectedElapsedTime: ExpectedTimeForFindingArchForDotNetAssembly); - } - - [TestMethod] - [DataRow("net451")] - [DataRow("netcoreapp2.1")] - public void GetArchitectureShouldReturnCorrentArchForx86Assembly(string framework) - { - this.TestDotnetAssemblyArch("SimpleTestProjectx86", framework, Architecture.X86, expectedElapsedTime: ExpectedTimeForFindingArchForDotNetAssembly); - } - - [TestMethod] - [DataRow("net451")] - [DataRow("netcoreapp2.1")] - public void GetArchitectureShouldReturnCorrentArchForAnyCPUAssembly(string framework) - { - this.TestDotnetAssemblyArch("SimpleTestProject", framework, Architecture.AnyCPU, expectedElapsedTime: ExpectedTimeForFindingArchForDotNetAssembly); - } - - [TestMethod] - [DataRow("net451")] - [DataRow("netcoreapp2.1")] - public void GetArchitectureShouldReturnCorrentArchForARMAssembly(string framework) - { - this.TestDotnetAssemblyArch("SimpleTestProjectARM", framework, Architecture.ARM, expectedElapsedTime: ExpectedTimeForFindingArchForDotNetAssembly); - } - - [TestMethod] - [DataRow("x86")] - [DataRow("x64")] - public void GetArchitectureForNativeDll(string platform) - { - var expectedElapsedTime = 5; - var platformPath = platform.Equals("x64") ? platform : string.Empty; - var assemblyPath = $@"{this.testEnvironment.PackageDirectory}\microsoft.testplatform.testasset.nativecpp\2.0.0\" - + $@"contentFiles\any\any\{platformPath}\Microsoft.TestPlatform.TestAsset.NativeCPP.dll"; - this.LoadAssemblyIntoMemory(assemblyPath); - var stopWatch = Stopwatch.StartNew(); - var arch = this.assemblyMetadataProvider.GetArchitecture(assemblyPath); - stopWatch.Stop(); - - Console.WriteLine("Platform:{0}, {1}", platform, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - Assert.AreEqual(Enum.Parse(typeof(Architecture), platform, ignoreCase: true), arch); - - // We should not assert on time elapsed, it will vary depending on machine, & their state, commenting below assert - // Assert.IsTrue(stopWatch.ElapsedMilliseconds < expectedElapsedTime, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - } - - [TestMethod] - [DataRow("net451")] - [DataRow("netcoreapp2.1")] - public void GetFrameWorkForDotNetAssembly(string framework) - { - var expectedElapsedTime = 5; - var assemblyPath = this.testEnvironment.GetTestAsset("SimpleTestProject3.dll", framework); - this.LoadAssemblyIntoMemory(assemblyPath); - var stopWatch = Stopwatch.StartNew(); - var actualFx = this.assemblyMetadataProvider.GetFrameWork(assemblyPath); - stopWatch.Stop(); - - if (framework.Equals("net451")) - { - // Reason is unknown for why full framework it is taking more time. Need to investigate. - expectedElapsedTime = 100; - Assert.AreEqual(Constants.DotNetFramework451, actualFx.FullName); - } - else - { - Assert.AreEqual(".NETCoreApp,Version=v2.1", actualFx.FullName); - } - - Console.WriteLine("Framework:{0}, {1}", framework, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - - // We should not assert on time elapsed, it will vary depending on machine, & their state. - // Assert.IsTrue(stopWatch.ElapsedMilliseconds < expectedElapsedTime, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - } - - [TestMethod] - public void GetFrameWorkForNativeDll() - { - var expectedElapsedTime = 5; - var assemblyPath = $@"{this.testEnvironment.PackageDirectory}\microsoft.testplatform.testasset.nativecpp\2.0.0\contentFiles\any\any\Microsoft.TestPlatform.TestAsset.NativeCPP.dll"; - this.LoadAssemblyIntoMemory(assemblyPath); - var stopWatch = Stopwatch.StartNew(); - var fx = this.assemblyMetadataProvider.GetFrameWork(assemblyPath); - stopWatch.Stop(); - - Console.WriteLine(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds); - Assert.AreEqual(Framework.DefaultFramework.Name, fx.FullName); - - // We should not assert on time elapsed, it will vary depending on machine, & their state. - // Assert.IsTrue(stopWatch.ElapsedMilliseconds < expectedElapsedTime, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - } - - private void TestDotnetAssemblyArch(string projectName, string framework, Architecture expectedArch, long expectedElapsedTime) - { - this.isManagedAssemblyArchitectureTest = true; - var assemblyPath = this.testEnvironment.GetTestAsset(projectName + ".dll", framework); - this.LoadAssemblyIntoMemory(assemblyPath); - var stopWatch = Stopwatch.StartNew(); - var arch = this.assemblyMetadataProvider.GetArchitecture(assemblyPath); - stopWatch.Stop(); - - Console.WriteLine("Framework:{0}, {1}", framework, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - Assert.AreEqual(expectedArch, arch, $"Expected: {expectedArch} Actual: {arch}"); - - // We should not assert on time elapsed, it will vary depending on machine, & their state. - // Assert.IsTrue(stopWatch.ElapsedMilliseconds < expectedElapsedTime, string.Format(PerfAssertMessageFormat, expectedElapsedTime, stopWatch.ElapsedMilliseconds)); - } - - private void LoadAssemblyIntoMemory(string assemblyPath) - { - // Load the file into RAM in ahead to avoid performance number(expectedElapsedTime) dependence on disk read time. - File.ReadAllBytes(assemblyPath); - } - } -} diff --git a/test/vstest.console.PlatformTests/Program.cs b/test/vstest.console.PlatformTests/Program.cs deleted file mode 100644 index c4dbddbd90..0000000000 --- a/test/vstest.console.PlatformTests/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.PlatformTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} diff --git a/test/vstest.console.PlatformTests/vstest.console.PlatformTests.csproj b/test/vstest.console.PlatformTests/vstest.console.PlatformTests.csproj deleted file mode 100644 index e2dd910ffa..0000000000 --- a/test/vstest.console.PlatformTests/vstest.console.PlatformTests.csproj +++ /dev/null @@ -1,27 +0,0 @@ - - - - ..\..\ - true - true - - - - netcoreapp2.1;net451 - netcoreapp3.1 - Exe - vstest.console.PlatformTests - true - - - - - - - - - - - - - diff --git a/test/vstest.console.UnitTests/CommandLine/CommandLineOptionsTests.cs b/test/vstest.console.UnitTests/CommandLine/CommandLineOptionsTests.cs index b4dc8ff3a5..a45cdeebc6 100644 --- a/test/vstest.console.UnitTests/CommandLine/CommandLineOptionsTests.cs +++ b/test/vstest.console.UnitTests/CommandLine/CommandLineOptionsTests.cs @@ -1,98 +1,105 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine; + +[TestClass] +public class CommandLineOptionsTests { - using System; - using System.Collections.ObjectModel; - using System.Linq; - - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System.IO; - using vstest.console.Internal; - using Microsoft.Extensions.FileSystemGlobbing; - - [TestClass] - public class CommandLineOptionsTests + private readonly Mock _fileHelper; + private readonly FilePatternParser _filePatternParser; + private readonly string _currentDirectory = @"C:\\Temp"; + + public CommandLineOptionsTests() { - private readonly Mock fileHelper; - private FilePatternParser filePatternParser; - private readonly string currentDirectory = @"C:\\Temp"; - - public CommandLineOptionsTests() - { - this.fileHelper = new Mock(); - this.filePatternParser = new FilePatternParser(new Mock().Object, this.fileHelper.Object); - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.FileHelper = this.fileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = this.filePatternParser; - this.fileHelper.Setup(fh => fh.GetCurrentDirectory()).Returns(currentDirectory); - } - - [TestMethod] - public void CommandLineOptionsDefaultBatchSizeIsTen() - { - Assert.AreEqual(10, CommandLineOptions.Instance.BatchSize); - } - - [TestMethod] - public void CommandLineOptionsDefaultTestRunStatsEventTimeoutIsOnePointFiveSec() - { - var timeout = new TimeSpan(0, 0, 0, 1, 500); - Assert.AreEqual(timeout, CommandLineOptions.Instance.TestStatsEventTimeout); - } - - [TestMethod] - public void CommandLineOptionsGetForSourcesPropertyShouldReturnReadonlySourcesEnumerable() - { - Assert.IsTrue(CommandLineOptions.Instance.Sources is ReadOnlyCollection); - } - - [TestMethod] - public void CommandLineOptionsGetForHasPhoneContextPropertyIfTargetDeviceIsSetReturnsTrue() - { - Assert.IsFalse(CommandLineOptions.Instance.HasPhoneContext); - - // Set some not null value - CommandLineOptions.Instance.TargetDevice = "TargetDevice"; - Assert.IsTrue(CommandLineOptions.Instance.HasPhoneContext); - } - - [TestMethod] - public void CommandLineOptionsAddSourceShouldThrowCommandLineExceptionForNullSource() - { - Assert.ThrowsException(() => CommandLineOptions.Instance.AddSource(null)); - } - - [TestMethod] - public void CommandLineOptionsAddSourceShouldConvertRelativePathToAbsolutePath() - { - string relativeTestFilePath = "DummyTestFile.txt"; - var absolutePath = Path.Combine(currentDirectory, relativeTestFilePath); - this.fileHelper.Setup(fh => fh.Exists(absolutePath)).Returns(true); - - // Pass relative path - CommandLineOptions.Instance.AddSource(relativeTestFilePath); - Assert.IsTrue(CommandLineOptions.Instance.Sources.Contains(absolutePath)); - } - - [TestMethod] - public void CommandLineOptionsAddSourceShouldThrowCommandLineExceptionForInvalidSource() - { - Assert.ThrowsException(() => CommandLineOptions.Instance.AddSource("DummySource")); - } - - [TestMethod] - public void CommandLineOptionsAddSourceShouldAddSourceForValidSource() - { - string testFilePath = Path.Combine(Path.GetTempPath(), "DummyTestFile.txt"); - this.fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); - - CommandLineOptions.Instance.AddSource(testFilePath); - - Assert.IsTrue(CommandLineOptions.Instance.Sources.Contains(testFilePath)); - } + _fileHelper = new Mock(); + _filePatternParser = new FilePatternParser(new Mock().Object, _fileHelper.Object); + CommandLineOptions.Reset(); + CommandLineOptions.Instance.FileHelper = _fileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = _filePatternParser; + _fileHelper.Setup(fh => fh.GetCurrentDirectory()).Returns(_currentDirectory); + } + + [TestMethod] + public void CommandLineOptionsDefaultBatchSizeIsTen() + { + Assert.AreEqual(10, CommandLineOptions.Instance.BatchSize); + } + + [TestMethod] + public void CommandLineOptionsDiscoveryDefaultBatchSizeIsThousand() + { + Assert.AreEqual(1000, CommandLineOptions.DefaultDiscoveryBatchSize); + } + + [TestMethod] + public void CommandLineOptionsDefaultTestRunStatsEventTimeoutIsOnePointFiveSec() + { + var timeout = new TimeSpan(0, 0, 0, 1, 500); + Assert.AreEqual(timeout, CommandLineOptions.Instance.TestStatsEventTimeout); + } + + [TestMethod] + public void CommandLineOptionsGetForSourcesPropertyShouldReturnReadonlySourcesEnumerable() + { + Assert.IsTrue(CommandLineOptions.Instance.Sources is ReadOnlyCollection); + } + + [TestMethod] + public void CommandLineOptionsGetForHasPhoneContextPropertyIfTargetDeviceIsSetReturnsTrue() + { + Assert.IsFalse(CommandLineOptions.Instance.HasPhoneContext); + + // Set some not null value + CommandLineOptions.Instance.TargetDevice = "TargetDevice"; + Assert.IsTrue(CommandLineOptions.Instance.HasPhoneContext); + } + + [TestMethod] + public void CommandLineOptionsAddSourceShouldThrowCommandLineExceptionForNullSource() + { + Assert.ThrowsException(() => CommandLineOptions.Instance.AddSource(null!)); + } + + [TestMethod] + public void CommandLineOptionsAddSourceShouldConvertRelativePathToAbsolutePath() + { + string relativeTestFilePath = "DummyTestFile.txt"; + var absolutePath = Path.Combine(_currentDirectory, relativeTestFilePath); + _fileHelper.Setup(fh => fh.Exists(absolutePath)).Returns(true); + + // Pass relative path + CommandLineOptions.Instance.AddSource(relativeTestFilePath); + Assert.IsTrue(CommandLineOptions.Instance.Sources.Contains(absolutePath)); + } + + [TestMethod] + public void CommandLineOptionsAddSourceShouldThrowCommandLineExceptionForInvalidSource() + { + Assert.ThrowsException(() => CommandLineOptions.Instance.AddSource("DummySource")); + } + + [TestMethod] + public void CommandLineOptionsAddSourceShouldAddSourceForValidSource() + { + string testFilePath = Path.Combine(Path.GetTempPath(), "DummyTestFile.txt"); + _fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); + + CommandLineOptions.Instance.AddSource(testFilePath); + + Assert.IsTrue(CommandLineOptions.Instance.Sources.Contains(testFilePath)); } } diff --git a/test/vstest.console.UnitTests/CommandLine/GenerateFakesUtilitiesTests.cs b/test/vstest.console.UnitTests/CommandLine/GenerateFakesUtilitiesTests.cs index 11fd95ee4a..201ee8312c 100644 --- a/test/vstest.console.UnitTests/CommandLine/GenerateFakesUtilitiesTests.cs +++ b/test/vstest.console.UnitTests/CommandLine/GenerateFakesUtilitiesTests.cs @@ -1,44 +1,44 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine; + +[TestClass] +public class GenerateFakesUtilitiesTests { - using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; + private readonly Mock _fileHelper; + private readonly string _currentDirectory = @"C:\\Temp"; + private readonly string _runSettings = string.Empty; + + public GenerateFakesUtilitiesTests() + { + _fileHelper = new Mock(); + CommandLineOptions.Reset(); + CommandLineOptions.Instance.FileHelper = _fileHelper.Object; + _fileHelper.Setup(fh => fh.GetCurrentDirectory()).Returns(_currentDirectory); + _runSettings = @".netstandard,Version=5.0"; + } - [TestClass] - public class GenerateFakesUtilitiesTests + [TestMethod] + public void CommandLineOptionsDefaultDisableAutoFakesIsFalse() { - private readonly Mock fileHelper; - private readonly string currentDirectory = @"C:\\Temp"; - private string runSettings = string.Empty; - - public GenerateFakesUtilitiesTests() - { - this.fileHelper = new Mock(); - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.FileHelper = this.fileHelper.Object; - this.fileHelper.Setup(fh => fh.GetCurrentDirectory()).Returns(currentDirectory); - this.runSettings = @".netstandard,Version=5.0"; - } - - [TestMethod] - public void CommandLineOptionsDefaultDisableAutoFakesIsFalse() - { - Assert.IsFalse(CommandLineOptions.Instance.DisableAutoFakes); - } - - [TestMethod] - public void FakesShouldNotBeGeneratedIfDisableAutoFakesSetToTrue() - { - CommandLineOptions.Instance.DisableAutoFakes = true; - string runSettingsXml = @".netstandard,Version=5.0"; - - GenerateFakesUtilities.GenerateFakesSettings(CommandLineOptions.Instance, new string[] { }, ref runSettingsXml); - Assert.AreEqual(runSettingsXml, this.runSettings); - } + Assert.IsFalse(CommandLineOptions.Instance.DisableAutoFakes); + } + [TestMethod] + public void FakesShouldNotBeGeneratedIfDisableAutoFakesSetToTrue() + { + CommandLineOptions.Instance.DisableAutoFakes = true; + string runSettingsXml = @".netstandard,Version=5.0"; + + runSettingsXml = GenerateFakesUtilities.GenerateFakesSettings(CommandLineOptions.Instance, [], runSettingsXml); + Assert.AreEqual(runSettingsXml, _runSettings); } + } diff --git a/test/vstest.console.UnitTests/CommandLine/InferHelperTests.cs b/test/vstest.console.UnitTests/CommandLine/InferHelperTests.cs index 720986a29e..c03e9bc02a 100644 --- a/test/vstest.console.UnitTests/CommandLine/InferHelperTests.cs +++ b/test/vstest.console.UnitTests/CommandLine/InferHelperTests.cs @@ -3,273 +3,269 @@ using System.Collections.Generic; using System.Runtime.Versioning; + using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine -{ - using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; +using Moq; - [TestClass] - public class InferHelperTests +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine; + +[TestClass] +public class InferHelperTests +{ + private readonly Mock _mockAssemblyHelper; + private readonly InferHelper _inferHelper; + private readonly Framework _defaultFramework = Framework.DefaultFramework; + private readonly Architecture _defaultArchitecture = Architecture.X64; + private readonly Framework _frameworkNet45 = Framework.FromString(".NETFramework,Version=4.5")!; + private readonly Framework _frameworkNet46 = Framework.FromString(".NETFramework,Version=4.6")!; + private readonly Framework _frameworkNet47 = Framework.FromString(".NETFramework,Version=4.7")!; + private readonly Framework _frameworkCore10 = Framework.FromString(".NETCoreApp,Version=1.0")!; + private readonly Framework _frameworkCore11 = Framework.FromString(".NETCoreApp,Version=1.1")!; + + public InferHelperTests() { - private readonly Mock mockAssemblyHelper; - private InferHelper inferHelper; - private readonly Framework defaultFramework = Framework.DefaultFramework; - private readonly Architecture DefaultArchitecture = Architecture.X64; - private readonly Framework frameworkNet45 = Framework.FromString(".NETFramework,Version=4.5"); - private readonly Framework frameworkNet46 = Framework.FromString(".NETFramework,Version=4.6"); - private readonly Framework frameworkNet47 = Framework.FromString(".NETFramework,Version=4.7"); - private readonly Framework frameworkCore10 = Framework.FromString(".NETCoreApp,Version=1.0"); - private readonly Framework frameworkCore11 = Framework.FromString(".NETCoreApp,Version=1.1"); - private IDictionary sourceFrameworks; - private IDictionary sourceArchitectures; - - public InferHelperTests() - { - this.mockAssemblyHelper = new Mock(); - inferHelper = new InferHelper(this.mockAssemblyHelper.Object); - sourceFrameworks = new Dictionary(); - sourceArchitectures = new Dictionary(); - } + _mockAssemblyHelper = new Mock(); + _inferHelper = new InferHelper(_mockAssemblyHelper.Object); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnNullSources() - { - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(null, sourceArchitectures, DefaultArchitecture)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnNullSources() + { + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(null, _defaultArchitecture, out _)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnEmptySources() - { - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List(0), sourceArchitectures, DefaultArchitecture)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnEmptySources() + { + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List(0), _defaultArchitecture, out _)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnNullItemInSources() - { - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List(){null}, sourceArchitectures, DefaultArchitecture)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnNullItemInSources() + { + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { null! }, _defaultArchitecture, out _)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnWhiteSpaceItemInSources() - { - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List() { " "}, sourceArchitectures, DefaultArchitecture)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchitectureOnWhiteSpaceItemInSources() + { + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { " " }, _defaultArchitecture, out _)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnCorrectArchForOneSource() - { - this.mockAssemblyHelper.Setup(ah => ah.GetArchitecture(It.IsAny())).Returns(Architecture.X86); - Assert.AreEqual(Architecture.X86, inferHelper.AutoDetectArchitecture(new List(){"1.dll"}, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny())); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnCorrectArchForOneSource() + { + _mockAssemblyHelper.Setup(ah => ah.GetArchitecture(It.IsAny())).Returns(Architecture.X86); + Assert.AreEqual(Architecture.X86, _inferHelper.AutoDetectArchitecture(new List() { "1.dll" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny())); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnCorrectDefaultArchForNotDotNetAssembly() - { - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List() { "NotDotNetAssebly.appx" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Never); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnCorrectDefaultArchForNotDotNetAssembly() + { + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { "NotDotNetAssebly.appx" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Never); + } - [TestMethod] - public void AutoDetectArchitectureShouldSetAnyCpuArchForNotDotNetAssembly() - { - inferHelper.AutoDetectArchitecture(new List() { "NotDotNetAssebly.appx" }, sourceArchitectures, DefaultArchitecture); - Assert.AreEqual(Architecture.AnyCPU, sourceArchitectures["NotDotNetAssebly.appx"]); - } + [TestMethod] + public void AutoDetectArchitectureShouldSetDefaultArchForNotDotNetAssembly() + { + _inferHelper.AutoDetectArchitecture(new List() { "NotDotNetAssebly.appx" }, _defaultArchitecture, out var sourceArchitectures); + Assert.AreEqual(_defaultArchitecture, sourceArchitectures["NotDotNetAssebly.appx"]); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchForAllAnyCpuAssemblies() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU); - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "AnyCPU2.exe", "AnyCPU3.dll" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchForAllAnyCpuAssemblies() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU); + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "AnyCPU2.exe", "AnyCPU3.dll" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnX86ArchIfOneX86AssemblyAndRestAnyCPU() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU).Returns(Architecture.X86); - Assert.AreEqual(Architecture.X86, inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "AnyCPU2.exe", "x86.dll" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnX86ArchIfOneX86AssemblyAndRestAnyCPU() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU).Returns(Architecture.X86); + Assert.AreEqual(Architecture.X86, _inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "AnyCPU2.exe", "x86.dll" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnARMArchIfOneARMAssemblyAndRestAnyCPU() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM).Returns(Architecture.ARM).Returns(Architecture.ARM); - Assert.AreEqual(Architecture.ARM, inferHelper.AutoDetectArchitecture(new List() { "ARM1.dll", "ARM2.dll", "ARM3.dll" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnARMArchIfOneARMAssemblyAndRestAnyCPU() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM).Returns(Architecture.ARM).Returns(Architecture.ARM); + Assert.AreEqual(Architecture.ARM, _inferHelper.AutoDetectArchitecture(new List() { "ARM1.dll", "ARM2.dll", "ARM3.dll" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnX64ArchIfOneX64AssemblyAndRestAnyCPU() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU).Returns(Architecture.X64); - Assert.AreEqual(Architecture.X64, inferHelper.AutoDetectArchitecture(new List() { "x64.dll", "AnyCPU2.exe", "x64.dll" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnX64ArchIfOneX64AssemblyAndRestAnyCPU() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.AnyCPU).Returns(Architecture.AnyCPU).Returns(Architecture.X64); + Assert.AreEqual(Architecture.X64, _inferHelper.AutoDetectArchitecture(new List() { "x64.dll", "AnyCPU2.exe", "x64-2.dll" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchOnConflictArches() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.AnyCPU).Returns(Architecture.X64).Returns(Architecture.X86); - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "x64.exe", "x86.dll" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchOnConflictArches() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.AnyCPU).Returns(Architecture.X64).Returns(Architecture.X86); + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "x64.exe", "x86.dll" }, _defaultArchitecture, out _)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectArchitectureShouldPoulateSourceArchitectureDictionary() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.AnyCPU).Returns(Architecture.X64).Returns(Architecture.X86); + [TestMethod] + public void AutoDetectArchitectureShouldPopulateSourceArchitectureDictionary() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.AnyCPU).Returns(Architecture.X64).Returns(Architecture.X86); - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "x64.exe", "x86.dll" }, sourceArchitectures, DefaultArchitecture)); - Assert.AreEqual(3, sourceArchitectures.Count); - Assert.AreEqual(Architecture.AnyCPU, sourceArchitectures["AnyCPU1.dll"]); - Assert.AreEqual(Architecture.X64, sourceArchitectures["x64.exe"]); - Assert.AreEqual(Architecture.X86, sourceArchitectures["x86.dll"]); + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "x64.exe", "x86.dll" }, _defaultArchitecture, out var sourceArchitectures)); + Assert.AreEqual(3, sourceArchitectures.Count); + Assert.AreEqual(_defaultArchitecture, sourceArchitectures["AnyCPU1.dll"]); + Assert.AreEqual(Architecture.X64, sourceArchitectures["x64.exe"]); + Assert.AreEqual(Architecture.X86, sourceArchitectures["x86.dll"]); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); - } + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectArchitectureShouldReturnDefaultArchIfthereIsNotDotNetAssemblyInSources() - { - this.mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) - .Returns(Architecture.AnyCPU); - Assert.AreEqual(DefaultArchitecture, inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "NotDotNetAssebly.appx" }, sourceArchitectures, DefaultArchitecture)); - this.mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(1)); - } + [TestMethod] + public void AutoDetectArchitectureShouldReturnDefaultArchIfthereIsNotDotNetAssemblyInSources() + { + _mockAssemblyHelper.SetupSequence(ah => ah.GetArchitecture(It.IsAny())) + .Returns(Architecture.AnyCPU); + Assert.AreEqual(_defaultArchitecture, _inferHelper.AutoDetectArchitecture(new List() { "AnyCPU1.dll", "NotDotNetAssebly.appx" }, _defaultArchitecture, out var sourceArchitectures)); + _mockAssemblyHelper.Verify(ah => ah.GetArchitecture(It.IsAny()), Times.Exactly(1)); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnNullSources() - { - Assert.AreEqual(defaultFramework, inferHelper.AutoDetectFramework(null, sourceFrameworks)); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnNullSources() + { + Assert.AreEqual(_defaultFramework, _inferHelper.AutoDetectFramework(null, out _)); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnEmptySources() - { - Assert.AreEqual(defaultFramework, inferHelper.AutoDetectFramework(new List(0), sourceFrameworks)); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnEmptySources() + { + Assert.AreEqual(_defaultFramework, _inferHelper.AutoDetectFramework(new List(0), out _)); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnNullItemInSources() - { - Assert.AreEqual(defaultFramework, inferHelper.AutoDetectFramework(new List(){null}, sourceFrameworks)); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnNullItemInSources() + { + Assert.AreEqual(_defaultFramework, _inferHelper.AutoDetectFramework(new List() { null! }, out _)); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnEmptyItemInSources() - { - Assert.AreEqual(defaultFramework.Name, inferHelper.AutoDetectFramework(new List() { string.Empty }, sourceFrameworks).Name); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnDefaultFrameworkOnEmptyItemInSources() + { + Assert.AreEqual(_defaultFramework.Name, _inferHelper.AutoDetectFramework(new List() { string.Empty }, out _).Name); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnFrameworkCore10OnCore10Sources() - { - var fx = frameworkCore10; - var assemblyName = "netcoreapp.dll"; - SetupAndValidateForSingleAssembly(assemblyName, fx, true); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnFrameworkCore10OnCore10Sources() + { + var fx = _frameworkCore10; + var assemblyName = "netcoreapp.dll"; + SetupAndValidateForSingleAssembly(assemblyName, fx, true); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnFramework46On46Sources() - { - var fx = frameworkNet46; - var assemblyName = "net46.dll"; - SetupAndValidateForSingleAssembly(assemblyName, fx, true); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnFramework46On46Sources() + { + var fx = _frameworkNet46; + var assemblyName = "net46.dll"; + SetupAndValidateForSingleAssembly(assemblyName, fx, true); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnFrameworkUap10ForAppxFiles() - { - var fx = Framework.FromString(Constants.DotNetFrameworkUap10); - var assemblyName = "uwp10.appx"; - SetupAndValidateForSingleAssembly(assemblyName, fx, false); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnFrameworkUap10ForAppxFiles() + { + var fx = Framework.FromString(Constants.DotNetFrameworkUap10)!; + var assemblyName = "uwp10.appx"; + SetupAndValidateForSingleAssembly(assemblyName, fx, false); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnFrameworkUap10ForMsixFiles() - { - var fx = Framework.FromString(Constants.DotNetFrameworkUap10); - var assemblyName = "uwp10.msix"; - SetupAndValidateForSingleAssembly(assemblyName, fx, false); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnFrameworkUap10ForMsixFiles() + { + var fx = Framework.FromString(Constants.DotNetFrameworkUap10)!; + var assemblyName = "uwp10.msix"; + SetupAndValidateForSingleAssembly(assemblyName, fx, false); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnFrameworkUap10ForAppxrecipeFiles() - { - var fx = Framework.FromString(Constants.DotNetFrameworkUap10); - var assemblyName = "uwp10.appxrecipe"; - SetupAndValidateForSingleAssembly(assemblyName, fx, false); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnFrameworkUap10ForAppxrecipeFiles() + { + var fx = Framework.FromString(Constants.DotNetFrameworkUap10)!; + var assemblyName = "uwp10.appxrecipe"; + SetupAndValidateForSingleAssembly(assemblyName, fx, false); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnDefaultFullFrameworkForJsFiles() - { - var fx = Framework.FromString(Constants.DotNetFramework40); - var assemblyName = "vstests.js"; - SetupAndValidateForSingleAssembly(assemblyName, fx, false); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnDefaultFullFrameworkForJsFiles() + { + var fx = Framework.FromString(Constants.DotNetFramework40)!; + var assemblyName = "vstests.js"; + SetupAndValidateForSingleAssembly(assemblyName, fx, false); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnHighestVersionFxOnSameFxName() - { - this.mockAssemblyHelper.SetupSequence(sh => sh.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(frameworkNet46.Name)) - .Returns(new FrameworkName(frameworkNet47.Name)) - .Returns(new FrameworkName(frameworkNet45.Name)); - Assert.AreEqual(frameworkNet47.Name, inferHelper.AutoDetectFramework(new List() { "net46.dll", "net47.exe", "net45.dll" }, sourceFrameworks).Name); - this.mockAssemblyHelper.Verify(ah => ah.GetFrameWork(It.IsAny()),Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnHighestVersionFxOnSameFxName() + { + _mockAssemblyHelper.SetupSequence(sh => sh.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(_frameworkNet46.Name)) + .Returns(new FrameworkName(_frameworkNet47.Name)) + .Returns(new FrameworkName(_frameworkNet45.Name)); + Assert.AreEqual(_frameworkNet47.Name, _inferHelper.AutoDetectFramework(new List() { "net46.dll", "net47.exe", "net45.dll" }, out _).Name); + _mockAssemblyHelper.Verify(ah => ah.GetFrameworkName(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectFrameworkShouldPopulatetheDictionaryForAllTheSources() - { - this.mockAssemblyHelper.SetupSequence(sh => sh.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(frameworkNet46.Name)) - .Returns(new FrameworkName(frameworkNet47.Name)) - .Returns(new FrameworkName(frameworkNet45.Name)); - - Assert.AreEqual(frameworkNet47.Name, inferHelper.AutoDetectFramework(new List() { "net46.dll", "net47.exe", "net45.dll" }, sourceFrameworks).Name); - - Assert.AreEqual(3, sourceFrameworks.Count); - Assert.AreEqual(frameworkNet46.Name, sourceFrameworks["net46.dll"].Name); - Assert.AreEqual(frameworkNet47.Name, sourceFrameworks["net47.exe"].Name); - Assert.AreEqual(frameworkNet45.Name, sourceFrameworks["net45.dll"].Name); - this.mockAssemblyHelper.Verify(ah => ah.GetFrameWork(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectFrameworkShouldPopulatetheDictionaryForAllTheSources() + { + _mockAssemblyHelper.SetupSequence(sh => sh.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(_frameworkNet46.Name)) + .Returns(new FrameworkName(_frameworkNet47.Name)) + .Returns(new FrameworkName(_frameworkNet45.Name)); + + Assert.AreEqual(_frameworkNet47.Name, _inferHelper.AutoDetectFramework(new List() { "net46.dll", "net47.exe", "net45.dll" }, out var sourceFrameworks).Name); + + Assert.AreEqual(3, sourceFrameworks.Count); + Assert.AreEqual(_frameworkNet46.Name, sourceFrameworks["net46.dll"].Name); + Assert.AreEqual(_frameworkNet47.Name, sourceFrameworks["net47.exe"].Name); + Assert.AreEqual(_frameworkNet45.Name, sourceFrameworks["net45.dll"].Name); + _mockAssemblyHelper.Verify(ah => ah.GetFrameworkName(It.IsAny()), Times.Exactly(3)); + } - [TestMethod] - public void AutoDetectFrameworkShouldReturnHighestVersionFxOnEvenManyLowerVersionFxNameExists() - { - this.mockAssemblyHelper.SetupSequence(sh => sh.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(frameworkCore10.Name)) - .Returns(new FrameworkName(frameworkCore11.Name)) - .Returns(new FrameworkName(frameworkCore10.Name)); - Assert.AreEqual(frameworkCore11.Name, inferHelper.AutoDetectFramework(new List() { "netcore10_1.dll", "netcore11.dll", "netcore10_2.dll" }, sourceFrameworks).Name); - this.mockAssemblyHelper.Verify(ah => ah.GetFrameWork(It.IsAny()), Times.Exactly(3)); - } + [TestMethod] + public void AutoDetectFrameworkShouldReturnHighestVersionFxOnEvenManyLowerVersionFxNameExists() + { + _mockAssemblyHelper.SetupSequence(sh => sh.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(_frameworkCore10.Name)) + .Returns(new FrameworkName(_frameworkCore11.Name)) + .Returns(new FrameworkName(_frameworkCore10.Name)); + Assert.AreEqual(_frameworkCore11.Name, _inferHelper.AutoDetectFramework(new List() { "netcore10_1.dll", "netcore11.dll", "netcore10_2.dll" }, out _).Name); + _mockAssemblyHelper.Verify(ah => ah.GetFrameworkName(It.IsAny()), Times.Exactly(3)); + } - private void SetupAndValidateForSingleAssembly(string assemblyName, Framework fx, bool verify) + private void SetupAndValidateForSingleAssembly(string assemblyName, Framework fx, bool verify) + { + _mockAssemblyHelper.Setup(sh => sh.GetFrameworkName(assemblyName)) + .Returns(new FrameworkName(fx.Name)); + Assert.AreEqual(fx.Name, _inferHelper.AutoDetectFramework(new List() { assemblyName }, out _).Name); + if (verify) { - this.mockAssemblyHelper.Setup(sh => sh.GetFrameWork(assemblyName)) - .Returns(new FrameworkName(fx.Name)); - Assert.AreEqual(fx.Name, inferHelper.AutoDetectFramework(new List() { assemblyName }, sourceFrameworks).Name); - if (verify) - { - this.mockAssemblyHelper.Verify(ah => ah.GetFrameWork(assemblyName)); - } + _mockAssemblyHelper.Verify(ah => ah.GetFrameworkName(assemblyName)); } } } diff --git a/test/vstest.console.UnitTests/CommandLine/TestRunResultAggregatorTests.cs b/test/vstest.console.UnitTests/CommandLine/TestRunResultAggregatorTests.cs index ffd898b325..b00db755b2 100644 --- a/test/vstest.console.UnitTests/CommandLine/TestRunResultAggregatorTests.cs +++ b/test/vstest.console.UnitTests/CommandLine/TestRunResultAggregatorTests.cs @@ -1,141 +1,139 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine -{ - using System; - using System.Collections.Generic; - using System.Runtime.Serialization; +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; +using Moq; - using ObjectModel; - using ObjectModel.Client; - using ObjectModel.Logging; +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.CommandLine; - [TestClass] - public class TestRunResultAggregatorTests - { - TestRunResultAggregator resultAggregator = TestRunResultAggregator.Instance; - Mock mockTestRunRequest; +[TestClass] +public class TestRunResultAggregatorTests +{ + private readonly TestRunResultAggregator _resultAggregator = TestRunResultAggregator.Instance; + private readonly Mock _mockTestRunRequest; - [TestInitialize] - public void TestInit() - { - resultAggregator.Reset(); - mockTestRunRequest = new Mock(); - resultAggregator.RegisterTestRunEvents(mockTestRunRequest.Object); - } + public TestRunResultAggregatorTests() + { + _resultAggregator.Reset(); + _mockTestRunRequest = new Mock(); + _resultAggregator.RegisterTestRunEvents(_mockTestRunRequest.Object); + } - [TestCleanup] - public void TestCleanup() - { - resultAggregator.UnregisterTestRunEvents(mockTestRunRequest.Object); - } + [TestCleanup] + public void TestCleanup() + { + _resultAggregator.UnregisterTestRunEvents(_mockTestRunRequest.Object); + } - [TestMethod] - public void DefaultOutcomeIsPassed() - { - Assert.AreEqual(TestOutcome.Passed, resultAggregator.Outcome); - } + [TestMethod] + public void DefaultOutcomeIsPassed() + { + Assert.AreEqual(TestOutcome.Passed, _resultAggregator.Outcome); + } - [TestMethod] - public void MarkTestRunFailedSetsOutcomeToFailed() - { - resultAggregator.MarkTestRunFailed(); - Assert.AreEqual(TestOutcome.Failed, resultAggregator.Outcome); - } + [TestMethod] + public void MarkTestRunFailedSetsOutcomeToFailed() + { + _resultAggregator.MarkTestRunFailed(); + Assert.AreEqual(TestOutcome.Failed, _resultAggregator.Outcome); + } - [TestMethod] - public void TestRunMessageHandlerForMessageLevelErrorSetsOutcomeToFailed() - { - var messageArgs = new TestRunMessageEventArgs(TestMessageLevel.Error, "bad stuff"); - mockTestRunRequest.Raise(tr => tr.TestRunMessage += null, messageArgs); - Assert.AreEqual(TestOutcome.Failed, resultAggregator.Outcome); - } + [TestMethod] + public void TestRunMessageHandlerForMessageLevelErrorSetsOutcomeToFailed() + { + var messageArgs = new TestRunMessageEventArgs(TestMessageLevel.Error, "bad stuff"); + _mockTestRunRequest.Raise(tr => tr.TestRunMessage += null, messageArgs); + Assert.AreEqual(TestOutcome.Failed, _resultAggregator.Outcome); + } - [TestMethod] - public void TestRunCompletionHandlerForTestRunStatisticsNullSetsOutcomeToFailed() - { - var messageArgs = new TestRunCompleteEventArgs(null, false, false, null, null, new TimeSpan()); - mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); - Assert.AreEqual(TestOutcome.Failed, resultAggregator.Outcome); - } + [TestMethod] + public void TestRunCompletionHandlerForTestRunStatisticsNullSetsOutcomeToFailed() + { + var messageArgs = new TestRunCompleteEventArgs(null, false, false, null, null, null, new TimeSpan()); + _mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); + Assert.AreEqual(TestOutcome.Failed, _resultAggregator.Outcome); + } - [TestMethod] - public void TestRunCompletionHandlerForTestRunStatsWithOneOrMoreFailingTestsSetsOutcomeToFailed() + [TestMethod] + public void TestRunCompletionHandlerForTestRunStatsWithOneOrMoreFailingTestsSetsOutcomeToFailed() + { + var testOutcomeDict = new Dictionary { - var testOutcomeDict = new System.Collections.Generic.Dictionary(); - testOutcomeDict.Add(TestOutcome.Failed, 1); - var stats = new TestableTestRunStats(testOutcomeDict); + { TestOutcome.Failed, 1 } + }; + var stats = new TestableTestRunStats(testOutcomeDict); - var messageArgs = new TestRunCompleteEventArgs(stats, false, false, null, null, new TimeSpan()); - this.mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); - Assert.AreEqual(TestOutcome.Failed, resultAggregator.Outcome); - } + var messageArgs = new TestRunCompleteEventArgs(stats, false, false, null, null, null, new TimeSpan()); + _mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); + Assert.AreEqual(TestOutcome.Failed, _resultAggregator.Outcome); + } - [TestMethod] - public void TestRunCompletionHandlerForCanceledRunShouldSetsOutcomeToFailed() + [TestMethod] + public void TestRunCompletionHandlerForCanceledRunShouldSetsOutcomeToFailed() + { + var testOutcomeDict = new Dictionary { - var testOutcomeDict = new System.Collections.Generic.Dictionary(); - testOutcomeDict.Add(TestOutcome.Passed, 1); - var stats = new TestableTestRunStats(testOutcomeDict); + { TestOutcome.Passed, 1 } + }; + var stats = new TestableTestRunStats(testOutcomeDict); - var messageArgs = new TestRunCompleteEventArgs(stats, true, false, null, null, new TimeSpan()); - this.mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); - Assert.AreEqual(TestOutcome.Failed, resultAggregator.Outcome); - } + var messageArgs = new TestRunCompleteEventArgs(stats, true, false, null, null, null, new TimeSpan()); + _mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); + Assert.AreEqual(TestOutcome.Failed, _resultAggregator.Outcome); + } - [TestMethod] - public void TestRunCompletionHandlerForAbortedRunShouldSetsOutcomeToFailed() + [TestMethod] + public void TestRunCompletionHandlerForAbortedRunShouldSetsOutcomeToFailed() + { + var testOutcomeDict = new Dictionary { - var testOutcomeDict = new System.Collections.Generic.Dictionary(); - testOutcomeDict.Add(TestOutcome.Passed, 1); - var stats = new TestableTestRunStats(testOutcomeDict); + { TestOutcome.Passed, 1 } + }; + var stats = new TestableTestRunStats(testOutcomeDict); - var messageArgs = new TestRunCompleteEventArgs(stats, false, true, null, null, new TimeSpan()); - this.mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); - Assert.AreEqual(TestOutcome.Failed, resultAggregator.Outcome); - } + var messageArgs = new TestRunCompleteEventArgs(stats, false, true, null, null, null, new TimeSpan()); + _mockTestRunRequest.Raise(tr => tr.OnRunCompletion += null, messageArgs); + Assert.AreEqual(TestOutcome.Failed, _resultAggregator.Outcome); + } - #region Implementation + #region Implementation - private class TestableTestRunStats : ITestRunStatistics + private class TestableTestRunStats : ITestRunStatistics + { + public TestableTestRunStats(Dictionary stats) { - public TestableTestRunStats(Dictionary stats) - { - this.Stats = stats; - } + Stats = stats; + } - public long ExecutedTests { get; set; } + public long ExecutedTests { get; set; } - /// - /// Gets the test stats which is the test outcome versus its state. - /// - [DataMember] - public IDictionary Stats { get; private set; } + /// + /// Gets the test stats which is the test outcome versus its state. + /// + [DataMember] + public IDictionary Stats { get; private set; } - /// - /// Gets the number of tests with a specified outcome. - /// - /// The test outcome. - /// The number of tests with this outcome. - public long this[TestOutcome testOutcome] + /// + /// Gets the number of tests with a specified outcome. + /// + /// The test outcome. + /// The number of tests with this outcome. + public long this[TestOutcome testOutcome] + { + get { - get - { - if (this.Stats.TryGetValue(testOutcome, out var count)) - { - return count; - } - - return 0; - } + return Stats.TryGetValue(testOutcome, out var count) ? count : 0; } } - - #endregion } + + #endregion } diff --git a/test/vstest.console.UnitTests/ExceptionUtilities.cs b/test/vstest.console.UnitTests/ExceptionUtilities.cs index e9e6839bea..196abb3c4f 100644 --- a/test/vstest.console.UnitTests/ExceptionUtilities.cs +++ b/test/vstest.console.UnitTests/ExceptionUtilities.cs @@ -1,35 +1,35 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests -{ - using System; +using System; +using System.Globalization; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting; - /// - /// This only exists because there is an issue with MSTest v2 and ThrowsException with a message API. - /// Move to Assert.ThrowException() with a message once the bug is fixed. - /// - public static class ExceptionUtilities - { - public static void ThrowsException(Action action , string format, params string[] args) - { - var isExceptionThrown = false; +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; - try - { - action(); - } - catch (Exception ex) - { - Assert.AreEqual(typeof(T), ex.GetType()); - isExceptionThrown = true; - var message = string.Format(format, args); - StringAssert.Contains(ex.Message, message); - } +/// +/// This only exists because there is an issue with MSTest v2 and ThrowsException with a message API. +/// Move to Assert.ThrowException() with a message once the bug is fixed. +/// +public static class ExceptionUtilities +{ + public static void ThrowsException(Action action, string format, params string[] args) + { + var isExceptionThrown = false; - Assert.IsTrue(isExceptionThrown, "No Exception Thrown"); + try + { + action(); + } + catch (Exception ex) + { + Assert.AreEqual(typeof(T), ex.GetType()); + isExceptionThrown = true; + var message = string.Format(CultureInfo.CurrentCulture, format, args); + StringAssert.Contains(ex.Message, message); } + + Assert.IsTrue(isExceptionThrown, "No Exception Thrown"); } } diff --git a/test/vstest.console.UnitTests/ExecutorUnitTests.cs b/test/vstest.console.UnitTests/ExecutorUnitTests.cs index f5748b8c49..313ec26a25 100644 --- a/test/vstest.console.UnitTests/ExecutorUnitTests.cs +++ b/test/vstest.console.UnitTests/ExecutorUnitTests.cs @@ -1,205 +1,221 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text.RegularExpressions; + +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; + +[TestClass] +public class ExecutorUnitTests { - using System.Collections.Generic; - using System.Globalization; - using System.IO; - using System.Linq; - using System.Reflection; + private readonly Mock _mockTestPlatformEventSource; - using CoreUtilities.Tracing.Interfaces; - - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - - using Moq; - - using Utilities; - - using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; - using System; + public ExecutorUnitTests() + { + _mockTestPlatformEventSource = new Mock(); + } - [TestClass] - public class ExecutorUnitTests + /// + /// Executor should Print splash screen first + /// + [TestMethod] + public void ExecutorPrintsSplashScreenTest() { - private Mock mockTestPlatformEventSource; + var mockOutput = new MockOutput(); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute("/badArgument"); + var assemblyVersion = typeof(Executor).Assembly.GetCustomAttribute()!.InformationalVersion; - [TestInitialize] - public void TestInit() - { - this.mockTestPlatformEventSource = new Mock(); - } + Assert.AreEqual(1, exitCode, "Exit code must be One for bad arguments"); - /// - /// Executor should Print splash screen first - /// - [TestMethod] - public void ExecutorPrintsSplashScreenTest() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute("/badArgument"); - var assemblyVersion = typeof(Executor).GetTypeInfo().Assembly.GetCustomAttribute().InformationalVersion; + // Verify that messages exist + Assert.IsTrue(mockOutput.Messages.Count > 0, "Executor must print at least copyright info"); + Assert.IsNotNull(mockOutput.Messages.First().Message, "First Printed Message cannot be null or empty"); - Assert.AreEqual(1, exitCode, "Exit code must be One for bad arguments"); + StringAssert.Contains(mockOutput.Messages.First().Message, + CommandLineResources.MicrosoftCommandLineTitle.Split(['{'], 2)[0]); - // Verify that messages exist - Assert.IsTrue(mockOutput.Messages.Count > 0, "Executor must print at least copyright info"); - Assert.IsNotNull(mockOutput.Messages.First().Message, "First Printed Message cannot be null or empty"); + var suffixIndex = assemblyVersion.IndexOf("-"); + var version = suffixIndex == -1 ? assemblyVersion : assemblyVersion.Substring(0, suffixIndex); + StringAssert.Contains(mockOutput.Messages.First().Message, + version); + } - // Just check first 20 characters - don't need to check whole thing as assembly version is variable - // "First Printed message must be Microsoft Copyright"); - StringAssert.Contains(mockOutput.Messages.First().Message, - CommandLineResources.MicrosoftCommandLineTitle.Substring(0, 20)); + [TestMethod] + public void ExecutorShouldNotPrintsSplashScreenIfNoLogoPassed() + { + var mockOutput = new MockOutput(); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute("--nologo"); - var suffixIndex = assemblyVersion.IndexOf("-"); - var version = suffixIndex == -1 ? assemblyVersion : assemblyVersion.Substring(0, suffixIndex); - StringAssert.Contains(mockOutput.Messages.First().Message, - version); - } + Assert.AreEqual(1, exitCode, "Exit code must be One for bad arguments"); - [TestMethod] - public void ExecutorShouldNotPrintsSplashScreenIfNoLogoPassed() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute("--nologo"); + // Verify that messages exist + Assert.IsTrue(mockOutput.Messages.Count == 1, "Executor should not print no valid arguments provided"); - Assert.AreEqual(1, exitCode, "Exit code must be One for bad arguments"); + // Check the part of message before the actual version because that is variable. + Assert.IsFalse( + mockOutput.Messages.First() + .Message!.Contains(CommandLineResources.MicrosoftCommandLineTitle.Split(['{'], 2)[0])); + } - // Verify that messages exist - Assert.IsTrue(mockOutput.Messages.Count == 1, "Executor should not print no valid arguments provided"); + [TestMethod] + public void ExecutorShouldSanitizeNoLogoInput() + { + var mockOutput = new MockOutput(); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute("--nologo"); - // Just check first 20 characters - don't need to check whole thing as assembly version is variable - Assert.IsFalse( - mockOutput.Messages.First() - .Message.Contains(CommandLineResources.MicrosoftCommandLineTitle.Substring(0, 20)), - "First Printed message must be Microsoft Copyright"); - } + Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); - [TestMethod] - public void ExecutorShouldSanitizeNoLogoInput() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute("--nologo"); + Assert.IsTrue(mockOutput.Messages.Any(message => message.Message!.Contains(CommandLineResources.NoArgumentsProvided))); + } - Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); + /// + /// Executor should Print Error message and Help contents when no arguments are provided. + /// + [TestMethod] + public void ExecutorEmptyArgsPrintsErrorAndHelpMessage() + { + var mockOutput = new MockOutput(); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(null); - Assert.IsTrue(mockOutput.Messages.Any(message => message.Message.Contains(CommandLineResources.NoArgumentsProvided))); - } + Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); - /// - /// Executor should Print Error message and Help contents when no arguments are provided. - /// - [TestMethod] - public void ExecutorEmptyArgsPrintsErrorAndHelpMessage() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(null); + Assert.IsTrue(mockOutput.Messages.Any(message => message.Message!.Contains(CommandLineResources.NoArgumentsProvided))); + } - Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); + [TestMethod] + public void ExecutorWithInvalidArgsShouldPrintErrorMessage() + { + var mockOutput = new MockOutput(); + string badArg = "/badArgument"; + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(badArg); - Assert.IsTrue(mockOutput.Messages.Any(message => message.Message.Contains(CommandLineResources.NoArgumentsProvided))); - } + Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); - [TestMethod] - public void ExecutorWithInvalidArgsShouldPrintErrorMessage() - { - var mockOutput = new MockOutput(); - string badArg = "/badArgument"; - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(badArg); + Assert.IsTrue(mockOutput.Messages.Any(message => message.Message!.Contains(string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidArgument, badArg)))); + } - Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); + [TestMethod] + public void ExecutorWithInvalidArgsShouldPrintHowToUseHelpOption() + { + var mockOutput = new MockOutput(); + string badArg = "--invalidArg"; + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(badArg); - Assert.IsTrue(mockOutput.Messages.Any(message => message.Message.Contains(string.Format(CommandLineResources.InvalidArgument, badArg)))); - } + Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); - [TestMethod] - public void ExecutorWithInvalidArgsShouldPrintHowToUseHelpOption() - { - var mockOutput = new MockOutput(); - string badArg = "--invalidArg"; - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(badArg); + Assert.IsTrue(mockOutput.Messages.Any(message => message.Message!.Contains(string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidArgument, badArg)))); + } - Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); + [TestMethod] + public void ExecutorWithInvalidArgsAndValueShouldPrintErrorMessage() + { + var mockOutput = new MockOutput(); + string badArg = "--invalidArg:xyz"; + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(badArg); - Assert.IsTrue(mockOutput.Messages.Any(message => message.Message.Contains(string.Format(CommandLineResources.InvalidArgument, badArg)))); - } + Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); - [TestMethod] - public void ExecutorWithInvalidArgsAndValueShouldPrintErrorMessage() - { - var mockOutput = new MockOutput(); - string badArg = "--invalidArg:xyz"; - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(badArg); + Assert.IsTrue(mockOutput.Messages.Any(message => message.Message!.Contains(string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidArgument, badArg)))); + } - Assert.AreEqual(1, exitCode, "Exit code must be One when no arguments are provided."); + /// + /// Executor should set default runsettings value even there is no processor + /// + [TestMethod] + public void ExecuteShouldInitializeDefaultRunsettings() + { + var mockOutput = new MockOutput(); + _ = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(null); + RunConfiguration runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); + Assert.AreEqual(Constants.DefaultResultsDirectory, runConfiguration.ResultsDirectory); + Assert.AreEqual(Framework.DefaultFramework.ToString(), runConfiguration.TargetFramework!.ToString()); + Assert.AreEqual(Constants.DefaultPlatform, runConfiguration.TargetPlatform); + } - Assert.IsTrue(mockOutput.Messages.Any(message => message.Message.Contains(string.Format(CommandLineResources.InvalidArgument, badArg)))); - } + [TestMethod] + public void ExecuteShouldInstrumentVsTestConsoleStart() + { + var mockOutput = new MockOutput(); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(It.IsAny()); - /// - /// Executor should set default runsettings value even there is no processor - /// - [TestMethod] - public void ExecuteShouldInitializeDefaultRunsettings() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(null); - RunConfiguration runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); - Assert.AreEqual(Constants.DefaultResultsDirectory, runConfiguration.ResultsDirectory); - Assert.AreEqual(Framework.DefaultFramework.ToString(), runConfiguration.TargetFramework.ToString()); - Assert.AreEqual(Constants.DefaultPlatform, runConfiguration.TargetPlatform); - } + _mockTestPlatformEventSource.Verify(x => x.VsTestConsoleStart(), Times.Once); + } - [TestMethod] - public void ExecuteShouldInstrumentVsTestConsoleStart() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(It.IsAny()); + [TestMethod] + public void ExecuteShouldInstrumentVsTestConsoleStop() + { + var mockOutput = new MockOutput(); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(It.IsAny()); - this.mockTestPlatformEventSource.Verify(x => x.VsTestConsoleStart(), Times.Once); - } + _mockTestPlatformEventSource.Verify(x => x.VsTestConsoleStop(), Times.Once); + } - [TestMethod] - public void ExecuteShouldInstrumentVsTestConsoleStop() - { - var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(It.IsAny()); + [TestMethod] + public void ExecuteShouldExitWithErrorOnResponseFileException() + { + string[] args = ["@FileDoesNotExist.rsp"]; + var mockOutput = new MockOutput(); - this.mockTestPlatformEventSource.Verify(x => x.VsTestConsoleStop(), Times.Once); - } + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(args); - [TestMethod] - public void ExecuteShouldExitWithErrorOnResponseFileException() - { - string[] args = { "@FileDoesNotExist.rsp" }; - var mockOutput = new MockOutput(); + var errorMessageCount = mockOutput.Messages.Count(msg => msg.Level == OutputLevel.Error && msg.Message!.Contains( + string.Format(CultureInfo.CurrentCulture, CommandLineResources.OpenResponseFileError, args[0].Substring(1)))); + Assert.AreEqual(1, errorMessageCount, "Response File Exception should display error."); + Assert.AreEqual(1, exitCode, "Response File Exception execution should exit with error."); + } - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(args); + [TestMethod] + [Ignore("TODO: gets stuck when running with other tests in ExecutorUnitTests")] + [DataRow("--ShowDeprecateDotnetVSTestMessage")] + [DataRow("--showdeprecateDotnetvsTestMessage")] + public void ExecutorShouldPrintDotnetVSTestDeprecationMessage(string commandLine) + { + var mockOutput = new MockOutput(); + Mock processHelper = new(); + processHelper.Setup(x => x.GetCurrentProcessArchitecture()).Returns(PlatformArchitecture.X64); + processHelper.Setup(x => x.GetCurrentProcessId()).Returns(0); + Mock environment = new(); + environment.Setup(x => x.Architecture).Returns(PlatformArchitecture.X64); + + new Executor(mockOutput, _mockTestPlatformEventSource.Object, processHelper.Object, environment.Object).Execute(commandLine); + + Assert.AreEqual(5, mockOutput.Messages.Count); + Assert.AreEqual(OutputLevel.Warning, mockOutput.Messages[2].Level); + Assert.AreEqual("The dotnet vstest command is superseded by dotnet test, which can now be used to run assemblies. See https://aka.ms/dotnet-test.", mockOutput.Messages[2].Message); + } - var errorMessageCount = mockOutput.Messages.Count(msg => msg.Level == OutputLevel.Error && msg.Message.Contains( - string.Format(CultureInfo.CurrentCulture, CommandLineResources.OpenResponseFileError, args[0].Substring(1)))); - Assert.AreEqual(1, errorMessageCount, "Response File Exception should display error."); - Assert.AreEqual(1, exitCode, "Response File Exception execution should exit with error."); - } + [TestMethod] + public void ExecuteShouldNotThrowSettingsExceptionButLogOutput() + { + var activeRunSetting = RunSettingsManager.Instance.ActiveRunSettings; + var runSettingsFile = Path.Combine(Path.GetTempPath(), "ExecutorShouldShowRightErrorMessage.runsettings"); - [TestMethod] - public void ExecuteShouldNotThrowSettingsExceptionButLogOutput() + try { - var activeRunSetting = RunSettingsManager.Instance.ActiveRunSettings; - var runSettingsFile = Path.Combine(Path.GetTempPath(), "ExecutorShouldShowRightErrorMessage.runsettings"); - - try + if (File.Exists(runSettingsFile)) { - if (File.Exists(runSettingsFile)) - { - File.Delete(runSettingsFile); - } + File.Delete(runSettingsFile); + } - var fileContents = @" + var fileContents = @" @@ -207,38 +223,38 @@ public void ExecuteShouldNotThrowSettingsExceptionButLogOutput() "; - File.WriteAllText(runSettingsFile, fileContents); + File.WriteAllText(runSettingsFile, fileContents); - var testSourceDllPath = Path.GetTempFileName(); - string[] args = { testSourceDllPath, "/settings:" + runSettingsFile }; - var mockOutput = new MockOutput(); + var testSourceDllPath = Path.GetTempFileName(); + string[] args = [testSourceDllPath, "/settings:" + runSettingsFile]; + var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(args); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(args); - var result = mockOutput.Messages.Any(o => o.Level == OutputLevel.Error && o.Message.Contains("Invalid settings 'Logger'. Unexpected XmlAttribute: 'invalidName'.")); - Assert.IsTrue(result, "expecting error message : Invalid settings 'Logger'.Unexpected XmlAttribute: 'invalidName'."); - } - finally - { - File.Delete(runSettingsFile); - RunSettingsManager.Instance.SetActiveRunSettings(activeRunSetting); - } + var result = mockOutput.Messages.Any(o => o.Level == OutputLevel.Error && o.Message!.Contains("Invalid settings 'Logger'. Unexpected XmlAttribute: 'invalidName'.")); + Assert.IsTrue(result, "expecting error message : Invalid settings 'Logger'.Unexpected XmlAttribute: 'invalidName'."); } - - [TestMethod] - public void ExecuteShouldReturnNonZeroExitCodeIfSettingsException() + finally { - var activeRunSetting = RunSettingsManager.Instance.ActiveRunSettings; - var runSettingsFile = Path.Combine(Path.GetTempPath(), "ExecutorShouldShowRightErrorMessage.runsettings"); + File.Delete(runSettingsFile); + RunSettingsManager.Instance.SetActiveRunSettings(activeRunSetting); + } + } + + [TestMethod] + public void ExecuteShouldReturnNonZeroExitCodeIfSettingsException() + { + var activeRunSetting = RunSettingsManager.Instance.ActiveRunSettings; + var runSettingsFile = Path.Combine(Path.GetTempPath(), "ExecutorShouldShowRightErrorMessage.runsettings"); - try + try + { + if (File.Exists(runSettingsFile)) { - if (File.Exists(runSettingsFile)) - { - File.Delete(runSettingsFile); - } + File.Delete(runSettingsFile); + } - var fileContents = @" + var fileContents = @" @@ -246,78 +262,117 @@ public void ExecuteShouldReturnNonZeroExitCodeIfSettingsException() "; - File.WriteAllText(runSettingsFile, fileContents); + File.WriteAllText(runSettingsFile, fileContents); - string[] args = { "/settings:" + runSettingsFile }; - var mockOutput = new MockOutput(); + string[] args = ["/settings:" + runSettingsFile]; + var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(args); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(args); - Assert.AreEqual(1, exitCode, "Exit code should be one because it throws exception"); - } - finally - { - File.Delete(runSettingsFile); - RunSettingsManager.Instance.SetActiveRunSettings(activeRunSetting); - } + Assert.AreEqual(1, exitCode, "Exit code should be one because it throws exception"); } - - [TestMethod] - public void ExecutorShouldShowRightErrorMessage() + finally { - var activeRunSetting = RunSettingsManager.Instance.ActiveRunSettings; - var runSettingsFile = Path.Combine(Path.GetTempPath(), "ExecutorShouldShowRightErrorMessage.runsettings"); + File.Delete(runSettingsFile); + RunSettingsManager.Instance.SetActiveRunSettings(activeRunSetting); + } + } + + [TestMethod] + public void ExecutorShouldShowRightErrorMessage() + { + var activeRunSetting = RunSettingsManager.Instance.ActiveRunSettings; + var runSettingsFile = Path.Combine(Path.GetTempPath(), "ExecutorShouldShowRightErrorMessage.runsettings"); - try + try + { + if (File.Exists(runSettingsFile)) { - if (File.Exists(runSettingsFile)) - { - File.Delete(runSettingsFile); - } + File.Delete(runSettingsFile); + } - var fileContents = @" + var fileContents = @" Invalid "; - File.WriteAllText(runSettingsFile, fileContents); + File.WriteAllText(runSettingsFile, fileContents); - string[] args = { "/settings:" + runSettingsFile }; - var mockOutput = new MockOutput(); + string[] args = ["/settings:" + runSettingsFile]; + var mockOutput = new MockOutput(); - var exitCode = new Executor(mockOutput, this.mockTestPlatformEventSource.Object).Execute(args); + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, new ProcessHelper(), new PlatformEnvironment()).Execute(args); - var result = mockOutput.Messages.Any(o => o.Level == OutputLevel.Error && o.Message.Contains("Invalid setting 'RunConfiguration'. Invalid value 'Invalid' specified for 'TargetPlatform'.")); - Assert.AreEqual(1, exitCode, "Exit code should be one because it throws exception"); - Assert.IsTrue(result, "expecting error message : Invalid setting 'RunConfiguration'. Invalid value 'Invalid' specified for 'TargetPlatform'."); - } - finally - { - File.Delete(runSettingsFile); - RunSettingsManager.Instance.SetActiveRunSettings(activeRunSetting); - } + var result = mockOutput.Messages.Any(o => o.Level == OutputLevel.Error && o.Message!.Contains("Invalid setting 'RunConfiguration'. Invalid value 'Invalid' specified for 'TargetPlatform'.")); + Assert.AreEqual(1, exitCode, "Exit code should be one because it throws exception"); + Assert.IsTrue(result, "expecting error message : Invalid setting 'RunConfiguration'. Invalid value 'Invalid' specified for 'TargetPlatform'."); } - - private class MockOutput : IOutput + finally { - public List Messages { get; set; } = new List(); + File.Delete(runSettingsFile); + RunSettingsManager.Instance.SetActiveRunSettings(activeRunSetting); + } + } - public void Write(string message, OutputLevel level) - { - Messages.Add(new OutputMessage() { Message = message, Level = level }); - } + [TestMethod] + [TestCategory("Windows")] + public void ExecutorShouldPrintWarningIfRunningEmulatedOnARM64() + { + var mockOutput = new MockOutput(); + Mock processHelper = new(); + processHelper.Setup(x => x.GetCurrentProcessArchitecture()).Returns(PlatformArchitecture.X64); + processHelper.Setup(x => x.GetCurrentProcessId()).Returns(0); + processHelper.Setup(x => x.GetCurrentProcessFileName()).Returns(@"X:\vstest.console.exe"); + Mock environment = new(); + environment.Setup(x => x.Architecture).Returns(PlatformArchitecture.ARM64); + + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, processHelper.Object, environment.Object).Execute(); + var assemblyVersion = typeof(Executor).Assembly.GetCustomAttribute()!.InformationalVersion; + + Assert.AreEqual(4, mockOutput.Messages.Count); + Assert.AreEqual("vstest.console.exe is running in emulated mode as x64. For better performance, please consider using the native runner vstest.console.arm64.exe.", + mockOutput.Messages[1].Message); + Assert.AreEqual(OutputLevel.Warning, + mockOutput.Messages[1].Level); + } - public void WriteLine(string message, OutputLevel level) - { - Messages.Add(new OutputMessage() { Message = message, Level = level }); - } + [TestMethod] + public void ExecutorShouldPrintRunnerArchitecture() + { + var mockOutput = new MockOutput(); + Mock processHelper = new(); + processHelper.Setup(x => x.GetCurrentProcessArchitecture()).Returns(PlatformArchitecture.X64); + processHelper.Setup(x => x.GetCurrentProcessId()).Returns(0); + Mock environment = new(); + environment.Setup(x => x.Architecture).Returns(PlatformArchitecture.X64); + + var exitCode = new Executor(mockOutput, _mockTestPlatformEventSource.Object, processHelper.Object, environment.Object).Execute(); + var assemblyVersion = typeof(Executor).Assembly.GetCustomAttribute()!.InformationalVersion; + + Assert.AreEqual(3, mockOutput.Messages.Count); + Assert.IsTrue(Regex.IsMatch(mockOutput.Messages[0].Message!, @"VSTest version .* \(x64\)")); + Assert.IsFalse(mockOutput.Messages.Any(message => message.Message!.Contains("vstest.console.exe is running in emulated mode"))); + } + + private class MockOutput : IOutput + { + public List Messages { get; set; } = new List(); + + public void Write(string? message, OutputLevel level) + { + Messages.Add(new OutputMessage() { Message = message, Level = level }); } - private class OutputMessage + public void WriteLine(string? message, OutputLevel level) { - public string Message { get; set; } - public OutputLevel Level { get; set; } + Messages.Add(new OutputMessage() { Message = message, Level = level }); } } + + private class OutputMessage + { + public string? Message { get; set; } = ""; + public OutputLevel Level { get; set; } + } } diff --git a/test/vstest.console.UnitTests/GlobalSuppressions.cs b/test/vstest.console.UnitTests/GlobalSuppressions.cs new file mode 100644 index 0000000000..1eb087e831 --- /dev/null +++ b/test/vstest.console.UnitTests/GlobalSuppressions.cs @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Tool name is using lower-case.", Scope = "namespace", Target = "~N:vstest.console.UnitTests.Internal")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Tool name is using lower-case.", Scope = "namespace", Target = "~N:vstest.console.UnitTests.Processors")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Tool name is using lower-case.", Scope = "namespace", Target = "~N:vstest.console.UnitTests.Publisher")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Tool name is using lower-case.", Scope = "namespace", Target = "~N:vstest.console.UnitTests.TestDoubles")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Tool name is using lower-case.", Scope = "namespace", Target = "~N:vstest.console.UnitTests.TestPlatformHelpers")] diff --git a/test/vstest.console.UnitTests/InProcessVsTestConsoleWrapperTests.cs b/test/vstest.console.UnitTests/InProcessVsTestConsoleWrapperTests.cs new file mode 100644 index 0000000000..ec0f6f778b --- /dev/null +++ b/test/vstest.console.UnitTests/InProcessVsTestConsoleWrapperTests.cs @@ -0,0 +1,1114 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer; +using Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Client; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Execution; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; + +[TestClass] +public class InProcessVsTestConsoleWrapperTests +{ + private readonly InProcessVsTestConsoleWrapper _consoleWrapper; + private readonly Mock _mockEnvironmentVariableHelper; + private readonly Mock _mockRequestSender; + private readonly Mock _mockTestRequestManager; + private readonly Mock _mockOutput; + private readonly Executor _executor; + private readonly Mock _mockEventSource; + + private readonly IList _testSources = new List() { "test1", "test2" }; + private readonly IList _testCases = new List() { new(), new() }; + private readonly IList _attachmentSets = new List() + { + new(new Uri("datacollector://AttachmentSetDataCollector1"), "AttachmentSet1"), + new(new Uri("datacollector://AttachmentSetDataCollector2"), "AttachmentSet2"), + }; + private readonly IList _invokedDataCollectors = new List() + { + new(new Uri("datacollector://InvokedDataCollector1"), "InvokedDataCollector1", "DummyAssemblyName1", "DummyFilePath1", true), + new(new Uri("datacollector://InvokedDataCollector2"), "InvokedDataCollector2", "DummyAssemblyName2", "DummyFilePath2", false), + }; + + private readonly string _runSettings = "dummy runsettings"; + + public InProcessVsTestConsoleWrapperTests() + { + _mockEnvironmentVariableHelper = new Mock(); + _mockEnvironmentVariableHelper.Setup(evh => evh.GetEnvironmentVariables()).Returns(new Hashtable()); + + _mockRequestSender = new Mock(); + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(1234); + _mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(It.IsAny())).Returns(true); + + _mockTestRequestManager = new Mock(); + _mockTestRequestManager.Setup(trm => trm.ResetOptions()).Callback(() => { }); + + _mockOutput = new Mock(); + _executor = new Executor(_mockOutput.Object, new Mock().Object, new ProcessHelper(), new PlatformEnvironment()); + _mockEventSource = new Mock(); + + _consoleWrapper = new InProcessVsTestConsoleWrapper( + new ConsoleParameters(), + _mockEnvironmentVariableHelper.Object, + _mockRequestSender.Object, + _mockTestRequestManager.Object, + _executor, + _mockEventSource.Object, + new()); + } + + [TestMethod] + public void InProcessWrapperConstructorShouldThrowIfPortIsInvalid() + { + _mockRequestSender.Setup(rs => rs.InitializeCommunication()).Returns(-1); + + Assert.ThrowsException(() => + new InProcessVsTestConsoleWrapper( + new ConsoleParameters(), + _mockEnvironmentVariableHelper.Object, + _mockRequestSender.Object, + _mockTestRequestManager.Object, + new Executor(_mockOutput.Object, new Mock().Object, new ProcessHelper(), new PlatformEnvironment()), + new Mock().Object, + new())); + } + + [TestMethod] + public void InProcessWrapperConstructorShouldSetEnvironmentVariablesReceivedAsConsoleParametersForProcessHelperNoInherit() + { + const string environmentVariableName = "AAAAA"; + + var consoleParams = new ConsoleParameters(); + consoleParams.EnvironmentVariables.Add(environmentVariableName, "1"); + consoleParams.InheritEnvironmentVariables = false; + + var _ = new InProcessVsTestConsoleWrapper( + consoleParams, + _mockEnvironmentVariableHelper.Object, + _mockRequestSender.Object, + _mockTestRequestManager.Object, + new Executor(_mockOutput.Object, new Mock().Object, new ProcessHelper(), new PlatformEnvironment()), + new Mock().Object, + new()); + + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?.Count == 1); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?.ContainsKey(environmentVariableName)); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?[environmentVariableName] == "1"); + } + + [TestMethod] + public void InProcessWrapperConstructorShouldSetEnvironmentVariablesReceivedAsConsoleParametersForProcessHelper() + { + const string environmentVariableName1 = "AAAAA"; + const string environmentVariableName2 = "BBBBB"; + const string environmentVariableName3 = "CCCCC"; + + var consoleParams = new ConsoleParameters(); + consoleParams.EnvironmentVariables.Add(environmentVariableName1, "1"); + consoleParams.InheritEnvironmentVariables = true; + + IDictionary defaultEnvironmentVariables = new Hashtable(); + defaultEnvironmentVariables.Add(environmentVariableName2, "1"); + defaultEnvironmentVariables.Add(environmentVariableName3, "1"); + + _mockEnvironmentVariableHelper.Setup(evh => evh.GetEnvironmentVariables()).Returns(defaultEnvironmentVariables); + + var _ = new InProcessVsTestConsoleWrapper( + consoleParams, + _mockEnvironmentVariableHelper.Object, + _mockRequestSender.Object, + _mockTestRequestManager.Object, + new Executor(_mockOutput.Object, new Mock().Object, new ProcessHelper(), new PlatformEnvironment()), + new Mock().Object, + new()); + + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?.Count == 3); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?.ContainsKey(environmentVariableName1)); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?[environmentVariableName1] == "1"); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?.ContainsKey(environmentVariableName2)); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?[environmentVariableName2] == "1"); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?.ContainsKey(environmentVariableName3)); + Assert.IsTrue(ProcessHelper.ExternalEnvironmentVariables?[environmentVariableName3] == "1"); + } + + [TestMethod] + public void InProcessWrapperConstructorShouldSetTheCultureSpecifiedByTheUser() + { + // Arrange + var culture = new CultureInfo("fr-fr"); + _mockEnvironmentVariableHelper.Setup(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE")).Returns(culture.Name); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + var consoleParams = new ConsoleParameters(); + var _ = new InProcessVsTestConsoleWrapper( + consoleParams, + _mockEnvironmentVariableHelper.Object, + _mockRequestSender.Object, + _mockTestRequestManager.Object, + new Executor(_mockOutput.Object, new Mock().Object, new ProcessHelper(), new PlatformEnvironment()), + new Mock().Object, + new UiLanguageOverride(_mockEnvironmentVariableHelper.Object, lang => threadCultureWasSet = lang.Equals(culture))); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + _mockEnvironmentVariableHelper.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + _mockEnvironmentVariableHelper.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + _mockEnvironmentVariableHelper.Verify(x => x.SetEnvironmentVariable("VSLANG", culture.LCID.ToString(CultureInfo.InvariantCulture)), Times.Once); + _mockEnvironmentVariableHelper.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + _mockEnvironmentVariableHelper.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void InProcessWrapperDiscoverTestsWithThreeParamsIsSuccessfullyInvoked() + { + var discoveryEventHandler = new Mock(); + + DiscoveryRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + DiscoveryRequestPayload p, + ITestDiscoveryEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.DiscoverTests(_testSources, _runSettings, discoveryEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsNull(payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo); + + _mockEventSource.Verify(es => es.TranslationLayerDiscoveryStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerDiscoveryStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperDiscoverTestsWithFourParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + var discoveryEventHandler = new Mock(); + + DiscoveryRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + DiscoveryRequestPayload p, + ITestDiscoveryEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.DiscoverTests(_testSources, _runSettings, options, discoveryEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo); + + _mockEventSource.Verify(es => es.TranslationLayerDiscoveryStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerDiscoveryStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperDiscoverTestsWithFiveParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + var testSessionInfo = new TestSessionInfo(); + + var discoveryEventHandler = new Mock(); + + DiscoveryRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + DiscoveryRequestPayload p, + ITestDiscoveryEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.DiscoverTests(_testSources, _runSettings, options, testSessionInfo, discoveryEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.AreEqual(testSessionInfo.Id, payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => es.TranslationLayerDiscoveryStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerDiscoveryStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.DiscoverTests( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithSourcesWithThreeParamsIsSuccessfullyInvoked() + { + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 _, + ITestRunEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.RunTests(_testSources, _runSettings, runEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsNull(payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 0, + 0, + _testSources.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithSourcesWithFourParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 _, + ITestRunEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.RunTests(_testSources, _runSettings, options, runEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 0, + 0, + _testSources.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithSourcesWithFiveParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + var testSessionInfo = new TestSessionInfo(); + + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 _, + ITestRunEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.RunTests(_testSources, _runSettings, options, testSessionInfo, runEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.AreEqual(testSessionInfo.Id, payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 0, + 0, + _testSources.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithTestsWithThreeParamsIsSuccessfullyInvoked() + { + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 _, + ITestRunEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.RunTests(_testCases, _runSettings, runEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testCases.SequenceEqual(payload.TestCases!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsNull(payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 0, + 0, + _testCases.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithTestsWithFourParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 _, + ITestRunEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.RunTests(_testCases, _runSettings, options, runEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testCases.SequenceEqual(payload.TestCases!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 0, + 0, + _testCases.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithTestsWithFiveParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + var testSessionInfo = new TestSessionInfo(); + + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 _, + ITestRunEventsRegistrar _, + ProtocolConfig _) => payload = p); + + _consoleWrapper.RunTests(_testCases, _runSettings, options, testSessionInfo, runEventHandler.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testCases.SequenceEqual(payload.TestCases!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.AreEqual(testSessionInfo.Id, payload.TestSessionInfo?.Id); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 0, + 0, + _testCases.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithCustomTestHostWithSourcesWithThreeParamsIsSuccessfullyInvoked() + { + var testHostLauncher = new Mock(); + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + ITestHostLauncher3? launcher = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 l, + ITestRunEventsRegistrar _, + ProtocolConfig _) => + { + payload = p; + launcher = l; + }); + + _consoleWrapper.RunTestsWithCustomTestHost(_testSources, _runSettings, runEventHandler.Object, testHostLauncher.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsNull(payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + Assert.AreEqual(testHostLauncher.Object.IsDebug, payload.DebuggingEnabled); + Assert.AreEqual(testHostLauncher.Object, launcher); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 1, + _testSources.Count, + 0, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + testHostLauncher.Object, + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithCustomTestHostWithSourcesWithFourParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + + var testHostLauncher = new Mock(); + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + ITestHostLauncher3? launcher = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 l, + ITestRunEventsRegistrar _, + ProtocolConfig _) => + { + payload = p; + launcher = l; + }); + + _consoleWrapper.RunTestsWithCustomTestHost(_testSources, _runSettings, options, runEventHandler.Object, testHostLauncher.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + Assert.AreEqual(testHostLauncher.Object.IsDebug, payload.DebuggingEnabled); + Assert.AreEqual(testHostLauncher.Object, launcher); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 1, + _testSources.Count, + 0, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + testHostLauncher.Object, + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithCustomTestHostWithSourcesWithFiveParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + var testSessionInfo = new TestSessionInfo(); + + var testHostLauncher = new Mock(); + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + ITestHostLauncher3? launcher = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 l, + ITestRunEventsRegistrar _, + ProtocolConfig _) => + { + payload = p; + launcher = l; + }); + + _consoleWrapper.RunTestsWithCustomTestHost(_testSources, _runSettings, options, testSessionInfo, runEventHandler.Object, testHostLauncher.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testSources.SequenceEqual(payload.Sources!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.AreEqual(testSessionInfo.Id, payload.TestSessionInfo?.Id); + Assert.AreEqual(testHostLauncher.Object.IsDebug, payload.DebuggingEnabled); + Assert.IsNull(launcher); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 1, + _testSources.Count, + 0, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + null, + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithCustomTestHostWithTestsWithThreeParamsIsSuccessfullyInvoked() + { + var testHostLauncher = new Mock(); + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + ITestHostLauncher3? launcher = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 l, + ITestRunEventsRegistrar _, + ProtocolConfig _) => + { + payload = p; + launcher = l; + }); + + _consoleWrapper.RunTestsWithCustomTestHost(_testCases, _runSettings, runEventHandler.Object, testHostLauncher.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testCases.SequenceEqual(payload.TestCases!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsNull(payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + Assert.AreEqual(testHostLauncher.Object.IsDebug, payload.DebuggingEnabled); + Assert.AreEqual(testHostLauncher.Object, launcher); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 1, + 0, + _testCases.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + testHostLauncher.Object, + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithCustomTestHostWithTestsWithFourParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + + var testHostLauncher = new Mock(); + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + ITestHostLauncher3? launcher = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 l, + ITestRunEventsRegistrar _, + ProtocolConfig _) => + { + payload = p; + launcher = l; + }); + + _consoleWrapper.RunTestsWithCustomTestHost(_testCases, _runSettings, options, runEventHandler.Object, testHostLauncher.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testCases.SequenceEqual(payload.TestCases!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.IsNull(payload.TestSessionInfo?.Id); + Assert.AreEqual(testHostLauncher.Object.IsDebug, payload.DebuggingEnabled); + Assert.AreEqual(testHostLauncher.Object, launcher); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 1, + 0, + _testCases.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + testHostLauncher.Object, + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public void InProcessWrapperRunTestsWithCustomTestHostWithTestsWithFiveParamsIsSuccessfullyInvoked() + { + var options = new TestPlatformOptions(); + var testSessionInfo = new TestSessionInfo(); + + var testHostLauncher = new Mock(); + var runEventHandler = new Mock(); + + TestRunRequestPayload? payload = null; + ITestHostLauncher3? launcher = null; + _mockTestRequestManager + .Setup(trm => trm.RunTests( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunRequestPayload p, + ITestHostLauncher3 l, + ITestRunEventsRegistrar _, + ProtocolConfig _) => + { + payload = p; + launcher = l; + }); + + _consoleWrapper.RunTestsWithCustomTestHost(_testCases, _runSettings, options, testSessionInfo, runEventHandler.Object, testHostLauncher.Object); + + Assert.IsNotNull(payload); + Assert.IsTrue(_testCases.SequenceEqual(payload.TestCases!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.AreEqual(options, payload.TestPlatformOptions); + Assert.AreEqual(testSessionInfo.Id, payload.TestSessionInfo?.Id); + Assert.AreEqual(testHostLauncher.Object.IsDebug, payload.DebuggingEnabled); + Assert.IsNull(launcher); + + _mockEventSource.Verify(es => + es.TranslationLayerExecutionStart( + 1, + 0, + _testCases.Count, + _runSettings), + Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerExecutionStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.RunTests( + It.IsAny(), + null, + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + [Obsolete("Test uses obsolete API")] + public void InProcessWrapperStartTestSessionSucceedsWhenNoExceptionIsThrown() + { + var mockTestSessionEventsHandler = new Mock(); + mockTestSessionEventsHandler + .Setup(eh => eh.HandleStartTestSessionComplete(It.IsAny())) + .Callback(() => { }); + + var testSessionInfo = new TestSessionInfo(); + var startTestSessionCompleteArgs = new StartTestSessionCompleteEventArgs() + { + TestSessionInfo = testSessionInfo + }; + + var stopTestSessionCompleteArgs = new StopTestSessionCompleteEventArgs() + { + IsStopped = true, + TestSessionInfo = testSessionInfo + }; + + _mockTestRequestManager.Setup(trm => + trm.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + StartTestSessionPayload _, + ITestHostLauncher3 _, + ITestSessionEventsHandler eventsHandler, + ProtocolConfig _) => + eventsHandler.HandleStartTestSessionComplete(startTestSessionCompleteArgs)); + + _mockTestRequestManager.Setup(trm => + trm.StopTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + StopTestSessionPayload _, + ITestSessionEventsHandler eventsHandler, + ProtocolConfig _) => + eventsHandler.HandleStopTestSessionComplete(stopTestSessionCompleteArgs)); + + var consoleWrapper = new InProcessVsTestConsoleWrapper( + new ConsoleParameters(), + _mockEnvironmentVariableHelper.Object, + _mockRequestSender.Object, + _mockTestRequestManager.Object, + new Executor(_mockOutput.Object, new Mock().Object, new ProcessHelper(), new PlatformEnvironment()), + new Mock().Object, + new()); + + using (var testSession = consoleWrapper?.StartTestSession(_testSources, _runSettings, mockTestSessionEventsHandler.Object)) + { + Assert.AreEqual( + testSession?.TestSessionInfo, + testSessionInfo); + } + + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Exactly(2)); + _mockTestRequestManager.Verify(trm => trm.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + _mockTestRequestManager.Verify(trm => trm.StopTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + + mockTestSessionEventsHandler.Verify(eh => eh.HandleStartTestSessionComplete(startTestSessionCompleteArgs), Times.Once); + mockTestSessionEventsHandler.Verify(eh => eh.HandleStopTestSessionComplete(stopTestSessionCompleteArgs), Times.Once); + } + + [TestMethod] + public async Task InProcessWrapperProcessTestRunAttachmentsAsyncWithSevenParamsIsSuccessfullyInvoked() + { + var attachmentsEventHandler = new Mock(); + + TestRunAttachmentsProcessingPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunAttachmentsProcessingPayload p, + ITestRunAttachmentsProcessingEventsHandler _, + ProtocolConfig _) => payload = p); + + await _consoleWrapper.ProcessTestRunAttachmentsAsync( + _attachmentSets, + _invokedDataCollectors, + _runSettings, + true, + false, + attachmentsEventHandler.Object, + CancellationToken.None).ConfigureAwait(false); + + Assert.IsNotNull(payload); + Assert.IsTrue(_attachmentSets.SequenceEqual(payload.Attachments!)); + Assert.IsTrue(_invokedDataCollectors.SequenceEqual(payload.InvokedDataCollectors!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsFalse(payload.CollectMetrics); + + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Never); + _mockTestRequestManager.Verify(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } + + [TestMethod] + public async Task InProcessWrapperProcessTestRunAttachmentsAsyncWithSevenParamsSuccessfullyHandlesCancellation() + { + var attachmentsEventHandler = new Mock(); + + TestRunAttachmentsProcessingPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunAttachmentsProcessingPayload p, + ITestRunAttachmentsProcessingEventsHandler _, + ProtocolConfig _) => payload = p); + _mockTestRequestManager.Setup(trm => trm.CancelTestRunAttachmentsProcessing()) + .Callback(() => { }); + + var cancellationTokenSource = new CancellationTokenSource(); + + cancellationTokenSource.Cancel(); + await _consoleWrapper.ProcessTestRunAttachmentsAsync( + _attachmentSets, + _invokedDataCollectors, + _runSettings, + true, + false, + attachmentsEventHandler.Object, + cancellationTokenSource.Token).ConfigureAwait(false); + + Assert.IsNotNull(payload); + Assert.IsTrue(_attachmentSets.SequenceEqual(payload.Attachments!)); + Assert.IsTrue(_invokedDataCollectors.SequenceEqual(payload.InvokedDataCollectors!)); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsFalse(payload.CollectMetrics); + + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Never); + _mockTestRequestManager.Verify(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + _mockTestRequestManager.Verify(trm => trm.CancelTestRunAttachmentsProcessing(), Times.Once); + } + + [TestMethod] + public async Task InProcessWrapperProcessTestRunAttachmentsAsyncWithSevenParamsSuccessfullyHandlesExceptions() + { + var attachmentsEventHandler = new Mock(); + + _mockTestRequestManager + .Setup(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Throws(new Exception("Dummy exception")); + + await _consoleWrapper.ProcessTestRunAttachmentsAsync( + _attachmentSets, + _invokedDataCollectors, + _runSettings, + true, + false, + attachmentsEventHandler.Object, + CancellationToken.None).ConfigureAwait(false); + + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Never); + _mockTestRequestManager.Verify(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + attachmentsEventHandler.Verify(eh => eh.HandleLogMessage(TestMessageLevel.Error, It.IsAny())); + } + + [TestMethod] + public async Task InProcessWrapperProcessTestRunAttachmentsAsyncWithSevenParamsSuccessfullyHandlesNullTestRequestManager() + { + var attachmentsEventHandler = new Mock(); + + _consoleWrapper.TestRequestManager = null; + + await _consoleWrapper.ProcessTestRunAttachmentsAsync( + _attachmentSets, + _invokedDataCollectors, + _runSettings, + true, + false, + attachmentsEventHandler.Object, + CancellationToken.None).ConfigureAwait(false); + + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStop(), Times.Once); + } + + [TestMethod] + public async Task InProcessWrapperProcessTestRunAttachmentsAsyncWithSixParamsIsSuccessfullyInvoked() + { + var attachmentsEventHandler = new Mock(); + + TestRunAttachmentsProcessingPayload? payload = null; + _mockTestRequestManager + .Setup(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Callback(( + TestRunAttachmentsProcessingPayload p, + ITestRunAttachmentsProcessingEventsHandler _, + ProtocolConfig _) => payload = p); + + await _consoleWrapper.ProcessTestRunAttachmentsAsync( + _attachmentSets, + _runSettings, + true, + false, + attachmentsEventHandler.Object, + CancellationToken.None); + + Assert.IsNotNull(payload); + Assert.IsTrue(_attachmentSets.SequenceEqual(payload.Attachments!)); + Assert.IsNull(payload.InvokedDataCollectors); + Assert.AreEqual(_runSettings, payload.RunSettings); + Assert.IsFalse(payload.CollectMetrics); + + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStart(), Times.Once); + _mockEventSource.Verify(es => es.TranslationLayerTestRunAttachmentsProcessingStop(), Times.Once); + _mockTestRequestManager.Verify(trm => trm.ResetOptions(), Times.Never); + _mockTestRequestManager.Verify(trm => trm.ProcessTestRunAttachments( + It.IsAny(), + It.IsAny(), + It.IsAny()), Times.Once); + } +} diff --git a/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs b/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs index 811877fb09..946160b845 100644 --- a/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs +++ b/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs @@ -1,1297 +1,1371 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Internal +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Internal; +using Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.TestPlatform.TestUtilities; + +using Moq; + +using vstest.console.Internal; + +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Internal; + +[TestClass] +public class ConsoleLoggerTests { - using System; - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Globalization; - using System.IO; - using System.Linq; - using System.Threading; - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Internal; - using Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using vstest.console.Internal; - using CommandLineResources = Resources.Resources; - - [TestClass] - public class ConsoleLoggerTests + private readonly Mock _mockRequestData; + private readonly Mock _mockMetricsCollection; + private readonly Mock _mockOutput; + private readonly ConsoleLogger _consoleLogger; + private readonly Mock _mockProgressIndicator; + private readonly Mock _mockFeatureFlag; + + private const string PassedTestIndicator = " Passed "; + private const string FailedTestIndicator = " Failed "; + private const string SkippedTestIndicator = " Skipped "; + + public ConsoleLoggerTests() { - private Mock mockRequestData; - private Mock mockMetricsCollection; - private Mock mockOutput; - private ConsoleLogger consoleLogger; - private Mock mockProgressIndicator; + _mockRequestData = new Mock(); + _mockMetricsCollection = new Mock(); + _mockFeatureFlag = new Mock(); + _mockFeatureFlag.Setup(x => x.IsSet(It.IsAny())).Returns(false); + _mockRequestData.Setup(rd => rd.MetricsCollection).Returns(_mockMetricsCollection.Object); - private const string PassedTestIndicator = " Passed "; - private const string FailedTestIndicator = " Failed "; - private const string SkippedTestIndicator = " Skipped "; + _mockOutput = new Mock(); + _mockProgressIndicator = new Mock(); + _consoleLogger = new ConsoleLogger(_mockOutput.Object, _mockProgressIndicator.Object, _mockFeatureFlag.Object); - [TestInitialize] - public void Initialize() - { - RunTestsArgumentProcessorTests.SetupMockExtensions(); - - // Setup Mocks and other dependencies - this.Setup(); - } + RunTestsArgumentProcessorTests.SetupMockExtensions(); + } - [TestMethod] - public void InitializeShouldThrowExceptionIfEventsIsNull() - { - Assert.ThrowsException(() => - { - this.consoleLogger.Initialize(null, string.Empty); - }); - } + [TestMethod] + public void InitializeShouldThrowExceptionIfEventsIsNull() + { + Assert.ThrowsException(() => _consoleLogger.Initialize(null!, string.Empty)); + } - [TestMethod] - public void InitializeShouldNotThrowExceptionIfEventsIsNotNull() - { - this.consoleLogger.Initialize(new Mock().Object, string.Empty); - } + [TestMethod] + public void InitializeShouldNotThrowExceptionIfEventsIsNotNull() + { + _consoleLogger.Initialize(new Mock().Object, string.Empty); + } - [TestMethod] - public void InitializeWithParametersShouldThrowExceptionIfEventsIsNull() + [TestMethod] + public void InitializeWithParametersShouldThrowExceptionIfEventsIsNull() + { + var parameters = new Dictionary { - var parameters = new Dictionary - { - { "param1", "value" }, - }; + { "param1", "value" }, + }; - Assert.ThrowsException(() => - { - this.consoleLogger.Initialize(null, parameters); - }); - } + Assert.ThrowsException(() => _consoleLogger.Initialize(null!, parameters)); + } - [TestMethod] - public void InitializeWithParametersShouldThrowExceptionIfParametersIsEmpty() - { - Assert.ThrowsException(() => - { - this.consoleLogger.Initialize(new Mock().Object, new Dictionary()); - }); - } + [TestMethod] + public void InitializeWithParametersShouldThrowExceptionIfParametersIsEmpty() + { + Assert.ThrowsException(() => _consoleLogger.Initialize(new Mock().Object, new Dictionary())); + } - [TestMethod] - public void InitializeWithParametersShouldThrowExceptionIfParametersIsNull() - { - Assert.ThrowsException(() => - { - this.consoleLogger.Initialize(new Mock().Object, (Dictionary)null); - }); - } + [TestMethod] + public void InitializeWithParametersShouldThrowExceptionIfParametersIsNull() + { + Assert.ThrowsException(() => _consoleLogger.Initialize(new Mock().Object, (Dictionary)null!)); + } - [TestMethod] - public void InitializeWithParametersShouldSetVerbosityLevel() + [TestMethod] + public void InitializeWithParametersShouldSetVerbosityLevel() + { + var parameters = new Dictionary { - var parameters = new Dictionary - { - { "verbosity", "minimal" }, - { DefaultLoggerParameterNames.TargetFramework , "net451"} - }; - this.consoleLogger.Initialize(new Mock().Object, parameters); + { "verbosity", "minimal" }, + { DefaultLoggerParameterNames.TargetFramework , "net462"} + }; + _consoleLogger.Initialize(new Mock().Object, parameters); - Assert.AreEqual(ConsoleLogger.Verbosity.Minimal, this.consoleLogger.VerbosityLevel); - } + Assert.AreEqual(ConsoleLogger.Verbosity.Minimal, _consoleLogger.VerbosityLevel); + } - [TestMethod] - public void InitializeWithParametersShouldDefaultToNormalVerbosityLevelForInvalidVerbosity() + [TestMethod] + public void InitializeWithParametersShouldDefaultToNormalVerbosityLevelForInvalidVerbosity() + { + var parameters = new Dictionary { - var parameters = new Dictionary - { - { "verbosity", "" }, - }; + { "verbosity", "" }, + }; - this.consoleLogger.Initialize(new Mock().Object, parameters); + _consoleLogger.Initialize(new Mock().Object, parameters); #if NETFRAMEWORK - Assert.AreEqual(ConsoleLogger.Verbosity.Normal, this.consoleLogger.VerbosityLevel); + Assert.AreEqual(ConsoleLogger.Verbosity.Normal, _consoleLogger.VerbosityLevel); #else - Assert.AreEqual(ConsoleLogger.Verbosity.Minimal, this.consoleLogger.VerbosityLevel); + Assert.AreEqual(ConsoleLogger.Verbosity.Minimal, _consoleLogger.VerbosityLevel); #endif - } + } - [TestMethod] - public void InitializeWithParametersShouldSetPrefixValue() + [TestMethod] + public void InitializeWithParametersShouldSetPrefixValue() + { + var parameters = new Dictionary { - var parameters = new Dictionary - { - { "prefix", "true" }, - }; - Assert.IsFalse(ConsoleLogger.AppendPrefix); + { "prefix", "true" }, + }; + Assert.IsFalse(ConsoleLogger.AppendPrefix); - this.consoleLogger.Initialize(new Mock().Object, parameters); + _consoleLogger.Initialize(new Mock().Object, parameters); - Assert.IsTrue(ConsoleLogger.AppendPrefix); - ConsoleLogger.AppendPrefix = false; - } + Assert.IsTrue(ConsoleLogger.AppendPrefix); + ConsoleLogger.AppendPrefix = false; + } - [TestMethod] - public void InitializeWithParametersShouldSetNoProgress() - { - var parameters = new Dictionary(); + [TestMethod] + public void InitializeWithParametersShouldSetNoProgress() + { + var parameters = new Dictionary(); - Assert.IsFalse(ConsoleLogger.EnableProgress); + Assert.IsFalse(ConsoleLogger.EnableProgress); - parameters.Add("progress", "true"); - this.consoleLogger.Initialize(new Mock().Object, parameters); + parameters.Add("progress", "true"); + _consoleLogger.Initialize(new Mock().Object, parameters); - Assert.IsTrue(ConsoleLogger.EnableProgress); + Assert.IsTrue(ConsoleLogger.EnableProgress); - ConsoleLogger.EnableProgress = false; - } + ConsoleLogger.EnableProgress = false; + } + + [TestMethod] + public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + + Assert.ThrowsException(() => loggerEvents.RaiseTestRunMessage(default!)); + } + + [TestMethod] + public void TestMessageHandlerShouldWriteToConsoleWhenTestRunMessageIsRaised() + { + var count = 0; + _mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( + (s, o) => count++); + + SetupForTestMessageHandler(out var loggerEvents); + + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "Informational123")); + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, "Error123")); + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, "Warning123")); + loggerEvents.WaitForEventCompletion(); + + // Added this for synchronization + SpinWait.SpinUntil(() => count == 3, 300); + + AssertsForTestMessageHandler(); + _mockProgressIndicator.Verify(pi => pi.Pause(), Times.Exactly(3)); + _mockProgressIndicator.Verify(pi => pi.Start(), Times.Exactly(3)); + } + + [TestMethod] + public void TestMessageHandlerShouldWriteToConsoleWhenTestDiscoveryMessageIsRaised() + { + var count = 0; + _mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( + (s, o) => count++); + + SetupForTestMessageHandler(out var loggerEvents); + + loggerEvents.RaiseDiscoveryMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "Informational123")); + loggerEvents.RaiseDiscoveryMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, "Error123")); + loggerEvents.RaiseDiscoveryMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, "Warning123")); + loggerEvents.WaitForEventCompletion(); - [TestMethod] - public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() + // Added this for synchronization + SpinWait.SpinUntil(() => count == 3, 300); + + AssertsForTestMessageHandler(); + _mockProgressIndicator.Verify(pi => pi.Pause(), Times.Exactly(3)); + _mockProgressIndicator.Verify(pi => pi.Start(), Times.Exactly(3)); + } + + private void AssertsForTestMessageHandler() + { + _mockOutput.Verify(o => o.WriteLine("Informational123", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine("Warning123", OutputLevel.Warning), Times.Once()); + _mockOutput.Verify(o => o.WriteLine("Error123", OutputLevel.Error), Times.Once()); + } + + private void SetupForTestMessageHandler(out InternalTestLoggerEvents loggerEvents) + { + loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + } - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestRunMessage(default); - }); - } + [TestMethod] + public void TestResultHandlerShouldThowExceptionIfEventArgsIsNull() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + + Assert.ThrowsException(() => loggerEvents.RaiseTestResult(default!)); + } - [TestMethod] - public void TestMessageHandlerShouldWriteToConsoleWhenTestRunMessageIsRaised() + [TestMethod] + public void TestResultHandlerShouldShowStdOutMessagesBannerIfStdOutIsNotEmpty() + { + var count = 0; + _mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( + (s, o) => count++); + + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var count = 0; - this.mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( - (s, o) => { count++; }); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + string message = "Dummy message"; + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + TestResultMessage testResultMessage = new(TestResultMessage.StandardOutCategory, message); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Failed + }; + testresult.Messages.Add(testResultMessage); - this.SetupForTestMessageHandler(out var loggerEvents); + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "Informational123")); - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, "Error123")); - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, "Warning123")); - loggerEvents.WaitForEventCompletion(); + // Added this for synchronization + SpinWait.SpinUntil(() => count == 2, 300); - // Added this for synchronization - SpinWait.SpinUntil(() => count == 3, 300); + _mockOutput.Verify(o => o.WriteLine(" Standard Output Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + } - this.AssertsForTestMessageHandler(); - this.mockProgressIndicator.Verify(pi => pi.Pause(), Times.Exactly(3)); - this.mockProgressIndicator.Verify(pi => pi.Start(), Times.Exactly(3)); - } + [TestMethod] + public void NormalVerbosityShowNotStdOutMessagesForPassedTests() + { + // Setup + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + + _consoleLogger.Initialize(loggerEvents, parameters); + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + string message = "Dummy message"; + TestResultMessage testResultMessage = new(TestResultMessage.StandardOutCategory, message); + + var testresult = new ObjectModel.TestResult(testcase); + testresult.Outcome = TestOutcome.Passed; + testresult.Messages.Add(testResultMessage); - [TestMethod] - public void TestMessageHandlerShouldWriteToConsoleWhenTestDiscoveryMessageIsRaised() + // Raise an event on mock object + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); + + // Verify + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdOutMessagesBanner, OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Never()); + } + + [TestMethod] + public void DetailedVerbosityShowStdOutMessagesForPassedTests() + { + // Setup + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var count = 0; - this.mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( - (s, o) => { count++; }); + { "verbosity", "detailed" } + }; - this.SetupForTestMessageHandler(out var loggerEvents); + _consoleLogger.Initialize(loggerEvents, parameters); + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + string message = "Dummy message"; - loggerEvents.RaiseDiscoveryMessage(new TestRunMessageEventArgs(TestMessageLevel.Informational, "Informational123")); - loggerEvents.RaiseDiscoveryMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, "Error123")); - loggerEvents.RaiseDiscoveryMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, "Warning123")); - loggerEvents.WaitForEventCompletion(); + TestResultMessage testResultMessage = new(TestResultMessage.StandardOutCategory, message); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Passed + }; - // Added this for synchronization - SpinWait.SpinUntil(() => count == 3, 300); + testresult.Messages.Add(testResultMessage); - this.AssertsForTestMessageHandler(); - this.mockProgressIndicator.Verify(pi => pi.Pause(), Times.Exactly(3)); - this.mockProgressIndicator.Verify(pi => pi.Start(), Times.Exactly(3)); - } + // Act. Raise an event on mock object + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); + + // Verify + _mockOutput.Verify(o => o.WriteLine(" Standard Output Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + } - private void AssertsForTestMessageHandler() + [TestMethod] + public void TestRunErrorMessageShowShouldTestRunFailed() + { + // Setup + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - this.mockOutput.Verify(o => o.WriteLine("Informational123", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine("Warning123", OutputLevel.Warning), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine("Error123", OutputLevel.Error), Times.Once()); - } + { "verbosity", "detailed" } + }; + + _consoleLogger.Initialize(loggerEvents, parameters); + string message = "Adapter Error"; + + // Act. Raise an event on mock object + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, message)); + loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), new Collection(), TimeSpan.FromSeconds(1))); + loggerEvents.WaitForEventCompletion(); - private void SetupForTestMessageHandler(out InternalTestLoggerEvents loggerEvents) + // Verify + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunFailed, OutputLevel.Error), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Error), Times.Once()); + } + + [TestMethod] + public void InQuietModeTestErrorMessageShouldShowTestRunFailed() + { + // Setup + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - } + { "verbosity", "quiet" }, + { DefaultLoggerParameterNames.TargetFramework , "abc" } + }; + + _consoleLogger.Initialize(loggerEvents, parameters); + string message = "Adapter Error"; + + // Act. Raise an event on mock object + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, message)); + loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), new Collection(), TimeSpan.FromSeconds(1))); + loggerEvents.WaitForEventCompletion(); + + // Verify + _mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void TestResultHandlerShouldThowExceptionIfEventArgsIsNull() + [TestMethod] + public void InQuietModeTestWarningMessageShouldNotShow() + { + // Setup + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); + { "verbosity", "quiet" }, + { DefaultLoggerParameterNames.TargetFramework , "abc" } + }; - Assert.ThrowsException(() => - { - loggerEvents.RaiseTestResult(default); - }); - } + _consoleLogger.Initialize(loggerEvents, parameters); + string message = "Adapter Warning"; - [TestMethod] - public void TestResultHandlerShouldShowStdOutMessagesBannerIfStdOutIsNotEmpty() - { - var count = 0; - this.mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( - (s, o) => { count++; }); - - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - string message = "Dummy message"; - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, message); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - // Added this for synchronization - SpinWait.SpinUntil(() => count == 2, 300); - - this.mockOutput.Verify(o => o.WriteLine(" Standard Output Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); - } + // Act. Raise an event on mock object + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, message)); + loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), new Collection(), TimeSpan.FromSeconds(1))); + loggerEvents.WaitForEventCompletion(); - [TestMethod] - public void NormalVerbosityShowNotStdOutMessagesForPassedTests() - { - // Setup - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - - this.consoleLogger.Initialize(loggerEvents, parameters); - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - string message = "Dummy message"; - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, message); - - var testresult = new ObjectModel.TestResult(testcase); - testresult.Outcome = TestOutcome.Passed; - testresult.Messages.Add(testResultMessage); - - // Raise an event on mock object - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - // Verify - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdOutMessagesBanner, OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Never()); - } + // Verify + _mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Warning), Times.Never()); + } + + [TestMethod] + public void InNormalModeTestWarningAndErrorMessagesShouldShow() + { + // Setup + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + + _consoleLogger.Initialize(loggerEvents, parameters); + string message = "Adapter Warning"; + string errorMessage = "Adapter Error"; + + // Act. Raise an event on mock object + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, message)); + loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, errorMessage)); + loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), new Collection(), TimeSpan.FromSeconds(1))); + loggerEvents.WaitForEventCompletion(); + + // Verify + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunFailed, OutputLevel.Error), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Warning), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(errorMessage, OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void DetailedVerbosityShowStdOutMessagesForPassedTests() + [TestMethod] + public void TestResultHandlerShouldNotShowStdOutMessagesBannerIfStdOutIsEmpty() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - // Setup - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "detailed" } - }; + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - this.consoleLogger.Initialize(loggerEvents, parameters); - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - string message = "Dummy message"; + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + TestResultMessage testResultMessage = new(TestResultMessage.StandardOutCategory, null); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Failed + }; + testresult.Messages.Add(testResultMessage); - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, message); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Passed - }; + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - testresult.Messages.Add(testResultMessage); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdOutMessagesBanner, OutputLevel.Information), Times.Never()); + } - // Act. Raise an event on mock object - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); + [TestMethod] + public void TestResultHandlerShouldShowStdErrMessagesBannerIfStdErrIsNotEmpty() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + string message = "Dummy message"; + TestResultMessage testResultMessage = new(TestResultMessage.StandardErrorCategory, message); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Failed + }; + testresult.Messages.Add(testResultMessage); - // Verify - this.mockOutput.Verify(o => o.WriteLine(" Standard Output Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); - } + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - [TestMethod] - public void TestRunErrorMessageShowShouldTestRunFailed() + _mockOutput.Verify(o => o.WriteLine(" Standard Error Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + } + + [TestMethod] + public void TestResultHandlerShouldNotShowStdErrMessagesBannerIfStdErrIsEmpty() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - // Setup - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "detailed" } - }; + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - this.consoleLogger.Initialize(loggerEvents, parameters); - string message = "Adapter Error"; + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + TestResultMessage testResultMessage = new(TestResultMessage.StandardErrorCategory, null); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Failed + }; + testresult.Messages.Add(testResultMessage); - // Act. Raise an event on mock object - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, message)); - loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), TimeSpan.FromSeconds(1))); - loggerEvents.WaitForEventCompletion(); + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - // Verify - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunFailed, OutputLevel.Error), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Error), Times.Once()); - } + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdErrMessagesBanner, OutputLevel.Information), Times.Never()); + } - [TestMethod] - public void InQuietModeTestErrorMessageShouldShowTestRunFailed() + [TestMethod] + public void TestResultHandlerShouldShowAdditionalInfoBannerIfAdditionalInfoIsNotEmpty() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - // Setup - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "quiet" }, - { DefaultLoggerParameterNames.TargetFramework , "abc" } - }; + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + string message = "Dummy message"; + TestResultMessage testResultMessage = new(TestResultMessage.AdditionalInfoCategory, message); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Failed + }; + testresult.Messages.Add(testResultMessage); - this.consoleLogger.Initialize(loggerEvents, parameters); - string message = "Adapter Error"; + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - // Act. Raise an event on mock object - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, message)); - loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), TimeSpan.FromSeconds(1))); - loggerEvents.WaitForEventCompletion(); + _mockOutput.Verify(o => o.WriteLine(" Additional Information Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + } - // Verify - this.mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Error), Times.Once()); - } + [TestMethod] + public void TestResultHandlerShouldNotShowAdditionalInfoBannerIfAdditionalInfoIsEmpty() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - [TestMethod] - public void InQuietModeTestWarningMessageShouldNotShow() + TestResultMessage testResultMessage = new(TestResultMessage.AdditionalInfoCategory, null); + + var testresult = new ObjectModel.TestResult(testcase) { - // Setup - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "quiet" }, - { DefaultLoggerParameterNames.TargetFramework , "abc" } - }; + Outcome = TestOutcome.Failed + }; + testresult.Messages.Add(testResultMessage); - this.consoleLogger.Initialize(loggerEvents, parameters); - string message = "Adapter Warning"; + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - // Act. Raise an event on mock object - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, message)); - loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), TimeSpan.FromSeconds(1))); - loggerEvents.WaitForEventCompletion(); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.AddnlInfoMessagesBanner, OutputLevel.Information), Times.Never()); + } - // Verify - this.mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Warning), Times.Never()); - } + [TestMethod] + public void TestResultHandlerShouldShowPassedTestsForNormalVebosity() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - [TestMethod] - public void InNormalModeTestWarningAndErrorMessagesShouldShow() - { - // Setup - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - - this.consoleLogger.Initialize(loggerEvents, parameters); - string message = "Adapter Warning"; - string errorMessage = "Adapter Error"; - - // Act. Raise an event on mock object - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Warning, message)); - loggerEvents.RaiseTestRunMessage(new TestRunMessageEventArgs(TestMessageLevel.Error, errorMessage)); - loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), TimeSpan.FromSeconds(1))); - loggerEvents.WaitForEventCompletion(); - - // Verify - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunFailed, OutputLevel.Error), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(message, OutputLevel.Warning), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(errorMessage, OutputLevel.Error), Times.Once()); + foreach (var testResult in GetTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.WaitForEventCompletion(); + + _mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.WriteLine("TestName [1 h 2 m]", OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.Write(FailedTestIndicator, OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.WriteLine("TestName [4 m 5 s]", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.Write(SkippedTestIndicator, OutputLevel.Information), Times.Exactly(3)); + _mockOutput.Verify(o => o.WriteLine("TestName", OutputLevel.Information), Times.Exactly(3)); + _mockProgressIndicator.Verify(pi => pi.Pause(), Times.Exactly(5)); + _mockProgressIndicator.Verify(pi => pi.Start(), Times.Exactly(5)); + } + + [DataRow(".NETFramework,version=v4.6.2", "(net462)", "quiet")] + [DataRow(".NETFramework,version=v4.6.2", "(net462)", "minimal")] + [DataRow(null, null, "quiet")] + [DataRow(null, null, "minimal")] + [TestMethod] + public void TestResultHandlerShouldShowFailedTestsAndPassedTestsForQuietVerbosity(string framework, string expectedFramework, string verbosityLevel) + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", verbosityLevel }, + { DefaultLoggerParameterNames.TargetFramework , framework} + }; + _consoleLogger.Initialize(loggerEvents, parameters); - [TestMethod] - public void TestResultHandlerShouldNotShowStdOutMessagesBannerIfStdOutIsEmpty() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, null); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdOutMessagesBanner, OutputLevel.Information), Times.Never()); + foreach (var testResult in GetTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } - [TestMethod] - public void TestResultHandlerShouldShowStdErrMessagesBannerIfStdErrIsNotEmpty() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - string message = "Dummy message"; - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardErrorCategory, message); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(" Standard Error Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + foreach (var testResult in GetPassedTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } - [TestMethod] - public void TestResultHandlerShouldNotShowStdErrMessagesBannerIfStdErrIsEmpty() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardErrorCategory, null); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdErrMessagesBanner, OutputLevel.Information), Times.Never()); + loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), new Collection(), TimeSpan.FromSeconds(1))); + loggerEvents.WaitForEventCompletion(); + + _mockOutput.Verify(o => o.Write(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, + new[] { (CommandLineResources.PassedTestIndicator + "!").PadRight(8), + 0.ToString(CultureInfo.InvariantCulture).PadLeft(5), + 1.ToString(CultureInfo.InvariantCulture).PadLeft(5), + 1.ToString(CultureInfo.InvariantCulture).PadLeft(5), + 2.ToString(CultureInfo.InvariantCulture).PadLeft(5), + "1 m 2 s"}), OutputLevel.Information), Times.Once); + + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryAssemblyAndFramework, + "TestSourcePassed", + expectedFramework), OutputLevel.Information), Times.Once); + + _mockOutput.Verify(o => o.Write(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, + new[] { (CommandLineResources.FailedTestIndicator + "!").PadRight(8), + 1.ToString(CultureInfo.InvariantCulture).PadLeft(5), + 1.ToString(CultureInfo.InvariantCulture).PadLeft(5), + 1.ToString(CultureInfo.InvariantCulture).PadLeft(5), + 3.ToString(CultureInfo.InvariantCulture).PadLeft(5), + "1 h 2 m" }), OutputLevel.Information), Times.Once); + + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryAssemblyAndFramework, + "TestSource", + expectedFramework), OutputLevel.Information), Times.Once); + } + + [TestMethod] + [DataRow("normal")] + [DataRow("detailed")] + public void TestResultHandlerShouldNotShowformattedFailedTestsAndPassedTestsForOtherThanQuietVerbosity(string verbosityLevel) + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", verbosityLevel }, + { DefaultLoggerParameterNames.TargetFramework , "net462"} + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + foreach (var testResult in GetTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } - [TestMethod] - public void TestResultHandlerShouldShowAdditionalInfoBannerIfAdditionalInfoIsNotEmpty() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - string message = "Dummy message"; - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.AdditionalInfoCategory, message); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(" Additional Information Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + foreach (var testResult in GetPassedTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } - [TestMethod] - public void TestResultHandlerShouldNotShowAdditionalInfoBannerIfAdditionalInfoIsEmpty() + loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), new Collection(), TimeSpan.FromSeconds(1))); + loggerEvents.WaitForEventCompletion(); + + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, new object[] { CommandLineResources.PassedTestIndicator, 2, 1, 0, 1, "1 m 2 s", "TestSourcePassed", "(net462)" }), OutputLevel.Information), Times.Never); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, new object[] { CommandLineResources.FailedTestIndicator, 5, 1, 1, 1, "1 h 6 m", "TestSource", "(net462)" }), OutputLevel.Information), Times.Never); + } + + [TestMethod] + public void TestResultHandlerShouldNotShowNotStdOutMsgOfPassedTestIfVerbosityIsNormal() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - this.consoleLogger.Initialize(loggerEvents, parameters); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + string message = "Dummy message"; + TestResultMessage testResultMessage = new(TestResultMessage.StandardOutCategory, message); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Passed + }; + testresult.Messages.Add(testResultMessage); - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.AdditionalInfoCategory, null); + _mockOutput.Verify(o => o.WriteLine("", OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Never()); + } - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed - }; - testresult.Messages.Add(testResultMessage); + [TestMethod] + public void TestResultHandlerShouldNotShowDbgTrcMsg() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + string message = "Dummy message"; + TestResultMessage testResultMessage = new(TestResultMessage.DebugTraceCategory, message); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Passed + }; + testresult.Messages.Add(testResultMessage); - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); + loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); + loggerEvents.WaitForEventCompletion(); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.AddnlInfoMessagesBanner, OutputLevel.Information), Times.Never()); - } + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.DbgTrcMessagesBanner, OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Never()); + } - [TestMethod] - public void TestResultHandlerShouldShowPassedTestsForNormalVebosity() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.WriteLine("TestName [1 h 2 m]", OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.Write(FailedTestIndicator, OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.WriteLine("TestName [4 m 5 s]", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.Write(SkippedTestIndicator, OutputLevel.Information), Times.Exactly(3)); - this.mockOutput.Verify(o => o.WriteLine("TestName", OutputLevel.Information), Times.Exactly(3)); - this.mockProgressIndicator.Verify(pi => pi.Pause(), Times.Exactly(5)); - this.mockProgressIndicator.Verify(pi => pi.Start(), Times.Exactly(5)); - } + [TestMethod] + public void TestResultHandlerShouldWriteToConsoleButSkipPassedTestsForMinimalVerbosity() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "minimal" }, + { DefaultLoggerParameterNames.TargetFramework , "net462"} + }; + _consoleLogger.Initialize(loggerEvents, parameters); - [DataRow(".NETFramework,version=v4.5.1", "(net451)", "quiet")] - [DataRow(".NETFramework,version=v4.5.1", "(net451)", "minimal")] - [DataRow(null, null, "quiet")] - [DataRow(null, null, "minimal")] - [TestMethod] - public void TestResultHandlerShouldShowFailedTestsAndPassedTestsForQuietVebosity(string framework, string expectedFramework, string verbosityLevel) - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", verbosityLevel }, - { DefaultLoggerParameterNames.TargetFramework , framework} - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - - foreach (var testResult in this.GetPassedTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - - loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), TimeSpan.FromSeconds(1))); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.Write(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, - (CommandLineResources.PassedTestIndicator + "!").PadRight(8), - 0.ToString().PadLeft(5), - 1.ToString().PadLeft(5), - 1.ToString().PadLeft(5), 2 - .ToString().PadLeft(5), - "1 m 2 s"), OutputLevel.Information), Times.Once); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryAssemblyAndFramework, - "TestSourcePassed", - expectedFramework), OutputLevel.Information), Times.Once); - - this.mockOutput.Verify(o => o.Write(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, - (CommandLineResources.FailedTestIndicator + "!").PadRight(8), - 1.ToString().PadLeft(5), - 1.ToString().PadLeft(5), - 1.ToString().PadLeft(5), - 3.ToString().PadLeft(5), - "1 h 2 m"), OutputLevel.Information), Times.Once); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryAssemblyAndFramework, - "TestSource", - expectedFramework), OutputLevel.Information), Times.Once); + foreach (var testResult in GetTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.WaitForEventCompletion(); + + _mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Never); + _mockOutput.Verify(o => o.WriteLine("TestName [1 h 2 m]", OutputLevel.Information), Times.Never); + _mockOutput.Verify(o => o.Write(FailedTestIndicator, OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.WriteLine("TestName [4 m 5 s]", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.Write(SkippedTestIndicator, OutputLevel.Information), Times.Exactly(3)); + _mockOutput.Verify(o => o.WriteLine("TestName", OutputLevel.Information), Times.Exactly(3)); + } - [TestMethod] - [DataRow("normal")] - [DataRow("detailed")] - public void TestResultHandlerShouldNotShowformattedFailedTestsAndPassedTestsForOtherThanQuietVebosity(string verbosityLevel) - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", verbosityLevel }, - { DefaultLoggerParameterNames.TargetFramework , "net451"} - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - - foreach (var testResult in this.GetPassedTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - - loggerEvents.RaiseTestRunComplete(new TestRunCompleteEventArgs(new Mock().Object, false, false, null, new Collection(), TimeSpan.FromSeconds(1))); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, CommandLineResources.PassedTestIndicator, 2, 1, 0, 1, "1 m 2 s", "TestSourcePassed", "(net451)"), OutputLevel.Information), Times.Never); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummary, CommandLineResources.FailedTestIndicator, 5, 1, 1, 1, "1 h 6 m", "TestSource", "(net451)"), OutputLevel.Information), Times.Never); - } + [TestMethod] + public void TestResultHandlerShouldWriteToNoTestResultForQuietVerbosity() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "quiet" }, + { DefaultLoggerParameterNames.TargetFramework , "net462"} + }; + _consoleLogger.Initialize(loggerEvents, parameters); - [TestMethod] - public void TestResultHandlerShouldNotShowNotStdOutMsgOfPassedTestIfVerbosityIsNormal() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - string message = "Dummy message"; - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, message); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Passed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine("", OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Never()); + foreach (var testResult in GetTestResultsObject()) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.WaitForEventCompletion(); - [TestMethod] - public void TestResultHandlerShouldNotShowDbgTrcMsg() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - string message = "Dummy message"; - TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.DebugTraceCategory, message); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Passed - }; - testresult.Messages.Add(testResultMessage); - - loggerEvents.RaiseTestResult(new TestResultEventArgs(testresult)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.DbgTrcMessagesBanner, OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Never()); - } + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.PassedTestIndicator, "TestName [1 h 2 m]"), OutputLevel.Information), Times.Never); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.FailedTestIndicator, "TestName [4 m 5 s]"), OutputLevel.Information), Times.Never); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.SkippedTestIndicator, "TestName"), OutputLevel.Warning), Times.Never); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.NotRunTestIndicator, "TestName"), OutputLevel.Information), Times.Never); + } - [TestMethod] - public void TestResultHandlerShouldWriteToConsoleButSkipPassedTestsForMinimalVerbosity() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "minimal" }, - { DefaultLoggerParameterNames.TargetFramework , "net451"} - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Never); - this.mockOutput.Verify(o => o.WriteLine("TestName [1 h 2 m]", OutputLevel.Information), Times.Never); - this.mockOutput.Verify(o => o.Write(FailedTestIndicator, OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.WriteLine("TestName [4 m 5 s]", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.Write(SkippedTestIndicator, OutputLevel.Information), Times.Exactly(3)); - this.mockOutput.Verify(o => o.WriteLine("TestName", OutputLevel.Information), Times.Exactly(3)); - } + [DataRow("[1 h 2 m]", new int[5] { 0, 1, 2, 3, 78 })] + [DataRow("[4 m 3 s]", new int[5] { 0, 0, 4, 3, 78 })] + [DataRow("[3 s]", new int[5] { 0, 0, 0, 3, 78 })] + [DataRow("[78 ms]", new int[5] { 0, 0, 0, 0, 78 })] + [DataRow("[1 h]", new int[5] { 0, 1, 0, 5, 78 })] + [DataRow("[5 m]", new int[5] { 0, 0, 5, 0, 78 })] + [DataRow("[4 s]", new int[5] { 0, 0, 0, 4, 0 })] + [DataTestMethod] + public void TestResultHandlerForTestResultWithDurationShouldPrintDurationInfo(string expectedDuration, int[] timeSpanArgs) + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + var testResultWithHrMinSecMs = new ObjectModel.TestResult(new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") { DisplayName = "TestName" }) + { + Outcome = TestOutcome.Passed, + Duration = new TimeSpan(timeSpanArgs[0], timeSpanArgs[1], timeSpanArgs[2], timeSpanArgs[3], timeSpanArgs[4]) + }; - [TestMethod] - public void TestResultHandlerShouldWriteToNoTestResultForQuietVerbosity() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "quiet" }, - { DefaultLoggerParameterNames.TargetFramework , "net451"} - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultsObject()) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.PassedTestIndicator, "TestName [1 h 2 m]"), OutputLevel.Information), Times.Never); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.FailedTestIndicator, "TestName [4 m 5 s]"), OutputLevel.Information), Times.Never); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.SkippedTestIndicator, "TestName"), OutputLevel.Warning), Times.Never); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.NotRunTestIndicator, "TestName"), OutputLevel.Information), Times.Never); - } + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResultWithHrMinSecMs)); + loggerEvents.WaitForEventCompletion(); - [DataRow("[1 h 2 m]", new int[5] { 0, 1, 2, 3, 78 })] - [DataRow("[4 m 3 s]", new int[5] { 0, 0, 4, 3, 78 })] - [DataRow("[3 s]", new int[5] { 0, 0, 0, 3, 78 })] - [DataRow("[78 ms]", new int[5] { 0, 0, 0, 0, 78 })] - [DataRow("[1 h]", new int[5] { 0, 1, 0, 5, 78 })] - [DataRow("[5 m]", new int[5] { 0, 0, 5, 0, 78 })] - [DataRow("[4 s]", new int[5] { 0, 0, 0, 4, 0 })] - [DataTestMethod] - public void TestResultHandlerForTestResultWithDurationShouldPrintDurationInfo(string expectedDuration, int[] timeSpanArgs) - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - var TestResultWithHrMinSecMs = new ObjectModel.TestResult(new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") { DisplayName = "TestName" }) - { - Outcome = TestOutcome.Passed, - Duration = new TimeSpan(timeSpanArgs[0], timeSpanArgs[1], timeSpanArgs[2], timeSpanArgs[3], timeSpanArgs[4]) - }; - - loggerEvents.RaiseTestResult(new TestResultEventArgs(TestResultWithHrMinSecMs)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine("TestName " + expectedDuration, OutputLevel.Information), Times.Once()); - } + _mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine("TestName " + expectedDuration, OutputLevel.Information), Times.Once()); + } - [DataTestMethod] - public void TestResultHandlerForTestResultWithDurationLessThanOneMsShouldPrintDurationInfo() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - var TestResultWithHrMinSecMs = new ObjectModel.TestResult(new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") { DisplayName = "TestName" }) - { - Outcome = TestOutcome.Passed, - Duration = TimeSpan.FromTicks(50) - }; - - loggerEvents.RaiseTestResult(new TestResultEventArgs(TestResultWithHrMinSecMs)); - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine("TestName [< 1 ms]", OutputLevel.Information), Times.Once()); - } + [DataTestMethod] + public void TestResultHandlerForTestResultWithDurationLessThanOneMsShouldPrintDurationInfo() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + var testResultWithHrMinSecMs = new ObjectModel.TestResult(new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") { DisplayName = "TestName" }) + { + Outcome = TestOutcome.Passed, + Duration = TimeSpan.FromTicks(50) + }; - [TestMethod] - public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsPass() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultObject(TestOutcome.Passed)) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(1, 0, 0, 0)); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryTotalTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 0), OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummarySkippedTests, 0), OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunSuccessful, OutputLevel.Information), Times.Once()); - this.mockProgressIndicator.Verify(pi => pi.Stop(), Times.Once); - } + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResultWithHrMinSecMs)); + loggerEvents.WaitForEventCompletion(); - [TestMethod] - public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsFail() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultObject(TestOutcome.Failed)) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(1, 0, 0, 0)); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryTotalTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 0), OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummarySkippedTests, 0), OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunFailed, OutputLevel.Error), Times.Once()); - } + _mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine("TestName [< 1 ms]", OutputLevel.Information), Times.Once()); + } + + [TestMethod] + public void TestRunCompleteHandlerCorrectlySplitPathsForSourceName() + { + // Arrange + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "minimal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + // Linux-like path + loggerEvents.RaiseTestResult(new(new(new("FQN1", new Uri("some://uri"), "/home/MyApp1/Tests/MyApp1.Tests/MyApp1.Tests.dll")))); + // Double forward slashes path + loggerEvents.RaiseTestResult(new(new(new("FQN2", new Uri("some://uri"), "/home//MyApp2//Tests//MyApp2.Tests//MyApp2.Tests.dll")))); + // Backslashes path + loggerEvents.RaiseTestResult(new(new(new("FQN3", new Uri("some://uri"), @"C:\MyApp3/Tests/MyApp3.Tests\MyApp3.Tests.dll")))); + // Multiple Backslashes path + loggerEvents.RaiseTestResult(new(new(new("FQN4", new Uri("some://uri"), "C:\\\\MyApp4\\\\Tests\\\\MyApp4.Tests\\\\MyApp4.Tests.dll")))); + // Mix backslashes and forward slashes path + loggerEvents.RaiseTestResult(new(new(new("FQN5", new Uri("some://uri"), "C:\\MyApp5/Tests\\\\MyApp5.Tests///MyApp5.Tests.dll")))); + // UNC path + loggerEvents.RaiseTestResult(new(new(new("FQN6", new Uri("some://uri"), @"\\MyApp6\Tests\MyApp6.Tests\MyApp6.Tests.dll")))); + + // Act + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(1, 0, 0, 0)); + + // Assert + VerifyCall("MyApp1.Tests.dll"); + VerifyCall("MyApp2.Tests.dll"); + // On Linux and MAC we don't support backslash for path so source name will contain backslashes. + VerifyCall(OSUtils.IsWindows ? "MyApp3.Tests.dll" : "MyApp3.Tests\\MyApp3.Tests.dll"); + // On Linux and MAC we don't support backslash for path so source name will contain backslashes. + VerifyCall(OSUtils.IsWindows ? "MyApp4.Tests.dll" : @"C:\\MyApp4\\Tests\\MyApp4.Tests\\MyApp4.Tests.dll"); + VerifyCall("MyApp5.Tests.dll"); + VerifyCall(OSUtils.IsWindows ? "MyApp6.Tests.dll" : @"\\MyApp6\Tests\MyApp6.Tests\MyApp6.Tests.dll"); + + // Local functions + void VerifyCall(string testName) + => _mockOutput.Verify( + o => o.WriteLine( + string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryAssemblyAndFramework, testName, ""), + OutputLevel.Information), + Times.Once()); + } + + [TestMethod] + public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsPass() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - [TestMethod] - public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsCanceled() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary - { - { "verbosity", "normal" } - }; - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultObject(TestOutcome.Failed)) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.CompleteTestRun(null, true, false, null, null, new TimeSpan(1, 0, 0, 0)); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryForCanceledOrAbortedRun), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 0), OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummarySkippedTests, 0), OutputLevel.Information), Times.Never()); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunCanceled, OutputLevel.Error), Times.Once()); + foreach (var testResult in GetTestResultObject(TestOutcome.Passed)) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(1, 0, 0, 0)); + + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryTotalTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 0), OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummarySkippedTests, 0), OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunSuccessful, OutputLevel.Information), Times.Once()); + _mockProgressIndicator.Verify(pi => pi.Stop(), Times.Once); + } + + [TestMethod] + public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsFail() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - [TestMethod] - public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsCanceledWithoutRunningAnyTest() + foreach (var testResult in GetTestResultObject(TestOutcome.Failed)) { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); + } + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(1, 0, 0, 0)); + + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryTotalTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 0), OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummarySkippedTests, 0), OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunFailed, OutputLevel.Error), Times.Once()); + } - loggerEvents.CompleteTestRun(null, true, false, null, null, new TimeSpan(1, 0, 0, 0)); + [TestMethod] + public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsCanceled() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunCanceled, OutputLevel.Error), Times.Once()); + foreach (var testResult in GetTestResultObject(TestOutcome.Failed)) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.CompleteTestRun(null, true, false, null, null, null, new TimeSpan(1, 0, 0, 0)); + + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryForCanceledOrAbortedRun, Array.Empty()), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 0), OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummarySkippedTests, 0), OutputLevel.Information), Times.Never()); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunCanceled, OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsAborted() + [TestMethod] + public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsCanceledWithoutRunningAnyTest() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - foreach (var testResult in this.GetTestResultObject(TestOutcome.Failed)) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.CompleteTestRun(null, false, true, null, null, new TimeSpan(1, 0, 0, 0)); + loggerEvents.CompleteTestRun(null, true, false, null, null, null, new TimeSpan(1, 0, 0, 0)); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryForCanceledOrAbortedRun), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunAborted, OutputLevel.Error), Times.Once()); - } + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunCanceled, OutputLevel.Error), Times.Once()); + } - [TestMethod] - public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsAbortedWithoutRunningAnyTest() + [TestMethod] + public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsAborted() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + { "verbosity", "normal" } + }; - loggerEvents.CompleteTestRun(null, false, true, null, null, new TimeSpan(1, 0, 0, 0)); + _consoleLogger.Initialize(loggerEvents, parameters); - this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunAborted, OutputLevel.Error), Times.Once()); + foreach (var testResult in GetTestResultObject(TestOutcome.Failed)) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.CompleteTestRun(null, false, true, null, null, null, new TimeSpan(1, 0, 0, 0)); - [TestMethod] - public void TestRunStartHandlerShouldWriteNumberOfTestSourcesDiscoveredOnConsole() + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryForCanceledOrAbortedRun, Array.Empty()), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunAborted, OutputLevel.Error), Times.Once()); + } + + [TestMethod] + public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsAbortedWithoutRunningAnyTest() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - var fileHelper = new Mock(); - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.FileHelper = fileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, fileHelper.Object); - string testFilePath = Path.Combine(Path.GetTempPath(), "DmmyTestFile.dll"); - fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); + loggerEvents.CompleteTestRun(null, false, true, null, null, null, new TimeSpan(1, 0, 0, 0)); - CommandLineOptions.Instance.AddSource(testFilePath); + _mockOutput.Verify(o => o.WriteLine(CommandLineResources.TestRunAborted, OutputLevel.Error), Times.Once()); + } - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + [TestMethod] + public void TestRunStartHandlerShouldWriteNumberOfTestSourcesDiscoveredOnConsole() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); - var testRunStartEventArgs = new TestRunStartEventArgs(new TestRunCriteria(new List { testFilePath }, 1)); - loggerEvents.RaiseTestRunStart(testRunStartEventArgs); - loggerEvents.WaitForEventCompletion(); + var fileHelper = new Mock(); + CommandLineOptions.Reset(); + CommandLineOptions.Instance.FileHelper = fileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, fileHelper.Object); + string testFilePath = Path.Combine(Path.GetTempPath(), "DmmyTestFile.dll"); + fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestSourcesDiscovered, CommandLineOptions.Instance.Sources.Count()), OutputLevel.Information), Times.Once()); - } + CommandLineOptions.Instance.AddSource(testFilePath); - [TestMethod] - public void TestRunStartHandlerShouldWriteTestSourcesDiscoveredOnConsoleIfVerbosityDetailed() + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - var fileHelper = new Mock(); - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.FileHelper = fileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, fileHelper.Object); - var temp = Path.GetTempPath(); - string testFilePath = Path.Combine(temp, "DummyTestFile.dll"); - fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); - string testFilePath2 = Path.Combine(temp, "DummyTestFile2.dll"); - fileHelper.Setup(fh => fh.Exists(testFilePath2)).Returns(true); + var testRunStartEventArgs = new TestRunStartEventArgs(new TestRunCriteria(new List { testFilePath }, 1)); + loggerEvents.RaiseTestRunStart(testRunStartEventArgs); + loggerEvents.WaitForEventCompletion(); - CommandLineOptions.Instance.AddSource(testFilePath); - CommandLineOptions.Instance.AddSource(testFilePath2); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestSourcesDiscovered, CommandLineOptions.Instance.Sources.Count()), OutputLevel.Information), Times.Once()); + } - var parameters = new Dictionary(); - parameters.Add("verbosity", "detailed"); - this.consoleLogger.Initialize(loggerEvents, parameters); + [TestMethod] + public void TestRunStartHandlerShouldWriteTestSourcesDiscoveredOnConsoleIfVerbosityDetailed() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + + var fileHelper = new Mock(); + CommandLineOptions.Reset(); + CommandLineOptions.Instance.FileHelper = fileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, fileHelper.Object); + var temp = Path.GetTempPath(); + string testFilePath = Path.Combine(temp, "DummyTestFile.dll"); + fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); + string testFilePath2 = Path.Combine(temp, "DummyTestFile2.dll"); + fileHelper.Setup(fh => fh.Exists(testFilePath2)).Returns(true); + + CommandLineOptions.Instance.AddSource(testFilePath); + CommandLineOptions.Instance.AddSource(testFilePath2); + + var parameters = new Dictionary + { + { "verbosity", "detailed" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - var testRunStartEventArgs = new TestRunStartEventArgs(new TestRunCriteria(new List { testFilePath }, 1)); - loggerEvents.RaiseTestRunStart(testRunStartEventArgs); - loggerEvents.WaitForEventCompletion(); + var testRunStartEventArgs = new TestRunStartEventArgs(new TestRunCriteria(new List { testFilePath }, 1)); + loggerEvents.RaiseTestRunStart(testRunStartEventArgs); + loggerEvents.WaitForEventCompletion(); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestSourcesDiscovered, CommandLineOptions.Instance.Sources.Count()), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(testFilePath, OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.WriteLine(testFilePath, OutputLevel.Information), Times.Once); - } + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestSourcesDiscovered, CommandLineOptions.Instance.Sources.Count()), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(testFilePath, OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.WriteLine(testFilePath, OutputLevel.Information), Times.Once); + } - [TestMethod] - public void TestRunStartHandlerShouldNotWriteTestSourcesDiscoveredOnConsoleIfVerbosityNotDetailed() + [TestMethod] + public void TestRunStartHandlerShouldNotWriteTestSourcesDiscoveredOnConsoleIfVerbosityNotDetailed() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + + var fileHelper = new Mock(); + CommandLineOptions.Reset(); + CommandLineOptions.Instance.FileHelper = fileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, fileHelper.Object); + var temp = Path.GetTempPath(); + string testFilePath = Path.Combine(temp, "DummyTestFile.dll"); + fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); + string testFilePath2 = Path.Combine(temp, "DummyTestFile2.dll"); + fileHelper.Setup(fh => fh.Exists(testFilePath2)).Returns(true); + + CommandLineOptions.Instance.AddSource(testFilePath); + CommandLineOptions.Instance.AddSource(testFilePath2); + + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - - var fileHelper = new Mock(); - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.FileHelper = fileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, fileHelper.Object); - var temp = Path.GetTempPath(); - string testFilePath = Path.Combine(temp, "DummyTestFile.dll"); - fileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); - string testFilePath2 = Path.Combine(temp, "DummyTestFile2.dll"); - fileHelper.Setup(fh => fh.Exists(testFilePath2)).Returns(true); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - CommandLineOptions.Instance.AddSource(testFilePath); - CommandLineOptions.Instance.AddSource(testFilePath2); + var testRunStartEventArgs = new TestRunStartEventArgs(new TestRunCriteria(new List { testFilePath }, 1)); + loggerEvents.RaiseTestRunStart(testRunStartEventArgs); + loggerEvents.WaitForEventCompletion(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestSourcesDiscovered, CommandLineOptions.Instance.Sources.Count()), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(testFilePath, OutputLevel.Information), Times.Never); + _mockOutput.Verify(o => o.WriteLine(testFilePath2, OutputLevel.Information), Times.Never); + } - var testRunStartEventArgs = new TestRunStartEventArgs(new TestRunCriteria(new List { testFilePath }, 1)); - loggerEvents.RaiseTestRunStart(testRunStartEventArgs); - loggerEvents.WaitForEventCompletion(); + [TestMethod] + public void PrintTimeHandlerShouldPrintElapsedTimeOnConsole() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestSourcesDiscovered, CommandLineOptions.Instance.Sources.Count()), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(testFilePath, OutputLevel.Information), Times.Never); - this.mockOutput.Verify(o => o.WriteLine(testFilePath2, OutputLevel.Information), Times.Never); + foreach (var testResult in GetTestResultObject(TestOutcome.Passed)) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(1, 0, 0, 0)); + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(0, 1, 0, 0)); + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(0, 0, 1, 0)); + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(0, 0, 0, 1)); + + // Verify PrintTimeSpan with different formats + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Days), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Hours), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Minutes), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Seconds), OutputLevel.Information), Times.Once()); + } - [TestMethod] - public void PrintTimeHandlerShouldPrintElapsedTimeOnConsole() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - foreach (var testResult in this.GetTestResultObject(TestOutcome.Passed)) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(1, 0, 0, 0)); - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(0, 1, 0, 0)); - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(0, 0, 1, 0)); - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(0, 0, 0, 1)); - - // Verify PrintTimeSpan with different formats - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Days), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Hours), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Minutes), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.ExecutionTimeFormatString, 1, CommandLineResources.Seconds), OutputLevel.Information), Times.Once()); + [TestMethod] + public void DisplayFullInformationShouldWriteErrorMessageAndStackTraceToConsole() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var testresults = GetTestResultObject(TestOutcome.Failed); + testresults[0].ErrorMessage = "ErrorMessage"; + testresults[0].ErrorStackTrace = "ErrorStackTrace"; + foreach (var testResult in testresults) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.WaitForEventCompletion(); - [TestMethod] - public void DisplayFullInformationShouldWriteErrorMessageAndStackTraceToConsole() - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testresults = this.GetTestResultObject(TestOutcome.Failed); - testresults[0].ErrorMessage = "ErrorMessage"; - testresults[0].ErrorStackTrace = "ErrorStackTrace"; - foreach (var testResult in testresults) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.WaitForEventCompletion(); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0}", " ErrorMessage"), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0}", " ErrorStackTrace"), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" Error Message:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" Stack Trace:", OutputLevel.Information), Times.Once()); - } + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0}", " ErrorMessage"), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0}", " ErrorStackTrace"), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" Error Message:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" Stack Trace:", OutputLevel.Information), Times.Once()); + } - [TestMethod] - public void DisplayFullInformationShouldWriteStdMessageWithNewLine() + [TestMethod] + public void DisplayFullInformationShouldWriteStdMessageWithNewLine() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "detailed"); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var testresults = this.GetTestResultObject(TestOutcome.Passed); - testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.StandardOutCategory, "Hello")); + { "verbosity", "detailed" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - foreach (var testResult in testresults) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.WaitForEventCompletion(); + var testresults = GetTestResultObject(TestOutcome.Passed); + testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.StandardOutCategory, "Hello")); - this.mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine("TestName", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" Hello", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(String.Empty, OutputLevel.Information), Times.AtLeastOnce); + foreach (var testResult in testresults) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); } + loggerEvents.WaitForEventCompletion(); + + _mockOutput.Verify(o => o.Write(PassedTestIndicator, OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine("TestName", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" Hello", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Empty, OutputLevel.Information), Times.AtLeastOnce); + } - [TestMethod] - public void GetTestMessagesShouldWriteMessageAndStackTraceToConsole() + [TestMethod] + public void GetTestMessagesShouldWriteMessageAndStackTraceToConsole() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - var testresults = this.GetTestResultObject(TestOutcome.Failed); - testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.StandardOutCategory, "StandardOutCategory")); - testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.StandardErrorCategory, "StandardErrorCategory")); - testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.AdditionalInfoCategory, "AdditionalInfoCategory")); - testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.AdditionalInfoCategory, "AnotherAdditionalInfoCategory")); + var testresults = GetTestResultObject(TestOutcome.Failed); + testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.StandardOutCategory, "StandardOutCategory")); + testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.StandardErrorCategory, "StandardErrorCategory")); + testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.AdditionalInfoCategory, "AdditionalInfoCategory")); + testresults[0].Messages.Add(new TestResultMessage(TestResultMessage.AdditionalInfoCategory, "AnotherAdditionalInfoCategory")); + + foreach (var testResult in testresults) + { + loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); + } + loggerEvents.WaitForEventCompletion(); - foreach (var testResult in testresults) - { - loggerEvents.RaiseTestResult(new TestResultEventArgs(testResult)); - } - loggerEvents.WaitForEventCompletion(); + _mockOutput.Verify(o => o.WriteLine(" Standard Output Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" StandardOutCategory", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" Standard Output Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" StandardOutCategory", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" Standard Error Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" StandardErrorCategory", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" Standard Error Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" StandardErrorCategory", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" Additional Information Messages:", OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(" AdditionalInfoCategory AnotherAdditionalInfoCategory", OutputLevel.Information), Times.Once()); + } - this.mockOutput.Verify(o => o.WriteLine(" Additional Information Messages:", OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(" AdditionalInfoCategory AnotherAdditionalInfoCategory", OutputLevel.Information), Times.Once()); - } + [DataRow("quiet")] + [DataRow("Normal")] + [DataRow("minimal")] + [DataRow("detailed")] + [TestMethod] + public void AttachmentInformationShouldBeWrittenToConsoleIfAttachmentsArePresent(string verbosityLevel) + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary + { + { "verbosity", verbosityLevel } + }; + _consoleLogger.Initialize(loggerEvents, parameters); + + var attachmentSet = new AttachmentSet(new Uri("test://uri"), "myattachmentset"); + var uriDataAttachment = new UriDataAttachment(new Uri("file://server/filename.ext"), "description"); + attachmentSet.Attachments.Add(uriDataAttachment); + var uriDataAttachment1 = new UriDataAttachment(new Uri("file://server/filename1.ext"), "description"); + attachmentSet.Attachments.Add(uriDataAttachment1); + var attachmentSetList = new List + { + attachmentSet + }; + loggerEvents.CompleteTestRun(null, false, false, null, new Collection(attachmentSetList), new Collection(), new TimeSpan(1, 0, 0, 0)); - [DataRow("quiet")] - [DataRow("Normal")] - [DataRow("minimal")] - [DataRow("detailed")] - [TestMethod] - public void AttachmentInformationShouldBeWrittenToConsoleIfAttachmentsArePresent(string verbosityLevel) - { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", verbosityLevel); - this.consoleLogger.Initialize(loggerEvents, parameters); - - var attachmentSet = new AttachmentSet(new Uri("test://uri"), "myattachmentset"); - var uriDataAttachment = new UriDataAttachment(new Uri("file://server/filename.ext"), "description"); - attachmentSet.Attachments.Add(uriDataAttachment); - var uriDataAttachment1 = new UriDataAttachment(new Uri("file://server/filename1.ext"), "description"); - attachmentSet.Attachments.Add(uriDataAttachment1); - var attachmentSetList = new List - { - attachmentSet - }; - loggerEvents.CompleteTestRun(null, false, false, null, new Collection(attachmentSetList), new TimeSpan(1, 0, 0, 0)); - - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AttachmentOutputFormat, uriDataAttachment.Uri.LocalPath), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AttachmentOutputFormat, uriDataAttachment1.Uri.LocalPath), OutputLevel.Information), Times.Once()); - } + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AttachmentOutputFormat, uriDataAttachment.Uri.LocalPath), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AttachmentOutputFormat, uriDataAttachment1.Uri.LocalPath), OutputLevel.Information), Times.Once()); + } - [TestMethod] - public void ResultsInHeirarchichalOrderShouldReportCorrectCount() + [TestMethod] + public void ResultsInHeirarchichalOrderShouldReportCorrectCount() + { + var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); + loggerEvents.EnableEvents(); + var parameters = new Dictionary { - var loggerEvents = new InternalTestLoggerEvents(TestSessionMessageLogger.Instance); - loggerEvents.EnableEvents(); - var parameters = new Dictionary(); - parameters.Add("verbosity", "normal"); - this.consoleLogger.Initialize(loggerEvents, parameters); + { "verbosity", "normal" } + }; + _consoleLogger.Initialize(loggerEvents, parameters); - TestCase testCase1 = CreateTestCase("TestCase1"); - TestCase testCase2 = CreateTestCase("TestCase2"); - TestCase testCase3 = CreateTestCase("TestCase3"); + TestCase testCase1 = CreateTestCase("TestCase1"); + TestCase testCase2 = CreateTestCase("TestCase2"); + TestCase testCase3 = CreateTestCase("TestCase3"); - Guid parentExecutionId = Guid.NewGuid(); - TestProperty ParentExecIdProperty = TestProperty.Register("ParentExecId", "ParentExecId", typeof(Guid), TestPropertyAttributes.Hidden, typeof(ObjectModel.TestResult)); - TestProperty ExecutionIdProperty = TestProperty.Register("ExecutionId", "ExecutionId", typeof(Guid), TestPropertyAttributes.Hidden, typeof(ObjectModel.TestResult)); - TestProperty TestTypeProperty = TestProperty.Register("TestType", "TestType", typeof(Guid), TestPropertyAttributes.Hidden, typeof(ObjectModel.TestResult)); + Guid parentExecutionId = Guid.NewGuid(); + TestProperty parentExecIdProperty = TestProperty.Register("ParentExecId", "ParentExecId", typeof(Guid), TestPropertyAttributes.Hidden, typeof(ObjectModel.TestResult)); + TestProperty executionIdProperty = TestProperty.Register("ExecutionId", "ExecutionId", typeof(Guid), TestPropertyAttributes.Hidden, typeof(ObjectModel.TestResult)); + TestProperty testTypeProperty = TestProperty.Register("TestType", "TestType", typeof(Guid), TestPropertyAttributes.Hidden, typeof(ObjectModel.TestResult)); - var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - result1.SetPropertyValue(ExecutionIdProperty, parentExecutionId); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + result1.SetPropertyValue(executionIdProperty, parentExecutionId); - var result2 = new ObjectModel.TestResult(testCase2) { Outcome = TestOutcome.Passed }; - result2.SetPropertyValue(ExecutionIdProperty, Guid.NewGuid()); - result2.SetPropertyValue(ParentExecIdProperty, parentExecutionId); + var result2 = new ObjectModel.TestResult(testCase2) { Outcome = TestOutcome.Passed }; + result2.SetPropertyValue(executionIdProperty, Guid.NewGuid()); + result2.SetPropertyValue(parentExecIdProperty, parentExecutionId); - var result3 = new ObjectModel.TestResult(testCase3) { Outcome = TestOutcome.Failed }; - result3.SetPropertyValue(ExecutionIdProperty, Guid.NewGuid()); - result3.SetPropertyValue(ParentExecIdProperty, parentExecutionId); + var result3 = new ObjectModel.TestResult(testCase3) { Outcome = TestOutcome.Failed }; + result3.SetPropertyValue(executionIdProperty, Guid.NewGuid()); + result3.SetPropertyValue(parentExecIdProperty, parentExecutionId); - loggerEvents.RaiseTestResult(new TestResultEventArgs(result1)); - loggerEvents.RaiseTestResult(new TestResultEventArgs(result2)); - loggerEvents.RaiseTestResult(new TestResultEventArgs(result3)); + loggerEvents.RaiseTestResult(new TestResultEventArgs(result1)); + loggerEvents.RaiseTestResult(new TestResultEventArgs(result2)); + loggerEvents.RaiseTestResult(new TestResultEventArgs(result3)); - loggerEvents.CompleteTestRun(null, false, false, null, null, new TimeSpan(1, 0, 0, 0)); + loggerEvents.CompleteTestRun(null, false, false, null, null, null, new TimeSpan(1, 0, 0, 0)); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 1), OutputLevel.Information), Times.Once()); - this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryTotalTests, 2), OutputLevel.Information), Times.Once()); - } + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryFailedTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryPassedTests, 1), OutputLevel.Information), Times.Once()); + _mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.TestRunSummaryTotalTests, 2), OutputLevel.Information), Times.Once()); + } + + private static TestCase CreateTestCase(string testCaseName) + { + return new TestCase(testCaseName, new Uri("some://uri"), "DummySourceFileName"); + } - private TestCase CreateTestCase(string testCaseName) + private static List GetTestResultsObject() + { + var testcase = new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") { - return new TestCase(testCaseName, new Uri("some://uri"), "DummySourceFileName"); - } + DisplayName = "TestName" + }; - private void Setup() + var duration = new TimeSpan(1, 2, 3); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Passed, + Duration = duration, + StartTime = DateTime.Now - duration, + EndTime = DateTime.Now + }; + + var duration1 = new TimeSpan(0, 0, 4, 5, 60); + var testresult1 = new ObjectModel.TestResult(testcase) { - this.mockRequestData = new Mock(); - this.mockMetricsCollection = new Mock(); - mockRequestData.Setup(rd => rd.MetricsCollection).Returns(mockMetricsCollection.Object); + Outcome = TestOutcome.Failed, + Duration = duration1, + StartTime = DateTime.Now - duration1, + EndTime = DateTime.Now + }; - this.mockOutput = new Mock(); - this.mockProgressIndicator = new Mock(); - this.consoleLogger = new ConsoleLogger(this.mockOutput.Object, this.mockProgressIndicator.Object); - } + var testresult2 = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.None + }; - private List GetTestResultsObject() - { - var testcase = new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSource") - { - DisplayName = "TestName" - }; - - var duration = new TimeSpan(1, 2, 3); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Passed, - Duration = duration, - StartTime = DateTime.Now - duration, - EndTime = DateTime.Now - }; - - var duration1 = new TimeSpan(0, 0, 4, 5, 60); - var testresult1 = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Failed, - Duration = duration1, - StartTime = DateTime.Now - duration1, - EndTime = DateTime.Now - }; - - var testresult2 = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.None - }; - - var testresult3 = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.NotFound - }; - - var testresult4 = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Skipped - }; - - var testresultList = new List { testresult, testresult1, testresult2, testresult3, testresult4 }; - - return testresultList; - } + var testresult3 = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.NotFound + }; - private List GetPassedTestResultsObject() + var testresult4 = new ObjectModel.TestResult(testcase) { - var testcase = new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSourcePassed") - { - DisplayName = "TestName" - }; + Outcome = TestOutcome.Skipped + }; - var duration = new TimeSpan(0, 0, 1, 2, 3); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Passed, - Duration = duration, - StartTime = DateTime.Now - duration, - EndTime = DateTime.Now - }; + var testresultList = new List { testresult, testresult1, testresult2, testresult3, testresult4 }; - var testresult1 = new ObjectModel.TestResult(testcase) - { - Outcome = TestOutcome.Skipped - }; + return testresultList; + } - var testresultList = new List { testresult, testresult1 }; + private static List GetPassedTestResultsObject() + { + var testcase = new TestCase("DymmyNamespace.DummyClass.TestName", new Uri("some://uri"), "TestSourcePassed") + { + DisplayName = "TestName" + }; - return testresultList; - } + var duration = new TimeSpan(0, 0, 1, 2, 3); + var testresult = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Passed, + Duration = duration, + StartTime = DateTime.Now - duration, + EndTime = DateTime.Now + }; + + var testresult1 = new ObjectModel.TestResult(testcase) + { + Outcome = TestOutcome.Skipped + }; + + var testresultList = new List { testresult, testresult1 }; + + return testresultList; + } - private List GetTestResultObject(TestOutcome outcome) + private static List GetTestResultObject(TestOutcome outcome) + { + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + var testresult = new ObjectModel.TestResult(testcase) { - var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); - var testresult = new ObjectModel.TestResult(testcase) - { - Outcome = outcome - }; - var testresultList = new List { testresult }; - return testresultList; - } + Outcome = outcome + }; + var testresultList = new List { testresult }; + return testresultList; } } diff --git a/test/vstest.console.UnitTests/Internal/FilePatternParserTests.cs b/test/vstest.console.UnitTests/Internal/FilePatternParserTests.cs index 13ae7d8fb8..4c7e7e0f29 100644 --- a/test/vstest.console.UnitTests/Internal/FilePatternParserTests.cs +++ b/test/vstest.console.UnitTests/Internal/FilePatternParserTests.cs @@ -1,125 +1,179 @@ -// Copyright(c) Microsoft Corporation.All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; +using System.Collections.Generic; using System.Text.RegularExpressions; -namespace vstest.console.UnitTests.Internal +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.Extensions.FileSystemGlobbing.Abstractions; +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; + +namespace vstest.console.UnitTests.Internal; + +[TestClass] +public class FilePatternParserTests { - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.Extensions.FileSystemGlobbing.Abstractions; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System.Collections.Generic; - using vstest.console.Internal; - - [TestClass] - public class FilePatternParserTests + private readonly FilePatternParser _filePatternParser; + private readonly Mock _mockMatcherHelper; + private readonly Mock _mockFileHelper; + + public FilePatternParserTests() + { + _mockMatcherHelper = new Mock(); + _mockFileHelper = new Mock(); + _filePatternParser = new FilePatternParser(_mockMatcherHelper.Object, _mockFileHelper.Object); + } + + [TestMethod] + public void FilePatternParserShouldCorrectlySplitPatternAndDirectory() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + _filePatternParser.GetMatchingFiles(TranslatePath(@"C:\Users\vanidhi\Desktop\a\c\*bc.dll")); + + // Assert + _mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"*bc.dll"))); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"C:\Users\vanidhi\Desktop\a\c"))))); + } + + [TestMethod] + public void FilePatternParserShouldCorrectlySplitWithArbitraryDirectoryDepth() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + _filePatternParser.GetMatchingFiles(TranslatePath(@"C:\Users\vanidhi\**\c\*bc.txt")); + + // Assert + _mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"**\c\*bc.txt"))); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"C:\Users\vanidhi"))))); + } + + [TestMethod] + public void FilePatternParserShouldCorrectlySplitWithWildCardInMultipleDirectory() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + _filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\**.Tests\**\*.Tests.dll")); + + // Assert + _mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"**.Tests\**\*.Tests.dll"))); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"E:\path\to\project\tests"))))); + } + + [TestMethod] + public void FilePatternParserShouldCorrectlySplitWithMultipleWildCardInPattern() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + _filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\Tests*.Blame*.dll")); + + // Assert + _mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"Tests*.Blame*.dll"))); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"E:\path\to\project\tests"))))); + } + + [TestMethod] + public void FilePatternParserShouldCorrectlySplitWithMultipleWildCardInMultipleDirectory() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + _filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\*tests\Tests*.Blame*.dll")); + + // Assert + _mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"*tests\Tests*.Blame*.dll"))); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"E:\path\to\project"))))); + } + + [TestMethod] + public void FilePatternParserShouldCheckIfFileExistsIfFullPathGiven() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockFileHelper.Setup(x => x.Exists(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))).Returns(true); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + var matchingFiles = _filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll")); + + // Assert + _mockFileHelper.Verify(x => x.Exists(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))); + Assert.IsTrue(matchingFiles.Contains(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))); + } + + [TestMethod] + public void FilePatternParserShouldThrowCommandLineExceptionIfFileDoesNotExist() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockFileHelper.Setup(x => x.Exists(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))).Returns(false); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + + Assert.ThrowsException(() => _filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))); + } + + [TestMethod] + // only on windows because we don't translate the path to be valid linux / mac path + [OSCondition(OperatingSystems.Windows)] + public void FilePatternParserShouldCorrectlySplitPatternAndDirectoryWithForwardSlashes() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + + // Test with forward slashes - this should work on all platforms + // This specifically tests the fix for issue #14993 + _filePatternParser.GetMatchingFiles("C:/Users/someUser/Desktop/a/c/*bc.dll"); + + // Assert that the pattern is parsed correctly + _mockMatcherHelper.Verify(x => x.AddInclude("*bc.dll")); + // On Windows, the path may be normalized, so we verify the key components are present + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => + y.FullName.Contains("someUser") && y.FullName.Contains("Desktop") && + y.FullName.Contains("a") && y.FullName.EndsWith("c")))); + } + + [TestMethod] + // only on windows because we don't translate the path to be valid linux / mac path + [OSCondition(OperatingSystems.Windows)] + public void FilePatternParserShouldCorrectlySplitWithArbitraryDirectoryDepthWithForwardSlashes() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + + // Test with forward slashes and recursive patterns + _filePatternParser.GetMatchingFiles("C:/Users/someUser/**/c/*bc.txt"); + + // Assert + _mockMatcherHelper.Verify(x => x.AddInclude("**/c/*bc.txt")); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => + y.FullName.Contains("someUser")))); + } + + [TestMethod] + // only on windows because we don't translate the path to be valid linux / mac path + [OSCondition(OperatingSystems.Windows)] + public void FilePatternParserShouldHandleForwardSlashesWithoutThrowingException() + { + var patternMatchingResult = new PatternMatchingResult(new List()); + _mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); + + // This is the specific case from the original bug report that was throwing ArgumentOutOfRangeException + // Before the fix: System.ArgumentOutOfRangeException: length ('-1') must be a non-negative value + _filePatternParser.GetMatchingFiles("C:/path/to/my/tests/*_Tests.dll"); + + // Assert that we successfully parse without throwing and get the expected pattern + _mockMatcherHelper.Verify(x => x.AddInclude("*_Tests.dll")); + _mockMatcherHelper.Verify(x => x.Execute(It.Is(y => + y.FullName.Contains("path") && y.FullName.Contains("tests")))); + } + + private static string TranslatePath(string path) { - private FilePatternParser filePatternParser; - private Mock mockMatcherHelper; - private Mock mockFileHelper; - - [TestInitialize] - public void TestInit() - { - this.mockMatcherHelper = new Mock(); - this.mockFileHelper = new Mock(); - this.filePatternParser = new FilePatternParser(this.mockMatcherHelper.Object, this.mockFileHelper.Object); - } - - [TestMethod] - public void FilePatternParserShouldCorrectlySplitPatternAndDirectory() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - this.filePatternParser.GetMatchingFiles(TranslatePath(@"C:\Users\vanidhi\Desktop\a\c\*bc.dll")); - - // Assert - this.mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"*bc.dll"))); - this.mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"C:\Users\vanidhi\Desktop\a\c"))))); - } - - [TestMethod] - public void FilePatternParserShouldCorrectlySplitWithArbitraryDirectoryDepth() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - this.filePatternParser.GetMatchingFiles(TranslatePath(@"C:\Users\vanidhi\**\c\*bc.txt")); - - // Assert - this.mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"**\c\*bc.txt"))); - this.mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"C:\Users\vanidhi"))))); - } - - [TestMethod] - public void FilePatternParserShouldCorrectlySplitWithWildCardInMultipleDirectory() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - this.filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\**.Tests\**\*.Tests.dll")); - - // Assert - this.mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"**.Tests\**\*.Tests.dll"))); - this.mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"E:\path\to\project\tests"))))); - } - - [TestMethod] - public void FilePatternParserShouldCorrectlySplitWithMultpleWildCardInPattern() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - this.filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\Tests*.Blame*.dll")); - - // Assert - this.mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"Tests*.Blame*.dll"))); - this.mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"E:\path\to\project\tests"))))); - } - - [TestMethod] - public void FilePatternParserShouldCorrectlySplitWithMultpleWildCardInMultipleDirectory() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - this.filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\*tests\Tests*.Blame*.dll")); - - // Assert - this.mockMatcherHelper.Verify(x => x.AddInclude(TranslatePath(@"*tests\Tests*.Blame*.dll"))); - this.mockMatcherHelper.Verify(x => x.Execute(It.Is(y => y.FullName.Equals(TranslatePath(@"E:\path\to\project"))))); - } - - [TestMethod] - public void FilePatternParserShouldCheckIfFileExistsIfFullPathGiven() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockFileHelper.Setup(x => x.Exists(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))).Returns(true); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - var matchingFiles = this.filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll")); - - // Assert - this.mockFileHelper.Verify(x => x.Exists(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))); - Assert.IsTrue(matchingFiles.Contains(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))); - } - - [TestMethod] - public void FilePatternParserShouldThrowCommandLineExceptionIfFileDoesNotExist() - { - var patternMatchingResult = new PatternMatchingResult(new List()); - this.mockFileHelper.Setup(x => x.Exists(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))).Returns(false); - this.mockMatcherHelper.Setup(x => x.Execute(It.IsAny())).Returns(patternMatchingResult); - - Assert.ThrowsException(() => this.filePatternParser.GetMatchingFiles(TranslatePath(@"E:\path\to\project\tests\Blame.Tests\\abc.Tests.dll"))); - } - - private string TranslatePath(string path) - { - // RuntimeInformation has conflict when used - if (Environment.OSVersion.Platform.ToString().StartsWith("Win")) - return path; - - return Regex.Replace(path.Replace("\\", "/"), @"(\w)\:/", @"/mnt/$1/"); - } + // RuntimeInformation has conflict when used + return Environment.OSVersion.Platform.ToString().StartsWith("Win") + ? path + : Regex.Replace(path.Replace("\\", "/"), @"(\w)\:/", @"/mnt/$1/"); } } diff --git a/test/vstest.console.UnitTests/Internal/ProgressIndicatorTests.cs b/test/vstest.console.UnitTests/Internal/ProgressIndicatorTests.cs index 9097d0ee5c..e4dc72df7e 100644 --- a/test/vstest.console.UnitTests/Internal/ProgressIndicatorTests.cs +++ b/test/vstest.console.UnitTests/Internal/ProgressIndicatorTests.cs @@ -1,97 +1,96 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Internal +using Microsoft.VisualStudio.TestPlatform.CommandLine.Internal; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Internal; + +[TestClass] +public class ProgressIndicatorTests { - using Microsoft.VisualStudio.TestPlatform.CommandLine.Internal; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; + private readonly ProgressIndicator _indicator; + private readonly Mock _consoleOutput; + private readonly Mock _consoleHelper; + + public ProgressIndicatorTests() + { + _consoleOutput = new Mock(); + _consoleHelper = new Mock(); + _consoleHelper.Setup(c => c.WindowWidth).Returns(100); + _consoleHelper.Setup(c => c.CursorTop).Returns(20); + _indicator = new ProgressIndicator(_consoleOutput.Object, _consoleHelper.Object); + } + + [TestCleanup] + public void TestCleanup() + { + _indicator.Stop(); + } - [TestClass] - public class ProgressIndicatorTests + [TestMethod] + public void StartShouldStartPrintingProgressMessage() { - ProgressIndicator indicator; - Mock consoleOutput; - Mock consoleHelper; - - [TestInitialize] - public void TestInit() - { - consoleOutput = new Mock(); - consoleHelper = new Mock(); - consoleHelper.Setup(c => c.WindowWidth).Returns(100); - consoleHelper.Setup(c => c.CursorTop).Returns(20); - indicator = new ProgressIndicator(consoleOutput.Object, consoleHelper.Object); - } - - [TestCleanup] - public void TestCleanup() - { - indicator.Stop(); - } - - [TestMethod] - public void StartShouldStartPrintingProgressMessage() - { - indicator.Start(); - consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); - Assert.IsTrue(indicator.IsRunning); - } - - [TestMethod] - public void StartShouldShowProgressMessage() - { - indicator.Start(); - - consoleHelper.Setup(c => c.CursorLeft).Returns(30); - System.Threading.Thread.Sleep(1500); - - Assert.IsTrue(indicator.IsRunning); - consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); - consoleOutput.Verify(m => m.Write(".", OutputLevel.Information), Times.Once); - } - - [TestMethod] - public void PauseShouldClearTheStdOutMessage() - { - indicator.Start(); - indicator.Pause(); - - Assert.IsFalse(indicator.IsRunning); - string clearMessage = new string(' ', consoleHelper.Object.WindowWidth); - consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); - consoleOutput.Verify(m => m.Write(clearMessage, OutputLevel.Information), Times.Once); - - consoleHelper.Verify(ch => ch.SetCursorPosition(0, 20), Times.Exactly(2)); - } - - [TestMethod] - public void PauseStartAndStopShouldClearPrintProgressAndThenClearTheStdOutMessage() - { - indicator.Start(); - indicator.Pause(); - indicator.Start(); - indicator.Stop(); - - Assert.IsFalse(indicator.IsRunning); - string clearMessage = new string(' ', consoleHelper.Object.WindowWidth); - consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Exactly(2)); - consoleOutput.Verify(m => m.Write(clearMessage, OutputLevel.Information), Times.Exactly(2)); - consoleHelper.Verify(ch => ch.SetCursorPosition(0, 20), Times.Exactly(4)); - } - - [TestMethod] - public void StopShouldClearTheStdOutMessage() - { - indicator.Start(); - indicator.Stop(); - - Assert.IsFalse(indicator.IsRunning); - string clearMessage = new string(' ', consoleHelper.Object.WindowWidth); - consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); - consoleOutput.Verify(m => m.Write(clearMessage, OutputLevel.Information), Times.Once); - consoleHelper.Verify(ch => ch.SetCursorPosition(0, 20), Times.Exactly(2)); - } + _indicator.Start(); + _consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); + Assert.IsTrue(_indicator.IsRunning); + } + + [TestMethod] + public void StartShouldShowProgressMessage() + { + _indicator.Start(); + + _consoleHelper.Setup(c => c.CursorLeft).Returns(30); + System.Threading.Thread.Sleep(1500); + + Assert.IsTrue(_indicator.IsRunning); + _consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); + _consoleOutput.Verify(m => m.Write(".", OutputLevel.Information), Times.Once); + } + + [TestMethod] + public void PauseShouldClearTheStdOutMessage() + { + _indicator.Start(); + _indicator.Pause(); + + Assert.IsFalse(_indicator.IsRunning); + string clearMessage = new(' ', _consoleHelper.Object.WindowWidth); + _consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); + _consoleOutput.Verify(m => m.Write(clearMessage, OutputLevel.Information), Times.Once); + + _consoleHelper.Verify(ch => ch.SetCursorPosition(0, 20), Times.Exactly(2)); + } + + [TestMethod] + public void PauseStartAndStopShouldClearPrintProgressAndThenClearTheStdOutMessage() + { + _indicator.Start(); + _indicator.Pause(); + _indicator.Start(); + _indicator.Stop(); + + Assert.IsFalse(_indicator.IsRunning); + string clearMessage = new(' ', _consoleHelper.Object.WindowWidth); + _consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Exactly(2)); + _consoleOutput.Verify(m => m.Write(clearMessage, OutputLevel.Information), Times.Exactly(2)); + _consoleHelper.Verify(ch => ch.SetCursorPosition(0, 20), Times.Exactly(4)); + } + + [TestMethod] + public void StopShouldClearTheStdOutMessage() + { + _indicator.Start(); + _indicator.Stop(); + + Assert.IsFalse(_indicator.IsRunning); + string clearMessage = new(' ', _consoleHelper.Object.WindowWidth); + _consoleOutput.Verify(m => m.Write("Test run in progress.", OutputLevel.Information), Times.Once); + _consoleOutput.Verify(m => m.Write(clearMessage, OutputLevel.Information), Times.Once); + _consoleHelper.Verify(ch => ch.SetCursorPosition(0, 20), Times.Exactly(2)); } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/MainTests.cs b/test/vstest.console.UnitTests/MainTests.cs new file mode 100644 index 0000000000..50a5b9baf6 --- /dev/null +++ b/test/vstest.console.UnitTests/MainTests.cs @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; + +[TestClass] +public class MainTests +{ + [TestMethod] + public void RunWhenCliUiLanguageIsSetChangesCultureAndFlowsOverride() + { + // Arrange + var culture = new CultureInfo("fr-fr"); + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE")).Returns(culture.Name); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + TestPlatform.CommandLine.Program.Run(null, new(envVarMock.Object, lang => threadCultureWasSet = lang.Equals(culture))); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("VSLANG", culture.LCID.ToString(CultureInfo.InvariantCulture)), Times.Once); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void RunWhenVsLangIsSetChangesCultureAndFlowsOverride() + { + // Arrange + var culture = new CultureInfo("fr-fr"); + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable("VSLANG")).Returns(culture.LCID.ToString(CultureInfo.InvariantCulture)); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + TestPlatform.CommandLine.Program.Run(null, new(envVarMock.Object, lang => threadCultureWasSet = lang.Equals(culture))); + + // Assert + Assert.IsTrue(threadCultureWasSet, "DefaultThreadCurrentUICulture was not set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Exactly(2)); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Exactly(2)); + envVarMock.Verify(x => x.SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", culture.Name), Times.Once); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", culture.Name), Times.Once); + } + + [TestMethod] + public void RunWhenNoCultureEnvVarSetDoesNotChangeCultureNorFlowsOverride() + { + // Arrange + var envVarMock = new Mock(); + envVarMock.Setup(x => x.GetEnvironmentVariable(It.IsAny())).Returns(default(string)); + + bool threadCultureWasSet = false; + + // Act - We have an exception because we are not passing the right args but that's ok for our test + TestPlatform.CommandLine.Program.Run(null, new(envVarMock.Object, lang => threadCultureWasSet = true)); + + // Assert + Assert.IsFalse(threadCultureWasSet, "DefaultThreadCurrentUICulture was set"); + envVarMock.Verify(x => x.GetEnvironmentVariable("VSLANG"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("VSLANG", It.IsAny()), Times.Never); + envVarMock.Verify(x => x.GetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE"), Times.Once); + envVarMock.Verify(x => x.SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", It.IsAny()), Times.Never); + envVarMock.Verify(x => x.GetEnvironmentVariable("PreferredUILang"), Times.Never); + envVarMock.Verify(x => x.SetEnvironmentVariable("PreferredUILang", It.IsAny()), Times.Never); + } +} diff --git a/test/vstest.console.UnitTests/Processors/AeDebuggerArgumentProcessorTest.cs b/test/vstest.console.UnitTests/Processors/AeDebuggerArgumentProcessorTest.cs new file mode 100644 index 0000000000..bca0bd8f0f --- /dev/null +++ b/test/vstest.console.UnitTests/Processors/AeDebuggerArgumentProcessorTest.cs @@ -0,0 +1,147 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace vstest.console.UnitTests.Processors; + +[TestClass] +[TestCategory("Windows-Review")] +public class AeDebuggerArgumentProcessorTest +{ + private readonly Mock _environment = new(); + private readonly Mock _fileHelper = new(); + private readonly Mock _processHelper = new(); + private readonly Mock _output = new(); + private readonly Mock _environmentVariableHelper = new(); + private readonly AeDebuggerArgumentExecutor _executor; + + public AeDebuggerArgumentProcessorTest() + { + _executor = new AeDebuggerArgumentExecutor(_environment.Object, _fileHelper.Object, _processHelper.Object, _output.Object, _environmentVariableHelper.Object); + } + + [TestMethod] + public void AeDebuggerArgumentProcessorCommandName() + { + Assert.AreEqual("/AeDebugger", AeDebuggerArgumentProcessor.CommandName); + } + + [TestMethod] + public void AeDebuggerArgumentProcessorCapabilities() + { + AeDebuggerArgumentProcessorCapabilities aeDebuggerArgumentProcessor = new(); + Assert.IsNull(aeDebuggerArgumentProcessor.HelpContentResourceName); + Assert.IsTrue(aeDebuggerArgumentProcessor.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, aeDebuggerArgumentProcessor.Priority); + } + + [TestMethod] + public void AeDebuggerArgumentProcessorReturnsCorrectTypes() + { + AeDebuggerArgumentProcessor aeDebuggerArgumentProcessor = new(); + Assert.IsInstanceOfType(aeDebuggerArgumentProcessor.Executor!.Value, typeof(AeDebuggerArgumentExecutor)); + Assert.IsInstanceOfType(aeDebuggerArgumentProcessor.Metadata!.Value, typeof(AeDebuggerArgumentProcessorCapabilities)); + } + + [TestMethod] + public void AeDebuggerArgumentExecutor_InvalidCtor() + { + Assert.ThrowsException(() => new AeDebuggerArgumentExecutor(_environment.Object, _fileHelper.Object, _processHelper.Object, _output.Object, null!)); + Assert.ThrowsException(() => new AeDebuggerArgumentExecutor(_environment.Object, _fileHelper.Object, _processHelper.Object, null!, _environmentVariableHelper.Object)); + Assert.ThrowsException(() => new AeDebuggerArgumentExecutor(_environment.Object, _fileHelper.Object, null!, _output.Object, _environmentVariableHelper.Object)); + Assert.ThrowsException(() => new AeDebuggerArgumentExecutor(_environment.Object, null!, _processHelper.Object, _output.Object, _environmentVariableHelper.Object)); + Assert.ThrowsException(() => new AeDebuggerArgumentExecutor(null!, _fileHelper.Object, _processHelper.Object, _output.Object, _environmentVariableHelper.Object)); + } + + [TestMethod] + public void AeDebuggerArgumentExecutor_NullArgument() + { + _executor.Initialize(null); + Assert.AreEqual(ArgumentProcessorResult.Fail, _executor.Execute()); + _output.Verify(x => x.WriteLine(It.IsAny(), OutputLevel.Error), Times.Once()); + } + + [TestMethod] + [DataRow("Instal;ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath;DumpDirectoryPath=c:\\DumpDirectoryPath")] + [DataRow("Uninstal;ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath;DumpDirectoryPath=c:\\DumpDirectoryPath")] + public void AeDebuggerArgumentExecutor_WrongInstallUnistallCommand(string wrongCommand) + { + _executor.Initialize(wrongCommand); + Assert.ThrowsException(() => _executor.Execute()); + } + + [TestMethod] + public void AeDebuggerArgumentExecutor_NonWindowsOS() + { + _environment.Setup(x => x.OperatingSystem).Returns(PlatformOperatingSystem.Unix); + _executor.Initialize("Install;ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath;DumpDirectoryPath=c:\\DumpDirectoryPath"); + Assert.AreEqual(ArgumentProcessorResult.Fail, _executor.Execute()); + } + + [TestMethod] + [DataRow("Install;{0};DumpDirectoryPath=c:\\DumpDirectoryPath", null)] + [DataRow("Install;{0};DumpDirectoryPath=c:\\DumpDirectoryPath", "ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPat")] + [DataRow("Install;{0};ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath", null)] + [DataRow("Install;{0};ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath", "DumpDirectoryPath=c:\\DumpDirectoryPat")] + + public void AeDebuggerArgumentExecutor_WrongDirectoryPaths(string command, string? directoryPath) + { + _fileHelper.Setup(x => x.DirectoryExists(It.IsAny())) + .Returns((string path) => directoryPath is null || !directoryPath.EndsWith(path)); + _fileHelper.Setup(x => x.Exists(It.IsAny())) + .Returns((string path) => path.EndsWith("procdump.exe") && path != "procdump.exe"); + _executor.Initialize(string.Format(CultureInfo.InvariantCulture, command, directoryPath)); + Assert.AreEqual(ArgumentProcessorResult.Fail, _executor.Execute()); + } + + [TestMethod] + [DataRow("Install;DumpDirectoryPath=c:\\DumpDirectoryPath", "PROCDUMP_PATH", "c:\\procDump")] + [DataRow("Install;DumpDirectoryPath=c:\\DumpDirectoryPath", "PATH", "c:\\procDump;")] + + public void AeDebuggerArgumentExecutor_ShouldUseEnvironmentVariables(string command, string environmentVariablesKey, string environmentVariableValue) + { + _environmentVariableHelper.Setup(x => x.GetEnvironmentVariable(environmentVariablesKey)).Returns(environmentVariableValue); + _fileHelper.Setup(x => x.DirectoryExists("c:\\procDump")).Returns(true); + _fileHelper.Setup(x => x.DirectoryExists("c:\\DumpDirectoryPath")).Returns(true); + _fileHelper.Setup(x => x.Exists(It.IsAny())).Returns((string fileName) => fileName == "c:\\procDump\\procdump.exe"); + _executor.Initialize(command); + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); + } + + [TestMethod] + [DataRow("Install;ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath;DumpDirectoryPath=c:\\DumpDirectoryPath", true)] + [DataRow("Uninstall;ProcDumpToolDirectoryPath=c:\\ProcDumpToolDirectoryPath;DumpDirectoryPath=c:\\DumpDirectoryPath", false)] + public void AeDebuggerArgumentExecutor_ProcdumpArgument(string command, bool install) + { + _fileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + _fileHelper.Setup(x => x.Exists(It.IsAny())).Returns(true); + _processHelper.Setup(x => x.LaunchProcess( + It.IsAny(), + It.IsAny(), + It.IsAny(), + null, + It.IsAny>(), + It.IsAny>(), + It.IsAny>())) + .Returns((string processPath, string? arguments, string? workingDirectory, IDictionary? envVariables, Action? errorCallback, Action? exitCallBack, Action? outputCallBack) => + { + Assert.IsTrue(install ? arguments == "-ma -i" : arguments == "-u"); + return new object(); + }); + _executor.Initialize(command); + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); + } +} diff --git a/test/vstest.console.UnitTests/Processors/ArtifactProcessingCollectModeProcessorTest.cs b/test/vstest.console.UnitTests/Processors/ArtifactProcessingCollectModeProcessorTest.cs new file mode 100644 index 0000000000..0c730b207d --- /dev/null +++ b/test/vstest.console.UnitTests/Processors/ArtifactProcessingCollectModeProcessorTest.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class ArtifactProcessingCollectModeProcessorTest +{ + [TestMethod] + public void ProcessorExecutorInitialize_ShouldFailIfNullCommandOption() => + Assert.ThrowsException(() => new ArtifactProcessingCollectModeProcessorExecutor(null!)); + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldNotFailIfNullArg() + { + ArtifactProcessingCollectModeProcessorExecutor artifactProcessingCollectModeProcessorExecutor = new(new CommandLineOptions()); + artifactProcessingCollectModeProcessorExecutor.Initialize(null); + } + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldSetCommandOption() + { + var commandOptions = new CommandLineOptions(); + ArtifactProcessingCollectModeProcessorExecutor artifactProcessingCollectModeProcessorExecutor = new(commandOptions); + artifactProcessingCollectModeProcessorExecutor.Initialize(null); + Assert.AreEqual(ArtifactProcessingMode.Collect, commandOptions.ArtifactProcessingMode); + } + + [TestMethod] + public void ProcessorCapabilities() + { + ArtifactProcessingCollectModeProcessorCapabilities processorCapabilities = new(); + Assert.IsNull(processorCapabilities.HelpContentResourceName); + Assert.AreEqual(ArgumentProcessorPriority.CliRunSettings, processorCapabilities.Priority); + Assert.AreEqual(HelpContentPriority.None, processorCapabilities.HelpPriority); + Assert.AreEqual("/ArtifactsProcessingMode-Collect", processorCapabilities.CommandName); + } +} diff --git a/test/vstest.console.UnitTests/Processors/ArtifactProcessingPostProcessModeProcessorTest.cs b/test/vstest.console.UnitTests/Processors/ArtifactProcessingPostProcessModeProcessorTest.cs new file mode 100644 index 0000000000..78fea1b91f --- /dev/null +++ b/test/vstest.console.UnitTests/Processors/ArtifactProcessingPostProcessModeProcessorTest.cs @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class ArtifactProcessingPostProcessModeProcessorTest +{ + private readonly Mock _artifactProcessingManagerMock = new(); + private readonly Mock _featureFlagMock = new(); + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldFailIfNullCtor() + { + Assert.ThrowsException(() => new ArtifactProcessingPostProcessModeProcessorExecutor(null!, _artifactProcessingManagerMock.Object)); + Assert.ThrowsException(() => new ArtifactProcessingPostProcessModeProcessorExecutor(new CommandLineOptions(), null!)); + } + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldNotFailIfNullArg() + { + ArtifactProcessingPostProcessModeProcessorExecutor artifactProcessingPostProcessModeProcessorExecutor = new(new CommandLineOptions(), _artifactProcessingManagerMock.Object); + artifactProcessingPostProcessModeProcessorExecutor.Initialize(null); + } + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldSetCommandOption() + { + var commandOptions = new CommandLineOptions(); + ArtifactProcessingPostProcessModeProcessorExecutor artifactProcessingPostProcessModeProcessorExecutor = new(commandOptions, _artifactProcessingManagerMock.Object); + artifactProcessingPostProcessModeProcessorExecutor.Initialize(null); + Assert.AreEqual(ArtifactProcessingMode.PostProcess, commandOptions.ArtifactProcessingMode); + } + + [TestMethod] + public void ProcessorCapabilities() + { + ArtifactProcessingPostProcessModeProcessorCapabilities processorCapabilities = new(); + Assert.IsNull(processorCapabilities.HelpContentResourceName); + Assert.AreEqual(ArgumentProcessorPriority.Normal, processorCapabilities.Priority); + Assert.AreEqual(HelpContentPriority.None, processorCapabilities.HelpPriority); + Assert.AreEqual("/ArtifactsProcessingMode-PostProcess", processorCapabilities.CommandName); + } + + [TestMethod] + public void ProcessorExecutorInitialize_ExceptionShouldNotBubbleUp() + { + _artifactProcessingManagerMock.Setup(x => x.PostProcessArtifactsAsync()).Callback(() => throw new Exception()); + ArtifactProcessingPostProcessModeProcessorExecutor artifactProcessingPostProcessModeProcessorExecutor = new(new CommandLineOptions(), _artifactProcessingManagerMock.Object); + artifactProcessingPostProcessModeProcessorExecutor.Initialize(null); + Assert.AreEqual(ArgumentProcessorResult.Fail, artifactProcessingPostProcessModeProcessorExecutor.Execute()); + } + + [TestMethod] + public void ArtifactProcessingPostProcessMode_ContainsPostProcessCommand() + { + _featureFlagMock.Setup(x => x.IsSet(It.IsAny())).Returns(false); + Assert.IsTrue(ArtifactProcessingPostProcessModeProcessor.ContainsPostProcessCommand(["--artifactsProcessingMode-postprocess"], _featureFlagMock.Object)); + Assert.IsTrue(ArtifactProcessingPostProcessModeProcessor.ContainsPostProcessCommand(["--ARTIfactsProcessingMode-postprocess"], _featureFlagMock.Object)); + Assert.IsFalse(ArtifactProcessingPostProcessModeProcessor.ContainsPostProcessCommand(["-ARTIfactsProcessingMode-postprocess"], _featureFlagMock.Object)); + Assert.IsFalse(ArtifactProcessingPostProcessModeProcessor.ContainsPostProcessCommand(["--ARTIfactsProcessingMode-postproces"], _featureFlagMock.Object)); + Assert.IsFalse(ArtifactProcessingPostProcessModeProcessor.ContainsPostProcessCommand(null, _featureFlagMock.Object)); + } +} diff --git a/test/vstest.console.UnitTests/Processors/CLIRunSettingsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/CLIRunSettingsArgumentProcessorTests.cs index d12f1d3b86..3a40e52bfb 100644 --- a/test/vstest.console.UnitTests/Processors/CLIRunSettingsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/CLIRunSettingsArgumentProcessorTests.cs @@ -1,479 +1,484 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Processors +using System; +using System.Collections.Generic; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; + +namespace vstest.console.UnitTests.Processors; + +[TestClass] +public class CliRunSettingsArgumentProcessorTests { - using System; - using System.Collections.Generic; - - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; - - [TestClass] - public class CLIRunSettingsArgumentProcessorTests - { - private TestableRunSettingsProvider settingsProvider; - private CLIRunSettingsArgumentExecutor executor; - private CommandLineOptions commandLineOptions; - private readonly string DefaultRunSettings = string.Join(Environment.NewLine, + private readonly TestableRunSettingsProvider _settingsProvider; + private readonly CliRunSettingsArgumentExecutor _executor; + private readonly CommandLineOptions _commandLineOptions; + private readonly string _defaultRunSettings = string.Join(Environment.NewLine, "", -"", -" ", -" ", -" ", -""); + "", + " ", + " ", + " ", + ""); - private readonly string RunSettingsWithDeploymentDisabled = string.Join(Environment.NewLine, - "", + private readonly string _runSettingsWithDeploymentDisabled = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " False", + " ", + ""); + + private readonly string _runSettingsWithDeploymentEnabled = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " True", + " ", + ""); + + public CliRunSettingsArgumentProcessorTests() + { + _commandLineOptions = CommandLineOptions.Instance; + _settingsProvider = new TestableRunSettingsProvider(); + _executor = new CliRunSettingsArgumentExecutor(_settingsProvider, _commandLineOptions); + } + + [TestCleanup] + public void Cleanup() + { + CommandLineOptions.Reset(); + } + + [TestMethod] + public void GetMetadataShouldReturnRunSettingsArgumentProcessorCapabilities() + { + var processor = new CliRunSettingsArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is CliRunSettingsArgumentProcessorCapabilities); + } + + [TestMethod] + public void GetExecuterShouldReturnRunSettingsArgumentProcessorCapabilities() + { + var processor = new CliRunSettingsArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is CliRunSettingsArgumentExecutor); + } + + #region CLIRunSettingsArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new CliRunSettingsArgumentProcessorCapabilities(); + + Assert.AreEqual("--", capabilities.CommandName); + var expected = "RunSettings arguments:\r\n Arguments to pass runsettings configurations through commandline. Arguments may be specified as name-value pair of the form [name]=[value] after \"-- \". Note the space after --. \r\n Use a space to separate multiple [name]=[value].\r\n More info on RunSettings arguments support: https://aka.ms/vstest-runsettings-arguments"; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.CliRunSettingsArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.CliRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + #region CLIRunSettingsArgumentExecutor tests + + [TestMethod] + public void InitializeShouldNotThrowExceptionIfArgumentIsNull() + { + _executor.Initialize((string[]?)null); + + Assert.IsNull(_settingsProvider.ActiveRunSettings); + } + + [TestMethod] + public void InitializeShouldNotThrowExceptionIfArgumentIsEmpty() + { + _executor.Initialize([]); + + Assert.IsNull(_settingsProvider.ActiveRunSettings); + } + + [TestMethod] + public void InitializeShouldCreateEmptyRunSettingsIfArgumentsHasOnlyWhiteSpace() + { + _executor.Initialize([" "]); + + Assert.IsNull(_settingsProvider.ActiveRunSettings); + } + + [TestMethod] + public void InitializeShouldSetValueInRunSettings() + { + var args = new string[] { "MSTest.DeploymentEnabled=False" }; + + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(_runSettingsWithDeploymentDisabled, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + [TestMethod] + public void InitializeShouldIgnoreKeyIfValueIsNotPassed() + { + var args = new string[] { "MSTest.DeploymentEnabled=False", "MSTest1" }; + + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(_runSettingsWithDeploymentDisabled, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + [DataRow("Testameter.Parameter(name=\"asf\",value=\"rgq\")")] + [DataRow("TestRunParameter.Parameter(name=\"asf\",value=\"rgq\")")] + [TestMethod] + public void InitializeShouldThrowErrorIfArgumentIsInValid(string arg) + { + var args = new string[] { arg }; + var str = CommandLineResources.MalformedRunSettingsKey; + + CommandLineException ex = Assert.ThrowsException(() => _executor.Initialize(args)); + + Assert.AreEqual(str, ex.Message); + } + + [TestMethod] + public void InitializeShouldIgnoreWhiteSpaceInBeginningOrEndOfKey() + { + var args = new string[] { " MSTest.DeploymentEnabled =False" }; + + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(_runSettingsWithDeploymentDisabled, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + [TestMethod] + public void InitializeShouldIgnoreThrowExceptionIfKeyHasWhiteSpace() + { + var args = new string[] { "MST est.DeploymentEnabled=False" }; + + Action action = () => _executor.Initialize(args); + + ExceptionUtilities.ThrowsException( + action, + "One or more runsettings provided contain invalid token"); + } + + [TestMethod] + public void InitializeShouldEncodeXmlIfInvalidXmlCharsArePresent() + { + var args = new string[] { "MSTest.DeploymentEnabled=F>a>", "", " ", " ", " ", " ", - " False", + " F>a><l<se", " ", - ""); + ""), _settingsProvider.ActiveRunSettings.SettingsXml); + } - private readonly string RunSettingsWithDeploymentEnabled = string.Join(Environment.NewLine, - "", + [TestMethod] + public void InitializeShouldIgnoreIfKeyIsNotPassed() + { + var args = new string[] { "MSTest.DeploymentEnabled=False", "=value" }; + + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(_runSettingsWithDeploymentDisabled, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + [TestMethod] + public void InitializeShouldIgnoreIfEmptyValueIsPassed() + { + + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runSettings); + + var args = new string[] { "MSTest.DeploymentEnabled=" }; + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(_defaultRunSettings, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + [TestMethod] + public void InitializeShouldOverwriteValueIfNodeAlreadyExists() + { + + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runSettings); + + var args = new string[] { "MSTest.DeploymentEnabled=True" }; + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(_runSettingsWithDeploymentEnabled, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + + [TestMethod] + public void InitializeShouldOverwriteValueIfWhitSpaceIsPassedAndNodeAlreadyExists() + { + + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runSettings); + + var args = new string[] { "MSTest.DeploymentEnabled= " }; + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", " ", " ", " ", - " True", + " ", + " ", " ", - ""); - - [TestInitialize] - public void Init() - { - this.commandLineOptions = CommandLineOptions.Instance; - this.settingsProvider = new TestableRunSettingsProvider(); - this.executor = new CLIRunSettingsArgumentExecutor(this.settingsProvider, this.commandLineOptions); - } - - [TestCleanup] - public void Cleanup() - { - this.commandLineOptions.Reset(); - } - - [TestMethod] - public void GetMetadataShouldReturnRunSettingsArgumentProcessorCapabilities() - { - var processor = new CLIRunSettingsArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is CLIRunSettingsArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnRunSettingsArgumentProcessorCapabilities() - { - var processor = new CLIRunSettingsArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is CLIRunSettingsArgumentExecutor); - } - - #region CLIRunSettingsArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new CLIRunSettingsArgumentProcessorCapabilities(); - - Assert.AreEqual("--", capabilities.CommandName); - var expected = "RunSettings arguments:\r\n Arguments to pass runsettings configurations through commandline. Arguments may be specified as name-value pair of the form [name]=[value] after \"-- \". Note the space after --. \r\n Use a space to separate multiple [name]=[value].\r\n More info on RunSettings arguments support: https://aka.ms/vstest-runsettings-arguments"; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.CLIRunSettingsArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.CLIRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - #region CLIRunSettingsArgumentExecutor tests - - [TestMethod] - public void InitializeShouldNotThrowExceptionIfArgumentIsNull() - { - this.executor.Initialize((string[])null); - - Assert.IsNull(this.settingsProvider.ActiveRunSettings); - } - - [TestMethod] - public void InitializeShouldNotThrowExceptionIfArgumentIsEmpty() - { - this.executor.Initialize(new string[0]); - - Assert.IsNull(this.settingsProvider.ActiveRunSettings); - } - - [TestMethod] - public void InitializeShouldCreateEmptyRunSettingsIfArgumentsHasOnlyWhiteSpace() - { - this.executor.Initialize(new string[] { " " }); - - Assert.IsNull(this.settingsProvider.ActiveRunSettings); - } - - [TestMethod] - public void InitializeShouldSetValueInRunSettings() - { - var args = new string[] { "MSTest.DeploymentEnabled=False" }; - - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(RunSettingsWithDeploymentDisabled, settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldIgnoreKeyIfValueIsNotPassed() - { - var args = new string[] { "MSTest.DeploymentEnabled=False", "MSTest1" }; - - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(RunSettingsWithDeploymentDisabled, settingsProvider.ActiveRunSettings.SettingsXml); - } - - [DataRow("Testameter.Parameter(name=\"asf\",value=\"rgq\")")] - [DataRow("TestRunParameter.Parameter(name=\"asf\",value=\"rgq\")")] - [TestMethod] - public void InitializeShouldThrowErrorIfArgumentIsInValid(string arg) - { - var args = new string[] { arg }; - var str = string.Format(CommandLineResources.MalformedRunSettingsKey); + ""), _settingsProvider.ActiveRunSettings.SettingsXml); + } - CommandLineException ex = Assert.ThrowsException(() => this.executor.Initialize(args)); + [TestMethod] + public void InitializeShouldUpdateCommandLineOptionsFrameworkIfProvided() + { - Assert.AreEqual(str, ex.Message); - } - - [TestMethod] - public void InitializeShouldIgnoreWhiteSpaceInBeginningOrEndOfKey() - { - var args = new string[] { " MSTest.DeploymentEnabled =False" }; - - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(RunSettingsWithDeploymentDisabled, settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldIgnoreThrowExceptionIfKeyHasWhiteSpace() - { - var args = new string[] { "MST est.DeploymentEnabled=False" }; + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runSettings); - Action action = () => this.executor.Initialize(args); - - ExceptionUtilities.ThrowsException( - action, - "One or more runsettings provided contain invalid token"); - } + var args = new string[] { $"RunConfiguration.TargetFrameworkVersion={Constants.DotNetFramework46}" }; + _executor.Initialize(args); - [TestMethod] - public void InitializeShouldEncodeXMLIfInvalidXMLCharsArePresent() - { - var args = new string[] { "MSTest.DeploymentEnabled=F>a>", -"", -" ", -" ", -" ", -" ", -" F>a><l<se", -" ", -""), settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldIgnoreIfKeyIsNotPassed() - { - var args = new string[] { "MSTest.DeploymentEnabled=False", "=value" }; - - this.executor.Initialize(args); + [TestMethod] + public void InitializeShouldUpdateCommandLineOptionsArchitectureIfProvided() + { - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(RunSettingsWithDeploymentDisabled, settingsProvider.ActiveRunSettings.SettingsXml); - } + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runSettings); - [TestMethod] - public void InitializeShouldIgnoreIfEmptyValueIsPassed() - { - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runSettings); + var args = new string[] { $"RunConfiguration.TargetPlatform={nameof(Architecture.ARM)}" }; + _executor.Initialize(args); - var args = new string[] { "MSTest.DeploymentEnabled=" }; - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(DefaultRunSettings, this.settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldOverwriteValueIfNodeAlreadyExists() - { - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(DefaultRunSettings); - settingsProvider.SetActiveRunSettings(runSettings); - - var args = new string[] { "MSTest.DeploymentEnabled=True" }; - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(RunSettingsWithDeploymentEnabled, settingsProvider.ActiveRunSettings.SettingsXml); - } - - - [TestMethod] - public void InitializeShouldOverwriteValueIfWhitSpaceIsPassedAndNodeAlreadyExists() - { - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(DefaultRunSettings); - settingsProvider.SetActiveRunSettings(runSettings); - - var args = new string[] { "MSTest.DeploymentEnabled= " }; - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, "", -"", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -""), settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldUpdateCommandLineOptionsFrameworkIfProvided() - { - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(DefaultRunSettings); - settingsProvider.SetActiveRunSettings(runSettings); - - var args = new string[] { $"RunConfiguration.TargetFrameworkVersion={Constants.DotNetFramework46}" }; - this.executor.Initialize(args); - - Assert.IsTrue(this.commandLineOptions.FrameworkVersionSpecified); - Assert.AreEqual(Constants.DotNetFramework46, this.commandLineOptions.TargetFrameworkVersion.Name); - } - - [TestMethod] - public void InitializeShouldUpdateCommandLineOptionsArchitectureIfProvided() - { - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(DefaultRunSettings); - settingsProvider.SetActiveRunSettings(runSettings); - - var args = new string[] { $"RunConfiguration.TargetPlatform={nameof(Architecture.ARM)}" }; - this.executor.Initialize(args); - - Assert.IsTrue(this.commandLineOptions.ArchitectureSpecified); - Assert.AreEqual(Architecture.ARM, this.commandLineOptions.TargetArchitecture); - } - - [TestMethod] - public void InitializeShouldNotUpdateCommandLineOptionsArchitectureAndFxIfNotProvided() - { - - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(DefaultRunSettings); - settingsProvider.SetActiveRunSettings(runSettings); - - var args = new string[] { }; - this.executor.Initialize(args); - - Assert.IsFalse(this.commandLineOptions.ArchitectureSpecified); - Assert.IsFalse(this.commandLineOptions.FrameworkVersionSpecified); - } - - [DynamicData(nameof(TestRunParameterArgValidTestCases), DynamicDataSourceType.Method)] - [DataTestMethod] - public void InitializeShouldValidateTestRunParameter(string arg, string runSettingsWithTestRunParameters) - { - var args = new string[] { arg }; - - this.executor.Initialize(args); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(runSettingsWithTestRunParameters, settingsProvider.ActiveRunSettings.SettingsXml); - } - - [DynamicData(nameof(TestRunParameterArgInvalidTestCases), DynamicDataSourceType.Method)] - [DataTestMethod] - public void InitializeShouldThrowErrorIfTestRunParameterNodeIsInValid(string arg) - { - var args = new string[] { arg }; - var str = string.Format(CommandLineResources.InvalidTestRunParameterArgument, arg); - - CommandLineException ex = Assert.ThrowsException(() => this.executor.Initialize(args)); - - Assert.AreEqual(str, ex.Message); - } - - public static IEnumerable TestRunParameterArgInvalidTestCases() - { - return invalidTestCases; - } - - private static readonly List invalidTestCases = new List - { - new object[] { "TestRunParameters.Parameter(name=asf,value=rgq)" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value=\"rgq\" )"}, - new object[] { "TestRunParameters.Parameter( name=\"asf\",value=\"rgq\")" }, - new object[] { "TestRunParametersParameter(name=\"asf\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Paramete(name=\"asf\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parametername=\"asf\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(ame=\"asf\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name\"asf\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\" value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",alue=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value=\"rgq\"" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value=\"rgq\")wfds" }, - new object[] { "TestRunParameters.Parameter(name=\"\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value=\"\")" }, - new object[] { "TestRunParameters.Parameter(name=asf\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf,value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value=rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"asf\",value=\"rgq)" }, - new object[] { "TestRunParameters.Parameter(name=\"asf@#!\",value=\"rgq\")" }, - new object[] { "TestRunParameters.Parameter(name=\"\",value=\"fgf\")" }, - new object[] { "TestRunParameters.Parameter(name=\"gag\",value=\"\")" }, - new object[] { "TestRunParameters.Parameter(name=\"gag\")" } - }; + Assert.IsTrue(_commandLineOptions.ArchitectureSpecified); + Assert.AreEqual(Architecture.ARM, _commandLineOptions.TargetArchitecture); + } - public static IEnumerable TestRunParameterArgValidTestCases() - { - return validTestCases; - } - - private static readonly List validTestCases = new List - { - new object[] { "TestRunParameters.Parameter(name=\"weburl\",value=\"&><\")" , - string.Join(Environment.NewLine, "", -"", -" ", -" ", -" ", -" ", -" ", -" ", -"") - }, - new object[] { "TestRunParameters.Parameter(name=\"weburl\",value=\"http://localhost//abc\")" , - string.Join(Environment.NewLine, "", -"", -" ", -" ", -" ", -" ", -" ", -" ", -"") - }, - new object[] { "TestRunParameters.Parameter(name= \"a_sf123_12\",value= \"2324346a!@#$%^*()_+-=':;.,/?{}[]|\")" , - string.Join(Environment.NewLine, "", -"", -" ", -" ", -" ", -" ", -" ", -" ", -"") - }, - new object[] { "TestRunParameters.Parameter(name = \"weburl\" , value = \"http://localhost//abc\")" , - string.Join(Environment.NewLine, "", -"", -" ", -" ", -" ", -" ", -" ", -" ", -"") - }, - }; - #endregion - - [TestMethod] - public void InitializeShouldMergeTestRunParametersWithSpaces() - { - // in powershell call: ConsoleApp1.exe --% --TestRunParameters.Parameter(name =\"myParam\", value=\"myValue\") - // args: - //-- - //TestRunParameters.Parameter(name = "myParam", - //value = "myValue") - - // in cmd: ConsoleApp1.exe -- TestRunParameters.Parameter(name=\"myParam\", value=\"myValue\") - // args: - //-- - //TestRunParameters.Parameter(name = "myParam", - //value = "myValue") - - // in ubuntu wsl without escaping the space: ConsoleApp1.exe-- TestRunParameters.Parameter\(name =\"myParam\", value=\"myValue\"\) - // args: - //-- - //TestRunParameters.Parameter(name = "myParam", - //value = "myValue") - - // in ubuntu wsl with escaping the space: ConsoleApp1.exe-- TestRunParameters.Parameter\(name =\"myParam\",\ value=\"myValue\"\) - // args: - //-- - //TestRunParameters.Parameter(name = "myParam", value = "myValue") - - var args = new string[] { - "--", - "TestRunParameters.Parameter(name=\"myParam\",", - "value=\"myValue\")", - "TestRunParameters.Parameter(name=\"myParam2\",", - "value=\"myValue 2\")", - }; - - var runsettings = string.Join(Environment.NewLine, new[]{ + [TestMethod] + public void InitializeShouldNotUpdateCommandLineOptionsArchitectureAndFxIfNotProvided() + { + + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runSettings); + + var args = Array.Empty(); + _executor.Initialize(args); + + Assert.IsFalse(_commandLineOptions.ArchitectureSpecified); + Assert.IsFalse(_commandLineOptions.FrameworkVersionSpecified); + } + + [DynamicData(nameof(TestRunParameterArgValidTestCases), DynamicDataSourceType.Method)] + [DataTestMethod] + public void InitializeShouldValidateTestRunParameter(string arg, string runSettingsWithTestRunParameters) + { + var args = new string[] { arg }; + + _executor.Initialize(args); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(runSettingsWithTestRunParameters, _settingsProvider.ActiveRunSettings.SettingsXml); + } + + [DynamicData(nameof(TestRunParameterArgInvalidTestCases), DynamicDataSourceType.Method)] + [DataTestMethod] + public void InitializeShouldThrowErrorIfTestRunParameterNodeIsInValid(string arg) + { + var args = new string[] { arg }; + var str = string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidTestRunParameterArgument, arg); + + CommandLineException ex = Assert.ThrowsException(() => _executor.Initialize(args)); + + Assert.AreEqual(str, ex.Message); + } + + public static IEnumerable TestRunParameterArgInvalidTestCases() + { + return InvalidTestCases; + } + + private static readonly List InvalidTestCases = + [ + ["TestRunParameters.Parameter(name=asf,value=rgq)"], + ["TestRunParameters.Parameter(name=\"asf\",value=\"rgq\" )"], + ["TestRunParameters.Parameter( name=\"asf\",value=\"rgq\")"], + ["TestRunParametersParameter(name=\"asf\",value=\"rgq\")"], + ["TestRunParameters.Paramete(name=\"asf\",value=\"rgq\")"], + ["TestRunParameters.Parametername=\"asf\",value=\"rgq\")"], + ["TestRunParameters.Parameter(ame=\"asf\",value=\"rgq\")"], + ["TestRunParameters.Parameter(name\"asf\",value=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\" value=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\",alue=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\",value\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\",value=\"rgq\""], + ["TestRunParameters.Parameter(name=\"asf\",value=\"rgq\")wfds"], + ["TestRunParameters.Parameter(name=\"\",value=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\",value=\"\")"], + ["TestRunParameters.Parameter(name=asf\",value=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf,value=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\",value=rgq\")"], + ["TestRunParameters.Parameter(name=\"asf\",value=\"rgq)"], + ["TestRunParameters.Parameter(name=\"asf@#!\",value=\"rgq\")"], + ["TestRunParameters.Parameter(name=\"\",value=\"fgf\")"], + ["TestRunParameters.Parameter(name=\"gag\",value=\"\")"], + ["TestRunParameters.Parameter(name=\"gag\")"] + ]; + + public static IEnumerable TestRunParameterArgValidTestCases() + { + return ValidTestCases; + } + + private static readonly List ValidTestCases = + [ + [ + "TestRunParameters.Parameter(name=\"weburl\",value=\"&><\")", string.Join(Environment.NewLine, "", "", " ", " ", " ", " ", - " ", - " ", + " ", " ", - ""}); + "") + ], + [ + "TestRunParameters.Parameter(name=\"weburl\",value=\"http://localhost//abc\")", string.Join( + Environment.NewLine, "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + "") + ], + [ + "TestRunParameters.Parameter(name= \"a_sf123_12\",value= \"2324346a!@#$%^*()_+-=':;.,/?{}[]|\")", + string.Join(Environment.NewLine, "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + "") + ], + [ + "TestRunParameters.Parameter(name = \"weburl\" , value = \"http://localhost//abc\")", string.Join( + Environment.NewLine, "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + "") + ] + ]; + #endregion + + [TestMethod] + public void InitializeShouldMergeTestRunParametersWithSpaces() + { + // in powershell call: ConsoleApp1.exe --% --TestRunParameters.Parameter(name =\"myParam\", value=\"myValue\") + // args: + //-- + //TestRunParameters.Parameter(name = "myParam", + //value = "myValue") + + // in cmd: ConsoleApp1.exe -- TestRunParameters.Parameter(name=\"myParam\", value=\"myValue\") + // args: + //-- + //TestRunParameters.Parameter(name = "myParam", + //value = "myValue") + + // in ubuntu wsl without escaping the space: ConsoleApp1.exe-- TestRunParameters.Parameter\(name =\"myParam\", value=\"myValue\"\) + // args: + //-- + //TestRunParameters.Parameter(name = "myParam", + //value = "myValue") + + // in ubuntu wsl with escaping the space: ConsoleApp1.exe-- TestRunParameters.Parameter\(name =\"myParam\",\ value=\"myValue\"\) + // args: + //-- + //TestRunParameters.Parameter(name = "myParam", value = "myValue") + + var args = new string[] { + "--", + "TestRunParameters.Parameter(name=\"myParam\",", + "value=\"myValue\")", + "TestRunParameters.Parameter(name=\"myParam2\",", + "value=\"myValue 2\")", + }; + + var runsettings = string.Join(Environment.NewLine, [ + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "" + ]); - this.executor.Initialize(args); + _executor.Initialize(args); - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(runsettings, settingsProvider.ActiveRunSettings.SettingsXml); - } + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(runsettings, _settingsProvider.ActiveRunSettings.SettingsXml); } } diff --git a/test/vstest.console.UnitTests/Processors/CollectArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/CollectArgumentProcessorTests.cs index 3afcc9f8d7..09613d6c82 100644 --- a/test/vstest.console.UnitTests/Processors/CollectArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/CollectArgumentProcessorTests.cs @@ -1,708 +1,711 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Processors -{ - using System; - using System.IO; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using static Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.CollectArgumentExecutor; - - [TestClass] - public class CollectArgumentProcessorTests - { - private readonly TestableRunSettingsProvider settingsProvider; - private readonly CollectArgumentExecutor executor; +using System; +using System.Globalization; +using System.IO; - private readonly string DefaultRunSettings = string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " {0}", - " ", - ""); +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; - public CollectArgumentProcessorTests() - { - this.settingsProvider = new TestableRunSettingsProvider(); - this.executor = new CollectArgumentExecutor(this.settingsProvider, new Mock().Object); - CollectArgumentExecutor.EnabledDataCollectors.Clear(); - } +using Moq; - [TestMethod] - public void GetMetadataShouldReturnCollectArgumentProcessorCapabilities() - { - var processor = new CollectArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is CollectArgumentProcessorCapabilities); - } +using static Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.CollectArgumentExecutor; - [TestMethod] - public void GetExecuterShouldReturnCollectArgumentProcessorCapabilities() - { - var processor = new CollectArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is CollectArgumentExecutor); - } +namespace vstest.console.UnitTests.Processors; - #region CollectArgumentProcessorCapabilities tests +[TestClass] +public class CollectArgumentProcessorTests +{ + private readonly TestableRunSettingsProvider _settingsProvider; + private readonly CollectArgumentExecutor _executor; + + private readonly string _defaultRunSettings = string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " {0}", + " ", + ""); + + public CollectArgumentProcessorTests() + { + _settingsProvider = new TestableRunSettingsProvider(); + _executor = new CollectArgumentExecutor(_settingsProvider, new Mock().Object); + EnabledDataCollectors.Clear(); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new CollectArgumentProcessorCapabilities(); + [TestMethod] + public void GetMetadataShouldReturnCollectArgumentProcessorCapabilities() + { + var processor = new CollectArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is CollectArgumentProcessorCapabilities); + } - Assert.AreEqual("/Collect", capabilities.CommandName); - var expected = - $"--Collect|/Collect:{Environment.NewLine} Enables data collector for the test run. More info here : https://aka.ms/vstest-collect"; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), - capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + [TestMethod] + public void GetExecuterShouldReturnCollectArgumentProcessorCapabilities() + { + var processor = new CollectArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is CollectArgumentExecutor); + } - Assert.AreEqual(HelpContentPriority.CollectArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + #region CollectArgumentProcessorCapabilities tests - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new CollectArgumentProcessorCapabilities(); - #endregion + Assert.AreEqual("/Collect", capabilities.CommandName); + var expected = + $"--Collect|/Collect:{Environment.NewLine} Enables data collector for the test run. More info here : https://aka.ms/vstest-collect"; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), + capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - #region CollectArgumentExecutor tests + Assert.AreEqual(HelpContentPriority.CollectArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - [TestMethod] - public void InitializeShouldThrowIfArguemntIsNull() - { - Assert.ThrowsException(() => { this.executor.Initialize(null); }); - } + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - public void InitializeShouldNotThrowIfArgumentIsEmpty() - { - Assert.ThrowsException(() => { this.executor.Initialize(String.Empty); }); - } + #endregion - [TestMethod] - public void InitializeShouldNotThrowIfArgumentIsWhiteSpace() - { - Assert.ThrowsException(() => { this.executor.Initialize(" "); }); - } + #region CollectArgumentExecutor tests - [TestMethod] - public void InitializeShouldThrowExceptionWhenTestSettingsIsEnabled() - { - string runsettingsString = @" + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNull() + { + Assert.ThrowsException(() => _executor.Initialize(null)); + } + + [TestMethod] + public void InitializeShouldNotThrowIfArgumentIsEmpty() + { + Assert.ThrowsException(() => _executor.Initialize(string.Empty)); + } + + [TestMethod] + public void InitializeShouldNotThrowIfArgumentIsWhiteSpace() + { + Assert.ThrowsException(() => _executor.Initialize(" ")); + } + + [TestMethod] + public void InitializeShouldThrowExceptionWhenTestSettingsIsEnabled() + { + string runsettingsString = @" C:\temp.testsettings true "; - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - bool exceptionThrown = false; - - try - { - this.executor.Initialize("MyDataCollector"); - } - catch (SettingsException ex) - { - exceptionThrown = true; - Assert.AreEqual( - "--Collect|/Collect:\"MyDataCollector\" is not supported if test run is configured using testsettings.", - ex.Message); - } - - Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); - } + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); - [TestMethod] - public void InitializeShouldCreateEntryForDataCollectorInRunSettingsIfNotAlreadyPresent() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector"); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + bool exceptionThrown = false; - [TestMethod] - public void InitializeShouldEnableDataCollectorIfDisabledInRunSettings() + try { - var runsettingsString = string.Format(DefaultRunSettings, - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); + _executor.Initialize("MyDataCollector"); } - - [TestMethod] - public void InitializeShouldNotDisableOtherDataCollectorsIfEnabled() + catch (SettingsException ex) { - var runsettingsString = string.Format(DefaultRunSettings, - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector"); - this.executor.Initialize("MyDataCollector2"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); + exceptionThrown = true; + Assert.AreEqual( + "--Collect|/Collect:\"MyDataCollector\" is not supported if test run is configured using testsettings.", + ex.Message); } - [TestMethod] - public void InitializeShouldNotEnableOtherDataCollectorsIfDisabled() - { - var runsettingsString = string.Format(DefaultRunSettings, - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector"); - this.executor.Initialize("MyDataCollector2"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); + } - [TestMethod] - public void InitializeShouldEnableMultipleCollectorsWhenCalledMoreThanOnce() - { - var runsettingsString = string.Format(DefaultRunSettings, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize("MyDataCollector"); - this.executor.Initialize("MyDataCollector1"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void InitializeShouldCreateEntryForDataCollectorInRunSettingsIfNotAlreadyPresent() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); - [TestMethod] - public void InitializeShouldAddOutProcAndInprocCollectorWhenXPlatCodeCoverageIsEnabled() - { - var runsettingsString = string.Format(DefaultRunSettings, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _executor.Initialize("MyDataCollector"); - [TestMethod] - public void UpdageXPlatCodeCoverageCodebaseWithFullPathFromTestAdaptersPaths_Found() - { - var runsettingsString = string.Format(DefaultRunSettings, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - Mock fileHelper = new Mock(); - fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(true); - CollectArgumentExecutor executor = new CollectArgumentExecutor(settingsProvider, fileHelper.Object); - executor.Initialize("XPlat Code Coverage"); - executor.Execute(); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - "").ShowWhiteSpace(), this.settingsProvider.ActiveRunSettings.SettingsXml.ShowWhiteSpace()); - } + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } - [TestMethod] - public void UpdageXPlatCodeCoverageCodebaseWithFullPathFromTestAdaptersPaths_NotFound() - { - var runsettingsString = string.Format(DefaultRunSettings, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - Mock fileHelper = new Mock(); - fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(false); - CollectArgumentExecutor executor = new CollectArgumentExecutor(settingsProvider, fileHelper.Object); - executor.Initialize("XPlat Code Coverage"); - executor.Execute(); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void InitializeShouldEnableDataCollectorIfDisabledInRunSettings() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); - [TestMethod] - public void InitializeXPlatCodeCoverageShouldNotChangeExistingDataCollectors() - { - var runsettingsString = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""); - runsettingsString = string.Format(runsettingsString, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _executor.Initialize("MyDataCollector"); - [TestMethod] - public void InitializeXPlatCodeCoverageShouldNotChangeExistingXPlatDataCollectorSetting() - { - var runsettingsString = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " "); - runsettingsString = string.Format(runsettingsString, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } - [TestMethod] - public void InitializeXPlatCodeCoverageShouldNotChangeExistingXPlatInProcDataCollectorSetting() - { - var runsettingsString = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""); - runsettingsString = string.Format(runsettingsString, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void InitializeShouldNotDisableOtherDataCollectorsIfEnabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); - [TestMethod] - public void InitializeXPlatCodeCoverageShouldAddXPlatOutProcProcDataCollectorSetting() - { - var runsettingsString = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - ""); - runsettingsString = string.Format(runsettingsString, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _executor.Initialize("MyDataCollector"); + _executor.Initialize("MyDataCollector2"); - [TestMethod] - public void InitializeXPlatCodeCoverageShouldAddXPlatInProcProcDataCollectoPropertiesIfNotPresent() - { - var runsettingsString = $"\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n"; - runsettingsString = string.Format(runsettingsString, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - Mock fileHelper = new Mock(); - fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(true); - CollectArgumentExecutor executor = new CollectArgumentExecutor(settingsProvider, fileHelper.Object); - executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } - [TestMethod] - public void InitializeXPlatCodeCoverageShouldAddXPlatInProcProcDataCollectoPropertiesIfNotPresent_NoTestAdaptersPaths() - { - var runsettingsString = $"\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n"; - runsettingsString = string.Format(runsettingsString, string.Empty); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - Mock fileHelper = new Mock(); - // Suppose file exists to be sure that we won't find adapter path on runsettings config - fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(true); - CollectArgumentExecutor executor = new CollectArgumentExecutor(settingsProvider, fileHelper.Object); - executor.Initialize("XPlat Code Coverage"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - " ", - " ", - $" ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void InitializeShouldNotEnableOtherDataCollectorsIfDisabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); - [TestMethod] - public void InitializeShouldThrowExceptionWhenInvalidCollectorNameProvided() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("MyDataCollector"); + _executor.Initialize("MyDataCollector2"); - Assert.ThrowsException(() => this.executor.Initialize("MyDataCollector=SomeSetting")); - } + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } - [TestMethod] - public void InitializeShouldThrowExceptionWhenInvalidConfigurationsProvided() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); + [TestMethod] + public void InitializeShouldEnableMultipleCollectorsWhenCalledMoreThanOnce() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("MyDataCollector"); + _executor.Initialize("MyDataCollector1"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } - Assert.ThrowsException(() => this.executor.Initialize("MyDataCollector;SomeSetting")); - } + [TestMethod] + public void InitializeShouldAddOutProcAndInprocCollectorWhenXPlatCodeCoverageIsEnabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("XPlat Code Coverage"); - [TestMethod] - public void InitializeShouldCreateConfigurationsForNewDataCollectorInRunSettings() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector;SomeSetting=SomeValue;AnotherSetting=AnotherValue"); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " SomeValue", - " AnotherValue", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } - [TestMethod] - public void InitializeShouldCreateConfigurationsForExistingDataCollectorInRunSettings() - { - var runsettingsString = string.Format(DefaultRunSettings, - "" + - " " + - " SomeValue" + - " " + - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector;AnotherSetting=AnotherValue"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " SomeValue", - " AnotherValue", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + [TestMethod] + public void UpdateXPlatCodeCoverageCodebaseWithFullPathFromTestAdaptersPaths_Found() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + Mock fileHelper = new(); + fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(true); + CollectArgumentExecutor executor = new(_settingsProvider, fileHelper.Object); + executor.Initialize("XPlat Code Coverage"); + executor.Execute(); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + "").ShowWhiteSpace(), _settingsProvider.ActiveRunSettings!.SettingsXml!.ShowWhiteSpace()); + } - [TestMethod] - public void InitializeShouldUpdateConfigurationsForExistingDataCollectorInRunSettings() - { - var runsettingsString = string.Format(DefaultRunSettings, - "" + - " " + - " SomeValue" + - " " + - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("MyDataCollector;SomeSetting=AnotherValue"); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " c:\\AdapterFolderPath", - " ", - " ", - " ", - " ", - " ", - " AnotherValue", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } - #endregion + [TestMethod] + public void UpdageXPlatCodeCoverageCodebaseWithFullPathFromTestAdaptersPaths_NotFound() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + Mock fileHelper = new(); + fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(false); + CollectArgumentExecutor executor = new(_settingsProvider, fileHelper.Object); + executor.Initialize("XPlat Code Coverage"); + executor.Execute(); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeXPlatCodeCoverageShouldNotChangeExistingDataCollectors() + { + var runsettingsString = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""); + runsettingsString = string.Format(CultureInfo.CurrentCulture, runsettingsString, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("XPlat Code Coverage"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeXPlatCodeCoverageShouldNotChangeExistingXPlatDataCollectorSetting() + { + var runsettingsString = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " "); + runsettingsString = string.Format(CultureInfo.CurrentCulture, runsettingsString, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("XPlat Code Coverage"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeXPlatCodeCoverageShouldNotChangeExistingXPlatInProcDataCollectorSetting() + { + var runsettingsString = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""); + runsettingsString = string.Format(CultureInfo.CurrentCulture, runsettingsString, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("XPlat Code Coverage"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeXPlatCodeCoverageShouldAddXPlatOutProcProcDataCollectorSetting() + { + var runsettingsString = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + ""); + runsettingsString = string.Format(CultureInfo.CurrentCulture, runsettingsString, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + _executor.Initialize("XPlat Code Coverage"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeXPlatCodeCoverageShouldAddXPlatInProcProcDataCollectoPropertiesIfNotPresent() + { + var runsettingsString = $"\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n"; + runsettingsString = string.Format(CultureInfo.CurrentCulture, runsettingsString, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + Mock fileHelper = new(); + fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(true); + CollectArgumentExecutor executor = new(_settingsProvider, fileHelper.Object); + executor.Initialize("XPlat Code Coverage"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeXPlatCodeCoverageShouldAddXPlatInProcProcDataCollectoPropertiesIfNotPresent_NoTestAdaptersPaths() + { + var runsettingsString = $"\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n"; + runsettingsString = string.Format(CultureInfo.CurrentCulture, runsettingsString, string.Empty); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + Mock fileHelper = new(); + // Suppose file exists to be sure that we won't find adapter path on runsettings config + fileHelper.Setup(f => f.Exists(It.IsAny())).Returns(true); + CollectArgumentExecutor executor = new(_settingsProvider, fileHelper.Object); + executor.Initialize("XPlat Code Coverage"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + " ", + " ", + $" ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeShouldThrowExceptionWhenInvalidCollectorNameProvided() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + Assert.ThrowsException(() => _executor.Initialize("MyDataCollector=SomeSetting")); + } + + [TestMethod] + public void InitializeShouldThrowExceptionWhenInvalidConfigurationsProvided() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + Assert.ThrowsException(() => _executor.Initialize("MyDataCollector;SomeSetting")); + } + + [TestMethod] + public void InitializeShouldCreateConfigurationsForNewDataCollectorInRunSettings() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize("MyDataCollector;SomeSetting=SomeValue;AnotherSetting=AnotherValue"); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " SomeValue", + " AnotherValue", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeShouldCreateConfigurationsForExistingDataCollectorInRunSettings() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + "" + + " " + + " SomeValue" + + " " + + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize("MyDataCollector;AnotherSetting=AnotherValue"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " SomeValue", + " AnotherValue", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeShouldUpdateConfigurationsForExistingDataCollectorInRunSettings() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + "" + + " " + + " SomeValue" + + " " + + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize("MyDataCollector;SomeSetting=AnotherValue"); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " c:\\AdapterFolderPath", + " ", + " ", + " ", + " ", + " ", + " AnotherValue", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); } + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/DisableAutoFakesArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/DisableAutoFakesArgumentProcessorTests.cs index 584f8fd50b..ca33ec99fe 100644 --- a/test/vstest.console.UnitTests/Processors/DisableAutoFakesArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/DisableAutoFakesArgumentProcessorTests.cs @@ -1,53 +1,53 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class DisableAutoFakesArgumentProcessorTests { - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestTools.UnitTesting; + private readonly DisableAutoFakesArgumentProcessor _disableAutoFakesArgumentProcessor; + + public DisableAutoFakesArgumentProcessorTests() + { + _disableAutoFakesArgumentProcessor = new DisableAutoFakesArgumentProcessor(); + } + + [TestMethod] + public void DisableAutoFakesArgumentProcessorMetadataShouldProvideAppropriateCapabilities() + { + Assert.IsFalse(_disableAutoFakesArgumentProcessor.Metadata.Value.AllowMultiple); + Assert.IsFalse(_disableAutoFakesArgumentProcessor.Metadata.Value.AlwaysExecute); + Assert.IsFalse(_disableAutoFakesArgumentProcessor.Metadata.Value.IsAction); + Assert.IsFalse(_disableAutoFakesArgumentProcessor.Metadata.Value.IsSpecialCommand); + Assert.AreEqual(DisableAutoFakesArgumentProcessor.CommandName, _disableAutoFakesArgumentProcessor.Metadata.Value.CommandName); + Assert.IsNull(_disableAutoFakesArgumentProcessor.Metadata.Value.ShortCommandName); + Assert.AreEqual(ArgumentProcessorPriority.Normal, _disableAutoFakesArgumentProcessor.Metadata.Value.Priority); + Assert.AreEqual(HelpContentPriority.DisableAutoFakesArgumentProcessorHelpPriority, _disableAutoFakesArgumentProcessor.Metadata.Value.HelpPriority); + } + + + [TestMethod] + public void DisableAutoFakesArgumentProcessorExecutorShouldThrowIfArgumentIsNullOrEmpty() + { + Assert.ThrowsException(() => _disableAutoFakesArgumentProcessor.Executor!.Value.Initialize(string.Empty)); + Assert.ThrowsException(() => _disableAutoFakesArgumentProcessor.Executor!.Value.Initialize(" ")); + } + + [TestMethod] + public void DisableAutoFakesArgumentProcessorExecutorShouldThrowIfArgumentIsNotBooleanString() + { + Assert.ThrowsException(() => _disableAutoFakesArgumentProcessor.Executor!.Value.Initialize("DisableAutoFakes")); + } - [TestClass] - public class DisableAutoFakesArgumentProcessorTests + [TestMethod] + public void DisableAutoFakesArgumentProcessorExecutorShouldSetCommandLineDisableAutoFakeValueAsPerArgumentProvided() { - private readonly DisableAutoFakesArgumentProcessor disableAutoFakesArgumentProcessor; - - public DisableAutoFakesArgumentProcessorTests() - { - this.disableAutoFakesArgumentProcessor = new DisableAutoFakesArgumentProcessor(); - } - - [TestMethod] - public void DisableAutoFakesArgumentProcessorMetadataShouldProvideAppropriateCapabilities() - { - Assert.IsFalse(this.disableAutoFakesArgumentProcessor.Metadata.Value.AllowMultiple); - Assert.IsFalse(this.disableAutoFakesArgumentProcessor.Metadata.Value.AlwaysExecute); - Assert.IsFalse(this.disableAutoFakesArgumentProcessor.Metadata.Value.IsAction); - Assert.IsFalse(this.disableAutoFakesArgumentProcessor.Metadata.Value.IsSpecialCommand); - Assert.AreEqual(DisableAutoFakesArgumentProcessor.CommandName, this.disableAutoFakesArgumentProcessor.Metadata.Value.CommandName); - Assert.IsNull(this.disableAutoFakesArgumentProcessor.Metadata.Value.ShortCommandName); - Assert.AreEqual(ArgumentProcessorPriority.Normal, this.disableAutoFakesArgumentProcessor.Metadata.Value.Priority); - Assert.AreEqual(HelpContentPriority.DisableAutoFakesArgumentProcessorHelpPriority, this.disableAutoFakesArgumentProcessor.Metadata.Value.HelpPriority); - } - - - [TestMethod] - public void DisableAutoFakesArgumentProcessorExecutorShouldThrowIfArgumentIsNullOrEmpty() - { - Assert.ThrowsException(() => this.disableAutoFakesArgumentProcessor.Executor.Value.Initialize(string.Empty)); - Assert.ThrowsException(() => this.disableAutoFakesArgumentProcessor.Executor.Value.Initialize(" ")); - } - - [TestMethod] - public void DisableAutoFakesArgumentProcessorExecutorShouldThrowIfArgumentIsNotBooleanString() - { - Assert.ThrowsException(() => this.disableAutoFakesArgumentProcessor.Executor.Value.Initialize("DisableAutoFakes")); - } - - [TestMethod] - public void DisableAutoFakesArgumentProcessorExecutorShouldSetCommandLineDisableAutoFakeValueAsPerArgumentProvided() - { - this.disableAutoFakesArgumentProcessor.Executor.Value.Initialize("true"); - Assert.IsTrue(CommandLineOptions.Instance.DisableAutoFakes); - } + _disableAutoFakesArgumentProcessor.Executor!.Value.Initialize("true"); + Assert.IsTrue(CommandLineOptions.Instance.DisableAutoFakes); } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/Processors/EnableBlameArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/EnableBlameArgumentProcessorTests.cs index 24566e7ab1..2a09e0145b 100644 --- a/test/vstest.console.UnitTests/Processors/EnableBlameArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/EnableBlameArgumentProcessorTests.cs @@ -1,120 +1,149 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Processors +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; + +namespace vstest.console.UnitTests.Processors; + +[TestClass] +public class EnableBlameArgumentProcessorTests { - using System; - using System.Collections.Generic; - using System.Globalization; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; - - [TestClass] - public class EnableBlameArgumentProcessorTests + private readonly Mock _mockEnvronment; + private readonly Mock _mockOutput; + private readonly TestableRunSettingsProvider _settingsProvider; + private readonly EnableBlameArgumentExecutor _executor; + private readonly string _defaultRunSettings = string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " C:\\dir\\TestResults", + " "); + + public EnableBlameArgumentProcessorTests() { - private Mock mockEnvronment; - private Mock mockOutput; - private TestableRunSettingsProvider settingsProvider; - private EnableBlameArgumentExecutor executor; - private string DefaultRunSettings = string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " C:\\dir\\TestResults", - " "); - - public EnableBlameArgumentProcessorTests() - { - this.settingsProvider = new TestableRunSettingsProvider(); - this.mockEnvronment = new Mock(); - this.mockOutput = new Mock(); + _settingsProvider = new TestableRunSettingsProvider(); + _mockEnvronment = new Mock(); + _mockOutput = new Mock(); - this.executor = new TestableEnableBlameArgumentExecutor(this.settingsProvider, this.mockEnvronment.Object, this.mockOutput.Object); - CollectArgumentExecutor.EnabledDataCollectors.Clear(); - } + _executor = new TestableEnableBlameArgumentExecutor(_settingsProvider, _mockEnvronment.Object, _mockOutput.Object); + CollectArgumentExecutor.EnabledDataCollectors.Clear(); + } - [TestMethod] - public void GetMetadataShouldReturnEnableBlameArgumentProcessorCapabilities() - { - var processor = new EnableBlameArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is EnableBlameArgumentProcessorCapabilities); - } + [TestMethod] + public void GetMetadataShouldReturnEnableBlameArgumentProcessorCapabilities() + { + var processor = new EnableBlameArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is EnableBlameArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecuterShouldReturnEnableBlameArgumentProcessorCapabilities() - { - var processor = new EnableBlameArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is EnableBlameArgumentExecutor); - } + [TestMethod] + public void GetExecuterShouldReturnEnableBlameArgumentProcessorCapabilities() + { + var processor = new EnableBlameArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is EnableBlameArgumentExecutor); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new EnableBlameArgumentProcessorCapabilities(); + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new EnableBlameArgumentProcessorCapabilities(); - Assert.AreEqual("/Blame", capabilities.CommandName); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Logging, capabilities.Priority); - Assert.AreEqual(HelpContentPriority.EnableDiagArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.AreEqual(CommandLineResources.EnableBlameUsage, capabilities.HelpContentResourceName); + Assert.AreEqual("/Blame", capabilities.CommandName); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Logging, capabilities.Priority); + Assert.AreEqual(HelpContentPriority.EnableDiagArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.AreEqual(CommandLineResources.EnableBlameUsage, capabilities.HelpContentResourceName); - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - public void InitializeShouldCreateEntryForBlameInRunSettingsIfNotAlreadyPresent() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); + [TestMethod] + public void InitializeShouldCreateEntryForBlameInRunSettingsIfNotAlreadyPresent() + { + _ = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); - this.executor.Initialize(""); + _executor.Initialize(""); - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " C:\\dir\\TestResults", - " ", - " ", - " ", - " ", - " ", - " C:\\dir\\TestResults", - " ", - " ", - " ", - " ", - " ", - " ", - "" - ), this.settingsProvider.ActiveRunSettings.SettingsXml); - } + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " C:\\dir\\TestResults", + " ", + " ", + " ", + " ", + " ", + " C:\\dir\\TestResults", + " ", + " ", + " ", + " ", + " ", + " ", + "" + ), _settingsProvider.ActiveRunSettings.SettingsXml); + } - [TestMethod] - public void InitializeShouldOverwriteEntryForBlameInRunSettingsIfAlreadyPresent() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(string.Join(Environment.NewLine, + [TestMethod] + public void InitializeShouldOverwriteEntryForBlameInRunSettingsIfAlreadyPresent() + { + _ = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " C:\\dir\\TestResults", + " ", + " ", + " ", + " ", + " ", + " ", + " C:\\dir\\TestResults", + " ", + " ", + " ", + " ", + " ", + " ", + "")); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize("CollectDump;DumpType=full;CollectAlways=true"); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -122,7 +151,7 @@ public void InitializeShouldOverwriteEntryForBlameInRunSettingsIfAlreadyPresent( " ", " ", " C:\\dir\\TestResults", - " ", + " ", " ", " ", " ", @@ -135,13 +164,29 @@ public void InitializeShouldOverwriteEntryForBlameInRunSettingsIfAlreadyPresent( " ", " ", " ", - "")); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize("CollectDump;DumpType=full;CollectAlways=true"); + ""), + _settingsProvider.ActiveRunSettings.SettingsXml); + } - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + [TestMethod] + public void InitializeShouldWarnIfIncorrectParameterIsSpecifiedForCollectDumpOption() + { + var invalidParameter = "CollectDumpXX"; + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); + + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); + + _executor.Initialize(invalidParameter); + _mockOutput.Verify(x => x.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.BlameIncorrectOption, invalidParameter), OutputLevel.Warning)); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -149,7 +194,6 @@ public void InitializeShouldOverwriteEntryForBlameInRunSettingsIfAlreadyPresent( " ", " ", " C:\\dir\\TestResults", - " ", " ", " ", " ", @@ -163,33 +207,29 @@ public void InitializeShouldOverwriteEntryForBlameInRunSettingsIfAlreadyPresent( " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _settingsProvider.ActiveRunSettings.SettingsXml); + } - [TestMethod] - public void InitializeShouldWarnIfPlatformNotSupportedForCollectDumpOption() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); - - var unsupportedPlatforms = new List>() - { - Tuple.Create(PlatformOperatingSystem.Windows, PlatformArchitecture.ARM), - Tuple.Create(PlatformOperatingSystem.Windows, PlatformArchitecture.ARM64) - }; - - foreach (var tuple in unsupportedPlatforms) - { - this.mockEnvronment.SetupGet(s => s.OperatingSystem).Returns(tuple.Item1); - this.mockEnvronment.SetupGet(s => s.Architecture).Returns(tuple.Item2); - - this.executor.Initialize("collectdump"); - this.mockOutput.Verify(x => x.WriteLine(CommandLineResources.BlameCollectDumpNotSupportedForPlatform, OutputLevel.Warning)); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + [TestMethod] + [ExpectedException(typeof(CommandLineException))] + public void InitializeShouldThrowIfInvalidParameterFormatIsSpecifiedForCollectDumpOption() + { + var invalidString = "CollectDump;sdf=sdg;;as;a="; + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); + + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); + + _executor.Initialize(invalidString); + _mockOutput.Verify(x => x.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidBlameArgument, invalidString), OutputLevel.Warning)); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -210,29 +250,26 @@ public void InitializeShouldWarnIfPlatformNotSupportedForCollectDumpOption() " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } - } + _settingsProvider.ActiveRunSettings.SettingsXml); + } - [TestMethod] - public void InitializeShouldWarnIfIncorrectParameterIsSpecifiedForCollectDumpOption() - { - var invalidParameter = "CollectDumpXX"; - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.mockEnvronment.Setup(x => x.OperatingSystem) - .Returns(PlatformOperatingSystem.Windows); - this.mockEnvronment.Setup(x => x.Architecture) - .Returns(PlatformArchitecture.X64); - - this.executor.Initialize(invalidParameter); - this.mockOutput.Verify(x => x.WriteLine(string.Format(CultureInfo.CurrentUICulture, CommandLineResources.BlameIncorrectOption, invalidParameter), OutputLevel.Warning)); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + [TestMethod] + public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpEntryIfEnabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); + + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); + + _executor.Initialize("CollectDump"); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -240,6 +277,7 @@ public void InitializeShouldWarnIfIncorrectParameterIsSpecifiedForCollectDumpOpt " ", " ", " C:\\dir\\TestResults", + " ", " ", " ", " ", @@ -253,29 +291,26 @@ public void InitializeShouldWarnIfIncorrectParameterIsSpecifiedForCollectDumpOpt " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _settingsProvider.ActiveRunSettings.SettingsXml); + } - [TestMethod] - [ExpectedException(typeof(CommandLineException))] - public void InitializeShouldThrowIfInvalidParameterFormatIsSpecifiedForCollectDumpOption() - { - var invalidString = "CollectDump;sdf=sdg;;as;a="; - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.mockEnvronment.Setup(x => x.OperatingSystem) - .Returns(PlatformOperatingSystem.Windows); - this.mockEnvronment.Setup(x => x.Architecture) - .Returns(PlatformArchitecture.X64); - - this.executor.Initialize(invalidString); - this.mockOutput.Verify(x => x.WriteLine(string.Format(CultureInfo.CurrentUICulture, CommandLineResources.InvalidBlameArgument, invalidString), OutputLevel.Warning)); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + [TestMethod] + public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpParametersIfEnabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); + + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); + + _executor.Initialize("CollectDump;DumpType=full;CollectAlways=true"); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -283,6 +318,7 @@ public void InitializeShouldThrowIfInvalidParameterFormatIsSpecifiedForCollectDu " ", " ", " C:\\dir\\TestResults", + " ", " ", " ", " ", @@ -296,26 +332,27 @@ public void InitializeShouldThrowIfInvalidParameterFormatIsSpecifiedForCollectDu " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _settingsProvider.ActiveRunSettings.SettingsXml); + } - [TestMethod] - public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpEntryIfEnabled() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); + [TestMethod] + public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpEntryIfEnabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); - this.mockEnvronment.Setup(x => x.OperatingSystem) - .Returns(PlatformOperatingSystem.Windows); - this.mockEnvronment.Setup(x => x.Architecture) - .Returns(PlatformArchitecture.X64); + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); - this.executor.Initialize("CollectDump"); + _executor.Initialize("CollectHangDump"); - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual( + string.Join(Environment.NewLine, "", "", " ", @@ -323,7 +360,7 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpEntryIfEnable " ", " ", " C:\\dir\\TestResults", - " ", + " ", " ", " ", " ", @@ -337,26 +374,26 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpEntryIfEnable " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _settingsProvider.ActiveRunSettings.SettingsXml); + } - [TestMethod] - public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpParametersIfEnabled() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); + [TestMethod] + public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpParametersIfEnabled() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); - this.mockEnvronment.Setup(x => x.OperatingSystem) - .Returns(PlatformOperatingSystem.Windows); - this.mockEnvronment.Setup(x => x.Architecture) - .Returns(PlatformArchitecture.X64); + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); - this.executor.Initialize("CollectDump;DumpType=full;CollectAlways=true"); + _executor.Initialize("CollectHangDump;TestTimeout=10min;HangDumpType=Mini"); - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -364,7 +401,7 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpParametersIfE " ", " ", " C:\\dir\\TestResults", - " ", + " ", " ", " ", " ", @@ -378,27 +415,26 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectDumpParametersIfE " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpEntryIfEnabled() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.mockEnvronment.Setup(x => x.OperatingSystem) - .Returns(PlatformOperatingSystem.Windows); - this.mockEnvronment.Setup(x => x.Architecture) - .Returns(PlatformArchitecture.X64); - - this.executor.Initialize("CollectHangDump"); + _settingsProvider.ActiveRunSettings.SettingsXml); + } - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual( - string.Join(Environment.NewLine, + [TestMethod] + [TestCategory("Windows-Review")] + public void InitializeMonitorPostmortemDebuggerShouldGenerateCorrectConfiguration() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); + + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); + + _executor.Initialize("MonitorPostmortemDebugger;DumpDirectoryPath=c:\\DumpDirectoryPath"); + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -406,7 +442,7 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpEntryIfEn " ", " ", " C:\\dir\\TestResults", - " ", + " ", " ", " ", " ", @@ -420,26 +456,26 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpEntryIfEn " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpParametersIfEnabled() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(DefaultRunSettings); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.mockEnvronment.Setup(x => x.OperatingSystem) - .Returns(PlatformOperatingSystem.Windows); - this.mockEnvronment.Setup(x => x.Architecture) - .Returns(PlatformArchitecture.X64); - - this.executor.Initialize("CollectHangDump;TestTimeout=10min;HangDumpType=Mini"); + _settingsProvider.ActiveRunSettings.SettingsXml); + } - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(string.Join(Environment.NewLine, + [TestMethod] + [TestCategory("Windows-Review")] + public void InitializeMonitorPostmortemDebuggerShouldGenerateCorrectConfigurationAlsoIfIncomplete() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(_defaultRunSettings); + _settingsProvider.SetActiveRunSettings(runsettings); + + _mockEnvronment.Setup(x => x.OperatingSystem) + .Returns(PlatformOperatingSystem.Windows); + _mockEnvronment.Setup(x => x.Architecture) + .Returns(PlatformArchitecture.X64); + + _executor.Initialize("MonitorPostmortemDebugger;"); + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", @@ -447,7 +483,7 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpParameter " ", " ", " C:\\dir\\TestResults", - " ", + " ", " ", " ", " ", @@ -461,16 +497,15 @@ public void InitializeShouldCreateEntryForBlameAlongWithCollectHangDumpParameter " ", " ", ""), - this.settingsProvider.ActiveRunSettings.SettingsXml); - } + _settingsProvider.ActiveRunSettings.SettingsXml); + } - internal class TestableEnableBlameArgumentExecutor : EnableBlameArgumentExecutor + internal class TestableEnableBlameArgumentExecutor : EnableBlameArgumentExecutor + { + internal TestableEnableBlameArgumentExecutor(IRunSettingsProvider runSettingsManager, IEnvironment environment, IOutput output) + : base(runSettingsManager, environment, new Mock().Object) { - internal TestableEnableBlameArgumentExecutor(IRunSettingsProvider runSettingsManager, IEnvironment environment, IOutput output) - : base(runSettingsManager, environment, new Mock().Object) - { - this.Output = output; - } + Output = output; } } } diff --git a/test/vstest.console.UnitTests/Processors/EnableCodeCoverageArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/EnableCodeCoverageArgumentProcessorTests.cs index 95737ecd53..405fee6e19 100644 --- a/test/vstest.console.UnitTests/Processors/EnableCodeCoverageArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/EnableCodeCoverageArgumentProcessorTests.cs @@ -1,176 +1,178 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Processors +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace vstest.console.UnitTests.Processors; + +[TestClass] +public class EnableCodeCoverageArgumentProcessorTests { - using System; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - - [TestClass] - public class EnableCodeCoverageArgumentProcessorTests + private readonly TestableRunSettingsProvider _settingsProvider; + private readonly EnableCodeCoverageArgumentExecutor _executor; + + private readonly string _defaultRunSettings = string.Join(Environment.NewLine, + "", + "", + " ", + " {0}", + " ", + ""); + + public EnableCodeCoverageArgumentProcessorTests() + { + _settingsProvider = new TestableRunSettingsProvider(); + _executor = new EnableCodeCoverageArgumentExecutor(CommandLineOptions.Instance, _settingsProvider, + new Mock().Object); + CollectArgumentExecutor.EnabledDataCollectors.Clear(); + } + + [TestMethod] + public void GetMetadataShouldReturnEnableCodeCoverageArgumentProcessorCapabilities() + { + var processor = new EnableCodeCoverageArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is EnableCodeCoverageArgumentProcessorCapabilities); + } + + [TestMethod] + public void GetExecuterShouldReturnEnableCodeCoverageArgumentProcessorCapabilities() + { + var processor = new EnableCodeCoverageArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is EnableCodeCoverageArgumentExecutor); + } + + #region EnableCodeCoverageArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new EnableCodeCoverageArgumentProcessorCapabilities(); + + Assert.AreEqual("/EnableCodeCoverage", capabilities.CommandName); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + #region EnableCodeCoverageArgumentExecutor tests + + [TestMethod] + public void InitializeShouldSetEnableCodeCoverageOfCommandLineOption() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + CommandLineOptions.Instance.EnableCodeCoverage = false; + + _executor.Initialize(string.Empty); + + Assert.IsTrue(CommandLineOptions.Instance.EnableCodeCoverage, + "/EnableCoverage should set CommandLineOption.EnableCodeCoverage to true"); + } + + [TestMethod] + public void InitializeShouldCreateEntryForCodeCoverageInRunSettingsIfNotAlreadyPresent() { - private TestableRunSettingsProvider settingsProvider; - private EnableCodeCoverageArgumentExecutor executor; + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize(string.Empty); + + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + var dataCollectorsFriendlyNames = + XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(_settingsProvider.ActiveRunSettings + .SettingsXml!); + Assert.IsTrue(dataCollectorsFriendlyNames.Contains("Code Coverage"), + "Code coverage setting in not available in runsettings"); + } - private readonly string DefaultRunSettings = string.Join(Environment.NewLine, + [TestMethod] + public void InitializeShouldEnableCodeCoverageIfDisabledInRunSettings() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize(string.Empty); + + Assert.AreEqual(string.Join(Environment.NewLine, "", "", " ", - " {0}", + " ", + " ", + " ", " ", - ""); - - public EnableCodeCoverageArgumentProcessorTests() - { - this.settingsProvider = new TestableRunSettingsProvider(); - this.executor = new EnableCodeCoverageArgumentExecutor(CommandLineOptions.Instance, this.settingsProvider, - new Mock().Object); - CollectArgumentExecutor.EnabledDataCollectors.Clear(); - } - - [TestMethod] - public void GetMetadataShouldReturnEnableCodeCoverageArgumentProcessorCapabilities() - { - var processor = new EnableCodeCoverageArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is EnableCodeCoverageArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnEnableCodeCoverageArgumentProcessorCapabilities() - { - var processor = new EnableCodeCoverageArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is EnableCodeCoverageArgumentExecutor); - } - - #region EnableCodeCoverageArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new EnableCodeCoverageArgumentProcessorCapabilities(); - - Assert.AreEqual("/EnableCodeCoverage", capabilities.CommandName); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - #region EnableCodeCoverageArgumentExecutor tests - - [TestMethod] - public void InitializeShouldSetEnableCodeCoverageOfCommandLineOption() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - CommandLineOptions.Instance.EnableCodeCoverage = false; - - this.executor.Initialize(string.Empty); - - Assert.IsTrue(CommandLineOptions.Instance.EnableCodeCoverage, - "/EnableCoverage should set CommandLineOption.EnableCodeCoverage to true"); - } - - [TestMethod] - public void InitializeShouldCreateEntryForCodeCoverageInRunSettingsIfNotAlreadyPresent() - { - var runsettingsString = string.Format(DefaultRunSettings, ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize(string.Empty); - - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - var dataCollectorsFriendlyNames = - XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(this.settingsProvider.ActiveRunSettings - .SettingsXml); - Assert.IsTrue(dataCollectorsFriendlyNames.Contains("Code Coverage"), - "Code coverage setting in not available in runsettings"); - } - - [TestMethod] - public void InitializeShouldEnableCodeCoverageIfDisabledInRunSettings() - { - var runsettingsString = string.Format(DefaultRunSettings, - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize(string.Empty); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldNotDisableOtherDataCollectors() - { - CollectArgumentExecutor.EnabledDataCollectors.Add("mydatacollector1"); - var runsettingsString = string.Format(DefaultRunSettings, - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize(string.Empty); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } - - [TestMethod] - public void InitializeShouldNotEnableOtherDataCollectors() - { - var runsettingsString = string.Format(DefaultRunSettings, - ""); - var runsettings = new RunSettings(); - runsettings.LoadSettingsXml(runsettingsString); - this.settingsProvider.SetActiveRunSettings(runsettings); - - this.executor.Initialize(string.Empty); - - Assert.AreEqual(string.Join(Environment.NewLine, - "", - "", - " ", - " ", - " ", - " ", - " ", - " ", - ""), this.settingsProvider.ActiveRunSettings.SettingsXml); - } - - #endregion + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); } -} \ No newline at end of file + + [TestMethod] + public void InitializeShouldNotDisableOtherDataCollectors() + { + CollectArgumentExecutor.EnabledDataCollectors.Add("mydatacollector1"); + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize(string.Empty); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + [TestMethod] + public void InitializeShouldNotEnableOtherDataCollectors() + { + var runsettingsString = string.Format(CultureInfo.CurrentCulture, _defaultRunSettings, + ""); + var runsettings = new RunSettings(); + runsettings.LoadSettingsXml(runsettingsString); + _settingsProvider.SetActiveRunSettings(runsettings); + + _executor.Initialize(string.Empty); + + Assert.AreEqual(string.Join(Environment.NewLine, + "", + "", + " ", + " ", + " ", + " ", + " ", + " ", + ""), _settingsProvider.ActiveRunSettings!.SettingsXml); + } + + #endregion +} diff --git a/test/vstest.console.UnitTests/Processors/EnableDiagArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/EnableDiagArgumentProcessorTests.cs index d944b752fc..52f1bce87b 100644 --- a/test/vstest.console.UnitTests/Processors/EnableDiagArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/EnableDiagArgumentProcessorTests.cs @@ -1,199 +1,184 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors -{ - using System; - using System.Diagnostics; - using System.Globalization; - using System.IO; +using System; +using System.Diagnostics; +using System.Globalization; +using System.IO; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; +using Moq; - using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; - [TestClass] - public class EnableDiagArgumentProcessorTests - { - private string dummyFilePath = Path.Combine(Path.DirectorySeparatorChar.ToString(), $"{System.Guid.NewGuid()}", $"{System.Guid.NewGuid()}.txt"); +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; - private readonly EnableDiagArgumentProcessor diagProcessor; +[TestClass] +public class EnableDiagArgumentProcessorTests +{ + private readonly string _dummyFilePath = Path.Combine(Path.DirectorySeparatorChar.ToString(), $"{Guid.NewGuid()}", $"{Guid.NewGuid()}.txt"); - private readonly Mock mockFileHelper; + private readonly EnableDiagArgumentProcessor _diagProcessor; - private TraceLevel traceLevel; - private string traceFileName; + private readonly Mock _mockFileHelper; - public EnableDiagArgumentProcessorTests() - { - this.mockFileHelper = new Mock(); - this.diagProcessor = new TestableEnableDiagArgumentProcessor(this.mockFileHelper.Object); + private readonly TraceLevel _traceLevel; + private readonly string? _traceFileName; - // Saving the EqtTrace state + public EnableDiagArgumentProcessorTests() + { + _mockFileHelper = new Mock(); + _diagProcessor = new TestableEnableDiagArgumentProcessor(_mockFileHelper.Object); + + // Saving the EqtTrace state #if NETFRAMEWORK - traceLevel = EqtTrace.TraceLevel; - EqtTrace.TraceLevel = TraceLevel.Off; + _traceLevel = EqtTrace.TraceLevel; + EqtTrace.TraceLevel = TraceLevel.Off; #else - traceLevel = (TraceLevel)EqtTrace.TraceLevel; - EqtTrace.TraceLevel = (PlatformTraceLevel)TraceLevel.Off; + _traceLevel = (TraceLevel)EqtTrace.TraceLevel; + EqtTrace.TraceLevel = (PlatformTraceLevel)TraceLevel.Off; #endif - traceFileName = EqtTrace.LogFile; - } + _traceFileName = EqtTrace.LogFile; + } - [TestCleanup] - public void Cleanup() - { - // Restoring to initial state for EqtTrace - EqtTrace.InitializeTrace(traceFileName, PlatformTraceLevel.Verbose); + [TestCleanup] + public void Cleanup() + { + // Restoring to initial state for EqtTrace + EqtTrace.InitializeTrace(_traceFileName, PlatformTraceLevel.Verbose); #if NETFRAMEWORK - EqtTrace.TraceLevel = traceLevel; + EqtTrace.TraceLevel = _traceLevel; #else - EqtTrace.TraceLevel = (PlatformTraceLevel)traceLevel; + EqtTrace.TraceLevel = (PlatformTraceLevel)_traceLevel; #endif - } + } - [TestMethod] - public void EnableDiagArgumentProcessorMetadataShouldProvideAppropriateCapabilities() - { - Assert.IsFalse(this.diagProcessor.Metadata.Value.AllowMultiple); - Assert.IsFalse(this.diagProcessor.Metadata.Value.AlwaysExecute); - Assert.IsFalse(this.diagProcessor.Metadata.Value.IsAction); - Assert.IsFalse(this.diagProcessor.Metadata.Value.IsSpecialCommand); - Assert.AreEqual(EnableDiagArgumentProcessor.CommandName, this.diagProcessor.Metadata.Value.CommandName); - Assert.IsNull(this.diagProcessor.Metadata.Value.ShortCommandName); - Assert.AreEqual(ArgumentProcessorPriority.Diag, this.diagProcessor.Metadata.Value.Priority); - Assert.AreEqual(HelpContentPriority.EnableDiagArgumentProcessorHelpPriority, this.diagProcessor.Metadata.Value.HelpPriority); - Assert.AreEqual(CommandLineResources.EnableDiagUsage, this.diagProcessor.Metadata.Value.HelpContentResourceName); - } + [TestMethod] + public void EnableDiagArgumentProcessorMetadataShouldProvideAppropriateCapabilities() + { + Assert.IsFalse(_diagProcessor.Metadata.Value.AllowMultiple); + Assert.IsFalse(_diagProcessor.Metadata.Value.AlwaysExecute); + Assert.IsFalse(_diagProcessor.Metadata.Value.IsAction); + Assert.IsFalse(_diagProcessor.Metadata.Value.IsSpecialCommand); + Assert.AreEqual(EnableDiagArgumentProcessor.CommandName, _diagProcessor.Metadata.Value.CommandName); + Assert.IsNull(_diagProcessor.Metadata.Value.ShortCommandName); + Assert.AreEqual(ArgumentProcessorPriority.Diag, _diagProcessor.Metadata.Value.Priority); + Assert.AreEqual(HelpContentPriority.EnableDiagArgumentProcessorHelpPriority, _diagProcessor.Metadata.Value.HelpPriority); + Assert.AreEqual(CommandLineResources.EnableDiagUsage, _diagProcessor.Metadata.Value.HelpContentResourceName); + } - [TestMethod] - [DataRow(null)] - [DataRow(" ")] - [DataRow("")] - public void EnableDiagArgumentProcessorExecutorThrowsIfDiagArgumentIsNullOrEmpty(string argument) - { - string exceptionMessage = string.Format(CultureInfo.CurrentUICulture, CommandLineResources.InvalidDiagArgument, argument); - EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(argument, exceptionMessage); - } + [TestMethod] + [DataRow(null)] + [DataRow(" ")] + [DataRow("")] + public void EnableDiagArgumentProcessorExecutorThrowsIfDiagArgumentIsNullOrEmpty(string argument) + { + string exceptionMessage = string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidDiagArgument, argument); + EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(argument, exceptionMessage); + } - [TestMethod] - public void EnableDiagArgumentProcessorExecutorDoesNotThrowsIfFileDotOpenThrow() - { - this.mockFileHelper.Setup(fh => fh.DirectoryExists(Path.GetDirectoryName(this.dummyFilePath))).Returns(true); + [TestMethod] + public void EnableDiagArgumentProcessorExecutorDoesNotThrowsIfFileDotOpenThrow() + { + _mockFileHelper.Setup(fh => fh.DirectoryExists(Path.GetDirectoryName(_dummyFilePath)!)).Returns(true); - this.diagProcessor.Executor.Value.Initialize(this.dummyFilePath); - } + _diagProcessor.Executor!.Value.Initialize(_dummyFilePath); + } + + [TestMethod] + [DataRow("abc.txt;verbosity=normal=verbose")] // Multiple '=' in parameter + [DataRow("abc.txt;verbosity;key1=value1")] // No '=' in parameter + [DataRow("\"abst;dfsdc.txt\";verbosity=normal")] // Too many parameters + [DataRow("abs;dfsdc.txt;verbosity=normal")] // Too many parameters + public void EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(string argument) + { + string exceptionMessage = string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidDiagArgument, argument); + EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(argument, exceptionMessage); + } - [TestMethod] - [DataRow("abc.txt;verbosity=normal=verbose")] // Multiple '=' in parameter - [DataRow("abc.txt;verbosity;key1=value1")] // No '=' in parameter - [DataRow("\"abst;dfsdc.txt\";verbosity=normal")] // Too many parameters - [DataRow("abs;dfsdc.txt;verbosity=normal")] // Too many parameters - public void EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(string argument) + [TestMethod] + [DataRow("abc.txt")] + [DataRow("abc.txt;verbosity=normal")] + [DataRow("abc.txt;tracelevel=info;newkey=newvalue")] + [DataRow("\"abc.txt\";verbosity=normal;newkey=newvalue")] //escaped double quotes are allowed for file path. + [DataRow(";;abc.txt;;;;verbosity=normal;;;;")] + // Files with no extension are totally valid files. + // When we delegate to host or datacollector we change the name in GetTimestampedLogFile + // Path.ChangeExtension replaces the curent extension with our new one that is timestamp and + // the name of the target (e.g. host). When there is no extension it just adds it, so we do either: + // log.txt -> log.host.21-09-10_12-25-41_68765_5.txt + // log.my.txt -> log.my.host.21-09-10_12-25-50_55183_5.txt + // log -> log.host.21-09-10_12-25-27_94286_5 + [DataRow("log")] + [DataRow("log.log")] + public void EnableDiagArgumentProcessorExecutorShouldNotThrowIfValidArgument(string argument) + { + try { - string exceptionMessage = string.Format(CultureInfo.CurrentCulture, CommandLineResources.InvalidDiagArgument, argument); - EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(argument, exceptionMessage); + _diagProcessor.Executor!.Value.Initialize(argument); } - - [TestMethod] - [DataRow("abc.txt")] - [DataRow("abc.txt;verbosity=normal")] - [DataRow("abc.txt;tracelevel=info;newkey=newvalue")] - [DataRow("\"abc.txt\";verbosity=normal;newkey=newvalue")] //escaped double quotes are allowed for file path. - [DataRow(";;abc.txt;;;;verbosity=normal;;;;")] - // Files with no extension are totally valid files. - // When we delegate to host or datacollector we change the name in GetTimestampedLogFile - // Path.ChangeExtension replaces the curent extension with our new one that is timestamp and - // the name of the target (e.g. host). When there is no extension it just adds it, so we do either: - // log.txt -> log.host.21-09-10_12-25-41_68765_5.txt - // log.my.txt -> log.my.host.21-09-10_12-25-50_55183_5.txt - // log -> log.host.21-09-10_12-25-27_94286_5 - [DataRow("log")] - [DataRow("log.log")] - public void EnableDiagArgumentProcessorExecutorShouldNotThrowIfValidArgument(string argument) + catch (Exception ex) { - try - { - this.diagProcessor.Executor.Value.Initialize(argument); - } - catch (Exception ex) - { - Assert.Fail("Expected no exception, but got: " + ex.Message); - } + Assert.Fail("Expected no exception, but got: " + ex.Message); } + } - [TestMethod] - [DataRow("abc.txt;tracelevel=info;newkey=newvalue")] - [DataRow("abc.txt;tracelevel=info;")] - [DataRow("abc.txt;tracelevel=INfO")] - [DataRow("abc.txt;traCELevel=info")] - [DataRow("abc.txt;traCELevel=INfO")] - public void EnableDiagArgumentProcessorExecutorShouldInitializeTraceWithCorrectTraceLevel(string argument) - { - // Setting any trace level other than info. + [TestMethod] + [DataRow("abc.txt;tracelevel=info;newkey=newvalue")] + [DataRow("abc.txt;tracelevel=info;")] + [DataRow("abc.txt;tracelevel=INfO")] + [DataRow("abc.txt;traCELevel=info")] + [DataRow("abc.txt;traCELevel=INfO")] + public void EnableDiagArgumentProcessorExecutorShouldInitializeTraceWithCorrectTraceLevel(string argument) + { + // Setting any trace level other than info. #if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Verbose; + EqtTrace.TraceLevel = TraceLevel.Verbose; #else - EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; + EqtTrace.TraceLevel = PlatformTraceLevel.Verbose; #endif - this.diagProcessor.Executor.Value.Initialize(argument); - - Assert.AreEqual(TraceLevel.Info, (TraceLevel)EqtTrace.TraceLevel); - Assert.IsTrue(EqtTrace.LogFile.Contains("abc.txt")); - } - - [TestMethod] - public void EnableDiagArgumentProcessorExecutorShouldCreateDirectoryOfLogFileIfNotExists() - { - this.mockFileHelper.Setup(fh => fh.DirectoryExists(Path.GetDirectoryName(this.dummyFilePath))).Returns(false); + _diagProcessor.Executor!.Value.Initialize(argument); - this.diagProcessor.Executor.Value.Initialize(this.dummyFilePath); + Assert.AreEqual(TraceLevel.Info, (TraceLevel)EqtTrace.TraceLevel); + Assert.IsTrue(EqtTrace.LogFile?.Contains("abc.txt")); + } - this.mockFileHelper.Verify(fh => fh.CreateDirectory(Path.GetDirectoryName(this.dummyFilePath)), Times.Once); - } + [TestMethod] + public void EnableDiagArgumentProcessorExecutorShouldCreateDirectoryOfLogFileIfNotExists() + { + _mockFileHelper.Setup(fh => fh.DirectoryExists(Path.GetDirectoryName(_dummyFilePath)!)).Returns(false); - [TestMethod] - public void EnableDiagArgumentProcessorExecutorShouldNotCreateDirectoryIfAFileIsProvided() - { - this.diagProcessor.Executor.Value.Initialize("log.txt"); + _diagProcessor.Executor!.Value.Initialize(_dummyFilePath); - this.mockFileHelper.Verify(fh => fh.CreateDirectory(It.IsAny()), Times.Never); - } + _mockFileHelper.Verify(fh => fh.CreateDirectory(Path.GetDirectoryName(_dummyFilePath)!), Times.Once); + } - [TestMethod] - public void EnableDiagArgumentProcessorExecutorShouldDisableVerboseLoggingIfEqtTraceThowException() - { - this.mockFileHelper.Setup(fh => fh.DirectoryExists(Path.GetDirectoryName(this.dummyFilePath))).Returns(true); - this.diagProcessor.Executor.Value.Initialize(this.dummyFilePath); + [TestMethod] + public void EnableDiagArgumentProcessorExecutorShouldNotCreateDirectoryIfAFileIsProvided() + { + _diagProcessor.Executor!.Value.Initialize("log.txt"); - Assert.IsFalse(EqtTrace.IsVerboseEnabled); -#if NETFRAMEWORK - EqtTrace.TraceLevel = TraceLevel.Off; -#else - EqtTrace.TraceLevel = PlatformTraceLevel.Off; -#endif - } + _mockFileHelper.Verify(fh => fh.CreateDirectory(It.IsAny()), Times.Never); + } - private class TestableEnableDiagArgumentProcessor : EnableDiagArgumentProcessor + private class TestableEnableDiagArgumentProcessor : EnableDiagArgumentProcessor + { + /// + public TestableEnableDiagArgumentProcessor(IFileHelper fileHelper) + : base(fileHelper) { - /// - public TestableEnableDiagArgumentProcessor(IFileHelper fileHelper) - : base(fileHelper) - { - } } + } - private void EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(string argument, string exceptionMessage) - { - var e = Assert.ThrowsException(() => this.diagProcessor.Executor.Value.Initialize(argument)); - StringAssert.Contains(e.Message, exceptionMessage); - } + private void EnableDiagArgumentProcessorExecutorShouldThrowIfInvalidArgument(string argument, string exceptionMessage) + { + var e = Assert.ThrowsException(() => _diagProcessor.Executor!.Value.Initialize(argument)); + StringAssert.Contains(e.Message, exceptionMessage); } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/Processors/EnableLoggersArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/EnableLoggersArgumentProcessorTests.cs index c7c7d367b2..40ef827514 100644 --- a/test/vstest.console.UnitTests/Processors/EnableLoggersArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/EnableLoggersArgumentProcessorTests.cs @@ -1,92 +1,92 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors -{ - using System; - using System.Globalization; +using System; +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; - using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; - [TestClass] - public class EnableLoggersArgumentProcessorTests +[TestClass] +public class EnableLoggersArgumentProcessorTests +{ + [TestInitialize] + public void Initialize() { - [TestInitialize] - public void Initialize() - { - RunTestsArgumentProcessorTests.SetupMockExtensions(); - } + RunTestsArgumentProcessorTests.SetupMockExtensions(); + } - [TestMethod] - public void GetMetadataShouldReturnEnableLoggerArgumentProcessorCapabilities() - { - EnableLoggerArgumentProcessor processor = new EnableLoggerArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is EnableLoggerArgumentProcessorCapabilities); - } + [TestMethod] + public void GetMetadataShouldReturnEnableLoggerArgumentProcessorCapabilities() + { + EnableLoggerArgumentProcessor processor = new(); + Assert.IsTrue(processor.Metadata.Value is EnableLoggerArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecuterShouldReturnEnableLoggerArgumentExecutor() - { - EnableLoggerArgumentProcessor processor = new EnableLoggerArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is EnableLoggerArgumentExecutor); - } + [TestMethod] + public void GetExecuterShouldReturnEnableLoggerArgumentExecutor() + { + EnableLoggerArgumentProcessor processor = new(); + Assert.IsTrue(processor.Executor!.Value is EnableLoggerArgumentExecutor); + } - [TestMethod] - public void CapabilitiesShouldAppropriateProperties() - { - EnableLoggerArgumentProcessorCapabilities capabilities = new EnableLoggerArgumentProcessorCapabilities(); - Assert.AreEqual("/Logger", capabilities.CommandName); + [TestMethod] + public void CapabilitiesShouldAppropriateProperties() + { + EnableLoggerArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/Logger", capabilities.CommandName); #if NETFRAMEWORK - Assert.AreEqual("--logger|/logger:" + Environment.NewLine + " Specify a logger for test results. For example, to log results into a " + Environment.NewLine + " Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]" + Environment.NewLine + " Creates file in TestResults directory with given LogFileName." + Environment.NewLine + "" + Environment.NewLine + " Change the verbosity level in log messages for console logger as shown below" + Environment.NewLine + " Example: /logger:console;verbosity=" + Environment.NewLine + " Allowed values for verbosity: quiet, minimal, normal and detailed." + Environment.NewLine + "" + Environment.NewLine + " Change the diagnostic level prefix for console logger as shown below" + Environment.NewLine + " Example: /logger:console;prefix=" + Environment.NewLine + " More info on Console Logger here : https://aka.ms/console-logger", capabilities.HelpContentResourceName); + Assert.AreEqual("--logger|/logger:" + Environment.NewLine + " Specify a logger for test results. For example, to log results into a " + Environment.NewLine + " Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]" + Environment.NewLine + " Creates file in TestResults directory with given LogFileName." + Environment.NewLine + "" + Environment.NewLine + " Change the verbosity level in log messages for console logger as shown below" + Environment.NewLine + " Example: /logger:console;verbosity=" + Environment.NewLine + " Allowed values for verbosity: quiet, minimal, normal and detailed." + Environment.NewLine + "" + Environment.NewLine + " Change the diagnostic level prefix for console logger as shown below" + Environment.NewLine + " Example: /logger:console;prefix=" + Environment.NewLine + " More info on Console Logger here : https://aka.ms/console-logger", capabilities.HelpContentResourceName); #else - Assert.AreEqual("--logger|/logger:" + Environment.NewLine + " Specify a logger for test results. For example, to log results into a " + Environment.NewLine + " Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]" + Environment.NewLine + " Creates file in TestResults directory with given LogFileName." + Environment.NewLine + "" + Environment.NewLine + " Change the verbosity level in log messages for console logger as shown below" + Environment.NewLine + " Example: /logger:console;verbosity=" + Environment.NewLine + " Allowed values for verbosity: quiet, minimal, normal and detailed." + Environment.NewLine + "" + Environment.NewLine + " Change the diagnostic level prefix for console logger as shown below" + Environment.NewLine + " Example: /logger:console;prefix=" + Environment.NewLine + " More info on Console Logger here : https://aka.ms/console-logger", capabilities.HelpContentResourceName); + Assert.AreEqual("--logger|/logger:" + Environment.NewLine + " Specify a logger for test results. For example, to log results into a " + Environment.NewLine + " Visual Studio Test Results File (TRX) use /logger:trx[;LogFileName=]" + Environment.NewLine + " Creates file in TestResults directory with given LogFileName." + Environment.NewLine + "" + Environment.NewLine + " Change the verbosity level in log messages for console logger as shown below" + Environment.NewLine + " Example: /logger:console;verbosity=" + Environment.NewLine + " Allowed values for verbosity: quiet, minimal, normal and detailed." + Environment.NewLine + "" + Environment.NewLine + " Change the diagnostic level prefix for console logger as shown below" + Environment.NewLine + " Example: /logger:console;prefix=" + Environment.NewLine + " More info on Console Logger here : https://aka.ms/console-logger", capabilities.HelpContentResourceName); #endif - Assert.AreEqual(HelpContentPriority.EnableLoggerArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Logging, capabilities.Priority); + Assert.AreEqual(HelpContentPriority.EnableLoggerArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Logging, capabilities.Priority); - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - [DataRow(" ")] - [DataRow(null)] - [DataRow("TestLoggerExtension;==;;;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1")] - public void ExectorInitializeShouldThrowExceptionIfInvalidArgumentIsPassed(string argument) + [TestMethod] + [DataRow(" ")] + [DataRow(null)] + [DataRow("TestLoggerExtension;==;;;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1")] + public void ExectorInitializeShouldThrowExceptionIfInvalidArgumentIsPassed(string argument) + { + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + try { - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - try - { - executor.Initialize(argument); - } - catch (Exception e) - { - string exceptionMessage = string.Format(CultureInfo.CurrentUICulture, CommandLineResources.LoggerUriInvalid, argument); - Assert.IsTrue(e.GetType().Equals(typeof(CommandLineException))); - Assert.IsTrue(e.Message.Contains(exceptionMessage)); - } + executor.Initialize(argument); } - - [TestMethod] - public void ExecutorExecuteShouldReturnArgumentProcessorResultSuccess() + catch (Exception e) { - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - var result = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Success, result); + string exceptionMessage = string.Format(CultureInfo.CurrentCulture, CommandLineResources.LoggerUriInvalid, argument); + Assert.IsTrue(e.GetType().Equals(typeof(CommandLineException))); + Assert.IsTrue(e.Message.Contains(exceptionMessage)); } + } - [TestMethod] - public void ExecutorInitializeShouldAddLoggerWithFriendlyNameInRunSettingsIfNamePresentInArg() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorExecuteShouldReturnArgumentProcessorResultSuccess() + { + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + var result = executor.Execute(); + Assert.AreEqual(ArgumentProcessorResult.Success, result); + } + + [TestMethod] + public void ExecutorInitializeShouldAddLoggerWithFriendlyNameInRunSettingsIfNamePresentInArg() + { + string settingsXml = + @" @@ -98,15 +98,15 @@ public void ExecutorInitializeShouldAddLoggerWithFriendlyNameInRunSettingsIfName "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("DummyLoggerExtension"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("DummyLoggerExtension"); - string expectedSettingsXml = -@" + string expectedSettingsXml = + @" @@ -123,14 +123,14 @@ public void ExecutorInitializeShouldAddLoggerWithFriendlyNameInRunSettingsIfName "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); + } - [TestMethod] - public void ExecutorInitializeShouldAddLoggerWithUriInRunSettingsIfUriPresentInArg() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorInitializeShouldAddLoggerWithUriInRunSettingsIfUriPresentInArg() + { + string settingsXml = + @" @@ -142,15 +142,15 @@ public void ExecutorInitializeShouldAddLoggerWithUriInRunSettingsIfUriPresentInA "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("logger://DummyLoggerUri"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("logger://DummyLoggerUri"); - string expectedSettingsXml = -@" + string expectedSettingsXml = + @" @@ -167,14 +167,14 @@ public void ExecutorInitializeShouldAddLoggerWithUriInRunSettingsIfUriPresentInA "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); + } - [TestMethod] - public void ExecutorInitializeShouldCorrectlyAddLoggerParametersInRunSettings() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorInitializeShouldCorrectlyAddLoggerParametersInRunSettings() + { + string settingsXml = + @" @@ -186,15 +186,15 @@ public void ExecutorInitializeShouldCorrectlyAddLoggerParametersInRunSettings() "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1"); - string expectedSettingsXml = -@" + string expectedSettingsXml = + @" @@ -217,19 +217,19 @@ public void ExecutorInitializeShouldCorrectlyAddLoggerParametersInRunSettings() "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); + } - [TestMethod] - public void ExecutorInitializeShouldCorrectlyAddLoggerWhenRunSettingsNotPassed() - { - RunSettingsManager.Instance.SetActiveRunSettings(new RunSettings()); + [TestMethod] + public void ExecutorInitializeShouldCorrectlyAddLoggerWhenRunSettingsNotPassed() + { + RunSettingsManager.Instance.SetActiveRunSettings(new RunSettings()); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1"); - string expectedSettingsXml = - @" + string expectedSettingsXml = + @" @@ -241,14 +241,14 @@ public void ExecutorInitializeShouldCorrectlyAddLoggerWhenRunSettingsNotPassed() "; - Assert.IsTrue(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml.Contains(expectedSettingsXml)); - } + Assert.IsTrue(RunSettingsManager.Instance.ActiveRunSettings!.SettingsXml!.Contains(expectedSettingsXml)); + } - [TestMethod] - public void ExecutorInitializeShouldCorrectlyAddLoggerInRunSettingsWhenOtherLoggersAlreadyPresent() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorInitializeShouldCorrectlyAddLoggerInRunSettingsWhenOtherLoggersAlreadyPresent() + { + string settingsXml = + @" @@ -274,15 +274,15 @@ public void ExecutorInitializeShouldCorrectlyAddLoggerInRunSettingsWhenOtherLogg "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121130.1"); - string expectedSettingsXml = - @" + string expectedSettingsXml = + @" @@ -314,14 +314,14 @@ public void ExecutorInitializeShouldCorrectlyAddLoggerInRunSettingsWhenOtherLogg "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); + } - [TestMethod] - public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLoggerIfSame() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLoggerIfSame() + { + string settingsXml = + @" @@ -347,15 +347,15 @@ public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLogger "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("tempLogger2"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("tempLogger2"); - string expectedSettingsXml = - @" + string expectedSettingsXml = + @" @@ -380,14 +380,14 @@ public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLogger "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); + } - [TestMethod] - public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLoggerEvenIfCaseMismatch() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLoggerEvenIfCaseMismatch() + { + string settingsXml = + @" @@ -413,15 +413,15 @@ public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLogger "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("tempLoggER2"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("tempLoggER2"); - string expectedSettingsXml = - @" + string expectedSettingsXml = + @" @@ -446,14 +446,14 @@ public void ExecutorInitializeShouldPreferCommandLineLoggerOverRunSettingsLogger "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); + } - [TestMethod] - public void ExecutorInitializeShouldPreferCommandLineLoggerWithParamsOverRunSettingsLoggerIfSame() - { - string settingsXml = - @" + [TestMethod] + public void ExecutorInitializeShouldPreferCommandLineLoggerWithParamsOverRunSettingsLoggerIfSame() + { + string settingsXml = + @" @@ -487,15 +487,15 @@ public void ExecutorInitializeShouldPreferCommandLineLoggerWithParamsOverRunSett "; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(settingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(settingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); - executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollectionOverride;TeamProjectOverride=MyProject;BuildName=DailyBuild_20121130.1Override;NewAttr=value"); + var executor = new EnableLoggerArgumentExecutor(RunSettingsManager.Instance); + executor.Initialize("logger://DummyLoggerUri;Collection=http://localhost:8080/tfs/DefaultCollectionOverride;TeamProjectOverride=MyProject;BuildName=DailyBuild_20121130.1Override;NewAttr=value"); - string expectedSettingsXml = - @" + string expectedSettingsXml = + @" @@ -528,7 +528,6 @@ public void ExecutorInitializeShouldPreferCommandLineLoggerWithParamsOverRunSett "; - Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); - } + Assert.AreEqual(expectedSettingsXml, RunSettingsManager.Instance.ActiveRunSettings?.SettingsXml); } } diff --git a/test/vstest.console.UnitTests/Processors/EnvironmentArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/EnvironmentArgumentProcessorTests.cs index 524a9cb0d4..dd19bc886f 100644 --- a/test/vstest.console.UnitTests/Processors/EnvironmentArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/EnvironmentArgumentProcessorTests.cs @@ -1,205 +1,207 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System.Globalization; +using System.Linq; +using System.Xml.Linq; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.UnitTests.Processors; + +using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class EnvironmentArgumentProcessorTests { - using System; - using System.Linq; - using System.Xml.Linq; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using vstest.console.UnitTests.Processors; - using CommandLineResources = Microsoft.VisualStudio.TestPlatform.CommandLine.Resources.Resources; - - [TestClass] - public class EnvironmentArgumentProcessorTests + private const string DefaultRunSettings = + ""; + + private readonly TestableRunSettingsProvider _settingsProvider; + private readonly Mock _mockOutput; + private readonly CommandLineOptions _commandLineOptions; + + public EnvironmentArgumentProcessorTests() { - private const string DefaultRunSettings = - ""; + _commandLineOptions = CommandLineOptions.Instance; + _settingsProvider = new TestableRunSettingsProvider(); + _settingsProvider.UpdateRunSettings(DefaultRunSettings); + _mockOutput = new Mock(); + } - private TestableRunSettingsProvider settingsProvider; - private Mock mockOutput; - private CommandLineOptions commandLineOptions; + [TestCleanup] + public void Cleanup() + { + CommandLineOptions.Reset(); + } - [TestInitialize] - public void Initialize() - { - this.commandLineOptions = CommandLineOptions.Instance; - this.settingsProvider = new TestableRunSettingsProvider(); - this.settingsProvider.UpdateRunSettings(DefaultRunSettings); - this.mockOutput = new Mock(); - } + [TestMethod] + public void CapabilitiesShouldReturnAppropriateValues() + { + // Arrange & Act + var capabilities = new EnvironmentArgumentProcessor.ArgumentProcessorCapabilities(); + + // Assert + Assert.AreEqual("/Environment", capabilities.CommandName); + Assert.AreEqual("/e", capabilities.ShortCommandName); + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + Assert.AreEqual(HelpContentPriority.EnvironmentArgumentProcessorHelpPriority, capabilities.HelpPriority); + } - [TestCleanup] - public void Cleanup() - { - this.commandLineOptions.Reset(); - } + [TestMethod] + public void AppendsEnvironmentVariableToRunSettings() + { + // Arrange + var executor = GetExecutor(); - [TestMethod] - public void CapabilitiesShouldReturnAppropriateValues() - { - // Arrange & Act - var capabilities = new EnvironmentArgumentProcessor.ArgumentProcessorCapabilities(); - - // Assert - Assert.AreEqual("/Environment", capabilities.CommandName); - Assert.AreEqual("/e", capabilities.ShortCommandName); - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - Assert.AreEqual(HelpContentPriority.EnvironmentArgumentProcessorHelpPriority, capabilities.HelpPriority); - } + // Act + executor.Initialize("VARIABLE=VALUE"); - [TestMethod] - public void AppendsEnvironmentVariableToRunSettings() - { - // Arrange - var executor = GetExecutor(); + // Assert + var result = ParseSettingsXml(_settingsProvider); + var environmentVariables = result.Variables; + var inIsolation = result.InIsolation; - // Act - executor.Initialize("VARIABLE=VALUE"); + Assert.IsNotNull(environmentVariables, "Environment variable cannot found in RunSettings.xml."); + Assert.IsNotNull(inIsolation, "Isolation must be forced, an InIsolation entry was missing!"); - // Assert - var result = ParseSettingsXML(this.settingsProvider); - var environmentVariables = result.variables; - var inIsolation = result.inIsolation; - var variables = environmentVariables?.Elements()?.ToArray(); + var variables = environmentVariables.Elements().ToArray(); + Assert.AreEqual(1, variables.Length, "Environment variable count mismatched!"); - Assert.IsNotNull(environmentVariables, "Environment variable cannot found in RunSettings.xml."); - Assert.IsNotNull(inIsolation, "Isolation must be forced, an InIsolation entry was missing!"); - Assert.AreEqual(1, variables?.Length ?? 0, "Environment variable count mismatched!"); + Assert.AreEqual("true", inIsolation.Value, "Isolation must be forced, InIsolation is not set to true."); + Assert.AreEqual("VARIABLE", variables[0].Name.LocalName); + Assert.AreEqual("VALUE", variables[0].Value); - Assert.AreEqual("true", inIsolation.Value, "Isolation must be forced, InIsolation is not set to true."); - Assert.AreEqual("VARIABLE", variables[0].Name.LocalName); - Assert.AreEqual("VALUE", variables[0].Value); + } - } + [TestMethod] + public void AppendsMultipleEnvironmentVariablesToRunSettings() + { + // Arrange + var executor1 = GetExecutor(); + var executor2 = GetExecutor(); + var executor3 = GetExecutor(); - [TestMethod] - public void AppendsMultipleEnvironmentVariablesToRunSettings() - { - // Arrange - var executor1 = GetExecutor(); - var executor2 = GetExecutor(); - var executor3 = GetExecutor(); + // Act + executor1.Initialize("VARIABLE_ONE=VALUE"); + executor2.Initialize("VARIABLE_TWO=VALUE WITH SPACE"); + executor3.Initialize("VARIABLE_THREE=VALUE WITH SPACE;AND SEMICOLON"); - // Act - executor1.Initialize("VARIABLE_ONE=VALUE"); - executor2.Initialize("VARIABLE_TWO=VALUE WITH SPACE"); - executor3.Initialize("VARIABLE_THREE=VALUE WITH SPACE;AND SEMICOLON"); + // Assert + var result = ParseSettingsXml(_settingsProvider); + var environmentVariables = result.Variables; + var inIsolation = result.InIsolation; - // Assert - var result = ParseSettingsXML(this.settingsProvider); - var environmentVariables = result.variables; - var inIsolation = result.inIsolation; - var variables = environmentVariables?.Elements()?.ToArray(); + Assert.IsNotNull(environmentVariables, "Environment variable cannot found in RunSettings.xml."); + Assert.IsNotNull(inIsolation, "Isolation must be forced, an InIsolation entry was missing!"); - Assert.IsNotNull(environmentVariables, "Environment variable cannot found in RunSettings.xml."); - Assert.IsNotNull(inIsolation, "Isolation must be forced, an InIsolation entry was missing!"); + Assert.AreEqual("true", inIsolation.Value, "Isolation must be forced, InIsolation is not set to true."); + var variables = environmentVariables.Elements().ToArray(); + Assert.AreEqual(3, variables.Length, "Environment variable count mismatched!"); - Assert.AreEqual("true", inIsolation.Value, "Isolation must be forced, InIsolation is not set to true."); - Assert.AreEqual(3, variables?.Length ?? 0, "Environment variable count mismatched!"); + Assert.AreEqual("VARIABLE_ONE", variables[0].Name.LocalName); + Assert.AreEqual("VALUE", variables[0].Value); - Assert.AreEqual("VARIABLE_ONE", variables[0].Name.LocalName); - Assert.AreEqual("VALUE", variables[0].Value); + Assert.AreEqual("VARIABLE_TWO", variables[1].Name.LocalName); + Assert.AreEqual("VALUE WITH SPACE", variables[1].Value); - Assert.AreEqual("VARIABLE_TWO", variables[1].Name.LocalName); - Assert.AreEqual("VALUE WITH SPACE", variables[1].Value); + Assert.AreEqual("VARIABLE_THREE", variables[2].Name.LocalName); + Assert.AreEqual("VALUE WITH SPACE;AND SEMICOLON", variables[2].Value); + } - Assert.AreEqual("VARIABLE_THREE", variables[2].Name.LocalName); - Assert.AreEqual("VALUE WITH SPACE;AND SEMICOLON", variables[2].Value); - } + [TestMethod] + public void InIsolationValueShouldBeOverriden() + { + // Arrange + _commandLineOptions.InIsolation = false; + _settingsProvider.UpdateRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath, "false"); + var executor = GetExecutor(); - [TestMethod] - public void InIsolationValueShouldBeOverriden() - { - // Arrange - this.commandLineOptions.InIsolation = false; - this.settingsProvider.UpdateRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath, "false"); - var executor = GetExecutor(); + // Act + executor.Initialize("VARIABLE=VALUE"); - // Act - executor.Initialize("VARIABLE=VALUE"); + // Assert + var result = ParseSettingsXml(_settingsProvider); + var environmentVariables = result.Variables; + var inIsolation = result.InIsolation; - // Assert - var result = ParseSettingsXML(this.settingsProvider); - var environmentVariables = result.variables; - var inIsolation = result.inIsolation; - var variables = environmentVariables?.Elements()?.ToArray(); + Assert.IsNotNull(environmentVariables, "Environment variable cannot found in RunSettings.xml."); + Assert.IsNotNull(inIsolation, "Isolation must be forced, an InIsolation entry was missing!"); - Assert.IsNotNull(environmentVariables, "Environment variable cannot found in RunSettings.xml."); - Assert.IsNotNull(inIsolation, "Isolation must be forced, an InIsolation entry was missing!"); + Assert.AreEqual("true", inIsolation.Value, "Isolation must be forced, InIsolation is overriden to true."); + var variables = environmentVariables.Elements().ToArray(); + Assert.AreEqual(1, variables.Length, "Environment variable count mismatched!"); - Assert.AreEqual("true", inIsolation.Value, "Isolation must be forced, InIsolation is overriden to true."); - Assert.AreEqual(1, variables?.Length ?? 0, "Environment variable count mismatched!"); + Assert.AreEqual("VARIABLE", variables[0].Name.LocalName); + Assert.AreEqual("VALUE", variables[0].Value); + } - Assert.AreEqual("VARIABLE", variables[0].Name.LocalName); - Assert.AreEqual("VALUE", variables[0].Value); - } + [TestMethod] + public void ShouldWarnWhenAValueIsOverriden() + { + // Arrange + _settingsProvider.UpdateRunSettingsNode("RunConfiguration.EnvironmentVariables.VARIABLE", + "Initial value"); + var warningMessage = string.Format(CultureInfo.CurrentCulture, CommandLineResources.CommandLineWarning, + string.Format(CultureInfo.CurrentCulture, CommandLineResources.EnvironmentVariableXIsOverriden, "VARIABLE") + ); + _mockOutput.Setup(mock => + mock.WriteLine( + It.Is(message => message == warningMessage), + It.Is(level => level == OutputLevel.Warning) + ) + ).Verifiable(); + var executor = GetExecutor(); + + // Act + executor.Initialize("VARIABLE=New value"); + + // Assert + _mockOutput.VerifyAll(); + } - [TestMethod] - public void ShoudWarnWhenAValueIsOverriden() - { - // Arrange - this.settingsProvider.UpdateRunSettingsNode("RunConfiguration.EnvironmentVariables.VARIABLE", - "Initial value"); - var warningMessage = String.Format(CommandLineResources.CommandLineWarning, - String.Format(CommandLineResources.EnvironmentVariableXIsOverriden, "VARIABLE") - ); - this.mockOutput.Setup(mock => - mock.WriteLine( - It.Is(message => message == warningMessage), - It.Is(level => level == OutputLevel.Warning) - ) - ).Verifiable(); - var executor = GetExecutor(); - - // Act - executor.Initialize("VARIABLE=New value"); - - // Assert - this.mockOutput.VerifyAll(); - } + private static XmlParseResult ParseSettingsXml(IRunSettingsProvider provider) + { + var document = XDocument.Parse(provider.ActiveRunSettings!.SettingsXml!); - private XmlParseResult ParseSettingsXML(IRunSettingsProvider provider) - { - var document = XDocument.Parse(provider.ActiveRunSettings.SettingsXml); + var runConfiguration = document + ?.Root + ?.Element("RunConfiguration"); - var runConfiguration = document - ?.Root - ?.Element("RunConfiguration"); + var variables = runConfiguration?.Element("EnvironmentVariables"); + var inIsolation = runConfiguration?.Element("InIsolation"); - var variables = runConfiguration?.Element("EnvironmentVariables"); - var inIsolation = runConfiguration?.Element("InIsolation"); + return new XmlParseResult(variables, inIsolation); + } - return new XmlParseResult(variables, inIsolation); - } + private IArgumentExecutor GetExecutor() + { + return new EnvironmentArgumentProcessor.ArgumentExecutor( + _commandLineOptions, + _settingsProvider, + _mockOutput.Object + ); + } - private IArgumentExecutor GetExecutor() + private class XmlParseResult + { + public XmlParseResult(XElement? variables, XElement? inIsolation) { - return new EnvironmentArgumentProcessor.ArgumentExecutor( - this.commandLineOptions, - this.settingsProvider, - mockOutput.Object - ); + Variables = variables; + InIsolation = inIsolation; } - private class XmlParseResult - { - public XmlParseResult(XElement variables, XElement inIsolation) - { - this.variables = variables; - this.inIsolation = inIsolation; - } - - internal XElement variables; - internal XElement inIsolation; - } + internal readonly XElement? Variables; + internal readonly XElement? InIsolation; } } diff --git a/test/vstest.console.UnitTests/Processors/FrameworkArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/FrameworkArgumentProcessorTests.cs index 018638fd23..69d8e91974 100644 --- a/test/vstest.console.UnitTests/Processors/FrameworkArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/FrameworkArgumentProcessorTests.cs @@ -1,141 +1,138 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class FrameworkArgumentProcessorTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; - using vstest.console.UnitTests.Processors; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; + private readonly FrameworkArgumentExecutor _executor; + private readonly TestableRunSettingsProvider _runSettingsProvider; + + public FrameworkArgumentProcessorTests() + { + _runSettingsProvider = new TestableRunSettingsProvider(); + _executor = new FrameworkArgumentExecutor(CommandLineOptions.Instance, _runSettingsProvider); + } + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } + + [TestMethod] + public void GetMetadataShouldReturnFrameworkArgumentProcessorCapabilities() + { + var processor = new FrameworkArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is FrameworkArgumentProcessorCapabilities); + } + + [TestMethod] + public void GetExecuterShouldReturnFrameworkArgumentExecutor() + { + var processor = new FrameworkArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is FrameworkArgumentExecutor); + } + + #region FrameworkArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new FrameworkArgumentProcessorCapabilities(); + Assert.AreEqual("/Framework", capabilities.CommandName); + StringAssert.Contains(capabilities.HelpContentResourceName, "Valid values are \".NETFramework,Version=v4.5.1\", \".NETCoreApp,Version=v1.0\""); + + Assert.AreEqual(HelpContentPriority.FrameworkArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + #region FrameworkArgumentExecutor Initialize tests + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNull() + { + + ExceptionUtilities.ThrowsException( + () => _executor.Initialize(null), + "The /Framework argument requires the target .Net Framework version for the test run. Example: /Framework:\".NETFramework,Version=v4.5.1\""); + } + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsEmpty() + { + ExceptionUtilities.ThrowsException( + () => _executor.Initialize(" "), + "The /Framework argument requires the target .Net Framework version for the test run. Example: /Framework:\".NETFramework,Version=v4.5.1\""); + } - using ExceptionUtilities = Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.ExceptionUtilities; + [TestMethod] + public void InitializeShouldThrowIfArgumentIsInvalid() + { + ExceptionUtilities.ThrowsException( + () => _executor.Initialize("foo"), + "Invalid .Net Framework version:{0}. Please give the fullname of the TargetFramework(Example: .NETCoreApp,Version=v2.0). Other supported .Net Framework versions are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.", + "foo"); + } - [TestClass] - public class FrameworkArgumentProcessorTests + [TestMethod] + public void InitializeShouldSetCommandLineOptionsAndRunSettingsFramework() { - private FrameworkArgumentExecutor executor; - private TestableRunSettingsProvider runSettingsProvider; - - [TestInitialize] - public void Init() - { - this.runSettingsProvider = new TestableRunSettingsProvider(); - this.executor = new FrameworkArgumentExecutor(CommandLineOptions.Instance, runSettingsProvider); - } - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } - - [TestMethod] - public void GetMetadataShouldReturnFrameworkArgumentProcessorCapabilities() - { - var processor = new FrameworkArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is FrameworkArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnFrameworkArgumentExecutor() - { - var processor = new FrameworkArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is FrameworkArgumentExecutor); - } - - #region FrameworkArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new FrameworkArgumentProcessorCapabilities(); - Assert.AreEqual("/Framework", capabilities.CommandName); - StringAssert.Contains(capabilities.HelpContentResourceName, "Valid values are \".NETFramework,Version=v4.5.1\", \".NETCoreApp,Version=v1.0\""); - - Assert.AreEqual(HelpContentPriority.FrameworkArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - #region FrameworkArgumentExecutor Initialize tests - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNull() - { - - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize(null), - "The /Framework argument requires the target .Net Framework version for the test run. Example: /Framework:\".NETFramework,Version=v4.5.1\""); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsEmpty() - { - ExceptionUtilities.ThrowsException( - () => executor.Initialize(" "), - "The /Framework argument requires the target .Net Framework version for the test run. Example: /Framework:\".NETFramework,Version=v4.5.1\""); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsInvalid() - { - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize("foo"), - "Invalid .Net Framework version:{0}. Please give the fullname of the TargetFramework(Example: .NETCoreApp,Version=v2.0). Other supported .Net Framework versions are Framework40, Framework45, FrameworkCore10 and FrameworkUap10.", - "foo"); - } - - [TestMethod] - public void InitializeShouldSetCommandLineOptionsAndRunSettingsFramework() - { - this.executor.Initialize(".NETCoreApp,Version=v1.0"); - Assert.AreEqual(".NETCoreApp,Version=v1.0", CommandLineOptions.Instance.TargetFrameworkVersion.Name); - Assert.AreEqual(".NETCoreApp,Version=v1.0", this.runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); - } - - [TestMethod] - public void InitializeShouldSetCommandLineOptionsFrameworkForOlderFrameworks() - { - this.executor.Initialize("Framework35"); - Assert.AreEqual(".NETFramework,Version=v3.5", CommandLineOptions.Instance.TargetFrameworkVersion.Name); - Assert.AreEqual(".NETFramework,Version=v3.5", this.runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); - } - - [TestMethod] - public void InitializeShouldSetCommandLineOptionsFrameworkForCaseInsensitiveFramework() - { - this.executor.Initialize(".netcoreApp,Version=v1.0"); - Assert.AreEqual(".NETCoreApp,Version=v1.0", CommandLineOptions.Instance.TargetFrameworkVersion.Name); - Assert.AreEqual(".NETCoreApp,Version=v1.0", this.runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); - } - - [TestMethod] - public void InitializeShouldNotSetFrameworkIfSettingsFileIsLegacy() - { - this.runSettingsProvider.UpdateRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath, nameof(FrameworkVersion.Framework45)); - CommandLineOptions.Instance.SettingsFile = @"c:\tmp\settings.testsettings"; - this.executor.Initialize(".NETFramework,Version=v3.5"); - Assert.AreEqual(".NETFramework,Version=v3.5", CommandLineOptions.Instance.TargetFrameworkVersion.Name); - Assert.AreEqual(nameof(FrameworkVersion.Framework45), this.runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); - } - - #endregion - - #region FrameworkArgumentExecutor Execute tests - - [TestMethod] - public void ExecuteShouldReturnSuccess() - { - Assert.AreEqual(ArgumentProcessorResult.Success, this.executor.Execute()); - } - - #endregion + _executor.Initialize(".NETCoreApp,Version=v1.0"); + Assert.AreEqual(".NETCoreApp,Version=v1.0", CommandLineOptions.Instance.TargetFrameworkVersion!.Name); + Assert.AreEqual(".NETCoreApp,Version=v1.0", _runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); + } + [TestMethod] + public void InitializeShouldSetCommandLineOptionsFrameworkForOlderFrameworks() + { + _executor.Initialize("Framework35"); + Assert.AreEqual(".NETFramework,Version=v3.5", CommandLineOptions.Instance.TargetFrameworkVersion!.Name); + Assert.AreEqual(".NETFramework,Version=v3.5", _runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); } + + [TestMethod] + public void InitializeShouldSetCommandLineOptionsFrameworkForCaseInsensitiveFramework() + { + _executor.Initialize(".netcoreApp,Version=v1.0"); + Assert.AreEqual(".NETCoreApp,Version=v1.0", CommandLineOptions.Instance.TargetFrameworkVersion!.Name); + Assert.AreEqual(".NETCoreApp,Version=v1.0", _runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); + } + + [TestMethod] + public void InitializeShouldNotSetFrameworkIfSettingsFileIsLegacy() + { + _runSettingsProvider.UpdateRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath, nameof(FrameworkVersion.Framework45)); + CommandLineOptions.Instance.SettingsFile = @"c:\tmp\settings.testsettings"; + _executor.Initialize(".NETFramework,Version=v3.5"); + Assert.AreEqual(".NETFramework,Version=v3.5", CommandLineOptions.Instance.TargetFrameworkVersion!.Name); + Assert.AreEqual(nameof(FrameworkVersion.Framework45), _runSettingsProvider.QueryRunSettingsNode(FrameworkArgumentExecutor.RunSettingsPath)); + } + + #endregion + + #region FrameworkArgumentExecutor Execute tests + + [TestMethod] + public void ExecuteShouldReturnSuccess() + { + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); + } + + #endregion + } diff --git a/test/vstest.console.UnitTests/Processors/HelpArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/HelpArgumentProcessorTests.cs index 9dd22f9691..333d6ece1c 100644 --- a/test/vstest.console.UnitTests/Processors/HelpArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/HelpArgumentProcessorTests.cs @@ -1,101 +1,101 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Utilities; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class HelpArgumentProcessorTests { - using System; - using System.Collections.Generic; + /// + /// The help argument processor get metadata should return help argument processor capabilities. + /// + [TestMethod] + public void GetMetadataShouldReturnHelpArgumentProcessorCapabilities() + { + HelpArgumentProcessor processor = new(); + Assert.IsTrue(processor.Metadata.Value is HelpArgumentProcessorCapabilities); + } + + /// + /// The help argument processor get executer should return help argument processor capabilities. + /// + [TestMethod] + public void GetExecuterShouldReturnHelpArgumentProcessorCapabilities() + { + HelpArgumentProcessor processor = new(); + Assert.IsTrue(processor.Executor!.Value is HelpArgumentExecutor); + } - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; + #region HelpArgumentProcessorCapabilitiesTests + + [TestMethod] + public void CapabilitiesShouldAppropriateProperties() + { + HelpArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/Help", capabilities.CommandName); + Assert.AreEqual("-?|--Help|/?|/Help" + Environment.NewLine + " Display this usage message.", capabilities.HelpContentResourceName); + + Assert.AreEqual(HelpContentPriority.HelpArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Help, capabilities.Priority); + + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + [TestMethod] + public void ExecuterExecuteReturnArgumentProcessorResultAbort() + { + HelpArgumentExecutor executor = new(); + var result = executor.Execute(); + Assert.AreEqual(ArgumentProcessorResult.Abort, result); + } + + [TestMethod] + public void ExecuterExecuteWritesAppropriateDataToConsole() + { + HelpArgumentExecutor executor = new(); + var output = new DummyConsoleOutput(); + executor.Output = output; + _ = executor.Execute(); + Assert.IsTrue(output.Lines.Contains("Usage: vstest.console.exe [Arguments] [Options] [[--] ...]]")); + Assert.IsTrue(output.Lines.Contains("Arguments:")); + Assert.IsTrue(output.Lines.Contains("Options:")); + Assert.IsTrue(output.Lines.Contains("Description: Runs tests from the specified files.")); + Assert.IsTrue(output.Lines.Contains(" To run tests:" + Environment.NewLine + " >vstest.console.exe tests.dll " + Environment.NewLine + " To run tests with additional settings such as data collectors:" + Environment.NewLine + " >vstest.console.exe tests.dll /Settings:Local.RunSettings")); + } +} + +internal class DummyConsoleOutput : IOutput +{ + /// + /// The lines. + /// + internal List Lines; + + public DummyConsoleOutput() + { + Lines = new List(); + } - [TestClass] - public class HelpArgumentProcessorTests + public void WriteLine(string? message, OutputLevel level) { - /// - /// The help argument processor get metadata should return help argument processor capabilities. - /// - [TestMethod] - public void GetMetadataShouldReturnHelpArgumentProcessorCapabilities() - { - HelpArgumentProcessor processor = new HelpArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is HelpArgumentProcessorCapabilities); - } - - /// - /// The help argument processor get executer should return help argument processor capabilities. - /// - [TestMethod] - public void GetExecuterShouldReturnHelpArgumentProcessorCapabilities() - { - HelpArgumentProcessor processor = new HelpArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is HelpArgumentExecutor); - } - - #region HelpArgumentProcessorCapabilitiesTests - - [TestMethod] - public void CapabilitiesShouldAppropriateProperties() - { - HelpArgumentProcessorCapabilities capabilities = new HelpArgumentProcessorCapabilities(); - Assert.AreEqual("/Help", capabilities.CommandName); - Assert.AreEqual("-?|--Help|/?|/Help" + Environment.NewLine + " Display this usage message.", capabilities.HelpContentResourceName); - - Assert.AreEqual(HelpContentPriority.HelpArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Help, capabilities.Priority); - - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - [TestMethod] - public void ExecuterExecuteReturnArgumentProcessorResultAbort() - { - HelpArgumentExecutor executor = new HelpArgumentExecutor(); - var result = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Abort, result); - } - - [TestMethod] - public void ExecuterExecuteWritesAppropriateDataToConsole() - { - HelpArgumentExecutor executor = new HelpArgumentExecutor(); - var output = new DummyConsoleOutput(); - executor.Output = output; - var result = executor.Execute(); - Assert.IsTrue(output.Lines.Contains("Usage: vstest.console.exe [Arguments] [Options] [[--] ...]]")); - Assert.IsTrue(output.Lines.Contains("Arguments:")); - Assert.IsTrue(output.Lines.Contains("Options:")); - Assert.IsTrue(output.Lines.Contains("Description: Runs tests from the specified files.")); - Assert.IsTrue(output.Lines.Contains(" To run tests:" + Environment.NewLine + " >vstest.console.exe tests.dll " + Environment.NewLine + " To run tests with additional settings such as data collectors:" + Environment.NewLine + " >vstest.console.exe tests.dll /Settings:Local.RunSettings")); - } + Lines.Add(message); } - internal class DummyConsoleOutput : IOutput + public void Write(string? message, OutputLevel level) { - /// - /// The lines. - /// - internal List Lines; - - public DummyConsoleOutput() - { - this.Lines = new List(); - } - - public void WriteLine(string message, OutputLevel level) - { - this.Lines.Add(message); - } - - public void Write(string message, OutputLevel level) - { - throw new System.NotImplementedException(); - } + throw new NotImplementedException(); } } diff --git a/test/vstest.console.UnitTests/Processors/InIsolationArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/InIsolationArgumentProcessorTests.cs index 59632690eb..2889fe8e0f 100644 --- a/test/vstest.console.UnitTests/Processors/InIsolationArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/InIsolationArgumentProcessorTests.cs @@ -1,85 +1,83 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors -{ - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using System; - using vstest.console.UnitTests.Processors; +using System; - using ExceptionUtilities = Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.ExceptionUtilities; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class InIsolationArgumentProcessorTests - { - private InIsolationArgumentExecutor executor; - private TestableRunSettingsProvider runSettingsProvider; +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class InIsolationArgumentProcessorTests +{ + private readonly InIsolationArgumentExecutor _executor; + private readonly TestableRunSettingsProvider _runSettingsProvider; - [TestInitialize] - public void Init() - { - this.runSettingsProvider = new TestableRunSettingsProvider(); - this.executor = new InIsolationArgumentExecutor(CommandLineOptions.Instance, this.runSettingsProvider); - } + public InIsolationArgumentProcessorTests() + { + _runSettingsProvider = new TestableRunSettingsProvider(); + _executor = new InIsolationArgumentExecutor(CommandLineOptions.Instance, _runSettingsProvider); + } - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } - [TestMethod] - public void GetMetadataShouldReturnInProcessArgumentProcessorCapabilities() - { - var processor = new InIsolationArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is InIsolationArgumentProcessorCapabilities); - } + [TestMethod] + public void GetMetadataShouldReturnInProcessArgumentProcessorCapabilities() + { + var processor = new InIsolationArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is InIsolationArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecuterShouldReturnInProcessArgumentExecutor() - { - var processor = new InIsolationArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is InIsolationArgumentExecutor); - } + [TestMethod] + public void GetExecuterShouldReturnInProcessArgumentExecutor() + { + var processor = new InIsolationArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is InIsolationArgumentExecutor); + } - [TestMethod] - public void InIsolationArgumentProcessorMetadataShouldProvideAppropriateCapabilities() - { - var isolationProcessor = new InIsolationArgumentProcessor(); - Assert.IsFalse(isolationProcessor.Metadata.Value.AllowMultiple); - Assert.IsFalse(isolationProcessor.Metadata.Value.AlwaysExecute); - Assert.IsFalse(isolationProcessor.Metadata.Value.IsAction); - Assert.IsFalse(isolationProcessor.Metadata.Value.IsSpecialCommand); - Assert.AreEqual(InIsolationArgumentProcessor.CommandName, isolationProcessor.Metadata.Value.CommandName); - Assert.IsNull(isolationProcessor.Metadata.Value.ShortCommandName); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, isolationProcessor.Metadata.Value.Priority); - Assert.AreEqual(HelpContentPriority.InIsolationArgumentProcessorHelpPriority, isolationProcessor.Metadata.Value.HelpPriority); - Assert.AreEqual("--InIsolation|/InIsolation" + Environment.NewLine + " Runs the tests in an isolated process. This makes vstest.console.exe " + Environment.NewLine + " process less likely to be stopped on an error in the tests, but tests " + Environment.NewLine + " may run slower.", isolationProcessor.Metadata.Value.HelpContentResourceName); - } + [TestMethod] + public void InIsolationArgumentProcessorMetadataShouldProvideAppropriateCapabilities() + { + var isolationProcessor = new InIsolationArgumentProcessor(); + Assert.IsFalse(isolationProcessor.Metadata.Value.AllowMultiple); + Assert.IsFalse(isolationProcessor.Metadata.Value.AlwaysExecute); + Assert.IsFalse(isolationProcessor.Metadata.Value.IsAction); + Assert.IsFalse(isolationProcessor.Metadata.Value.IsSpecialCommand); + Assert.AreEqual(InIsolationArgumentProcessor.CommandName, isolationProcessor.Metadata.Value.CommandName); + Assert.IsNull(isolationProcessor.Metadata.Value.ShortCommandName); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, isolationProcessor.Metadata.Value.Priority); + Assert.AreEqual(HelpContentPriority.InIsolationArgumentProcessorHelpPriority, isolationProcessor.Metadata.Value.HelpPriority); + Assert.AreEqual("--InIsolation|/InIsolation" + Environment.NewLine + " Runs the tests in an isolated process. This makes vstest.console.exe " + Environment.NewLine + " process less likely to be stopped on an error in the tests, but tests " + Environment.NewLine + " may run slower.", isolationProcessor.Metadata.Value.HelpContentResourceName); + } - [TestMethod] - public void InIsolationArgumentProcessorExecutorShouldThrowIfArgumentIsProvided() - { - // InProcess should not have any values or arguments - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize("true"), - "Argument true is not expected in the 'InIsolation' command. Specify the command without the argument (Example: vstest.console.exe myTests.dll /InIsolation) and try again."); - } + [TestMethod] + public void InIsolationArgumentProcessorExecutorShouldThrowIfArgumentIsProvided() + { + // InProcess should not have any values or arguments + ExceptionUtilities.ThrowsException( + () => _executor.Initialize("true"), + "Argument true is not expected in the 'InIsolation' command. Specify the command without the argument (Example: vstest.console.exe myTests.dll /InIsolation) and try again."); + } - [TestMethod] - public void InitializeShouldSetInIsolationValue() - { - this.executor.Initialize(null); - Assert.IsTrue(CommandLineOptions.Instance.InIsolation, "InProcess option must be set to true."); - Assert.AreEqual("true", this.runSettingsProvider.QueryRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath)); - } + [TestMethod] + public void InitializeShouldSetInIsolationValue() + { + _executor.Initialize(null); + Assert.IsTrue(CommandLineOptions.Instance.InIsolation, "InProcess option must be set to true."); + Assert.AreEqual("true", _runSettingsProvider.QueryRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath)); + } - [TestMethod] - public void ExecuteShouldReturnSuccess() - { - Assert.AreEqual(ArgumentProcessorResult.Success, this.executor.Execute()); - } + [TestMethod] + public void ExecuteShouldReturnSuccess() + { + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/Processors/ListFullyQualifiedTestsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ListFullyQualifiedTestsArgumentProcessorTests.cs index 63309d5341..810aad5463 100644 --- a/test/vstest.console.UnitTests/Processors/ListFullyQualifiedTestsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ListFullyQualifiedTestsArgumentProcessorTests.cs @@ -1,343 +1,343 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Versioning; +using System.Threading.Tasks; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.Client; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +// +// Tests for ListFullyQualifiedTestsArgumentProcessor +// +[TestClass] +public class ListFullyQualifiedTestsArgumentProcessorTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Runtime.Versioning; - using System.Threading.Tasks; - - using CoreUtilities.Tracing.Interfaces; - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.VisualStudio.TestPlatform.Client; - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using ObjectModel; - using ObjectModel.Client; - using TestPlatform.Utilities; - using TestPlatformHelpers; - using vstest.console.Internal; - using vstest.console.UnitTests.Processors; - - // - // Tests for ListFullyQualifiedTestsArgumentProcessor - // - [TestClass] - public class ListFullyQualifiedTestsArgumentProcessorTests + private readonly Mock _mockFileHelper; + private readonly Mock _mockAssemblyMetadataProvider; + private readonly InferHelper _inferHelper; + private readonly string _dummyTestFilePath = "DummyTest.dll"; + private readonly string _dummyFilePath = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.txt"); + private readonly Mock _mockTestPlatformEventSource; + private readonly Task _mockMetricsPublisherTask; + private readonly Mock _mockMetricsPublisher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockAttachmentsProcessingManager; + private readonly Mock _mockEnvironment; + private readonly Mock _mockEnvironmentVariableHelper; + + private static ListFullyQualifiedTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager, IOutput? output) { - private readonly Mock mockFileHelper; - private Mock mockAssemblyMetadataProvider; - private InferHelper inferHelper; - private string dummyTestFilePath = "DummyTest.dll"; - private string dummyFilePath = Path.Combine(Path.GetTempPath(), $"{System.Guid.NewGuid()}.txt"); - private readonly Mock mockTestPlatformEventSource; - private Task mockMetricsPublisherTask; - private Mock mockMetricsPublisher; - private Mock mockProcessHelper; - private Mock mockAttachmentsProcessingManager; - - private static ListFullyQualifiedTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager, IOutput output) - { - var runSettingsProvider = new TestableRunSettingsProvider(); - runSettingsProvider.AddDefaultRunSettings(); - var listFullyQualifiedTestsArgumentExecutor = - new ListFullyQualifiedTestsArgumentExecutor( - CommandLineOptions.Instance, - runSettingsProvider, - testRequestManager, - output ?? ConsoleOutput.Instance); - return listFullyQualifiedTestsArgumentExecutor; - } - - [TestCleanup] - public void Cleanup() - { - File.Delete(dummyFilePath); - CommandLineOptions.Instance.Reset(); - } + var runSettingsProvider = new TestableRunSettingsProvider(); + runSettingsProvider.AddDefaultRunSettings(); + var listFullyQualifiedTestsArgumentExecutor = + new ListFullyQualifiedTestsArgumentExecutor( + CommandLineOptions.Instance, + runSettingsProvider, + testRequestManager, + output ?? ConsoleOutput.Instance); + return listFullyQualifiedTestsArgumentExecutor; + } - public ListFullyQualifiedTestsArgumentProcessorTests() - { - this.mockFileHelper = new Mock(); - this.mockFileHelper.Setup(fh => fh.Exists(this.dummyTestFilePath)).Returns(true); - this.mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); - this.mockMetricsPublisher = new Mock(); - this.mockMetricsPublisherTask = Task.FromResult(this.mockMetricsPublisher.Object); - this.mockTestPlatformEventSource = new Mock(); - this.mockAssemblyMetadataProvider = new Mock(); - this.mockAssemblyMetadataProvider.Setup(x => x.GetArchitecture(It.IsAny())).Returns(Architecture.X64); - this.mockAssemblyMetadataProvider.Setup(x => x.GetFrameWork(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); - this.inferHelper = new InferHelper(this.mockAssemblyMetadataProvider.Object); - this.mockProcessHelper = new Mock(); - this.mockAttachmentsProcessingManager = new Mock(); - } - - /// - /// The help argument processor get metadata should return help argument processor capabilities. - /// - [TestMethod] - public void GetMetadataShouldReturnListFullyQualifiedTestsArgumentProcessorCapabilities() - { - var processor = new ListTestsArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ListTestsArgumentProcessorCapabilities); - } - - /// - /// The help argument processor get executer should return help argument processor capabilities. - /// - [TestMethod] - public void GetExecuterShouldReturnListFullyQualifiedTestsArgumentProcessorCapabilities() - { - var processor = new ListFullyQualifiedTestsArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is ListFullyQualifiedTestsArgumentExecutor); - } + [TestCleanup] + public void Cleanup() + { + File.Delete(_dummyFilePath); + CommandLineOptions.Reset(); + } - #region ListTestsArgumentProcessorCapabilitiesTests + public ListFullyQualifiedTestsArgumentProcessorTests() + { + _mockFileHelper = new Mock(); + _mockFileHelper.Setup(fh => fh.Exists(_dummyTestFilePath)).Returns(true); + _mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); + _mockMetricsPublisher = new Mock(); + _mockMetricsPublisherTask = Task.FromResult(_mockMetricsPublisher.Object); + _mockTestPlatformEventSource = new Mock(); + _mockAssemblyMetadataProvider = new Mock(); + _mockAssemblyMetadataProvider.Setup(x => x.GetArchitecture(It.IsAny())).Returns(Architecture.X64); + _mockAssemblyMetadataProvider.Setup(x => x.GetFrameworkName(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); + _inferHelper = new InferHelper(_mockAssemblyMetadataProvider.Object); + _mockProcessHelper = new Mock(); + _mockAttachmentsProcessingManager = new Mock(); + _mockEnvironment = new Mock(); + _mockEnvironmentVariableHelper = new Mock(); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new ListFullyQualifiedTestsArgumentProcessorCapabilities(); - Assert.AreEqual("/ListFullyQualifiedTests", capabilities.CommandName); + /// + /// The help argument processor get metadata should return help argument processor capabilities. + /// + [TestMethod] + public void GetMetadataShouldReturnListFullyQualifiedTestsArgumentProcessorCapabilities() + { + var processor = new ListTestsArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is ListTestsArgumentProcessorCapabilities); + } - Assert.IsTrue(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + /// + /// The help argument processor get executer should return help argument processor capabilities. + /// + [TestMethod] + public void GetExecuterShouldReturnListFullyQualifiedTestsArgumentProcessorCapabilities() + { + var processor = new ListFullyQualifiedTestsArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is ListFullyQualifiedTestsArgumentExecutor); + } - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - #endregion + #region ListTestsArgumentProcessorCapabilitiesTests - #region ListTestsArgumentExecutorTests + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new ListFullyQualifiedTestsArgumentProcessorCapabilities(); + Assert.AreEqual("/ListFullyQualifiedTests", capabilities.CommandName); - [TestMethod] - public void ExecutorInitializeWithValidSourceShouldAddItToTestSources() - { - CommandLineOptions.Instance.FileHelper = this.mockFileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, this.mockFileHelper.Object); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager, null); + Assert.IsTrue(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - executor.Initialize(this.dummyTestFilePath); + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + #endregion - Assert.IsTrue(Enumerable.Contains(CommandLineOptions.Instance.Sources, this.dummyTestFilePath)); - } + #region ListTestsArgumentExecutorTests - [TestMethod] - public void ExecutorExecuteForNoSourcesShouldReturnFail() - { - CommandLineOptions.Instance.Reset(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager, null); + [TestMethod] + public void ExecutorInitializeWithValidSourceShouldAddItToTestSources() + { + CommandLineOptions.Instance.FileHelper = _mockFileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, _mockFileHelper.Object); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager, null); - Assert.ThrowsException(() => executor.Execute()); - } + executor.Initialize(_dummyTestFilePath); - [TestMethod] - public void ExecutorExecuteShouldThrowTestPlatformException() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + Assert.IsTrue(Enumerable.Contains(CommandLineOptions.Instance.Sources, _dummyTestFilePath)); + } - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + [TestMethod] + public void ExecutorExecuteForNoSourcesShouldReturnFail() + { + CommandLineOptions.Reset(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager, null); - this.ResetAndAddSourceToCommandLineOptions(true); + Assert.ThrowsException(() => executor.Execute()); + } - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); + [TestMethod] + public void ExecutorExecuteShouldThrowTestPlatformException() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - var executor = GetExecutor(testRequestManager, null); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - Assert.ThrowsException(() => executor.Execute()); - } + ResetAndAddSourceToCommandLineOptions(true); - [TestMethod] - public void ExecutorExecuteShouldThrowSettingsException() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new SettingsException("DummySettingsException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(true); + var executor = GetExecutor(testRequestManager, null); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); + Assert.ThrowsException(() => executor.Execute()); + } - var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); + [TestMethod] + public void ExecutorExecuteShouldThrowSettingsException() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); - } + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new SettingsException("DummySettingsException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + ResetAndAddSourceToCommandLineOptions(true); - [TestMethod] - public void ExecutorExecuteShouldThrowInvalidOperationException() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); - this.ResetAndAddSourceToCommandLineOptions(true); + Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); + } + [TestMethod] + public void ExecutorExecuteShouldThrowInvalidOperationException() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); + ResetAndAddSourceToCommandLineOptions(true); - Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); - } - [TestMethod] - public void ExecutorExecuteShouldThrowOtherExceptions() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new Exception("DummyException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); - this.ResetAndAddSourceToCommandLineOptions(true); + Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); + } - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); + [TestMethod] + public void ExecutorExecuteShouldThrowOtherExceptions() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - var executor = GetExecutor(testRequestManager, null); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new Exception("DummyException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - Assert.ThrowsException(() => executor.Execute()); - } + ResetAndAddSourceToCommandLineOptions(true); - [TestMethod] - public void ExecutorExecuteShouldOutputDiscoveredTestsAndReturnSuccess() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); - this.RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + var executor = GetExecutor(testRequestManager, null); - mockDiscoveryRequest.Verify(dr => dr.DiscoverAsync(), Times.Once); + Assert.ThrowsException(() => executor.Execute()); + } - var fileOutput = File.ReadAllLines(this.dummyFilePath); - Assert.IsTrue(fileOutput.Length == 2); - Assert.IsTrue(fileOutput.Contains("Test1")); - Assert.IsTrue(fileOutput.Contains("Test2")); - } + [TestMethod] + public void ExecutorExecuteShouldOutputDiscoveredTestsAndReturnSuccess() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - [TestMethod] - public void DiscoveryShouldFilterCategoryTestsAndReturnSuccess() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); - this.RunListFullyQualifiedTestArgumentProcessorWithTraits(mockDiscoveryRequest, mockConsoleOutput); + mockDiscoveryRequest.Verify(dr => dr.DiscoverAsync(), Times.Once); - mockDiscoveryRequest.Verify(dr => dr.DiscoverAsync(), Times.Once); + var fileOutput = File.ReadAllLines(_dummyFilePath); + Assert.IsTrue(fileOutput.Length == 2); + Assert.IsTrue(fileOutput.Contains("Test1")); + Assert.IsTrue(fileOutput.Contains("Test2")); + } - var fileOutput = File.ReadAllLines(this.dummyFilePath); - Assert.IsTrue(fileOutput.Length == 1); - Assert.IsTrue(fileOutput.Contains("Test1")); - Assert.IsFalse(fileOutput.Contains("Test2")); - } + [TestMethod] + public void DiscoveryShouldFilterCategoryTestsAndReturnSuccess() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - [ExpectedException(typeof(CommandLineException))] - [TestMethod] - public void ExecutorExecuteShouldThrowWhenListFullyQualifiedTestsTargetPathIsEmpty() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + RunListFullyQualifiedTestArgumentProcessorWithTraits(mockDiscoveryRequest, mockConsoleOutput); - this.RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput, false); - } + mockDiscoveryRequest.Verify(dr => dr.DiscoverAsync(), Times.Once); - [TestMethod] - public void ListFullyQualifiedTestsArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStart() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + var fileOutput = File.ReadAllLines(_dummyFilePath); + Assert.IsTrue(fileOutput.Length == 1); + Assert.IsTrue(fileOutput.Contains("Test1")); + Assert.IsFalse(fileOutput.Contains("Test2")); + } - this.RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + [ExpectedException(typeof(CommandLineException))] + [TestMethod] + public void ExecutorExecuteShouldThrowWhenListFullyQualifiedTestsTargetPathIsEmpty() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - this.mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStart(), Times.Once); - } + RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput, false); + } - [TestMethod] - public void ListFullyQualifiedTestsArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStop() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + [TestMethod] + public void ListFullyQualifiedTestsArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStart() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - this.RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); - this.mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStop(), Times.Once); - } - #endregion + _mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStart(), Times.Once); + } - private void RunListFullyQualifiedTestArgumentProcessorWithTraits(Mock mockDiscoveryRequest, Mock mockConsoleOutput, bool legitPath = true) - { - var mockTestPlatform = new Mock(); - var list = new List(); + [TestMethod] + public void ListFullyQualifiedTestsArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStop() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - var t1 = new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"); - t1.Traits.Add(new Trait("Category", "MyCat")); - list.Add(t1); + RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + + _mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStop(), Times.Once); + } + #endregion + + private void RunListFullyQualifiedTestArgumentProcessorWithTraits(Mock mockDiscoveryRequest, Mock mockConsoleOutput, bool legitPath = true) + { + var mockTestPlatform = new Mock(); + var list = new List(); - var t2 = new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2"); - t2.Traits.Add(new Trait("Category", "MyBat")); - list.Add(t2); + var t1 = new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"); + t1.Traits.Add(new Trait("Category", "MyCat")); + list.Add(t1); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + var t2 = new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2"); + t2.Traits.Add(new Trait("Category", "MyBat")); + list.Add(t2); - this.ResetAndAddSourceToCommandLineOptions(legitPath); - var cmdOptions = CommandLineOptions.Instance; - cmdOptions.TestCaseFilterValue = "TestCategory=MyCat"; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - var testRequestManager = new TestRequestManager(cmdOptions, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); + ResetAndAddSourceToCommandLineOptions(legitPath); + var cmdOptions = CommandLineOptions.Instance; + cmdOptions.TestCaseFilterValue = "TestCategory=MyCat"; - GetExecutor(testRequestManager, mockConsoleOutput.Object).Execute(); - } + var testRequestManager = new TestRequestManager(cmdOptions, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); - private void RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(Mock mockDiscoveryRequest, Mock mockConsoleOutput, bool legitPath = true) + GetExecutor(testRequestManager, mockConsoleOutput.Object).Execute(); + } + + private void RunListFullyQualifiedTestArgumentProcessorExecuteWithMockSetup(Mock mockDiscoveryRequest, Mock mockConsoleOutput, bool legitPath = true) + { + var mockTestPlatform = new Mock(); + var list = new List { - var mockTestPlatform = new Mock(); - var list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + new("Test1", new Uri("http://FooTestUri1"), "Source1"), + new("Test2", new Uri("http://FooTestUri2"), "Source2") + }; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(legitPath); + ResetAndAddSourceToCommandLineOptions(legitPath); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); - GetExecutor(testRequestManager, mockConsoleOutput.Object).Execute(); - } + GetExecutor(testRequestManager, mockConsoleOutput.Object).Execute(); + } - private void ResetAndAddSourceToCommandLineOptions(bool legitPath) - { - CommandLineOptions.Instance.Reset(); - - CommandLineOptions.Instance.FileHelper = this.mockFileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, this.mockFileHelper.Object); - CommandLineOptions.Instance.AddSource(this.dummyTestFilePath); - if (legitPath) - { - CommandLineOptions.Instance.ListTestsTargetPath = this.dummyFilePath; - } - else - { - CommandLineOptions.Instance.ListTestsTargetPath = string.Empty; - } - } + private void ResetAndAddSourceToCommandLineOptions(bool legitPath) + { + CommandLineOptions.Reset(); + + CommandLineOptions.Instance.FileHelper = _mockFileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, _mockFileHelper.Object); + CommandLineOptions.Instance.AddSource(_dummyTestFilePath); + CommandLineOptions.Instance.ListTestsTargetPath = legitPath ? _dummyFilePath : string.Empty; } } diff --git a/test/vstest.console.UnitTests/Processors/ListTestsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ListTestsArgumentProcessorTests.cs index 8c00ed0477..381095ee58 100644 --- a/test/vstest.console.UnitTests/Processors/ListTestsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ListTestsArgumentProcessorTests.cs @@ -1,283 +1,290 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Versioning; +using System.Threading.Tasks; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.Client; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +// +// Tests for ListTestsArgumentProcessor +// +[TestClass] +public class ListTestsArgumentProcessorTests { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Runtime.Versioning; - using System.Threading.Tasks; - - using CoreUtilities.Tracing.Interfaces; - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.VisualStudio.TestPlatform.Client; - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using ObjectModel; - using ObjectModel.Client; - using TestPlatform.Utilities; - using TestPlatformHelpers; - using vstest.console.Internal; - using vstest.console.UnitTests.Processors; - - // - // Tests for ListTestsArgumentProcessor - // - [TestClass] - public class ListTestsArgumentProcessorTests + private readonly Mock _mockFileHelper; + private readonly Mock _mockAssemblyMetadataProvider; + private readonly InferHelper _inferHelper; + private readonly string _dummyTestFilePath = "DummyTest.dll"; + private readonly Mock _mockTestPlatformEventSource; + private readonly Task _mockMetricsPublisherTask; + private readonly Mock _mockMetricsPublisher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockAttachmentsProcessingManager; + private readonly Mock _mockEnvironment; + private readonly Mock _mockEnvironmentVariableHelper; + + private static ListTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager, IOutput? output) { - private readonly Mock mockFileHelper; - private Mock mockAssemblyMetadataProvider; - private InferHelper inferHelper; - private string dummyTestFilePath = "DummyTest.dll"; - private readonly Mock mockTestPlatformEventSource; - private Task mockMetricsPublisherTask; - private Mock mockMetricsPublisher; - private Mock mockProcessHelper; - private Mock mockAttachmentsProcessingManager; - - private static ListTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager, IOutput output) - { - var runSettingsProvider = new TestableRunSettingsProvider(); - - runSettingsProvider.AddDefaultRunSettings(); - var listTestsArgumentExecutor = - new ListTestsArgumentExecutor( - CommandLineOptions.Instance, - runSettingsProvider, - testRequestManager, - output ?? ConsoleOutput.Instance); - return listTestsArgumentExecutor; - } - - [TestCleanup] - public void Cleanup() - { - CommandLineOptions.Instance.Reset(); - } + var runSettingsProvider = new TestableRunSettingsProvider(); + + runSettingsProvider.AddDefaultRunSettings(); + var listTestsArgumentExecutor = + new ListTestsArgumentExecutor( + CommandLineOptions.Instance, + runSettingsProvider, + testRequestManager, + output ?? ConsoleOutput.Instance); + return listTestsArgumentExecutor; + } - public ListTestsArgumentProcessorTests() - { - this.mockFileHelper = new Mock(); - this.mockFileHelper.Setup(fh => fh.Exists(this.dummyTestFilePath)).Returns(true); - this.mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); - this.mockMetricsPublisher = new Mock(); - this.mockMetricsPublisherTask = Task.FromResult(this.mockMetricsPublisher.Object); - this.mockTestPlatformEventSource = new Mock(); - this.mockAssemblyMetadataProvider = new Mock(); - this.mockAssemblyMetadataProvider.Setup(x => x.GetArchitecture(It.IsAny())).Returns(Architecture.X64); - this.mockAssemblyMetadataProvider.Setup(x => x.GetFrameWork(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); - this.inferHelper = new InferHelper(this.mockAssemblyMetadataProvider.Object); - this.mockProcessHelper = new Mock(); - this.mockAttachmentsProcessingManager = new Mock(); - } - - /// - /// The help argument processor get metadata should return help argument processor capabilities. - /// - [TestMethod] - public void GetMetadataShouldReturnListTestsArgumentProcessorCapabilities() - { - var processor = new ListTestsArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ListTestsArgumentProcessorCapabilities); - } - - /// - /// The help argument processor get executer should return help argument processor capabilities. - /// - [TestMethod] - public void GetExecuterShouldReturnListTestsArgumentProcessorCapabilities() - { - var processor = new ListTestsArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is ListTestsArgumentExecutor); - } + [TestCleanup] + public void Cleanup() + { + CommandLineOptions.Reset(); + } - #region ListTestsArgumentProcessorCapabilitiesTests + public ListTestsArgumentProcessorTests() + { + _mockFileHelper = new Mock(); + _mockFileHelper.Setup(fh => fh.Exists(_dummyTestFilePath)).Returns(true); + _mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); + _mockMetricsPublisher = new Mock(); + _mockMetricsPublisherTask = Task.FromResult(_mockMetricsPublisher.Object); + _mockTestPlatformEventSource = new Mock(); + _mockAssemblyMetadataProvider = new Mock(); + _mockAssemblyMetadataProvider.Setup(x => x.GetArchitecture(It.IsAny())).Returns(Architecture.X64); + _mockAssemblyMetadataProvider.Setup(x => x.GetFrameworkName(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); + _inferHelper = new InferHelper(_mockAssemblyMetadataProvider.Object); + _mockProcessHelper = new Mock(); + _mockAttachmentsProcessingManager = new Mock(); + _mockEnvironment = new Mock(); + _mockEnvironmentVariableHelper = new Mock(); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new ListTestsArgumentProcessorCapabilities(); - Assert.AreEqual("/ListTests", capabilities.CommandName); - Assert.AreEqual("/lt", capabilities.ShortCommandName); - var expected = "-lt|--ListTests|/lt|/ListTests:\r\n Lists all discovered tests from the given test container."; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.ListTestsArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsTrue(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - #endregion - - #region ListTestsArgumentExecutorTests - - [TestMethod] - public void ExecutorInitializeWithValidSourceShouldAddItToTestSources() - { - CommandLineOptions.Instance.FileHelper = this.mockFileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, this.mockFileHelper.Object); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager, null); + /// + /// The help argument processor get metadata should return help argument processor capabilities. + /// + [TestMethod] + public void GetMetadataShouldReturnListTestsArgumentProcessorCapabilities() + { + var processor = new ListTestsArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is ListTestsArgumentProcessorCapabilities); + } - executor.Initialize(this.dummyTestFilePath); + /// + /// The help argument processor get executer should return help argument processor capabilities. + /// + [TestMethod] + public void GetExecuterShouldReturnListTestsArgumentProcessorCapabilities() + { + var processor = new ListTestsArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is ListTestsArgumentExecutor); + } - Assert.IsTrue(Enumerable.Contains(CommandLineOptions.Instance.Sources, this.dummyTestFilePath)); - } + #region ListTestsArgumentProcessorCapabilitiesTests - [TestMethod] - public void ExecutorExecuteForNoSourcesShouldReturnFail() - { - CommandLineOptions.Instance.Reset(); + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new ListTestsArgumentProcessorCapabilities(); + Assert.AreEqual("/ListTests", capabilities.CommandName); + Assert.AreEqual("/lt", capabilities.ShortCommandName); + var expected = "-lt|--ListTests|/lt|/ListTests:\r\n Lists all discovered tests from the given test container."; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.ListTestsArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsTrue(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + #endregion - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager, null); + #region ListTestsArgumentExecutorTests - Assert.ThrowsException(() => executor.Execute()); - } + [TestMethod] + public void ExecutorInitializeWithValidSourceShouldAddItToTestSources() + { + CommandLineOptions.Instance.FileHelper = _mockFileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, _mockFileHelper.Object); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager, null); - [TestMethod] - public void ExecutorExecuteShouldThrowTestPlatformException() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + executor.Initialize(_dummyTestFilePath); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + Assert.IsTrue(Enumerable.Contains(CommandLineOptions.Instance.Sources, _dummyTestFilePath)); + } - this.ResetAndAddSourceToCommandLineOptions(); + [TestMethod] + public void ExecutorExecuteForNoSourcesShouldReturnFail() + { + CommandLineOptions.Reset(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager, null); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager, null); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldThrowSettingsException() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowTestPlatformException() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new SettingsException("DummySettingsException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); + ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager, null); - Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldThrowInvalidOperationException() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowSettingsException() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new SettingsException("DummySettingsException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); + ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); - Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); - } + Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldThrowOtherExceptions() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowInvalidOperationException() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new Exception("DummyException")); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); + ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager, null); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var listTestsArgumentExecutor = GetExecutor(testRequestManager, null); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => listTestsArgumentExecutor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldOutputDiscoveredTestsAndReturnSuccess() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowOtherExceptions() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - this.RunListTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new Exception("DummyException")); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - // Assert - mockDiscoveryRequest.Verify(dr => dr.DiscoverAsync(), Times.Once); + ResetAndAddSourceToCommandLineOptions(); - mockConsoleOutput.Verify((IOutput co) => co.WriteLine(" Test1", OutputLevel.Information)); - mockConsoleOutput.Verify((IOutput co) => co.WriteLine(" Test2", OutputLevel.Information)); - } + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager, null); - [TestMethod] - public void ListTestArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStart() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + Assert.ThrowsException(() => executor.Execute()); + } - this.RunListTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + [TestMethod] + public void ExecutorExecuteShouldOutputDiscoveredTestsAndReturnSuccess() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - this.mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStart(), Times.Once); - } + RunListTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); - [TestMethod] - public void ListTestArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStop() - { - var mockDiscoveryRequest = new Mock(); - var mockConsoleOutput = new Mock(); + // Assert + mockDiscoveryRequest.Verify(dr => dr.DiscoverAsync(), Times.Once); + + mockConsoleOutput.Verify((IOutput co) => co.WriteLine(" Test1", OutputLevel.Information)); + mockConsoleOutput.Verify((IOutput co) => co.WriteLine(" Test2", OutputLevel.Information)); + } + + [TestMethod] + public void ListTestArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStart() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); + + RunListTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); - this.RunListTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); + _mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStart(), Times.Once); + } + + [TestMethod] + public void ListTestArgumentProcessorExecuteShouldInstrumentDiscoveryRequestStop() + { + var mockDiscoveryRequest = new Mock(); + var mockConsoleOutput = new Mock(); - this.mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStop(), Times.Once); - } - #endregion + RunListTestArgumentProcessorExecuteWithMockSetup(mockDiscoveryRequest, mockConsoleOutput); - private void RunListTestArgumentProcessorExecuteWithMockSetup(Mock mockDiscoveryRequest, Mock mockConsoleOutput) + _mockTestPlatformEventSource.Verify(x => x.DiscoveryRequestStop(), Times.Once); + } + #endregion + + private void RunListTestArgumentProcessorExecuteWithMockSetup(Mock mockDiscoveryRequest, Mock mockConsoleOutput) + { + var mockTestPlatform = new Mock(); + var list = new List { - var mockTestPlatform = new Mock(); - var list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + new("Test1", new Uri("http://FooTestUri1"), "Source1"), + new("Test2", new Uri("http://FooTestUri2"), "Source2") + }; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); + ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - GetExecutor(testRequestManager, mockConsoleOutput.Object).Execute(); - } + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + GetExecutor(testRequestManager, mockConsoleOutput.Object).Execute(); + } - private void ResetAndAddSourceToCommandLineOptions() - { - CommandLineOptions.Instance.Reset(); + private void ResetAndAddSourceToCommandLineOptions() + { + CommandLineOptions.Reset(); - CommandLineOptions.Instance.FileHelper = this.mockFileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, this.mockFileHelper.Object); - CommandLineOptions.Instance.AddSource(this.dummyTestFilePath); - } + CommandLineOptions.Instance.FileHelper = _mockFileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, _mockFileHelper.Object); + CommandLineOptions.Instance.AddSource(_dummyTestFilePath); } } diff --git a/test/vstest.console.UnitTests/Processors/ListTestsTargetPathArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ListTestsTargetPathArgumentProcessorTests.cs index 272aa54763..b98f2db49c 100644 --- a/test/vstest.console.UnitTests/Processors/ListTestsTargetPathArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ListTestsTargetPathArgumentProcessorTests.cs @@ -1,82 +1,80 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors -{ - using System; +using System; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; - [TestClass] - public class ListTestsTargetPathArgumentProcessorTests +[TestClass] +public class ListTestsTargetPathArgumentProcessorTests +{ + [TestMethod] + public void GetMetadataShouldReturnListTestsTargetPathArgumentProcessorCapabilities() { - [TestMethod] - public void GetMetadataShouldReturnListTestsTargetPathArgumentProcessorCapabilities() - { - ListTestsTargetPathArgumentProcessor processor = new ListTestsTargetPathArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ListTestsTargetPathArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecutorShouldReturnListTestsTargetPathArgumentProcessorCapabilities() - { - ListTestsTargetPathArgumentProcessor processor = new ListTestsTargetPathArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is ListTestsTargetPathArgumentExecutor); - } + ListTestsTargetPathArgumentProcessor processor = new(); + Assert.IsTrue(processor.Metadata.Value is ListTestsTargetPathArgumentProcessorCapabilities); + } - #region TestCaseFilterArgumentProcessorCapabilitiesTests + [TestMethod] + public void GetExecutorShouldReturnListTestsTargetPathArgumentProcessorCapabilities() + { + ListTestsTargetPathArgumentProcessor processor = new(); + Assert.IsTrue(processor.Executor!.Value is ListTestsTargetPathArgumentExecutor); + } - [TestMethod] - public void CapabilitiesShouldAppropriateProperties() - { - ListTestsTargetPathArgumentProcessorCapabilities capabilities = new ListTestsTargetPathArgumentProcessorCapabilities(); - Assert.AreEqual("/ListTestsTargetPath", capabilities.CommandName); + #region TestCaseFilterArgumentProcessorCapabilitiesTests - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + [TestMethod] + public void CapabilitiesShouldAppropriateProperties() + { + ListTestsTargetPathArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/ListTestsTargetPath", capabilities.CommandName); - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - #endregion + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - public void ExecutorInitializeWithNullOrEmptyListTestsTargetPathShouldThrowCommandLineException() - { - var options = CommandLineOptions.Instance; - ListTestsTargetPathArgumentExecutor executor = new ListTestsTargetPathArgumentExecutor(options); + #endregion - try - { - executor.Initialize(null); - } - catch (Exception ex) - { - Assert.IsTrue(ex is CommandLineException); - StringAssert.Contains(ex.Message, "ListTestsTargetPath is required with ListFullyQualifiedTests!"); - } - } + [TestMethod] + public void ExecutorInitializeWithNullOrEmptyListTestsTargetPathShouldThrowCommandLineException() + { + var options = CommandLineOptions.Instance; + ListTestsTargetPathArgumentExecutor executor = new(options); - [TestMethod] - public void ExecutorInitializeWithValidListTestsTargetPathShouldAddListTestsTargetPathToCommandLineOptions() + try { - var options = CommandLineOptions.Instance; - ListTestsTargetPathArgumentExecutor executor = new ListTestsTargetPathArgumentExecutor(options); - - executor.Initialize(@"C:\sample.txt"); - Assert.AreEqual(@"C:\sample.txt", options.ListTestsTargetPath); + executor.Initialize(null); } - - [TestMethod] - public void ExecutorListTestsTargetPathArgumentProcessorResultSuccess() + catch (Exception ex) { - var executor = new ListTestsTargetPathArgumentExecutor(CommandLineOptions.Instance); - var result = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Success, result); + Assert.IsTrue(ex is CommandLineException); + StringAssert.Contains(ex.Message, "ListTestsTargetPath is required with ListFullyQualifiedTests!"); } } + + [TestMethod] + public void ExecutorInitializeWithValidListTestsTargetPathShouldAddListTestsTargetPathToCommandLineOptions() + { + var options = CommandLineOptions.Instance; + ListTestsTargetPathArgumentExecutor executor = new(options); + + executor.Initialize(@"C:\sample.txt"); + Assert.AreEqual(@"C:\sample.txt", options.ListTestsTargetPath); + } + + [TestMethod] + public void ExecutorListTestsTargetPathArgumentProcessorResultSuccess() + { + var executor = new ListTestsTargetPathArgumentExecutor(CommandLineOptions.Instance); + var result = executor.Execute(); + Assert.AreEqual(ArgumentProcessorResult.Success, result); + } } diff --git a/test/vstest.console.UnitTests/Processors/ParallelArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ParallelArgumentProcessorTests.cs index e6d9147018..9e0580aa63 100644 --- a/test/vstest.console.UnitTests/Processors/ParallelArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ParallelArgumentProcessorTests.cs @@ -1,99 +1,95 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class ParallelArgumentProcessorTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; - using vstest.console.UnitTests.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; + private readonly ParallelArgumentExecutor _executor; + private readonly TestableRunSettingsProvider _runSettingsProvider; - using ExceptionUtilities = Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.ExceptionUtilities; - using System; + public ParallelArgumentProcessorTests() + { + _runSettingsProvider = new TestableRunSettingsProvider(); + _executor = new ParallelArgumentExecutor(CommandLineOptions.Instance, _runSettingsProvider); + } + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } - [TestClass] - public class ParallelArgumentProcessorTests + [TestMethod] + public void GetMetadataShouldReturnParallelArgumentProcessorCapabilities() { - private ParallelArgumentExecutor executor; - private TestableRunSettingsProvider runSettingsProvider; - - [TestInitialize] - public void Init() - { - this.runSettingsProvider = new TestableRunSettingsProvider(); - this.executor = new ParallelArgumentExecutor(CommandLineOptions.Instance, this.runSettingsProvider); - } - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } - - [TestMethod] - public void GetMetadataShouldReturnParallelArgumentProcessorCapabilities() - { - var processor = new ParallelArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ParallelArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnParallelArgumentExecutor() - { - var processor = new ParallelArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is ParallelArgumentExecutor); - } - - #region ParallelArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new ParallelArgumentProcessorCapabilities(); - Assert.AreEqual("/Parallel", capabilities.CommandName); - var expected = "--Parallel|/Parallel\r\n Specifies that the tests be executed in parallel. By default up\r\n to all available cores on the machine may be used.\r\n The number of cores to use may be configured using a settings file."; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.ParallelArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - #region ParallelArgumentExecutor Initialize tests - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNonNull() - { - - // Parallel should not have any values or arguments - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize("123"), - "Argument " + 123 + " is not expected in the 'Parallel' command. Specify the command without the argument (Example: vstest.console.exe myTests.dll /Parallel) and try again."); - } - - [TestMethod] - public void InitializeShouldSetParallelValue() - { - this.executor.Initialize(null); - Assert.IsTrue(CommandLineOptions.Instance.Parallel, "Parallel option must be set to true."); - Assert.AreEqual("0", this.runSettingsProvider.QueryRunSettingsNode(ParallelArgumentExecutor.RunSettingsPath)); - } - - #endregion - - #region ParallelArgumentExecutor Execute tests - - [TestMethod] - public void ExecuteShouldReturnSuccess() - { - Assert.AreEqual(ArgumentProcessorResult.Success, this.executor.Execute()); - } - - #endregion + var processor = new ParallelArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is ParallelArgumentProcessorCapabilities); } + + [TestMethod] + public void GetExecuterShouldReturnParallelArgumentExecutor() + { + var processor = new ParallelArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is ParallelArgumentExecutor); + } + + #region ParallelArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new ParallelArgumentProcessorCapabilities(); + Assert.AreEqual("/Parallel", capabilities.CommandName); + var expected = "--Parallel|/Parallel\r\n Specifies that the tests be executed in parallel. By default up\r\n to all available cores on the machine may be used.\r\n The number of cores to use may be configured using a settings file."; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.ParallelArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + #region ParallelArgumentExecutor Initialize tests + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNonNull() + { + + // Parallel should not have any values or arguments + ExceptionUtilities.ThrowsException( + () => _executor.Initialize("123"), + "Argument " + 123 + " is not expected in the 'Parallel' command. Specify the command without the argument (Example: vstest.console.exe myTests.dll /Parallel) and try again."); + } + + [TestMethod] + public void InitializeShouldSetParallelValue() + { + _executor.Initialize(null); + Assert.IsTrue(CommandLineOptions.Instance.Parallel, "Parallel option must be set to true."); + Assert.AreEqual("0", _runSettingsProvider.QueryRunSettingsNode(ParallelArgumentExecutor.RunSettingsPath)); + } + + #endregion + + #region ParallelArgumentExecutor Execute tests + + [TestMethod] + public void ExecuteShouldReturnSuccess() + { + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); + } + + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/ParentProcessIdArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ParentProcessIdArgumentProcessorTests.cs index a8bb3f1e7d..7624740e17 100644 --- a/test/vstest.console.UnitTests/Processors/ParentProcessIdArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ParentProcessIdArgumentProcessorTests.cs @@ -1,105 +1,106 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; +using System.Globalization; + using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class ParentProcessIdArgumentProcessorTests { - [TestClass] - public class ParentProcessIdArgumentProcessorTests + [TestMethod] + public void GetMetadataShouldReturnParentProcessIdArgumentProcessorCapabilities() { - [TestMethod] - public void GetMetadataShouldReturnParentProcessIdArgumentProcessorCapabilities() - { - var processor = new ParentProcessIdArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ParentProcessIdArgumentProcessorCapabilities); - } + var processor = new ParentProcessIdArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is ParentProcessIdArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecutorShouldReturnParentProcessIdArgumentProcessorCapabilities() - { - var processor = new ParentProcessIdArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is ParentProcessIdArgumentExecutor); - } + [TestMethod] + public void GetExecutorShouldReturnParentProcessIdArgumentProcessorCapabilities() + { + var processor = new ParentProcessIdArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is ParentProcessIdArgumentExecutor); + } - [TestMethod] - public void CapabilitiesShouldHaveHigherPriorityThanPortCapabilities() - { - var parentProcessIdCapabilities = new ParentProcessIdArgumentProcessorCapabilities(); - var portCapabilities = new PortArgumentProcessorCapabilities(); + [TestMethod] + public void CapabilitiesShouldHaveHigherPriorityThanPortCapabilities() + { + var parentProcessIdCapabilities = new ParentProcessIdArgumentProcessorCapabilities(); + var portCapabilities = new PortArgumentProcessorCapabilities(); - // Less the number, high the priority - Assert.IsTrue(parentProcessIdCapabilities.Priority == portCapabilities.Priority, "ParentProcessId must have higher priority than Port."); - } + // Less the number, high the priority + Assert.IsTrue(parentProcessIdCapabilities.Priority == portCapabilities.Priority, "ParentProcessId must have higher priority than Port."); + } + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new ParentProcessIdArgumentProcessorCapabilities(); + Assert.AreEqual("/ParentProcessId", capabilities.CommandName); + var expected = "--ParentProcessId|/ParentProcessId:\r\n Process Id of the Parent Process responsible for launching current process."; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.ParentProcessIdArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.DesignMode, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() + [TestMethod] + public void ExecutorInitializeWithNullOrEmptyParentProcessIdShouldThrowCommandLineException() + { + var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); + try { - var capabilities = new ParentProcessIdArgumentProcessorCapabilities(); - Assert.AreEqual("/ParentProcessId", capabilities.CommandName); - var expected = "--ParentProcessId|/ParentProcessId:\r\n Process Id of the Parent Process responsible for launching current process."; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.ParentProcessIdArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.DesignMode, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); + executor.Initialize(null); } - - [TestMethod] - public void ExecutorInitializeWithNullOrEmptyParentProcessIdShouldThrowCommandLineException() + catch (Exception ex) { - var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); - try - { - executor.Initialize(null); - } - catch (Exception ex) - { - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual("The --ParentProcessId|/ParentProcessId argument requires the process id which is an integer. Specify the process id of the parent process that launched this process.", ex.Message); - } + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual("The --ParentProcessId|/ParentProcessId argument requires the process id which is an integer. Specify the process id of the parent process that launched this process.", ex.Message); } + } - [TestMethod] - public void ExecutorInitializeWithInvalidParentProcessIdShouldThrowCommandLineException() + [TestMethod] + public void ExecutorInitializeWithInvalidParentProcessIdShouldThrowCommandLineException() + { + var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); + try { - var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); - try - { - executor.Initialize("Foo"); - } - catch (Exception ex) - { - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual("The --ParentProcessId|/ParentProcessId argument requires the process id which is an integer. Specify the process id of the parent process that launched this process.", ex.Message); - } + executor.Initialize("Foo"); } - - [TestMethod] - public void ExecutorInitializeWithValidPortShouldAddParentProcessIdToCommandLineOptions() + catch (Exception ex) { - var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); - int parentProcessId = 2345; - executor.Initialize(parentProcessId.ToString()); - Assert.AreEqual(parentProcessId, CommandLineOptions.Instance.ParentProcessId); + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual("The --ParentProcessId|/ParentProcessId argument requires the process id which is an integer. Specify the process id of the parent process that launched this process.", ex.Message); } + } - [TestMethod] - public void ExecutorExecuteReturnsArgumentProcessorResultSuccess() - { - var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); + [TestMethod] + public void ExecutorInitializeWithValidPortShouldAddParentProcessIdToCommandLineOptions() + { + var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); + int parentProcessId = 2345; + executor.Initialize(parentProcessId.ToString(CultureInfo.InvariantCulture)); + Assert.AreEqual(parentProcessId, CommandLineOptions.Instance.ParentProcessId); + } + + [TestMethod] + public void ExecutorExecuteReturnsArgumentProcessorResultSuccess() + { + var executor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); - int parentProcessId = 2345; - executor.Initialize(parentProcessId.ToString()); - var result = executor.Execute(); + int parentProcessId = 2345; + executor.Initialize(parentProcessId.ToString(CultureInfo.InvariantCulture)); + var result = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Success, result); - } + Assert.AreEqual(ArgumentProcessorResult.Success, result); } } diff --git a/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs index 84092f3741..a0119490ac 100644 --- a/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs @@ -1,131 +1,128 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class PlatformArgumentProcessorTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; - using vstest.console.UnitTests.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using ExceptionUtilities = Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.ExceptionUtilities; - using System; - - [TestClass] - public class PlatformArgumentProcessorTests + private readonly PlatformArgumentExecutor _executor; + private readonly TestableRunSettingsProvider _runSettingsProvider; + + public PlatformArgumentProcessorTests() + { + _runSettingsProvider = new TestableRunSettingsProvider(); + _executor = new PlatformArgumentExecutor(CommandLineOptions.Instance, _runSettingsProvider); + } + + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } + + [TestMethod] + public void GetMetadataShouldReturnPlatformArgumentProcessorCapabilities() + { + var processor = new PlatformArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is PlatformArgumentProcessorCapabilities); + } + + [TestMethod] + public void GetExecuterShouldReturnPlatformArgumentExecutor() + { + var processor = new PlatformArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is PlatformArgumentExecutor); + } + + #region PlatformArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new PlatformArgumentProcessorCapabilities(); + Assert.AreEqual("/Platform", capabilities.CommandName); + var expected = "--Platform|/Platform:\r\n Target platform architecture to be used for test execution. \r\n Valid values are x86, x64 and ARM."; + Assert.AreEqual(expected: expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.PlatformArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + #region PlatformArgumentExecutor Initialize tests + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNull() { - private PlatformArgumentExecutor executor; - private TestableRunSettingsProvider runSettingsProvider; - - [TestInitialize] - public void Init() - { - this.runSettingsProvider = new TestableRunSettingsProvider(); - this.executor = new PlatformArgumentExecutor(CommandLineOptions.Instance, runSettingsProvider); - } - - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } - - [TestMethod] - public void GetMetadataShouldReturnPlatformArgumentProcessorCapabilities() - { - var processor = new PlatformArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is PlatformArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnPlatformArgumentExecutor() - { - var processor = new PlatformArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is PlatformArgumentExecutor); - } - - #region PlatformArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new PlatformArgumentProcessorCapabilities(); - Assert.AreEqual("/Platform", capabilities.CommandName); - var expected = "--Platform|/Platform:\r\n Target platform architecture to be used for test execution. \r\n Valid values are x86, x64 and ARM."; - Assert.AreEqual(expected: expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.PlatformArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - #region PlatformArgumentExecutor Initialize tests - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNull() - { - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize(null), - "The /Platform argument requires the target platform type for the test run to be provided. Example: /Platform:x86"); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsEmpty() - { - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize(" "), - "The /Platform argument requires the target platform type for the test run to be provided. Example: /Platform:x86"); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNotAnArchitecture() - { - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize("foo"), - "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64.", - "foo"); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNotASupportedArchitecture() - { - ExceptionUtilities.ThrowsException( - () => this.executor.Initialize("AnyCPU"), - "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64.", - "AnyCPU"); - } - - [TestMethod] - public void InitializeShouldSetCommandLineOptionsArchitecture() - { - this.executor.Initialize("x64"); - Assert.AreEqual(ObjectModel.Architecture.X64, CommandLineOptions.Instance.TargetArchitecture); - Assert.AreEqual(nameof(ObjectModel.Architecture.X64), this.runSettingsProvider.QueryRunSettingsNode(PlatformArgumentExecutor.RunSettingsPath)); - } - - [TestMethod] - public void InitializeShouldNotConsiderCaseSensitivityOfTheArgumentPassed() - { - executor.Initialize("ArM"); - Assert.AreEqual(ObjectModel.Architecture.ARM, CommandLineOptions.Instance.TargetArchitecture); - Assert.AreEqual(nameof(ObjectModel.Architecture.ARM), this.runSettingsProvider.QueryRunSettingsNode(PlatformArgumentExecutor.RunSettingsPath)); - } - - #endregion - - #region PlatformArgumentExecutor Execute tests - - [TestMethod] - public void ExecuteShouldReturnSuccess() - { - Assert.AreEqual(ArgumentProcessorResult.Success, this.executor.Execute()); - } - - #endregion + ExceptionUtilities.ThrowsException( + () => _executor.Initialize(null), + "The /Platform argument requires the target platform type for the test run to be provided. Example: /Platform:x86"); } + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsEmpty() + { + ExceptionUtilities.ThrowsException( + () => _executor.Initialize(" "), + "The /Platform argument requires the target platform type for the test run to be provided. Example: /Platform:x86"); + } + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNotAnArchitecture() + { + ExceptionUtilities.ThrowsException( + () => _executor.Initialize("foo"), + "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, Ppc64le, RiscV64.", + "foo"); + } + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNotASupportedArchitecture() + { + ExceptionUtilities.ThrowsException( + () => _executor.Initialize("AnyCPU"), + "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, Ppc64le, RiscV64.", + "AnyCPU"); + } + + [TestMethod] + public void InitializeShouldSetCommandLineOptionsArchitecture() + { + _executor.Initialize("x64"); + Assert.AreEqual(ObjectModel.Architecture.X64, CommandLineOptions.Instance.TargetArchitecture); + Assert.AreEqual(nameof(ObjectModel.Architecture.X64), _runSettingsProvider.QueryRunSettingsNode(PlatformArgumentExecutor.RunSettingsPath)); + } + + [TestMethod] + public void InitializeShouldNotConsiderCaseSensitivityOfTheArgumentPassed() + { + _executor.Initialize("ArM"); + Assert.AreEqual(ObjectModel.Architecture.ARM, CommandLineOptions.Instance.TargetArchitecture); + Assert.AreEqual(nameof(ObjectModel.Architecture.ARM), _runSettingsProvider.QueryRunSettingsNode(PlatformArgumentExecutor.RunSettingsPath)); + } + + #endregion + + #region PlatformArgumentExecutor Execute tests + + [TestMethod] + public void ExecuteShouldReturnSuccess() + { + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); + } + + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/PortArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/PortArgumentProcessorTests.cs index 50181f7e6d..d7a4db5a34 100644 --- a/test/vstest.console.UnitTests/Processors/PortArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/PortArgumentProcessorTests.cs @@ -1,192 +1,202 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +#if !NET5_0_OR_GREATER +using System.Diagnostics; +#endif +using System.Globalization; + +using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class PortArgumentProcessorTests { - using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Moq; - using System; - using System.Diagnostics; - - [TestClass] - public class PortArgumentProcessorTests - { - private Mock mockProcessHelper; - private Mock testDesignModeClient; - private Mock testRequestManager; - private PortArgumentExecutor executor; + private readonly Mock _mockProcessHelper; + private readonly Mock _testDesignModeClient; + private readonly Mock _testRequestManager; + private PortArgumentExecutor _executor; - public PortArgumentProcessorTests() - { - this.mockProcessHelper = new Mock(); - this.testDesignModeClient = new Mock(); - this.testRequestManager = new Mock(); - this.executor = new PortArgumentExecutor(CommandLineOptions.Instance, this.testRequestManager.Object); - } + public PortArgumentProcessorTests() + { + _mockProcessHelper = new Mock(); + _testDesignModeClient = new Mock(); + _testRequestManager = new Mock(); + _executor = new PortArgumentExecutor(CommandLineOptions.Instance, _testRequestManager.Object); + } - [TestMethod] - public void GetMetadataShouldReturnPortArgumentProcessorCapabilities() - { - var processor = new PortArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is PortArgumentProcessorCapabilities); - } + [TestMethod] + public void GetMetadataShouldReturnPortArgumentProcessorCapabilities() + { + var processor = new PortArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is PortArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecutorShouldReturnPortArgumentProcessorCapabilities() - { - var processor = new PortArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is PortArgumentExecutor); - } + [TestMethod] + public void GetExecutorShouldReturnPortArgumentProcessorCapabilities() + { + var processor = new PortArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is PortArgumentExecutor); + } - #region PortArgumentProcessorCapabilitiesTests + #region PortArgumentProcessorCapabilitiesTests - [TestMethod] - public void CapabilitiesShouldAppropriateProperties() - { - var capabilities = new PortArgumentProcessorCapabilities(); - Assert.AreEqual("/Port", capabilities.CommandName); - Assert.AreEqual("--Port|/Port:" + Environment.NewLine + " The Port for socket connection and receiving the event messages.", capabilities.HelpContentResourceName); + [TestMethod] + public void CapabilitiesShouldAppropriateProperties() + { + var capabilities = new PortArgumentProcessorCapabilities(); + Assert.AreEqual("/Port", capabilities.CommandName); + Assert.AreEqual("--Port|/Port:" + Environment.NewLine + " The Port for socket connection and receiving the event messages.", capabilities.HelpContentResourceName); - Assert.AreEqual(HelpContentPriority.PortArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.DesignMode, capabilities.Priority); + Assert.AreEqual(HelpContentPriority.PortArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.DesignMode, capabilities.Priority); - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - #endregion + #endregion - [TestMethod] - public void ExecutorInitializeWithNullOrEmptyPortShouldThrowCommandLineException() + [TestMethod] + public void ExecutorInitializeWithNullOrEmptyPortShouldThrowCommandLineException() + { + try { - try - { - executor.Initialize(null); - } - catch (Exception ex) - { - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual("The --Port|/Port argument requires the port number which is an integer. Specify the port for socket connection and receiving the event messages.", ex.Message); - } + _executor.Initialize(null); } - - [TestMethod] - public void ExecutorInitializeWithInvalidPortShouldThrowCommandLineException() + catch (Exception ex) { - try - { - this.executor.Initialize("Foo"); - } - catch (Exception ex) - { - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual("The --Port|/Port argument requires the port number which is an integer. Specify the port for socket connection and receiving the event messages.", ex.Message); - } + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual("The --Port|/Port argument requires the port number which is an integer. Specify the port for socket connection and receiving the event messages.", ex.Message); } + } - [TestMethod] - public void ExecutorInitializeWithValidPortShouldAddPortToCommandLineOptionsAndInitializeDesignModeManager() + [TestMethod] + public void ExecutorInitializeWithInvalidPortShouldThrowCommandLineException() + { + try { - int port = 2345; - CommandLineOptions.Instance.ParentProcessId = 0; + _executor.Initialize("Foo"); + } + catch (Exception ex) + { + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual("The --Port|/Port argument requires the port number which is an integer. Specify the port for socket connection and receiving the event messages.", ex.Message); + } + } - this.executor.Initialize(port.ToString()); + [TestMethod] + public void ExecutorInitializeWithValidPortShouldAddPortToCommandLineOptionsAndInitializeDesignModeManager() + { + int port = 2345; + CommandLineOptions.Instance.ParentProcessId = 0; - Assert.AreEqual(port, CommandLineOptions.Instance.Port); - Assert.IsNotNull(DesignModeClient.Instance); - } + _executor.Initialize(port.ToString(CultureInfo.InvariantCulture)); - [TestMethod] - public void ExecutorInitializeShouldSetDesignMode() - { - int port = 2345; - CommandLineOptions.Instance.ParentProcessId = 0; + Assert.AreEqual(port, CommandLineOptions.Instance.Port); + Assert.IsNotNull(DesignModeClient.Instance); + } - this.executor.Initialize(port.ToString()); + [TestMethod] + public void ExecutorInitializeShouldSetDesignMode() + { + int port = 2345; + CommandLineOptions.Instance.ParentProcessId = 0; - Assert.IsTrue(CommandLineOptions.Instance.IsDesignMode); - } + _executor.Initialize(port.ToString(CultureInfo.InvariantCulture)); - [TestMethod] - public void ExecutorInitializeShouldSetProcessExitCallback() - { - this.executor = new PortArgumentExecutor(CommandLineOptions.Instance, this.testRequestManager.Object, this.mockProcessHelper.Object); - int port = 2345; - int processId = Process.GetCurrentProcess().Id; - CommandLineOptions.Instance.ParentProcessId = processId; + Assert.IsTrue(CommandLineOptions.Instance.IsDesignMode); + } - this.executor.Initialize(port.ToString()); + [TestMethod] + public void ExecutorInitializeShouldSetProcessExitCallback() + { + _executor = new PortArgumentExecutor(CommandLineOptions.Instance, _testRequestManager.Object, _mockProcessHelper.Object); + int port = 2345; +#if NET5_0_OR_GREATER + var pid = Environment.ProcessId; +#else + int pid; + using (var p = Process.GetCurrentProcess()) + pid = p.Id; +#endif + CommandLineOptions.Instance.ParentProcessId = pid; + + _executor.Initialize(port.ToString(CultureInfo.InvariantCulture)); + + _mockProcessHelper.Verify(ph => ph.SetExitCallback(pid, It.IsAny>()), Times.Once); + } - this.mockProcessHelper.Verify(ph => ph.SetExitCallback(processId, It.IsAny>()), Times.Once); - } + [TestMethod] + public void ExecutorExecuteForValidConnectionReturnsArgumentProcessorResultSuccess() + { + _executor = new PortArgumentExecutor(CommandLineOptions.Instance, _testRequestManager.Object, + (parentProcessId, ph) => _testDesignModeClient.Object, _mockProcessHelper.Object); - [TestMethod] - public void ExecutorExecuteForValidConnectionReturnsArgumentProcessorResultSuccess() - { - this.executor = new PortArgumentExecutor(CommandLineOptions.Instance, this.testRequestManager.Object, - (parentProcessId, ph) => this.testDesignModeClient.Object, this.mockProcessHelper.Object); + int port = 2345; + _executor.Initialize(port.ToString(CultureInfo.InvariantCulture)); + var result = _executor.Execute(); - int port = 2345; - this.executor.Initialize(port.ToString()); - var result = executor.Execute(); + _testDesignModeClient.Verify(td => + td.ConnectToClientAndProcessRequests(port, _testRequestManager.Object), Times.Once); - this.testDesignModeClient.Verify(td => - td.ConnectToClientAndProcessRequests(port, this.testRequestManager.Object), Times.Once); + Assert.AreEqual(ArgumentProcessorResult.Success, result); + } - Assert.AreEqual(ArgumentProcessorResult.Success, result); - } + [TestMethod] + public void ExecutorExecuteForFailedConnectionShouldThrowCommandLineException() + { + _executor = new PortArgumentExecutor(CommandLineOptions.Instance, _testRequestManager.Object, + (parentProcessId, ph) => _testDesignModeClient.Object, _mockProcessHelper.Object); - [TestMethod] - public void ExecutorExecuteForFailedConnectionShouldThrowCommandLineException() - { - this.executor = new PortArgumentExecutor(CommandLineOptions.Instance, this.testRequestManager.Object, - (parentProcessId, ph) => testDesignModeClient.Object, this.mockProcessHelper.Object); + _testDesignModeClient.Setup(td => td.ConnectToClientAndProcessRequests(It.IsAny(), + It.IsAny())).Callback(() => throw new TimeoutException()); - testDesignModeClient.Setup(td => td.ConnectToClientAndProcessRequests(It.IsAny(), - It.IsAny())).Callback(() => { throw new TimeoutException(); }); + int port = 2345; + _executor.Initialize(port.ToString(CultureInfo.InvariantCulture)); + Assert.ThrowsException(() => _executor.Execute()); - int port = 2345; - this.executor.Initialize(port.ToString()); - Assert.ThrowsException(() => executor.Execute()); + _testDesignModeClient.Verify(td => td.ConnectToClientAndProcessRequests(port, _testRequestManager.Object), Times.Once); + } - testDesignModeClient.Verify(td => td.ConnectToClientAndProcessRequests(port, this.testRequestManager.Object), Times.Once); - } + [TestMethod] + public void ExecutorExecuteSetsParentProcessIdOnDesignModeInitializer() + { + var parentProcessId = 2346; + var parentProcessIdArgumentExecutor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); + parentProcessIdArgumentExecutor.Initialize(parentProcessId.ToString(CultureInfo.InvariantCulture)); + + int actualParentProcessId = -1; + _executor = new PortArgumentExecutor(CommandLineOptions.Instance, + _testRequestManager.Object, + (ppid, ph) => + { + actualParentProcessId = ppid; + return _testDesignModeClient.Object; + }, + _mockProcessHelper.Object + ); - [TestMethod] - public void ExecutorExecuteSetsParentProcessIdOnDesignModeInitializer() - { - var parentProcessId = 2346; - var parentProcessIdArgumentExecutor = new ParentProcessIdArgumentExecutor(CommandLineOptions.Instance); - parentProcessIdArgumentExecutor.Initialize(parentProcessId.ToString()); - - int actualParentProcessId = -1; - this.executor = new PortArgumentExecutor(CommandLineOptions.Instance, - this.testRequestManager.Object, - (ppid, ph) => - { - actualParentProcessId = ppid; - return testDesignModeClient.Object; - }, - this.mockProcessHelper.Object - ); - - int port = 2345; - this.executor.Initialize(port.ToString()); - var result = executor.Execute(); - - testDesignModeClient.Verify(td => - td.ConnectToClientAndProcessRequests(port, testRequestManager.Object), Times.Once); - - Assert.AreEqual(parentProcessId, actualParentProcessId, "Parent process Id must be set correctly on design mode initializer"); - - Assert.AreEqual(ArgumentProcessorResult.Success, result); - } + int port = 2345; + _executor.Initialize(port.ToString(CultureInfo.InvariantCulture)); + var result = _executor.Execute(); + + _testDesignModeClient.Verify(td => + td.ConnectToClientAndProcessRequests(port, _testRequestManager.Object), Times.Once); + + Assert.AreEqual(parentProcessId, actualParentProcessId, "Parent process Id must be set correctly on design mode initializer"); + + Assert.AreEqual(ArgumentProcessorResult.Success, result); } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/Processors/ResponseFileArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ResponseFileArgumentProcessorTests.cs index 5e9e53c617..3c433aefe7 100644 --- a/test/vstest.console.UnitTests/Processors/ResponseFileArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ResponseFileArgumentProcessorTests.cs @@ -1,52 +1,51 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class ResponseFileArgumentProcessorTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } + + [TestMethod] + public void GetMetadataShouldReturnResponseFileArgumentProcessorCapabilities() + { + var processor = new ResponseFileArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is ResponseFileArgumentProcessorCapabilities); + } - [TestClass] - public class ResponseFileArgumentProcessorTests + [TestMethod] + public void GetExecuterShouldReturnNull() { - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } - - [TestMethod] - public void GetMetadataShouldReturnResponseFileArgumentProcessorCapabilities() - { - var processor = new ResponseFileArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ResponseFileArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnNull() - { - var processor = new ResponseFileArgumentProcessor(); - Assert.IsNull(processor.Executor); - } - - #region ResponseFileArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new ResponseFileArgumentProcessorCapabilities(); - Assert.AreEqual("@", capabilities.CommandName); - StringAssert.Contains(capabilities.HelpContentResourceName, "Read response file for more options"); - - Assert.AreEqual(HelpContentPriority.ResponseFileArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsTrue(capabilities.IsSpecialCommand); - } - - #endregion + var processor = new ResponseFileArgumentProcessor(); + Assert.IsNull(processor.Executor); } + + #region ResponseFileArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new ResponseFileArgumentProcessorCapabilities(); + Assert.AreEqual("@", capabilities.CommandName); + StringAssert.Contains(capabilities.HelpContentResourceName, "Read response file for more options"); + + Assert.AreEqual(HelpContentPriority.ResponseFileArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsTrue(capabilities.IsSpecialCommand); + } + + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/ResultsDirectoryArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ResultsDirectoryArgumentProcessorTests.cs index 1982257d91..bc5d345804 100644 --- a/test/vstest.console.UnitTests/Processors/ResultsDirectoryArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/ResultsDirectoryArgumentProcessorTests.cs @@ -1,169 +1,168 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; +using System.IO; using System.Text.RegularExpressions; -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class ResultsDirectoryArgumentProcessorTests { - using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; - using System; - using System.IO; - using vstest.console.UnitTests.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - - [TestClass] - public class ResultsDirectoryArgumentProcessorTests + private readonly ResultsDirectoryArgumentExecutor _executor; + private readonly TestableRunSettingsProvider _runSettingsProvider; + + public ResultsDirectoryArgumentProcessorTests() { - private ResultsDirectoryArgumentExecutor executor; - private TestableRunSettingsProvider runSettingsProvider; + _runSettingsProvider = new TestableRunSettingsProvider(); + _executor = new ResultsDirectoryArgumentExecutor(CommandLineOptions.Instance, _runSettingsProvider); + } - [TestInitialize] - public void Init() - { - this.runSettingsProvider = new TestableRunSettingsProvider(); - this.executor = new ResultsDirectoryArgumentExecutor(CommandLineOptions.Instance, this.runSettingsProvider); - } + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } + [TestMethod] + public void GetMetadataShouldReturnResultsDirectoryArgumentProcessorCapabilities() + { + var processor = new ResultsDirectoryArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is ResultsDirectoryArgumentProcessorCapabilities); + } - [TestMethod] - public void GetMetadataShouldReturnResultsDirectoryArgumentProcessorCapabilities() - { - var processor = new ResultsDirectoryArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is ResultsDirectoryArgumentProcessorCapabilities); - } + [TestMethod] + public void GetExecuterShouldReturnResultsDirectoryArgumentExecutor() + { + var processor = new ResultsDirectoryArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is ResultsDirectoryArgumentExecutor); + } - [TestMethod] - public void GetExecuterShouldReturnResultsDirectoryArgumentExecutor() - { - var processor = new ResultsDirectoryArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is ResultsDirectoryArgumentExecutor); - } + #region ResultsDirectoryArgumentProcessorCapabilities tests - #region ResultsDirectoryArgumentProcessorCapabilities tests + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new ResultsDirectoryArgumentProcessorCapabilities(); + Assert.AreEqual("/ResultsDirectory", capabilities.CommandName); + var expected = "--ResultsDirectory|/ResultsDirectory\r\n Test results directory will be created in specified path if not exists.\r\n Example /ResultsDirectory:"; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.ResultsDirectoryArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new ResultsDirectoryArgumentProcessorCapabilities(); - Assert.AreEqual("/ResultsDirectory", capabilities.CommandName); - var expected = "--ResultsDirectory|/ResultsDirectory\r\n Test results directory will be created in specified path if not exists.\r\n Example /ResultsDirectory:"; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.ResultsDirectoryArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + #endregion - #endregion + #region ResultsDirectoryArgumentExecutor Initialize tests - #region ResultsDirectoryArgumentExecutor Initialize tests + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNull() + { + string? folder = null; + var message = + @"The /ResultsDirectory parameter requires a value, where the test results should be saved. Example: /ResultsDirectory:c:\MyTestResultsDirectory"; + InitializeExceptionTestTemplate(folder, message); + } - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNull() - { - string folder = null; - var message = - @"The /ResultsDirectory parameter requires a value, where the test results should be saved. Example: /ResultsDirectory:c:\MyTestResultsDirectory"; - this.InitializeExceptionTestTemplate(folder, message); - } + [TestMethod] + public void InitializeShouldThrowIfArgumentIsAWhiteSpace() + { + var folder = " "; + var message = + @"The /ResultsDirectory parameter requires a value, where the test results should be saved. Example: /ResultsDirectory:c:\MyTestResultsDirectory"; + InitializeExceptionTestTemplate(folder, message); + } - [TestMethod] - public void InitializeShouldThrowIfArgumentIsAWhiteSpace() - { - var folder = " "; - var message = - @"The /ResultsDirectory parameter requires a value, where the test results should be saved. Example: /ResultsDirectory:c:\MyTestResultsDirectory"; - this.InitializeExceptionTestTemplate(folder, message); - } + [TestMethod] + public void InitializeShouldThrowIfGivenPathIsIllegal() + { + // the internal code uses IsPathRooted which does not consider this rooted on Linux + // so we need to convert the path, and use char that is invalid on the current platform + var invalidChar = Path.GetInvalidPathChars()[0]; - [TestMethod] - public void InitializeShouldThrowIfGivenPathIsIllegal() - { - // the internal code uses IsPathRooted which does not consider this rooted on Linux - // so we need to convert the path, and use char that is invalid on the current platform - var invalidChar = Path.GetInvalidPathChars()[0]; - - var folder = TranslatePath($@"c:\som{invalidChar}\illegal\path\"); - // The error varies based on the runtime and OS, just checking that we detect - // incorrect path should be enough and not so flaky - // you might get - // - The filename, directory name, or volume label syntax is incorrect - // - Illegal characters in path. - // - etc. - - var message = $"The path '{folder}' specified in the 'ResultsDirectory' is invalid. Error:"; - - this.InitializeExceptionTestTemplate(folder, message); - } + var folder = TranslatePath($@"c:\som{invalidChar}\illegal\path\"); + // The error varies based on the runtime and OS, just checking that we detect + // incorrect path should be enough and not so flaky + // you might get + // - The filename, directory name, or volume label syntax is incorrect + // - Illegal characters in path. + // - etc. - private void InitializeExceptionTestTemplate(string folder, string message) - { - var isExceptionThrown = false; - - try - { - this.executor.Initialize(folder); - } - catch (Exception ex) - { - isExceptionThrown = true; - Assert.IsTrue(ex is CommandLineException, "ex is CommandLineException"); - StringAssert.StartsWith( ex.Message, message); - } - - Assert.IsTrue(isExceptionThrown, "isExceptionThrown"); - } + var message = $"The path '{folder}' specified in the 'ResultsDirectory' is invalid. Error:"; - [TestMethod] - public void InitializeShouldSetCommandLineOptionsAndRunSettingsForRelativePathValue() + InitializeExceptionTestTemplate(folder, message); + } + + private void InitializeExceptionTestTemplate(string? folder, string message) + { + var isExceptionThrown = false; + + try { - var relativePath = TranslatePath(@".\relative\path"); - var absolutePath = Path.GetFullPath(relativePath); - this.executor.Initialize(relativePath); - Assert.AreEqual(absolutePath, CommandLineOptions.Instance.ResultsDirectory); - Assert.AreEqual(absolutePath, this.runSettingsProvider.QueryRunSettingsNode(ResultsDirectoryArgumentExecutor.RunSettingsPath)); + _executor.Initialize(folder); } - - [TestMethod] - public void InitializeShouldSetCommandLineOptionsAndRunSettingsForAbsolutePathValue() + catch (Exception ex) { - var absolutePath = TranslatePath(@"c:\random\someone\testresults"); - this.executor.Initialize(absolutePath); - Assert.AreEqual(absolutePath, CommandLineOptions.Instance.ResultsDirectory); - Assert.AreEqual(absolutePath, this.runSettingsProvider.QueryRunSettingsNode(ResultsDirectoryArgumentExecutor.RunSettingsPath)); + isExceptionThrown = true; + Assert.IsTrue(ex is CommandLineException, "ex is CommandLineException"); + StringAssert.StartsWith(ex.Message, message); } - #endregion + Assert.IsTrue(isExceptionThrown, "isExceptionThrown"); + } + + [TestMethod] + public void InitializeShouldSetCommandLineOptionsAndRunSettingsForRelativePathValue() + { + var relativePath = TranslatePath(@".\relative\path"); + var absolutePath = Path.GetFullPath(relativePath); + _executor.Initialize(relativePath); + Assert.AreEqual(absolutePath, CommandLineOptions.Instance.ResultsDirectory); + Assert.AreEqual(absolutePath, _runSettingsProvider.QueryRunSettingsNode(ResultsDirectoryArgumentExecutor.RunSettingsPath)); + } - #region ResultsDirectoryArgumentExecutor Execute tests + [TestMethod] + public void InitializeShouldSetCommandLineOptionsAndRunSettingsForAbsolutePathValue() + { + var absolutePath = TranslatePath(@"c:\random\someone\testresults"); + _executor.Initialize(absolutePath); + Assert.AreEqual(absolutePath, CommandLineOptions.Instance.ResultsDirectory); + Assert.AreEqual(absolutePath, _runSettingsProvider.QueryRunSettingsNode(ResultsDirectoryArgumentExecutor.RunSettingsPath)); + } - [TestMethod] - public void ExecuteShouldReturnSuccess() - { - Assert.AreEqual(ArgumentProcessorResult.Success, executor.Execute()); - } + #endregion - #endregion - - private string TranslatePath(string path) - { - // RuntimeInformation has conflict when used - if (Environment.OSVersion.Platform.ToString().StartsWith("Win")) - return path; + #region ResultsDirectoryArgumentExecutor Execute tests - var prefix = Path.GetTempPath(); + [TestMethod] + public void ExecuteShouldReturnSuccess() + { + Assert.AreEqual(ArgumentProcessorResult.Success, _executor.Execute()); + } - return Regex.Replace(path.Replace("\\", "/"), @"(\w)\:/", $@"{prefix}$1/"); - } + #endregion + + private static string TranslatePath(string path) + { + // RuntimeInformation has conflict when used + if (Environment.OSVersion.Platform.ToString().StartsWith("Win")) + return path; + + var prefix = Path.GetTempPath(); + + return Regex.Replace(path.Replace("\\", "/"), @"(\w)\:/", $@"{prefix}$1/"); } } diff --git a/test/vstest.console.UnitTests/Processors/RunSettingsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/RunSettingsArgumentProcessorTests.cs index 199ae59c7e..d32df8d4c1 100644 --- a/test/vstest.console.UnitTests/Processors/RunSettingsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/RunSettingsArgumentProcessorTests.cs @@ -1,443 +1,439 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors -{ - using System; - using System.IO; - using System.Xml; +using System; +using System.IO; +using System.Text; +using System.Xml; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using vstest.console.UnitTests.Processors; +using vstest.console.UnitTests.Processors; - using Moq; - using System.Text; +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; - using ExceptionUtilities = Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.ExceptionUtilities; +[TestClass] +public class RunSettingsArgumentProcessorTests +{ + private readonly TestableRunSettingsProvider _settingsProvider; - [TestClass] - public class RunSettingsArgumentProcessorTests + public RunSettingsArgumentProcessorTests() { - private TestableRunSettingsProvider settingsProvider; + _settingsProvider = new TestableRunSettingsProvider(); + } - [TestInitialize] - public void Init() - { - this.settingsProvider = new TestableRunSettingsProvider(); - } + [TestCleanup] + public void TestCleanup() + { + CommandLineOptions.Reset(); + } - [TestCleanup] - public void TestCleanup() - { - CommandLineOptions.Instance.Reset(); - } + [TestMethod] + public void GetMetadataShouldReturnRunSettingsArgumentProcessorCapabilities() + { + var processor = new RunSettingsArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is RunSettingsArgumentProcessorCapabilities); + } - [TestMethod] - public void GetMetadataShouldReturnRunSettingsArgumentProcessorCapabilities() - { - var processor = new RunSettingsArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is RunSettingsArgumentProcessorCapabilities); - } + [TestMethod] + public void GetExecuterShouldReturnRunSettingsArgumentExecutor() + { + var processor = new RunSettingsArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is RunSettingsArgumentExecutor); + } - [TestMethod] - public void GetExecuterShouldReturnRunSettingsArgumentExecutor() - { - var processor = new RunSettingsArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is RunSettingsArgumentExecutor); - } + #region RunSettingsArgumentProcessorCapabilities tests - #region RunSettingsArgumentProcessorCapabilities tests + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new RunSettingsArgumentProcessorCapabilities(); + Assert.AreEqual("/Settings", capabilities.CommandName); + var expected = "--Settings|/Settings:\r\n Settings to use when running tests."; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.RunSettingsArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.RunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new RunSettingsArgumentProcessorCapabilities(); - Assert.AreEqual("/Settings", capabilities.CommandName); - var expected = "--Settings|/Settings:\r\n Settings to use when running tests."; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.RunSettingsArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.RunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + #endregion - #endregion + #region RunSettingsArgumentExecutor tests - #region RunSettingsArgumentExecutor tests + [TestMethod] + public void InitializeShouldThrowExceptionIfArgumentIsNull() + { + Action action = () => new RunSettingsArgumentExecutor(CommandLineOptions.Instance, null!).Initialize(null); - [TestMethod] - public void InitializeShouldThrowExceptionIfArgumentIsNull() - { - Action action = () => new RunSettingsArgumentExecutor(CommandLineOptions.Instance, null).Initialize(null); + ExceptionUtilities.ThrowsException( + action, + "The /Settings parameter requires a settings file to be provided."); + } - ExceptionUtilities.ThrowsException( - action, - "The /Settings parameter requires a settings file to be provided."); - } + [TestMethod] + public void InitializeShouldThrowExceptionIfArgumentIsWhiteSpace() + { + Action action = () => new RunSettingsArgumentExecutor(CommandLineOptions.Instance, null!).Initialize(" "); - [TestMethod] - public void InitializeShouldThrowExceptionIfArgumentIsWhiteSpace() - { - Action action = () => new RunSettingsArgumentExecutor(CommandLineOptions.Instance, null).Initialize(" "); + ExceptionUtilities.ThrowsException( + action, + "The /Settings parameter requires a settings file to be provided."); + } - ExceptionUtilities.ThrowsException( - action, - "The /Settings parameter requires a settings file to be provided."); - } + [TestMethod] + public void InitializeShouldThrowExceptionIfFileDoesNotExist() + { + var fileName = "C:\\Imaginary\\nonExistentFile.txt"; - [TestMethod] - public void InitializeShouldThrowExceptionIfFileDoesNotExist() - { - var fileName = "C:\\Imaginary\\nonExistentFile.txt"; + var executor = new RunSettingsArgumentExecutor(CommandLineOptions.Instance, null!); + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(false); - var executor = new RunSettingsArgumentExecutor(CommandLineOptions.Instance, null); - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(false); + executor.FileHelper = mockFileHelper.Object; - executor.FileHelper = mockFileHelper.Object; + ExceptionUtilities.ThrowsException( + () => executor.Initialize(fileName), + "The Settings file '{0}' could not be found.", + fileName); + } - ExceptionUtilities.ThrowsException( - () => executor.Initialize(fileName), - "The Settings file '{0}' could not be found.", - fileName); - } + [TestMethod] + public void InitializeShouldThrowIfRunSettingsSchemaDoesNotMatch() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var settingsXml = ""; - [TestMethod] - public void InitializeShouldThrowIfRunSettingsSchemaDoesNotMatch() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var settingsXml = ""; + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; - executor.FileHelper = mockFileHelper.Object; + // Act and Assert. + ExceptionUtilities.ThrowsException( + () => executor.Initialize(fileName), + "Settings file provided does not conform to required format."); + } - // Act and Assert. - ExceptionUtilities.ThrowsException( - () => executor.Initialize(fileName), - "Settings file provided does not conform to required format."); - } + [TestMethod] + public void InitializeShouldSetActiveRunSettings() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var settingsXml = ""; + + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); + + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; + + // Act. + executor.Initialize(fileName); + + // Assert. + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + Assert.AreEqual(fileName, CommandLineOptions.Instance.SettingsFile); + } - [TestMethod] - public void InitializeShouldSetActiveRunSettings() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var settingsXml = ""; - - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); - - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; - - // Act. - executor.Initialize(fileName); - - // Assert. - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - Assert.AreEqual(fileName, CommandLineOptions.Instance.SettingsFile); - } + [TestMethod] + public void InitializeShouldSetSettingsFileForCommandLineOptions() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var settingsXml = ""; - [TestMethod] - public void InitializeShouldSetSettingsFileForCommandLineOptions() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var settingsXml = ""; + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; + // Act. + executor.Initialize(fileName); - // Act. - executor.Initialize(fileName); + // Assert. + Assert.AreEqual(fileName, CommandLineOptions.Instance.SettingsFile); + } - // Assert. - Assert.AreEqual(fileName, CommandLineOptions.Instance.SettingsFile); - } + [TestMethod] + public void InitializeShouldAddDefaultSettingsIfNotPresent() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var settingsXml = ""; + + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); + + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; + + // Act. + executor.Initialize(fileName); + + // Assert. + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + RunConfiguration runConfiguration = + XmlRunSettingsUtilities.GetRunConfigurationNode(_settingsProvider.ActiveRunSettings.SettingsXml); + Assert.AreEqual(runConfiguration.ResultsDirectory, Constants.DefaultResultsDirectory); + Assert.AreEqual(runConfiguration.TargetFramework!.ToString(), Framework.DefaultFramework.ToString()); + Assert.AreEqual(runConfiguration.TargetPlatform, Constants.DefaultPlatform); - [TestMethod] - public void InitializeShouldAddDefaultSettingsIfNotPresent() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var settingsXml = ""; - - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); - - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; - - // Act. - executor.Initialize(fileName); - - // Assert. - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - RunConfiguration runConfiguration = - XmlRunSettingsUtilities.GetRunConfigurationNode(this.settingsProvider.ActiveRunSettings.SettingsXml); - Assert.AreEqual(runConfiguration.ResultsDirectory, Constants.DefaultResultsDirectory); - Assert.AreEqual(runConfiguration.TargetFramework.ToString(), Framework.DefaultFramework.ToString()); - Assert.AreEqual(runConfiguration.TargetPlatform, Constants.DefaultPlatform); + } - } + [TestMethod] + public void InitializeShouldSetActiveRunSettingsForTestSettingsFiles() + { + // Arrange. + var fileName = "C:\\temp\\r.testsettings"; + var settingsXml = ""; + + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); + + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; + + // Act. + executor.Initialize(fileName); + + + // Assert. + Assert.IsNotNull(_settingsProvider.ActiveRunSettings); + + var expected = string.Join(Environment.NewLine, + $"", + $"", + $" ", + $" {Constants.DefaultResultsDirectory}", + $" {Constants.DefaultPlatform}", + $" {Framework.DefaultFramework.Name}", + $" ", + $" ", + $" C:\\temp\\r.testsettings", + $" true", + $" ", + $" ", + $" ", + $" ", + $""); + StringAssert.Contains(_settingsProvider.ActiveRunSettings.SettingsXml, expected); + } - [TestMethod] - public void InitializeShouldSetActiveRunSettingsForTestSettingsFiles() - { - // Arrange. - var fileName = "C:\\temp\\r.testsettings"; - var settingsXml = ""; - - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); - - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; - - // Act. - executor.Initialize(fileName); - - - // Assert. - Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); - - var expected = string.Join(Environment.NewLine, - $"", - $"", - $" ", - $" {Constants.DefaultResultsDirectory}", - $" {Constants.DefaultPlatform}", - $" {Framework.DefaultFramework.Name}", - $" ", - $" ", - $" C:\\temp\\r.testsettings", - $" true", - $" ", - $" ", - $" ", - $" ", - $""); - StringAssert.Contains(this.settingsProvider.ActiveRunSettings.SettingsXml, expected); - } + [TestMethod] + public void InitializeShouldUpdateCommandLineOptionsArchitectureAndFxIfProvided() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var settingsXml = $"{nameof(Architecture.X64)}{Constants.DotNetFramework46}"; + + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); + + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; + + // Act. + executor.Initialize(fileName); + + // Assert. + Assert.IsTrue(CommandLineOptions.Instance.ArchitectureSpecified); + Assert.IsTrue(CommandLineOptions.Instance.FrameworkVersionSpecified); + Assert.AreEqual(Architecture.X64, CommandLineOptions.Instance.TargetArchitecture); + Assert.AreEqual(Constants.DotNetFramework46, CommandLineOptions.Instance.TargetFrameworkVersion.Name); + } - [TestMethod] - public void InitializeShouldUpdateCommandLineOptionsArchitectureAndFxIfProvided() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var settingsXml = $"{nameof(Architecture.X64)}{Constants.DotNetFramework46}"; - - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); - - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; - - // Act. - executor.Initialize(fileName); - - // Assert. - Assert.IsTrue(CommandLineOptions.Instance.ArchitectureSpecified); - Assert.IsTrue(CommandLineOptions.Instance.FrameworkVersionSpecified); - Assert.AreEqual(Architecture.X64, CommandLineOptions.Instance.TargetArchitecture); - Assert.AreEqual(Constants.DotNetFramework46, CommandLineOptions.Instance.TargetFrameworkVersion.Name); - } + [TestMethod] + public void InitializeShouldNotUpdateCommandLineOptionsArchitectureAndFxIfNotProvided() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var settingsXml = ""; + + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); + + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; + + // Act. + executor.Initialize(fileName); + + // Assert. + Assert.IsFalse(CommandLineOptions.Instance.ArchitectureSpecified); + Assert.IsFalse(CommandLineOptions.Instance.FrameworkVersionSpecified); + } - [TestMethod] - public void InitializeShouldNotUpdateCommandLineOptionsArchitectureAndFxIfNotProvided() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var settingsXml = ""; - - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); - - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; - - // Act. - executor.Initialize(fileName); - - // Assert. - Assert.IsFalse(CommandLineOptions.Instance.ArchitectureSpecified); - Assert.IsFalse(CommandLineOptions.Instance.FrameworkVersionSpecified); - } + [TestMethod] + public void InitializeShouldPreserveActualJapaneseString() + { + var runsettingsFile = Path.Combine(Path.GetTempPath(), "InitializeShouldPreserveActualJapaneseString.runsettings"); + var settingsXml = @"C:\新しいフォルダー"; - [TestMethod] - public void InitializeShouldPreserveActualJapaneseString() - { - var runsettingsFile = Path.Combine(Path.GetTempPath(), "InitializeShouldPreserveActualJapaneseString.runsettings"); - var settingsXml = @"C:\新しいフォルダー"; + File.WriteAllText(runsettingsFile, settingsXml, Encoding.UTF8); - File.WriteAllText(runsettingsFile, settingsXml, Encoding.UTF8); + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + null); - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - null); + executor.Initialize(runsettingsFile); + Assert.IsTrue(_settingsProvider.ActiveRunSettings!.SettingsXml!.Contains(@"C:\新しいフォルダー")); + File.Delete(runsettingsFile); + } - executor.Initialize(runsettingsFile); - Assert.IsTrue(this.settingsProvider.ActiveRunSettings.SettingsXml.Contains(@"C:\新しいフォルダー")); - File.Delete(runsettingsFile); - } + [TestMethod] + public void InitializeShouldSetInIsolationToTrueIfEnvironmentVariablesSpecified() + { + var settingsXml = @"C:\temp"; - [TestMethod] - public void InitializeShouldSetInIsolataionToTrueIfEnvironmentVariablesSpecified() - { - var settingsXml = @"C:\temp"; + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; + // Act. + executor.Initialize(fileName); - // Act. - executor.Initialize(fileName); + // Assert. + Assert.IsTrue(CommandLineOptions.Instance.InIsolation); + Assert.AreEqual("true", _settingsProvider.QueryRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath)); + } - // Assert. - Assert.IsTrue(CommandLineOptions.Instance.InIsolation); - Assert.AreEqual("true", this.settingsProvider.QueryRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath)); - } + [TestMethod] + public void InitializeShouldNotSetInIsolationToTrueIfEnvironmentVariablesNotSpecified() + { + var settingsXml = @""; - [TestMethod] - public void InitializeShouldNotSetInIsolataionToTrueIfEnvironmentVariablesNotSpecified() - { - var settingsXml = @""; + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; - /// Arrange. - var fileName = "C:\\temp\\r.runsettings"; + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; + // Act. + executor.Initialize(fileName); - // Act. - executor.Initialize(fileName); + // Assert. + Assert.IsFalse(CommandLineOptions.Instance.InIsolation); + Assert.IsNull(_settingsProvider.QueryRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath)); + } - // Assert. - Assert.IsFalse(CommandLineOptions.Instance.InIsolation); - Assert.IsNull(this.settingsProvider.QueryRunSettingsNode(InIsolationArgumentExecutor.RunSettingsPath)); - } + [TestMethod] + public void InitializeShouldUpdateTestCaseFilterIfProvided() + { + // Arrange. + var fileName = "C:\\temp\\r.runsettings"; + var filter = "TestCategory=Included"; + var settingsXml = $"{filter}"; + + var executor = new TestableRunSettingsArgumentExecutor( + CommandLineOptions.Instance, + _settingsProvider, + settingsXml); + + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); + executor.FileHelper = mockFileHelper.Object; + + // Act. + executor.Initialize(fileName); + + // Assert. + Assert.AreEqual(filter, CommandLineOptions.Instance.TestCaseFilterValue); + } + #endregion - [TestMethod] - public void InitializeShouldUpdateTestCaseFilterIfProvided() - { - // Arrange. - var fileName = "C:\\temp\\r.runsettings"; - var filter = "TestCategory=Included"; - var settingsXml = $"{filter}"; - - var executor = new TestableRunSettingsArgumentExecutor( - CommandLineOptions.Instance, - this.settingsProvider, - settingsXml); - - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(It.IsAny())).Returns(true); - executor.FileHelper = mockFileHelper.Object; - - // Act. - executor.Initialize(fileName); - - // Assert. - Assert.AreEqual(filter, CommandLineOptions.Instance.TestCaseFilterValue); - } - #endregion + #region Testable Implementations - #region Testable Implementations + private class TestableRunSettingsArgumentExecutor : RunSettingsArgumentExecutor + { + private readonly string? _runSettingsString; - private class TestableRunSettingsArgumentExecutor : RunSettingsArgumentExecutor - { - private string runSettingsString; + internal TestableRunSettingsArgumentExecutor( + CommandLineOptions commandLineOptions, + IRunSettingsProvider runSettingsManager, + string? runSettings) + : base(commandLineOptions, runSettingsManager) - internal TestableRunSettingsArgumentExecutor( - CommandLineOptions commandLineOptions, - IRunSettingsProvider runSettingsManager, - string runSettings) - : base(commandLineOptions, runSettingsManager) + { + _runSettingsString = runSettings; + } + protected override XmlReader GetReaderForFile(string runSettingsFile) + { + if (_runSettingsString == null) { - this.runSettingsString = runSettings; + return base.GetReaderForFile(runSettingsFile); } - protected override XmlReader GetReaderForFile(string runSettingsFile) - { - if (this.runSettingsString == null) - { - return base.GetReaderForFile(runSettingsFile); - } - - var reader = new StringReader(this.runSettingsString); - var xmlReader = XmlReader.Create(reader, XmlRunSettingsUtilities.ReaderSettings); + var reader = new StringReader(_runSettingsString); + var xmlReader = XmlReader.Create(reader, XmlRunSettingsUtilities.ReaderSettings); - return xmlReader; - } + return xmlReader; } - - #endregion } + + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/RunSpecificTestsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/RunSpecificTestsArgumentProcessorTests.cs index 3a79cd4301..eaffa017fc 100644 --- a/test/vstest.console.UnitTests/Processors/RunSpecificTestsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/RunSpecificTestsArgumentProcessorTests.cs @@ -1,585 +1,606 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +using System.Collections.Generic; +using System.Runtime.Versioning; +using System.Threading.Tasks; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.Client; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class RunSpecificTestsArgumentProcessorTests { - using System; - using System.Collections.Generic; - using System.Runtime.Versioning; - using System.Threading.Tasks; - - using CommandLineUtilities; - using CoreUtilities.Tracing.Interfaces; - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.VisualStudio.TestPlatform.Client; - using Microsoft.VisualStudio.TestPlatform.Client.Discovery; - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using vstest.console.Internal; - using vstest.console.UnitTests.Processors; - - [TestClass] - public class RunSpecificTestsArgumentProcessorTests + private const string NoDiscoveredTestsWarning = @"No test is available in DummyTest.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again."; + private const string TestAdapterPathSuggestion = @"Additionally, path to test adapters can be specified using /TestAdapterPath command. Example /TestAdapterPath:."; + private readonly Mock _mockFileHelper; + private readonly Mock _mockOutput; + private readonly InferHelper _inferHelper; + private readonly string _dummyTestFilePath = "DummyTest.dll"; + private readonly Mock _mockTestPlatformEventSource; + private readonly Mock _mockAssemblyMetadataProvider; + private readonly Task _mockMetricsPublisherTask; + private readonly Mock _mockMetricsPublisher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockAttachmentsProcessingManager; + private readonly Mock _mockArtifactProcessingManager; + private readonly Mock _mockEnvironment; + private readonly Mock _mockEnvironmentVariableHelper; + + private RunSpecificTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager) { - private const string NoDiscoveredTestsWarning = @"No test is available in DummyTest.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again."; - private const string TestAdapterPathSuggestion = @"Additionally, path to test adapters can be specified using /TestAdapterPath command. Example /TestAdapterPath:."; - private readonly Mock mockFileHelper; - private readonly Mock mockOutput; - private readonly InferHelper inferHelper; - private string dummyTestFilePath = "DummyTest.dll"; - private Mock mockTestPlatformEventSource; - private Mock mockAssemblyMetadataProvider; - private Task mockMetricsPublisherTask; - private Mock mockMetricsPublisher; - private Mock mockProcessHelper; - private Mock mockAttachmentsProcessingManager; - - private RunSpecificTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager) - { - var runSettingsProvider = new TestableRunSettingsProvider(); - runSettingsProvider.AddDefaultRunSettings(); - return new RunSpecificTestsArgumentExecutor(CommandLineOptions.Instance, runSettingsProvider, testRequestManager, this.mockOutput.Object); - } - - public RunSpecificTestsArgumentProcessorTests() - { - this.mockFileHelper = new Mock(); - this.mockOutput = new Mock(); - this.mockAssemblyMetadataProvider = new Mock(); - this.inferHelper = new InferHelper(this.mockAssemblyMetadataProvider.Object); - this.mockAssemblyMetadataProvider.Setup(x => x.GetArchitecture(It.IsAny())).Returns(Architecture.X64); - this.mockAssemblyMetadataProvider.Setup(x => x.GetFrameWork(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); - this.mockFileHelper.Setup(fh => fh.Exists(this.dummyTestFilePath)).Returns(true); - this.mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); - this.mockMetricsPublisher = new Mock(); - this.mockMetricsPublisherTask = Task.FromResult(this.mockMetricsPublisher.Object); - this.mockTestPlatformEventSource = new Mock(); - this.mockProcessHelper = new Mock(); - this.mockProcessHelper.Setup(x => x.GetCurrentProcessId()).Returns(1234); - this.mockProcessHelper.Setup(x => x.GetProcessName(It.IsAny())).Returns("dotnet.exe"); - this.mockAttachmentsProcessingManager = new Mock(); - } - - [TestMethod] - public void GetMetadataShouldReturnRunSpecificTestsArgumentProcessorCapabilities() - { - RunSpecificTestsArgumentProcessor processor = new RunSpecificTestsArgumentProcessor(); - - Assert.IsTrue(processor.Metadata.Value is RunSpecificTestsArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecutorShouldReturnRunSpecificTestsArgumentExecutor() - { - RunSpecificTestsArgumentProcessor processor = new RunSpecificTestsArgumentProcessor(); - - Assert.IsTrue(processor.Executor.Value is RunSpecificTestsArgumentExecutor); - } - - #region RunSpecificTestsArgumentProcessorCapabilitiesTests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - RunSpecificTestsArgumentProcessorCapabilities capabilities = new RunSpecificTestsArgumentProcessorCapabilities(); - Assert.AreEqual("/Tests", capabilities.CommandName); - StringAssert.Contains(capabilities.HelpContentResourceName.NormalizeLineEndings(), - "/Tests:\r\n Run tests with names that match the provided values.".NormalizeLineEndings()); - - Assert.AreEqual(HelpContentPriority.RunSpecificTestsArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsTrue(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - #endregion - - #region RunSpecificTestsArgumentExecutorTests - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNull() - { - CommandLineOptions.Instance.Reset(); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => { executor.Initialize(null); }); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsEmpty() - { - CommandLineOptions.Instance.Reset(); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => { executor.Initialize(String.Empty); }); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentIsWhiteSpace() - { - CommandLineOptions.Instance.Reset(); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => { executor.Initialize(" "); }); - } - - [TestMethod] - public void InitializeShouldThrowIfArgumentsAreEmpty() - { - CommandLineOptions.Instance.Reset(); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => { executor.Initialize(" , "); }); - } - - [TestMethod] - public void ExecutorShouldSplitTestsSeparatedByComma() - { - CommandLineOptions.Instance.Reset(); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => executor.Execute()); - } - - [TestMethod] - public void ExecutorExecuteForNoSourcesShouldThrowCommandLineException() - { - CommandLineOptions.Instance.Reset(); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => executor.Execute()); - } + var runSettingsProvider = new TestableRunSettingsProvider(); + runSettingsProvider.AddDefaultRunSettings(); + return new RunSpecificTestsArgumentExecutor(CommandLineOptions.Instance, runSettingsProvider, testRequestManager, _mockArtifactProcessingManager.Object, _mockOutput.Object); + } - [TestMethod] - public void ExecutorExecuteForValidSourceWithTestCaseFilterShouldRunTests() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + public RunSpecificTestsArgumentProcessorTests() + { + _mockFileHelper = new Mock(); + _mockOutput = new Mock(); + _mockAssemblyMetadataProvider = new Mock(); + _inferHelper = new InferHelper(_mockAssemblyMetadataProvider.Object); + _mockAssemblyMetadataProvider.Setup(x => x.GetArchitecture(It.IsAny())).Returns(Architecture.X64); + _mockAssemblyMetadataProvider.Setup(x => x.GetFrameworkName(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); + _mockFileHelper.Setup(fh => fh.Exists(_dummyTestFilePath)).Returns(true); + _mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); + _mockMetricsPublisher = new Mock(); + _mockMetricsPublisherTask = Task.FromResult(_mockMetricsPublisher.Object); + _mockTestPlatformEventSource = new Mock(); + _mockProcessHelper = new Mock(); + _mockProcessHelper.Setup(x => x.GetCurrentProcessId()).Returns(1234); + _mockProcessHelper.Setup(x => x.GetProcessName(It.IsAny())).Returns("dotnet.exe"); + _mockAttachmentsProcessingManager = new Mock(); + _mockArtifactProcessingManager = new Mock(); + _mockEnvironment = new Mock(); + _mockEnvironmentVariableHelper = new Mock(); + } - this.ResetAndAddSourceToCommandLineOptions(); + [TestMethod] + public void GetMetadataShouldReturnRunSpecificTestsArgumentProcessorCapabilities() + { + RunSpecificTestsArgumentProcessor processor = new(); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - CommandLineOptions.Instance.TestCaseFilterValue = "Filter"; - executor.Initialize("Test1"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); - - mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); - mockTestPlatform.Verify(o => o.CreateDiscoveryRequest(It.IsAny(), It.Is(c => c.TestCaseFilter == "Filter"), It.IsAny()), Times.Once()); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + Assert.IsTrue(processor.Metadata.Value is RunSpecificTestsArgumentProcessorCapabilities); + } + [TestMethod] + public void GetExecutorShouldReturnRunSpecificTestsArgumentExecutor() + { + RunSpecificTestsArgumentProcessor processor = new(); - [TestMethod] - public void ExecutorExecuteShouldThrowTestPlatformExceptionThrownDuringDiscovery() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + Assert.IsTrue(processor.Executor!.Value is RunSpecificTestsArgumentExecutor); + } - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + #region RunSpecificTestsArgumentProcessorCapabilitiesTests - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - Assert.ThrowsException(() => executor.Execute()); - } - - [TestMethod] - public void ExecutorExecuteShouldThrowInvalidOperationExceptionThrownDuringDiscovery() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + RunSpecificTestsArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/Tests", capabilities.CommandName); + StringAssert.Contains(capabilities.HelpContentResourceName.NormalizeLineEndings(), + "/Tests:\r\n Run tests with names that match the provided values.".NormalizeLineEndings()); + + Assert.AreEqual(HelpContentPriority.RunSpecificTestsArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsTrue(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + #endregion - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + #region RunSpecificTestsArgumentExecutorTests - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNull() + { + CommandLineOptions.Reset(); - Assert.ThrowsException(() => executor.Execute()); - } + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - [TestMethod] - public void ExecutorExecuteShouldThrowSettingsExceptionThrownDuringDiscovery() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + Assert.ThrowsException(() => executor.Initialize(null)); + } - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new SettingsException("DummySettingsException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + [TestMethod] + public void InitializeShouldThrowIfArgumentIsEmpty() + { + CommandLineOptions.Reset(); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + Assert.ThrowsException(() => executor.Initialize(string.Empty)); + } + + [TestMethod] + public void InitializeShouldThrowIfArgumentIsWhiteSpace() + { + CommandLineOptions.Reset(); + + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + Assert.ThrowsException(() => executor.Initialize(" ")); + } + + [TestMethod] + public void InitializeShouldThrowIfArgumentsAreEmpty() + { + CommandLineOptions.Reset(); + + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + Assert.ThrowsException(() => executor.Initialize(" , ")); + } - Assert.ThrowsException(() => executor.Execute()); - } + [TestMethod] + public void ExecutorShouldSplitTestsSeparatedByComma() + { + CommandLineOptions.Reset(); - [TestMethod] - public void ExecutorExecuteShouldThrowTestPlatformExceptionThrownDuringExecution() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); - - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - - mockTestRunRequest.Setup(dr => dr.ExecuteAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - - executor.Initialize("Test1"); + Assert.ThrowsException(() => executor.Execute()); + } - Assert.ThrowsException(() => executor.Execute()); - } - - [TestMethod] - public void ExecutorExecuteShouldThrowSettingsExceptionThrownDuringExecution() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); - - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - - mockTestRunRequest.Setup(dr => dr.ExecuteAsync()).Throws(new SettingsException("DummySettingsException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + [TestMethod] + public void ExecutorExecuteForNoSourcesShouldThrowCommandLineException() + { + CommandLineOptions.Reset(); - executor.Initialize("Test1"); - - Assert.ThrowsException(() => executor.Execute()); - } - - [TestMethod] - public void ExecutorExecuteShouldThrowInvalidOperationExceptionThrownDuringExecution() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - - mockTestRunRequest.Setup(dr => dr.ExecuteAsync()).Throws(new InvalidOperationException("DummySettingsException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + Assert.ThrowsException(() => executor.Execute()); + } - this.ResetAndAddSourceToCommandLineOptions(); + [TestMethod] + public void ExecutorExecuteForValidSourceWithTestCaseFilterShouldRunTests() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + ResetAndAddSourceToCommandLineOptions(); - executor.Initialize("Test1"); + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - Assert.ThrowsException(() => executor.Execute()); - } + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - [TestMethod] - public void ExecutorExecuteShouldForValidSourcesAndNoTestsDiscoveredShouldLogWarningAndReturnSuccess() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - this.ResetAndAddSourceToCommandLineOptions(); + CommandLineOptions.Instance.TestCaseFilterValue = "Filter"; + executor.Initialize("Test1"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); - // Setting some test adapter path - CommandLineOptions.Instance.TestAdapterPath = @"C:\Foo"; + _mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); + mockTestPlatform.Verify(o => o.CreateDiscoveryRequest(It.IsAny(), It.Is(c => c.TestCaseFilter == "Filter"), It.IsAny(), It.IsAny>(), It.IsAny()), Times.Once()); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(new List())); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); - executor.Initialize("Test1"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + [TestMethod] + public void ExecutorExecuteShouldThrowTestPlatformExceptionThrownDuringDiscovery() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - this.mockOutput.Verify(o => o.WriteLine("Starting test discovery, please wait...", OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.WriteLine(NoDiscoveredTestsWarning, OutputLevel.Warning), Times.Once); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - [TestMethod] - public void ExecutorExecuteShouldForValidSourcesAndNoTestsDiscoveredShouldLogAppropriateWarningIfTestAdapterPathIsNotSetAndReturnSuccess() - { - var mockTestPlatform = new Mock(); - var mockDiscoveryRequest = new Mock(); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - this.ResetAndAddSourceToCommandLineOptions(); + Assert.ThrowsException(() => executor.Execute()); + } - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(new List())); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + [TestMethod] + public void ExecutorExecuteShouldThrowInvalidOperationExceptionThrownDuringDiscovery() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - executor.Initialize("Test1"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.mockOutput.Verify(o => o.WriteLine("Starting test discovery, please wait...", OutputLevel.Information), Times.Once); - this.mockOutput.Verify(o => o.WriteLine(NoDiscoveredTestsWarning + " " + TestAdapterPathSuggestion, OutputLevel.Warning), Times.Once); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - [TestMethod] - public void ExecutorExecuteShouldForValidSourcesAndValidSelectedTestsRunsTestsAndReturnSuccess() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + Assert.ThrowsException(() => executor.Execute()); + } - this.ResetAndAddSourceToCommandLineOptions(); + [TestMethod] + public void ExecutorExecuteShouldThrowSettingsExceptionThrownDuringDiscovery() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Throws(new SettingsException("DummySettingsException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + Assert.ThrowsException(() => executor.Execute()); + } - executor.Initialize("Test1"); + [TestMethod] + public void ExecutorExecuteShouldThrowTestPlatformExceptionThrownDuringExecution() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - [TestMethod] - public void ExecutorShouldRunTestsWhenTestsAreCommaSeparated() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + mockTestRunRequest.Setup(dr => dr.ExecuteAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - ResetAndAddSourceToCommandLineOptions(); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + executor.Initialize("Test1"); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + Assert.ThrowsException(() => executor.Execute()); + } - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + [TestMethod] + public void ExecutorExecuteShouldThrowSettingsExceptionThrownDuringExecution() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - executor.Initialize("Test1, Test2"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + mockTestRunRequest.Setup(dr => dr.ExecuteAsync()).Throws(new SettingsException("DummySettingsException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - [TestMethod] - public void ExecutorShouldRunTestsWhenTestsAreFiltered() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - ResetAndAddSourceToCommandLineOptions(); + executor.Initialize("Test1"); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + Assert.ThrowsException(() => executor.Execute()); + } - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + [TestMethod] + public void ExecutorExecuteShouldThrowInvalidOperationExceptionThrownDuringExecution() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - executor.Initialize("Test1"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + mockTestRunRequest.Setup(dr => dr.ExecuteAsync()).Throws(new InvalidOperationException("DummySettingsException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + ResetAndAddSourceToCommandLineOptions(); - [TestMethod] - public void ExecutorShouldWarnWhenTestsAreNotAvailable() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - ResetAndAddSourceToCommandLineOptions(); + executor.Initialize("Test1"); - List list = new List(); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + Assert.ThrowsException(() => executor.Execute()); + } - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + [TestMethod] + public void ExecutorExecuteShouldForValidSourcesAndNoTestsDiscoveredShouldLogWarningAndReturnSuccess() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + ResetAndAddSourceToCommandLineOptions(); - executor.Initialize("Test1, Test2"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + // Setting some test adapter path + CommandLineOptions.Instance.TestAdapterPath = [@"C:\Foo"]; - mockOutput.Verify(o => o.WriteLine("A total of 1 tests were discovered but some tests do not match the specified selection criteria(Test1). Use right value(s) and try again.", OutputLevel.Warning), Times.Once); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(new List())); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - [TestMethod] - public void ExecutorShouldRunTestsWhenTestsAreCommaSeparatedWithEscape() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); + executor.Initialize("Test1"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); - ResetAndAddSourceToCommandLineOptions(); + _mockOutput.Verify(o => o.WriteLine("Starting test discovery, please wait...", OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.WriteLine(NoDiscoveredTestsWarning, OutputLevel.Warning), Times.Once); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } - List list = new List(); - list.Add(new TestCase("Test1(a,b)", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2(c,d)", new Uri("http://FooTestUri1"), "Source1")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + [TestMethod] + public void ExecutorExecuteShouldForValidSourcesAndNoTestsDiscoveredShouldLogAppropriateWarningIfTestAdapterPathIsNotSetAndReturnSuccess() + { + var mockTestPlatform = new Mock(); + var mockDiscoveryRequest = new Mock(); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(new List())); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - executor.Initialize("Test1(a\\,b), Test2(c\\,d)"); - ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + executor.Initialize("Test1"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); - mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); - Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); - } + _mockOutput.Verify(o => o.WriteLine("Starting test discovery, please wait...", OutputLevel.Information), Times.Once); + _mockOutput.Verify(o => o.WriteLine(NoDiscoveredTestsWarning + " " + TestAdapterPathSuggestion, OutputLevel.Warning), Times.Once); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } - [TestMethod] - public void ExecutorShouldDisplayWarningIfNoTestsAreExecuted() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); - var mockTestRunStats = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldForValidSourcesAndValidSelectedTestsRunsTestsAndReturnSuccess() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + ResetAndAddSourceToCommandLineOptions(); - mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Returns(1).Raises(tr => tr.OnRunCompletion += null, - new TestRunCompleteEventArgs(mockTestRunStats.Object, false, false, null, null, new TimeSpan())); + List list = [new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - executor.Initialize("Test1"); - executor.Execute(); + executor.Initialize("Test1"); - this.mockOutput.Verify(op => op.WriteLine(It.Is(st => st.Contains("Additionally, path to test adapters can be specified using /TestAdapterPath command.")), OutputLevel.Warning), Times.Once); - } + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } - [TestMethod] - public void ExecutorShouldNotDisplayWarningIfTestsAreExecuted() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); - var mockDiscoveryRequest = new Mock(); - var testRunStats = new TestRunStatistics(1, new Dictionary { { TestOutcome.Passed, 1 } }); + [TestMethod] + public void ExecutorShouldRunTestsWhenTestsAreCommaSeparated() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + ResetAndAddSourceToCommandLineOptions(); - mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Returns(1).Raises(tr => tr.OnRunCompletion += null, - new TestRunCompleteEventArgs(testRunStats, false, false, null, null, new TimeSpan())); - - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); - mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); - executor.Initialize("Test1"); - executor.Execute(); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); - this.mockOutput.Verify(op => op.WriteLine(It.Is(st => st.Contains("Additionally, path to test adapters can be specified using /TestAdapterPath command.")), OutputLevel.Warning), Times.Never); - } + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - #endregion + executor.Initialize("Test1, Test2"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); - private void ResetAndAddSourceToCommandLineOptions() - { - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.TestCaseFilterValue = null; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, this.mockFileHelper.Object); - CommandLineOptions.Instance.FileHelper = this.mockFileHelper.Object; - CommandLineOptions.Instance.AddSource(this.dummyTestFilePath); - } + _mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } + + [TestMethod] + public void ExecutorShouldRunTestsWhenTestsAreFiltered() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); + + ResetAndAddSourceToCommandLineOptions(); + + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + executor.Initialize("Test1"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + + _mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } + + [TestMethod] + public void ExecutorShouldWarnWhenTestsAreNotAvailable() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); + + ResetAndAddSourceToCommandLineOptions(); + + List list = [new TestCase("Test2", new Uri("http://FooTestUri1"), "Source1")]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + executor.Initialize("Test1, Test2"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + + _mockOutput.Verify(o => o.WriteLine("A total of 1 tests were discovered but some tests do not match the specified selection criteria(Test1). Use right value(s) and try again.", OutputLevel.Warning), Times.Once); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } + + [TestMethod] + public void ExecutorShouldRunTestsWhenTestsAreCommaSeparatedWithEscape() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); + + ResetAndAddSourceToCommandLineOptions(); + + List list = + [ + new TestCase("Test1(a,b)", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2(c,d)", new Uri("http://FooTestUri1"), "Source1") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + executor.Initialize("Test1(a\\,b), Test2(c\\,d)"); + ArgumentProcessorResult argumentProcessorResult = executor.Execute(); + + _mockOutput.Verify(o => o.WriteLine(It.IsAny(), OutputLevel.Warning), Times.Never); + Assert.AreEqual(ArgumentProcessorResult.Success, argumentProcessorResult); + } + + [TestMethod] + public void ExecutorShouldDisplayWarningIfNoTestsAreExecuted() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); + var mockTestRunStats = new Mock(); + + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + + mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Returns(1).Raises(tr => tr.OnRunCompletion += null, + new TestRunCompleteEventArgs(mockTestRunStats.Object, false, false, null, null, null, new TimeSpan())); + + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + executor.Initialize("Test1"); + executor.Execute(); + + _mockOutput.Verify(op => op.WriteLine(It.Is(st => st.Contains("Additionally, path to test adapters can be specified using /TestAdapterPath command.")), OutputLevel.Warning), Times.Once); + } + + [TestMethod] + public void ExecutorShouldNotDisplayWarningIfTestsAreExecuted() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); + var mockDiscoveryRequest = new Mock(); + var testRunStats = new TestRunStatistics(1, new Dictionary { { TestOutcome.Passed, 1 } }); + + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2") + ]; + mockDiscoveryRequest.Setup(dr => dr.DiscoverAsync()).Raises(dr => dr.OnDiscoveredTests += null, new DiscoveredTestsEventArgs(list)); + + mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Returns(1).Raises(tr => tr.OnRunCompletion += null, + new TestRunCompleteEventArgs(testRunStats, false, false, null, null, null, new TimeSpan())); + + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockDiscoveryRequest.Object); + + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _mockEnvironment.Object, _mockEnvironmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); + + executor.Initialize("Test1"); + executor.Execute(); + + _mockOutput.Verify(op => op.WriteLine(It.Is(st => st.Contains("Additionally, path to test adapters can be specified using /TestAdapterPath command.")), OutputLevel.Warning), Times.Never); + } + + #endregion + + private void ResetAndAddSourceToCommandLineOptions() + { + CommandLineOptions.Reset(); + CommandLineOptions.Instance.TestCaseFilterValue = null; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, _mockFileHelper.Object); + CommandLineOptions.Instance.FileHelper = _mockFileHelper.Object; + CommandLineOptions.Instance.AddSource(_dummyTestFilePath); } } diff --git a/test/vstest.console.UnitTests/Processors/RunTestsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/RunTestsArgumentProcessorTests.cs index f838cd183f..0c31c47d9d 100644 --- a/test/vstest.console.UnitTests/Processors/RunTestsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/RunTestsArgumentProcessorTests.cs @@ -1,332 +1,330 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.Versioning; +using System.Threading.Tasks; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.Client; +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Internal; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; - -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; +using vstest.console.UnitTests.Processors; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +/// +/// Tests for RunTestsArgumentProcessor +/// +[TestClass] +public class RunTestsArgumentProcessorTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Reflection; - using System.Runtime.Versioning; - using System.Threading.Tasks; - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.VisualStudio.TestPlatform.Client; - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Internal; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; - using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using vstest.console.Internal; - using vstest.console.UnitTests.Processors; - - /// - /// Tests for RunTestsArgumentProcessor - /// - [TestClass] - public class RunTestsArgumentProcessorTests + private readonly Mock _mockFileHelper; + private readonly Mock _mockOutput; + private readonly Mock _mockAssemblyMetadataProvider; + private readonly InferHelper _inferHelper; + private readonly string _dummyTestFilePath = "DummyTest.dll"; + private readonly Mock _mockTestPlatformEventSource; + private readonly Task _mockMetricsPublisherTask; + private readonly Mock _mockMetricsPublisher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockAttachmentsProcessingManager; + private readonly Mock _artifactProcessingManager; + private readonly Mock _environment; + private readonly Mock _environmentVariableHelper; + + public RunTestsArgumentProcessorTests() { - private readonly Mock mockFileHelper; - private readonly Mock mockOutput; - private Mock mockAssemblyMetadataProvider; - private InferHelper inferHelper; - private string dummyTestFilePath = "DummyTest.dll"; - private Mock mockTestPlatformEventSource; - private Task mockMetricsPublisherTask; - private Mock mockMetricsPublisher; - private Mock mockProcessHelper; - private Mock mockAttachmentsProcessingManager; - - public RunTestsArgumentProcessorTests() - { - this.mockFileHelper = new Mock(); - this.mockOutput = new Mock(); - this.mockFileHelper.Setup(fh => fh.Exists(this.dummyTestFilePath)).Returns(true); - this.mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); - this.mockMetricsPublisher = new Mock(); - this.mockMetricsPublisherTask = Task.FromResult(this.mockMetricsPublisher.Object); - this.mockTestPlatformEventSource = new Mock(); - this.mockAssemblyMetadataProvider = new Mock(); - this.inferHelper = new InferHelper(this.mockAssemblyMetadataProvider.Object); - SetupMockExtensions(); - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.X86); - this.mockAssemblyMetadataProvider.Setup(x => x.GetFrameWork(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); - this.mockProcessHelper = new Mock(); - this.mockAttachmentsProcessingManager = new Mock(); - } + _mockFileHelper = new Mock(); + _mockOutput = new Mock(); + _mockFileHelper.Setup(fh => fh.Exists(_dummyTestFilePath)).Returns(true); + _mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); + _mockMetricsPublisher = new Mock(); + _mockMetricsPublisherTask = Task.FromResult(_mockMetricsPublisher.Object); + _mockTestPlatformEventSource = new Mock(); + _mockAssemblyMetadataProvider = new Mock(); + _artifactProcessingManager = new Mock(); + _inferHelper = new InferHelper(_mockAssemblyMetadataProvider.Object); + SetupMockExtensions(); + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.X86); + _mockAssemblyMetadataProvider.Setup(x => x.GetFrameworkName(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework40)); + _mockProcessHelper = new Mock(); + _mockAttachmentsProcessingManager = new Mock(); + _environment = new Mock(); + _environmentVariableHelper = new Mock(); + } - [TestMethod] - public void GetMetadataShouldReturnRunTestsArgumentProcessorCapabilities() - { - RunTestsArgumentProcessor processor = new RunTestsArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is RunTestsArgumentProcessorCapabilities); - } + [TestMethod] + public void GetMetadataShouldReturnRunTestsArgumentProcessorCapabilities() + { + RunTestsArgumentProcessor processor = new(); + Assert.IsTrue(processor.Metadata.Value is RunTestsArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecuterShouldReturnRunTestsArgumentProcessorCapabilities() - { - RunTestsArgumentProcessor processor = new RunTestsArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is RunTestsArgumentExecutor); - } + [TestMethod] + public void GetExecuterShouldReturnRunTestsArgumentProcessorCapabilities() + { + RunTestsArgumentProcessor processor = new(); + Assert.IsTrue(processor.Executor!.Value is RunTestsArgumentExecutor); + } - #region RunTestsArgumentProcessorCapabilitiesTests + #region RunTestsArgumentProcessorCapabilitiesTests - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - RunTestsArgumentProcessorCapabilities capabilities = new RunTestsArgumentProcessorCapabilities(); - Assert.AreEqual("/RunTests", capabilities.CommandName); - var expected = "[TestFileNames]\r\n Run tests from the specified files or wild card pattern. Separate multiple test file names or pattern\r\n by spaces. Set console logger verbosity to detailed to view matched test files.\r\n Examples: mytestproject.dll\r\n mytestproject.dll myothertestproject.exe\r\n testproject*.dll my*project.dll"; - Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.RunTestsArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsTrue(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsTrue(capabilities.IsSpecialCommand); - } - #endregion + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + RunTestsArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/RunTests", capabilities.CommandName); + var expected = "[TestFileNames]\r\n Run tests from the specified files or wild card pattern. Separate multiple test file names or pattern\r\n by spaces. Set console logger verbosity to detailed to view matched test files.\r\n Examples: mytestproject.dll\r\n mytestproject.dll myothertestproject.exe\r\n testproject*.dll my*project.dll"; + Assert.AreEqual(expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.RunTestsArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsTrue(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsTrue(capabilities.IsSpecialCommand); + } + #endregion - #region RunTestsArgumentExecutorTests + #region RunTestsArgumentExecutorTests - [TestMethod] - public void ExecutorExecuteShouldReturnSuccessWithoutExecutionInDesignMode() - { - var runSettingsProvider = new TestableRunSettingsProvider(); - runSettingsProvider.UpdateRunSettings(""); + [TestMethod] + public void ExecutorExecuteShouldReturnSuccessWithoutExecutionInDesignMode() + { + var runSettingsProvider = new TestableRunSettingsProvider(); + runSettingsProvider.UpdateRunSettings(""); - CommandLineOptions.Instance.Reset(); - CommandLineOptions.Instance.IsDesignMode = true; - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = new RunTestsArgumentExecutor(CommandLineOptions.Instance, runSettingsProvider, testRequestManager, this.mockOutput.Object); + CommandLineOptions.Reset(); + CommandLineOptions.Instance.IsDesignMode = true; + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = new RunTestsArgumentExecutor(CommandLineOptions.Instance, runSettingsProvider, testRequestManager, _artifactProcessingManager.Object, _mockOutput.Object); - Assert.AreEqual(ArgumentProcessorResult.Success, executor.Execute()); - } + Assert.AreEqual(ArgumentProcessorResult.Success, executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteForNoSourcesShouldThrowCommandLineException() - { - CommandLineOptions.Instance.Reset(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + [TestMethod] + public void ExecutorExecuteForNoSourcesShouldThrowCommandLineException() + { + CommandLineOptions.Reset(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, TestPlatformFactory.GetTestPlatform(), TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - private RunTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager) - { - var runSettingsProvider = new TestableRunSettingsProvider(); - runSettingsProvider.AddDefaultRunSettings(); - var executor = new RunTestsArgumentExecutor( - CommandLineOptions.Instance, - runSettingsProvider, - testRequestManager, - this.mockOutput.Object - ); - return executor; - } + private RunTestsArgumentExecutor GetExecutor(ITestRequestManager testRequestManager) + { + var runSettingsProvider = new TestableRunSettingsProvider(); + runSettingsProvider.AddDefaultRunSettings(); + var executor = new RunTestsArgumentExecutor( + CommandLineOptions.Instance, + runSettingsProvider, + testRequestManager, + _artifactProcessingManager.Object, + _mockOutput.Object + ); + return executor; + } - [TestMethod] - public void ExecutorExecuteShouldThrowTestPlatformException() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowTestPlatformException() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); - mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new TestPlatformException("DummyTestPlatformException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldThrowSettingsException() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowSettingsException() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); - mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new SettingsException("DummySettingsException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new SettingsException("DummySettingsException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldThrowInvalidOperationException() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowInvalidOperationException() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); - mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new InvalidOperationException("DummyInvalidOperationException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldThrowOtherExceptions() - { - var mockTestPlatform = new Mock(); - var mockTestRunRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldThrowOtherExceptions() + { + var mockTestPlatform = new Mock(); + var mockTestRunRequest = new Mock(); - mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new Exception("DummyException")); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(mockTestRunRequest.Object); + mockTestRunRequest.Setup(tr => tr.ExecuteAsync()).Throws(new Exception("DummyException")); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(mockTestRunRequest.Object); - this.ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + ResetAndAddSourceToCommandLineOptions(); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - Assert.ThrowsException(() => executor.Execute()); - } + Assert.ThrowsException(() => executor.Execute()); + } - [TestMethod] - public void ExecutorExecuteShouldForListOfTestsReturnSuccess() - { - var mockTestRunRequest = new Mock(); + [TestMethod] + public void ExecutorExecuteShouldForListOfTestsReturnSuccess() + { + var mockTestRunRequest = new Mock(); - var result = this.RunRunArgumentProcessorExecuteWithMockSetup(mockTestRunRequest.Object); + var result = RunRunArgumentProcessorExecuteWithMockSetup(mockTestRunRequest.Object); - mockTestRunRequest.Verify(tr => tr.ExecuteAsync(), Times.Once); - Assert.AreEqual(ArgumentProcessorResult.Success, result); - } + mockTestRunRequest.Verify(tr => tr.ExecuteAsync(), Times.Once); + Assert.AreEqual(ArgumentProcessorResult.Success, result); + } - [TestMethod] - public void TestRunRequestManagerShouldInstrumentExecutionRequestStart() - { - var mockTestRunRequest = new Mock(); + [TestMethod] + public void TestRunRequestManagerShouldInstrumentExecutionRequestStart() + { + var mockTestRunRequest = new Mock(); - var result = this.RunRunArgumentProcessorExecuteWithMockSetup(mockTestRunRequest.Object); + var result = RunRunArgumentProcessorExecuteWithMockSetup(mockTestRunRequest.Object); - this.mockTestPlatformEventSource.Verify(x => x.ExecutionRequestStart(), Times.Once); - } + _mockTestPlatformEventSource.Verify(x => x.ExecutionRequestStart(), Times.Once); + } - [TestMethod] - public void TestRunRequestManagerShouldInstrumentExecutionRequestStop() - { - var mockTestRunRequest = new Mock(); + [TestMethod] + public void TestRunRequestManagerShouldInstrumentExecutionRequestStop() + { + var mockTestRunRequest = new Mock(); - var result = this.RunRunArgumentProcessorExecuteWithMockSetup(mockTestRunRequest.Object); + var result = RunRunArgumentProcessorExecuteWithMockSetup(mockTestRunRequest.Object); - this.mockTestPlatformEventSource.Verify(x => x.ExecutionRequestStop(), Times.Once); - } + _mockTestPlatformEventSource.Verify(x => x.ExecutionRequestStop(), Times.Once); + } - #endregion + #endregion - private ArgumentProcessorResult RunRunArgumentProcessorExecuteWithMockSetup(ITestRunRequest testRunRequest) - { - var mockTestPlatform = new Mock(); - var mockConsoleOutput = new Mock(); + private ArgumentProcessorResult RunRunArgumentProcessorExecuteWithMockSetup(ITestRunRequest testRunRequest) + { + var mockTestPlatform = new Mock(); + var mockConsoleOutput = new Mock(); - List list = new List(); - list.Add(new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1")); - list.Add(new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2")); - var mockTestRunStats = new Mock(); + List list = + [ + new TestCase("Test1", new Uri("http://FooTestUri1"), "Source1"), + new TestCase("Test2", new Uri("http://FooTestUri2"), "Source2") + ]; + var mockTestRunStats = new Mock(); - var args = new TestRunCompleteEventArgs(mockTestRunStats.Object, false, false, null, null, new TimeSpan()); + var args = new TestRunCompleteEventArgs(mockTestRunStats.Object, false, false, null, null, null, new TimeSpan()); - mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Returns(testRunRequest); + mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Returns(testRunRequest); - this.ResetAndAddSourceToCommandLineOptions(); + ResetAndAddSourceToCommandLineOptions(); - var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, this.mockTestPlatformEventSource.Object, this.inferHelper, this.mockMetricsPublisherTask, this.mockProcessHelper.Object, this.mockAttachmentsProcessingManager.Object); - var executor = GetExecutor(testRequestManager); + var testRequestManager = new TestRequestManager(CommandLineOptions.Instance, mockTestPlatform.Object, TestRunResultAggregator.Instance, _mockTestPlatformEventSource.Object, _inferHelper, _mockMetricsPublisherTask, _mockProcessHelper.Object, _mockAttachmentsProcessingManager.Object, _environment.Object, _environmentVariableHelper.Object); + var executor = GetExecutor(testRequestManager); - return executor.Execute(); - } + return executor.Execute(); + } - private void ResetAndAddSourceToCommandLineOptions() - { - CommandLineOptions.Instance.Reset(); + private void ResetAndAddSourceToCommandLineOptions() + { + CommandLineOptions.Reset(); - CommandLineOptions.Instance.FileHelper = this.mockFileHelper.Object; - CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, this.mockFileHelper.Object); - CommandLineOptions.Instance.AddSource(this.dummyTestFilePath); - } + CommandLineOptions.Instance.FileHelper = _mockFileHelper.Object; + CommandLineOptions.Instance.FilePatternParser = new FilePatternParser(new Mock().Object, _mockFileHelper.Object); + CommandLineOptions.Instance.AddSource(_dummyTestFilePath); + } + + public static void SetupMockExtensions() + { + // Setup mocks. + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); + mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, new[] { ".dll" })) + .Callback(() => { }) + .Returns(new string[] { typeof(RunTestsArgumentProcessorTests).Assembly.Location, typeof(ConsoleLogger).Assembly.Location }); + + var testableTestPluginCache = new TestableTestPluginCache(); - public static void SetupMockExtensions() + // Setup the testable instance. + TestPluginCache.Instance = testableTestPluginCache; + } + + [ExtensionUri("testlogger://logger")] + [FriendlyName("TestLoggerExtension")] + private class ValidLogger3 : ITestLogger + { + public void Initialize(TestLoggerEvents events, string testRunDirectory) { - SetupMockExtensions(() => { }); + events.TestRunMessage += TestMessageHandler; + events.TestRunComplete += Events_TestRunComplete; + events.TestResult += Events_TestResult; } - public static void SetupMockExtensions(Action callback) + private void Events_TestResult(object? sender, TestResultEventArgs e) { - SetupMockExtensions(new string[] { typeof(RunTestsArgumentProcessorTests).GetTypeInfo().Assembly.Location, typeof(ConsoleLogger).GetTypeInfo().Assembly.Location }, callback); } - public static void SetupMockExtensions(string[] extensions, Action callback) + private void Events_TestRunComplete(object? sender, TestRunCompleteEventArgs e) { - // Setup mocks. - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(true); - mockFileHelper.Setup(fh => fh.EnumerateFiles(It.IsAny(), SearchOption.TopDirectoryOnly, new[] { ".dll" })) - .Callback(callback) - .Returns(extensions); - var testableTestPluginCache = new TestableTestPluginCache(); - - // Setup the testable instance. - TestPluginCache.Instance = testableTestPluginCache; } - [ExtensionUri("testlogger://logger")] - [FriendlyName("TestLoggerExtension")] - private class ValidLogger3 : ITestLogger + private void TestMessageHandler(object? sender, TestRunMessageEventArgs e) { - public void Initialize(TestLoggerEvents events, string testRunDirectory) - { - events.TestRunMessage += TestMessageHandler; - events.TestRunComplete += Events_TestRunComplete; - events.TestResult += Events_TestResult; - } - - private void Events_TestResult(object sender, TestResultEventArgs e) - { - } - - private void Events_TestRunComplete(object sender, TestRunCompleteEventArgs e) - { - - } - - private void TestMessageHandler(object sender, TestRunMessageEventArgs e) - { - } } } +} - #region Testable implementation +#region Testable implementation - public class TestableTestPluginCache : TestPluginCache - { - } - - #endregion +public class TestableTestPluginCache : TestPluginCache +{ +} -} \ No newline at end of file +#endregion diff --git a/test/vstest.console.UnitTests/Processors/ShowDeprecateDotnetVStestMessageArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/ShowDeprecateDotnetVStestMessageArgumentProcessorTests.cs new file mode 100644 index 0000000000..ce33c73f8a --- /dev/null +++ b/test/vstest.console.UnitTests/Processors/ShowDeprecateDotnetVStestMessageArgumentProcessorTests.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace vstest.console.UnitTests.Processors; + +[TestClass] +[TestCategory("Windows-Review")] +public class ShowDeprecateDotnetVStestMessageArgumentProcessorTests +{ + [TestMethod] + public void ShowDeprecateDotnetVStestMessageProcessorCommandName() + { + Assert.AreEqual("/ShowDeprecateDotnetVSTestMessage", ShowDeprecateDotnetVStestMessageArgumentProcessor.CommandName); + } + + [TestMethod] + public void ShowDeprecateDotnetVStestMessageProcessorCapabilities() + { + ShowDeprecateDotnetVStestMessageProcessorCapabilities showDeprecateDotnetVStestMessageProcessorCapabilities = new(); + Assert.IsNull(showDeprecateDotnetVStestMessageProcessorCapabilities.HelpContentResourceName); + Assert.IsFalse(showDeprecateDotnetVStestMessageProcessorCapabilities.IsAction); + Assert.IsFalse(showDeprecateDotnetVStestMessageProcessorCapabilities.AllowMultiple); + Assert.AreEqual(ArgumentProcessorPriority.CliRunSettings, showDeprecateDotnetVStestMessageProcessorCapabilities.Priority); + Assert.AreEqual(HelpContentPriority.None, showDeprecateDotnetVStestMessageProcessorCapabilities.HelpPriority); + } + + [TestMethod] + public void ShowDeprecateDotnetVStestMessageArgumentProcessorReturnsCorrectTypes() + { + ShowDeprecateDotnetVStestMessageArgumentProcessor showDeprecateDotnetVStestMessageArgumentProcessor = new(); + Assert.IsInstanceOfType(showDeprecateDotnetVStestMessageArgumentProcessor.Executor!.Value, typeof(ShowDeprecateDotnetVStestMessageProcessorExecutor)); + Assert.IsInstanceOfType(showDeprecateDotnetVStestMessageArgumentProcessor.Metadata!.Value, typeof(ShowDeprecateDotnetVStestMessageProcessorCapabilities)); + } + + + [TestMethod] + public void ShowDeprecateDotnetVStestMessageProcessorExecutor_Succeeded() + { + ShowDeprecateDotnetVStestMessageProcessorExecutor showDeprecateDotnetVStestMessageProcessorExecutor = new(); + showDeprecateDotnetVStestMessageProcessorExecutor.Initialize("we will ignore the param"); + Assert.AreEqual(ArgumentProcessorResult.Success, showDeprecateDotnetVStestMessageProcessorExecutor.Execute()); + } +} diff --git a/test/vstest.console.UnitTests/Processors/TestAdapterLoadingStrategyArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/TestAdapterLoadingStrategyArgumentProcessorTests.cs new file mode 100644 index 0000000000..f60d0ffb8d --- /dev/null +++ b/test/vstest.console.UnitTests/Processors/TestAdapterLoadingStrategyArgumentProcessorTests.cs @@ -0,0 +1,122 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class TestAdapterLoadingStrategyArgumentProcessorTests +{ + private readonly RunSettings _currentActiveSetting; + + public TestAdapterLoadingStrategyArgumentProcessorTests() + { + _currentActiveSetting = RunSettingsManager.Instance.ActiveRunSettings; + } + + [TestCleanup] + public void TestClean() + { + RunSettingsManager.Instance.SetActiveRunSettings(_currentActiveSetting); + } + + [TestMethod] + [TestCategory("Windows")] + public void InitializeShouldHonorEnvironmentVariablesInTestAdapterPaths() + { + var runSettingsXml = "%temp%\\adapters1;%temp%\\adapters2"; + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(runSettingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var mockFileHelper = new Mock(); + var mockOutput = new Mock(); + + mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + mockFileHelper.Setup(x => x.GetFullPath(It.IsAny())).Returns((Func)(s => Path.GetFullPath(s))); + + var executor = new TestAdapterLoadingStrategyArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); + + executor.Initialize(nameof(TestAdapterLoadingStrategy.Default)); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); + + var tempPath = Path.GetFullPath(Environment.ExpandEnvironmentVariables("%temp%")); + Assert.AreEqual($"{tempPath}\\adapters1;{tempPath}\\adapters2", runConfiguration.TestAdaptersPaths); + } + + [TestMethod] + [TestCategory("Windows")] + public void InitializeShouldAddRightAdapterPathInErrorMessage() + { + var runSettingsXml = "d:\\users"; + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(runSettingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var mockFileHelper = new Mock(); + var mockOutput = new Mock(); + + mockFileHelper.Setup(x => x.DirectoryExists("d:\\users")).Returns(false); + mockFileHelper.Setup(x => x.DirectoryExists("c:\\users")).Returns(true); + var executor = new TestAdapterLoadingStrategyArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); + + var message = "The path 'd:\\users' specified in the 'TestAdapterPath' is invalid. Error: The custom test adapter search path provided was not found, provide a valid path and try again."; + + var isExceptionThrown = false; + try + { + executor.Initialize(nameof(TestAdapterLoadingStrategy.Default)); + } + catch (Exception ex) + { + isExceptionThrown = true; + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual(message, ex.Message); + } + + Assert.IsTrue(isExceptionThrown); + } + + + [TestMethod] + public void InitializeShouldThrowIfPathDoesNotExist() + { + var folder = "C:\\temp\\thisfolderdoesnotexist"; + var runSettingsXml = "" + folder + ""; + var runSettings = new RunSettings(); + + runSettings.LoadSettingsXml(runSettingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + + var mockOutput = new Mock(); + var executor = new TestAdapterLoadingStrategyArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, new FileHelper()); + + var message = $"The path '{folder}' specified in the 'TestAdapterPath' is invalid. Error: The custom test adapter search path provided was not found, provide a valid path and try again."; + + var isExceptionThrown = false; + + try + { + executor.Initialize(nameof(TestAdapterLoadingStrategy.Default)); + } + catch (Exception ex) + { + isExceptionThrown = true; + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual(message, ex.Message); + } + + Assert.IsTrue(isExceptionThrown); + } +} diff --git a/test/vstest.console.UnitTests/Processors/TestAdapterPathArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/TestAdapterPathArgumentProcessorTests.cs index 7069c4a4b4..8dd96a60ad 100644 --- a/test/vstest.console.UnitTests/Processors/TestAdapterPathArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/TestAdapterPathArgumentProcessorTests.cs @@ -1,325 +1,198 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +using System.Collections.Generic; +using System.IO; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Utilities; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class TestAdapterPathArgumentProcessorTests { - using System; - using System.Collections.Generic; - using System.IO; - using System.Reflection; - - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Utilities; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - - [TestClass] - public class TestAdapterPathArgumentProcessorTests + private readonly RunSettings _currentActiveSetting; + + public TestAdapterPathArgumentProcessorTests() { - RunSettings currentActiveSetting; + _currentActiveSetting = RunSettingsManager.Instance.ActiveRunSettings; + } - [TestInitialize] - public void TestInit() - { - currentActiveSetting = RunSettingsManager.Instance.ActiveRunSettings; - } + [TestCleanup] + public void TestClean() + { + RunSettingsManager.Instance.SetActiveRunSettings(_currentActiveSetting); + } - [TestCleanup] - public void TestClean() - { - RunSettingsManager.Instance.SetActiveRunSettings(currentActiveSetting); - } + [TestMethod] + public void GetMetadataShouldReturnTestAdapterPathArgumentProcessorCapabilities() + { + var processor = new TestAdapterPathArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is TestAdapterPathArgumentProcessorCapabilities); + } - [TestMethod] - public void GetMetadataShouldReturnTestAdapterPathArgumentProcessorCapabilities() - { - var processor = new TestAdapterPathArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is TestAdapterPathArgumentProcessorCapabilities); - } + [TestMethod] + public void GetExecuterShouldReturnTestAdapterPathArgumentProcessorCapabilities() + { + var processor = new TestAdapterPathArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is TestAdapterPathArgumentExecutor); + } - [TestMethod] - public void GetExecuterShouldReturnTestAdapterPathArgumentProcessorCapabilities() - { - var processor = new TestAdapterPathArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is TestAdapterPathArgumentExecutor); - } + #region TestAdapterPathArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new TestAdapterPathArgumentProcessorCapabilities(); + Assert.AreEqual("/TestAdapterPath", capabilities.CommandName); + var expected = "--TestAdapterPath|/TestAdapterPath\r\n This makes vstest.console.exe process use custom test adapters\r\n from a given path (if any) in the test run. \r\n Example /TestAdapterPath:"; + Assert.AreEqual(expected: expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); + + Assert.AreEqual(HelpContentPriority.TestAdapterPathArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.TestAdapterPath, capabilities.Priority); + + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } - #region TestAdapterPathArgumentProcessorCapabilities tests + #endregion - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new TestAdapterPathArgumentProcessorCapabilities(); - Assert.AreEqual("/TestAdapterPath", capabilities.CommandName); - var expected = "--TestAdapterPath|/TestAdapterPath\r\n This makes vstest.console.exe process use custom test adapters\r\n from a given path (if any) in the test run. \r\n Example /TestAdapterPath:"; - Assert.AreEqual(expected: expected.NormalizeLineEndings().ShowWhiteSpace(), capabilities.HelpContentResourceName.NormalizeLineEndings().ShowWhiteSpace()); - - Assert.AreEqual(HelpContentPriority.TestAdapterPathArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.TestAdapterPath, capabilities.Priority); - - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + #region TestAdapterPathArgumentExecutor tests - #endregion + [TestMethod] + public void InitializeShouldThrowIfArgumentIsNull() + { + var mockRunSettingsProvider = new Mock(); + var mockOutput = new Mock(); + var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, mockRunSettingsProvider.Object, mockOutput.Object, new FileHelper()); - #region TestAdapterPathArgumentExecutor tests + var message = + @"The /TestAdapterPath parameter requires a value, which is path of a location containing custom test adapters. Example: /TestAdapterPath:c:\MyCustomAdapters"; - [TestMethod] - public void InitializeShouldThrowIfArgumentIsNull() - { - var mockRunSettingsProvider = new Mock(); - var mockOutput = new Mock(); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, mockRunSettingsProvider.Object, mockOutput.Object, new FileHelper()); - - var message = - @"The /TestAdapterPath parameter requires a value, which is path of a location containing custom test adapters. Example: /TestAdapterPath:c:\MyCustomAdapters"; - - var isExceptionThrown = false; - - try - { - executor.Initialize(null); - } - catch (Exception ex) - { - isExceptionThrown = true; - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual(message, ex.Message); - } - - Assert.IsTrue(isExceptionThrown); - } + var isExceptionThrown = false; - [TestMethod] - public void InitializeShouldThrowIfArgumentIsAWhiteSpace() + try { - var mockRunSettingsProvider = new Mock(); - var mockOutput = new Mock(); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, mockRunSettingsProvider.Object, mockOutput.Object, new FileHelper()); - - var message = - @"The /TestAdapterPath parameter requires a value, which is path of a location containing custom test adapters. Example: /TestAdapterPath:c:\MyCustomAdapters"; - - var isExceptionThrown = false; - - try - { - executor.Initialize(" "); - } - catch (Exception ex) - { - isExceptionThrown = true; - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual(message, ex.Message); - } - - Assert.IsTrue(isExceptionThrown); + executor.Initialize(null); } - - [TestMethod] - public void InitializeShouldThrowIfPathDoesNotExist() + catch (Exception ex) { - var mockRunSettingsProvider = new Mock(); - var mockOutput = new Mock(); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, mockRunSettingsProvider.Object, mockOutput.Object, new FileHelper()); - - var folder = "C:\\temp\\thisfolderdoesnotexist"; - - var message = string.Format( - @"The path '{0}' specified in the 'TestAdapterPath' is invalid. Error: {1}", - folder, - "The custom test adapter search path provided was not found, provide a valid path and try again."); - - var isExceptionThrown = false; - - try - { - executor.Initialize(folder); - } - catch (Exception ex) - { - isExceptionThrown = true; - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual(message, ex.Message); - } - - Assert.IsTrue(isExceptionThrown); + isExceptionThrown = true; + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual(message, ex.Message); } - [TestMethod] - public void InitializeShouldUpdateTestAdapterPathInRunSettings() - { - RunSettingsManager.Instance.AddDefaultRunSettings(); + Assert.IsTrue(isExceptionThrown); + } - var mockOutput = new Mock(); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, new FileHelper()); + [TestMethod] + public void InitializeShouldThrowIfArgumentIsAWhiteSpace() + { + var mockRunSettingsProvider = new Mock(); + var mockOutput = new Mock(); + var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, mockRunSettingsProvider.Object, mockOutput.Object, new FileHelper()); - var currentAssemblyPath = typeof(TestAdapterPathArgumentExecutor).GetTypeInfo().Assembly.Location; - var currentFolder = Path.GetDirectoryName(currentAssemblyPath); + var message = + @"The /TestAdapterPath parameter requires a value, which is path of a location containing custom test adapters. Example: /TestAdapterPath:c:\MyCustomAdapters"; - executor.Initialize(currentFolder); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); - Assert.AreEqual(currentFolder, runConfiguration.TestAdaptersPaths); - } + var isExceptionThrown = false; - [TestMethod] - [TestCategory("Windows")] - public void InitializeShouldMergeTestAdapterPathsInRunSettings() + try { - var runSettingsXml = "d:\\users;f:\\users"; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(runSettingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var mockFileHelper = new Mock(); - var mockOutput = new Mock(); - - mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); - - executor.Initialize("c:\\users"); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); - Assert.AreEqual("d:\\users;f:\\users;c:\\users", runConfiguration.TestAdaptersPaths); + executor.Initialize(" "); } - - [TestMethod] - [TestCategory("Windows")] - public void InitializeShouldMergeTestAdapterPathsInRunSettingsIgnoringDuplicatePaths() + catch (Exception ex) { - var runSettingsXml = "d:\\users;c:\\users"; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(runSettingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var mockFileHelper = new Mock(); - var mockOutput = new Mock(); - - mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); - - executor.Initialize("c:\\users"); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); - Assert.AreEqual("d:\\users;c:\\users", runConfiguration.TestAdaptersPaths); + isExceptionThrown = true; + Assert.IsTrue(ex is CommandLineException); + Assert.AreEqual(message, ex.Message); } - [TestMethod] - [TestCategory("Windows")] - public void InitializeShouldMergeMultipleTestAdapterPathsWithPathsInRunSettings() - { - var runSettingsXml = "d:\\users;f:\\users"; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(runSettingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var mockFileHelper = new Mock(); - var mockOutput = new Mock(); - - mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); - - executor.Initialize("c:\\users;e:\\users"); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); - Assert.AreEqual("d:\\users;f:\\users;c:\\users;e:\\users", runConfiguration.TestAdaptersPaths); - } + Assert.IsTrue(isExceptionThrown); + } - [TestMethod] - [TestCategory("Windows")] - public void InitializeShouldHonorEnvironmentVariablesInTestAdapterPaths() - { - var runSettingsXml = "%temp%\\adapters1"; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(runSettingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var mockFileHelper = new Mock(); - var mockOutput = new Mock(); + [TestMethod] + public void InitializeShouldUpdateTestAdapterPathInRunSettings() + { + RunSettingsManager.Instance.AddDefaultRunSettings(); - mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); + var mockOutput = new Mock(); + var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, new FileHelper()); - executor.Initialize("%temp%\\adapters2"); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); + var currentAssemblyPath = typeof(TestAdapterPathArgumentExecutor).Assembly.Location; + var currentFolder = Path.GetDirectoryName(currentAssemblyPath); - var tempPath = Path.GetFullPath(Environment.ExpandEnvironmentVariables("%temp%")); - Assert.AreEqual(string.Format("{0}\\adapters1;{0}\\adapters2", tempPath), runConfiguration.TestAdaptersPaths); - } + executor.Initialize(currentFolder); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); + Assert.AreEqual(currentFolder, runConfiguration.TestAdaptersPaths); + } - [TestMethod] - [TestCategory("Windows")] - public void InitializeShouldAddRightAdapterPathInErrorMessage() - { - var runSettingsXml = "d:\\users"; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(runSettingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var mockFileHelper = new Mock(); - var mockOutput = new Mock(); - - mockFileHelper.Setup(x => x.DirectoryExists("d:\\users")).Returns(false); - mockFileHelper.Setup(x => x.DirectoryExists("c:\\users")).Returns(true); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); - - var message = string.Format( - @"The path '{0}' specified in the 'TestAdapterPath' is invalid. Error: {1}", - "d:\\users", - "The custom test adapter search path provided was not found, provide a valid path and try again."); - - var isExceptionThrown = false; - try - { - executor.Initialize("c:\\users"); - } - catch (Exception ex) - { - isExceptionThrown = true; - Assert.IsTrue(ex is CommandLineException); - Assert.AreEqual(message, ex.Message); - } - - Assert.IsTrue(isExceptionThrown); - } + [TestMethod] + [TestCategory("Windows")] + public void InitializeShouldMergeTestAdapterPathsInRunSettings() + { + var runSettingsXml = "d:\\users;f:\\users"; + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(runSettingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var mockFileHelper = new Mock(); + var mockOutput = new Mock(); + + mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); + + executor.Initialize("c:\\users"); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); + Assert.AreEqual("d:\\users;f:\\users;c:\\users", runConfiguration.TestAdaptersPaths); + } - [TestMethod] - [TestCategory("Windows")] - public void InitializeShouldTrimTrailingAndLeadingDoubleQuotes() - { - var runSettingsXml = "d:\\users"; - var runSettings = new RunSettings(); - runSettings.LoadSettingsXml(runSettingsXml); - RunSettingsManager.Instance.SetActiveRunSettings(runSettings); - var mockFileHelper = new Mock(); - var mockOutput = new Mock(); + [TestMethod] + [TestCategory("Windows")] + public void InitializeShouldTrimTrailingAndLeadingDoubleQuotes() + { + var runSettingsXml = "d:\\users"; + var runSettings = new RunSettings(); + runSettings.LoadSettingsXml(runSettingsXml); + RunSettingsManager.Instance.SetActiveRunSettings(runSettings); + var mockFileHelper = new Mock(); + var mockOutput = new Mock(); - mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); - var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); + mockFileHelper.Setup(x => x.DirectoryExists(It.IsAny())).Returns(true); + var executor = new TestAdapterPathArgumentExecutor(CommandLineOptions.Instance, RunSettingsManager.Instance, mockOutput.Object, mockFileHelper.Object); - executor.Initialize("\"c:\\users\""); - var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); - Assert.AreEqual("d:\\users;c:\\users", runConfiguration.TestAdaptersPaths); + executor.Initialize("\"c:\\users\""); + var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(RunSettingsManager.Instance.ActiveRunSettings.SettingsXml); + Assert.AreEqual("d:\\users;c:\\users", runConfiguration.TestAdaptersPaths); - } + } - #endregion + #endregion - #region Testable implementations + #region Testable implementations - private class TestableTestAdapterPathArgumentExecutor : TestAdapterPathArgumentExecutor + private class TestableTestAdapterPathArgumentExecutor : TestAdapterPathArgumentExecutor + { + internal TestableTestAdapterPathArgumentExecutor(CommandLineOptions options, IRunSettingsProvider runSettingsProvider, IOutput output, IFileHelper fileHelper) + : base(options, runSettingsProvider, output, fileHelper) { - internal TestableTestAdapterPathArgumentExecutor(CommandLineOptions options, IRunSettingsProvider runSettingsProvider, IOutput output, IFileHelper fileHelper) - : base(options, runSettingsProvider, output, fileHelper) - { - } - - internal Func> TestAdapters { get; set; } } - #endregion + internal Func>? TestAdapters { get; set; } } -} \ No newline at end of file + + #endregion +} diff --git a/test/vstest.console.UnitTests/Processors/TestCaseFilterArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/TestCaseFilterArgumentProcessorTests.cs index 7bd0c9292d..f16d22e52c 100644 --- a/test/vstest.console.UnitTests/Processors/TestCaseFilterArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/TestCaseFilterArgumentProcessorTests.cs @@ -1,100 +1,98 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors -{ - using System; +using System; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; - [TestClass] - public class TestCaseFilterArgumentProcessorTests +[TestClass] +public class TestCaseFilterArgumentProcessorTests +{ + [TestMethod] + public void GetMetadataShouldReturnTestCaseFilterArgumentProcessorCapabilities() { - [TestMethod] - public void GetMetadataShouldReturnTestCaseFilterArgumentProcessorCapabilities() - { - TestCaseFilterArgumentProcessor processor = new TestCaseFilterArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is TestCaseFilterArgumentProcessorCapabilities); - } + TestCaseFilterArgumentProcessor processor = new(); + Assert.IsTrue(processor.Metadata.Value is TestCaseFilterArgumentProcessorCapabilities); + } - [TestMethod] - public void GetExecutorShouldReturnTestCaseFilterArgumentProcessorCapabilities() - { - TestCaseFilterArgumentProcessor processor = new TestCaseFilterArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is TestCaseFilterArgumentExecutor); - } + [TestMethod] + public void GetExecutorShouldReturnTestCaseFilterArgumentProcessorCapabilities() + { + TestCaseFilterArgumentProcessor processor = new(); + Assert.IsTrue(processor.Executor!.Value is TestCaseFilterArgumentExecutor); + } - #region TestCaseFilterArgumentProcessorCapabilitiesTests + #region TestCaseFilterArgumentProcessorCapabilitiesTests - [TestMethod] - public void CapabilitiesShouldAppropriateProperties() - { - TestCaseFilterArgumentProcessorCapabilities capabilities = new TestCaseFilterArgumentProcessorCapabilities(); - Assert.AreEqual("/TestCaseFilter", capabilities.CommandName); - StringAssert.Contains(capabilities.HelpContentResourceName, "/TestCaseFilter:" + Environment.NewLine + " Run tests that match the given expression." + Environment.NewLine + " is of the format Operator[|&]"); + [TestMethod] + public void CapabilitiesShouldAppropriateProperties() + { + TestCaseFilterArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/TestCaseFilter", capabilities.CommandName); + StringAssert.Contains(capabilities.HelpContentResourceName, "/TestCaseFilter:" + Environment.NewLine + " Run tests that match the given expression." + Environment.NewLine + " is of the format Operator[|&]"); - Assert.AreEqual(HelpContentPriority.TestCaseFilterArgumentProcessorHelpPriority, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + Assert.AreEqual(HelpContentPriority.TestCaseFilterArgumentProcessorHelpPriority, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion - #endregion + [TestMethod] + public void ExecutorInitializeWithNullOrEmptyTestCaseFilterShouldThrowCommandLineException() + { + var options = CommandLineOptions.Instance; + TestCaseFilterArgumentExecutor executor = new(options); - [TestMethod] - public void ExecutorInitializeWithNullOrEmptyTestCaseFilterShouldThrowCommandLineException() + try { - var options = CommandLineOptions.Instance; - TestCaseFilterArgumentExecutor executor = new TestCaseFilterArgumentExecutor(options); - - try - { - executor.Initialize(null); - } - catch (Exception ex) - { - Assert.IsTrue(ex is CommandLineException); - StringAssert.Contains(ex.Message, @"The /TestCaseFilter argument requires the filter value."); - } + executor.Initialize(null); + } + catch (Exception ex) + { + Assert.IsTrue(ex is CommandLineException); + StringAssert.Contains(ex.Message, @"The /TestCaseFilter argument requires the filter value."); } + } - [TestMethod] - public void ExecutorInitializeWithNullOrEmptyTestCaseFilterShouldNotThrowWhenTestFilterWasSpecifiedByPreviousStep() - { - var options = CommandLineOptions.Instance; - options.TestCaseFilterValue = "Test=FilterFromPreviousStep"; - TestCaseFilterArgumentExecutor executor = new TestCaseFilterArgumentExecutor(options); + [TestMethod] + public void ExecutorInitializeWithNullOrEmptyTestCaseFilterShouldNotThrowWhenTestFilterWasSpecifiedByPreviousStep() + { + var options = CommandLineOptions.Instance; + options.TestCaseFilterValue = "Test=FilterFromPreviousStep"; + TestCaseFilterArgumentExecutor executor = new(options); - executor.Initialize(null); - } + executor.Initialize(null); + } - [TestMethod] - public void ExecutorInitializeWithTestCaseFilterShouldMergeWithTheValueProvidedByPreviousStep() - { - var options = CommandLineOptions.Instance; - var defaultValue = "Test=FilterFromPreviousStep"; - options.TestCaseFilterValue = defaultValue; - Assert.AreEqual(defaultValue, options.TestCaseFilterValue); - TestCaseFilterArgumentExecutor executor = new TestCaseFilterArgumentExecutor(options); + [TestMethod] + public void ExecutorInitializeWithTestCaseFilterShouldMergeWithTheValueProvidedByPreviousStep() + { + var options = CommandLineOptions.Instance; + var defaultValue = "Test=FilterFromPreviousStep"; + options.TestCaseFilterValue = defaultValue; + Assert.AreEqual(defaultValue, options.TestCaseFilterValue); + TestCaseFilterArgumentExecutor executor = new(options); - var value = "Test=NewFilter"; - executor.Initialize(value); + var value = "Test=NewFilter"; + executor.Initialize(value); - var expectedValue = $"({defaultValue})&({value})"; - Assert.AreEqual(expectedValue, options.TestCaseFilterValue); - } + var expectedValue = $"({defaultValue})&({value})"; + Assert.AreEqual(expectedValue, options.TestCaseFilterValue); + } - [TestMethod] - public void ExecutorExecutoreturnArgumentProcessorResultSuccess() - { - var executor = new TestCaseFilterArgumentExecutor(CommandLineOptions.Instance); - var result = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Success, result); - } + [TestMethod] + public void ExecutorExecutoreturnArgumentProcessorResultSuccess() + { + var executor = new TestCaseFilterArgumentExecutor(CommandLineOptions.Instance); + var result = executor.Execute(); + Assert.AreEqual(ArgumentProcessorResult.Success, result); } } diff --git a/test/vstest.console.UnitTests/Processors/TestSessionCorrelationIdProcessorTests.cs b/test/vstest.console.UnitTests/Processors/TestSessionCorrelationIdProcessorTests.cs new file mode 100644 index 0000000000..89d57df89b --- /dev/null +++ b/test/vstest.console.UnitTests/Processors/TestSessionCorrelationIdProcessorTests.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; + +[TestClass] +public class TestSessionCorrelationIdProcessorTests +{ + [TestMethod] + public void ProcessorExecutorInitialize_ShouldFailIfNullCommandOption() => + Assert.ThrowsException(() => new TestSessionCorrelationIdProcessorModeProcessorExecutor(null!)); + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldFailIfNullSession() + { + TestSessionCorrelationIdProcessorModeProcessorExecutor testSessionCorrelationIdProcessor = new(new CommandLineOptions()); + Assert.ThrowsException(() => testSessionCorrelationIdProcessor.Initialize(null)); + } + + [TestMethod] + public void ProcessorExecutorInitialize_ShouldSetCommandOption() + { + var commandOptions = new CommandLineOptions(); + TestSessionCorrelationIdProcessorModeProcessorExecutor testSessionCorrelationIdProcessor = new(commandOptions); + testSessionCorrelationIdProcessor.Initialize("sessionId"); + Assert.IsNotNull(commandOptions.TestSessionCorrelationId); + } + + [TestMethod] + public void ProcessorCapabilities() + { + TestSessionCorrelationIdProcessorCapabilities processorCapabilities = new(); + Assert.IsNull(processorCapabilities.HelpContentResourceName); + Assert.AreEqual(ArgumentProcessorPriority.CliRunSettings, processorCapabilities.Priority); + Assert.AreEqual(HelpContentPriority.None, processorCapabilities.HelpPriority); + Assert.AreEqual("/TestSessionCorrelationId", processorCapabilities.CommandName); + } +} diff --git a/test/vstest.console.UnitTests/Processors/TestSourceArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/TestSourceArgumentProcessorTests.cs index 4ee6fe35ab..9f4533c153 100644 --- a/test/vstest.console.UnitTests/Processors/TestSourceArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/TestSourceArgumentProcessorTests.cs @@ -1,118 +1,119 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors +using System; +using System.Linq; + +using Microsoft.Extensions.FileSystemGlobbing; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.Internal; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors; +// +// Tests for TestSourceArgumentProcessor +// +[TestClass] +public class TestSourceArgumentProcessorTests { - using System; - using System.Linq; - using Microsoft.Extensions.FileSystemGlobbing; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using Moq; - using vstest.console.Internal; - - // - // Tests for TestSourceArgumentProcessor - // - [TestClass] - public class TestSourceArgumentProcessorTests + /// + /// The help argument processor get metadata should return help argument processor capabilities. + /// + [TestMethod] + public void GetMetadataShouldReturnTestSourceArgumentProcessorCapabilities() { - /// - /// The help argument processor get metadata should return help argument processor capabilities. - /// - [TestMethod] - public void GetMetadataShouldReturnTestSourceArgumentProcessorCapabilities() - { - TestSourceArgumentProcessor processor = new TestSourceArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is TestSourceArgumentProcessorCapabilities); - } + TestSourceArgumentProcessor processor = new(); + Assert.IsTrue(processor.Metadata.Value is TestSourceArgumentProcessorCapabilities); + } - /// - /// The help argument processor get executer should return help argument processor capabilities. - /// - [TestMethod] - public void GetExecuterShouldReturnTestSourceArgumentProcessorCapabilities() - { - TestSourceArgumentProcessor processor = new TestSourceArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is TestSourceArgumentExecutor); - } + /// + /// The help argument processor get executer should return help argument processor capabilities. + /// + [TestMethod] + public void GetExecuterShouldReturnTestSourceArgumentProcessorCapabilities() + { + TestSourceArgumentProcessor processor = new(); + Assert.IsTrue(processor.Executor!.Value is TestSourceArgumentExecutor); + } - #region TestSourceArgumentProcessorCapabilitiesTests + #region TestSourceArgumentProcessorCapabilitiesTests - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - TestSourceArgumentProcessorCapabilities capabilities = new TestSourceArgumentProcessorCapabilities(); - Assert.AreEqual("/TestSource", capabilities.CommandName); - Assert.IsNull(capabilities.HelpContentResourceName); + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + TestSourceArgumentProcessorCapabilities capabilities = new(); + Assert.AreEqual("/TestSource", capabilities.CommandName); + Assert.IsNull(capabilities.HelpContentResourceName); - Assert.AreEqual(HelpContentPriority.None, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); + Assert.AreEqual(HelpContentPriority.None, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.Normal, capabilities.Priority); - Assert.IsTrue(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsTrue(capabilities.IsSpecialCommand); - } + Assert.IsTrue(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsTrue(capabilities.IsSpecialCommand); + } - #endregion + #endregion - #region TestSourceArgumentExecutorTests + #region TestSourceArgumentExecutorTests - [TestMethod] - public void ExecuterInitializeWithInvalidSourceShouldThrowCommandLineException() + [TestMethod] + public void ExecuterInitializeWithInvalidSourceShouldThrowCommandLineException() + { + var options = CommandLineOptions.Instance; + var mockFileHelper = new Mock(); + mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); + options.FileHelper = mockFileHelper.Object; + TestSourceArgumentExecutor executor = new(options); + + // This path is invalid + string testFilePath = "TestFile.txt"; + + try { - var options = CommandLineOptions.Instance; - var mockFileHelper = new Mock(); - mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); - options.FileHelper = mockFileHelper.Object; - TestSourceArgumentExecutor executor = new TestSourceArgumentExecutor(options); - - // This path is invalid - string testFilePath = "TestFile.txt"; - - try - { - executor.Initialize(testFilePath); - } - catch (Exception ex) - { - Assert.IsTrue(ex is TestSourceException); - Assert.AreEqual("The test source file \"" + testFilePath + "\" provided was not found.", ex.Message); - } + executor.Initialize(testFilePath); } - - [TestMethod] - public void ExecuterInitializeWithValidSourceShouldAddItToTestSources() + catch (Exception ex) { - var testFilePath = "DummyTestFile.txt"; - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); - mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); + Assert.IsTrue(ex is TestSourceException); + StringAssert.StartsWith(ex.Message, "The test source file \""); + StringAssert.EndsWith(ex.Message, testFilePath + "\" provided was not found."); + } + } - var options = CommandLineOptions.Instance; - options.Reset(); - options.FileHelper = mockFileHelper.Object; - options.FilePatternParser = new FilePatternParser(new Mock().Object, mockFileHelper.Object); - var executor = new TestSourceArgumentExecutor(options); + [TestMethod] + public void ExecuterInitializeWithValidSourceShouldAddItToTestSources() + { + var testFilePath = "DummyTestFile.txt"; + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.Exists(testFilePath)).Returns(true); + mockFileHelper.Setup(x => x.GetCurrentDirectory()).Returns(""); - executor.Initialize(testFilePath); + var options = CommandLineOptions.Instance; + CommandLineOptions.Reset(); + options.FileHelper = mockFileHelper.Object; + options.FilePatternParser = new FilePatternParser(new Mock().Object, mockFileHelper.Object); + var executor = new TestSourceArgumentExecutor(options); - // Check if the testsource is present in the TestSources - Assert.IsTrue(options.Sources.Contains(testFilePath)); - } + executor.Initialize(testFilePath); - [TestMethod] - public void ExecutorExecuteReturnArgumentProcessorResultSuccess() - { - var options = CommandLineOptions.Instance; - var executor = new TestSourceArgumentExecutor(options); - var result = executor.Execute(); - Assert.AreEqual(ArgumentProcessorResult.Success, result); - } + // Check if the testsource is present in the TestSources + Assert.IsTrue(options.Sources.Contains(testFilePath)); + } - #endregion + [TestMethod] + public void ExecutorExecuteReturnArgumentProcessorResultSuccess() + { + var options = CommandLineOptions.Instance; + var executor = new TestSourceArgumentExecutor(options); + var result = executor.Execute(); + Assert.AreEqual(ArgumentProcessorResult.Success, result); } + + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/TestableRunSettingsProvider.cs b/test/vstest.console.UnitTests/Processors/TestableRunSettingsProvider.cs index 169443da7d..28877d5476 100644 --- a/test/vstest.console.UnitTests/Processors/TestableRunSettingsProvider.cs +++ b/test/vstest.console.UnitTests/Processors/TestableRunSettingsProvider.cs @@ -1,22 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Processors +using Microsoft.VisualStudio.TestPlatform.Common; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; + +namespace vstest.console.UnitTests.Processors; + +internal class TestableRunSettingsProvider : IRunSettingsProvider { - using Microsoft.VisualStudio.TestPlatform.Common; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; + public RunSettings? ActiveRunSettings { get; set; } - internal class TestableRunSettingsProvider : IRunSettingsProvider + public void SetActiveRunSettings(RunSettings runSettings) { - public RunSettings ActiveRunSettings - { - get; - set; - } - - public void SetActiveRunSettings(RunSettings runSettings) - { - this.ActiveRunSettings = runSettings; - } + ActiveRunSettings = runSettings; } } diff --git a/test/vstest.console.UnitTests/Processors/UseVsixExtensionsArgumentProcessorTests.cs b/test/vstest.console.UnitTests/Processors/UseVsixExtensionsArgumentProcessorTests.cs index d0b31cdcc3..2813d6a157 100644 --- a/test/vstest.console.UnitTests/Processors/UseVsixExtensionsArgumentProcessorTests.cs +++ b/test/vstest.console.UnitTests/Processors/UseVsixExtensionsArgumentProcessorTests.cs @@ -1,110 +1,110 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Processors +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace vstest.console.UnitTests.Processors; + +[TestClass] +public class UseVsixExtensionsArgumentProcessorTests { - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using System.Collections.Generic; - - [TestClass] - public class UseVsixExtensionsArgumentProcessorTests + private const string DeprecationMessage = @"/UseVsixExtensions is getting deprecated. Please use /TestAdapterPath instead."; + private readonly Mock _testRequestManager; + private readonly Mock _extensionManager; + private readonly Mock _output; + private readonly UseVsixExtensionsArgumentExecutor _executor; + + public UseVsixExtensionsArgumentProcessorTests() + { + _testRequestManager = new Mock(); + _extensionManager = new Mock(); + _output = new Mock(); + _executor = new UseVsixExtensionsArgumentExecutor(CommandLineOptions.Instance, _testRequestManager.Object, _extensionManager.Object, _output.Object); + } + + [TestMethod] + public void GetMetadataShouldReturnUseVsixExtensionsArgumentProcessorCapabilities() + { + var processor = new UseVsixExtensionsArgumentProcessor(); + Assert.IsTrue(processor.Metadata.Value is UseVsixExtensionsArgumentProcessorCapabilities); + } + + [TestMethod] + public void GetExecuterShouldReturnUseVsixExtensionsArgumentProcessorCapabilities() + { + var processor = new UseVsixExtensionsArgumentProcessor(); + Assert.IsTrue(processor.Executor!.Value is UseVsixExtensionsArgumentExecutor); + } + + #region UseVsixExtensionsArgumentProcessorCapabilities tests + + [TestMethod] + public void CapabilitiesShouldReturnAppropriateProperties() + { + var capabilities = new UseVsixExtensionsArgumentProcessorCapabilities(); + + Assert.AreEqual("/UseVsixExtensions", capabilities.CommandName); + Assert.IsNull(capabilities.HelpContentResourceName); + Assert.AreEqual(HelpContentPriority.None, capabilities.HelpPriority); + Assert.IsFalse(capabilities.IsAction); + Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); + + Assert.IsFalse(capabilities.AllowMultiple); + Assert.IsFalse(capabilities.AlwaysExecute); + Assert.IsFalse(capabilities.IsSpecialCommand); + } + + #endregion + + #region UseVsixExtensionsArgumentExecutor tests + + [TestMethod] + public void InitializeShouldThrowExceptionIfArgumentIsNull() + { + var message = Assert.ThrowsException(() => _executor.Initialize(null)).Message; + Assert.AreEqual(@"The /UseVsixExtensions parameter requires a value. If 'true', the installed VSIX extensions (if any) will be used in the test run. If false, they will be ignored. Example: /UseVsixExtensions:true", message); + } + + [TestMethod] + public void InitializeShouldThrowExceptionIfArgumentIsInvalid() + { + var invalidArg = "Foo"; + + var message = Assert.ThrowsException(() => _executor.Initialize(invalidArg)).Message; + Assert.AreEqual(@"Argument Foo is not expected in the 'UseVsixExtensions' command. Specify the command indicating whether the vsix extensions should be used or skipped (Example: vstest.console.exe myTests.dll /UseVsixExtensions:true) and try again.", message); + } + + [TestMethod] + public void InitializeForArgumentEqualTrueShouldCallTestRequestManagerInitializeExtensions() { - private const string DefaultRunSettings = "\r\n\r\n \r\n {0}\r\n \r\n"; - private const string DeprecationMessage = @"/UseVsixExtensions is getting deprecated. Please use /TestAdapterPath instead."; - private Mock testRequestManager; - private Mock extensionManager; - private Mock output; - private UseVsixExtensionsArgumentExecutor executor; - - public UseVsixExtensionsArgumentProcessorTests() - { - this.testRequestManager = new Mock(); - this.extensionManager = new Mock(); - this.output = new Mock(); - this.executor = new UseVsixExtensionsArgumentExecutor(CommandLineOptions.Instance, this.testRequestManager.Object, this.extensionManager.Object, this.output.Object); - } - - [TestMethod] - public void GetMetadataShouldReturnUseVsixExtensionsArgumentProcessorCapabilities() - { - var processor = new UseVsixExtensionsArgumentProcessor(); - Assert.IsTrue(processor.Metadata.Value is UseVsixExtensionsArgumentProcessorCapabilities); - } - - [TestMethod] - public void GetExecuterShouldReturnUseVsixExtensionsArgumentProcessorCapabilities() - { - var processor = new UseVsixExtensionsArgumentProcessor(); - Assert.IsTrue(processor.Executor.Value is UseVsixExtensionsArgumentExecutor); - } - - #region UseVsixExtensionsArgumentProcessorCapabilities tests - - [TestMethod] - public void CapabilitiesShouldReturnAppropriateProperties() - { - var capabilities = new UseVsixExtensionsArgumentProcessorCapabilities(); - - Assert.AreEqual("/UseVsixExtensions", capabilities.CommandName); - Assert.IsNull(capabilities.HelpContentResourceName); - Assert.AreEqual(HelpContentPriority.None, capabilities.HelpPriority); - Assert.IsFalse(capabilities.IsAction); - Assert.AreEqual(ArgumentProcessorPriority.AutoUpdateRunSettings, capabilities.Priority); - - Assert.IsFalse(capabilities.AllowMultiple); - Assert.IsFalse(capabilities.AlwaysExecute); - Assert.IsFalse(capabilities.IsSpecialCommand); - } - - #endregion - - #region UseVsixExtensionsArgumentExecutor tests - - [TestMethod] - public void InitializeShouldThrowExceptionIfArgumentIsNull() - { - var message = Assert.ThrowsException(() => this.executor.Initialize(null)).Message; - Assert.AreEqual(@"The /UseVsixExtensions parameter requires a value. If 'true', the installed VSIX extensions (if any) will be used in the test run. If false, they will be ignored. Example: /UseVsixExtensions:true", message); - } - - [TestMethod] - public void InitializeShouldThrowExceptionIfArgumentIsInvalid() - { - var invalidArg = "Foo"; - - var message = Assert.ThrowsException(() => this.executor.Initialize(invalidArg)).Message; - Assert.AreEqual(@"Argument Foo is not expected in the 'UseVsixExtensions' command. Specify the command indicating whether the vsix extensions should be used or skipped (Example: vstest.console.exe myTests.dll /UseVsixExtensions:true) and try again.", message); - } - - [TestMethod] - public void InitializeForArgumentEqualTrueShouldCallTestRequestManagerInitializeExtensions() - { - var extensions = new List { "T1.dll", "T2.dll" }; - this.extensionManager.Setup(em => em.GetUnitTestExtensions()).Returns(extensions); - - this.executor.Initialize("true"); - - this.output.Verify(o => o.WriteLine(DeprecationMessage, OutputLevel.Warning), Times.Once); - this.extensionManager.Verify(em => em.GetUnitTestExtensions(), Times.Once); - this.testRequestManager.Verify(trm => trm.InitializeExtensions(extensions, true), Times.Once); - } - - [TestMethod] - public void InitializeForArgumentEqualfalseShouldNotCallTestRequestManagerInitializeExtensions() - { - this.executor.Initialize("false"); - - this.output.Verify(o => o.WriteLine(DeprecationMessage, OutputLevel.Warning), Times.Once); - this.extensionManager.Verify(em => em.GetUnitTestExtensions(), Times.Never); - this.testRequestManager.Verify(trm => trm.InitializeExtensions(It.IsAny>(), true), Times.Never); - } - - #endregion + var extensions = new List { "T1.dll", "T2.dll" }; + _extensionManager.Setup(em => em.GetUnitTestExtensions()).Returns(extensions); + + _executor.Initialize("true"); + + _output.Verify(o => o.WriteLine(DeprecationMessage, OutputLevel.Warning), Times.Once); + _extensionManager.Verify(em => em.GetUnitTestExtensions(), Times.Once); + _testRequestManager.Verify(trm => trm.InitializeExtensions(extensions, true), Times.Once); } + + [TestMethod] + public void InitializeForArgumentEqualfalseShouldNotCallTestRequestManagerInitializeExtensions() + { + _executor.Initialize("false"); + + _output.Verify(o => o.WriteLine(DeprecationMessage, OutputLevel.Warning), Times.Once); + _extensionManager.Verify(em => em.GetUnitTestExtensions(), Times.Never); + _testRequestManager.Verify(trm => trm.InitializeExtensions(It.IsAny>(), true), Times.Never); + } + + #endregion } diff --git a/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorFactoryTests.cs b/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorFactoryTests.cs index 1698ad51be..01f9acf5f0 100644 --- a/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorFactoryTests.cs +++ b/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorFactoryTests.cs @@ -1,177 +1,180 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors.Utilities -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; - using TestPlatform.CommandLine.Processors; - using TestTools.UnitTesting; +using Moq; - [TestClass] - public class ArgumentProcessorFactoryTests +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors.Utilities; + +[TestClass] +public class ArgumentProcessorFactoryTests +{ + [TestMethod] + public void CreateArgumentProcessorIsTreatingNonArgumentAsSource() { - [TestMethod] - public void CreateArgumentProcessorIsTreatingNonArgumentAsSource() - { - string argument = "--NonArgumet:Dummy"; + string argument = "--NonArgumet:Dummy"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - IArgumentProcessor result = factory.CreateArgumentProcessor(argument); + IArgumentProcessor result = factory.CreateArgumentProcessor(argument)!; - Assert.AreEqual(typeof(TestSourceArgumentProcessor), result.GetType()); - } + Assert.AreEqual(typeof(TestSourceArgumentProcessor), result.GetType()); + } - [TestMethod] - public void CreateArgumentProcessorIsTreatingNonArgumentAsSourceEvenItIsStratingFromForwardSlash() - { - string argument = "/foo/foo.dll"; + [TestMethod] + public void CreateArgumentProcessorIsTreatingNonArgumentAsSourceEvenItIsStratingFromForwardSlash() + { + string argument = "/foo/foo.dll"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - IArgumentProcessor result = factory.CreateArgumentProcessor(argument); + IArgumentProcessor result = factory.CreateArgumentProcessor(argument)!; - Assert.AreEqual(typeof(TestSourceArgumentProcessor), result.GetType()); - } + Assert.AreEqual(typeof(TestSourceArgumentProcessor), result.GetType()); + } - [TestMethod] - public void CreateArgumentProcessorShouldReturnPlatformArgumentProcessorWhenArgumentIsPlatform() - { - string argument = "/Platform:x64"; + [TestMethod] + public void CreateArgumentProcessorShouldReturnPlatformArgumentProcessorWhenArgumentIsPlatform() + { + string argument = "/Platform:x64"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - IArgumentProcessor result = factory.CreateArgumentProcessor(argument); + IArgumentProcessor result = factory.CreateArgumentProcessor(argument)!; - Assert.AreEqual(typeof(PlatformArgumentProcessor), result.GetType()); - } + Assert.AreEqual(typeof(PlatformArgumentProcessor), result.GetType()); + } - [TestMethod] - public void CreateArgumentProcessorShouldReturnPlatformArgumentProcessorWhenArgumentIsPlatformInXplat() - { - string argument = "--Platform:x64"; + [TestMethod] + public void CreateArgumentProcessorShouldReturnPlatformArgumentProcessorWhenArgumentIsPlatformInXplat() + { + string argument = "--Platform:x64"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - IArgumentProcessor result = factory.CreateArgumentProcessor(argument); + IArgumentProcessor result = factory.CreateArgumentProcessor(argument)!; - Assert.AreEqual(typeof(PlatformArgumentProcessor), result.GetType()); - } + Assert.AreEqual(typeof(PlatformArgumentProcessor), result.GetType()); + } - [TestMethod] - public void CreateArgumentProcessorShouldReturnThrowExceptionIfArgumentsIsNull() - { - var command = "--"; + [TestMethod] + public void CreateArgumentProcessorShouldReturnThrowExceptionIfArgumentsIsNull() + { + var command = "--"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - Action action = () => factory.CreateArgumentProcessor(command, null); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + Action action = () => factory.CreateArgumentProcessor(command, null!); - ExceptionUtilities.ThrowsException( - action, - "Cannot be null or empty", "argument"); - } + ExceptionUtilities.ThrowsException( + action, + "Cannot be null or empty", "argument"); + } - [TestMethod] - public void CreateArgumentProcessorShouldReturnNullIfInvalidCommandIsPassed() - { - var command = "/-"; + [TestMethod] + public void CreateArgumentProcessorShouldReturnNullIfInvalidCommandIsPassed() + { + var command = "/-"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - IArgumentProcessor result = factory.CreateArgumentProcessor(command, new string[] { "" }); + IArgumentProcessor result = factory.CreateArgumentProcessor(command, [""])!; - Assert.IsNull(result); - } + Assert.IsNull(result); + } - [TestMethod] - public void CreateArgumentProcessorShouldReturnCLIRunSettingsArgumentProcessorIfCommandIsGiven() - { - var command = "--"; + [TestMethod] + public void CreateArgumentProcessorShouldReturnCliRunSettingsArgumentProcessorIfCommandIsGiven() + { + var command = "--"; - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); - IArgumentProcessor result = factory.CreateArgumentProcessor(command, new string[] { "" }); + IArgumentProcessor result = factory.CreateArgumentProcessor(command, [""])!; - Assert.AreEqual(typeof(CLIRunSettingsArgumentProcessor), result.GetType()); - } + Assert.AreEqual(typeof(CliRunSettingsArgumentProcessor), result.GetType()); + } - [TestMethod] - public void BuildCommadMapsForProcessorWithIsSpecialCommandSetAddsProcessorToSpecialMap() - { - var specialCommands = GetArgumentProcessors(specialCommandFilter: true); + [TestMethod] + public void BuildCommandMapsForProcessorWithIsSpecialCommandSetAddsProcessorToSpecialMap() + { + var specialCommands = GetArgumentProcessors(specialCommandFilter: true); - List xplatspecialCommandNames = new List(); - List specialCommandNames = new List(); + List xplatspecialCommandNames = new(); + List specialCommandNames = new(); - // for each command add there xplat version - foreach (var specialCommand in specialCommands) + // for each command add there xplat version + foreach (var specialCommand in specialCommands) + { + specialCommandNames.Add(specialCommand.Metadata.Value.CommandName); + if (!specialCommand.Metadata.Value.AlwaysExecute) { - specialCommandNames.Add(specialCommand.Metadata.Value.CommandName); - if (!specialCommand.Metadata.Value.AlwaysExecute) - { - xplatspecialCommandNames.Add(string.Concat("--", specialCommand.Metadata.Value.CommandName.Remove(0, 1))); - } + xplatspecialCommandNames.Add(string.Concat("--", specialCommand.Metadata.Value.CommandName.Remove(0, 1))); } - var factory = ArgumentProcessorFactory.Create(); - - CollectionAssert.AreEquivalent( - specialCommandNames.Concat(xplatspecialCommandNames).ToList(), - factory.SpecialCommandToProcessorMap.Keys.ToList()); } + var factory = ArgumentProcessorFactory.Create(); + + CollectionAssert.AreEquivalent( + specialCommandNames.Concat(xplatspecialCommandNames).ToList(), + factory.SpecialCommandToProcessorMap.Keys.ToList()); + } - [TestMethod] - public void BuildCommadMapsForMultipleProcessorAddsProcessorToAppropriateMaps() + [TestMethod] + public void BuildCommandMapsForMultipleProcessorAddsProcessorToAppropriateMaps() + { + var commandProcessors = GetArgumentProcessors(specialCommandFilter: false); + var commands = commandProcessors.Select(a => a.Metadata.Value.CommandName); + List xplatCommandName = new(); + + // for each command add there xplat version + foreach (string name in commands) { - var commandProcessors = GetArgumentProcessors(specialCommandFilter: false); - var commands = commandProcessors.Select(a => a.Metadata.Value.CommandName); - List xplatCommandName = new List(); + xplatCommandName.Add(string.Concat("--", name.Remove(0, 1))); + } - // for each command add there xplat version - foreach (string name in commands) - { - xplatCommandName.Add(string.Concat("--", name.Remove(0, 1))); - } + var shortCommands = commandProcessors.Where(a => !string.IsNullOrEmpty(a.Metadata.Value.ShortCommandName)) + .Select(a => a.Metadata.Value.ShortCommandName); - var shortCommands = commandProcessors.Where(a => !string.IsNullOrEmpty(a.Metadata.Value.ShortCommandName)) - .Select(a => a.Metadata.Value.ShortCommandName); + List xplatShortCommandName = new(); - List xplatShortCommandName = new List(); + // for each short command add there xplat version + foreach (var name in shortCommands) + { + xplatShortCommandName.Add(name!.Replace('/', '-')); + } - // for each short command add there xplat version - foreach (string name in shortCommands) - { - xplatShortCommandName.Add(name.Replace('/', '-')); - } + Mock featureFlag = new(); + featureFlag.Setup(x => x.IsSet(It.IsAny())).Returns(false); + ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(featureFlag.Object); - ArgumentProcessorFactory factory = ArgumentProcessorFactory.Create(); + // Expect command processors to contain both long and short commands. + CollectionAssert.AreEquivalent( + commands.Concat(xplatCommandName).Concat(shortCommands).Concat(xplatShortCommandName).ToList(), + factory.CommandToProcessorMap.Keys.ToList()); + } - // Expect command processors to contain both long and short commands. - CollectionAssert.AreEquivalent( - commands.Concat(xplatCommandName).Concat(shortCommands).Concat(xplatShortCommandName).ToList(), - factory.CommandToProcessorMap.Keys.ToList()); - } + private static IEnumerable GetArgumentProcessors(bool specialCommandFilter) + { + var allProcessors = typeof(ArgumentProcessorFactory) + .Assembly.GetTypes() + .Where(t => !t.IsAbstract && !t.Name.Equals("IArgumentProcessor") && typeof(IArgumentProcessor).IsAssignableFrom(t)); - private static IEnumerable GetArgumentProcessors(bool specialCommandFilter) + foreach (var processor in allProcessors) { - var allProcessors = typeof(ArgumentProcessorFactory).GetTypeInfo() - .Assembly.GetTypes() - .Where(t => !t.GetTypeInfo().IsAbstract && !t.Name.Equals("IArgumentProcessor") && typeof(IArgumentProcessor).IsAssignableFrom(t)); + var instance = Activator.CreateInstance(processor) as IArgumentProcessor; + Assert.IsNotNull(instance, "Unable to instantiate processor: {0}", processor); - foreach (var processor in allProcessors) + var specialProcessor = instance.Metadata.Value.IsSpecialCommand; + if ((specialCommandFilter && specialProcessor) || (!specialCommandFilter && !specialProcessor)) { - var instance = Activator.CreateInstance(processor) as IArgumentProcessor; - Assert.IsNotNull(instance, "Unable to instantiate processor: {0}", processor); - - var specialProcessor = instance.Metadata.Value.IsSpecialCommand; - if ((specialCommandFilter && specialProcessor) || (!specialCommandFilter && !specialProcessor)) - { - yield return instance; - } + yield return instance; } } } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorUtilitiesTests.cs b/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorUtilitiesTests.cs index c966df482d..a597af523d 100644 --- a/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorUtilitiesTests.cs +++ b/test/vstest.console.UnitTests/Processors/Utilities/ArgumentProcessorUtilitiesTests.cs @@ -1,65 +1,65 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors.Utilities -{ - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities; - using System; - using System.Collections.Generic; - using System.Linq; - using TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities; +using Microsoft.VisualStudio.TestTools.UnitTesting; - [TestClass] - public class ArgumentProcessorUtilitiesTests +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests.Processors.Utilities; + +[TestClass] +public class ArgumentProcessorUtilitiesTests +{ + [TestMethod] + [DataRow("")] + [DataRow(" ")] + [DataRow(";;;;")] + public void GetArgumentListShouldThrowErrorOnInvalidArgument(string argument) { - [TestMethod] - [DataRow("")] - [DataRow(" ")] - [DataRow(";;;;")] - public void GetArgumentListShouldThrowErrorOnInvalidArgument(string argument) + try { - try - { - ArgumentProcessorUtilities.GetArgumentList(argument, ArgumentProcessorUtilities.SemiColonArgumentSeparator, "test exception."); - } - catch (Exception e) - { - Assert.IsTrue(e.GetType().Equals(typeof(CommandLineException))); - Assert.IsTrue(e.Message.Contains("test exception.")); - } + ArgumentProcessorUtilities.GetArgumentList(argument, ArgumentProcessorUtilities.SemiColonArgumentSeparator, "test exception."); } - - [TestMethod] - [DataRow("abc.txt;tracelevel=info;newkey=newvalue")] - [DataRow(";;;abc.txt;;;tracelevel=info;;;newkey=newvalue;;;;")] - public void GetArgumentListShouldReturnCorrectArgumentList(string argument) + catch (Exception e) { - var argumentList = ArgumentProcessorUtilities.GetArgumentList(argument, ArgumentProcessorUtilities.SemiColonArgumentSeparator, "test exception."); - argumentList.SequenceEqual(new string[] { "abc.txt", "tracelevel=info", "newkey=newvalue" }); + Assert.IsTrue(e.GetType().Equals(typeof(CommandLineException))); + Assert.IsTrue(e.Message.Contains("test exception.")); } + } + + [TestMethod] + [DataRow("abc.txt;tracelevel=info;newkey=newvalue")] + [DataRow(";;;abc.txt;;;tracelevel=info;;;newkey=newvalue;;;;")] + public void GetArgumentListShouldReturnCorrectArgumentList(string argument) + { + var argumentList = ArgumentProcessorUtilities.GetArgumentList(argument, ArgumentProcessorUtilities.SemiColonArgumentSeparator, "test exception."); + Assert.IsTrue(argumentList.SequenceEqual(new string[] { "abc.txt", "tracelevel=info", "newkey=newvalue" })); + } - [TestMethod] - [DataRow(new string[] { "key1=value1", "invalidPair", "key2=value2"})] - public void GetArgumentParametersShouldThrowErrorOnInvalidParameters(string[] parameterArgs) + [TestMethod] + [DataRow(["key1=value1", "invalidPair", "key2=value2"])] + public void GetArgumentParametersShouldThrowErrorOnInvalidParameters(string[] parameterArgs) + { + try { - try - { - ArgumentProcessorUtilities.GetArgumentParameters(parameterArgs, ArgumentProcessorUtilities.EqualNameValueSeparator, "test exception."); - } - catch (Exception e) - { - Assert.IsTrue(e.GetType().Equals(typeof(CommandLineException))); - Assert.IsTrue(e.Message.Contains("test exception.")); - } + ArgumentProcessorUtilities.GetArgumentParameters(parameterArgs, ArgumentProcessorUtilities.EqualNameValueSeparator, "test exception."); } - - [TestMethod] - public void GetArgumentParametersShouldReturnCorrectParameterDictionary() + catch (Exception e) { - var parameterDict = ArgumentProcessorUtilities.GetArgumentParameters(new string[] { "key1=value1", "key2=value2", "key3=value3" }, ArgumentProcessorUtilities.EqualNameValueSeparator, "test exception."); - - var expectedDict = new Dictionary { { "key1", "value1"}, { "key2", "value2"}, { "key3", "value3"} }; - CollectionAssert.AreEqual(parameterDict.OrderBy(kv => kv.Key).ToList(), expectedDict.OrderBy(kv => kv.Key).ToList()); + Assert.IsTrue(e.GetType().Equals(typeof(CommandLineException))); + Assert.IsTrue(e.Message.Contains("test exception.")); } } -} \ No newline at end of file + + [TestMethod] + public void GetArgumentParametersShouldReturnCorrectParameterDictionary() + { + var parameterDict = ArgumentProcessorUtilities.GetArgumentParameters(new string[] { "key1=value1", "key2=value2", "key3=value3" }, ArgumentProcessorUtilities.EqualNameValueSeparator, "test exception."); + + var expectedDict = new Dictionary { { "key1", "value1" }, { "key2", "value2" }, { "key3", "value3" } }; + CollectionAssert.AreEqual(parameterDict.OrderBy(kv => kv.Key).ToList(), expectedDict.OrderBy(kv => kv.Key).ToList()); + } +} diff --git a/test/vstest.console.UnitTests/Program.cs b/test/vstest.console.UnitTests/Program.cs deleted file mode 100644 index 845923d3c9..0000000000 --- a/test/vstest.console.UnitTests/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests -{ - public static class Program - { - public static void Main(string[] args) - { - } - } -} \ No newline at end of file diff --git a/test/vstest.console.UnitTests/Properties/AssemblyInfo.cs b/test/vstest.console.UnitTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 283c5da113..0000000000 --- a/test/vstest.console.UnitTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("vstest.console.UnitTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("6deb7dc1-c8df-465e-8b31-96248d3ffad0")] diff --git a/test/vstest.console.UnitTests/Publisher/MetricsPublisherFactoryTests.cs b/test/vstest.console.UnitTests/Publisher/MetricsPublisherFactoryTests.cs index 0ba4da07d1..748bf25339 100644 --- a/test/vstest.console.UnitTests/Publisher/MetricsPublisherFactoryTests.cs +++ b/test/vstest.console.UnitTests/Publisher/MetricsPublisherFactoryTests.cs @@ -1,36 +1,35 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Publisher -{ - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace vstest.console.UnitTests.Publisher; - [TestClass] - public class MetricsPublisherFactoryTests +[TestClass] +public class MetricsPublisherFactoryTests +{ + [TestMethod] + public void GetMetricsPublisherShouldReturnNoOpMetricsPublisherIfTelemetryOptedOutAndNotInDesignMode() { - [TestMethod] - public void GetMetricsPublisherShouldReturnNoOpMetricsPublisherIfTelemetryOptedOutAndNotInDesignMode() - { - var result = MetricsPublisherFactory.GetMetricsPublisher(false, false); + var result = MetricsPublisherFactory.GetMetricsPublisher(false, false); - Assert.IsTrue(result.Result is NoOpMetricsPublisher); - } + Assert.IsTrue(result.Result is NoOpMetricsPublisher); + } - [TestMethod] - public void GetMetricsPublisherShouldReturnNoOpMetricsPublisherIfTelemetryOptedInAndInDesignMode() - { - var result = MetricsPublisherFactory.GetMetricsPublisher(true, true); + [TestMethod] + public void GetMetricsPublisherShouldReturnNoOpMetricsPublisherIfTelemetryOptedInAndInDesignMode() + { + var result = MetricsPublisherFactory.GetMetricsPublisher(true, true); - Assert.IsTrue(result.Result is NoOpMetricsPublisher); - } + Assert.IsTrue(result.Result is NoOpMetricsPublisher); + } - [TestMethod] - public void GetMetricsPublisherShouldReturnNoOpMetricsPublisherIfTelemetryOptedOutAndInDesignMode() - { - var result = MetricsPublisherFactory.GetMetricsPublisher(false, true); + [TestMethod] + public void GetMetricsPublisherShouldReturnNoOpMetricsPublisherIfTelemetryOptedOutAndInDesignMode() + { + var result = MetricsPublisherFactory.GetMetricsPublisher(false, true); - Assert.IsTrue(result.Result is NoOpMetricsPublisher); - } + Assert.IsTrue(result.Result is NoOpMetricsPublisher); } } diff --git a/test/vstest.console.UnitTests/Publisher/TextFileTelemetryPublisherTests.cs b/test/vstest.console.UnitTests/Publisher/TextFileTelemetryPublisherTests.cs index 39fb8027eb..f37e996488 100644 --- a/test/vstest.console.UnitTests/Publisher/TextFileTelemetryPublisherTests.cs +++ b/test/vstest.console.UnitTests/Publisher/TextFileTelemetryPublisherTests.cs @@ -1,50 +1,47 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.Publisher +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +namespace vstest.console.UnitTests.Publisher; + +[TestClass] +public class TextFileTelemetryPublisherTests { - using System.Collections.Generic; + [TestMethod] + public void LogToFileShouldCreateDirectoryIfNotExists() + { + var dummyDictionary = new Dictionary(); + var mockFileHelper = new Mock(); + mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); + dummyDictionary.Add("DummyMessage://", "DummyValue"); + dummyDictionary.Add("Dummy2", "DummyValue2"); - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; - using Microsoft.VisualStudio.TestTools.UnitTesting; + // Act. + TextFileTelemetryPublisher.LogToFile("dummyevent", dummyDictionary, mockFileHelper.Object); - using Moq; + // Verify. + mockFileHelper.Verify(fh => fh.CreateDirectory(It.IsAny()), Times.Once); + } - [TestClass] - public class TextFileTelemetryPublisherTests + [TestMethod] + public void LogToFileShouldWriteAllText() { - [TestMethod] - public void LogToFileShouldCreateDirectoryIfNotExists() - { - var publishMetrics = new TextFileTelemetryPublisher(); - var dummyDictionary = new Dictionary(); - var mockFileHelper = new Mock(); - mockFileHelper.Setup(fh => fh.DirectoryExists(It.IsAny())).Returns(false); - dummyDictionary.Add("DummyMessage://", "DummyValue"); - dummyDictionary.Add("Dummy2", "DummyValue2"); - - // Act. - publishMetrics.LogToFile("dummyevent", dummyDictionary, mockFileHelper.Object); - - // Verify. - mockFileHelper.Verify(fh => fh.CreateDirectory(It.IsAny()), Times.Once); - } - - [TestMethod] - public void LogToFileShouldWriteAllText() - { - var publishMetrics = new TextFileTelemetryPublisher(); - var dummyDictionary = new Dictionary(); - var mockFileHelper = new Mock(); - dummyDictionary.Add("DummyMessage://", "DummyValue"); - dummyDictionary.Add("Dummy2", "DummyValue2"); - - // Act. - publishMetrics.LogToFile("dummyevent", dummyDictionary, mockFileHelper.Object); - - // Verify. - mockFileHelper.Verify(fh => fh.WriteAllTextToFile(It.IsAny(), It.IsAny()), Times.Once); - } + var dummyDictionary = new Dictionary(); + var mockFileHelper = new Mock(); + dummyDictionary.Add("DummyMessage://", "DummyValue"); + dummyDictionary.Add("Dummy2", "DummyValue2"); + + // Act. + TextFileTelemetryPublisher.LogToFile("dummyevent", dummyDictionary, mockFileHelper.Object); + + // Verify. + mockFileHelper.Verify(fh => fh.WriteAllTextToFile(It.IsAny(), It.IsAny()), Times.Once); } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/StringExtensions.cs b/test/vstest.console.UnitTests/StringExtensions.cs index 718f6e4610..49eb309f3b 100644 --- a/test/vstest.console.UnitTests/StringExtensions.cs +++ b/test/vstest.console.UnitTests/StringExtensions.cs @@ -1,47 +1,46 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests +using System; + +namespace Microsoft.VisualStudio.TestPlatform.CommandLine.UnitTests; + +public static class StringExtensions { - using System; + /// + /// Replace all \r\n with \n to get Unix line endings to make strings easy to compare while still + /// keeping the formatting in mind. + /// + /// + public static string NormalizeLineEndings(this string text) + { + return text.Replace("\r\n", "\n"); + } - public static class StringExtensions + /// + /// Replace whitespace with printable characters (and still keep \r newlines for easy readability) + /// + /// + public static string ShowWhiteSpace(this string text) { - /// - /// Replace all \r\n with \n to get Unix line endings to make strings easy to compare while still - /// keeping the formatting in mind. - /// - /// - public static string NormalizeLineEndings(this string text) + // use mongolian vowel separator as placeholder for the newline that we add for formatting + var placeholder = "\u180E"; + if (text.Contains(placeholder)) { - return text.Replace("\r\n", "\n"); + throw new InvalidOperationException( + "The text contains mongolian vowel separator character that we use as a placeholder."); } - /// - /// Replace whitespace with printable characters (and still keep \r newlines for easy readability) - /// - /// - public static string ShowWhiteSpace(this string text) - { - // use mongolian vowel separator as placeholder for the newline that we add for formatting - var placeholder = "\u180E"; - if (text.Contains(placeholder)) - { - throw new InvalidOperationException( - "The text contains mongolian vowel separator character that we use as a placeholder."); - } - - var whiteSpaced = text - .Replace("\r\n", "\\r\\n\u180E") - .Replace("\r", "\\r") - .Replace("\n", "\\n\u180E") - .Replace("\t", "\\t") - .Replace(" ", "␣") - .Replace("\u180E", "\n"); + var whiteSpaced = text + .Replace("\r\n", "\\r\\n\u180E") + .Replace("\r", "\\r") + .Replace("\n", "\\n\u180E") + .Replace("\t", "\\t") + .Replace(" ", "␣") + .Replace("\u180E", "\n"); - // prepend one newline to get better output from assertion where both expected - // and actual output start on the same position - return "\n" + whiteSpaced; - } + // prepend one newline to get better output from assertion where both expected + // and actual output start on the same position + return "\n" + whiteSpaced; } -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/TestDoubles/DummyCommandLineOptions.cs b/test/vstest.console.UnitTests/TestDoubles/DummyCommandLineOptions.cs index 9c62b4679e..cf55f21255 100644 --- a/test/vstest.console.UnitTests/TestDoubles/DummyCommandLineOptions.cs +++ b/test/vstest.console.UnitTests/TestDoubles/DummyCommandLineOptions.cs @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.TestDoubles -{ - using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine; + +namespace vstest.console.UnitTests.TestDoubles; - internal class DummyCommandLineOptions : CommandLineOptions - { - } +internal class DummyCommandLineOptions : CommandLineOptions +{ } diff --git a/test/vstest.console.UnitTests/TestDoubles/DummyLoggerEvents.cs b/test/vstest.console.UnitTests/TestDoubles/DummyLoggerEvents.cs index 6c5a0f9bd3..88f6c135c2 100644 --- a/test/vstest.console.UnitTests/TestDoubles/DummyLoggerEvents.cs +++ b/test/vstest.console.UnitTests/TestDoubles/DummyLoggerEvents.cs @@ -1,26 +1,27 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.TestDoubles -{ - using System; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; +using System; + +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; + +namespace vstest.console.UnitTests.TestDoubles; - internal class DummyLoggerEvents : InternalTestLoggerEvents +internal class DummyLoggerEvents : InternalTestLoggerEvents +{ + public DummyLoggerEvents(TestSessionMessageLogger testSessionMessageLogger) + : base(testSessionMessageLogger) { - public DummyLoggerEvents(TestSessionMessageLogger testSessionMessageLogger) : base(testSessionMessageLogger) - { - } + } - public override event EventHandler TestResult; - public override event EventHandler TestRunComplete; - public override event EventHandler TestRunMessage; + public override event EventHandler? TestResult; + public override event EventHandler? TestRunComplete; + public override event EventHandler? TestRunMessage; - public bool EventsSubscribed() - { - return TestResult != null && TestRunComplete != null && TestRunMessage != null; - } + public bool EventsSubscribed() + { + return TestResult != null && TestRunComplete != null && TestRunMessage != null; } } diff --git a/test/vstest.console.UnitTests/TestDoubles/DummyTestRunResultAggregator.cs b/test/vstest.console.UnitTests/TestDoubles/DummyTestRunResultAggregator.cs index 1aafeeaf4f..6d91b8719c 100644 --- a/test/vstest.console.UnitTests/TestDoubles/DummyTestRunResultAggregator.cs +++ b/test/vstest.console.UnitTests/TestDoubles/DummyTestRunResultAggregator.cs @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.TestDoubles -{ - using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine; + +namespace vstest.console.UnitTests.TestDoubles; - internal class DummyTestRunResultAggregator : TestRunResultAggregator - { - } -} \ No newline at end of file +internal class DummyTestRunResultAggregator : TestRunResultAggregator +{ +} diff --git a/test/vstest.console.UnitTests/TestPlatformHelpers/TestRequestManagerTests.cs b/test/vstest.console.UnitTests/TestPlatformHelpers/TestRequestManagerTests.cs index d8440633b5..964692c18c 100644 --- a/test/vstest.console.UnitTests/TestPlatformHelpers/TestRequestManagerTests.cs +++ b/test/vstest.console.UnitTests/TestPlatformHelpers/TestRequestManagerTests.cs @@ -1,2476 +1,2936 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -namespace vstest.console.UnitTests.TestPlatformHelpers +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.Versioning; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +using FluentAssertions; + +using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; +using Microsoft.VisualStudio.TestPlatform.CommandLine; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; +using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; +using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; +using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; +using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Common.Logging; +using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; +using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; +using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; +using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers; +using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Moq; + +using vstest.console.UnitTests.TestDoubles; + +using Constants = Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants; + +namespace vstest.console.UnitTests.TestPlatformHelpers; + +[TestClass] +public class TestRequestManagerTests { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; - using Microsoft.VisualStudio.TestPlatform.CommandLine; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; - using Microsoft.VisualStudio.TestPlatform.CommandLine.Publisher; - using Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers; - using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; - using Microsoft.VisualStudio.TestPlatform.Common.Logging; - using Microsoft.VisualStudio.TestPlatform.Common.Telemetry; - using Microsoft.VisualStudio.TestPlatform.CoreUtilities.Tracing.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Payloads; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - using System.Runtime.Versioning; - using Microsoft.VisualStudio.TestPlatform.CommandLineUtilities; - - using Moq; - - using vstest.console.UnitTests.TestDoubles; - using Microsoft.VisualStudio.TestPlatform.Utilities; - using Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces; - using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; - - [TestClass] - public class TestRequestManagerTests - { - private DummyLoggerEvents mockLoggerEvents; - private CommandLineOptions commandLineOptions; - private Mock mockTestPlatform; - private Mock mockOutput; - private Mock mockDiscoveryRequest; - private Mock mockRunRequest; - private Mock mockAssemblyMetadataProvider; - private InferHelper inferHelper; - private ITestRequestManager testRequestManager; - private Mock mockTestPlatformEventSource; - private ProtocolConfig protocolConfig; - private Task mockMetricsPublisherTask; - private Mock mockMetricsPublisher; - private Mock mockProcessHelper; - private Mock mockAttachmentsProcessingManager; - - private const string DefaultRunsettings = @" - - - - "; - - public TestRequestManagerTests() - { - this.mockLoggerEvents = new DummyLoggerEvents(TestSessionMessageLogger.Instance); - this.commandLineOptions = new DummyCommandLineOptions(); - this.mockOutput = new Mock(); - this.mockTestPlatform = new Mock(); - this.mockDiscoveryRequest = new Mock(); - this.mockRunRequest = new Mock(); - this.mockTestPlatformEventSource = new Mock(); - this.protocolConfig = new ProtocolConfig(); - this.mockAssemblyMetadataProvider = new Mock(); - this.inferHelper = new InferHelper(this.mockAssemblyMetadataProvider.Object); - var testRunResultAggregator = new DummyTestRunResultAggregator(); - this.mockProcessHelper = new Mock(); - - this.mockMetricsPublisher = new Mock(); - this.mockMetricsPublisherTask = Task.FromResult(this.mockMetricsPublisher.Object); - this.mockAttachmentsProcessingManager = new Mock(); - this.testRequestManager = new TestRequestManager( - this.commandLineOptions, - this.mockTestPlatform.Object, - testRunResultAggregator, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - this.mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Returns(this.mockDiscoveryRequest.Object); - this.mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Returns(this.mockRunRequest.Object); - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.X86); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework40)); - this.mockProcessHelper.Setup(x => x.GetCurrentProcessId()).Returns(1234); - this.mockProcessHelper.Setup(x => x.GetProcessName(It.IsAny())).Returns("dotnet.exe"); - } - - [TestCleanup] - public void Cleanup() - { - CommandLineOptions.Instance.Reset(); - - // Opt out the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "0"); + private DummyLoggerEvents _mockLoggerEvents; + private readonly CommandLineOptions _commandLineOptions; + private readonly Mock _mockTestPlatform; + private readonly Mock _mockDiscoveryRequest; + private readonly Mock _mockRunRequest; + private readonly Mock _mockAssemblyMetadataProvider; + private readonly InferHelper _inferHelper; + private ITestRequestManager _testRequestManager; + private readonly Mock _mockTestPlatformEventSource; + private readonly ProtocolConfig _protocolConfig; + private readonly Task _mockMetricsPublisherTask; + private readonly Mock _mockMetricsPublisher; + private readonly Mock _mockProcessHelper; + private readonly Mock _mockAttachmentsProcessingManager; + private readonly Mock _mockEnvironment; + private readonly Mock _mockEnvironmentVariableHelper; + + private const string DefaultRunsettings = @" + + + + "; + + public TestRequestManagerTests() + { + _mockLoggerEvents = new DummyLoggerEvents(TestSessionMessageLogger.Instance); + _commandLineOptions = new DummyCommandLineOptions(); + _mockTestPlatform = new Mock(); + _mockDiscoveryRequest = new Mock(); + _mockRunRequest = new Mock(); + _mockTestPlatformEventSource = new Mock(); + _protocolConfig = new ProtocolConfig(); + _mockAssemblyMetadataProvider = new Mock(); + _inferHelper = new InferHelper(_mockAssemblyMetadataProvider.Object); + var testRunResultAggregator = new DummyTestRunResultAggregator(); + _mockProcessHelper = new Mock(); + _mockEnvironment = new Mock(); + _mockEnvironmentVariableHelper = new Mock(); + + _mockMetricsPublisher = new Mock(); + _mockMetricsPublisherTask = Task.FromResult(_mockMetricsPublisher.Object); + _mockAttachmentsProcessingManager = new Mock(); + _testRequestManager = new TestRequestManager( + _commandLineOptions, + _mockTestPlatform.Object, + testRunResultAggregator, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + _mockTestPlatform.Setup(tp => tp.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Returns(_mockDiscoveryRequest.Object); + _mockTestPlatform.Setup(tp => tp.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Returns(_mockRunRequest.Object); + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.X86); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework40)); + _mockProcessHelper.Setup(x => x.GetCurrentProcessId()).Returns(1234); + _mockProcessHelper.Setup(x => x.GetProcessName(It.IsAny())).Returns("dotnet.exe"); + } + + [TestCleanup] + public void Cleanup() + { + CommandLineOptions.Reset(); + + // Opt out the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "0"); + } + + [TestMethod] + public void TestRequestManagerShouldNotInitializeConsoleLoggerIfDesignModeIsSet() + { + CommandLineOptions.Instance.IsDesignMode = true; + _mockLoggerEvents = new DummyLoggerEvents(TestSessionMessageLogger.Instance); + _ = new TestRequestManager(CommandLineOptions.Instance, + new Mock().Object, + TestRunResultAggregator.Instance, + new Mock().Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + Assert.IsFalse(_mockLoggerEvents.EventsSubscribed()); + } + + [TestMethod] + public void InitializeExtensionsShouldCallTestPlatformToClearAndUpdateExtensions() + { + var paths = new List() { "a", "b" }; + _testRequestManager.InitializeExtensions(paths, false); + + _mockTestPlatform.Verify(mt => mt.ClearExtensions(), Times.Once); + _mockTestPlatform.Verify(mt => mt.UpdateExtensions(paths, false), Times.Once); + } + + [TestMethod] + public void ResetShouldResetCommandLineOptionsInstance() + { + var oldInstance = CommandLineOptions.Instance; + _testRequestManager.ResetOptions(); + + var newInstance = CommandLineOptions.Instance; + + Assert.AreNotEqual(oldInstance, newInstance, "CommandLineOptions must be cleaned up"); + } + + [TestMethod] + public void DiscoverTestsShouldReadTheBatchSizeFromSettingsAndSetItForDiscoveryCriteria() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = + @" + + + 15 + + " + }; + + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, new Mock().Object, _protocolConfig); + Assert.AreEqual(15, actualDiscoveryCriteria!.FrequencyOfDiscoveredTestsEvent); + } + + [TestMethod] + public void DiscoverTestsShouldCallTestPlatformAndSucceed() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var createDiscoveryRequestCalled = 0; + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => + { + createDiscoveryRequestCalled++; + actualDiscoveryCriteria = discoveryCriteria; + }).Returns(mockDiscoveryRequest.Object); + + var mockDiscoveryRegistrar = new Mock(); + + string testCaseFilterValue = "TestFilter"; + CommandLineOptions.Instance.TestCaseFilterValue = testCaseFilterValue; + _testRequestManager = new TestRequestManager(CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, _protocolConfig); + + Assert.AreEqual(testCaseFilterValue, actualDiscoveryCriteria!.TestCaseFilter, "TestCaseFilter must be set"); + + Assert.AreEqual(1, createDiscoveryRequestCalled, "CreateDiscoveryRequest must be invoked only once."); + Assert.AreEqual(2, actualDiscoveryCriteria.Sources.Count(), "All Sources must be used for discovery request"); + Assert.AreEqual("a", actualDiscoveryCriteria.Sources.First(), "First Source in list is incorrect"); + Assert.AreEqual("b", actualDiscoveryCriteria.Sources.ElementAt(1), "Second Source in list is incorrect"); + + // Default frequency is set to BatchSize (which is set to 1000). + Assert.AreEqual(1000, actualDiscoveryCriteria.FrequencyOfDiscoveredTestsEvent); + + mockDiscoveryRegistrar.Verify(md => md.RegisterDiscoveryEvents(It.IsAny()), Times.Once); + mockDiscoveryRegistrar.Verify(md => md.UnregisterDiscoveryEvents(It.IsAny()), Times.Once); + + mockDiscoveryRequest.Verify(md => md.DiscoverAsync(), Times.Once); + + _mockTestPlatformEventSource.Verify(mt => mt.DiscoveryRequestStart(), Times.Once); + _mockTestPlatformEventSource.Verify(mt => mt.DiscoveryRequestStop(), Times.Once); + } + + [TestMethod] + public void DiscoverTestsShouldPassSameProtocolConfigInRequestData() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + var mockDiscoveryRegistrar = new Mock(); + + string testCaseFilterValue = "TestFilter"; + CommandLineOptions.Instance.TestCaseFilterValue = testCaseFilterValue; + _testRequestManager = new TestRequestManager(CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify. + Assert.AreEqual(6, actualRequestData!.ProtocolConfig!.Version); + } + + + [TestMethod] + public void DiscoverTestsShouldCollectMetrics() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll", "b.dll" }, + RunSettings = @" + + 2 + x86 + Framework35 + True + + + 169.254.193.190 + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify. + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.MaxCPUcount, out var maxcount)); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetPlatform, out var targetPlatform)); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.DisableAppDomain, out var disableAppDomain)); + Assert.AreEqual("Other", targetDevice); + Assert.AreEqual(2, maxcount); + Assert.AreEqual("X86", targetPlatform.ToString()); + Assert.AreEqual(true, disableAppDomain); + } + + [TestMethod] + public void DiscoverTestsShouldCollectTargetDeviceLocalMachineIfTargetDeviceStringisEmpty() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify. + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); + Assert.AreEqual("Local Machine", targetDevice); + } + + [TestMethod] + public void DiscoverTestsShouldCollectTargetDeviceIfTargetDeviceIsDevice() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + Device + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify. + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); + Assert.AreEqual("Device", targetDevice); + } + + [TestMethod] + public void DiscoverTestsShouldCollectTargetDeviceIfTargetDeviceIsEmulator() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + Emulator 8.1 U1 WVGA 4 inch 512MB + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify. + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); + Assert.AreEqual("Emulator 8.1 U1 WVGA 4 inch 512MB", targetDevice); + } + + [TestMethod] + public void DiscoverTestsShouldCollectCommands() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + Device + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + CommandLineOptions.Instance.Parallel = true; + CommandLineOptions.Instance.EnableCodeCoverage = true; + CommandLineOptions.Instance.InIsolation = true; + CommandLineOptions.Instance.UseVsixExtensions = true; + CommandLineOptions.Instance.SettingsFile = @"c://temp/.runsettings"; + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); + + var commandLineArray = commandLineSwitches.ToString(); + + Assert.IsTrue(commandLineArray!.Contains("/Parallel")); + Assert.IsTrue(commandLineArray.Contains("/EnableCodeCoverage")); + Assert.IsTrue(commandLineArray.Contains("/InIsolation")); + Assert.IsTrue(commandLineArray.Contains("/UseVsixExtensions")); + Assert.IsTrue(commandLineArray.Contains("/settings//.RunSettings")); + } + + [TestMethod] + public void DiscoverTestsShouldCollectTestSettings() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + Device + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + CommandLineOptions.Instance.SettingsFile = @"c://temp/.testsettings"; + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); + + var commandLineArray = commandLineSwitches.ToString(); + Assert.IsTrue(commandLineArray!.Contains("/settings//.TestSettings")); + } + + [TestMethod] + public void DiscoverTestsShouldCollectVsmdiFile() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + Device + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + CommandLineOptions.Instance.SettingsFile = @"c://temp/.vsmdi"; + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); + + var commandLineArray = commandLineSwitches.ToString(); + Assert.IsTrue(commandLineArray!.Contains("/settings//.vsmdi")); + } + + [TestMethod] + public void DiscoverTestsShouldCollectTestRunConfigFile() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = @" + + Device + + " + }; + + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + var mockDiscoveryRegistrar = new Mock(); + + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + CommandLineOptions.Instance.SettingsFile = @"c://temp/.testrunConfig"; + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); + + var commandLineArray = commandLineSwitches.ToString(); + Assert.IsTrue(commandLineArray!.Contains("/settings//.testrunConfig")); + } + + [TestMethod] + public void DiscoverTestsShouldUpdateFrameworkAndPlatformIfNotSpecifiedInDesignMode() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + _commandLineOptions.IsDesignMode = true; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, new Mock().Object, _protocolConfig); + + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + + Assert.IsTrue(actualDiscoveryCriteria!.RunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + public void DiscoverTestsShouldNotUpdateFrameworkAndPlatformIfSpecifiedInDesignMode() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = + $@" + + + {Constants.DotNetFramework46} + {Architecture.ARM} + + " + }; + _commandLineOptions.IsDesignMode = true; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.X86); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework451)); + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, new Mock().Object, _protocolConfig); + + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Never); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny()), Times.Never); + + Assert.IsTrue(actualDiscoveryCriteria!.RunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + public void DiscoverTestsShouldUpdateFrameworkAndPlatformInCommandLineScenariosIfNotSpecified() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + _commandLineOptions.IsDesignMode = false; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, new Mock().Object, _protocolConfig); + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + + Assert.IsTrue(actualDiscoveryCriteria!.RunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + public void DiscoverTestsShouldNotInferAndUpdateFrameworkAndPlatformInCommandLineScenariosIfSpecified() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + _commandLineOptions.IsDesignMode = false; + + // specified architecture + _commandLineOptions.TargetFrameworkVersion = Framework.DefaultFramework; + _commandLineOptions.TargetArchitecture = Architecture.X86; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform + .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, + new Mock().Object, _protocolConfig); + + // we infer the architecture and framework, so we can print warning when they don't match settings. + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny()), Times.Once); + + // but we don't update the settings, to keep what user specified + Assert.IsFalse(actualDiscoveryCriteria!.RunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsFalse(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + public void DiscoverTestsShouldPublishMetrics() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a", "b" } + }; + var mockProtocolConfig = new ProtocolConfig { Version = 2 }; + var mockDiscoveryRegistrar = new Mock(); + + // Act + _testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); + + // Verify. + _mockMetricsPublisher.Verify(mp => mp.PublishMetrics(TelemetryDataConstants.TestDiscoveryCompleteEvent, It.IsAny>()), Times.Once); + } + + [TestMethod] + public void CancelShouldNotThrowExceptionIfTestRunRequestHasBeenDisposed() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var mockRunEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + _testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, _protocolConfig); + _testRequestManager.CancelTestRun(); + } + + [TestMethod] + public void AbortShouldNotThrowExceptionIfTestRunRequestHasBeenDisposed() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var mockRunEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + _testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, _protocolConfig); + _testRequestManager.AbortTestRun(); + } + + [TestMethod] + public void RunTestsShouldReadTheBatchSizeFromSettingsAndSetItForTestRunCriteria() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = + @" + + + 15 + + " + }; + + TestRunCriteria? actualTestRunCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + Assert.AreEqual(15, actualTestRunCriteria!.FrequencyOfRunStatsChangeEvent); + } + + [TestMethod] + public void RunTestsShouldNotThrowForFramework35() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + Framework35 + + " + }; + + TestRunCriteria? actualTestRunCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockDiscoveryRequest.Object); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework35)); + + var mockRunEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + _testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, _protocolConfig); + + mockRunEventsRegistrar.Verify(lw => lw.LogWarning("Framework35 is not supported. For projects targeting .Net Framework 3.5, test will run in CLR 4.0 \"compatibility mode\"."), Times.Once); + _mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStart(), Times.Once); + _mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStop(), Times.Once); + } + + [TestMethod] + public void RunTestsShouldPassSameProtocolConfigInRequestData() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = DefaultRunsettings + }; + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + // Act. + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); + + // Verify. + Assert.AreEqual(6, actualRequestData!.ProtocolConfig!.Version); + } + + [TestMethod] + public void RunTestsShouldCollectCommands() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = DefaultRunsettings + }; + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + CommandLineOptions.Instance.Parallel = true; + CommandLineOptions.Instance.EnableCodeCoverage = true; + CommandLineOptions.Instance.InIsolation = true; + CommandLineOptions.Instance.UseVsixExtensions = true; + CommandLineOptions.Instance.SettingsFile = @"c://temp/.runsettings"; + + // Act. + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); + + var commandLineArray = commandLineSwitches.ToString(); + + Assert.IsTrue(commandLineArray!.Contains("/Parallel")); + Assert.IsTrue(commandLineArray.Contains("/EnableCodeCoverage")); + Assert.IsTrue(commandLineArray.Contains("/InIsolation")); + Assert.IsTrue(commandLineArray.Contains("/UseVsixExtensions")); + Assert.IsTrue(commandLineArray.Contains("/settings//.RunSettings")); + } + + [TestMethod] + public void RunTestsShouldCollectTelemetryForLegacySettings() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = @" + + + + + + + + + + + + + + + + " + }; + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + // Act. + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue("VS.TestRun.LegacySettings.Elements", out var legacySettingsNodes)); + Equals("Deployment, Scripts, Execution, AssemblyResolution, Timeouts, Hosts", legacySettingsNodes); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue("VS.TestRun.LegacySettings.DeploymentAttributes", out var deploymentAttributes)); + Equals("enabled, deploySatelliteAssemblies", deploymentAttributes); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue("VS.TestRun.LegacySettings.ExecutionAttributes", out var executionAttributes)); + Equals("hostProcessPlatform, parallelTestCount", executionAttributes); + + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TestSettingsUsed, out var testSettingsUsed)); + Assert.IsFalse((bool)testSettingsUsed); + } + + [TestMethod] + public void RunTestsShouldCollectTelemetryForTestSettingsEmbeddedInsideRunSettings() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = @" + + true + ..\..\Foo.testsettings + + " + }; + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + // Act. + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TestSettingsUsed, out var testSettingsUsed)); + Assert.IsTrue((bool)testSettingsUsed); + } + + [TestMethod] + public void RunTestsShouldCollectMetrics() + { + // Opt in the Telemetry + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = @" + + 2 + x86 + Framework35 + True + + + 169.254.193.190 + + " + }; + var mockProtocolConfig = new ProtocolConfig { Version = 6 }; + IRequestData? actualRequestData = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualRequestData = requestData).Returns(mockDiscoveryRequest.Object); + + _testRequestManager = new TestRequestManager( + CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + // Act. + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); + + // Verify + Assert.IsTrue(actualRequestData!.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.MaxCPUcount, out var maxcount)); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetPlatform, out var targetPlatform)); + Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.DisableAppDomain, out var disableAppDomain)); + Assert.AreEqual("Other", targetDevice); + Assert.AreEqual(2, maxcount); + Assert.AreEqual("X86", targetPlatform.ToString()); + Assert.AreEqual(true, disableAppDomain); + } + + [TestMethod] + public void RunTestsWithSourcesShouldCallTestPlatformAndSucceed() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var createRunRequestCalled = 0; + TestRunCriteria? observedCriteria = null; + var mockRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => + { + createRunRequestCalled++; + observedCriteria = runCriteria; + }).Returns(mockRunRequest.Object); + + var mockRunEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + string testCaseFilterValue = "TestFilter"; + payload.TestPlatformOptions = new TestPlatformOptions { TestCaseFilter = testCaseFilterValue }; + _testRequestManager = new TestRequestManager(CommandLineOptions.Instance, + _mockTestPlatform.Object, + TestRunResultAggregator.Instance, + _mockTestPlatformEventSource.Object, + _inferHelper, + _mockMetricsPublisherTask, + _mockProcessHelper.Object, + _mockAttachmentsProcessingManager.Object, + _mockEnvironment.Object, + _mockEnvironmentVariableHelper.Object); + + _testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, _protocolConfig); + + Assert.AreEqual(testCaseFilterValue, observedCriteria!.TestCaseFilter, "TestCaseFilter must be set"); + + Assert.AreEqual(1, createRunRequestCalled, "CreateRunRequest must be invoked only once."); + Assert.AreEqual(2, observedCriteria.Sources!.Count(), "All Sources must be used for discovery request"); + Assert.AreEqual("a", observedCriteria.Sources!.First(), "First Source in list is incorrect"); + Assert.AreEqual("b", observedCriteria.Sources!.ElementAt(1), "Second Source in list is incorrect"); + + // Check for the default value for the frequency + Assert.AreEqual(10, observedCriteria.FrequencyOfRunStatsChangeEvent); + mockRunEventsRegistrar.Verify(md => md.RegisterTestRunEvents(It.IsAny()), Times.Once); + mockRunEventsRegistrar.Verify(md => md.UnregisterTestRunEvents(It.IsAny()), Times.Once); + + mockRunRequest.Verify(md => md.ExecuteAsync(), Times.Once); + + _mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStart(), Times.Once); + _mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStop(), Times.Once); + } + + [TestMethod] + public void RunTestsMultipleCallsShouldNotRunInParallel() + { + var payload1 = new TestRunRequestPayload() + { + Sources = new List() { "a" }, + RunSettings = DefaultRunsettings + }; + + var payload2 = new TestRunRequestPayload() + { + Sources = new List() { "b" }, + RunSettings = DefaultRunsettings + }; + + var mockRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Returns(mockRunRequest.Object); + + var mockRunEventsRegistrar1 = new Mock(); + var mockRunEventsRegistrar2 = new Mock(); + + // Setup the second one to wait + var sw = new Stopwatch(); + sw.Start(); + + long run1Start = 0; + long run1Stop = 0; + long run2Start = 0; + long run2Stop = 0; + mockRunEventsRegistrar1.Setup(md => md.RegisterTestRunEvents(It.IsAny())).Callback(() => + { + Thread.Sleep(10); + run1Start = sw.ElapsedMilliseconds; + Thread.Sleep(1); + }); + mockRunEventsRegistrar1.Setup(md => md.UnregisterTestRunEvents(It.IsAny())).Callback(() => + { + Thread.Sleep(10); + run1Stop = sw.ElapsedMilliseconds; + Thread.Sleep(10); + }); + + mockRunEventsRegistrar2.Setup(md => md.RegisterTestRunEvents(It.IsAny())).Callback(() => + { + Thread.Sleep(10); + run2Start = sw.ElapsedMilliseconds; + Thread.Sleep(10); + }); + mockRunEventsRegistrar2.Setup(md => md.UnregisterTestRunEvents(It.IsAny())).Callback(() => + { + Thread.Sleep(10); + run2Stop = sw.ElapsedMilliseconds; + }); + + var mockCustomlauncher = new Mock(); + var task1 = Task.Run(() => _testRequestManager.RunTests(payload1, mockCustomlauncher.Object, mockRunEventsRegistrar1.Object, _protocolConfig)); + var task2 = Task.Run(() => _testRequestManager.RunTests(payload2, mockCustomlauncher.Object, mockRunEventsRegistrar2.Object, _protocolConfig)); + + Task.WaitAll(task1, task2); + + if (run1Start < run2Start) + { + Assert.IsTrue((run2Stop > run2Start) + && (run2Start > run1Stop) + && (run1Stop > run1Start)); + } + else + { + Assert.IsTrue((run1Stop > run1Start) + && (run1Start > run2Stop) + && (run2Stop > run2Start)); + } + } + + [TestMethod] + public void RunTestsShouldPublishMetrics() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var mockRunEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + _testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, _protocolConfig); + + _mockMetricsPublisher.Verify(mp => mp.PublishMetrics(TelemetryDataConstants.TestExecutionCompleteEvent, It.IsAny>()), Times.Once); + } + + // TODO: add tests in design mode and executor that they are handling all the exceptions properly including printing inner exception. + + [TestMethod] + public void RunTestsIfThrowsTestPlatformExceptionShouldThrowOut() + { + Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new TestPlatformException("HelloWorld"))); + } + + [TestMethod] + public void RunTestsIfThrowsSettingsExceptionShouldThrowOut() + { + Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new SettingsException("HelloWorld"))); + } + + [TestMethod] + public void RunTestsIfThrowsInvalidOperationExceptionShouldThrowOut() + { + Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new InvalidOperationException("HelloWorld"))); + } + + [TestMethod] + public void RunTestsIfThrowsExceptionShouldThrowOut() + { + Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new NotImplementedException("HelloWorld"))); + } + + [TestMethod] + public void DiscoverTestsIfThrowsTestPlatformExceptionShouldThrowOut() + { + Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new TestPlatformException("HelloWorld"))); + } + + [TestMethod] + public void DiscoverTestsIfThrowsSettingsExceptionShouldThrowOut() + { + Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new SettingsException("HelloWorld"))); + } + + [TestMethod] + public void DiscoverTestsIfThrowsInvalidOperationExceptionShouldThrowOut() + { + Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new InvalidOperationException("HelloWorld"))); + } + + [TestMethod] + public void DiscoverTestsIfThrowsExceptionShouldThrowOut() + { + Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new NotImplementedException("HelloWorld"))); + } + + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void DiscoverTestsShouldUpdateDesignModeAndCollectSourceInformation(bool designModeValue) + { + var runsettings = ".NETFramework,Version=v4.5"; + var discoveryPayload = CreateDiscoveryPayload(runsettings); + _commandLineOptions.IsDesignMode = designModeValue; + + _testRequestManager.DiscoverTests(discoveryPayload, new Mock().Object, _protocolConfig); + + var designmode = $"{designModeValue}"; + _mockTestPlatform.Verify( + tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings!.Contains(designmode)), It.IsAny(), It.IsAny>(), It.IsAny())); + + var collectSourceInformation = $"{designModeValue}"; + _mockTestPlatform.Verify( + tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings!.Contains(collectSourceInformation)), It.IsAny(), It.IsAny>(), It.IsAny())); + } + + [TestMethod] + public void DiscoverTestsShouldNotUpdateDesignModeIfUserHasSetDesignModeInRunSettings() + { + var runsettings = "False.NETFramework,Version=v4.5"; + var discoveryPayload = CreateDiscoveryPayload(runsettings); + _commandLineOptions.IsDesignMode = true; + + _testRequestManager.DiscoverTests(discoveryPayload, new Mock().Object, _protocolConfig); + + var designmode = "False"; + _mockTestPlatform.Verify( + tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings!.Contains(designmode)), It.IsAny(), It.IsAny>(), It.IsAny())); + } + + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void RunTestsShouldUpdateDesignModeIfRunnerIsInDesignMode(bool designModeValue) + { + var runsettings = + ".NETFramework,Version=v4.5"; + var payload = new TestRunRequestPayload + { + RunSettings = runsettings, + Sources = new List { "c:\\testproject.dll" } + }; + _commandLineOptions.IsDesignMode = designModeValue; + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + var designmode = $"{designModeValue}"; + _mockTestPlatform.Verify(tp => tp.CreateTestRunRequest(It.IsAny(), It.Is(rc => rc.TestRunSettings!.Contains(designmode)), It.IsAny(), It.IsAny>(), It.IsAny())); + } + + [DataTestMethod] + [DataRow(true)] + [DataRow(false)] + public void DiscoverTestsShouldNotUpdateCollectSourceInformationIfUserHasSetItInRunSettings(bool val) + { + var runsettings = $"{val}"; + var discoveryPayload = CreateDiscoveryPayload(runsettings); + + _testRequestManager.DiscoverTests(discoveryPayload, new Mock().Object, _protocolConfig); + + var collectSourceInformation = $"{val}"; + _mockTestPlatform.Verify( + tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings!.Contains(collectSourceInformation)), It.IsAny(), It.IsAny>(), It.IsAny())); + } + + [TestMethod] + public void RunTestsShouldShouldUpdateFrameworkAndPlatformIfNotSpecifiedInDesignMode() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + + _commandLineOptions.IsDesignMode = true; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + + Assert.IsTrue(actualTestRunCriteria!.TestRunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); + + } + + [TestMethod] + public void RunTestsShouldNotUpdateFrameworkAndPlatformIfSpecifiedInDesignMode() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + // specify architecture and framework + RunSettings = + $@" + + + {Constants.DotNetFramework46} + {Architecture.ARM} + + " + }; + + _commandLineOptions.IsDesignMode = true; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.X86); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework451)); + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + // infer them so we can print warning when dlls are not compatible with runsettings + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny()), Times.Once); + + // but don't update runsettings because we want to keep what user specified + Assert.IsTrue(actualTestRunCriteria!.TestRunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualTestRunCriteria!.TestRunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + [DataRow("x86")] + [DataRow("X86")] + [DataRow("ARM")] + [DataRow("aRm")] + public void RunTestsShouldNotUpdatePlatformIfSpecifiedInDesignMode(string targetPlatform) + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + // Specify platform + RunSettings = + $@" + + + {targetPlatform} + + " + }; + + _commandLineOptions.IsDesignMode = true; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.X86); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework451)); + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + // infer platform and framework so we can print warnings when dlls are not compatible with runsettings + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny()), Times.Once); + + // don't update it in runsettings to keep what user provided + Assert.IsTrue(actualTestRunCriteria!.TestRunSettings!.Contains(targetPlatform)); + } + + [TestMethod] + public void RunTestsShouldUpdateFrameworkAndPlatformInCommandLineScenarios() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + + _commandLineOptions.IsDesignMode = false; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + + Assert.IsTrue(actualTestRunCriteria!.TestRunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + public void RunTestsShouldNotpdateFrameworkAndPlatformInRunsettingsIfSpecifiedByCommandLine() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + + _commandLineOptions.IsDesignMode = false; + + // specify architecture and framework + _commandLineOptions.TargetArchitecture = Architecture.X86; + _commandLineOptions.TargetFrameworkVersion = Framework.DefaultFramework; + + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + // infer them so we can print warnings when the assemblies are not compatible + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny()), Times.Once); + + // but don't update them in runsettings so we keep what user specified + Assert.IsFalse(actualTestRunCriteria!.TestRunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsFalse(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); + } + + [TestMethod] + public void RunTestsWithTestCasesShouldUpdateFrameworkAndPlatformIfNotSpecifiedInDesignMode() + { + var actualSources = new List() { "1.dll", "2.dll" }; + var payload = new TestRunRequestPayload() + { + TestCases = new List() + { + new() { Source = actualSources[0] }, + new() { Source = actualSources[0] }, + new() { Source = actualSources[1] } + }, + RunSettings = + @" + + + + " + }; + + List archSources = new(), fxSources = new(); + + _commandLineOptions.IsDesignMode = true; + _mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())).Callback(archSources.Add) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup(a => a.GetFrameworkName(It.IsAny())).Callback(fxSources.Add) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + + Assert.IsTrue(actualTestRunCriteria!.TestRunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); + CollectionAssert.AreEqual(actualSources, archSources); + CollectionAssert.AreEqual(actualSources, fxSources); + } + + [TestMethod] + public void RunTestShouldThrowExceptionIfRunSettingWithDcHasTestSettingsInIt() + { + var settingXml = @" + + C:\temp.testsettings + true + + + + + + + + + + "; + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = settingXml + }; + + _commandLineOptions.EnableCodeCoverage = false; + bool exceptionThrown = false; + + try + { + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + } + catch (SettingsException ex) + { + exceptionThrown = true; + Assert.IsTrue(ex.Message.Contains(@"C:\temp.testsettings"), ex.Message); + } + + Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); + } + + [TestMethod] + public void RunTestShouldThrowExceptionIfRunSettingWithDcHasTestSettingsAndEnableCodeCoverageTrue() + { + var settingXml = @" + + C:\temp.testsettings + true + + + + + + + + + + "; + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = settingXml + }; + + _commandLineOptions.EnableCodeCoverage = true; + bool exceptionThrown = false; + + try + { + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + } + catch (SettingsException ex) + { + exceptionThrown = true; + Assert.IsTrue(ex.Message.Contains(@"C:\temp.testsettings"), ex.Message); + } + + Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); + } + + [TestMethod] + public void RunTestShouldNotThrowExceptionIfRunSettingHasCodeCoverageDcAndTestSettingsInItWithEnableCoverageTrue() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = @" + + C:\temp.testsettings + true + + + + + + + + " + }; + + _commandLineOptions.EnableCodeCoverage = true; + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + } + + [TestMethod] + public void RunTestsShouldAddConsoleLoggerInRunSettingsInNonDesignMode() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + + _commandLineOptions.IsDesignMode = false; + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria!.TestRunSettings)!.LoggerSettingsList; + Assert.AreEqual(1, loggerSettingsList.Count); + Assert.AreEqual("Console", loggerSettingsList[0].FriendlyName); + Assert.IsNotNull(loggerSettingsList[0].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[0].CodeBase); + } + + [TestMethod] + public void RunTestsShouldAddConsoleLoggerInRunSettingsIfDesignModeSetFalseInRunSettings() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + False + + + + + + Value1 + + + + + " + }; + + _commandLineOptions.IsDesignMode = true; + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria!.TestRunSettings)!.LoggerSettingsList; + Assert.AreEqual(2, loggerSettingsList.Count); + Assert.IsNotNull(loggerSettingsList[0].Configuration); + Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); + Assert.AreEqual("Console", loggerSettingsList[1].FriendlyName); + Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[1].CodeBase); + } + + [TestMethod] + public void DiscoverTestsShouldAddConsoleLoggerInRunSettingsIfDesignModeSetFalseInRunSettings() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + False + + + + + + Value1 + + + + + " + }; + _commandLineOptions.IsDesignMode = true; + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform + .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, + new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria!.RunSettings)!.LoggerSettingsList; + Assert.AreEqual(2, loggerSettingsList.Count); + Assert.IsNotNull(loggerSettingsList[0].Configuration); + Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); + Assert.AreEqual("Console", loggerSettingsList[1].FriendlyName); + Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[1].CodeBase); + } + + [TestMethod] + public void RunTestsShouldNotAddConsoleLoggerInRunSettingsInDesignMode() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + True + + " + }; + + _commandLineOptions.IsDesignMode = false; + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + Assert.IsFalse(actualTestRunCriteria!.TestRunSettings!.Contains("LoggerRunSettings")); + } + + [TestMethod] + public void DiscoverTestsShouldAddConsoleLoggerInRunSettingsInNonDesignMode() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + _commandLineOptions.IsDesignMode = false; + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform + .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, + new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria!.RunSettings)!.LoggerSettingsList; + Assert.AreEqual(1, loggerSettingsList.Count); + Assert.AreEqual("Console", loggerSettingsList[0].FriendlyName); + Assert.IsNotNull(loggerSettingsList[0].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[0].CodeBase); + } + + [TestMethod] + public void DiscoverTestsShouldNotAddConsoleLoggerInRunSettingsInDesignMode() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + True + + " + }; + _commandLineOptions.IsDesignMode = false; + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform + .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, + new Mock().Object, _protocolConfig); + + Assert.IsFalse(actualDiscoveryCriteria!.RunSettings!.Contains("LoggerRunSettings")); + } + + [TestMethod] + public void RunTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInNonDesignMode() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + False + + + + + + Value1 + + + + + Value1 + + + + + " + }; + + _commandLineOptions.IsDesignMode = false; + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria!.TestRunSettings)!.LoggerSettingsList; + Assert.AreEqual(2, loggerSettingsList.Count); + Assert.IsNotNull(loggerSettingsList[0].Configuration); + Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); + Assert.AreEqual("console", loggerSettingsList[1].FriendlyName); + Assert.AreEqual(new Uri("logger://tempconsoleUri").ToString(), loggerSettingsList[1].Uri!.ToString()); + Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); + Assert.AreNotEqual("tempCodeBase", loggerSettingsList[1].CodeBase); + Assert.IsTrue(loggerSettingsList[1].Configuration!.InnerXml.Contains("Value1")); + Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[1].CodeBase); + } + + [TestMethod] + public void DiscoverTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInNonDesignMode() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + False + + + + + + Value1 + + + + + Value1 + + + + + " + }; + _commandLineOptions.IsDesignMode = false; + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform + .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, + new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria!.RunSettings)!.LoggerSettingsList; + Assert.AreEqual(2, loggerSettingsList.Count); + Assert.IsNotNull(loggerSettingsList[0].Configuration); + Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); + Assert.AreEqual("consoleTemp", loggerSettingsList[1].FriendlyName); + Assert.AreEqual(new Uri("logger://Microsoft/TestPlatform/ConsoleLogger/v1").ToString(), loggerSettingsList[1].Uri!.ToString()); + Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); + Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].CodeBase); + Assert.IsTrue(loggerSettingsList[1].Configuration!.InnerXml.Contains("Value1")); + Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[1].CodeBase); + } + + [TestMethod] + public void RunTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInDesignMode() + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + True + + + + + + Value1 + + + + + Value1 + + + + + " + }; + + _commandLineOptions.IsDesignMode = false; + TestRunCriteria? actualTestRunCriteria = null; + var mockTestRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualTestRunCriteria = runCriteria).Returns(mockTestRunRequest.Object); + _testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria!.TestRunSettings)!.LoggerSettingsList; + Assert.AreEqual(2, loggerSettingsList.Count); + Assert.IsNotNull(loggerSettingsList[0].Configuration); + Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); + Assert.AreEqual("console", loggerSettingsList[1].FriendlyName); + Assert.AreEqual(new Uri("logger://tempconsoleUri").ToString(), loggerSettingsList[1].Uri!.ToString()); + Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); + Assert.AreNotEqual("tempCodeBase", loggerSettingsList[1].CodeBase); + Assert.IsTrue(loggerSettingsList[1].Configuration!.InnerXml.Contains("Value1")); + Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[1].CodeBase); + } + + [TestMethod] + public void DiscoverTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInDesignMode() + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + True + + + + + + Value1 + + + + + Value1 + + + + + " + }; + _commandLineOptions.IsDesignMode = false; + DiscoveryCriteria? actualDiscoveryCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform + .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => actualDiscoveryCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + _testRequestManager.DiscoverTests(payload, + new Mock().Object, _protocolConfig); + + var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria!.RunSettings)!.LoggerSettingsList; + Assert.AreEqual(2, loggerSettingsList.Count); + Assert.IsNotNull(loggerSettingsList[0].Configuration); + Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); + Assert.AreEqual("consoleTemp", loggerSettingsList[1].FriendlyName); + Assert.AreEqual(new Uri("logger://Microsoft/TestPlatform/ConsoleLogger/v1").ToString(), loggerSettingsList[1].Uri!.ToString()); + Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); + Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].CodeBase); + Assert.IsTrue(loggerSettingsList[1].Configuration!.InnerXml.Contains("Value1")); + Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); + Assert.IsNotNull(loggerSettingsList[1].CodeBase); + } + + [TestMethod] + public void ProcessTestRunAttachmentsShouldSucceedWithTelemetryEnabled() + { + var mockEventsHandler = new Mock(); + _mockAttachmentsProcessingManager + .Setup(m => m.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((string runSettingsXml, IRequestData r, ICollection a, ICollection b, ITestRunAttachmentsProcessingEventsHandler h, CancellationToken token) => Task.Run(() => + { + r.MetricsCollection.Add(TelemetryDataConstants.NumberOfAttachmentsSentForProcessing, 5); + r.MetricsCollection.Add(TelemetryDataConstants.NumberOfAttachmentsAfterProcessing, 1); + }, token)); + + var payload = new TestRunAttachmentsProcessingPayload() + { + Attachments = new List { new(new Uri("http://www.bing.com"), "out") }, + InvokedDataCollectors = new List(), + RunSettings = Constants.EmptyRunSettings, + CollectMetrics = true + }; + + _testRequestManager.ProcessTestRunAttachments(payload, mockEventsHandler.Object, _protocolConfig); + + _mockAttachmentsProcessingManager.Verify(m => m.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, It.Is(r => r.IsTelemetryOptedIn), payload.Attachments, payload.InvokedDataCollectors, mockEventsHandler.Object, It.IsAny())); + _mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStart()); + _mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStop()); + + _mockMetricsPublisher.Verify(p => p.PublishMetrics(TelemetryDataConstants.TestAttachmentsProcessingCompleteEvent, + It.Is>(m => + m.Count == 2 + && m.ContainsKey(TelemetryDataConstants.NumberOfAttachmentsSentForProcessing) + && (int)m[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing]! == 5 + && m.ContainsKey(TelemetryDataConstants.NumberOfAttachmentsAfterProcessing) + && (int)m[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing]! == 1))); + } + + [TestMethod] + public void ProcessTestRunAttachmentsShouldSucceedWithTelemetryDisabled() + { + var mockEventsHandler = new Mock(); + _mockAttachmentsProcessingManager + .Setup(m => m.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns(Task.FromResult(true)); + + var payload = new TestRunAttachmentsProcessingPayload() + { + Attachments = new List { new(new Uri("http://www.bing.com"), "out") }, + InvokedDataCollectors = new List(), + RunSettings = Constants.EmptyRunSettings, + CollectMetrics = false + }; + + _testRequestManager.ProcessTestRunAttachments(payload, mockEventsHandler.Object, _protocolConfig); + + _mockAttachmentsProcessingManager.Verify(m => m.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, It.Is(r => !r.IsTelemetryOptedIn), payload.Attachments, payload.InvokedDataCollectors, mockEventsHandler.Object, It.IsAny())); + _mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStart()); + _mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStop()); + } + + [TestMethod] + public async Task CancelTestRunAttachmentsProcessingShouldSucceedIfRequestInProgress() + { + var mockEventsHandler = new Mock(); + _mockAttachmentsProcessingManager + .Setup(m => m.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, It.IsAny(), It.IsAny>(), It.IsAny>(), It.IsAny(), It.IsAny())) + .Returns((string runSettingsXml, IRequestData r, ICollection a, ICollection b, ITestRunAttachmentsProcessingEventsHandler h, CancellationToken token) => Task.Run(() => + { + int i = 0; + while (!token.IsCancellationRequested) + { + i++; + Console.WriteLine($"Iteration {i}"); + Task.Delay(5).Wait(); + } + + r.MetricsCollection.Add(TelemetryDataConstants.AttachmentsProcessingState, "Canceled"); + }, token)); + + var payload = new TestRunAttachmentsProcessingPayload() + { + Attachments = new List { new(new Uri("http://www.bing.com"), "out") }, + InvokedDataCollectors = new List(), + RunSettings = Constants.EmptyRunSettings, + CollectMetrics = true + }; + + Task task = Task.Run(() => _testRequestManager.ProcessTestRunAttachments(payload, mockEventsHandler.Object, _protocolConfig)); + await Task.Delay(50); + _testRequestManager.CancelTestRunAttachmentsProcessing(); + + await task; + + _mockAttachmentsProcessingManager.Verify(m => m.ProcessTestRunAttachmentsAsync(Constants.EmptyRunSettings, It.IsAny(), payload.Attachments, payload.InvokedDataCollectors, mockEventsHandler.Object, It.IsAny())); + _mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStart()); + _mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStop()); + + _mockMetricsPublisher.Verify(p => p.PublishMetrics(TelemetryDataConstants.TestAttachmentsProcessingCompleteEvent, + It.Is>(m => + m.Count == 1 + && m.ContainsKey(TelemetryDataConstants.AttachmentsProcessingState) + && (string?)m[TelemetryDataConstants.AttachmentsProcessingState] == "Canceled"))); + } + + [TestMethod] + public void CancelTestRunAttachmentsProcessingShouldSucceedIfNoRequest() + { + _testRequestManager.CancelTestRunAttachmentsProcessing(); + } + + [TestMethod] + public void StartTestSessionShouldPassCorrectTelemetryOptedInOptionToTestPlatform() + { + _mockTestPlatform.Setup( + tp => tp.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), It.IsAny())) + .Returns(true) + .Callback( + (IRequestData rd, StartTestSessionCriteria _, ITestSessionEventsHandler _, Dictionary _, IWarningLogger _) => Assert.IsTrue(rd.IsTelemetryOptedIn)); + + Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); + + _testRequestManager.StartTestSession( + new StartTestSessionPayload() + { + TestPlatformOptions = new TestPlatformOptions() + { + CollectMetrics = true + } + }, + new Mock().Object, + new Mock().Object, + _protocolConfig); + } + + [TestMethod] + public void StartTestSessionShouldUpdateSettings() + { + var payload = new StartTestSessionPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + _commandLineOptions.IsDesignMode = true; + + _mockAssemblyMetadataProvider.Setup( + a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup( + a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + + _mockTestPlatform.Setup( + tp => tp.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny())) + .Returns(true) + .Callback( + (IRequestData _, StartTestSessionCriteria criteria, ITestSessionEventsHandler _, Dictionary _, IWarningLogger _) => + { + Assert.IsTrue(criteria.RunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(criteria.RunSettings.Contains(nameof(Architecture.ARM))); + }); + + _testRequestManager.StartTestSession( + payload, + new Mock().Object, + new Mock().Object, + _protocolConfig); + + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + } + + [TestMethod] + public void StartTestSessionShouldSendCompletedEventIfTestPlatformReturnsFalse() + { + var payload = new StartTestSessionPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = + @" + + + + " + }; + + var eventsHandler = new Mock(); + _commandLineOptions.IsDesignMode = true; + + _mockAssemblyMetadataProvider.Setup( + a => a.GetArchitecture(It.IsAny())) + .Returns(Architecture.ARM); + _mockAssemblyMetadataProvider.Setup( + a => a.GetFrameworkName(It.IsAny())) + .Returns(new FrameworkName(Constants.DotNetFramework46)); + + _mockTestPlatform.Setup( + tp => tp.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny())) + .Returns(false) + .Callback( + (IRequestData _, StartTestSessionCriteria criteria, ITestSessionEventsHandler _, Dictionary _, IWarningLogger _) => + { + Assert.IsTrue(criteria.RunSettings!.Contains(Constants.DotNetFramework46)); + Assert.IsTrue(criteria.RunSettings.Contains(nameof(Architecture.ARM))); + }); + + _testRequestManager.StartTestSession( + payload, + new Mock().Object, + eventsHandler.Object, + _protocolConfig); + + eventsHandler.Verify(eh => eh.HandleStartTestSessionComplete(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); + _mockAssemblyMetadataProvider.Verify(a => a.GetFrameworkName(It.IsAny())); + } + + [TestMethod] + public void StartTestSessionShouldThrowSettingsExceptionWhenFindingIncompatibleDataCollectorsInTestSettings() + { + var settingXml = @" + + C:\temp.testsettings + true + + + + + + + + + + "; + + var payload = new StartTestSessionPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = settingXml + }; + + _commandLineOptions.EnableCodeCoverage = false; + bool exceptionThrown = false; + + try + { + _testRequestManager.StartTestSession( + payload, + new Mock().Object, + new Mock().Object, + _protocolConfig); + } + catch (SettingsException ex) + { + exceptionThrown = true; + Assert.IsTrue(ex.Message.Contains(@"C:\temp.testsettings"), ex.Message); } - [TestMethod] - public void TestRequestManagerShouldNotInitializeConsoleLoggerIfDesignModeIsSet() - { - CommandLineOptions.Instance.IsDesignMode = true; - this.mockLoggerEvents = new DummyLoggerEvents(TestSessionMessageLogger.Instance); - var requestManager = new TestRequestManager(CommandLineOptions.Instance, - new Mock().Object, - TestRunResultAggregator.Instance, - new Mock().Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - Assert.IsFalse(this.mockLoggerEvents.EventsSubscribed()); - } - - [TestMethod] - public void InitializeExtensionsShouldCallTestPlatformToClearAndUpdateExtensions() - { - var paths = new List() { "a", "b" }; - this.testRequestManager.InitializeExtensions(paths, false); - - this.mockTestPlatform.Verify(mt => mt.ClearExtensions(), Times.Once); - this.mockTestPlatform.Verify(mt => mt.UpdateExtensions(paths, false), Times.Once); - } - - [TestMethod] - public void ResetShouldResetCommandLineOptionsInstance() - { - var oldInstance = CommandLineOptions.Instance; - this.testRequestManager.ResetOptions(); - - var newInstance = CommandLineOptions.Instance; - - Assert.AreNotEqual(oldInstance, newInstance, "CommandLineOptions must be cleaned up"); - } - - [TestMethod] - public void DiscoverTestsShouldReadTheBatchSizeFromSettingsAndSetItForDiscoveryCriteria() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = - @" - - - 15 - - " - }; - - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, new Mock().Object, this.protocolConfig); - Assert.AreEqual(15, actualDiscoveryCriteria.FrequencyOfDiscoveredTestsEvent); - } - - [TestMethod] - public void DiscoverTestsShouldCallTestPlatformAndSucceed() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var createDiscoveryRequestCalled = 0; - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - createDiscoveryRequestCalled++; - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - var mockDiscoveryRegistrar = new Mock(); - - string testCaseFilterValue = "TestFilter"; - CommandLineOptions.Instance.TestCaseFilterValue = testCaseFilterValue; - this.testRequestManager = new TestRequestManager(CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, this.protocolConfig); - - Assert.AreEqual(testCaseFilterValue, actualDiscoveryCriteria.TestCaseFilter, "TestCaseFilter must be set"); - - Assert.AreEqual(1, createDiscoveryRequestCalled, "CreateDiscoveryRequest must be invoked only once."); - Assert.AreEqual(2, actualDiscoveryCriteria.Sources.Count(), "All Sources must be used for discovery request"); - Assert.AreEqual("a", actualDiscoveryCriteria.Sources.First(), "First Source in list is incorrect"); - Assert.AreEqual("b", actualDiscoveryCriteria.Sources.ElementAt(1), "Second Source in list is incorrect"); - - // Default frequency is set to 10, unless specified in runsettings. - Assert.AreEqual(10, actualDiscoveryCriteria.FrequencyOfDiscoveredTestsEvent); - - mockDiscoveryRegistrar.Verify(md => md.RegisterDiscoveryEvents(It.IsAny()), Times.Once); - mockDiscoveryRegistrar.Verify(md => md.UnregisterDiscoveryEvents(It.IsAny()), Times.Once); - - mockDiscoveryRequest.Verify(md => md.DiscoverAsync(), Times.Once); - - mockTestPlatformEventSource.Verify(mt => mt.DiscoveryRequestStart(), Times.Once); - mockTestPlatformEventSource.Verify(mt => mt.DiscoveryRequestStop(), Times.Once); - } - - [TestMethod] - public void DiscoverTestsShouldPassSameProtocolConfigInRequestData() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - var mockDiscoveryRegistrar = new Mock(); - - string testCaseFilterValue = "TestFilter"; - CommandLineOptions.Instance.TestCaseFilterValue = testCaseFilterValue; - this.testRequestManager = new TestRequestManager(CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify. - Assert.AreEqual(5, actualRequestData.ProtocolConfig.Version); - } - - - [TestMethod] - public void DiscoverTestsShouldCollectMetrics() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll", "b.dll" }, - RunSettings = @" - - 2 - x86 - Framework35 - True - - - 169.254.193.190 - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify. - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.MaxCPUcount, out var maxcount)); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetPlatform, out var targetPlatform)); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.DisableAppDomain, out var disableAppDomain)); - Assert.AreEqual("Other", targetDevice); - Assert.AreEqual(2, maxcount); - Assert.AreEqual("X86", targetPlatform.ToString()); - Assert.AreEqual(true, disableAppDomain); - } - - [TestMethod] - public void DiscoverTestsShouldCollectTargetDeviceLocalMachineIfTargetDeviceStringisEmpty() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify. - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); - Assert.AreEqual("Local Machine", targetDevice); - } - - [TestMethod] - public void DiscoverTestsShouldCollectTargetDeviceIfTargetDeviceIsDevice() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - Device - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify. - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out object targetDevice)); - Assert.AreEqual("Device", targetDevice); - } - - [TestMethod] - public void DiscoverTestsShouldCollectTargetDeviceIfTargetDeviceIsEmulator() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - Emulator 8.1 U1 WVGA 4 inch 512MB - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify. - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); - Assert.AreEqual("Emulator 8.1 U1 WVGA 4 inch 512MB", targetDevice); - } - - [TestMethod] - public void DiscoverTestsShouldCollectCommands() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - Device - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - CommandLineOptions.Instance.Parallel = true; - CommandLineOptions.Instance.EnableCodeCoverage = true; - CommandLineOptions.Instance.InIsolation = true; - CommandLineOptions.Instance.UseVsixExtensions = true; - CommandLineOptions.Instance.SettingsFile = @"c://temp/.runsettings"; - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); - - var commandLineArray = commandLineSwitches.ToString(); - - Assert.IsTrue(commandLineArray.Contains("/Parallel")); - Assert.IsTrue(commandLineArray.Contains("/EnableCodeCoverage")); - Assert.IsTrue(commandLineArray.Contains("/InIsolation")); - Assert.IsTrue(commandLineArray.Contains("/UseVsixExtensions")); - Assert.IsTrue(commandLineArray.Contains("/settings//.RunSettings")); - } - - [TestMethod] - public void DiscoverTestsShouldCollectTestSettings() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - Device - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - CommandLineOptions.Instance.SettingsFile = @"c://temp/.testsettings"; - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); - - var commandLineArray = commandLineSwitches.ToString(); - - Assert.IsTrue(commandLineArray.Contains("/settings//.TestSettings")); - } - - [TestMethod] - public void DiscoverTestsShouldCollectVsmdiFile() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - Device - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - CommandLineOptions.Instance.SettingsFile = @"c://temp/.vsmdi"; - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); - - var commandLineArray = commandLineSwitches.ToString(); - - Assert.IsTrue(commandLineArray.Contains("/settings//.vsmdi")); - } - - [TestMethod] - public void DiscoverTestsShouldCollectTestRunConfigFile() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = @" - - Device - - " - }; - - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - var mockDiscoveryRegistrar = new Mock(); - - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => { actualRequestData = requestData; }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - CommandLineOptions.Instance.SettingsFile = @"c://temp/.testrunConfig"; - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); - - var commandLineArray = commandLineSwitches.ToString(); - - Assert.IsTrue(commandLineArray.Contains("/settings//.testrunConfig")); - } - - [TestMethod] - public void DiscoverTestsShouldUpdateFrameworkAndPlatformIfNotSpecifiedInDesignMode() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - this.commandLineOptions.IsDesignMode = true; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny())); - - Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - public void DiscoverTestsShouldNotUpdateFrameworkAndPlatformIfSpecifiedInDesignMode() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = - $@" - - - {Constants.DotNetFramework46} - {Architecture.ARM} - - " - }; - this.commandLineOptions.IsDesignMode = true; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.X86); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework451)); - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Never); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny()), Times.Never); - - Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - public void DiscoverTestsShouldUpdateFrameworkAndPlatformInCommandLineScenariosIfNotSpecified() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - this.commandLineOptions.IsDesignMode = false; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, new Mock().Object, this.protocolConfig); - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny())); - - Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - public void DiscoverTestsShouldNotUpdateFrameworkAndPlatformInCommandLineScenariosIfSpecifiedButInferred() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - this.commandLineOptions.IsDesignMode = false; - this.commandLineOptions.TargetFrameworkVersion = Framework.DefaultFramework; - this.commandLineOptions.TargetArchitecture = Architecture.X86; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform - .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, - new Mock().Object, this.protocolConfig); - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny()), Times.Once); - - Assert.IsFalse(actualDiscoveryCriteria.RunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsFalse(actualDiscoveryCriteria.RunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - public void DiscoverTestsShouldPublishMetrics() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a", "b" } - }; - var mockProtocolConfig = new ProtocolConfig { Version = 2 }; - var mockDiscoveryRegistrar = new Mock(); - - // Act - this.testRequestManager.DiscoverTests(payload, mockDiscoveryRegistrar.Object, mockProtocolConfig); - - // Verify. - this.mockMetricsPublisher.Verify(mp => mp.PublishMetrics(TelemetryDataConstants.TestDiscoveryCompleteEvent, It.IsAny>()), Times.Once); - } - - [TestMethod] - public void CancelShouldNotThrowExceptionIfTestRunRequestHasBeenDisposed() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var mockRunEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - this.testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, this.protocolConfig); - this.testRequestManager.CancelTestRun(); - } - - [TestMethod] - public void AbortShouldNotThrowExceptionIfTestRunRequestHasBeenDisposed() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var mockRunEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - this.testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, this.protocolConfig); - this.testRequestManager.AbortTestRun(); - } - - [TestMethod] - public void RunTestsShouldReadTheBatchSizeFromSettingsAndSetItForTestRunCriteria() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = - @" - - - 15 - - " - }; - - TestRunCriteria actualTestRunCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - Assert.AreEqual(15, actualTestRunCriteria.FrequencyOfRunStatsChangeEvent); - } - - [TestMethod] - public void RunTestsShouldNotThrowForFramework35() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - Framework35 - - " - }; - - TestRunCriteria actualTestRunCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockDiscoveryRequest.Object); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())).Returns(new FrameworkName(Constants.DotNetFramework35)); - - var mockRunEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - this.testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, this.protocolConfig); - - mockRunEventsRegistrar.Verify(lw => lw.LogWarning("Framework35 is not supported. For projects targeting .Net Framework 3.5, test will run in CLR 4.0 \"compatibility mode\"."), Times.Once); - mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStart(), Times.Once); - mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStop(), Times.Once); - } - - [TestMethod] - public void RunTestsShouldPassSameProtocolConfigInRequestData() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = DefaultRunsettings - }; - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualRequestData = requestData; - }).Returns(mockDiscoveryRequest.Object); - - // Act. - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); - - // Verify. - Assert.AreEqual(5, actualRequestData.ProtocolConfig.Version); - } - - [TestMethod] - public void RunTestsShouldCollectCommands() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = DefaultRunsettings - }; - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualRequestData = requestData; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - CommandLineOptions.Instance.Parallel = true; - CommandLineOptions.Instance.EnableCodeCoverage = true; - CommandLineOptions.Instance.InIsolation = true; - CommandLineOptions.Instance.UseVsixExtensions = true; - CommandLineOptions.Instance.SettingsFile = @"c://temp/.runsettings"; - - // Act. - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.CommandLineSwitches, out var commandLineSwitches)); - - var commandLineArray = commandLineSwitches.ToString(); - - Assert.IsTrue(commandLineArray.Contains("/Parallel")); - Assert.IsTrue(commandLineArray.Contains("/EnableCodeCoverage")); - Assert.IsTrue(commandLineArray.Contains("/InIsolation")); - Assert.IsTrue(commandLineArray.Contains("/UseVsixExtensions")); - Assert.IsTrue(commandLineArray.Contains("/settings//.RunSettings")); - } - - [TestMethod] - public void RunTestsShouldCollectTelemetryForLegacySettings() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = @" - - - - - - - - - - - - - - - - " - }; - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualRequestData = requestData; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - // Act. - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue("VS.TestRun.LegacySettings.Elements", out var legacySettingsNodes)); - StringAssert.Equals("Deployment, Scripts, Execution, AssemblyResolution, Timeouts, Hosts", legacySettingsNodes); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue("VS.TestRun.LegacySettings.DeploymentAttributes", out var deploymentAttributes)); - StringAssert.Equals("enabled, deploySatelliteAssemblies", deploymentAttributes); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue("VS.TestRun.LegacySettings.ExecutionAttributes", out var executionAttributes)); - StringAssert.Equals("hostProcessPlatform, parallelTestCount", executionAttributes); - - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TestSettingsUsed, out var testSettingsUsed)); - Assert.IsFalse((bool)testSettingsUsed); - } - - [TestMethod] - public void RunTestsShouldCollectTelemetryForTestSettingsEmbeddedInsideRunSettings() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = @" - - true - ..\..\Foo.testsettings - - " - }; - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualRequestData = requestData; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - // Act. - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TestSettingsUsed, out var testSettingsUsed)); - Assert.IsTrue((bool)testSettingsUsed); - } - - [TestMethod] - public void RunTestsShouldCollectMetrics() - { - // Opt in the Telemetry - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = @" - - 2 - x86 - Framework35 - True - - - 169.254.193.190 - - " - }; - var mockProtocolConfig = new ProtocolConfig { Version = 5 }; - IRequestData actualRequestData = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualRequestData = requestData; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager = new TestRequestManager( - CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - // Act. - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, mockProtocolConfig); - - // Verify - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetDevice, out var targetDevice)); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.MaxCPUcount, out var maxcount)); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.TargetPlatform, out var targetPlatform)); - Assert.IsTrue(actualRequestData.MetricsCollection.Metrics.TryGetValue(TelemetryDataConstants.DisableAppDomain, out var disableAppDomain)); - Assert.AreEqual("Other", targetDevice); - Assert.AreEqual(2, maxcount); - Assert.AreEqual("X86", targetPlatform.ToString()); - Assert.AreEqual(true, disableAppDomain); - } - - [TestMethod] - public void RunTestsWithSourcesShouldCallTestPlatformAndSucceed() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var createRunRequestCalled = 0; - TestRunCriteria observedCriteria = null; - var mockRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - createRunRequestCalled++; - observedCriteria = runCriteria; - }).Returns(mockRunRequest.Object); - - var mockRunEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - string testCaseFilterValue = "TestFilter"; - payload.TestPlatformOptions = new TestPlatformOptions { TestCaseFilter = testCaseFilterValue }; - this.testRequestManager = new TestRequestManager(CommandLineOptions.Instance, - this.mockTestPlatform.Object, - TestRunResultAggregator.Instance, - this.mockTestPlatformEventSource.Object, - this.inferHelper, - this.mockMetricsPublisherTask, - this.mockProcessHelper.Object, - this.mockAttachmentsProcessingManager.Object); - - this.testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, this.protocolConfig); - - Assert.AreEqual(testCaseFilterValue, observedCriteria.TestCaseFilter, "TestCaseFilter must be set"); - - Assert.AreEqual(1, createRunRequestCalled, "CreateRunRequest must be invoked only once."); - Assert.AreEqual(2, observedCriteria.Sources.Count(), "All Sources must be used for discovery request"); - Assert.AreEqual("a", observedCriteria.Sources.First(), "First Source in list is incorrect"); - Assert.AreEqual("b", observedCriteria.Sources.ElementAt(1), "Second Source in list is incorrect"); - - // Check for the default value for the frequency - Assert.AreEqual(10, observedCriteria.FrequencyOfRunStatsChangeEvent); - mockRunEventsRegistrar.Verify(md => md.RegisterTestRunEvents(It.IsAny()), Times.Once); - mockRunEventsRegistrar.Verify(md => md.UnregisterTestRunEvents(It.IsAny()), Times.Once); - - mockRunRequest.Verify(md => md.ExecuteAsync(), Times.Once); - - mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStart(), Times.Once); - mockTestPlatformEventSource.Verify(mt => mt.ExecutionRequestStop(), Times.Once); - } - - [TestMethod] - public void RunTestsMultipleCallsShouldNotRunInParallel() - { - var payload1 = new TestRunRequestPayload() - { - Sources = new List() { "a" }, - RunSettings = DefaultRunsettings - }; - - var payload2 = new TestRunRequestPayload() - { - Sources = new List() { "b" }, - RunSettings = DefaultRunsettings - }; - - var mockRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Returns(mockRunRequest.Object); - - var mockRunEventsRegistrar1 = new Mock(); - var mockRunEventsRegistrar2 = new Mock(); - - // Setup the second one to wait - var sw = new Stopwatch(); - sw.Start(); - - long run1Start = 0; - long run1Stop = 0; - long run2Start = 0; - long run2Stop = 0; - mockRunEventsRegistrar1.Setup(md => md.RegisterTestRunEvents(It.IsAny())).Callback(() => - { - Thread.Sleep(10); - run1Start = sw.ElapsedMilliseconds; - Thread.Sleep(1); - }); - mockRunEventsRegistrar1.Setup(md => md.UnregisterTestRunEvents(It.IsAny())).Callback(() => - { - Thread.Sleep(10); - run1Stop = sw.ElapsedMilliseconds; - Thread.Sleep(10); - }); - - mockRunEventsRegistrar2.Setup(md => md.RegisterTestRunEvents(It.IsAny())).Callback(() => - { - Thread.Sleep(10); - run2Start = sw.ElapsedMilliseconds; - Thread.Sleep(10); - }); - mockRunEventsRegistrar2.Setup(md => md.UnregisterTestRunEvents(It.IsAny())).Callback(() => - { - Thread.Sleep(10); - run2Stop = sw.ElapsedMilliseconds; - }); - - var mockCustomlauncher = new Mock(); - var task1 = Task.Run(() => - { - this.testRequestManager.RunTests(payload1, mockCustomlauncher.Object, mockRunEventsRegistrar1.Object, this.protocolConfig); - }); - var task2 = Task.Run(() => - { - this.testRequestManager.RunTests(payload2, mockCustomlauncher.Object, mockRunEventsRegistrar2.Object, this.protocolConfig); - }); - - Task.WaitAll(task1, task2); - - if (run1Start < run2Start) - { - Assert.IsTrue((run2Stop > run2Start) - && (run2Start > run1Stop) - && (run1Stop > run1Start)); - } - else - { - Assert.IsTrue((run1Stop > run1Start) - && (run1Start > run2Stop) - && (run2Stop > run2Start)); - } - } - - [TestMethod] - public void RunTestsShouldPublishMetrics() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var mockRunEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - this.testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, this.protocolConfig); - - this.mockMetricsPublisher.Verify(mp => mp.PublishMetrics(TelemetryDataConstants.TestExecutionCompleteEvent, It.IsAny>()), Times.Once); - } - - // TODO: add tests in design mode and executor that they are handling all the exceptions properly including printing inner exception. - - [TestMethod] - public void RunTestsIfThrowsTestPlatformExceptionShouldThrowOut() - { - Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new TestPlatformException("HelloWorld"))); - } - - [TestMethod] - public void RunTestsIfThrowsSettingsExceptionShouldThrowOut() - { - Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new SettingsException("HelloWorld"))); - } - - [TestMethod] - public void RunTestsIfThrowsInvalidOperationExceptionShouldThrowOut() - { - Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new InvalidOperationException("HelloWorld"))); - } - - [TestMethod] - public void RunTestsIfThrowsExceptionShouldThrowOut() - { - Assert.ThrowsException(() => RunTestsIfThrowsExceptionShouldThrowOut(new NotImplementedException("HelloWorld"))); - } - - [TestMethod] - public void DiscoverTestsIfThrowsTestPlatformExceptionShouldThrowOut() - { - Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new TestPlatformException("HelloWorld"))); - } - - [TestMethod] - public void DiscoverTestsIfThrowsSettingsExceptionShouldThrowOut() - { - Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new SettingsException("HelloWorld"))); - } - - [TestMethod] - public void DiscoverTestsIfThrowsInvalidOperationExceptionShouldThrowOut() - { - Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new InvalidOperationException("HelloWorld"))); - } - - [TestMethod] - public void DiscoverTestsIfThrowsExceptionShouldThrowOut() - { - Assert.ThrowsException(() => DiscoverTestsIfThrowsExceptionShouldThrowOut(new NotImplementedException("HelloWorld"))); - } - - [DataTestMethod] - [DataRow(true)] - [DataRow(false)] - public void DiscoverTestsShouldUpdateDesignModeAndCollectSourceInformation(bool designModeValue) - { - var runsettings = ".NETFramework,Version=v4.5"; - var discoveryPayload = CreateDiscoveryPayload(runsettings); - this.commandLineOptions.IsDesignMode = designModeValue; - - this.testRequestManager.DiscoverTests(discoveryPayload, new Mock().Object, this.protocolConfig); - - var designmode = $"{designModeValue}"; - this.mockTestPlatform.Verify( - tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings.Contains(designmode)), It.IsAny())); - - var collectSourceInformation = $"{designModeValue}"; - this.mockTestPlatform.Verify( - tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings.Contains(collectSourceInformation)), It.IsAny())); - } - - [TestMethod] - public void DiscoverTestsShouldNotUpdateDesignModeIfUserHasSetDesignModeInRunSettings() - { - var runsettings = "False.NETFramework,Version=v4.5"; - var discoveryPayload = CreateDiscoveryPayload(runsettings); - this.commandLineOptions.IsDesignMode = true; - - this.testRequestManager.DiscoverTests(discoveryPayload, new Mock().Object, this.protocolConfig); - - var designmode = "False"; - this.mockTestPlatform.Verify( - tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings.Contains(designmode)), It.IsAny())); - } - - [DataTestMethod] - [DataRow(true)] - [DataRow(false)] - public void RunTestsShouldUpdateDesignModeIfRunnerIsInDesignMode(bool designModeValue) - { - var runsettings = - ".NETFramework,Version=v4.5"; - var payload = new TestRunRequestPayload - { - RunSettings = runsettings, - Sources = new List { "c:\\testproject.dll" } - }; - this.commandLineOptions.IsDesignMode = designModeValue; - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - var designmode = $"{designModeValue}"; - this.mockTestPlatform.Verify(tp => tp.CreateTestRunRequest(It.IsAny(), It.Is(rc => rc.TestRunSettings.Contains(designmode)), It.IsAny())); - } - - [DataTestMethod] - [DataRow(true)] - [DataRow(false)] - public void DiscoverTestsShouldNotUpdateCollectSourceInformationIfUserHasSetItInRunSettings(bool val) - { - var runsettings = $"{val}"; - var discoveryPayload = CreateDiscoveryPayload(runsettings); - - this.testRequestManager.DiscoverTests(discoveryPayload, new Mock().Object, this.protocolConfig); - - var collectSourceInformation = $"{val}"; - this.mockTestPlatform.Verify( - tp => tp.CreateDiscoveryRequest(It.IsAny(), It.Is(dc => dc.RunSettings.Contains(collectSourceInformation)), It.IsAny())); - } - - [TestMethod] - public void RunTestsShouldShouldUpdateFrameworkAndPlatformIfNotSpecifiedInDesignMode() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - - this.commandLineOptions.IsDesignMode = true; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny())); - - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); - - } - - [TestMethod] - public void RunTestsShouldNotUpdateFrameworkAndPlatformIfSpecifiedInDesignModeButInferred() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - $@" - - - {Constants.DotNetFramework46} - {Architecture.ARM} - - " - }; - - this.commandLineOptions.IsDesignMode = true; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.X86); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework451)); - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny()), Times.Once); - - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - [DataRow("x86")] - [DataRow("X86")] - [DataRow("ARM")] - [DataRow("aRm")] - public void RunTestsShouldNotUpdatePlatformIfSpecifiedInDesignModeButInferred(string targetPlatform) - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - $@" - - - {targetPlatform} - - " - }; - - this.commandLineOptions.IsDesignMode = true; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.X86); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework451)); - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny()), Times.Once); - - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(targetPlatform)); - } - - [TestMethod] - public void RunTestsShouldUpdateFrameworkAndPlatformInCommandLineScenarios() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - - this.commandLineOptions.IsDesignMode = false; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny())); - - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - public void RunTestsShouldNotpdateFrameworkAndPlatformInCommandLineScenariosIfSpecifiedButInferred() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - - this.commandLineOptions.IsDesignMode = false; - this.commandLineOptions.TargetArchitecture = Architecture.X86; - this.commandLineOptions.TargetFrameworkVersion = Framework.DefaultFramework; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny()), Times.Once); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny()), Times.Once); - - Assert.IsFalse(actualTestRunCriteria.TestRunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsFalse(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); - } - - [TestMethod] - public void RunTestsWithTestCasesShouldUpdateFrameworkAndPlatformIfNotSpecifiedInDesignMode() - { - var actualSources = new List() { "1.dll", "2.dll" }; - var payload = new TestRunRequestPayload() - { - TestCases = new List() { - new TestCase(){Source = actualSources[0]}, - new TestCase() { Source = actualSources[0]}, - new TestCase() { Source = actualSources[1] } - }, - RunSettings = - @" - - - - " - }; - - List archSources = new List(), fxSources = new List(); - - this.commandLineOptions.IsDesignMode = true; - this.mockAssemblyMetadataProvider.Setup(a => a.GetArchitecture(It.IsAny())).Callback(source => archSources.Add(source)) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup(a => a.GetFrameWork(It.IsAny())).Callback(source => fxSources.Add(source)) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny())); - - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(actualTestRunCriteria.TestRunSettings.Contains(nameof(Architecture.ARM))); - CollectionAssert.AreEqual(actualSources, archSources); - CollectionAssert.AreEqual(actualSources, fxSources); - } - - [TestMethod] - public void RunTestShouldThrowExceptionIfRunSettingWithDCHasTestSettingsInIt() - { - var settingXml = @" - - C:\temp.testsettings - true - - - - - - - - - - "; - - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = settingXml - }; - - this.commandLineOptions.EnableCodeCoverage = false; - bool exceptionThrown = false; - - try - { - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - } - catch (SettingsException ex) - { - exceptionThrown = true; - Assert.IsTrue(ex.Message.Contains(@"C:\temp.testsettings"), ex.Message); - } - - Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); - } - - [TestMethod] - public void RunTestShouldThrowExceptionIfRunSettingWithDCHasTestSettingsAndEnableCodeCoverageTrue() - { - var settingXml = @" - - C:\temp.testsettings - true - - - - - - - - - - "; - - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = settingXml - }; - - this.commandLineOptions.EnableCodeCoverage = true; - bool exceptionThrown = false; - - try - { - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - } - catch (SettingsException ex) - { - exceptionThrown = true; - Assert.IsTrue(ex.Message.Contains(@"C:\temp.testsettings"), ex.Message); - } - - Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); - } - - [TestMethod] - public void RunTestShouldNotThrowExceptionIfRunSettingHasCodeCoverageDCAndTestSettingsInItWithEnableCoverageTrue() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = @" - - C:\temp.testsettings - true - - - - - - - - " - }; - - this.commandLineOptions.EnableCodeCoverage = true; - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - } - - [TestMethod] - public void RunTestsShouldAddConsoleLoggerInRunSettingsInNonDesignMode() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - - this.commandLineOptions.IsDesignMode = false; - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria.TestRunSettings).LoggerSettingsList; - Assert.AreEqual(1, loggerSettingsList.Count); - Assert.AreEqual("Console", loggerSettingsList[0].FriendlyName); - Assert.IsNotNull(loggerSettingsList[0].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[0].CodeBase); - } - - [TestMethod] - public void RunTestsShouldAddConsoleLoggerInRunSettingsIfDesignModeSetFalseInRunSettings() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - False - - - - - - Value1 - - - - - " - }; - - this.commandLineOptions.IsDesignMode = true; - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria.TestRunSettings).LoggerSettingsList; - Assert.AreEqual(2, loggerSettingsList.Count); - Assert.IsNotNull(loggerSettingsList[0].Configuration); - Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); - Assert.AreEqual("Console", loggerSettingsList[1].FriendlyName); - Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[1].CodeBase); - } - - [TestMethod] - public void DiscoverTestsShouldAddConsoleLoggerInRunSettingsIfDesignModeSetFalseInRunSettings() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - False - - - - - - Value1 - - - - - " - }; - this.commandLineOptions.IsDesignMode = true; - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform - .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, - new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria.RunSettings).LoggerSettingsList; - Assert.AreEqual(2, loggerSettingsList.Count); - Assert.IsNotNull(loggerSettingsList[0].Configuration); - Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); - Assert.AreEqual("Console", loggerSettingsList[1].FriendlyName); - Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[1].CodeBase); - } - - [TestMethod] - public void RunTestsShouldNotAddConsoleLoggerInRunSettingsInDesignMode() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - True - - " - }; - - this.commandLineOptions.IsDesignMode = false; - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - Assert.IsFalse(actualTestRunCriteria.TestRunSettings.Contains("LoggerRunSettings")); - } - - [TestMethod] - public void DiscoverTestsShouldAddConsoleLoggerInRunSettingsInNonDesignMode() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - this.commandLineOptions.IsDesignMode = false; - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform - .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, - new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria.RunSettings).LoggerSettingsList; - Assert.AreEqual(1, loggerSettingsList.Count); - Assert.AreEqual("Console", loggerSettingsList[0].FriendlyName); - Assert.IsNotNull(loggerSettingsList[0].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[0].CodeBase); - } - - [TestMethod] - public void DiscoverTestsShouldNotAddConsoleLoggerInRunSettingsInDesignMode() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - True - - " - }; - this.commandLineOptions.IsDesignMode = false; - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform - .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, - new Mock().Object, this.protocolConfig); - - Assert.IsFalse(actualDiscoveryCriteria.RunSettings.Contains("LoggerRunSettings")); - } - - [TestMethod] - public void RunTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInNonDesignMode() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - False - - - - - - Value1 - - - - - Value1 - - - - - " - }; - - this.commandLineOptions.IsDesignMode = false; - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria.TestRunSettings).LoggerSettingsList; - Assert.AreEqual(2, loggerSettingsList.Count); - Assert.IsNotNull(loggerSettingsList[0].Configuration); - Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); - Assert.AreEqual("console", loggerSettingsList[1].FriendlyName); - Assert.AreEqual(new Uri("logger://tempconsoleUri").ToString(), loggerSettingsList[1].Uri.ToString()); - Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); - Assert.AreNotEqual("tempCodeBase", loggerSettingsList[1].CodeBase); - Assert.IsTrue(loggerSettingsList[1].Configuration.InnerXml.Contains("Value1")); - Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[1].CodeBase); - } - - [TestMethod] - public void DiscoverTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInNonDesignMode() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - False - - - - - - Value1 - - - - - Value1 - - - - - " - }; - this.commandLineOptions.IsDesignMode = false; - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform - .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, - new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria.RunSettings).LoggerSettingsList; - Assert.AreEqual(2, loggerSettingsList.Count); - Assert.IsNotNull(loggerSettingsList[0].Configuration); - Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); - Assert.AreEqual("consoleTemp", loggerSettingsList[1].FriendlyName); - Assert.AreEqual(new Uri("logger://Microsoft/TestPlatform/ConsoleLogger/v1").ToString(), loggerSettingsList[1].Uri.ToString()); - Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); - Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].CodeBase); - Assert.IsTrue(loggerSettingsList[1].Configuration.InnerXml.Contains("Value1")); - Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[1].CodeBase); - } - - [TestMethod] - public void RunTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInDesignMode() - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - True - - - - - - Value1 - - - - - Value1 - - - - - " - }; - - this.commandLineOptions.IsDesignMode = false; - TestRunCriteria actualTestRunCriteria = null; - var mockTestRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - actualTestRunCriteria = runCriteria; - }).Returns(mockTestRunRequest.Object); - this.testRequestManager.RunTests(payload, new Mock().Object, new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualTestRunCriteria.TestRunSettings).LoggerSettingsList; - Assert.AreEqual(2, loggerSettingsList.Count); - Assert.IsNotNull(loggerSettingsList[0].Configuration); - Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); - Assert.AreEqual("console", loggerSettingsList[1].FriendlyName); - Assert.AreEqual(new Uri("logger://tempconsoleUri").ToString(), loggerSettingsList[1].Uri.ToString()); - Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); - Assert.AreNotEqual("tempCodeBase", loggerSettingsList[1].CodeBase); - Assert.IsTrue(loggerSettingsList[1].Configuration.InnerXml.Contains("Value1")); - Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[1].CodeBase); - } - - [TestMethod] - public void DiscoverTestsShouldOverrideOnlyAssemblyNameIfConsoleLoggerAlreadyPresentInDesignMode() - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - True - - - - - - Value1 - - - - - Value1 - - - - - " - }; - this.commandLineOptions.IsDesignMode = false; - DiscoveryCriteria actualDiscoveryCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform - .Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())) - .Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - actualDiscoveryCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - this.testRequestManager.DiscoverTests(payload, - new Mock().Object, this.protocolConfig); - - var loggerSettingsList = XmlRunSettingsUtilities.GetLoggerRunSettings(actualDiscoveryCriteria.RunSettings).LoggerSettingsList; - Assert.AreEqual(2, loggerSettingsList.Count); - Assert.IsNotNull(loggerSettingsList[0].Configuration); - Assert.AreEqual("blabla", loggerSettingsList[0].FriendlyName); - Assert.AreEqual("consoleTemp", loggerSettingsList[1].FriendlyName); - Assert.AreEqual(new Uri("logger://Microsoft/TestPlatform/ConsoleLogger/v1").ToString(), loggerSettingsList[1].Uri.ToString()); - Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].AssemblyQualifiedName); - Assert.AreNotEqual("tempAssemblyName", loggerSettingsList[1].CodeBase); - Assert.IsTrue(loggerSettingsList[1].Configuration.InnerXml.Contains("Value1")); - Assert.IsNotNull(loggerSettingsList[1].AssemblyQualifiedName); - Assert.IsNotNull(loggerSettingsList[1].CodeBase); - } - - [TestMethod] - public void ProcessTestRunAttachmentsShouldSucceedWithTelemetryEnabled() - { - var mockEventsHandler = new Mock(); - mockAttachmentsProcessingManager - .Setup(m => m.ProcessTestRunAttachmentsAsync(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())) - .Returns((IRequestData r, ICollection a, ITestRunAttachmentsProcessingEventsHandler h, CancellationToken token) => Task.Run(() => - { - r.MetricsCollection.Add(TelemetryDataConstants.NumberOfAttachmentsSentForProcessing, 5); - r.MetricsCollection.Add(TelemetryDataConstants.NumberOfAttachmentsAfterProcessing, 1); - })); - - var payload = new TestRunAttachmentsProcessingPayload() - { - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") }, - CollectMetrics = true - }; - - testRequestManager.ProcessTestRunAttachments(payload, mockEventsHandler.Object, this.protocolConfig); - - mockAttachmentsProcessingManager.Verify(m => m.ProcessTestRunAttachmentsAsync(It.Is(r => r.IsTelemetryOptedIn), payload.Attachments, mockEventsHandler.Object, It.IsAny())); - mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStart()); - mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStop()); - - mockMetricsPublisher.Verify(p => p.PublishMetrics(TelemetryDataConstants.TestAttachmentsProcessingCompleteEvent, - It.Is>(m => m.Count == 2 && - m.ContainsKey(TelemetryDataConstants.NumberOfAttachmentsSentForProcessing) && (int)m[TelemetryDataConstants.NumberOfAttachmentsSentForProcessing] == 5 && - m.ContainsKey(TelemetryDataConstants.NumberOfAttachmentsAfterProcessing) && (int)m[TelemetryDataConstants.NumberOfAttachmentsAfterProcessing] == 1))); - } - - [TestMethod] - public void ProcessTestRunAttachmentsShouldSucceedWithTelemetryDisabled() - { - var mockEventsHandler = new Mock(); - mockAttachmentsProcessingManager - .Setup(m => m.ProcessTestRunAttachmentsAsync(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())) - .Returns(Task.FromResult(true)); - - var payload = new TestRunAttachmentsProcessingPayload() - { - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") }, - CollectMetrics = false - }; - - testRequestManager.ProcessTestRunAttachments(payload, mockEventsHandler.Object, this.protocolConfig); - - mockAttachmentsProcessingManager.Verify(m => m.ProcessTestRunAttachmentsAsync(It.Is(r => !r.IsTelemetryOptedIn), payload.Attachments, mockEventsHandler.Object, It.IsAny())); - mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStart()); - mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStop()); - } - - [TestMethod] - public async Task CancelTestRunAttachmentsProcessingShouldSucceedIfRequestInProgress() - { - var mockEventsHandler = new Mock(); - mockAttachmentsProcessingManager - .Setup(m => m.ProcessTestRunAttachmentsAsync(It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())) - .Returns((IRequestData r, ICollection a, ITestRunAttachmentsProcessingEventsHandler h, CancellationToken token) => Task.Run(() => - { - int i = 0; - while (!token.IsCancellationRequested) - { - i++; - Console.WriteLine($"Iteration {i}"); - Task.Delay(5).Wait(); - } - - r.MetricsCollection.Add(TelemetryDataConstants.AttachmentsProcessingState, "Canceled"); - })); - - var payload = new TestRunAttachmentsProcessingPayload() - { - Attachments = new List { new AttachmentSet(new Uri("http://www.bing.com"), "out") }, - CollectMetrics = true - }; - - Task task = Task.Run(() => testRequestManager.ProcessTestRunAttachments(payload, mockEventsHandler.Object, this.protocolConfig)); - await Task.Delay(50); - testRequestManager.CancelTestRunAttachmentsProcessing(); - - await task; - - mockAttachmentsProcessingManager.Verify(m => m.ProcessTestRunAttachmentsAsync(It.IsAny(), payload.Attachments, mockEventsHandler.Object, It.IsAny())); - mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStart()); - mockTestPlatformEventSource.Verify(es => es.TestRunAttachmentsProcessingRequestStop()); - - mockMetricsPublisher.Verify(p => p.PublishMetrics(TelemetryDataConstants.TestAttachmentsProcessingCompleteEvent, - It.Is>(m => m.Count == 1 && m.ContainsKey(TelemetryDataConstants.AttachmentsProcessingState) && (string)m[TelemetryDataConstants.AttachmentsProcessingState] == "Canceled"))); - } - - [TestMethod] - public void CancelTestRunAttachmentsProcessingShouldSucceedIfNoRequest() - { - testRequestManager.CancelTestRunAttachmentsProcessing(); - } - - [TestMethod] - public void StartTestSessionShouldPassCorrectTelemetryOptedInOptionToTestPlatform() - { - this.mockTestPlatform.Setup( - tp => tp.StartTestSession( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Returns(true) - .Callback( - (IRequestData rd, StartTestSessionCriteria _, ITestSessionEventsHandler __) => - { - Assert.IsTrue(rd.IsTelemetryOptedIn); - }); - - Environment.SetEnvironmentVariable("VSTEST_TELEMETRY_OPTEDIN", "1"); - - this.testRequestManager.StartTestSession( - new StartTestSessionPayload() - { - TestPlatformOptions = new TestPlatformOptions() - { - CollectMetrics = true - } - }, - new Mock().Object, - new Mock().Object, - this.protocolConfig); - } - - [TestMethod] - public void StartTestSessionShouldUpdateSettings() - { - var payload = new StartTestSessionPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = - @" - - - - " - }; - this.commandLineOptions.IsDesignMode = true; - - this.mockAssemblyMetadataProvider.Setup( - a => a.GetArchitecture(It.IsAny())) - .Returns(Architecture.ARM); - this.mockAssemblyMetadataProvider.Setup( - a => a.GetFrameWork(It.IsAny())) - .Returns(new FrameworkName(Constants.DotNetFramework46)); - - this.mockTestPlatform.Setup( - tp => tp.StartTestSession( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Returns(true) - .Callback( - (IRequestData _, StartTestSessionCriteria criteria, ITestSessionEventsHandler __) => - { - Assert.IsTrue(criteria.RunSettings.Contains(Constants.DotNetFramework46)); - Assert.IsTrue(criteria.RunSettings.Contains(nameof(Architecture.ARM))); - }); - - this.testRequestManager.StartTestSession( - payload, - new Mock().Object, - new Mock().Object, - this.protocolConfig); - - this.mockAssemblyMetadataProvider.Verify(a => a.GetArchitecture(It.IsAny())); - this.mockAssemblyMetadataProvider.Verify(a => a.GetFrameWork(It.IsAny())); - } - - [TestMethod] - public void StartTestSessionShouldThrowSettingsExceptionWhenFindingIncompatibleDataCollectorsInTestSettings() - { - var settingXml = @" - - C:\temp.testsettings - true - - - - - - - - - - "; - - var payload = new StartTestSessionPayload() - { - Sources = new List() { "a.dll" }, - RunSettings = settingXml - }; - - this.commandLineOptions.EnableCodeCoverage = false; - bool exceptionThrown = false; - - try - { - this.testRequestManager.StartTestSession( - payload, - new Mock().Object, - new Mock().Object, - this.protocolConfig); - } - catch (SettingsException ex) - { - exceptionThrown = true; - Assert.IsTrue(ex.Message.Contains(@"C:\temp.testsettings"), ex.Message); - } - - Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); - } - - [TestMethod] - public void StartTestSessionShouldBeSuccessful() - { - this.mockTestPlatform.Setup( - tp => tp.StartTestSession( - It.IsAny(), - It.IsAny(), - It.IsAny())) - .Returns(true); - - this.testRequestManager.StartTestSession( - new StartTestSessionPayload() - { - TestPlatformOptions = new TestPlatformOptions() - { - CollectMetrics = true - } - }, - new Mock().Object, - new Mock().Object, - this.protocolConfig); - - this.mockTestPlatformEventSource.Verify( - tpes => tpes.StartTestSessionStart(), - Times.Once()); - this.mockTestPlatformEventSource.Verify( - tpes => tpes.StartTestSessionStop(), - Times.Once()); - } - - private static DiscoveryRequestPayload CreateDiscoveryPayload(string runsettings) - { - var discoveryPayload = new DiscoveryRequestPayload - { - RunSettings = runsettings, - Sources = new[] { "c:\\testproject.dll" } - }; - return discoveryPayload; - } - - private void RunTestsIfThrowsExceptionShouldThrowOut(Exception exception) - { - var payload = new TestRunRequestPayload() - { - Sources = new List() { "a", "b" }, - RunSettings = DefaultRunsettings - }; - - var createRunRequestCalled = 0; - TestRunCriteria observedCriteria = null; - var mockRunRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options) => - { - createRunRequestCalled++; - observedCriteria = runCriteria; - }).Returns(mockRunRequest.Object); - - mockRunRequest.Setup(mr => mr.ExecuteAsync()).Throws(exception); - - var mockRunEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - this.testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, this.protocolConfig); - } - - private void DiscoverTestsIfThrowsExceptionShouldThrowOut(Exception exception) - { - var payload = new DiscoveryRequestPayload() - { - Sources = new List() { "a.dll", "b.dll" }, - RunSettings = DefaultRunsettings - }; - - DiscoveryCriteria observedCriteria = null; - var mockDiscoveryRequest = new Mock(); - this.mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny())).Callback( - (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options) => - { - observedCriteria = discoveryCriteria; - }).Returns(mockDiscoveryRequest.Object); - - mockDiscoveryRequest.Setup(mr => mr.DiscoverAsync()).Throws(exception); - - var mockDiscoveryEventsRegistrar = new Mock(); - var mockCustomlauncher = new Mock(); - - this.testRequestManager.DiscoverTests(payload, mockDiscoveryEventsRegistrar.Object, this.protocolConfig); - } - } -} \ No newline at end of file + Assert.IsTrue(exceptionThrown, "Initialize should throw exception"); + } + + [TestMethod] + public void StartTestSessionShouldBeSuccessful() + { + _mockTestPlatform.Setup( + tp => tp.StartTestSession( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny>(), It.IsAny())) + .Returns(true); + + _testRequestManager.StartTestSession( + new StartTestSessionPayload() + { + TestPlatformOptions = new TestPlatformOptions() + { + CollectMetrics = true + } + }, + new Mock().Object, + new Mock().Object, + _protocolConfig); + + _mockTestPlatformEventSource.Verify( + tpes => tpes.StartTestSessionStart(), + Times.Once()); + _mockTestPlatformEventSource.Verify( + tpes => tpes.StartTestSessionStop(), + Times.Once()); + } + + [TestMethod] + public void StopTestSessionShouldBeSuccessful() + { + var result = true; + var testSessionInfo = new TestSessionInfo(); + var mockEventsHandler = new Mock(); + + var mockTestPool = new Mock(); + TestSessionPool.Instance = mockTestPool.Object; + + mockTestPool.Setup(tp => tp.KillSession(testSessionInfo, It.IsAny())) + .Returns((TestSessionInfo _, IRequestData rd) => + { + rd.MetricsCollection.Add(TelemetryDataConstants.TestSessionId, testSessionInfo.Id.ToString()); + return result; + }); + mockEventsHandler.Setup(eh => eh.HandleStopTestSessionComplete( + It.IsAny())) + .Callback((StopTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual( + eventArgs.Metrics[TelemetryDataConstants.TestSessionId], + testSessionInfo.Id.ToString()); + Assert.AreEqual(eventArgs.IsStopped, result); + }); + + _testRequestManager.StopTestSession( + new() + { + TestSessionInfo = testSessionInfo, + CollectMetrics = true + }, + mockEventsHandler.Object, + _protocolConfig); + + mockTestPool.Verify(tp => tp.KillSession( + testSessionInfo, + It.IsAny()), + Times.Once); + mockEventsHandler.Verify(eh => eh.HandleStopTestSessionComplete( + It.IsAny()), + Times.Once); + + _mockTestPlatformEventSource.Verify( + tpes => tpes.StopTestSessionStart(), + Times.Once); + _mockTestPlatformEventSource.Verify( + tpes => tpes.StopTestSessionStop(), + Times.Once); + } + + [TestMethod] + public void StopTestSessionShouldFail() + { + var result = false; + var testSessionInfo = new TestSessionInfo(); + var mockEventsHandler = new Mock(); + + var mockTestPool = new Mock(); + TestSessionPool.Instance = mockTestPool.Object; + + mockTestPool.Setup(tp => tp.KillSession(testSessionInfo, It.IsAny())) + .Returns(result); + mockEventsHandler.Setup(eh => eh.HandleStopTestSessionComplete( + It.IsAny())) + .Callback((StopTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual(eventArgs.IsStopped, result); + }); + + _testRequestManager.StopTestSession( + new() + { + TestSessionInfo = testSessionInfo, + CollectMetrics = true + }, + mockEventsHandler.Object, + _protocolConfig); + + mockTestPool.Verify(tp => tp.KillSession( + testSessionInfo, + It.IsAny()), + Times.Once); + mockEventsHandler.Verify(eh => eh.HandleStopTestSessionComplete( + It.IsAny()), + Times.Once); + + _mockTestPlatformEventSource.Verify( + tpes => tpes.StopTestSessionStart(), + Times.Once); + _mockTestPlatformEventSource.Verify( + tpes => tpes.StopTestSessionStop(), + Times.Once); + } + + [TestMethod] + public void StopTestSessionShouldPropagateExceptionWhenKillSessionThrows() + { + var testSessionInfo = new TestSessionInfo(); + var mockEventsHandler = new Mock(); + + var mockTestPool = new Mock(); + TestSessionPool.Instance = mockTestPool.Object; + + mockTestPool.Setup(tp => tp.KillSession(testSessionInfo, It.IsAny())) + .Throws(new Exception("DummyException")); + mockEventsHandler.Setup(eh => eh.HandleStopTestSessionComplete( + It.IsAny())) + .Callback((StopTestSessionCompleteEventArgs eventArgs) => + { + Assert.IsNotNull(eventArgs.TestSessionInfo); + Assert.IsNotNull(eventArgs.Metrics); + Assert.AreEqual(eventArgs.TestSessionInfo, testSessionInfo); + Assert.AreEqual(eventArgs.IsStopped, false); + }); + + Assert.ThrowsException(() => + _testRequestManager.StopTestSession( + new() + { + TestSessionInfo = testSessionInfo, + CollectMetrics = true + }, + mockEventsHandler.Object, + _protocolConfig)); + + mockTestPool.Verify(tp => tp.KillSession( + testSessionInfo, + It.IsAny()), + Times.Once); + mockEventsHandler.Verify(eh => eh.HandleStopTestSessionComplete( + It.IsAny()), + Times.Never); + + _mockTestPlatformEventSource.Verify( + tpes => tpes.StopTestSessionStart(), + Times.Once); + _mockTestPlatformEventSource.Verify( + tpes => tpes.StopTestSessionStop(), + Times.Once); + } + + [TestMethod] + public void AddOrUpdateBatchSizeWhenNotDiscoveryReturnsFalseAndDoesNotUpdateXmlDocument() + { + // Arrange + var xmlDocument = new XmlDocument(); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.AddOrUpdateBatchSize(xmlDocument, configuration, false); + + // Assert + Assert.IsFalse(result); + Assert.AreEqual("", xmlDocument.OuterXml); + } + + [TestMethod] + public void AddOrUpdateBatchSizeWhenBatchSizeSetReturnsFalse() + { + // Arrange + var xmlDocument = new XmlDocument(); + var configuration = new RunConfiguration { BatchSize = 10 }; + + // Sanity check + Assert.IsTrue(configuration.BatchSizeSet); + + // Act + var result = TestRequestManager.AddOrUpdateBatchSize(xmlDocument, configuration, true); + + // Assert + Assert.IsFalse(result); + Assert.AreEqual("", xmlDocument.OuterXml); + } + + [TestMethod] + public void AddOrUpdateBatchSizeSetsBatchSize() + { + // Arrange + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(""" + + + + + """); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.AddOrUpdateBatchSize(xmlDocument, configuration, true); + + // Assert + Assert.IsTrue(result); + Assert.AreEqual("1000", xmlDocument.OuterXml); + } + + [TestMethod] + public void AddOrUpdateBatchSizeSetsRunConfigurationAndBatchSize() + { + // Arrange + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(""" + + + """); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.AddOrUpdateBatchSize(xmlDocument, configuration, true); + + // Assert + Assert.IsTrue(result); + Assert.AreEqual("1000", xmlDocument.OuterXml); + } + + [TestMethod] + public void UpdateCodeCoverageSettings_SetEnableDynamicNativeInstrumentationToFalse_WhenNotPresent() + { + // Arrange + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(""" + + + + + + + All + All + Verbose + %LOGS_DIR% + + %LOGS_DIR% + All + False + False + + + + + + + """); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.UpdateCollectCoverageSettings(xmlDocument, configuration); + + // Assert + Assert.IsTrue(result); + StringAssert.Contains(xmlDocument.OuterXml, "FalseFalse"); + } + + [TestMethod] + public void UpdateCodeCoverageSettings_SetEnableDynamicNativeInstrumentationToFalse_WhenNotPresentAndParentDetailsOfConfigurationAreAlsoNotPresent() + { + // Arrange + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(""" + + + + + + + + + + """); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.UpdateCollectCoverageSettings(xmlDocument, configuration); + + // Assert + Assert.IsTrue(result); + StringAssert.Contains(xmlDocument.OuterXml, $"False"); + } + + [TestMethod] + [DataRow("True")] + [DataRow("False")] + public void UpdateCodeCoverageSettings_DontSetEnableDynamicNativeInstrumentationToFalse_WhenAlreadyPresent(string setting) + { + // Arrange + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml($""" + + + + + + + All + All + Verbose + %LOGS_DIR% + + {setting} + + + + + + + """); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.UpdateCollectCoverageSettings(xmlDocument, configuration); + + // Assert + // No matter what user has set, we don't override it. + Assert.IsFalse(result); + StringAssert.Contains(xmlDocument.OuterXml, $"{setting}"); + } + + [TestMethod] + [DataRow("friendlyName=\"Code Coverage\"")] + [DataRow("friendlyName=\"code coverage\"")] + [DataRow("uri=\"datacollector://Microsoft/CodeCoverage/2.0\"")] + [DataRow("uri=\"datacollector://microsoft/codecoverage/2.0\"")] + [DataRow("assemblyQualifiedName=\"Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"")] + public void UpdateCodeCoverageSettings_SetEnableDynamicNativeInstrumentationToFalse_WhenUserUsesImperfectNamesForCollector(string collector) + { + // Arrange + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml($""" + + + + + + + All + All + Verbose + %LOGS_DIR% + + + + + + + + """); + var configuration = new RunConfiguration(); + + // Act + var result = TestRequestManager.UpdateCollectCoverageSettings(xmlDocument, configuration); + + // Assert + Assert.IsTrue(result); + StringAssert.Contains(xmlDocument.OuterXml, $"False"); + } + + private static DiscoveryRequestPayload CreateDiscoveryPayload(string runsettings) + { + var discoveryPayload = new DiscoveryRequestPayload + { + RunSettings = runsettings, + Sources = new[] { "c:\\testproject.dll" } + }; + return discoveryPayload; + } + + private void RunTestsIfThrowsExceptionShouldThrowOut(Exception exception) + { + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a", "b" }, + RunSettings = DefaultRunsettings + }; + + var createRunRequestCalled = 0; + TestRunCriteria? observedCriteria = null; + var mockRunRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateTestRunRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, TestRunCriteria runCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => + { + createRunRequestCalled++; + observedCriteria = runCriteria; + }).Returns(mockRunRequest.Object); + + mockRunRequest.Setup(mr => mr.ExecuteAsync()).Throws(exception); + + var mockRunEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + _testRequestManager.RunTests(payload, mockCustomlauncher.Object, mockRunEventsRegistrar.Object, _protocolConfig); + } + + private void DiscoverTestsIfThrowsExceptionShouldThrowOut(Exception exception) + { + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "a.dll", "b.dll" }, + RunSettings = DefaultRunsettings + }; + + DiscoveryCriteria? observedCriteria = null; + var mockDiscoveryRequest = new Mock(); + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())).Callback( + (IRequestData requestData, DiscoveryCriteria discoveryCriteria, TestPlatformOptions options, Dictionary sourceToSourceDetailMap, IWarningLogger _) => observedCriteria = discoveryCriteria).Returns(mockDiscoveryRequest.Object); + + mockDiscoveryRequest.Setup(mr => mr.DiscoverAsync()).Throws(exception); + + var mockDiscoveryEventsRegistrar = new Mock(); + var mockCustomlauncher = new Mock(); + + _testRequestManager.DiscoverTests(payload, mockDiscoveryEventsRegistrar.Object, _protocolConfig); + } + + [TestMethod] + [DataRow("x86")] + [DataRow("x64")] + [DataRow("arm64")] + // Don't parallelize because we can run into conflict with GetDefaultArchitecture -> RunSettingsHelper.Instance.IsDefaultTargetArchitecture + // which is set by some other test. + [DoNotParallelize] + public void SettingDefaultPlatformUsesItForAnyCPUSourceButNotForNonAnyCPUSource(string defaultPlatform) + { + // -- Arrange + + RunSettingsHelper.Instance.IsDefaultTargetArchitecture = true; + var payload = new DiscoveryRequestPayload() + { + Sources = new List() { "AnyCPU.dll", "x64.dll" }, + RunSettings = + $@" + + + {defaultPlatform} + + " + }; + + Architecture expectedPlatform = (Architecture)Enum.Parse(typeof(Architecture), defaultPlatform, ignoreCase: true); + + Dictionary? actualSourceToSourceDetailMap = null; + var mockDiscoveryRequest = new Mock(); + + _mockAssemblyMetadataProvider.Setup(m => m.GetArchitecture("AnyCPU.dll")).Returns(Architecture.AnyCPU); + _mockAssemblyMetadataProvider.Setup(m => m.GetArchitecture("x64.dll")).Returns(Architecture.X64); + + _mockTestPlatform.Setup(mt => mt.CreateDiscoveryRequest(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) + .Callback((IRequestData _, DiscoveryCriteria _, TestPlatformOptions _, Dictionary sourceToSourceDetailMap, IWarningLogger _) => + // output the incoming sourceToSourceDetailMap to the variable above so we can inspect it. + actualSourceToSourceDetailMap = sourceToSourceDetailMap + ).Returns(mockDiscoveryRequest.Object); + + // -- Act + // The substitution of architecture happens in runsettings patching which is shared for discovery and run + // so we can safely just test discovery. + _testRequestManager.DiscoverTests(payload, new Mock().Object, _protocolConfig); + + actualSourceToSourceDetailMap.Should().NotBeNull(); + // The AnyCPU dll is the architecture we provide in the default setting, rather than being determined from the + // current process architecture. + actualSourceToSourceDetailMap!["AnyCPU.dll"].Architecture.Should().Be(expectedPlatform); + // The dll that has a specific architecture always remains that specific architecture. + actualSourceToSourceDetailMap!["x64.dll"].Architecture.Should().Be(Architecture.X64); + } + + [TestMethod] + public void UsingInvalidValueForDefaultPlatformSettingThrowsSettingsException() + { + var settingXml = @" + + + WRONGPlatform + + "; + + var payload = new TestRunRequestPayload() + { + Sources = new List() { "a.dll" }, + RunSettings = settingXml + }; + + _testRequestManager + .Invoking(m => m.RunTests(payload, new Mock().Object, new Mock().Object, _protocolConfig)) + .Should().Throw() + .And.Message.Should().Contain("Invalid value 'WRONGPlatform' specified for 'DefaultPlatform'."); + } +} diff --git a/test/vstest.console.UnitTests/vstest.console.UnitTests.csproj b/test/vstest.console.UnitTests/vstest.console.UnitTests.csproj index 307a79b2fd..1d5e926f41 100644 --- a/test/vstest.console.UnitTests/vstest.console.UnitTests.csproj +++ b/test/vstest.console.UnitTests/vstest.console.UnitTests.csproj @@ -1,32 +1,27 @@ - + - ..\..\ true true - + - netcoreapp2.1;net451 - netcoreapp3.1 - Exe + net9.0;net48 + Exe vstest.console.UnitTests + true true + - - - - - - + + -